Exemplo n.º 1
0
 def set_settings(self, uisettings):
     for element in uisettings:
         if not isinstance(element, RadioSetting):
             self.set_settings(element)
             continue
         if not element.changed():
             continue
         try:
             setting = element.get_name()
             _settings = self._memobj.settings
             if re.match('autodial\d', setting):
                 # set autodial fields
                 dtmfstr = str(element.value).strip()
                 newval = []
                 for i in range(0, 16):
                     if i < len(dtmfstr):
                         newval.append(DTMFCHARSET.index(dtmfstr[i]))
                     else:
                         newval.append(0xFF)
                 LOG.debug(newval)
                 idx = int(setting[-1:]) - 1
                 _settings = self._memobj.settings.autodial[idx]
                 _settings.digits = newval
                 continue
             if (setting == "pagingcodep"):
                 bitwise.int_to_bcd(_settings.pagingcodep,
                                    int(element.value))
                 continue
             if re.match('pagingcode\d', setting):
                 idx = int(setting[-1:]) - 1
                 bitwise.int_to_bcd(_settings.pagingcode[idx].digits,
                                    int(element.value))
                 continue
             newval = element.value
             oldval = getattr(_settings, setting)
             if setting == "cwid":
                 newval = self._encode_cwid(newval)
             LOG.debug("Setting %s(%s) <= %s" % (setting, oldval, newval))
             setattr(_settings, setting, newval)
         except Exception:
             LOG.debug(element.get_name())
             raise
Exemplo n.º 2
0
 def set_settings(self, uisettings):
     for element in uisettings:
         if not isinstance(element, RadioSetting):
             self.set_settings(element)
             continue
         if not element.changed():
             continue
         try:
             setting = element.get_name()
             _settings = self._memobj.settings
             if re.match('autodial\d', setting):
                 # set autodial fields
                 dtmfstr = str(element.value).strip()
                 newval = []
                 for i in range(0, 16):
                     if i < len(dtmfstr):
                         newval.append(DTMFCHARSET.index(dtmfstr[i]))
                     else:
                         newval.append(0xFF)
                 LOG.debug(newval)
                 idx = int(setting[-1:]) - 1
                 _settings = self._memobj.settings.autodial[idx]
                 _settings.digits = newval
                 continue
             if (setting == "pagingcodep"):
                 bitwise.int_to_bcd(_settings.pagingcodep,
                                    int(element.value))
                 continue
             if re.match('pagingcode\d', setting):
                 idx = int(setting[-1:]) - 1
                 bitwise.int_to_bcd(_settings.pagingcode[idx].digits,
                                    int(element.value))
                 continue
             newval = element.value
             oldval = getattr(_settings, setting)
             if setting == "cwid":
                 newval = self._encode_cwid(newval)
             LOG.debug("Setting %s(%s) <= %s" % (setting, oldval, newval))
             setattr(_settings, setting, newval)
         except Exception:
             LOG.debug(element.get_name())
             raise
Exemplo n.º 3
0
def _set_freq(bcd_array, freq):
    bitwise.int_to_bcd(bcd_array, freq / 1000)
    bcd_array[2].set_raw(bcd_array[2].get_bits(0xF0) + freq % 10000 / 500)
Exemplo n.º 4
0
    def set_memory(self, mem):
        LOG.debug("Setting %i(%s)" % (mem.number, mem.extd_number))
        if self._rf.has_bank:
            ch, bnk = self.mem_to_ch_bnk(mem.number)
            LOG.debug("Bank %i, Channel %02i" % (bnk, ch))
        f = self._get_template_memory()
        if mem.empty:
            if self._rf.has_bank:
                f.set_location(ch, bnk)
            else:
                f.set_location(mem.number)
            LOG.debug("Making %i empty" % mem.number)
            f.make_empty()
            self._send_frame(f)

            # The next two lines accept the radio's status after setting the memory
            # and reports the results to the debug log.  This is needed for the
            # IC-7000.  No testing was done to see if it breaks memory delete on the
            # IC-746 or IC-7200.
            f = self._recv_frame()
            LOG.debug("Result:\n%s" % util.hexprint(f.get_data()))
            return

        # f.set_data(MemoryMap(self.get_raw_memory(mem.number)))
        # f.initialize()

        memobj = f.get_obj()
        if self._rf.has_bank:
            memobj.bank = bnk
            memobj.number = ch
        else:
            memobj.number = mem.number
        if mem.skip == "S":
            memobj.skip = 0
        else:
            try:
                memobj.skip = 1
            except KeyError:
                pass
        memobj.freq = int(mem.freq)
        memobj.mode = self._MODES.index(mem.mode)
        if self._rf.has_name:
            name_length = len(memobj.name.get_value())
            memobj.name = mem.name.ljust(name_length)[:name_length]

        if self._rf.valid_tmodes:
            memobj.tmode = self._rf.valid_tmodes.index(mem.tmode)

        if self._rf.has_ctone:
            memobj.ctone = int(mem.ctone * 10)
            memobj.rtone = int(mem.rtone * 10)

        if self._rf.has_dtcs_polarity:
            if mem.dtcs_polarity == "RR":
                memobj.dtcs_polarity = 0x11
            elif mem.dtcs_polarity == "RN":
                memobj.dtcs_polarity = 0x10
            elif mem.dtcs_polarity == "NR":
                memobj.dtcs_polarity = 0x01
            else:
                memobj.dtcs_polarity = 0x00

        if self._rf.has_dtcs:
            bitwise.int_to_bcd(memobj.dtcs, mem.dtcs)

        if self._rf.can_odd_split and mem.duplex == "split":
            memobj.spl = 1
            memobj.duplex = 0
            memobj.freq_tx = int(mem.offset)
            memobj.tmode_tx = memobj.tmode
            memobj.ctone_tx = memobj.ctone
            memobj.rtone_tx = memobj.rtone
            memobj.dtcs_polarity_tx = memobj.dtcs_polarity
            memobj.dtcs_tx = memobj.dtcs
        elif self._rf.valid_duplexes:
            memobj.duplex = self._rf.valid_duplexes.index(mem.duplex)

        for setting in mem.extra:
            if setting.get_name() == "filter":
                setattr(memobj, setting.get_name(), int(setting.value) + 1)
            else:
                setattr(memobj, setting.get_name(), setting.value)

        LOG.debug(repr(memobj))
        self._send_frame(f)

        f = self._recv_frame()
        LOG.debug("Result:\n%s" % util.hexprint(f.get_data()))
