def set_memory(self, mem): _mem = self._memobj.memory[mem.number - 1] _nam = self._memobj.names[mem.number - 1] if mem.empty: wipe_memory(_mem, "\xFF") return _mem.rx_freq = mem.freq / 10 if mem.duplex == "+": _mem.tx_freq = (mem.freq / 10) + (mem.offset / 10) elif mem.duplex == "-": _mem.tx_freq = (mem.freq / 10) - (mem.offset / 10) else: _mem.tx_freq = (mem.freq / 10) _mem.skip = mem.skip != "S" _mem.iswide = mem.mode != "NFM" _mem.rx_tone[0].set_raw("\xFF") _mem.rx_tone[1].set_raw("\xFF") _mem.tx_tone[0].set_raw("\xFF") _mem.tx_tone[1].set_raw("\xFF") if mem.tmode == "DTCS": _mem.tx_tone = int("%x" % int("%i" % (mem.dtcs), 16)) _mem.rx_tone = int("%x" % int("%i" % (mem.dtcs), 16)) # Argh. Set the high order two bits to signal DCS or Inv. DCS txm = mem.dtcs_polarity[0] == "N" and 0x80 or 0xC0 rxm = mem.dtcs_polarity[1] == "N" and 0x80 or 0xC0 _mem.tx_tone[1].set_raw(chr(ord(_mem.tx_tone[1].get_raw()) | txm)) _mem.rx_tone[1].set_raw(chr(ord(_mem.rx_tone[1].get_raw()) | rxm)) elif mem.tmode: _mem.tx_tone = int(mem.rtone * 10) if mem.tmode == "TSQL": _mem.rx_tone = int(_mem.tx_tone) if mem.power: _mem.power_high = not POWER_LEVELS.index(mem.power) else: _mem.power_high = True # Default to disabling the busy channel lockout # 00 == Close # 01 == Carrier # 10 == QT/DQT _mem.bclo = 0 _nam.name = [0xFF] * 6 for i in range(0, len(mem.name)): try: _nam.name[i] = PUXING_CHARSET.index(mem.name[i]) except IndexError: raise Exception("Character `%s' not supported")