[chirp_devel] [PATCH] [THD72] Fix buggy memory initialization. #1611
# HG changeset patch # User Tom Hayward tom@tomh.us # Date 1489813179 25200 # Fri Mar 17 21:59:39 2017 -0700 # Node ID 027d861a73342f6208f4f977d844b2caf4be5721 # Parent 6b5b397b4859dd64603d7c4a0b91ffdbdfbe2bb6 [THD72] Fix buggy memory initialization. #1611
Allows channels added by Chirp to transmit. As a side effect, transmit inhibit is now optional (rather than compulsary).
diff -r 6b5b397b4859 -r 027d861a7334 chirp/drivers/thd72.py --- a/chirp/drivers/thd72.py Fri Mar 17 15:17:57 2017 -0700 +++ b/chirp/drivers/thd72.py Fri Mar 17 21:59:39 2017 -0700 @@ -90,7 +90,7 @@ #seekto 0x0c00; struct { u8 disabled:7, - unknown0:1; + txinhibit:1; u8 skip; } flag[1032];
@@ -183,9 +183,6 @@ EXCH_R = "R\x00\x00\x00\x00" EXCH_W = "W\x00\x00\x00\x00"
-# Uploads result in "MCP Error" and garbage data in memory -# Clone driver disabled in favor of error-checking live driver. -
@directory.register class THD72Radio(chirp_common.CloneModeRadio): @@ -224,7 +221,7 @@ rf.valid_tuning_steps = [] rf.valid_modes = MODES_REV.keys() rf.valid_tmodes = TMODES_REV.keys() - rf.valid_duplexes = DUPLEX_REV.keys() + rf.valid_duplexes = DUPLEX_REV.keys() + ["off"] rf.valid_skips = ["", "S"] rf.valid_characters = chirp_common.CHARSET_ALPHANUMERIC rf.valid_name_length = 8 @@ -283,7 +280,7 @@
def get_raw_memory(self, number): return repr(self._memobj.memory[number]) + \ - repr(self._memobj.flag[(number)]) + repr(self._memobj.flag[number])
def get_memory(self, number): if isinstance(number, str): @@ -315,7 +312,7 @@ mem.rtone = chirp_common.TONES[_mem.rtone] mem.ctone = chirp_common.TONES[_mem.ctone] mem.dtcs = chirp_common.DTCS_CODES[_mem.dtcs] - mem.duplex = DUPLEX[int(_mem.duplex)] + mem.duplex = flag.txinhibit and "off" or DUPLEX[int(_mem.duplex)] mem.offset = int(_mem.offset) mem.mode = MODES[int(_mem.mode)]
@@ -369,7 +366,8 @@ _mem.ctone = chirp_common.TONES.index(mem.ctone) _mem.dtcs = chirp_common.DTCS_CODES.index(mem.dtcs) _mem.cross_mode = chirp_common.CROSS_MODES.index(mem.cross_mode) - _mem.duplex = DUPLEX_REV[mem.duplex] + flag.txinhibit = mem.duplex == "off" + _mem.duplex = DUPLEX_REV.get(mem.duplex, 0) _mem.offset = mem.offset _mem.mode = MODES_REV[mem.mode]
@@ -509,9 +507,8 @@ raise errors.RadioError("No response to ID command")
def initialize(self, mmap): - mmap[0] = \ - "\x80\xc8\xb3\x08\x00\x01\x00\x08" + \ - "\x08\x00\xc0\x27\x09\x00\x00\xff" + mmap.set_raw("\x00\xc8\xb3\x08\x00\x01\x00\x08" + "\x08\x00\xc0\x27\x09\x00\x00\x00")
def _get_settings(self): top = RadioSettings(self._get_display_settings(),
Hold off on applying this. It doesn't work as intended.
Tom
On Mar 17, 2017 22:00, "Tom Hayward" esarfl@gmail.com wrote:
# HG changeset patch # User Tom Hayward tom@tomh.us # Date 1489813179 25200 # Fri Mar 17 21:59:39 2017 -0700 # Node ID 027d861a73342f6208f4f977d844b2caf4be5721 # Parent 6b5b397b4859dd64603d7c4a0b91ffdbdfbe2bb6 [THD72] Fix buggy memory initialization. #1611
Allows channels added by Chirp to transmit. As a side effect, transmit inhibit is now optional (rather than compulsary).
diff -r 6b5b397b4859 -r 027d861a7334 chirp/drivers/thd72.py --- a/chirp/drivers/thd72.py Fri Mar 17 15:17:57 2017 -0700 +++ b/chirp/drivers/thd72.py Fri Mar 17 21:59:39 2017 -0700 @@ -90,7 +90,7 @@ #seekto 0x0c00; struct { u8 disabled:7,
unknown0:1;
u8 skip;txinhibit:1;
} flag[1032];
@@ -183,9 +183,6 @@ EXCH_R = "R\x00\x00\x00\x00" EXCH_W = "W\x00\x00\x00\x00"
-# Uploads result in "MCP Error" and garbage data in memory -# Clone driver disabled in favor of error-checking live driver.
@directory.register class THD72Radio(chirp_common.CloneModeRadio): @@ -224,7 +221,7 @@ rf.valid_tuning_steps = [] rf.valid_modes = MODES_REV.keys() rf.valid_tmodes = TMODES_REV.keys()
rf.valid_duplexes = DUPLEX_REV.keys()
rf.valid_duplexes = DUPLEX_REV.keys() + ["off"] rf.valid_skips = ["", "S"] rf.valid_characters = chirp_common.CHARSET_ALPHANUMERIC rf.valid_name_length = 8
@@ -283,7 +280,7 @@
def get_raw_memory(self, number): return repr(self._memobj.memory[number]) + \
repr(self._memobj.flag[(number)])
repr(self._memobj.flag[number])
def get_memory(self, number): if isinstance(number, str):
@@ -315,7 +312,7 @@ mem.rtone = chirp_common.TONES[_mem.rtone] mem.ctone = chirp_common.TONES[_mem.ctone] mem.dtcs = chirp_common.DTCS_CODES[_mem.dtcs]
mem.duplex = DUPLEX[int(_mem.duplex)]
mem.duplex = flag.txinhibit and "off" or DUPLEX[int(_mem.duplex)] mem.offset = int(_mem.offset) mem.mode = MODES[int(_mem.mode)]
@@ -369,7 +366,8 @@ _mem.ctone = chirp_common.TONES.index(mem.ctone) _mem.dtcs = chirp_common.DTCS_CODES.index(mem.dtcs) _mem.cross_mode = chirp_common.CROSS_MODES.index(mem.cross_mode)
_mem.duplex = DUPLEX_REV[mem.duplex]
flag.txinhibit = mem.duplex == "off"
_mem.duplex = DUPLEX_REV.get(mem.duplex, 0) _mem.offset = mem.offset _mem.mode = MODES_REV[mem.mode]
@@ -509,9 +507,8 @@ raise errors.RadioError("No response to ID command")
def initialize(self, mmap):
mmap[0] = \
"\x80\xc8\xb3\x08\x00\x01\x00\x08" + \
"\x08\x00\xc0\x27\x09\x00\x00\xff"
mmap.set_raw("\x00\xc8\xb3\x08\x00\x01\x00\x08"
"\x08\x00\xc0\x27\x09\x00\x00\x00")
def _get_settings(self): top = RadioSettings(self._get_display_settings(),
participants (2)
-
Tom Hayward
-
Tom Hayward