[chirp_devel] [PATCH 2/9] Rename chirp.py as chirpc (#2343)
Zach Welch
Tue Feb 24 23:26:46 PST 2015
# HG changeset patch
# User Zach Welch <zach at mandolincreekfarm.com>
Rename chirp.py as chirpc (#2343)
The chirp CLI needs a better name if it ever will be installed in PATH.
It is better to do that early on rather than later.
diff --git a/chirp.py b/chirp.py
deleted file mode 100755
index 9e5c59c..0000000
--- a/chirp.py
+++ /dev/null
@@ -1,297 +0,0 @@
-#!/usr/bin/env python
-#
-# Copyright 2008 Dan Smith <dsmith at danplanet.com>
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-
-import serial
-import sys
-from optparse import OptionParser
-import optparse
-
-from chirp import *
-from chirp import chirp_common, errors, idrp, directory, util
-
-def fail_unsupported():
- print "Operation not supported by selected radio"
- sys.exit(1)
-
-def fail_missing_mmap():
- print "mmap-only operation requires specification of an mmap file"
- sys.exit(1)
-
-RADIOS = directory.DRV_TO_RADIO
-
-def store_tone(option, opt, value, parser):
- if value in chirp_common.TONES:
- setattr(parser.values, option.dest, value)
- else:
- raise optparse.OptionValueError("Invalid tone value: %.1f" % value)
-
-def store_dtcs(option, opt, value, parser):
- try:
- value = int(value, 10)
- except ValueError:
- raise optparse.OptionValueError("Invalid DTCS value: %s" % value)
-
- if value in chirp_common.DTCS_CODES:
- setattr(parser.values, option.dest, value)
- else:
- raise optparse.OptionValueError("Invalid DTCS value: %03i" % value)
-
-def store_dtcspol(option, opt, value, parser):
- if value not in ["NN", "RN", "NR", "RR"]:
- raise optparse.OptionValueError("Invaid DTCS polarity: %s" % value)
-
- setattr(parser.values, option.dest, value)
-if __name__ == "__main__":
- parser = OptionParser()
- parser.add_option("-s", "--serial", dest="serial",
- default="mmap",
- help="Serial port (default: mmap)")
-
- parser.add_option("-i", "--id", dest="id",
- default=False,
- action="store_true",
- help="Request radio ID string")
- parser.add_option("", "--raw", dest="raw",
- default=False,
- action="store_true",
- help="Dump raw memory location")
-
- parser.add_option("", "--get-mem", dest="get_mem",
- default=False,
- action="store_true",
- help="Get and print memory location")
- parser.add_option("", "--set-mem-name", dest="set_mem_name",
- default=None,
- help="Set memory name")
- parser.add_option("", "--set-mem-freq", dest="set_mem_freq",
- type="float",
- default=None,
- help="Set memory frequency")
-
- parser.add_option("", "--set-mem-tencon", dest="set_mem_tencon",
- default=False,
- action="store_true",
- help="Set tone encode enabled flag")
- parser.add_option("", "--set-mem-tencoff", dest="set_mem_tencoff",
- default=False,
- action="store_true",
- help="Set tone decode disabled flag")
- parser.add_option("", "--set-mem-tsqlon", dest="set_mem_tsqlon",
- default=False,
- action="store_true",
- help="Set tone squelch enabled flag")
- parser.add_option("", "--set-mem-tsqloff", dest="set_mem_tsqloff",
- default=False,
- action="store_true",
- help="Set tone squelch disabled flag")
- parser.add_option("", "--set-mem-dtcson", dest="set_mem_dtcson",
- default=False,
- action="store_true",
- help="Set DTCS enabled flag")
- parser.add_option("", "--set-mem-dtcsoff", dest="set_mem_dtcsoff",
- default=False,
- action="store_true",
- help="Set DTCS disabled flag")
-
- parser.add_option("", "--set-mem-tenc", dest="set_mem_tenc",
- type="float",
- action="callback", callback=store_tone, nargs=1,
- help="Set memory encode tone")
- parser.add_option("", "--set-mem-tsql", dest="set_mem_tsql",
- type="float",
- action="callback", callback=store_tone, nargs=1,
- help="Set memory squelch tone")
- parser.add_option("", "--set-mem-dtcs", dest="set_mem_dtcs",
- type="string",
- action="callback", callback=store_dtcs, nargs=1,
- help="Set memory DTCS code")
-
- parser.add_option("", "--set-mem-dtcspol", dest="set_mem_dtcspol",
- type="string",
- action="callback", callback=store_dtcspol, nargs=1,
- help="Set memory DTCS polarity (NN, NR, RN, RR)")
-
- parser.add_option("", "--set-mem-dup", dest="set_mem_dup",
- help="Set memory duplex (+,-, or blank)")
- parser.add_option("", "--set-mem-offset", dest="set_mem_offset",
- type="float",
- help="Set memory duplex offset (in MHz)")
-
- parser.add_option("", "--set-mem-mode", dest="set_mem_mode",
- default=None,
- help="Set mode (%s)" % ",".join(chirp_common.MODES))
- parser.add_option("-r", "--radio", dest="radio",
- default=None,
- help="Radio model (one of %s)" % ",".join(RADIOS.keys()))
-
- parser.add_option("", "--mmap", dest="mmap",
- default=None,
- help="Radio memory map file location")
- parser.add_option("", "--download-mmap", dest="download_mmap",
- action="store_true",
- default=False,
- help="Download memory map from radio")
- parser.add_option("", "--upload-mmap", dest="upload_mmap",
- action="store_true",
- default=False,
- help="Upload memory map to radio")
- if len(sys.argv) <= 1:
- parser.print_help()
- sys.exit(0)
- (options, args) = parser.parse_args()
-
- if options.id:
- from chirp import icf
-
- s = serial.Serial(port=options.serial,
- baudrate=9600,
- timeout=0.5)
-
- md = icf.get_model_data(s)
-
- print "Model:\n%s" % util.hexprint(md)
-
- sys.exit(0)
-
- if not options.radio:
- if options.mmap:
- rclass = directory.get_radio_by_image(options.mmap).__class__
- else:
- print "Must specify a radio model"
- sys.exit(1)
- else:
- rclass = directory.get_radio(options.radio)
-
- if options.serial == "mmap":
- if options.mmap:
- s = options.mmap
- else:
- s = options.radio + ".img"
- else:
- print "opening %s at %i" % (options.serial, rclass.BAUD_RATE)
- s = serial.Serial(port=options.serial,
- baudrate=rclass.BAUD_RATE,
- timeout=0.5)
-
- radio = rclass(s)
-
- if options.raw:
- data = radio.get_raw_memory(int(args[0]))
- for i in data:
- if ord(i) > 0x7F:
- print "Memory location %i (%i):\n%s" % (int(args[0]),
- len(data),
- util.hexprint(data))
- sys.exit(0)
- print data
- sys.exit(0)
-
- if options.set_mem_dup is not None:
- if options.set_mem_dup != "+" and \
- options.set_mem_dup != "-" and \
- options.set_mem_dup != "":
- print "Invalid duplex value `%s'" % options.set_mem_dup
- print "Valid values are: '+', '-', ''"
- sys.exit(1)
- else:
- _dup = options.set_mem_dup
- else:
- _dup = None
-
- if options.set_mem_mode:
- print "Set mode: %s" % options.set_mem_mode
- if options.set_mem_mode not in chirp_common.MODES:
- print "Invalid mode `%s'"
- sys.exit(1)
- else:
- _mode = options.set_mem_mode
- else:
- _mode = None
-
- if options.set_mem_name or options.set_mem_freq or \
- options.set_mem_tencon or options.set_mem_tencoff or \
- options.set_mem_tsqlon or options.set_mem_tsqloff or \
- options.set_mem_dtcson or options.set_mem_dtcsoff or \
- options.set_mem_tenc or options.set_mem_tsql or options.set_mem_dtcs or\
- options.set_mem_dup is not None or \
- options.set_mem_mode or options.set_mem_dtcspol or\
- options.set_mem_offset:
- try:
- mem = radio.get_memory(int(args[0]))
- except errors.InvalidMemoryLocation:
- mem = chirp_common.Memory()
- mem.number = int(args[0])
-
- mem.name = options.set_mem_name or mem.name
- mem.freq = options.set_mem_freq or mem.freq
- mem.rtone = options.set_mem_tenc or mem.rtone
- mem.ctone = options.set_mem_tsql or mem.ctone
- mem.dtcs = options.set_mem_dtcs or mem.dtcs
- mem.dtcs_polarity = options.set_mem_dtcspol or mem.dtcs_polarity
- if _dup is not None:
- mem.duplex = _dup
- mem.offset = options.set_mem_offset or mem.offset
- mem.mode = _mode or mem.mode
-
- if options.set_mem_tencon:
- mem.tencEnabled = True
- elif options.set_mem_tencoff:
- mem.tencEnabled = False
-
- if options.set_mem_tsqlon:
- mem.tsqlEnabled = True
- elif options.set_mem_tsqloff:
- mem.tsqlEnabled = False
-
- if options.set_mem_dtcson:
- mem.dtcsEnabled = True
- elif options.set_mem_dtcsoff:
- mem.dtcsEnabled = False
-
- radio.set_memory(mem)
-
- if options.get_mem:
- try:
- pos = int(args[0])
- except ValueError:
- pos = args[0]
-
- try:
- mem = radio.get_memory(pos)
- except errors.InvalidMemoryLocation, e:
- mem = chirp_common.Memory()
- mem.number = pos
-
- print mem
-
- if options.download_mmap:
- #isinstance(radio, chirp_common.IcomMmapRadio) or fail_unsupported()
- radio.sync_in()
- radio.save_mmap(options.mmap)
-
- 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:
- print "Clone failed"
-
- if options.mmap and isinstance(radio, chirp_common.CloneModeRadio):
- radio.save_mmap(options.mmap)
-
diff --git a/chirpc b/chirpc
new file mode 100755
index 0000000..9e5c59c
--- /dev/null
+++ b/chirpc
@@ -0,0 +1,297 @@
+#!/usr/bin/env python
+#
+# Copyright 2008 Dan Smith <dsmith at danplanet.com>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+
+import serial
+import sys
+from optparse import OptionParser
+import optparse
+
+from chirp import *
+from chirp import chirp_common, errors, idrp, directory, util
+
+def fail_unsupported():
+ print "Operation not supported by selected radio"
+ sys.exit(1)
+
+def fail_missing_mmap():
+ print "mmap-only operation requires specification of an mmap file"
+ sys.exit(1)
+
+RADIOS = directory.DRV_TO_RADIO
+
+def store_tone(option, opt, value, parser):
+ if value in chirp_common.TONES:
+ setattr(parser.values, option.dest, value)
+ else:
+ raise optparse.OptionValueError("Invalid tone value: %.1f" % value)
+
+def store_dtcs(option, opt, value, parser):
+ try:
+ value = int(value, 10)
+ except ValueError:
+ raise optparse.OptionValueError("Invalid DTCS value: %s" % value)
+
+ if value in chirp_common.DTCS_CODES:
+ setattr(parser.values, option.dest, value)
+ else:
+ raise optparse.OptionValueError("Invalid DTCS value: %03i" % value)
+
+def store_dtcspol(option, opt, value, parser):
+ if value not in ["NN", "RN", "NR", "RR"]:
+ raise optparse.OptionValueError("Invaid DTCS polarity: %s" % value)
+
+ setattr(parser.values, option.dest, value)
+if __name__ == "__main__":
+ parser = OptionParser()
+ parser.add_option("-s", "--serial", dest="serial",
+ default="mmap",
+ help="Serial port (default: mmap)")
+
+ parser.add_option("-i", "--id", dest="id",
+ default=False,
+ action="store_true",
+ help="Request radio ID string")
+ parser.add_option("", "--raw", dest="raw",
+ default=False,
+ action="store_true",
+ help="Dump raw memory location")
+
+ parser.add_option("", "--get-mem", dest="get_mem",
+ default=False,
+ action="store_true",
+ help="Get and print memory location")
+ parser.add_option("", "--set-mem-name", dest="set_mem_name",
+ default=None,
+ help="Set memory name")
+ parser.add_option("", "--set-mem-freq", dest="set_mem_freq",
+ type="float",
+ default=None,
+ help="Set memory frequency")
+
+ parser.add_option("", "--set-mem-tencon", dest="set_mem_tencon",
+ default=False,
+ action="store_true",
+ help="Set tone encode enabled flag")
+ parser.add_option("", "--set-mem-tencoff", dest="set_mem_tencoff",
+ default=False,
+ action="store_true",
+ help="Set tone decode disabled flag")
+ parser.add_option("", "--set-mem-tsqlon", dest="set_mem_tsqlon",
+ default=False,
+ action="store_true",
+ help="Set tone squelch enabled flag")
+ parser.add_option("", "--set-mem-tsqloff", dest="set_mem_tsqloff",
+ default=False,
+ action="store_true",
+ help="Set tone squelch disabled flag")
+ parser.add_option("", "--set-mem-dtcson", dest="set_mem_dtcson",
+ default=False,
+ action="store_true",
+ help="Set DTCS enabled flag")
+ parser.add_option("", "--set-mem-dtcsoff", dest="set_mem_dtcsoff",
+ default=False,
+ action="store_true",
+ help="Set DTCS disabled flag")
+
+ parser.add_option("", "--set-mem-tenc", dest="set_mem_tenc",
+ type="float",
+ action="callback", callback=store_tone, nargs=1,
+ help="Set memory encode tone")
+ parser.add_option("", "--set-mem-tsql", dest="set_mem_tsql",
+ type="float",
+ action="callback", callback=store_tone, nargs=1,
+ help="Set memory squelch tone")
+ parser.add_option("", "--set-mem-dtcs", dest="set_mem_dtcs",
+ type="string",
+ action="callback", callback=store_dtcs, nargs=1,
+ help="Set memory DTCS code")
+
+ parser.add_option("", "--set-mem-dtcspol", dest="set_mem_dtcspol",
+ type="string",
+ action="callback", callback=store_dtcspol, nargs=1,
+ help="Set memory DTCS polarity (NN, NR, RN, RR)")
+
+ parser.add_option("", "--set-mem-dup", dest="set_mem_dup",
+ help="Set memory duplex (+,-, or blank)")
+ parser.add_option("", "--set-mem-offset", dest="set_mem_offset",
+ type="float",
+ help="Set memory duplex offset (in MHz)")
+
+ parser.add_option("", "--set-mem-mode", dest="set_mem_mode",
+ default=None,
+ help="Set mode (%s)" % ",".join(chirp_common.MODES))
+ parser.add_option("-r", "--radio", dest="radio",
+ default=None,
+ help="Radio model (one of %s)" % ",".join(RADIOS.keys()))
+
+ parser.add_option("", "--mmap", dest="mmap",
+ default=None,
+ help="Radio memory map file location")
+ parser.add_option("", "--download-mmap", dest="download_mmap",
+ action="store_true",
+ default=False,
+ help="Download memory map from radio")
+ parser.add_option("", "--upload-mmap", dest="upload_mmap",
+ action="store_true",
+ default=False,
+ help="Upload memory map to radio")
+ if len(sys.argv) <= 1:
+ parser.print_help()
+ sys.exit(0)
+ (options, args) = parser.parse_args()
+
+ if options.id:
+ from chirp import icf
+
+ s = serial.Serial(port=options.serial,
+ baudrate=9600,
+ timeout=0.5)
+
+ md = icf.get_model_data(s)
+
+ print "Model:\n%s" % util.hexprint(md)
+
+ sys.exit(0)
+
+ if not options.radio:
+ if options.mmap:
+ rclass = directory.get_radio_by_image(options.mmap).__class__
+ else:
+ print "Must specify a radio model"
+ sys.exit(1)
+ else:
+ rclass = directory.get_radio(options.radio)
+
+ if options.serial == "mmap":
+ if options.mmap:
+ s = options.mmap
+ else:
+ s = options.radio + ".img"
+ else:
+ print "opening %s at %i" % (options.serial, rclass.BAUD_RATE)
+ s = serial.Serial(port=options.serial,
+ baudrate=rclass.BAUD_RATE,
+ timeout=0.5)
+
+ radio = rclass(s)
+
+ if options.raw:
+ data = radio.get_raw_memory(int(args[0]))
+ for i in data:
+ if ord(i) > 0x7F:
+ print "Memory location %i (%i):\n%s" % (int(args[0]),
+ len(data),
+ util.hexprint(data))
+ sys.exit(0)
+ print data
+ sys.exit(0)
+
+ if options.set_mem_dup is not None:
+ if options.set_mem_dup != "+" and \
+ options.set_mem_dup != "-" and \
+ options.set_mem_dup != "":
+ print "Invalid duplex value `%s'" % options.set_mem_dup
+ print "Valid values are: '+', '-', ''"
+ sys.exit(1)
+ else:
+ _dup = options.set_mem_dup
+ else:
+ _dup = None
+
+ if options.set_mem_mode:
+ print "Set mode: %s" % options.set_mem_mode
+ if options.set_mem_mode not in chirp_common.MODES:
+ print "Invalid mode `%s'"
+ sys.exit(1)
+ else:
+ _mode = options.set_mem_mode
+ else:
+ _mode = None
+
+ if options.set_mem_name or options.set_mem_freq or \
+ options.set_mem_tencon or options.set_mem_tencoff or \
+ options.set_mem_tsqlon or options.set_mem_tsqloff or \
+ options.set_mem_dtcson or options.set_mem_dtcsoff or \
+ options.set_mem_tenc or options.set_mem_tsql or options.set_mem_dtcs or\
+ options.set_mem_dup is not None or \
+ options.set_mem_mode or options.set_mem_dtcspol or\
+ options.set_mem_offset:
+ try:
+ mem = radio.get_memory(int(args[0]))
+ except errors.InvalidMemoryLocation:
+ mem = chirp_common.Memory()
+ mem.number = int(args[0])
+
+ mem.name = options.set_mem_name or mem.name
+ mem.freq = options.set_mem_freq or mem.freq
+ mem.rtone = options.set_mem_tenc or mem.rtone
+ mem.ctone = options.set_mem_tsql or mem.ctone
+ mem.dtcs = options.set_mem_dtcs or mem.dtcs
+ mem.dtcs_polarity = options.set_mem_dtcspol or mem.dtcs_polarity
+ if _dup is not None:
+ mem.duplex = _dup
+ mem.offset = options.set_mem_offset or mem.offset
+ mem.mode = _mode or mem.mode
+
+ if options.set_mem_tencon:
+ mem.tencEnabled = True
+ elif options.set_mem_tencoff:
+ mem.tencEnabled = False
+
+ if options.set_mem_tsqlon:
+ mem.tsqlEnabled = True
+ elif options.set_mem_tsqloff:
+ mem.tsqlEnabled = False
+
+ if options.set_mem_dtcson:
+ mem.dtcsEnabled = True
+ elif options.set_mem_dtcsoff:
+ mem.dtcsEnabled = False
+
+ radio.set_memory(mem)
+
+ if options.get_mem:
+ try:
+ pos = int(args[0])
+ except ValueError:
+ pos = args[0]
+
+ try:
+ mem = radio.get_memory(pos)
+ except errors.InvalidMemoryLocation, e:
+ mem = chirp_common.Memory()
+ mem.number = pos
+
+ print mem
+
+ if options.download_mmap:
+ #isinstance(radio, chirp_common.IcomMmapRadio) or fail_unsupported()
+ radio.sync_in()
+ radio.save_mmap(options.mmap)
+
+ 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:
+ print "Clone failed"
+
+ if options.mmap and isinstance(radio, chirp_common.CloneModeRadio):
+ radio.save_mmap(options.mmap)
+
More information about the chirp_devel
mailing list