def get_memory(self, number): print "Getting %i" % number f = self._classes["mem"]() f.set_location(number) self._send_frame(f) mem = chirp_common.Memory() mem.number = number f = self._recv_frame(f) if len(f.get_data()) == 0: raise errors.RadioError("Radio reported error") if f.get_data() and f.get_data()[-1] == "\xFF": mem.empty = True return mem memobj = f.get_obj() print repr(memobj) mem.freq = int(memobj.freq) mem.mode = self._rf.valid_modes[memobj.mode] if self._rf.has_name: mem.name = str(memobj.name).rstrip() if self._rf.valid_tmodes: mem.tmode = self._rf.valid_tmodes[memobj.tmode] if self._rf.has_dtcs: # FIXME mem.dtcs = bitwise.bcd_to_int([memobj.dtcs]) if "Tone" in self._rf.valid_tmodes: mem.rtone = int(memobj.rtone) / 10.0 if "TSQL" in self._rf.valid_tmodes and self._rf.has_ctone: mem.ctone = int(memobj.ctone) / 10.0 if self._rf.valid_duplexes: mem.duplex = self._rf.valid_duplexes[memobj.duplex] return mem
def get_memory(self, number): LOG.debug("Getting %i" % number) f = self._classes["mem"]() if self._rf.has_bank: ch, bnk = self.mem_to_ch_bnk(number) f.set_location(ch, bnk) LOG.debug("Bank %i, Channel %02i" % (bnk, ch)) else: f.set_location(number) self._send_frame(f) mem = chirp_common.Memory() mem.number = number mem.immutable = [] f = self._recv_frame(f) if len(f.get_data()) == 0: raise errors.RadioError("Radio reported error") if f.get_data() and f.get_data()[-1] == "\xFF": mem.empty = True LOG.debug("Found %i empty" % mem.number) return mem memobj = f.get_obj() LOG.debug(repr(memobj)) try: if memobj.skip == 1: mem.skip = "" else: mem.skip = "S" except AttributeError: pass mem.freq = int(memobj.freq) try: mem.mode = self._MODES[memobj.mode] # We do not know what a variety of the positions between # PSK and DV mean, so let's behave as if those values # are not set to maintain consistency between known-unknown # values and unknown-unknown ones. if mem.mode is None: raise IndexError(memobj.mode) except IndexError: LOG.error( "Bank %s location %s is set for mode %s, but no known " "mode matches that value.", int(memobj.bank), int(memobj.number), repr(memobj.mode), ) raise if self._rf.has_name: mem.name = str(memobj.name).rstrip() if self._rf.valid_tmodes: mem.tmode = self._rf.valid_tmodes[memobj.tmode] if self._rf.has_dtcs_polarity: if memobj.dtcs_polarity == 0x11: mem.dtcs_polarity = "RR" elif memobj.dtcs_polarity == 0x10: mem.dtcs_polarity = "RN" elif memobj.dtcs_polarity == 0x01: mem.dtcs_polarity = "NR" else: mem.dtcs_polarity = "NN" if self._rf.has_dtcs: mem.dtcs = bitwise.bcd_to_int(memobj.dtcs) if "Tone" in self._rf.valid_tmodes: mem.rtone = int(memobj.rtone) / 10.0 if "TSQL" in self._rf.valid_tmodes and self._rf.has_ctone: mem.ctone = int(memobj.ctone) / 10.0 if self._rf.valid_duplexes: mem.duplex = self._rf.valid_duplexes[memobj.duplex] if self._rf.can_odd_split and memobj.spl: mem.duplex = "split" mem.offset = int(memobj.freq_tx) mem.immutable = [] else: mem.immutable = ["offset"] mem.extra = RadioSettingGroup("extra", "Extra") try: dig = RadioSetting("dig", "Digital", RadioSettingValueBoolean(bool(memobj.dig))) except AttributeError: pass else: dig.set_doc("Enable digital mode") mem.extra.append(dig) options = ["Wide", "Mid", "Narrow"] try: fil = RadioSetting( "filter", "Filter", RadioSettingValueList(options, options[memobj.filter - 1])) except AttributeError: pass else: fil.set_doc("Filter settings") mem.extra.append(fil) return mem
def get_settings(self): _settings = self._memobj.settings basic = RadioSettingGroup("basic", "Basic") dtmf = RadioSettingGroup("dtmf", "DTMF Code & Paging") arts = RadioSettingGroup("arts", "ARTS") autodial = RadioSettingGroup("autodial", "AutoDial") top = RadioSettings(basic, autodial, arts, dtmf) rs = RadioSetting("squelch", "Squelch", RadioSettingValueInteger(0, 15, _settings.squelch)) basic.append(rs) rs = RadioSetting("keybeep", "Keypad Beep", RadioSettingValueBoolean(_settings.keybeep)) basic.append(rs) rs = RadioSetting("scnl", "Scan Lamp", RadioSettingValueBoolean(_settings.scnl)) basic.append(rs) options = ["off", "30m", "1h", "3h", "5h", "8h"] rs = RadioSetting( "apo", "APO time (hrs)", RadioSettingValueList(options, options[_settings.apo])) basic.append(rs) options = ["off", "1m", "2.5m", "5m", "10m"] rs = RadioSetting( "timeout", "Time Out Timer", RadioSettingValueList(options, options[_settings.timeout])) basic.append(rs) options = [ "key", "dial", "key+dial", "ptt", "key+ptt", "dial+ptt", "all" ] rs = RadioSetting( "lock", "Lock mode", RadioSettingValueList(options, options[_settings.lock])) basic.append(rs) options = ["off", "0.2", "0.3", "0.5", "1.0", "2.0"] rs = RadioSetting( "rxsave", "RX Save (sec)", RadioSettingValueList(options, options[_settings.rxsave])) basic.append(rs) options = ["5sec", "key", "tgl"] rs = RadioSetting( "lamp", "Lamp mode", RadioSettingValueList(options, options[_settings.lamp])) basic.append(rs) options = ["off", "1", "3", "5", "8", "rpt"] rs = RadioSetting( "bell", "Bell Repetitions", RadioSettingValueList(options, options[_settings.bell])) basic.append(rs) rs = RadioSetting("cwid_en", "CWID Enable", RadioSettingValueBoolean(_settings.cwid_en)) arts.append(rs) cwid = RadioSettingValueString( 0, 16, self._decode_cwid(_settings.cwid.get_value())) cwid.set_charset(CHARSET) rs = RadioSetting("cwid", "CWID", cwid) arts.append(rs) options = ["off", "rx", "tx", "trx"] rs = RadioSetting( "artsmode", "ARTS Mode", RadioSettingValueList(options, options[_settings.artsmode])) arts.append(rs) options = ["off", "in range", "always"] rs = RadioSetting( "artsbeep", "ARTS Beep", RadioSettingValueList(options, options[_settings.artsbeep])) arts.append(rs) for i in range(0, 8): dialsettings = _settings.autodial[i] dialstr = "" for c in dialsettings.digits: if c < len(DTMFCHARSET): dialstr += DTMFCHARSET[c] dialentry = RadioSettingValueString(0, 16, dialstr) dialentry.set_charset(DTMFCHARSET + list(" ")) rs = RadioSetting("autodial" + str(i + 1), "AutoDial " + str(i + 1), dialentry) autodial.append(rs) dialstr = "" for c in _settings.autodial9_ro.digits: if c < len(DTMFCHARSET): dialstr += DTMFCHARSET[c] dialentry = RadioSettingValueString(0, 32, dialstr) dialentry.set_mutable(False) rs = RadioSetting("autodial9_ro", "AutoDial 9 (read only)", dialentry) autodial.append(rs) options = ["50ms", "100ms"] rs = RadioSetting( "pagingspeed", "Paging Speed", RadioSettingValueList(options, options[_settings.pagingspeed])) dtmf.append(rs) options = ["250ms", "450ms", "750ms", "1000ms"] rs = RadioSetting( "pagingdelay", "Paging Delay", RadioSettingValueList(options, options[_settings.pagingdelay])) dtmf.append(rs) options = ["off", "1", "3", "5", "8", "rpt"] rs = RadioSetting( "pagingbell", "Paging Bell Repetitions", RadioSettingValueList(options, options[_settings.pagingbell])) dtmf.append(rs) options = ["off", "ans", "for"] rs = RadioSetting( "paginganswer", "Paging Answerback", RadioSettingValueList(options, options[_settings.paginganswer])) dtmf.append(rs) rs = RadioSetting("code_dec_c_en", "Paging Code C Decode Enable", RadioSettingValueBoolean(_settings.code_dec_c_en)) dtmf.append(rs) _str = str(bitwise.bcd_to_int(_settings.pagingcodec_ro)) code = RadioSettingValueString(0, 3, _str) code.set_charset(NUMERIC_CHARSET + list(" ")) code.set_mutable(False) rs = RadioSetting("pagingcodec_ro", "Paging Code C (read only)", code) dtmf.append(rs) rs = RadioSetting("code_dec_p_en", "Paging Code P Decode Enable", RadioSettingValueBoolean(_settings.code_dec_p_en)) dtmf.append(rs) _str = str(bitwise.bcd_to_int(_settings.pagingcodep)) code = RadioSettingValueString(0, 3, _str) code.set_charset(NUMERIC_CHARSET + list(" ")) rs = RadioSetting("pagingcodep", "Paging Code P", code) dtmf.append(rs) for i in range(0, 6): num = str(i + 1) name = "code_dec_" + num + "_en" rs = RadioSetting( name, "Paging Code " + num + " Decode Enable", RadioSettingValueBoolean(getattr(_settings, name))) dtmf.append(rs) _str = str(bitwise.bcd_to_int(_settings.pagingcode[i].digits)) code = RadioSettingValueString(0, 3, _str) code.set_charset(NUMERIC_CHARSET + list(" ")) rs = RadioSetting("pagingcode" + num, "Paging Code " + num, code) dtmf.append(rs) return top
def get_settings(self): _settings = self._memobj.settings basic = RadioSettingGroup("basic", "Basic") dtmf = RadioSettingGroup("dtmf", "DTMF Code & Paging") arts = RadioSettingGroup("arts", "ARTS") autodial = RadioSettingGroup("autodial", "AutoDial") top = RadioSettings(basic, autodial, arts, dtmf) rs = RadioSetting( "squelch", "Squelch", RadioSettingValueInteger(0, 15, _settings.squelch)) basic.append(rs) rs = RadioSetting( "keybeep", "Keypad Beep", RadioSettingValueBoolean(_settings.keybeep)) basic.append(rs) rs = RadioSetting( "scnl", "Scan Lamp", RadioSettingValueBoolean(_settings.scnl)) basic.append(rs) options = ["off", "30m", "1h", "3h", "5h", "8h"] rs = RadioSetting( "apo", "APO time (hrs)", RadioSettingValueList(options, options[_settings.apo])) basic.append(rs) options = ["off", "1m", "2.5m", "5m", "10m"] rs = RadioSetting( "timeout", "Time Out Timer", RadioSettingValueList(options, options[_settings.timeout])) basic.append(rs) options = ["key", "dial", "key+dial", "ptt", "key+ptt", "dial+ptt", "all"] rs = RadioSetting( "lock", "Lock mode", RadioSettingValueList(options, options[_settings.lock])) basic.append(rs) options = ["off", "0.2", "0.3", "0.5", "1.0", "2.0"] rs = RadioSetting( "rxsave", "RX Save (sec)", RadioSettingValueList(options, options[_settings.rxsave])) basic.append(rs) options = ["5sec", "key", "tgl"] rs = RadioSetting( "lamp", "Lamp mode", RadioSettingValueList(options, options[_settings.lamp])) basic.append(rs) options = ["off", "1", "3", "5", "8", "rpt"] rs = RadioSetting( "bell", "Bell Repetitions", RadioSettingValueList(options, options[_settings.bell])) basic.append(rs) rs = RadioSetting( "cwid_en", "CWID Enable", RadioSettingValueBoolean(_settings.cwid_en)) arts.append(rs) cwid = RadioSettingValueString( 0, 16, self._decode_cwid(_settings.cwid.get_value())) cwid.set_charset(CHARSET) rs = RadioSetting("cwid", "CWID", cwid) arts.append(rs) options = ["off", "rx", "tx", "trx"] rs = RadioSetting( "artsmode", "ARTS Mode", RadioSettingValueList( options, options[_settings.artsmode])) arts.append(rs) options = ["off", "in range", "always"] rs = RadioSetting( "artsbeep", "ARTS Beep", RadioSettingValueList(options, options[_settings.artsbeep])) arts.append(rs) for i in range(0, 8): dialsettings = _settings.autodial[i] dialstr = "" for c in dialsettings.digits: if c < len(DTMFCHARSET): dialstr += DTMFCHARSET[c] dialentry = RadioSettingValueString(0, 16, dialstr) dialentry.set_charset(DTMFCHARSET + list(" ")) rs = RadioSetting("autodial" + str(i+1), "AutoDial " + str(i+1), dialentry) autodial.append(rs) dialstr = "" for c in _settings.autodial9_ro.digits: if c < len(DTMFCHARSET): dialstr += DTMFCHARSET[c] dialentry = RadioSettingValueString(0, 32, dialstr) dialentry.set_mutable(False) rs = RadioSetting("autodial9_ro", "AutoDial 9 (read only)", dialentry) autodial.append(rs) options = ["50ms", "100ms"] rs = RadioSetting( "pagingspeed", "Paging Speed", RadioSettingValueList(options, options[_settings.pagingspeed])) dtmf.append(rs) options = ["250ms", "450ms", "750ms", "1000ms"] rs = RadioSetting( "pagingdelay", "Paging Delay", RadioSettingValueList(options, options[_settings.pagingdelay])) dtmf.append(rs) options = ["off", "1", "3", "5", "8", "rpt"] rs = RadioSetting( "pagingbell", "Paging Bell Repetitions", RadioSettingValueList(options, options[_settings.pagingbell])) dtmf.append(rs) options = ["off", "ans", "for"] rs = RadioSetting( "paginganswer", "Paging Answerback", RadioSettingValueList(options, options[_settings.paginganswer])) dtmf.append(rs) rs = RadioSetting( "code_dec_c_en", "Paging Code C Decode Enable", RadioSettingValueBoolean(_settings.code_dec_c_en)) dtmf.append(rs) _str = str(bitwise.bcd_to_int(_settings.pagingcodec_ro)) code = RadioSettingValueString(0, 3, _str) code.set_charset(NUMERIC_CHARSET + list(" ")) code.set_mutable(False) rs = RadioSetting("pagingcodec_ro", "Paging Code C (read only)", code) dtmf.append(rs) rs = RadioSetting( "code_dec_p_en", "Paging Code P Decode Enable", RadioSettingValueBoolean(_settings.code_dec_p_en)) dtmf.append(rs) _str = str(bitwise.bcd_to_int(_settings.pagingcodep)) code = RadioSettingValueString(0, 3, _str) code.set_charset(NUMERIC_CHARSET + list(" ")) rs = RadioSetting("pagingcodep", "Paging Code P", code) dtmf.append(rs) for i in range(0, 6): num = str(i+1) name = "code_dec_" + num + "_en" rs = RadioSetting( name, "Paging Code " + num + " Decode Enable", RadioSettingValueBoolean(getattr(_settings, name))) dtmf.append(rs) _str = str(bitwise.bcd_to_int(_settings.pagingcode[i].digits)) code = RadioSettingValueString(0, 3, _str) code.set_charset(NUMERIC_CHARSET + list(" ")) rs = RadioSetting("pagingcode" + num, "Paging Code " + num, code) dtmf.append(rs) return top