[FT-70] Banks support fixes for New Model #5329 Removed unused code, Removed callsign and open message for the moment Some pep8 fixes to Sorry. Have attached and copied patch into this email. Maybe will have things working to do the next one directly from Mercurial.
Nicolas
# HG changeset patch # User Nicolas Pike nicolas.jon.pike@gmail.com # Date 1520895999 0 # Mon Mar 12 23:06:39 2018 +0000 # Node ID c0dd892751c37b7049d77fe400909c4ada3630c5 # Parent d8e76240546ea505b065854afb9c1da11f8b2070 [FT-70] Banks support fixes for New Model #5329 Some pep8 fixes to Sorry.
diff -r d8e76240546e -r c0dd892751c3 chirp/drivers/ft70.py --- a/chirp/drivers/ft70.py Sun Mar 11 14:34:13 2018 -0400 +++ b/chirp/drivers/ft70.py Mon Mar 12 23:06:39 2018 +0000 @@ -62,6 +62,8 @@ // MYCALL and Opening Message errors if not 10 characters // Values greater than one sometimes stored as whole bytes, these need to be refactored into bit fields // to prevent accidental overwriting of adjacent values +// Bank Name length not checked on gui input - but first 6 characters are saved correctly. +// Extended characters entered as bank names on radio are corrupted in Chirp
// Missing // 50 SCV.WTH Set the VFO scan frequency range. BAND / ALL - NOT FOUND @@ -127,7 +129,7 @@ u8 unknown2_1; u8 mic_gain; // 31 MCGAIN Adjust the microphone gain level u8 unknown2_3; - u8 dw_interval; // 21 DW INT Set the priority memory channel monitoring interval during Dual Receive. 0.1S - 5.0S - 10.0S + u8 dw_interval; // 21 DW INT Set the priority memory ch mon int during Dual RX 0.1S-5.0S-10.0S u8 ptt_delay; // 42 PTT.DLY Set the PTT delay time. OFF / 20 MS / 50 MS / 100 MS / 200 MS u8 rx_save; // 48 RX.SAVE Set the battery save time. OFF / 0.2 S - 60.0 S u8 scan_restart; // 53 SCN.STR Set the scanning restart time. 0.1 S - 2.0 S - 10.0 S @@ -136,7 +138,7 @@ u8 unknown4[5]; u8 tot; // 56 TOT Set the transmission timeout timer u8 unknown5[3]; // 26
- u8 vfo_mode:1, // 60 VFO.MOD Set the frequency setting range in the VFO mode by DIAL knob. ALL / BAND + u8 vfo_mode:1, // 60 VFO.MOD Set freq setting range in the VFO mode by DIAL knob. ALL / BAND unknown7:1, scan_lamp:1, // 51 SCN.LMP Set the scan lamp ON or OFF when scanning stops On/Off unknown8:1, @@ -160,7 +162,7 @@ password:1, // Placeholder location home_rev:1, // 26 HOME/REV Select the function of the [HOME/REV] key. moni:1; // 32 Mon/T-Call Select the function of the [MONI/T-CALL] switch. - u8 gm_interval:4, // 30 // 25 GM INT Set the transmission interval of digital GM information. OFF / NORMAL / LONG + u8 gm_interval:4, // 30 // 25 GM INT Set tx interval of digital GM information. OFF / NORMAL / LONG unknown10:4; u8 unknown11; u8 unknown12:1, @@ -170,7 +172,7 @@ home_vfo:1, // 27 HOME->VFO Turn transfer VFO to the Home channel ON or OFF. unknown12_6:1, unknown12_7:1, - dw_rt:1; // 32 // 23 DW RVT Turn the "Priority Channel Revert" feature ON or OFF during Dual Receive. + dw_rt:1; // 32 // 23 DW RVT Turn "Priority Channel Revert" feature ON or OFF during Dual Rx. u8 unknown33; u8 unknown34; u8 unknown35; @@ -220,51 +222,7 @@ u8 unknown[48]; u8 unknown1[16]; } vfo_backup_info_1; - - #seekto 0x064a; // Unknown (From FT1D) For reference only - struct { - u8 unknown0[4]; - u8 frequency_band; - u8 unknown1:6, - manual_or_mr:2; - u8 unknown2:7, - mr_banks:1; - u8 unknown3; - u16 mr_index; - u16 bank_index; - u16 bank_enable; - u8 unknown4[5]; - u8 unknown5:6, - power:2; // 3 - High, 2 - Mid, 1 - Low - u8 unknown6:4, - tune_step:4; - u8 unknown7:6, - duplex:2; - u8 unknown8:6, - tone_mode:2; - u8 unknown9:2, - tone:6; - u8 unknown10; - u8 unknown11:6, - mode:2; - bbcd freq0[4]; - bbcd offset_freq[4]; - u8 unknown12[2]; - char label[16]; - u8 unknown13[6]; - bbcd band_lower[4]; - bbcd band_upper[4]; - bbcd rx_freq[4]; - u8 unknown14[22]; - bbcd freq1[4]; - u8 unknown15[11]; - u8 unknown16:3, - volume:5; - u8 unknown17[18]; - u8 active_menu_item; - u8 checksum; - } vfo_info[6]; - + #seekto 0x047e; struct { u8 unknown1; @@ -273,7 +231,7 @@ struct { char padded_string[6]; // 36 OPN.MSG Select MSG then key vm to edit it } message; - } opening_message; // 36 OPN.MSG Select the Opening Message when the transceiver is ON. OFF / MSG / DC + } opening_message; // 36 OPN.MSG Select the Opening Message when transceiver is ON. OFF/MSG/DC
#seekto 0x094a; // DTMF Memories struct { @@ -318,7 +276,7 @@ standby_beep:1; // 07 BEP.STB Standby Beep in the digital C4FM mode. On/Off u8 unknown3; u8 unknown4:6, - gm_ring:2; // 24 GM RNG Select the beep option while receiving digital GM information. OFF / IN RNG /ALWAYS + gm_ring:2; // 24 GM RNG Select beep option while rx digital GM info. OFF/IN RNG/ALWAYS u8 unknown5; u8 rx_dg_id; // RX DG-ID Long Press Mode Key, Mode Key to select, Dial u8 tx_dg_id; // TX DG-ID Long Press Mode Key, Dial @@ -456,48 +414,6 @@ _members = self._radio._memobj.bank_members[bank.index] return set([int(ch) + 1 for ch in _members.channel if ch != 0xFFFF])
- def update_vfo(self): - chosen_bank = [None, None] - chosen_mr = [None, None] - - flags = self._radio._memobj.flag - - # Find a suitable bank and MR for VFO A and B. # From FT1D for ref only - for bank in self.get_mappings(): - for channel in self._channel_numbers_in_bank(bank): - chosen_bank[0] = bank.index - chosen_mr[0] = channel - if not flags[channel].nosubvfo: - chosen_bank[1] = bank.index - chosen_mr[1] = channel - break - if chosen_bank[1]: - break - - for vfo_index in (0, 1): # From FT1D for ref only - # 3 VFO info structs are stored as 3 pairs of (master, backup) - vfo = self._radio._memobj.vfo_info[vfo_index * 2] - vfo_bak = self._radio._memobj.vfo_info[(vfo_index * 2) + 1] - - if vfo.checksum != vfo_bak.checksum: - LOG.warn("VFO settings are inconsistent with backup") - else: - if ((chosen_bank[vfo_index] is None) and (vfo.bank_index != - 0xFFFF)): - LOG.info("Disabling banks for VFO %d" % vfo_index) - vfo.bank_index = 0xFFFF - vfo.mr_index = 0xFFFF - vfo.bank_enable = 0xFFFF - elif ((chosen_bank[vfo_index] is not None) and - (vfo.bank_index == 0xFFFF)): - LOG.info("Enabling banks for VFO %d" % vfo_index) - vfo.bank_index = chosen_bank[vfo_index] - vfo.mr_index = chosen_mr[vfo_index] - vfo.bank_enable = 0x0000 - vfo_bak.bank_index = vfo.bank_index - vfo_bak.mr_index = vfo.mr_index - vfo_bak.bank_enable = vfo.bank_enable - def _update_bank_with_channel_numbers(self, bank, channels_in_bank): _members = self._radio._memobj.bank_members[bank.index] if len(channels_in_bank) > len(_members.channel): @@ -518,8 +434,6 @@ _bank_used = self._radio._memobj.bank_used[bank.index] _bank_used.in_use = 0x06
- self.update_vfo() - def remove_memory_from_mapping(self, memory, bank): channels_in_bank = self._channel_numbers_in_bank(bank) try: @@ -533,8 +447,6 @@ _bank_used = self._radio._memobj.bank_used[bank.index] _bank_used.in_use = 0xFFFF
- self.update_vfo() - def get_mapping_memories(self, bank): memories = [] for channel in self._channel_numbers_in_bank(bank): @@ -704,16 +616,6 @@ mem.skip = flag.pskip and "P" or flag.skip and "S" or "" mem.name = self._decode_label(_mem)
- mem.extra = RadioSettingGroup("extra", "Extra Settings") - - rs = RadioSetting("display_tag", "Display Name/Frequency", - RadioSettingValueBoolean(_mem.display_tag)) - mem.extra.append(rs) - - rs = RadioSetting("ams", "AMS", - RadioSettingValueBoolean(_mem.ams)) - mem.extra.append(rs) - return mem
def _decode_label(self, mem): @@ -726,7 +628,7 @@ # We only speak english here in chirpville return [0x00, 0x00]
- def _decode_power_level(self, mem): # 3 High 2 Mid 1 Low + def _decode_power_level(self, mem): # 3 High 2 Mid 1 Low return POWER_LEVELS[3 - mem.power]
def _encode_power_level(self, mem): @@ -880,25 +782,6 @@ rs = RadioSetting("opening_message.flag", "Opening Msg Mode", val) menu.append(rs)
- val = RadioSettingValueString(0, 6, str(opening_message.message. padded_string).rstrip("\xFF")) - rs = RadioSetting("opening_message.message.padded_string", "Opening Message", val) - rs.set_apply_callback(self.apply_ff_padded_string, opening_message.message) - menu.append(rs) - - # Indicates the current temperature inside the transceiver. - # Displays the internal temperature sensor F or C. - # Press the [V/M] key to toggle the measurement units between F or C. - # In this setting, press and hold the [F] key to return to normal operation. - - # Only seems to change the radio display, back to C when radio powered off - - # first_settings = self._memobj.first_settings - # val = RadioSettingValueList( - # self._TEMP_CF, - # self._TEMP_CF[first_settings.temp_cf]) - # rs = RadioSetting("first_settings.temp_cf", "Temperature unit", val) - # menu.append(rs) - return menu
def _get_config_settings(self): @@ -955,16 +838,6 @@ rs = RadioSetting("scan_settings.busy_led", "Busy LED", val) menu.append(rs)
- # 40 Password Turn the password function ON or OFF. - - # val = RadioSettingValueList( - # self._OFF_ON, - # self._OFF_ON[scan_settings.password]) - # rs = RadioSetting("scan_settings.password", "Password", val) - # menu.append(rs) - - # 41 PSWDWT Input the password. - # 26 HOME/REV Select the function of the [HOME/REV] key.
val = RadioSettingValueList( @@ -1037,30 +910,6 @@ rs = RadioSetting("scan_settings.tot", "Transmit Timeout (TOT)", val) menu.append(rs)
- # P1 Set Mode Items to the Programmable Key - # 1-12 Maps directly to setting - # 14 setting 13 - # 15-17 setting 14 - 16 - # 24 setting 17 - # 26-31 setting 18 - 23 - # 33-40 setting 24 - 31 - - # Further checking required - - # val = RadioSettingValueList( - # self._SET_MODE, - # self._SET_MODE[scan_settings.prog_key1]) - # rs = RadioSetting("scan_settings.prog_key1", "P1 Key", val) - # menu.append(rs) - - # P2 Set Mode Items to the Programmable Key - - # val = RadioSettingValueList( - # self._SET_MODE, - # self._SET_MODE[scan_settings.prog_key2]) - # rs = RadioSetting("scan_settings.prog_key2", "P2 Key", val) - # menu.append(rs) - # 31 MCGAIN Adjust the microphone gain level
val = RadioSettingValueList( @@ -1087,28 +936,11 @@ rs = RadioSetting("squelch_settings.squelch", "Squelch", val) menu.append(rs)
- # Power Level F key, TX PO, Dial to adjust power level - - # scan_settings_2 = self._memobj.scan_settings_2 - # val = RadioSettingValueList( - # self._VOLUME, - # self._VOLUME[scan_settings_2.volume]) - # rs = RadioSetting("scan_settings_2.volume", "Volume", val) - # menu.append(rs) - return menu
def _get_digital_settings(self): menu = RadioSettingGroup("digital_settings", "Digital")
- # 63 MYCALL Set the call sign. - - my_call = self._memobj.my_call - val = RadioSettingValueString(0, 10, str(my_call.padded_string). rstrip("\xFF")) - rs = RadioSetting("my_call.padded_string", "My Call", val) - rs.set_apply_callback(self.apply_ff_padded_string, my_call) - menu.append(rs) - # Short Press AMS button AMS TX Mode
digital_settings = self._memobj.digital_settings @@ -1248,21 +1080,6 @@
# 50 SCV.WTH Set the VFO scan frequency range. BAND / ALL - NOT FOUND!
- # scan_settings_1 = self._memobj.scan_settings_1 - # val = RadioSettingValueList( - # self._VFO_SCAN_MODE, - # self._VFO_SCAN_MODE[scan_settings_1.vfo_scan_width]) - # rs = RadioSetting("scan_settings_1.vfo_scan_width", "VFO Scan Width", val) - # menu.append(rs) - - # 49 SCM.WTH Set the memory scan frequency range. ALL / BAND - NOT FOUND! - - # val = RadioSettingValueList( - # self._MEMORY_SCAN_MODE, - # self._MEMORY_SCAN_MODE[scan_settings_1.memory_scan_width]) - # rs = RadioSetting("scan_settings_1.memory_scan_width", "Memory Scan Width", val) - # menu.append(rs) - # Scan Resume Section
# 52 SCN.RSM Configure the scan stop mode settings. 2.0 S - 5.0 S - 10.0 S / BUSY / HOLD @@ -1356,4 +1173,3 @@ rawval = setting.value.get_value() val = 0 if cls._DIG_POP_UP.index(rawval) == 0 else cls._DIG_POP_UP.index(rawval) + 9 obj.digital_popup = val -