Exemplo n.º 5
0
    def set_memory(self, mem):
        LOG.debug("Setting %i(%s)" % (mem.number, mem.extd_number))
        if self._rf.has_bank:
            ch, bnk = self.mem_to_ch_bnk(mem.number)
            LOG.debug("Bank %i, Channel %02i" % (bnk, ch))
        f = self._get_template_memory()
        if mem.empty:
            if self._rf.has_bank:
                f.set_location(ch, bnk)
            else:
                f.set_location(mem.number)
            LOG.debug("Making %i empty" % mem.number)
            f.make_empty()
            self._send_frame(f)

# The next two lines accept the radio's status after setting the memory
# and reports the results to the debug log.  This is needed for the
# IC-7000.  No testing was done to see if it breaks memory delete on the
# IC-746 or IC-7200.
            f = self._recv_frame()
            LOG.debug("Result:\n%s" % util.hexprint(f.get_data()))
            return

        # f.set_data(MemoryMap(self.get_raw_memory(mem.number)))
        # f.initialize()

        memobj = f.get_obj()
        if self._rf.has_bank:
            memobj.bank = bnk
            memobj.number = ch
        else:
            memobj.number = mem.number
        if mem.skip == "S":
            memobj.skip = 0
        else:
            try:
                memobj.skip = 1
            except KeyError:
                pass
        memobj.freq = int(mem.freq)
        memobj.mode = self._MODES.index(mem.mode)
        if self._rf.has_name:
            name_length = len(memobj.name.get_value())
            memobj.name = mem.name.ljust(name_length)[:name_length]

        if self._rf.valid_tmodes:
            memobj.tmode = self._rf.valid_tmodes.index(mem.tmode)

        if self._rf.has_ctone:
            memobj.ctone = int(mem.ctone * 10)
            memobj.rtone = int(mem.rtone * 10)

        if self._rf.has_dtcs_polarity:
            if mem.dtcs_polarity == "RR":
                memobj.dtcs_polarity = 0x11
            elif mem.dtcs_polarity == "RN":
                memobj.dtcs_polarity = 0x10
            elif mem.dtcs_polarity == "NR":
                memobj.dtcs_polarity = 0x01
            else:
                memobj.dtcs_polarity = 0x00

        if self._rf.has_dtcs:
            bitwise.int_to_bcd(memobj.dtcs, mem.dtcs)

        if self._rf.can_odd_split and mem.duplex == "split":
            memobj.spl = 1
            memobj.duplex = 0
            memobj.freq_tx = int(mem.offset)
            memobj.tmode_tx = memobj.tmode
            memobj.ctone_tx = memobj.ctone
            memobj.rtone_tx = memobj.rtone
            memobj.dtcs_polarity_tx = memobj.dtcs_polarity
            memobj.dtcs_tx = memobj.dtcs
        elif self._rf.valid_duplexes:
            memobj.duplex = self._rf.valid_duplexes.index(mem.duplex)

        for setting in mem.extra:
            if setting.get_name() == "filter":
                setattr(memobj, setting.get_name(), int(setting.value) + 1)
            else:
                setattr(memobj, setting.get_name(), setting.value)

        LOG.debug(repr(memobj))
        self._send_frame(f)

        f = self._recv_frame()
        LOG.debug("Result:\n%s" % util.hexprint(f.get_data()))
Exemplo n.º 6
0
def _set_freq(bcd_array, freq):
    bitwise.int_to_bcd(bcd_array, freq / 1000)
    bcd_array[2].set_raw(bcd_array[2].get_bits(0xF0) + freq % 10000 / 500)