From 906aa9704dfd131fabbcb3ae2dbba33b7cc2a5da Mon Sep 17 00:00:00 2001 From: Chris Mildebrandt Date: Wed, 26 Mar 2025 21:11:48 -0700 Subject: [PATCH] Wouxun KG-805g: Add new radio driver Add driver for Wouxun KG-805g. Currently supports only channel memory. Settings will come in a much later commit. I subclassed KGUVD1PRadio instead of KG816Radio since KG816 is more likely to change in a way that affects the KG805 code. Fixes #11214 Fixes #11208 Fixes #7781 --- chirp/drivers/wouxun.py | 55 ++++++++++++++++++++++++++++++++ tests/images/Wouxun_KG-805G.img | Bin 0 -> 8373 bytes 2 files changed, 55 insertions(+) create mode 100644 tests/images/Wouxun_KG-805G.img diff --git a/chirp/drivers/wouxun.py b/chirp/drivers/wouxun.py index c4cb0e6c..bf3d615d 100644 --- a/chirp/drivers/wouxun.py +++ b/chirp/drivers/wouxun.py @@ -1555,3 +1555,58 @@ class KG818Radio(KG816Radio): @classmethod def match_model(cls, filedata, filename): return False + + +@directory.register +class KG805GRadio(KGUVD1PRadio): + """Wouxun KG-805G""" + MODEL = "KG-805G" + + _querymodels = (b"HiWOUXUN\x02", ) + valid_freq = [(400000000, 470987500)] + + _MEM_FORMAT = """ + #seekto 0x0010; + struct { + lbcd rx_freq[4]; + lbcd tx_freq[4]; + ul16 rx_tone; + ul16 tx_tone; + u8 _3_unknown_1:4, + bcl:1, + _3_unknown_2:3; + u8 splitdup:1, + skip:1, + power_high:1, + iswide:1, + _2_unknown_2:4; + u8 unknown; + u8 _0_unknown_1:3, + iswidex:1, + _0_unknown_2:4; + } memory[128]; + + #seekto 0x1010; + struct { + u8 name[6]; + u8 pad[10]; + } names[128]; + """ + + def get_features(self): + rf = KGUVD1PRadio.get_features(self) + rf.has_settings = False + return rf + + def process_mmap(self): + self._memobj = bitwise.parse(self._MEM_FORMAT, self._mmap) + # This sets our frequency ranges, so run it once after we process the + # mmap to make sure they're set for later + self.get_settings() + + def get_settings(self): + pass + + @classmethod + def match_model(cls, filedata, filename): + return False diff --git a/tests/images/Wouxun_KG-805G.img b/tests/images/Wouxun_KG-805G.img new file mode 100644 index 0000000000000000000000000000000000000000..967bde5964e1220f90102a0e175e0d2cc633d740 GIT binary patch literal 8373 zcmeH~%}*0S7{+J1r9jz5DB&wmVrmK}6Tt}afDwp=B?Ky93%%Kvj|GcOOPO>@tntE? zi-{gM(3p^5!Vx^_)qg|pYT}98`p&jaXC~etMw=OUll{#*GtaY6x0E`LIHJjLgchBB zU2>f00WcKfz+fZ_#dr)Dig6Mcitzz36yv}U>>sLevHM$vGDmfJ5m4k`dcRrv=(gArP+9|neE{U|UL>lc8bSRW0+ z{@VSaFfbJByZY7pEB)4IT-C4or+rty!YGRn)kaaqZB!c-7{dapU%6jc-&WCQjHnMa zR01jim4He>B_Jn&!ssC_I`6%tpFbkY>+6l*!Z@ssqoYG|e0+9Ru8z~wGC6$n@jP_< zOLs@t@aWG=lRRh_e@diq@hKmEchZ_C_CCqU`RtSZZob~15z;gO)Zl>$4Qto~ z*9hs*5QYKE;rAuN*X2W<^LG-^+r`%m*uyIWYZ7}UZjjg~aihdd5;u#Ch3~9-I~JZP zV96hr{9(x-mi%GKAC~-K$sd;dc_e=x$)88?*Vh{q3{d6`Q05I#<_%Eh4FC%UDDws= z^9Bs83;Kpf7xWEH7xWFUF6bK#x}b0PbV1)})CGN`Nf-5-C4CHkJ-7gZez8xPYde(r zd?@qzQ0DUi7W`4>^P$Y=)8EnBqjL{ne~0ex?5s@y_XW8FT;>jNnR^0T{M|+%SlfTA zwX?IQhE9vW?*@ne{N+vGzyP2BbsG+}ba}nPJL+l*jYxd`u6CN*trDoO1mw?q_&3f6 z#con&)~M5qtA77~_00~2LU!ouxgE;=;roA`#-?sdC7=>e38)1AvjmWn+O%@n?^b35 z;kDxIZX!Oso>