[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