[chirp_devel] [PATCH 02/10] Improve CLI download/upload (#2343)
Zachary T Welch
Fri Mar 6 01:16:00 PST 2015
From: Zach Welch <zach at mandolincreekfarm.com>
# HG changeset patch
# User Zach Welch <zach at mandolincreekfarm.com>
# Fake Node ID 2276e60c220a280955a96e2b30220f2cdaa132a2
Improve CLI download/upload (#2343)
This patch adds much-needed checks in the CLI, allowing an unwitting
user to stumble their way toward a working set of options that permits
downloading/uploading an image from/to a radio.
diff --git a/chirpc b/chirpc
index db3b13f..4414fc0 100755
--- a/chirpc
+++ b/chirpc
@@ -17,6 +17,7 @@
import serial
+import os
import sys
import argparse
import logging
@@ -185,7 +186,7 @@ if __name__ == "__main__":
if options.mmap:
rclass = directory.get_radio_by_image(options.mmap).__class__
else:
- print "Must specify a radio model"
+ print "You must specify a radio model. See --list-radios."
sys.exit(1)
else:
rclass = directory.get_radio(options.radio)
@@ -195,6 +196,9 @@ if __name__ == "__main__":
s = options.mmap
else:
s = options.radio + ".img"
+ if not os.path.exists(s):
+ LOG.error("Image file '%s' does not exist" % s)
+ sys.exit(1)
else:
LOG.info("opening %s at %i" % (options.serial, rclass.BAUD_RATE))
s = serial.Serial(port=options.serial,
@@ -293,17 +297,33 @@ if __name__ == "__main__":
print mem
if options.download_mmap:
- # isinstance(radio, chirp_common.IcomMmapRadio) or fail_unsupported()
- radio.sync_in()
- radio.save_mmap(options.mmap)
+ if not issubclass(rclass, chirp_common.CloneModeRadio):
+ LOG.error("%s is not a clone mode radio" % options.radio)
+ sys.exit(1)
+ if not options.mmap:
+ LOG.error("You must specify the destination file name with --mmap")
+ sys.exit(1)
+ try:
+ radio.sync_in()
+ radio.save_mmap(options.mmap)
+ except Exception, e:
+ LOG.exception(e)
+ sys.exit(1)
if options.upload_mmap:
- # isinstance(radio, chirp_common.IcomMmapRadio) or fail_unsupported()
- radio.load_mmap(options.mmap)
- if radio.sync_out():
- print "Clone successful"
- else:
- LOG.error("Clone failed")
+ if not issubclass(rclass, chirp_common.CloneModeRadio):
+ LOG.error("%s is not a clone mode radio" % options.radio)
+ sys.exit(1)
+ if not options.mmap:
+ LOG.error("You must specify the source file name with --mmap")
+ sys.exit(1)
+ try:
+ radio.load_mmap(options.mmap)
+ radio.sync_out()
+ print "Upload successful"
+ except Exception, e:
+ LOG.exception(e)
+ sys.exit(1)
if options.mmap and isinstance(radio, chirp_common.CloneModeRadio):
radio.save_mmap(options.mmap)
More information about the chirp_devel
mailing list