|
# Based on the work by Gil Kloepfer KI5BPK
|
|
# https://www.kloepfer.org/ft991a/
|
|
MEM_FORMAT = """
|
|
struct mem_struct {
|
|
u8 mode; // 0=LSB 1=USB 2=CW-USB 3=CW-LSB 4=AM 5=FM 6=RTTY-LSB 7=RTTY-USB 8=DATA-LSB 9=DATA-USB A=DATA-FM B=C4FM
|
|
u8 skip:1,
|
|
unused0:1,
|
|
clarifier_enabled:1,
|
|
clarifier_rx:1,
|
|
clarifier_tx:1,
|
|
tuner_on:1,
|
|
unused1:1,
|
|
locked:1;
|
|
u8 repeater_modified:1, // 0=No, 1=Yes
|
|
is_duplex:1, // 0=No, 1=Yes
|
|
unused2:2,
|
|
duplex:2, // -=0 SIMP=1 +=2
|
|
nb_on:1,
|
|
unused3:1;
|
|
u8 tuning_step:1, // 0=5Hz;*1=10Hz
|
|
unused4:1,
|
|
tmode:3, // 0=OFF, 1=ENC, 2=CTCSS 3=D.ENC 4=DCS
|
|
unused5:2,
|
|
att:1;
|
|
u8 unused6:2,
|
|
is_hf_narrow:1, //*W 2400=1;N 1500=0
|
|
unknown0:1,
|
|
is_fm_narrow:1, // *W 16k=0; N 9k=1
|
|
unused7:3;
|
|
u8 unused8:6,
|
|
ipo:2; // IPO=0,AMP1=2,AMP2=3
|
|
u8 unused9:3,
|
|
dnr_on:1,
|
|
dnr_level:4; // 1-15
|
|
u8 unknown1;
|
|
u8 unknown2;
|
|
u8 split; // 0x53 (s) split, 0x00 not split
|
|
u8 notch_on:1,
|
|
contour_on:1,
|
|
unused10:3,
|
|
unknown3:1,
|
|
bk_in_on:1,
|
|
unused11:1;
|
|
u8 dnf_on:1,
|
|
agc_on:1,
|
|
agc:2, // 0=AUTO;1=FAST;2=MID;3=SLOW
|
|
unused12:4;
|
|
u16 contour_freq; // (H..L) x 10 Hz default=300 (0x001E) range 10->3200 Hz
|
|
u16 notch_freq; // (H..L) x 10 Hz 2 bytes Default: 1500 (0x0096) range 10->3200 Hz
|
|
u8 unknown;
|
|
u8 width_code; // see CAT table for SH command
|
|
u16 if_shift; // freq (H..L/2sCompl) 2 bytes Default: 0 range: -1200 -> 1200 Hz step 20 Hz
|
|
u8 unused13:2,
|
|
apf_on:1,
|
|
unused14:1,
|
|
ch_dial:2,
|
|
unused15:1,
|
|
moni_on:1;
|
|
u8 weird_filler[49];
|
|
u8 tone; // from CAT tone chart table 1
|
|
u8 dcs; // from CAT tone chart
|
|
u8 tx_ctcss; // from CAT tone chart table 1
|
|
u8 rx_dcs; // from CAT tone chart table 1
|
|
u16 clarifier_freq;
|
|
u32 freq; // Frequency in Hz (H..L)
|
|
u32 offset; // Frequency in Hz (H..L)
|
|
char name[12];
|
|
};
|
|
|
|
struct keyer_memory {
|
|
u8 mess_length;
|
|
u8 unused; // 0x00
|
|
char message[50];
|
|
};
|
|
|
|
struct dgid_list {
|
|
u8 tx;
|
|
u8 rx;
|
|
char tag[8];
|
|
};
|
|
|
|
#seekto 0x0125;
|
|
struct {
|
|
u8 tuning_mode:3, // Mem=2,MT=3,VFO-A=4
|
|
unused1:5;
|
|
u8 clarifier:2, // Off=0, RX=3
|
|
unused2:4,
|
|
current_band:2; // 0=HF, 1=50MHz, 2=VHF, 3=UHF
|
|
u8 fast:1, // On=1 Off=0
|
|
unused3:1,
|
|
lock:1, // On=1 Off=0
|
|
unused4:5;
|
|
u8 unused5:5,
|
|
proc:1, // *Off=0, On=1 (level in 0x016F)
|
|
split:1, // *Off=0, On=1
|
|
mic_eq:1; // *Off=0, On=1
|
|
u8 vox:1, // *Off=0, On=1
|
|
keyer:1, // *Off=0, On=1
|
|
ununsed6:4,
|
|
ars_144:1, // Off=0, *On=1
|
|
ars_430:1; // Off=0, *On=1
|
|
u8 disp_mode:3, // M-LIST=4, BAND=2, MODE=1, Waterfall=0
|
|
unused7:5;
|
|
u8 menu_num; // Menu number (-1) selected with MULTI knob (recall with MENU)
|
|
u8 menu_line_selected; // Menu display line selected w/MULTI (0=top, 1=middle, 2=bottom)
|
|
u8 unknown1;
|
|
u8 menu_num_cs; // Menu number (-1) programmed to C.S. (Custom Switch) button
|
|
u8 band_stack_b:4, // Band stack ID of VFO-B (using A=B)
|
|
band_stack_a:4; // Band stack ID of VFO-A
|
|
u8 unknown2;
|
|
u8 band_stack_pos_7:2, // 7.0 Band/Band stack stack position (see note 5)
|
|
band_stack_pos_5:2, // 5.0 Band/Band stack stack position (see note 5)
|
|
band_stack_pos_35:2, // 3.5 Band/Band stack stack position (see note 5)
|
|
band_stack_pos_18:2; // 1.8 Band/Band stack stack position (see note 5)
|
|
u8 band_stack_pos_21:2, // 21 Band/Band stack stack position (see note 5)
|
|
band_stack_pos_18:2, // 18 Band/Band stack stack position (see note 5)
|
|
band_stack_pos_14:2, // 14 Band/Band stack stack position (see note 5)
|
|
band_stack_pos_10:2; // 10 Band/Band stack stack position (see note 5)
|
|
u8 band_stack_pos_air:2, // Air Band/Band stack stack position (see note 5)
|
|
band_stack_pos_50:2, // 50 Band/Band stack stack position (see note 5)
|
|
band_stack_pos_28:2, // 28 Band/Band stack stack position (see note 5)
|
|
band_stack_pos_24:2; // 24 Band/Band stack stack position (see note 5)
|
|
u8 band_stack_pos_gen:2, // GEN Band/Band stack stack position (see note 5)
|
|
band_stack_pos_mw:2, // MW Band/Band stack stack position (see note 5)
|
|
band_stack_pos_430:2, // 430 Band/Band stack stack position (see note 5)
|
|
band_stack_pos_144:2; // 144 Band/Band stack stack position (see note 5)
|
|
u8 unknown3[7];
|
|
u8 moni_level; // MONI level (default=50)
|
|
u8 pitch_level; // (key) PITCH level (Hz) 300+(val)*10, default=30, 0->75
|
|
char callsign[10]; // Callsign (10 characters, padded with ASCII blank)
|
|
u8 unknown4;
|
|
u8 multi_knob_vfoa; // (VFO-A) MULTI knob controlling button (see note 6)
|
|
u8 multi_knob_5mem; // (5MHz0-Mem) MULTI knob controlling button (see note 6)
|
|
u8 unknown5[3];
|
|
u8 multi_knob_mem_mt; // (MEM/MT) MULTI knob controlling button (see note 6)
|
|
u8 multi_knob_mem_c4fm; // (MEM/C4FM) MULTI knob controlling button (see note 6)
|
|
u8 unknown6;
|
|
u8 c4fm_ams:1, // C4FM AMS *0=Off, 1=On
|
|
c4fm_dig:1, // C4FM DIGITAL mode *0=DN, 1=VW
|
|
unused8:6;
|
|
u8 unknown7[6];
|
|
u8 contest_num; // Menu 017 (CONTEST NUMBER) - Updated only when unit powered off, will change if operating CW in contest mode
|
|
u8 unused9:5,
|
|
scope_mode:1, // Scope Mode: 0=One-shot, 1=Continuous (SWEEP)
|
|
unused:2;
|
|
u8 power_hf_ssb; // RF Power HF : USB+LSB
|
|
u8 power_hf_am; // RF Power HF : AM
|
|
u8 power_hf_dig; // RF Power HF : CW+RTTY+DATA
|
|
u8 power_50_ssb; // RF Power 50 MHz : USB+LSB
|
|
u8 power_50_am; // RF Power 50 MHz : AM
|
|
u8 power_50_dig; // RF Power 50 MHz : CW+RTTY+DATA
|
|
u8 power_vhf_ssb; // RF Power VHF : USB+LSB
|
|
u8 power_vhf_am; // RF Power VHF : AM
|
|
u8 power_vhf_fm; // RF Power VHF : FM
|
|
u8 power_uhf_ssb; // RF Power UHF : USB+LSB
|
|
u8 power_uhf_am; // RF Power UHF : AM
|
|
u8 power_uhf_fm; // RF Power UHF : FM
|
|
u8 unknown8;
|
|
u8 apf_level; // APF level [SV] (val) * 10Hz, default=0
|
|
u8 unknown9[5];
|
|
u8 cur_cw_speed; // Current CW speed (wpm)
|
|
u8 unknown10;
|
|
u8 speech_proc_level; // PROC (Speech Processor) level (0-100), *50 (on/off in 0128)
|
|
u16 unknown11;
|
|
u8 squelch; // Squelch (SQL) 0-100 (TODO: XXX SQL for other modes???)
|
|
u8 unknown12;
|
|
u8 meter_mode; // Meter PO=0,ALC=1,SWR=2,COMP=3,IDD=4,VDD=5
|
|
u8 unknown13[7];
|
|
u8 mic_gain; // "MIC GAIN" 0-100 (TODO: different on different modes)
|
|
u8 unknown14;
|
|
u8 ssb_p_dt_gain; // (LSB+USB/P) DT GAIN value (0-100) *50
|
|
u8 unknown15;
|
|
u8 ssb_d_dt_gain; // (LSB+USB/D) DT GAIN value (0-100) *50
|
|
u8 unknown16[8];
|
|
u8 phone_ssb_bot_func_1; // (Phone/U+L) Bottom function button keycodes 1 (see note 6)
|
|
u8 phone_ssb_bot_func_2; // (Phone/U+L) Bottom function button keycodes 2 (see note 6)
|
|
u8 phone_ssb_bot_func_3; // (Phone/U+L) Bottom function button keycodes 3 (see note 6)
|
|
u8 phone_ssb_bot_func_4; // (Phone/U+L) Bottom function button keycodes 4 (see note 6)
|
|
u8 cw_ssb_bot_func_1; // (CW/U+L) Bottom function button keycodes 1 (see note 6)
|
|
u8 cw_ssb_bot_func_2; // (CW/U+L) Bottom function button keycodes 2 (see note 6)
|
|
u8 cw_ssb_bot_func_3; // (CW/U+L) Bottom function button keycodes 3 (see note 6)
|
|
u8 cw_ssb_bot_func_4; // (CW/U+L) Bottom function button keycodes 4 (see note 6)
|
|
u8 rtty_ssb_bot_func_1; // (RTTY/U+L) Bottom function button keycodes 1 (see note 6)
|
|
u8 rtty_ssb_bot_func_2; // (RTTY/U+L) Bottom function button keycodes 2 (see note 6)
|
|
u8 rtty_ssb_bot_func_3; // (RTTY/U+L) Bottom function button keycodes 3 (see note 6)
|
|
u8 rtty_ssb_bot_func_4; // (RTTY/U+L) Bottom function button keycodes 4 (see note 6)
|
|
u8 data_ssb_bot_func_1; // (DATA/U+L) Bottom function button keycodes 1 (see note 6)
|
|
u8 data_ssb_bot_func_2; // (DATA/U+L) Bottom function button keycodes 2 (see note 6)
|
|
u8 data_ssb_bot_func_3; // (DATA/U+L) Bottom function button keycodes 3 (see note 6)
|
|
u8 data_ssb_bot_func_4; // (DATA/U+L) Bottom function button keycodes 4 (see note 6)
|
|
u8 am_bot_func_1; // (AM/U+L) Bottom function button keycodes 1 (see note 6)
|
|
u8 am_bot_func_2; // (AM/U+L) Bottom function button keycodes 2 (see note 6)
|
|
u8 am_bot_func_3; // (AM/U+L) Bottom function button keycodes 3 (see note 6)
|
|
u8 am_bot_func_4; // (AM/U+L) Bottom function button keycodes 4 (see note 6)
|
|
u8 fm_bot_func_1; // (FM/U+L) Bottom function button keycodes 1 (see note 6)
|
|
u8 fm_bot_func_2; // (FM/U+L) Bottom function button keycodes 2 (see note 6)
|
|
u8 fm_bot_func_3; // (FM/U+L) Bottom function button keycodes 3 (see note 6)
|
|
u8 fm_bot_func_4; // (FM/U+L) Bottom function button keycodes 4 (see note 6)
|
|
u8 c4fm_bot_func_1; // (C4FM/U+L) Bottom function button keycodes 1 (see note 6)
|
|
u8 c4fm_bot_func_2; // (C4FM/U+L) Bottom function button keycodes 2 (see note 6)
|
|
u8 c4fm_bot_func_3; // (C4FM/U+L) Bottom function button keycodes 3 (see note 6)
|
|
u8 c4fm_bot_func_4; // (C4FM/U+L) Bottom function button keycodes 4 (see note 6)
|
|
u8 cw_ssb_func_page:4, // (CW-U+L) Function Page Number (see note 6)
|
|
phone_ssb_func_page:4; // (Phone U+L) Function Page Number (see note 6)
|
|
u8 data_ssb_func_page:4, // (DATA-U+L) Function Page Number (see note 6)
|
|
rtty_ssb_func_page:4; // (RTTY-U+L) Function Page Number (see note 6)
|
|
u8 fm_func_page:4, // (all FM) Function Page Number (see note 6)
|
|
am_func_page:4; // (AM) Function Page Number (see note 6)
|
|
u8 unk:4,
|
|
c4fm_func_page:4; // (C4FM) Function Page Number (see note 6)
|
|
u8 unknown17;
|
|
u8 time_display:1, // Time Display: *0=UTC, 1=Local
|
|
daylight_savings:1, // Daylight Savings (DST): *0=Off, 1=On
|
|
date_format:1, // *MM/DD/YYYY=0 YYYY/MM/DD=1
|
|
latitude_dir:1, // Latitude: 0=N, 1=S (see note 2)
|
|
longitude_dir:1, // Longitude: 0=E, 1=W (see note 2)
|
|
unknown18:3;
|
|
u8 lat_deg; // Latitude = DD MM ss s0 ==> DD MM.sss
|
|
u8 lat_min; // Note that seconds are BCD encoded as decimal seconds (ie. a number after
|
|
u8 lat_sec; // the decimal point, or n*60 to get actual seconds), for example:
|
|
u8 lat_sec0; // 01 23'53" would be encoded as 01 23 88 30 Because 53/60 = 0.883
|
|
u8 lon_deg0; // Longitude = 0D DD MM ss s0 ==> 0DDD MM.sss
|
|
u8 lon_deg;
|
|
u8 lon_min;
|
|
u8 lon_sec;
|
|
u8 lon_sec0;
|
|
#seekto 0x01C0;
|
|
u8 qsk_delay_tm:2, // Menu 061 (QSK DELAY TIME) *15msec=0, 20msec=1, 25msec=2, 30msec=3
|
|
unknown19:6;
|
|
u8 unk1c1;
|
|
u8 keyer_type:4, // Menu 012 (KEYER TYPE) OFF=0 BUG=1 ELEKEY-A=2 *ELEKEY-B=3 ELEKEY-Y=4 ACS=5
|
|
unknown20:4;
|
|
u8 cw_auto_mode:2, // Menu 055 (CW AUTO MODE) *OFF=0 50M=1 ON=2
|
|
keyer_dot_dash:1, // Menu 013 (KEYER DOT/DASH) *NOR=0 REV=1
|
|
unknown21:1,
|
|
cw_wave_shape:2, // Menu 058 (CW WAVE SHAPE) 2msec=1, *4msec=2
|
|
unknown22:2;
|
|
u8 cw_freq_disp:1, // Menu 059 (CW FREQ DISPLAY) DIRECT FREQ=0, *PITCH OFFSE=1
|
|
cw_bk_in_type:1, // *SEMI=0, FULL=1
|
|
unknown23:1,
|
|
cw_wieght:5; // 2.5->4.5; 2.5 + (val) * 0.1 (val) => 0-20
|
|
u16 agc_fast_delay; // Menu 001 (AGC FAST DELAY) [msec] 20->4000, step 20, default=300
|
|
u16 unknown24; // <unknown> 0x00 0x14
|
|
u16 agc_mid_delay; // [msec] 20->4000, step 20, default=700
|
|
u16 unknown25; // <unknown> 0x00 0x14
|
|
u16 agc_slow_delay; // Menu 003 (AGC SLOW DELAY) [msec] 20->4000, step 20, default=3000
|
|
u16 unknown26; // <unknown> 0x00 0x14
|
|
u8 dvs_rx_out_level; // Menu 010 (DVS RX OUT LEVEL) 0->100, default=50
|
|
u8 dvs_tx_out_level; // Menu 011 (DVS TX OUT LEVEL) 0->100, default=50
|
|
u8 unknown27:3,
|
|
cat_rts:1, // Menu 033 (CAT RTS) DISABLE=0 *ENABLE=1
|
|
unknown28:2,
|
|
cat_tot:2; // Menu 032 (CAT TOT) *10msec=0 100msec=1 1000msec=2 3000msec=3
|
|
u8 am_data_gain; // Menu 049 (AM DATA GAIN) 0-100, default=50
|
|
u8 clar_mode_select; // Menu 040 (CLAR MODE SELECT) *RX=00, TX=01, TRX=02
|
|
u8 rtty_out_level; // Menu 099 (RTTY OUT LEVEL) 0-100, default=50
|
|
u8 ssb_out_level; // Menu 107 (SSB OUT LEVEL) 0-100, default=50
|
|
u8 cw_out_level; // Menu 054 (CW OUT LEVEL) 0-100, default=50
|
|
u8 ref_freq_adj; // Menu 039 (REF FREQ ADJ) [SV] -25->+25, default=0
|
|
u8 data_out_level; // Menu 073 (DATA OUT LEVEL) 0-100, default=50
|
|
u8 am_out_level; // Menu 046 (AM OUT LEVEL) 0-100, default=50
|
|
u8 fm_out_level; // Menu 075 (FM OUT LEVEL) 0-100, default=50
|
|
u8 unknown99;
|
|
u8 unknown29:3,
|
|
if_notch_width:1, // Menu 114 (IF NOTCH WIDTH) NARROW=0b0, *WIDE=0b1
|
|
unknown30:4;
|
|
u16 unknown31;
|
|
u8 dimmer_led:1, // Menu 007 (DIMMER LED) 1=0 *2=1
|
|
unknown32:3,
|
|
dimmer_tft:4; // Menu 008 (DIMMER TFT) 0-15 (default=8)
|
|
u8 display_color:4, // Menu 006 (DISPLAY COLOR) *BLUE=0 GRAY=1 GREEN=2 ORANGE=3 PURPLE=4 RED=5 SKY BLUE=6
|
|
home_function:1, // *SCOPE=0 FUNCTION=1
|
|
bar_mtr_peak_hold:3; // Menu 009 (BAR MTR PEAK HOLD) *OFF=0, 0.5sec=1, 1.0sec=2, 2.0sec=3
|
|
u8 fm_pkt_tx_gain; // Menu 078 (FM PKT TX GAIN) 0-100, default=50
|
|
u8 dcs_polarity:2, // Menu 086 (DCS POLARITY) *Tn-Rn=0, Tn-Riv=1, Tiv-Rn=2, Tiv-Riv=3
|
|
unknown33:3,
|
|
ssb_tx_bpf:3; // Menu 110 (SSB TX BPF) 100-3000=0, 100-2900=1, 200-2800=2, *300-2700=3, 400-2600=4
|
|
u8 fm_pkt_mode:1, // Menu 079 (FM PKT MODE) *1200=0, 9600=1
|
|
unknown34:3,
|
|
data_port_select:1, // Menu 072 (DATA PORT SELECT) *DATA=0, USB=1
|
|
fm_pkt_port_select:1, // Menu 077 (FM PKT PORT SELECT) *DATA=0, USB=1
|
|
am_port_select:1, // Menu 048 (AM PORT SELECT) *DATA=0, USB=1
|
|
ssb_port_select:1; // Menu 109 (SSB PORT SELECT) *DATA=0, USB=1
|
|
u8 unknown35:2,
|
|
am_mic_select:1, // Menu 045 (AM MIC SELECT) *MIC=0, REAR=1
|
|
unknown36:1,
|
|
data_in_select:1, // Menu 070 (DATA IN SELECT) MIC=0, *REAR=1
|
|
fm_mic_select:1, // Menu 074 (FM MIC SELECT) *MIC=0, REAR=1
|
|
unknown37:1,
|
|
ssb_mic_select:1; // Menu 106 (SSB MIC SELECT) *MIC=0, REAR=1
|
|
u16 rpt_shift_28; // Menu 080 (RPT SHIFT 28MHz) 0-1000KHz, def=100KHz, step 10
|
|
u16 rpt_shift_50; // Menu 081 (RPT SHIFT 50MHz) 0-4000KHz, def=1000KHz, step 10
|
|
u8 unknown38;
|
|
u8 number_style; // Menu 016 (NUMBER STYLE) *1290=0 AUN0=1 AUNT=2 A2N0=3 A2NT=4 12N0=5 12NT=6
|
|
u8 unknown39;
|
|
u8 quick_split_freq; // Menu 035 (QUICK SPLIT FREQ) [SV] -20->+20 (KHz), default=5
|
|
u8 keyer_memory_mode; // Menu 035 (QUICK SPLIT FREQ) [SV] -20->+20 (KHz), default=5
|
|
u8 unknown40:1,
|
|
mem_group:1, // Menu 034 (MEM GROUP) *DISABLE=0, ENABLE=1
|
|
unknown41:3,
|
|
emergency_freq_tx:1, // Menu 149 (EMERGENCY FREQ TX) *DISABLE=0, ENABLE=1
|
|
cat_rate:2; // Menu 031 (CAT RATE) *4800bps=0, 9600bps=1, 19200bps=2, 38400bps=3
|
|
u8 tx_total; // Menu 036 (TX TOT) minutes *OFF=0, 1-30
|
|
u8 unknown42:4,
|
|
232c_tot:2, // Menu 030 (232C TOT) *10msec=0, 100msec=1, 1000msec=2, 3000msec=3
|
|
232c_rate:2; // Menu 029 (232C RATE) *4800bps=0, 9600bps=1, 19200bps=2, 38400bps=3
|
|
u8 unknown43:4,
|
|
fm_pkt_ptt_select:2, // Menu 076 (FM PKT PTT SELECT) *DAKY=0, RTS=1, DTR=2
|
|
am_ptt_select:2; // Menu 047 (AM PTT SELECT) *DAKY=0, RTS=1, DTR=2
|
|
u8 data_ptt_select:2, // Menu 071 (DATA PTT SELECT) *DAKY=0, RTS=1, DTR=2
|
|
rtty_ptt_select:2, // Menu 096 (RTTY SHIFT PORT) *SHIFT=0, DTR=1, RTS=2
|
|
pc_keying:2, // Menu 060 (PC KEYING) *OFF=0, DAKY=1, RTS=2, DTR=3
|
|
ssb_ptt_select:2; // Menu 108 (SSB PTT SELECT) *DAKY=0, RTS=1, DTR=2
|
|
u16 unknown44;
|
|
u8 unknown45:1,
|
|
mic_scan_resume:1, // Menu 038 (MIC SCAN RESUME) PAUSE=0, *TIME=1
|
|
mic_scan:1, // Menu 037 (MIC SCAN) DISABLE=0, *ENABLE=1
|
|
rtty_mark_freq:1, // Menu 101 (RTTY MARK FREQ) 1275Hz=0, *2125Hz=1
|
|
rtty_polarity_rx:1, // Menu 097 (RTTY POLARITY-RX) *NOR=0, REV=1
|
|
rtty_polarity_tx:1, // Menu 098 (RTTY POLARITY-TX) *NOR=0, REV=1
|
|
rtty_shift_freq:2; // Menu 100 (RTTY SHIFT FREQ) *170Hz=0, 200Hz=1, 425Hz=2, 850Hz=3
|
|
u8 unknown46;
|
|
u16 rpt_shift_144; // Menu 082 (RPT SHIFT 144MHz) 0-4000KHz, def=600KHz, step 10
|
|
u16 rpt_shift_430; // Menu 083 (RPT SHIFT 430MHz) 0-4000KHz, def=5000KHz, step 10
|
|
u8 time_zone_dir; // Menu 027 (TIME ZONE) 01FD: Positive=0, Negative=1
|
|
u8 time_zone_hours; // Menu 027 (TIME ZONE) 01FE: Hours
|
|
u8 time_zone_minutes; // Menu 027 (TIME ZONE) 01FF: Minutes(0-30)
|
|
u8 gm_display:1, // Menu 088 (GM DISPLAY) *DISTANCE=0, STRENGTH=1
|
|
distance:1, // Menu 089 (DISTANCE) km=0, *mile=1
|
|
standby_beep:1, // Menu 091 (STANDBY BEEP) OFF=0, *ON=1
|
|
unknown47:2,
|
|
ams_tx_mode:3; // Menu 090 (AMS TX MODE) *AUTO=0, MANUAL=1, DN=2, VW=3, ANALOG=4
|
|
u8 unknown48; // 0x01
|
|
u8 unknown49:1,
|
|
vox_select:1, // Menu 142 (VOX SELECT) *MIC=0, DATA=1
|
|
unknown50:6;
|
|
u16 data_vox_delay; // Menu 147 (DATA VOX DELAY) 30msec->3000msec, step 10, default=100msec
|
|
u8 data_vox_gain; // Menu 146 (DATA VOX GAIN) 0->100, default=50
|
|
u8 anti_dvox_gain; // Menu 148 (ANTI DVOX GAIN) 0->100, default=0
|
|
u8 contour_width; // Menu 113 (CONTOUR WIDTH) 1->11, default=10
|
|
u8 prmtrc_eq1_bw:4, // Menu 121 (PRMTRC EQ1 BWTH) 1->10, default=10
|
|
prmtrc_eq1_freq:4; // Menu 119 (PRMTRC EQ1 FREQ) Hz *OFF=0, 100=1, 200=2, 300=3, 400=4, 500=5, 600=6, 700=7
|
|
u8 prmtrc_eq2_bw:4, // Menu 124 (PRMTRC EQ2 BWTH) 1->10, default=10
|
|
prmtrc_eq2_freq:4; // Menu 122 (PRMTRC EQ2 FREQ) Hz *OFF=0, 700=1, 800=2, 900=3, 1000=4, 1100=5, 1200=6, 1300=7, 1400=8, 1500=9
|
|
u8 prmtrc_eq3_bw:4, // Menu 127 (PRMTRC EQ3 BWTH) 1->10, default=10
|
|
unknown51:4;
|
|
u8 contour_level; // Menu 112 (CONTOUR LEVEL) [SV] -40->+20, def=-15
|
|
u8 unknown52; // 0x00
|
|
u8 prmtrc_eq1_level; // Menu 120 (PRMTRC EQ1 LEVEL) [SV] -20->10, def=5
|
|
u8 prmtrc_eq2_level; // Menu 123 (PRMTRC EQ2 LEVEL) [SV] -20->10, def=5
|
|
u8 prmtrc_eq3_level; // Menu 126 (PRMTRC EQ3 LEVEL) [SV] -20->10, def=5
|
|
u8 p_prmtrc_eq1_bw:4, // Menu 130 (P-PRMTRC EQ1 BWTH) 1->10, default=2
|
|
p_prmtrc_eq1_freq:4; // Menu 128 (P-PRMTRC EQ1 FREQ) OFF=0, n * 100 Hz, def=2
|
|
u8 p_prmtrc_eq2_bw:4, // Menu 133 (P-PRMTRC EQ2 BWTH) 1->10, default=1
|
|
p_prmtrc_eq2_freq:4; // Menu 131 (P-PRMTRC EQ2 FREQ) OFF=0, Hz 700=1, *800=2, 900=3, 1000=4, 1100=5, 1200=6, 1300=7, 1400=8, 1500=9
|
|
u8 p_prmtrc_eq3_bw:4, // Menu 136 (P-PRMTRC EQ3 BWTH) 1->10, default=1
|
|
unknown51:4;
|
|
u8 p_prmtrc_eq1_level; // Menu 129 (P-PRMTRC EQ1 LEVEL) [SV] -20->10, def=0
|
|
u8 p_prmtrc_eq2_level; // Menu 132 (P-PRMTRC EQ2 LEVEL) [SV] -20->10, def=0
|
|
u8 p_prmtrc_eq3_level; // Menu 135 (P-PRMTRC EQ3 LEVEL) [SV] -20->10, def=0
|
|
u8 beep_level; // Menu 026 (BEEP LEVEL) 0->100, default=50
|
|
u8 beacon_interval; // Menu 015 (BEACON INTERVAL) sec *OFF=0, 1->240(hex:01->F0) 270->690 step:30(hex:F1->FF)
|
|
u8 unknown53:4,
|
|
prmtrc_eq3_freq:4; // Menu 125 (PRMTRC EQ3 FREQ) *OFF=0, 1500->3200 Hz 1400 + (val) * 100
|
|
u8 unknown54:4,
|
|
p_prmtrc_eq3_freq:4; // Menu 134 (P-PRMTRC EQ3 FREQ) OFF=0, 1500->3200 Hz 1400 + (val) * 100, default=2100 Hz (0x07)
|
|
u8 nb_width:2, // Menu 023 (NB WIDTH) 1msec=0 *3msec=1 10msec=2
|
|
nb_rejection:2, // Menu 024 (NB REJECTION) 10db=0 *30db=1 50db=2
|
|
nb_level:4; // Menu 025 (NB LEVEL) Value 0-10 (0x0-0xA) default=5
|
|
u32 unknown55; // 0x00 0x00 0x00 0x00
|
|
u8 hf_tx_max_power; // Menu 137 (HF TX MAX POWER) 5->100 W, default=100
|
|
u8 50m_tx_max_power; // Menu 138 (50M TX MAX POWER) 5->100 W, default=100
|
|
u8 144m_tx_max_power; // Menu 138 (50M TX MAX POWER) 5->100 W, default=100
|
|
u8 430m_tx_max_power; // Menu 140 (430M TX MAX POWER) 5->50 W, default=50
|
|
#seekto 0x022D;
|
|
u8 wires_dg_id; // Menu 153 (WIRES DG-ID) *AUTO=0, DG-ID 1->99
|
|
#seekto 0x0249;
|
|
u8 my_call_identification; // Menu 005 (MY CALL INDICATION) 0->5 sec, default=1
|
|
#seekto 0x0251;
|
|
u16 cw_bk_in_delay; // Menu 057 (CW BK-IN DELAY) 30msec->3000msec step 10, default=200
|
|
#seekto 0x0256;
|
|
u8 anti_vox_gain; // Menu 145 (ANTI VOX GAIN) 0->100, default=50
|
|
u16 vox_delay; // Menu 144 (VOX DELAY) 30->3000msec, step 10, default=500
|
|
u8 vox_gain; // Menu 143 (VOX GAIN) 0->100, default=50
|
|
u8 scp_desplay_mode:1, // Menu 115 (SCP DISPLAY MODE) *SPECTRUM=0,WATER FALL=1
|
|
unknown56:7;
|
|
u8 gps_232c_select; // Menu 028 (GPS/232C SELECT) *GPS1=0 GPS2=2 RS232C=4
|
|
u8 unknown57:1,
|
|
data_mode:1, // Menu 062 (DATA MODE) *PSK=0, OTHERS=1
|
|
unknown58:2,
|
|
apf_width:2, // Menu 111 (APF WIDTH) NARROW=0, *MEDIUM=1, WIDE=2
|
|
psk_tone:2; // Menu 063 (PSK TONE) *1000Hz=0, 1500Hz=1, 2000Hz=2
|
|
u8 unknown59:4,
|
|
scp_span_freq:4; // Menu 116 (SCP SPAN FREQ) 50KHz=3, *100KHz=4, 200KHz=5, 500KHz=6, 1000KHz=7
|
|
u8 unknown60:4,
|
|
tuner_select:4; // Menu 141 (TUNER SELECT) OFF=0, *INTERNAL=1, EXTERNAL=2, ATAS=3, LAMP=4
|
|
u8 spectrum_color:4, // Menu 117 (SPECTRUM COLOR) *BLUE=0 GRAY=1 GREEN=2 ORANGE=3 PURPLE=4 RED=5 SKY BLUE=6
|
|
waterfall_color:4; // Menu 118 (WATER FALL COLOR) BLUE=0 GRAY=1 GREEN=2 ORANGE=3 PURPLE=4 RED=5 SKY BLUE=6 *MULTI=7
|
|
u8 unk0260;
|
|
u16 other_disp_ssb; // Menu 064 (OTHER DISP (SSB)) [SV] -3000->3000Hz, step 10, default=0Hz
|
|
u16 other_shift_ssb; // Menu 065 (OTHER SHIFT (SSB)) [SV] -3000->3000Hz, step 10, default=0Hz
|
|
u8 unk0265[3];
|
|
u8 am_lcut_slope:1, // Menu 042 (AM LCUT SLOPE) *6dB/oct=0, 18dB/oct=1
|
|
am_lcut_freq:7; // Menu 041 (AM LCUT FREQ) *00=OFF, 100Hz->1000Hz 50 + (val) * 50 (val) => Hex:01->13
|
|
u8 am_hcut_slope:1, // Menu 044 (AM HCUT SLOPE) *6dB/oct=0 18dB/oct=1
|
|
am_hcut_freq:7; // Menu 043 (AM HCUT FREQ) *OFF=0, 700Hz->4000Hz 650 + (val) * 50 (val) => Hex:01->43
|
|
u8 cw_lcut_slope:1, // Menu 051 (CW LCUT SLOPE) 6dB/oct=0, *18dB/oct=1
|
|
cw_lcut_freq:7; // Menu 050 (CW LCUT FREQ) OFF=0, default=250Hz 100Hz->1000Hz 50 + (val) * 50 (val)=>Hex:01->13
|
|
u8 cw_hcut_slope:1, // Menu 053 (CW HCUT SLOPE) 6dB/oct=0, *18dB/oct=1
|
|
cw_hcut_freq:7; // Menu 052 (CW HCUT FREQ) OFF=0, default=1200Hz 700Hz->4000Hz 650 + (val) * 50 (val)=>Hex:01->43
|
|
u16 unknown61; // 0x00 0x00
|
|
u8 data_lcut_slope:1, // Menu 067 (DATA LCUT SLOPE) 6dB/oct=0, *18dB/oct=1
|
|
data_lcut_freq:7; // Menu 066 (DATA LCUT FREQ) OFF=0, default=300Hz 100Hz->1000Hz 50 + (val) * 50 (val)=>Hex:01->13
|
|
u8 data_hcut_slope:1, // Menu 069 (DATA HCUT SLOPE) 6dB/oct=0, *18dB/oct=1
|
|
data_hcut_freq:7; // Menu 068 (DATA HCUT FREQ) OFF=0, default=3000Hz 700Hz->4000Hz 650 + (val) * 50 (val)=>Hex:01->43
|
|
u8 rtty_lcut_slope:1, // Menu 093 (RTTY LCUT SLOPE) 6dB/oct=0, *18dB/oct=1
|
|
rtty_lcut_freq:7; // Menu 092 (RTTY LCUT FREQ) OFF=0, default=300Hz 100Hz->1000Hz 50 + (val) * 50 (val)=>Hex:01->13
|
|
u8 rtty_hcut_slope:1, // Menu 092 (RTTY LCUT FREQ) OFF=0, default=300Hz 100Hz->1000Hz 50 + (val) * 50 (val)=>Hex:01->13
|
|
rtty_hcut_freq:7; // Menu 094 (RTTY HCUT FREQ) 0=OFF, default=3000Hz 700Hz->4000Hz 650 + (val) * 50 (val)=>Hex:01->43
|
|
u8 ssb_lcut_slope:1, // Menu 103 (SSB LCUT SLOPE) *6dB/oct=0, 18dB/oct=1
|
|
ssb_lcut_freq:7; // Menu 102 (SSB LCUT FREQ) OFF=0, default=100Hz 100Hz->1000Hz 50 + (val) * 50 (val)=>Hex:01->13
|
|
u8 ssb_hcut_slope:1, // Menu 105 (SSB HCUT SLOPE) *6dB/oct=0, 18dB/oct=1
|
|
ssb_hcut_freq:7; // Menu 104 (SSB HCUT FREQ) OFF=0, default=3000Hz 700Hz->4000Hz 650 + (val) * 50 (val)=>Hex:01->43
|
|
u32 unknown62; // 0x00 0x00 0x00 0x00
|
|
u8 prt_wires_freq:1, // Menu 150 (PRT/WIRES FREQ) *MANUAL=0, PRESET=1
|
|
search_setup:1, // Menu 152 (SEARCH SETUP) *HISTORY=0, ACTIVITY=1
|
|
unknown63:6;
|
|
u32 preset_freq; // Menu 151 (PRESET FREQUENCY) Hz, default 146550000 Hz
|
|
} settings;
|
|
|
|
#seekto 0x057b;
|
|
struct keyer_memory key_memory[5];
|
|
#seekto 0x0A05;
|
|
struct mem_struct band_stack_memory[96];
|
|
struct mem_struct home[4];
|
|
u8 unknown63:3,
|
|
qmb4_defined:1,
|
|
qmb3_defined:1,
|
|
qmb2_defined:1,
|
|
qmb1_defined:1,
|
|
qmb0_defined:1;
|
|
u8 next_qmb;
|
|
u8 current_qmb;
|
|
struct mem_struct qmb_slots[5];
|
|
struct mem_struct unk_mem[1];
|
|
struct mem_struct mt_mem[1];
|
|
u8 recall_mem_poweron; // Memory # (-1) to recall when powering-on or returning from VFO mode (saved when moving to VFO or powering off)
|
|
u8 visible[16]; // Bitmap of active (not erased) channels
|
|
u8 filled[16]; // Bitmap of memory channels ever used, This is used to determine if default values for a memory channel should be used on "unerase".
|
|
|
|
struct mem_struct memory[131]; // Memory channels / 96 * 131 (not sure where the additional ones are coming from)
|
|
#seekto 0x7B3F;
|
|
struct dgid_list dg_id_list[10];
|
|
#seekto 0x7FEB;
|
|
char radio_id[5]; // Radio ID, ASCII [DO NOT CHANGE] (Read-only in Menu 087 (RADIO ID))
|
|
"""
|