[chirp_devel] IC-7300 Live Mode
Rick (AA0RD) DeWitt
Tue Mar 23 13:30:01 PDT 2021
Attached is the patch adding IC-7300 live-mode support to icomciv.py per
issue #4013.
--
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://intrepid.danplanet.com/pipermail/chirp_devel/attachments/20210323/d9b53adc/attachment-0001.html
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Signature-RIck-AA0RD-Image.jpg
Type: image/jpeg
Size: 18469 bytes
Desc: not available
Url : http://intrepid.danplanet.com/pipermail/chirp_devel/attachments/20210323/d9b53adc/attachment-0001.jpg
-------------- next part --------------
# HG changeset patch
# User Rick DeWitt <aa0rd at yahoo.com>
# Date 1616531197 25200
# Tue Mar 23 13:26:37 2021 -0700
# Node ID 864bedf6d0fe4d48552cb9fb566a7b517439c73b
# Parent b3ddf88a9432528557d1976df9c667eed4b7319e
[icomciv] Add IC-7300 Live Mode support, Issue #4013
diff -r b3ddf88a9432 -r 864bedf6d0fe chirp/drivers/icomciv.py
--- a/chirp/drivers/icomciv.py Sun Mar 07 00:47:19 2021 -0800
+++ b/chirp/drivers/icomciv.py Tue Mar 23 13:26:37 2021 -0700
@@ -1,4 +1,4 @@
-
+# Latest update: March, 2021 RJ DeWitt added IC-7300
import struct
import logging
from chirp.drivers import icf
@@ -114,6 +114,31 @@
char name[9];
"""
+MEM_IC7300_FORMAT = """
+bbcd number[2]; // 1,2
+u8 spl:4, // 3 split and select memory settings
+ select:4;
+lbcd freq[5]; // 4-8 receive freq
+u8 mode; // 9 operating mode
+u8 filter; // 10 filter 1-3 (undocumented)
+u8 dataMode:4, // 11 data mode setting (on or off)
+ tmode:4; // 11 tone type
+char pad1;
+bbcd rtone[2]; // 12-14 tx tone freq
+char pad2;
+bbcd ctone[2]; // 15-17 tone rx squelch setting
+lbcd freq_tx[5]; // 4-8 transmit freq
+u8 mode_tx; // 9 tx operating mode
+u8 filter_tx; // 10
+u8 dataMode_tx:4, // 11 tx data mode setting (on or off)
+ tmode_tx:4; // 11 tx tone type
+char pad3;
+bbcd rtone_tx[2]; // 12-14 repeater tone freq
+char pad4;
+bbcd ctone_tx[2]; // 15-17 tone squelch setting
+char name[10]; // 18-27 Callsign
+"""
+
SPLIT = ["", "spl"]
@@ -245,6 +270,14 @@
return bitwise.parse(mem_duptone_format, self._data)
+class IC7300MemFrame(MemFrame):
+ FORMAT = MEM_IC7300_FORMAT
+
+ def get_obj(self):
+ self._data = MemoryMap(str(self._data))
+ return bitwise.parse(self.FORMAT, self._data)
+
+
class SpecialChannel(object):
"""Info for special (named) channels"""
@@ -648,13 +681,15 @@
if self._rf.can_odd_split and mem.duplex == "split":
memobj.spl = 1
- memobj.duplex = 0
+ if hasattr(memobj, "duplex"):
+ 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
+ if self._rf.has_dtcs:
+ 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)
if hasattr(memobj, "duplexOffset"):
@@ -899,12 +934,67 @@
# Use Chirp locations starting with 1
self._adjust_bank_loc_start = True
+
+ at directory.register
+class Icom7300Radio(IcomCIVRadio): # Added March, 2021 by Rick DeWitt
+ """Icom IC-7300"""
+ MODEL = "IC-7300"
+ _model = "\x94"
+ _template = 100 # Use P1 as blank template
+
+ _SPECIAL_CHANNELS = {
+ "P1": 100,
+ "P2": 101,
+ }
+ _SPECIAL_CHANNELS_REV = dict(zip(_SPECIAL_CHANNELS.values(),
+ _SPECIAL_CHANNELS.keys()))
+
+ def _is_special(self, number):
+ return number > 99 or isinstance(number, str)
+
+ def _get_special_info(self, number):
+ info = SpecialChannel()
+ if isinstance(number, str):
+ info.name = number
+ info.channel = self._SPECIAL_CHANNELS[number]
+ info.location = info.channel
+ else:
+ info.location = number
+ info.name = self._SPECIAL_CHANNELS_REV[number]
+ info.channel = info.location
+ return info
+
+ def _initialize(self):
+ self._classes["mem"] = IC7300MemFrame
+ self._rf.has_name = True
+ self._rf.has_dtcs = False
+ self._rf.has_dtcs_polarity = False
+ self._rf.has_bank = False
+ self._rf.has_tuning_step = False
+ self._rf.has_nostep_tuning = True
+ self._rf.can_odd_split = True
+ self._rf.memory_bounds = (1, 99)
+ self._rf.valid_modes = [
+ "LSB", "USB", "AM", "CW", "RTTY", "FM", "CWR", "RTTYR",
+ "Data+LSB", "Data+USB", "Data+AM", "N/A", "N/A", "Data+FM"
+ ]
+ self._rf.valid_tmodes = ["", "Tone", "TSQL"]
+ # self._rf.valid_duplexes = ["", "-", "+", "split"]
+ self._rf.valid_duplexes = [] # To prevent using memobj.duplex
+ self._rf.valid_bands = [(1800000, 70500000)]
+ self._rf.valid_skips = []
+ self._rf.valid_name_length = 10
+ self._rf.valid_characters = chirp_common.CHARSET_ASCII
+ self._rf.valid_special_chans = sorted(self._SPECIAL_CHANNELS.keys())
+
+
CIV_MODELS = {
(0x76, 0xE0): Icom7200Radio,
(0x88, 0xE0): Icom7100Radio,
(0x70, 0xE0): Icom7000Radio,
(0x46, 0xE0): Icom746Radio,
(0x60, 0xE0): Icom910Radio,
+ (0x94, 0xE0): Icom7300Radio,
}
More information about the chirp_devel
mailing list