# HG changeset patch # User Zachary T Welch zach@mandolincreekfarm.com # Fake Node ID 4c2c12250b64b3ddab5a98dd6729e3089b5694f2
Fix style issues in tmv71*.py (#2355)
diff --git a/chirp/drivers/tmv71.py b/chirp/drivers/tmv71.py index cca737a..94c97a9 100644 --- a/chirp/drivers/tmv71.py +++ b/chirp/drivers/tmv71.py @@ -16,6 +16,7 @@ from chirp import chirp_common, errors, util from chirp.drivers import tmv71_ll
+ class TMV71ARadio(chirp_common.CloneModeRadio): BAUD_RATE = 9600 VENDOR = "Kenwood" @@ -23,7 +24,7 @@ class TMV71ARadio(chirp_common.CloneModeRadio):
mem_upper_limit = 1022 _memsize = 32512 - _model = "" # FIXME: REMOVE + _model = "" # FIXME: REMOVE
def get_features(self): rf = chirp_common.RadioFeatures() @@ -55,8 +56,8 @@ class TMV71ARadio(chirp_common.CloneModeRadio): try: number = tmv71_ll.V71_SPECIAL[number] except KeyError: - raise errors.InvalidMemoryLocation("Unknown channel %s" % \ - number) + raise errors.InvalidMemoryLocation("Unknown channel %s" % + number)
return tmv71_ll.get_memory(self._mmap, number)
diff --git a/chirp/drivers/tmv71_ll.py b/chirp/drivers/tmv71_ll.py index 201412e..2fd4d86 100644 --- a/chirp/drivers/tmv71_ll.py +++ b/chirp/drivers/tmv71_ll.py @@ -13,18 +13,20 @@ # 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 struct, time, logging +import struct +import time +import logging
from chirp import memmap, chirp_common, errors
LOG = logging.getLogger(__name__)
-POS_MODE = 5 -POS_DUP = 6 -POS_TMODE = 6 -POS_RTONE = 7 -POS_CTONE = 8 -POS_DTCS = 9 +POS_MODE = 5 +POS_DUP = 6 +POS_TMODE = 6 +POS_RTONE = 7 +POS_CTONE = 8 +POS_DTCS = 9 POS_OFFSET = 10
MEM_LOC_BASE = 0x1700 @@ -43,9 +45,10 @@ V71_SPECIAL["C VHF"] = 1030 V71_SPECIAL["C UHF"] = 1031
V71_SPECIAL_REV = {} -for k,v in V71_SPECIAL.items(): +for k, v in V71_SPECIAL.items(): V71_SPECIAL_REV[v] = k
+ def command(s, cmd, timeout=0.5): start = time.time()
@@ -57,6 +60,7 @@ def command(s, cmd, timeout=0.5): LOG.debug("V71->PC: %s" % data.strip()) return data.strip()
+ def get_id(s): r = command(s, "ID") if r.startswith("ID "): @@ -67,6 +71,7 @@ def get_id(s): EXCH_R = "R\x00\x00\x00" EXCH_W = "W\x00\x00\x00"
+ def read_block(s, block, count=256): s.write(struct.pack("<cHB", "R", block, 0)) r = s.read(4) @@ -87,6 +92,7 @@ def read_block(s, block, count=256):
return data
+ def write_block(s, block, map): s.write(struct.pack("<cHB", "W", block, 0)) base = block * 256 @@ -96,6 +102,7 @@ def write_block(s, block, map):
return ack == chr(0x06)
+ def download(radio): if command(radio.pipe, "0M PROGRAM") != "0M": raise errors.RadioError("No response from radio") @@ -114,6 +121,7 @@ def download(radio):
return memmap.MemoryMap(data)
+ def upload(radio): if command(radio.pipe, "0M PROGRAM") != "0M": raise errors.RadioError("No response from radio") @@ -131,20 +139,24 @@ def upload(radio):
radio.pipe.write("E")
+ def get_mem_offset(number): return MEM_LOC_BASE + (MEM_LOC_SIZE * number)
+ def get_raw_mem(map, number): base = get_mem_offset(number) - #print "Offset for %i is %04x" % (number, base) + # print "Offset for %i is %04x" % (number, base) return map[base:base+MEM_LOC_SIZE]
+ def get_used(map, number): pos = MEM_FLG_BASE + (number * 2) flag = ord(map[pos]) print "Flag byte is %02x" % flag return not (flag & 0x80)
+ def set_used(map, number, freq): pos = MEM_FLG_BASE + (number * 2) if freq == 0: @@ -155,6 +167,7 @@ def set_used(map, number, freq): elif int(freq / 100) == 4: map[pos] = "\x08\x00"
+ def get_skip(map, number): pos = MEM_FLG_BASE + (number * 2) flag = ord(map[pos+1]) @@ -163,6 +176,7 @@ def get_skip(map, number): else: return ""
+ def set_skip(map, number, skip): pos = MEM_FLG_BASE + (number * 2) flag = ord(map[pos+1]) @@ -172,111 +186,128 @@ def set_skip(map, number, skip): flag &= ~0x01 map[pos+1] = flag
+ def get_freq(mmap): freq, = struct.unpack("<I", mmap[0:4]) return freq / 1000000.0
+ def set_freq(mmap, freq): mmap[0] = struct.pack("<I", int(freq * 1000000))
+ def get_name(map, number): base = MEM_TAG_BASE + (8 * number) return map[base:base+6].replace("\xff", "")
+ def set_name(mmap, number, name): base = MEM_TAG_BASE + (8 * number) mmap[base] = name.ljust(6)[:6].upper()
+ def get_tmode(mmap): val = ord(mmap[POS_TMODE]) & 0x70
tmodemap = { - 0x00 : "", - 0x40 : "Tone", - 0x20 : "TSQL", - 0x10 : "DTCS", + 0x00: "", + 0x40: "Tone", + 0x20: "TSQL", + 0x10: "DTCS", }
return tmodemap[val]
+ def set_tmode(mmap, tmode): val = ord(mmap[POS_TMODE]) & 0x8F
tmodemap = { - "" : 0x00, - "Tone" : 0x40, - "TSQL" : 0x20, - "DTCS" : 0x10, + "": 0x00, + "Tone": 0x40, + "TSQL": 0x20, + "DTCS": 0x10, }
mmap[POS_TMODE] = val | tmodemap[tmode]
+ def get_tone(mmap, offset): val = ord(mmap[offset])
return chirp_common.TONES[val]
+ def set_tone(mmap, tone, offset): print tone mmap[offset] = chirp_common.TONES.index(tone)
+ def get_dtcs(mmap): val = ord(mmap[POS_DTCS])
return chirp_common.DTCS_CODES[val]
+ def set_dtcs(mmap, dtcs): mmap[POS_DTCS] = chirp_common.DTCS_CODES.index(dtcs)
+ def get_duplex(mmap): val = ord(mmap[POS_DUP]) & 0x03
dupmap = { - 0x00 : "", - 0x01 : "+", - 0x02 : "-", + 0x00: "", + 0x01: "+", + 0x02: "-", }
return dupmap[val]
+ def set_duplex(mmap, duplex): val = ord(mmap[POS_DUP]) & 0xFC
dupmap = { - "" : 0x00, - "+" : 0x01, - "-" : 0x02, + "": 0x00, + "+": 0x01, + "-": 0x02, }
mmap[POS_DUP] = val | dupmap[duplex]
+ def get_offset(mmap): val, = struct.unpack("<I", mmap[POS_OFFSET:POS_OFFSET+4]) return val / 1000000.0
+ def set_offset(mmap, offset): mmap[POS_OFFSET] = struct.pack("<I", int(offset * 1000000))
+ def get_mode(mmap): val = ord(mmap[POS_MODE]) & 0x03 modemap = { - 0x00 : "FM", - 0x01 : "NFM", - 0x02 : "AM", + 0x00: "FM", + 0x01: "NFM", + 0x02: "AM", }
return modemap[val]
+ def set_mode(mmap, mode): val = ord(mmap[POS_MODE]) & 0xFC modemap = { - "FM" : 0x00, + "FM": 0x00, "NFM": 0x01, - "AM" : 0x02, + "AM": 0x02, }
mmap[POS_MODE] = val | modemap[mode]
+ def get_memory(map, number): if number < 0 or number > (max(V71_SPECIAL.values()) + 1): raise errors.InvalidMemoryLocation("Number must be between 0 and 999") @@ -308,15 +339,17 @@ def get_memory(map, number): if number > 999: mem.immutable = ["number", "bank", "extd_number", "name"] if number > 1020 and number < 1030: - mem.immutable += ["freq"] # FIXME: ALL + mem.immutable += ["freq"] # FIXME: ALL
return mem
+ def initialize(mmap): mmap[0] = \ "\x80\xc8\xb3\x08\x00\x01\x00\x08" + \ "\x08\x00\xc0\x27\x09\x00\x00\xff"
+ def set_memory(map, mem): if mem.number < 0 or mem.number > (max(V71_SPECIAL.values()) + 1): raise errors.InvalidMemoryLocation("Number must be between 0 and 999") @@ -346,13 +379,13 @@ def set_memory(map, mem):
return map
+ if __name__ == "__main__": import sys import serial s = serial.Serial(port=sys.argv[1], baudrate=9600, dsrdtr=True, timeout=0.25) - #s.write("\r\r") - #print get_id(s) + # s.write("\r\r") + # print get_id(s) data = download(s) file(sys.argv[2], "wb").write(data) - diff --git a/tools/cpep8.blacklist b/tools/cpep8.blacklist index 765b7a8..9181e9c 100644 --- a/tools/cpep8.blacklist +++ b/tools/cpep8.blacklist @@ -17,5 +17,3 @@ ./chirp/drivers/icw32.py ./chirp/drivers/icx8x.py ./chirp/drivers/icx8x_ll.py -./chirp/drivers/tmv71.py -./chirp/drivers/tmv71_ll.py