[chirp_devel] [PATCH] [FT818] New Model Support Yaesu FT-818 #5607

Vinny Stipo
Mon Dec 3 07:43:34 PST 2018


# HG changeset patch
# User Vinny Stipo <v at xpctech.com>
# Date 1543851731 28800
#      Mon Dec 03 07:42:11 2018 -0800
# Node ID 6722e181470ab505a5075a4b8811c71e4bd31ab2
# Parent  c6cab71d7d7d76b63367f5529a1b2ea075a8db1b
[FT818] New Model Support Yaesu FT-818 #5607

diff --git a/chirp/drivers/ft818.py b/chirp/drivers/ft818.py
new file mode 100755
--- /dev/null
+++ b/chirp/drivers/ft818.py
@@ -0,0 +1,256 @@
+#
+# Copyright 2012 Filippi Marco <iz3gme.marco at gmail.com>
+# Copyright 2018 Vinny Stipo <v at xpctech.com>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+"""FT818 management module"""
+
+from chirp.drivers import ft817
+from chirp import chirp_common, errors, directory
+from chirp.settings import RadioSetting, RadioSettingGroup, \
+    RadioSettingValueInteger, RadioSettingValueList, \
+    RadioSettingValueBoolean, RadioSettingValueString, \
+    RadioSettings
+import os
+import logging
+from textwrap import dedent
+from chirp.util import safe_charset_string
+
+LOG = logging.getLogger(__name__)
+
+
+ at directory.register
+class FT817NDRadio(ft817.FT817Radio):
+
+    """Yaesu FT-818"""
+    BAUD_RATE = 9600
+    MODEL = "FT-818"
+    _model = ""
+    _memsize = 6573
+    _block_lengths = [2, 40, 208, 208, 208, 208, 198, 53, 130, 118, 130]
+
+    MEM_FORMAT = """
+        struct mem_struct {
+            u8  tag_on_off:1,
+                tag_default:1,
+                unknown1:3,
+                mode:3;
+            u8  duplex:2,
+                is_duplex:1,
+                is_cwdig_narrow:1,
+                is_fm_narrow:1,
+                freq_range:3;
+            u8  skip:1,
+                unknown2:1,
+                ipo:1,
+                att:1,
+                unknown3:4;
+            u8  ssb_step:2,
+                am_step:3,
+                fm_step:3;
+            u8  unknown4:6,
+                tmode:2;
+            u8  unknown5:2,
+                tx_mode:3,
+                tx_freq_range:3;
+            u8  unknown6:1,
+                unknown_toneflag:1,
+                tone:6;
+            u8  unknown7:1,
+                dcs:7;
+            ul16 rit;
+            u32 freq;
+            u32 offset;
+            u8  name[8];
+        };
+
+        #seekto 0x4;
+        struct {
+            u8  fst:1,
+                lock:1,
+                nb:1,
+                pbt:1,
+                unknownb:1,
+                dsp:1,
+                agc:2;
+            u8  vox:1,
+                vlt:1,
+                bk:1,
+                kyr:1,
+                unknown5:1,
+                cw_paddle:1,
+                pwr_meter_mode:2;
+            u8  vfob_band_select:4,
+                vfoa_band_select:4;
+            u8  unknowna;
+            u8  backlight:2,
+                color:2,
+                contrast:4;
+            u8  beep_freq:1,
+                beep_volume:7;
+            u8  arts_beep:2,
+                main_step:1,
+                cw_id:1,
+                scope:1,
+                pkt_rate:1,
+                resume_scan:2;
+            u8  op_filter:2,
+                lock_mode:2,
+                cw_pitch:4;
+            u8  sql_rf_gain:1,
+                ars_144:1,
+                ars_430:1,
+                cw_weight:5;
+            u8  cw_delay;
+            u8  unknown8:1,
+                sidetone:7;
+            u8  batt_chg:2,
+                cw_speed:6;
+            u8  disable_amfm_dial:1,
+                vox_gain:7;
+            u8  cat_rate:2,
+                emergency:1,
+                vox_delay:5;
+            u8  dig_mode:3,
+                mem_group:1,
+                unknown9:1,
+                apo_time:3;
+            u8  dcs_inv:2,
+                unknown10:1,
+                tot_time:5;
+            u8  mic_scan:1,
+                ssb_mic:7;
+            u8  mic_key:1,
+                am_mic:7;
+            u8  unknown11:1,
+                fm_mic:7;
+            u8  unknown12:1,
+                dig_mic:7;
+            u8  extended_menu:1,
+                pkt_mic:7;
+            u8  unknown14:1,
+                pkt9600_mic:7;
+            il16 dig_shift;
+            il16 dig_disp;
+            i8  r_lsb_car;
+            i8  r_usb_car;
+            i8  t_lsb_car;
+            i8  t_usb_car;
+            u8  unknown15:2,
+                menu_item:6;
+            u8  unknown16:4,
+                menu_sel:4;
+            u16 unknown17;
+            u8  art:1,
+                scn_mode:2,
+                dw:1,
+                pri:1,
+                unknown18:1,
+                tx_power:2;
+            u8  spl:1,
+                unknown:1,
+                uhf_antenna:1,
+                vhf_antenna:1,
+                air_antenna:1,
+                bc_antenna:1,
+                sixm_antenna:1,
+                hf_antenna:1;
+        } settings;
+
+        #seekto 0x2A;
+        struct mem_struct vfoa[16];
+        struct mem_struct vfob[16];
+        struct mem_struct home[4];
+        struct mem_struct qmb;
+        struct mem_struct mtqmb;
+        struct mem_struct mtune;
+
+        #seekto 0x431;
+        u8 visible[25];
+        u8 pmsvisible;
+
+        #seekto 0x44B;
+        u8 filled[25];
+        u8 pmsfilled;
+
+        #seekto 0x465;
+        struct mem_struct memory[200];
+        struct mem_struct pms[2];
+
+        #seekto 0x1903;
+        u8 callsign[7];
+
+        #seekto 0x19AD;
+        struct mem_struct sixtymeterchannels[5];
+    """
+
+    SPECIAL_MEMORIES = {
+        "VFOa-1.8M": -37,
+        "VFOa-3.5M": -36,
+        "VFOa-5M": -35,
+        "VFOa-7M": -34,
+        "VFOa-10M": -33,
+        "VFOa-14M": -32,
+        "VFOa-18M": -31,
+        "VFOa-21M": -30,
+        "VFOa-24M": -29,
+        "VFOa-28M": -28,
+        "VFOa-50M": -27,
+        "VFOa-FM": -26,
+        "VFOa-AIR": -25,
+        "VFOa-144": -24,
+        "VFOa-430": -23,
+        "VFOa-HF": -22,
+        "VFOb-1.8M": -21,
+        "VFOb-3.5M": -20,
+        "VFOb-5M": -19,
+        "VFOb-7M": -18,
+        "VFOb-10M": -17,
+        "VFOb-14M": -16,
+        "VFOb-18M": -15,
+        "VFOb-21M": -14,
+        "VFOb-24M": -13,
+        "VFOb-28M": -12,
+        "VFOb-50M": -11,
+        "VFOb-FM": -10,
+        "VFOb-AIR": -9,
+        "VFOb-144M": -8,
+        "VFOb-430M": -7,
+        "VFOb-HF": -6,
+        "HOME HF": -5,
+        "HOME 50M": -4,
+        "HOME 144M": -3,
+        "HOME 430M": -2,
+        "QMB": -1,
+    }
+    FIRST_VFOB_INDEX = -6
+    LAST_VFOB_INDEX = -21
+    FIRST_VFOA_INDEX = -22
+    LAST_VFOA_INDEX = -37
+
+    SPECIAL_PMS = {
+        "PMS-L": -39,
+        "PMS-U": -38,
+    }
+    LAST_PMS_INDEX = -39
+
+    SPECIAL_MEMORIES.update(SPECIAL_PMS)
+
+    SPECIAL_MEMORIES_REV = dict(zip(SPECIAL_MEMORIES.values(),
+                                    SPECIAL_MEMORIES.keys()))
+
+
+
+
diff --git a/tests/images/Yaesu_FT-818.img b/tests/images/Yaesu_FT-818.img
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..c4684cbcdf80a9296910a0d22bc3d527737bda54
GIT binary patch
literal 6730
zc$~GEeT-CB6~NyPP`1Fr777ai(}_T;6q?OKFYr&D_c0&uy_q*}-oDv4Gx1}0VTA22
zvf4&UW8#`rLi~e}NJwKFT at 7@B6(rckk7!uaCK|1lCN(8W*_nz>H4P!rsELjE-nr+#
zd+%eXCPv>Mo9zDfoO|y1y64{OSEm-ujo$w3=_^|IA2$pfzp_M8t_(z<g5Sf at kFI6P
zsG<}Ur91j9bu}ISz4tDD!<;M$`b9FrN%tcMBa+5XkXd$VSR}$atF%l9ZEHU{*MV$2
zk`c8DB)vS{fovUhJCJQZni7fH6_cW!QM!&zGYhgQrHtfQ9{k3Lu}HCzocYz1NV1D#
zZLPn*rYL_NW<(34&;?pj&-G0xOTV3FWIwlU-5-WUAN+6Pvw#f7XMuJ8FY#GG2II2;
z!T2z8Z+zG~|4n>U9-rU;SP|osU7|RYq|SY9?!)85ENF7FW1Ey!S#Gtv^^{~ax8Uu}
zbYwwHxCN(PnvN`3h+McK+Sd7Nc8oUU(xRRW_|t37nH_a3?nsogXO!bz%8E$+jV~L~
zHUgrT3!$-J1+p17*!Mz2>>O$M^^ok3$b&!*Pl1d|%)vY(tAHGFffz&$Tt-#{Id%uM
z>BRCKMm7i}ASD+p5Y{;{M~UI7G3gPAL)1tFNv}X`gV=sWCZ|tQnZcqF%YYBwezBjD
zoZ-b}tw6$^=7tisU4jG*Jfb!nS=-CkzyhMXe!{k&PSgGPUVwxp6B1*Orx%&b{Xl-5
z0d0G2wH#|(59GJKbe%!ZPwa=1(CT8+Z#P<Wr==|S8 at 1rpWgxrDMmpgGN^Ih2UYsGz
zBQn4I1zbnv-l4hk{uEuuG3|slMyiA5gw-FUsdv;8w_v42Fb~ee`F8V-#pr`FCp`iQ
zG~x}~jI5Oj&1*s1dryJ3a6cuFk(B}oWvW`95s1&tzitPa-FdSZS#T>P+o{!C3rc%n
zf0&7tqK`7$`@nBYXkPEOV5`D9=+Q6}E9sbQ5PeN-)t7fV|LChM3Y7{YDIk^iv4ZPG
zP0EA$myctW7)FVaj{x~uhT5j(cof!%B&>zJE#>w6&o_a#EUCJxybdL*MoK(GwgP$W
zA83J^Q>C5Wyn74lr;trpKxG_amCTr|7D#AYp<a<Hi;*Y~N;0{AnR?U-^63SMN=kl1
z-p{RrU|YZC+H&?H3Hzu}b1Nmn*TE{8zmvwE*r<3?l`vuw(;t$3{m<)|@%5@)+Y6G_
z0ttu}B)TOdDya_ at C11C?UIJ|vDd;t6r$_>l_j$Km24qcv#wR<Z%N}hlJxOJ94zKz?
zK_;|K^AqGD1-qq{=t!+CH?S7sK8iiDwe5!(1;IAx*DW%MIhw1+F}+_Pp%1dTKwd}t
z81-l+TaZ19MD!@zDH4_VgRJW5e&#=Q1}*R#aSwsWwd&8&bv!eNwav6q5}v1;6U%G_
z(xfLXaRXoOA+7Q4Qoae=KHm-1s1n1CWvCCnG$(a2-Yt<hWGG)vtTS~kxenXU at u%@@
zwA`XJQ?yROd1{A;i51Iq3nU1SEPl$Y7m4Iinu*_7fffwa(=z$id(@-WpcxaIqi0{G
z#Lx$00$*!(8t0H~(mSv8;<-?cMh8k(3nc6=m4e0y&9~qDg07=!kReUxx75rU7*K6e
zDCgx0ZZCS4S}-I`DB!pD<D0M_SVK9fPTS_2EO&U{StSuX8-;a{=%j3GQkAqv3 at VeQ
z-U0Fekckf{DHeHmSs at aQ=xMp;+D~JrsN at pevi<xG)^{9V-YJrR)D!1Vd*;-=-M>d5
z0ntoOAbZ>2FXCBJ=I4(hk}Szrb*Z+IggwN_B`jdtvYsRFhjmMdz-iXLiW7?E7ZSE1
z$%RcM_5pO|_Ah^eRd2Y_gmRXxlbQ~;M7a}$Gi)Qys>rs~xqX)*tMpyvd}#KuCae0?
zx$pEx#3A`S#FT4$ar3hvlP9)4#I$XM9Nl;lh(^kd8Y3Vx^9X1QGttmu3wnTf8L*92
zy&!YcrB<Uy7a-V2fh+~`dWKest#O&v648uoOx6Oq*`lQET8VWiiKi!lyi5JYBG+V{
zf|0lyo2(X6Gq<Ox4AugWb>QosIrN*>XvpiJj75Z<t`tZ-^YNI@{0+TRP&wHE<X>q@
z{IVI7^<o~VBwwpb>%<vCd|PFtPaqEQ+<dHUGmvp=HJj4-e$GFvAaQFADG!iDb7G?)
zWfdo;uglsVpQIkee$9Pwz6lnDHzPf|N{Hl at 3}$a(u)+vr{P}mLFbbBMmontS1H<Tp
zvRjor%1Ac6w&f(hA&Jj9ZgouXKF58)v`Jaj3*<AHJ7tGwq9Ty+EXmqcDH9oCcTHhG
zCx%(Hy_{?TC1KUmc~r3aFLzi4*N3F+ogIOE3r}ZNmt|(Zw?KTNIX?B>P1n%ZB~O?3
zgCx8ImJ- at 7e*GHtTeKU=Y9wJ+S$<Vo=VJQ~=1$(o$=WE1Z^%4ym->6 at I(TnvvXhAs
zhv+8nqmVnZCiW1V#h_b01l{t}o6rJ1y0(dRdaj at 5XqfSFmC#=GRxc7&)1_LN{XqtI
z+9<~L1J!uxi<mopwj^6Ub9MS&0@^N|rWTMKyagQN6?}0vLw6c9_!->!t%j0s4oj1R
z;I}f(5aDk2VG}-`AlXcAI{Z#cPfeU*HB#`(jL_Q$ognRg)#h`^8gV`##S))K>7D6O
zob2=*&#HA&9*A?|I#?$$K{lBWQs;k%J+WA;MPxXhdv~aJq6fK<(A*h`N#zYUdMu1(
zgvhZIL)ZDe1a1ZRA`{>A1n<1NhfeFeqxOc{?gMR`S+A<Prfk~)Jj^=g9{Mge!ekWp
z^{L3V=uT@`jKK8dz6Dmx^A5}*t^QMN^3EAjmCSr4jkN&U{_}(8y`S)Cy!4$D;uGhC
z>+b7Ywqc9X^{0EE-4*;28oEDvt<y95$9p at G9ossQfj2vmPx#Vf?A?6_$G$Lmd+g8w
zrK@?=8fXNMjgRg$$I4^sSP<kU_U){W6?JuNG}t at d2#&zty@|?GWh1-G96NHrJmef6
zsaZ#AI~x=GKIcr14(x*eDe1eODL$c%H)?f|-*?D)vR-qZF`qbmz#MN>L;0QlxHni2
ayvfm{=98vw4b*GaWIcGSAO2^|+WT+&of%;O




More information about the chirp_devel mailing list