kopia lustrzana https://github.com/Hamlib/Hamlib
				
				
				
			Add separate definitions for FTDX101 to make fixes for filters and modes. Fix many newcat commands for FTDX101 and some other newcat Yaesu rigs.
							rodzic
							
								
									1c379029b3
								
							
						
					
					
						commit
						fea5ed875d
					
				|  | @ -10,7 +10,7 @@ YAESUSRC = ft100.c ft100.h ft747.c ft747.h ft817.c ft817.h ft847.c ft847.h \ | |||
| ## Yaesu radios that use the new Kenwood style CAT commands
 | ||||
| NEWCATSRC = newcat.c newcat.h ft450.c ft450.h ft950.c ft950.h ft991.c ft991.h \
 | ||||
| 	ft2000.c ft2000.h ft9000.c ft9000.h ft5000.c ft5000.h ft1200.c ft1200.h \
 | ||||
| 	ft891.c ft891.h | ||||
| 	ft891.c ft891.h ftdx101.c ftdx101.h | ||||
| 
 | ||||
| noinst_LTLIBRARIES = libhamlib-yaesu.la | ||||
| libhamlib_yaesu_la_SOURCES = $(YAESUSRC) $(NEWCATSRC) yaesu.c yaesu.h | ||||
|  |  | |||
|  | @ -29,20 +29,12 @@ | |||
| #ifndef _FT1200_H | ||||
| #define _FT1200_H 1 | ||||
| 
 | ||||
| #if 0 | ||||
| #define TRUE    1 | ||||
| #define FALSE   0 | ||||
| #define ON      TRUE | ||||
| #define OFF     FALSE | ||||
| #endif | ||||
| 
 | ||||
| #define FT1200_VFO_ALL (RIG_VFO_A|RIG_VFO_B) | ||||
| 
 | ||||
| /* Receiver caps */ | ||||
| 
 | ||||
| #define FT1200_ALL_RX_MODES (RIG_MODE_AM|RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|\ | ||||
| 				RIG_MODE_RTTY|RIG_MODE_RTTYR|\ | ||||
| 		                RIG_MODE_PKTLSB|RIG_MODE_PKTUSB|RIG_MODE_PKTFM) | ||||
|         RIG_MODE_RTTY|RIG_MODE_RTTYR|RIG_MODE_PKTLSB|RIG_MODE_PKTUSB|RIG_MODE_PKTFM|RIG_MODE_FM) | ||||
| 
 | ||||
| #define FT1200_SSB_CW_RX_MODES (RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|\ | ||||
| 		RIG_MODE_RTTY|RIG_MODE_RTTYR|RIG_MODE_PKTLSB|RIG_MODE_PKTUSB) | ||||
|  | @ -51,13 +43,10 @@ | |||
| #define FT1200_CW_RTTY_PKT_RX_MODES (RIG_MODE_RTTY|RIG_MODE_RTTYR|\ | ||||
|         RIG_MODE_PKTUSB|RIG_MODE_PKTLSB|RIG_MODE_CW|RIG_MODE_CWR) | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| /* TRX caps */ | ||||
| 
 | ||||
| #define FT1200_OTHER_TX_MODES (RIG_MODE_CW|RIG_MODE_SSB|RIG_MODE_RTTY| \ | ||||
| 		                RIG_MODE_PKTLSB|RIG_MODE_PKTUSB|RIG_MODE_PKTFM) /* 100 W class */ | ||||
| 		                RIG_MODE_PKTLSB|RIG_MODE_PKTUSB|RIG_MODE_PKTFM|RIG_MODE_FM) /* 100 W class */ | ||||
| #define FT1200_AM_TX_MODES (RIG_MODE_AM)    /* set 25W max */ | ||||
| 
 | ||||
| /* TBC */ | ||||
|  | @ -68,7 +57,8 @@ | |||
|                RIG_LEVEL_KEYSPD|RIG_LEVEL_AF|RIG_LEVEL_AGC|\ | ||||
|                RIG_LEVEL_METER|RIG_LEVEL_BKINDL|RIG_LEVEL_SQL|\ | ||||
|                RIG_LEVEL_VOXGAIN|RIG_LEVEL_VOXDELAY|RIG_LEVEL_COMP|\ | ||||
|                RIG_LEVEL_ANTIVOX|RIG_LEVEL_NR|RIG_LEVEL_NOTCHF) | ||||
|                RIG_LEVEL_ANTIVOX|RIG_LEVEL_NR|RIG_LEVEL_NOTCHF|\ | ||||
|                RIG_LEVEL_MONITOR_GAIN) | ||||
| 
 | ||||
| /* TBC */ | ||||
| #define FT1200_FUNCS (RIG_FUNC_TONE|RIG_FUNC_TSQL|RIG_FUNC_LOCK|\ | ||||
|  |  | |||
|  | @ -381,168 +381,3 @@ const struct rig_caps ftdx3000_caps = | |||
|     .get_channel =        newcat_get_channel, | ||||
| 
 | ||||
| }; | ||||
| 
 | ||||
| const struct rig_caps ftdx101d_caps = | ||||
| { | ||||
|     RIG_MODEL(RIG_MODEL_FTDX101D), | ||||
|     .model_name =         "FT-DX101D", | ||||
|     .mfg_name =           "Yaesu", | ||||
|     .version =            NEWCAT_VER ".5", | ||||
|     .copyright =          "LGPL", | ||||
|     .status =             RIG_STATUS_STABLE, | ||||
|     .rig_type =           RIG_TYPE_TRANSCEIVER, | ||||
|     .ptt_type =           RIG_PTT_RIG, | ||||
|     .dcd_type =           RIG_DCD_NONE, | ||||
|     .port_type =          RIG_PORT_SERIAL, | ||||
|     .serial_rate_min =    4800,         /* Default rate per manual */ | ||||
|     .serial_rate_max =    38400, | ||||
|     .serial_data_bits =   8, | ||||
|     .serial_stop_bits =   1,            /* Assumed since manual makes no mention */ | ||||
|     .serial_parity =      RIG_PARITY_NONE, | ||||
|     .serial_handshake =   RIG_HANDSHAKE_HARDWARE, | ||||
|     .write_delay =        FTDX5000_WRITE_DELAY, | ||||
|     .post_write_delay =   FTDX5000_POST_WRITE_DELAY, | ||||
|     .timeout =            2000, | ||||
|     .retry =              3, | ||||
|     .has_get_func =       FTDX5000_FUNCS, | ||||
|     .has_set_func =       FTDX5000_FUNCS, | ||||
|     .has_get_level =      FTDX5000_LEVELS, | ||||
|     .has_set_level =      RIG_LEVEL_SET(FTDX5000_LEVELS), | ||||
|     .has_get_parm =       RIG_PARM_NONE, | ||||
|     .has_set_parm =       RIG_PARM_NONE, | ||||
|     .level_gran = { | ||||
|         [LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } }, | ||||
|         [LVL_CWPITCH] = { .min = { .i = 300 }, .max = { .i = 1050 }, .step = { .i = 10 } }, | ||||
|     }, | ||||
|     .ctcss_list =         common_ctcss_list, | ||||
|     .dcs_list =           NULL, | ||||
|     .preamp =             { 10, 20, RIG_DBLST_END, }, /* TBC */ | ||||
|     .attenuator =         { 6, 12, 18, RIG_DBLST_END, }, | ||||
|     .max_rit =            Hz(9999), | ||||
|     .max_xit =            Hz(9999), | ||||
|     .max_ifshift =        Hz(1200), | ||||
|     .vfo_ops =            FTDX5000_VFO_OPS, | ||||
|     .targetable_vfo =     RIG_TARGETABLE_FREQ | RIG_TARGETABLE_MODE | RIG_TARGETABLE_FUNC | RIG_TARGETABLE_LEVEL, | ||||
|     .transceive =         RIG_TRN_OFF,        /* May enable later as the 5000 has an Auto Info command */ | ||||
|     .bank_qty =           0, | ||||
|     .chan_desc_sz =       0, | ||||
|     .str_cal =            FTDX5000_STR_CAL, | ||||
|     .chan_list =          { | ||||
|         {   1,  99, RIG_MTYPE_MEM,  NEWCAT_MEM_CAP }, | ||||
|         { 100, 117, RIG_MTYPE_EDGE, NEWCAT_MEM_CAP },    /* two by two */ | ||||
|         RIG_CHAN_END, | ||||
|     }, | ||||
| 
 | ||||
|     .rx_range_list1 =     { | ||||
|         /* General coverage + ham, ANT_5 is RX only antenna */ | ||||
|         {kHz(30), MHz(60), FTDX5000_ALL_RX_MODES, -1, -1, FTDX5000_VFO_ALL, FTDX5000_TX_ANTS | RIG_ANT_5, "USA"}, | ||||
|         RIG_FRNG_END, | ||||
|     }, | ||||
| 
 | ||||
|     .tx_range_list1 =     { /* the 101DX is 100W and the MP is 200W */ | ||||
|         FRQ_RNG_HF(1, FTDX5000_OTHER_TX_MODES, W(5), W(200), FTDX5000_VFO_ALL, FTDX5000_TX_ANTS), | ||||
|         FRQ_RNG_HF(1, FTDX5000_AM_TX_MODES, W(2), W(75), FTDX5000_VFO_ALL, FTDX5000_TX_ANTS),   /* AM class */ | ||||
|         FRQ_RNG_6m(1, FTDX5000_OTHER_TX_MODES, W(5), W(200), FTDX5000_VFO_ALL, FTDX5000_TX_ANTS), | ||||
|         FRQ_RNG_6m(1, FTDX5000_AM_TX_MODES, W(2), W(75), FTDX5000_VFO_ALL, FTDX5000_TX_ANTS),   /* AM class */ | ||||
| 
 | ||||
|         RIG_FRNG_END, | ||||
|     }, | ||||
| 
 | ||||
|     .rx_range_list2 =     { | ||||
|         {kHz(30), MHz(60), FTDX5000_ALL_RX_MODES, -1, -1, FTDX5000_VFO_ALL, FTDX5000_TX_ANTS | RIG_ANT_5, "EUR"}, | ||||
|         RIG_FRNG_END, | ||||
|     }, | ||||
| 
 | ||||
|     .tx_range_list2 =     { | ||||
|         FRQ_RNG_HF(2, FTDX5000_OTHER_TX_MODES, W(5), W(200), FTDX5000_VFO_ALL, FTDX5000_TX_ANTS), | ||||
|         FRQ_RNG_HF(2, FTDX5000_AM_TX_MODES, W(2), W(75), FTDX5000_VFO_ALL, FTDX5000_TX_ANTS),   /* AM class */ | ||||
|         FRQ_RNG_6m(2, FTDX5000_OTHER_TX_MODES, W(5), W(200), FTDX5000_VFO_ALL, FTDX5000_TX_ANTS), | ||||
|         FRQ_RNG_6m(2, FTDX5000_AM_TX_MODES, W(2), W(75), FTDX5000_VFO_ALL, FTDX5000_TX_ANTS),   /* AM class */ | ||||
|         FRQ_RNG_4m_REGION2(FTDX5000_OTHER_TX_MODES, W(5), W(200), FTDX5000_VFO_ALL, FTDX5000_TX_ANTS), | ||||
|         FRQ_RNG_4m_REGION2(FTDX5000_AM_TX_MODES, W(2), W(75), FTDX5000_VFO_ALL, FTDX5000_TX_ANTS),   /* AM class */ | ||||
| 
 | ||||
|         RIG_FRNG_END, | ||||
|     }, | ||||
| 
 | ||||
|     .tuning_steps =       { | ||||
|         {FTDX5000_SSB_CW_RX_MODES, Hz(10)},    /* Normal */ | ||||
|         {FTDX5000_SSB_CW_RX_MODES, Hz(100)},   /* Fast */ | ||||
| 
 | ||||
|         {FTDX5000_AM_RX_MODES,     Hz(100)},   /* Normal */ | ||||
|         {FTDX5000_AM_RX_MODES,     kHz(1)},    /* Fast */ | ||||
| 
 | ||||
|         {FTDX5000_FM_RX_MODES,     Hz(100)},   /* Normal */ | ||||
|         {FTDX5000_FM_RX_MODES,     kHz(1)},    /* Fast */ | ||||
| 
 | ||||
|         RIG_TS_END, | ||||
| 
 | ||||
|     }, | ||||
| 
 | ||||
|     /* mode/filter list, .remember =  order matters! */ | ||||
|     .filters =            { | ||||
|         {FTDX5000_CW_RTTY_PKT_RX_MODES,  Hz(1800)},   /* Normal CW, RTTY, PKT/USER */ | ||||
|         {FTDX5000_CW_RTTY_PKT_RX_MODES,  Hz(500)},    /* Narrow CW, RTTY, PKT/USER */ | ||||
|         {FTDX5000_CW_RTTY_PKT_RX_MODES,  Hz(2400)},   /* Wide   CW, RTTY, PKT/USER */ | ||||
|         {RIG_MODE_SSB,                 Hz(2400)},   /* Normal SSB */ | ||||
|         {RIG_MODE_SSB,                 Hz(1800)},   /* Narrow SSB */ | ||||
|         {RIG_MODE_SSB,                 Hz(3000)},   /* Wide   SSB */ | ||||
|         {RIG_MODE_AM,                  Hz(9000)},   /* Normal AM  */ | ||||
|         {RIG_MODE_AM,                  Hz(6000)},   /* Narrow AM  */ | ||||
|         {FTDX5000_FM_RX_MODES,           Hz(15000)},  /* Normal FM  */ | ||||
|         {FTDX5000_FM_RX_MODES,           Hz(8000)},   /* Narrow FM  */ | ||||
| 
 | ||||
|         RIG_FLT_END, | ||||
|     }, | ||||
| 
 | ||||
|     .priv =               NULL, | ||||
| 
 | ||||
|     .rig_init =           newcat_init, | ||||
|     .rig_cleanup =        newcat_cleanup, | ||||
|     .rig_open =           newcat_open,     /* port opened */ | ||||
|     .rig_close =          newcat_close,    /* port closed */ | ||||
| 
 | ||||
|     .cfgparams =          newcat_cfg_params, | ||||
|     .set_conf =           newcat_set_conf, | ||||
|     .get_conf =           newcat_get_conf, | ||||
|     .set_freq =           newcat_set_freq, | ||||
|     .get_freq =           newcat_get_freq, | ||||
|     .set_mode =           newcat_set_mode, | ||||
|     .get_mode =           newcat_get_mode, | ||||
|     .set_vfo =            newcat_set_vfo, | ||||
|     .get_vfo =            newcat_get_vfo, | ||||
|     .set_ptt =            newcat_set_ptt, | ||||
|     .get_ptt =            newcat_get_ptt, | ||||
|     .set_split_vfo =      newcat_set_split_vfo, | ||||
|     .get_split_vfo =      newcat_get_split_vfo, | ||||
|     .set_rit =            newcat_set_rit, | ||||
|     .get_rit =            newcat_get_rit, | ||||
|     .set_xit =            newcat_set_xit, | ||||
|     .get_xit =            newcat_get_xit, | ||||
|     .set_ant =            newcat_set_ant, | ||||
|     .get_ant =            newcat_get_ant, | ||||
|     .get_func =           newcat_get_func, | ||||
|     .set_func =           newcat_set_func, | ||||
|     .get_level =          newcat_get_level, | ||||
|     .set_level =          newcat_set_level, | ||||
|     .get_mem =            newcat_get_mem, | ||||
|     .set_mem =            newcat_set_mem, | ||||
|     .vfo_op =             newcat_vfo_op, | ||||
|     .get_info =           newcat_get_info, | ||||
|     .power2mW =           newcat_power2mW, | ||||
|     .mW2power =           newcat_mW2power, | ||||
|     .set_rptr_shift =     newcat_set_rptr_shift, | ||||
|     .get_rptr_shift =     newcat_get_rptr_shift, | ||||
|     .set_ctcss_tone =     newcat_set_ctcss_tone, | ||||
|     .get_ctcss_tone =     newcat_get_ctcss_tone, | ||||
|     .set_ctcss_sql  =     newcat_set_ctcss_sql, | ||||
|     .get_ctcss_sql  =     newcat_get_ctcss_sql, | ||||
|     .set_powerstat =      newcat_set_powerstat, | ||||
|     .get_powerstat =      newcat_get_powerstat, | ||||
|     .get_ts =             newcat_get_ts, | ||||
|     .set_ts =             newcat_set_ts, | ||||
|     .set_trn =            newcat_set_trn, | ||||
|     .get_trn =            newcat_get_trn, | ||||
|     .set_channel =        newcat_set_channel, | ||||
|     .get_channel =        newcat_get_channel, | ||||
| 
 | ||||
| }; | ||||
|  |  | |||
|  | @ -28,35 +28,25 @@ | |||
| #ifndef _FT5000_H | ||||
| #define _FT5000_H 1 | ||||
| 
 | ||||
| #if 0 | ||||
| #define TRUE    1 | ||||
| #define FALSE   0 | ||||
| #define ON      TRUE | ||||
| #define OFF     FALSE | ||||
| #endif | ||||
| 
 | ||||
| #define FTDX5000_VFO_ALL (RIG_VFO_MAIN|RIG_VFO_SUB) | ||||
| 
 | ||||
| /* Receiver caps */ | ||||
| 
 | ||||
| #define FTDX5000_ALL_RX_MODES (RIG_MODE_AM|RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|\ | ||||
| 				RIG_MODE_RTTY|RIG_MODE_RTTYR|\ | ||||
| 		                RIG_MODE_PKTLSB|RIG_MODE_PKTUSB|RIG_MODE_PKTFM) | ||||
|         RIG_MODE_RTTY|RIG_MODE_RTTYR|RIG_MODE_PKTLSB|RIG_MODE_PKTUSB|RIG_MODE_PKTFM|\ | ||||
|         RIG_MODE_FM|RIG_MODE_FMN) | ||||
| 
 | ||||
| #define FTDX5000_SSB_CW_RX_MODES (RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|\ | ||||
| 		RIG_MODE_RTTY|RIG_MODE_RTTYR|RIG_MODE_PKTLSB|RIG_MODE_PKTUSB) | ||||
| #define FTDX5000_AM_RX_MODES (RIG_MODE_AM) | ||||
| #define FTDX5000_FM_RX_MODES (RIG_MODE_FM|RIG_MODE_PKTFM) | ||||
| #define FTDX5000_FM_RX_MODES (RIG_MODE_FM|RIG_MODE_PKTFM|RIG_MODE_FMN) | ||||
| #define FTDX5000_CW_RTTY_PKT_RX_MODES (RIG_MODE_RTTY|RIG_MODE_RTTYR|\ | ||||
|         RIG_MODE_PKTUSB|RIG_MODE_PKTLSB|RIG_MODE_CW|RIG_MODE_CWR) | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| /* TRX caps */ | ||||
| 
 | ||||
| #define FTDX5000_OTHER_TX_MODES (RIG_MODE_CW|RIG_MODE_SSB|RIG_MODE_RTTY| \ | ||||
| 		                RIG_MODE_PKTLSB|RIG_MODE_PKTUSB|RIG_MODE_PKTFM) /* 100 W class */ | ||||
| 		                RIG_MODE_PKTLSB|RIG_MODE_PKTUSB|RIG_MODE_FM|RIG_MODE_PKTFM|RIG_MODE_FMN) /* 100 W class */ | ||||
| #define FTDX5000_AM_TX_MODES (RIG_MODE_AM)    /* set 25W max */ | ||||
| 
 | ||||
| /* TBC */ | ||||
|  | @ -67,7 +57,8 @@ | |||
|                RIG_LEVEL_KEYSPD|RIG_LEVEL_AF|RIG_LEVEL_AGC|\ | ||||
|                RIG_LEVEL_METER|RIG_LEVEL_BKINDL|RIG_LEVEL_SQL|\ | ||||
|                RIG_LEVEL_VOXGAIN|RIG_LEVEL_VOXDELAY|RIG_LEVEL_COMP|\ | ||||
|                RIG_LEVEL_ANTIVOX|RIG_LEVEL_NR|RIG_LEVEL_NOTCHF) | ||||
|                RIG_LEVEL_ANTIVOX|RIG_LEVEL_NR|RIG_LEVEL_NOTCHF|\ | ||||
|                RIG_LEVEL_MONITOR_GAIN) | ||||
| 
 | ||||
| /* TBC */ | ||||
| #define FTDX5000_FUNCS (RIG_FUNC_TONE|RIG_FUNC_TSQL|RIG_FUNC_LOCK|\ | ||||
|  |  | |||
|  | @ -28,28 +28,24 @@ | |||
| #ifndef _FT891_H | ||||
| #define _FT891_H 1 | ||||
| 
 | ||||
| #define TRUE    1 | ||||
| #define FALSE   0 | ||||
| #define ON      TRUE | ||||
| #define OFF     FALSE | ||||
| 
 | ||||
| #define FT891_VFO_ALL (RIG_VFO_A|RIG_VFO_B) | ||||
| 
 | ||||
| /* Receiver caps */ | ||||
| 
 | ||||
| #define FT891_ALL_RX_MODES (RIG_MODE_AM|RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|\ | ||||
| 		RIG_MODE_RTTY|RIG_MODE_RTTYR|RIG_MODE_PKTLSB|RIG_MODE_PKTUSB|RIG_MODE_PKTFM) | ||||
| 		RIG_MODE_RTTY|RIG_MODE_RTTYR|RIG_MODE_PKTLSB|RIG_MODE_PKTUSB|RIG_MODE_FM|RIG_MODE_FMN) | ||||
| #define FT891_SSB_CW_RX_MODES (RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|\ | ||||
| 		RIG_MODE_RTTY|RIG_MODE_RTTYR|RIG_MODE_PKTLSB|RIG_MODE_PKTUSB) | ||||
| #define FT891_AM_RX_MODES (RIG_MODE_AM) | ||||
| #define FT891_FM_RX_MODES (RIG_MODE_FM|RIG_MODE_PKTFM) | ||||
| #define FT891_FM_RX_MODES (RIG_MODE_FM|RIG_MODE_FMN) | ||||
| #define FT891_CW_RX_MODES (RIG_MODE_CW|RIG_MODE_CWR) | ||||
| #define FT891_CW_RTTY_PKT_RX_MODES (RIG_MODE_RTTY|RIG_MODE_RTTYR|\ | ||||
|         RIG_MODE_PKTUSB|RIG_MODE_PKTLSB|RIG_MODE_CW|RIG_MODE_CWR) | ||||
| 
 | ||||
| /* TRX caps */ | ||||
| 
 | ||||
| #define FT891_OTHER_TX_MODES (RIG_MODE_CW| RIG_MODE_USB| RIG_MODE_LSB | RIG_MODE_PKTUSB | RIG_MODE_PKTLSB ) /* 100 W class */ | ||||
| #define FT891_OTHER_TX_MODES (RIG_MODE_CW|RIG_MODE_USB|RIG_MODE_LSB|RIG_MODE_PKTUSB|RIG_MODE_PKTLSB|\ | ||||
|         RIG_MODE_FM|RIG_MODE_FMN) /* 100 W class */ | ||||
| #define FT891_AM_TX_MODES (RIG_MODE_AM)    /* set 25W max */ | ||||
| 
 | ||||
| #define FT891_LEVELS (RIG_LEVEL_ATT|RIG_LEVEL_PREAMP|RIG_LEVEL_STRENGTH|\ | ||||
|  | @ -59,7 +55,8 @@ | |||
|                RIG_LEVEL_KEYSPD|RIG_LEVEL_AF|RIG_LEVEL_AGC|\ | ||||
|                RIG_LEVEL_METER|RIG_LEVEL_BKINDL|RIG_LEVEL_SQL|\ | ||||
|                RIG_LEVEL_VOXGAIN|RIG_LEVEL_VOXDELAY|RIG_LEVEL_COMP|\ | ||||
|                RIG_LEVEL_ANTIVOX|RIG_LEVEL_NR|RIG_LEVEL_NOTCHF) | ||||
|                RIG_LEVEL_ANTIVOX|RIG_LEVEL_NR|RIG_LEVEL_NOTCHF|\ | ||||
|                RIG_LEVEL_MONITOR_GAIN) | ||||
| 
 | ||||
| #define FT891_FUNCS (RIG_FUNC_TONE|RIG_FUNC_TSQL|RIG_FUNC_LOCK|\ | ||||
|                RIG_FUNC_MON|RIG_FUNC_NB|RIG_FUNC_NR|RIG_FUNC_VOX|\ | ||||
|  |  | |||
|  | @ -28,29 +28,25 @@ | |||
| #ifndef _FT991_H | ||||
| #define _FT991_H 1 | ||||
| 
 | ||||
| #define TRUE    1 | ||||
| #define FALSE   0 | ||||
| #define ON      TRUE | ||||
| #define OFF     FALSE | ||||
| 
 | ||||
| #define FT991_VFO_ALL (RIG_VFO_A|RIG_VFO_B) | ||||
| 
 | ||||
| /* Receiver caps */ | ||||
| 
 | ||||
| #define FT991_ALL_RX_MODES (RIG_MODE_AM|RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|\ | ||||
|         RIG_MODE_RTTY|RIG_MODE_RTTYR|RIG_MODE_PKTLSB|RIG_MODE_PKTUSB|RIG_MODE_PKTFM|\ | ||||
|         RIG_MODE_C4FM|RIG_MODE_FM|RIG_MODE_AMN) | ||||
|         RIG_MODE_C4FM|RIG_MODE_FM|RIG_MODE_AMN|RIG_MODE_FMN) | ||||
| #define FT991_SSB_CW_RX_MODES (RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|\ | ||||
|         RIG_MODE_RTTY|RIG_MODE_RTTYR|RIG_MODE_PKTLSB|RIG_MODE_PKTUSB) | ||||
| #define FT991_AM_RX_MODES (RIG_MODE_AM|RIG_MODE_AMN) | ||||
| #define FT991_FM_RX_MODES (RIG_MODE_FM|RIG_MODE_PKTFM|RIG_MODE_C4FM) | ||||
| #define FT991_FM_RX_MODES (RIG_MODE_FM|RIG_MODE_PKTFM|RIG_MODE_FMN|RIG_MODE_C4FM) | ||||
| #define FT991_CW_RX_MODES (RIG_MODE_CW|RIG_MODE_CWR) | ||||
| #define FT991_CW_RTTY_PKT_RX_MODES (RIG_MODE_RTTY|RIG_MODE_RTTYR|\ | ||||
|         RIG_MODE_PKTUSB|RIG_MODE_PKTLSB|RIG_MODE_CW|RIG_MODE_CWR) | ||||
| 
 | ||||
| /* TRX caps */ | ||||
| 
 | ||||
| #define FT991_OTHER_TX_MODES (RIG_MODE_CW| RIG_MODE_USB| RIG_MODE_LSB | RIG_MODE_PKTUSB | RIG_MODE_PKTLSB ) /* 100 W class */ | ||||
| #define FT991_OTHER_TX_MODES (RIG_MODE_CW|RIG_MODE_USB|RIG_MODE_LSB|RIG_MODE_PKTUSB|RIG_MODE_PKTLSB|\ | ||||
|         RIG_MODE_FM|RIG_MODE_PKTFM|RIG_MODE_FMN) /* 100 W class */ | ||||
| #define FT991_AM_TX_MODES (RIG_MODE_AM|RIG_MODE_AMN)    /* set 25W max */ | ||||
| 
 | ||||
| #define FT991_LEVELS (RIG_LEVEL_ATT|RIG_LEVEL_PREAMP|RIG_LEVEL_STRENGTH|\ | ||||
|  | @ -60,7 +56,8 @@ | |||
|                RIG_LEVEL_KEYSPD|RIG_LEVEL_AF|RIG_LEVEL_AGC|\ | ||||
|                RIG_LEVEL_METER|RIG_LEVEL_BKINDL|RIG_LEVEL_SQL|\ | ||||
|                RIG_LEVEL_VOXGAIN|RIG_LEVEL_VOXDELAY|RIG_LEVEL_COMP|\ | ||||
|                RIG_LEVEL_ANTIVOX|RIG_LEVEL_NR|RIG_LEVEL_NOTCHF) | ||||
|                RIG_LEVEL_ANTIVOX|RIG_LEVEL_NR|RIG_LEVEL_NOTCHF|\ | ||||
|                RIG_LEVEL_MONITOR_GAIN) | ||||
| 
 | ||||
| #define FT991_FUNCS (RIG_FUNC_TONE|RIG_FUNC_TSQL|RIG_FUNC_LOCK|\ | ||||
|                RIG_FUNC_MON|RIG_FUNC_NB|RIG_FUNC_NR|RIG_FUNC_VOX|\ | ||||
|  |  | |||
|  | @ -0,0 +1,205 @@ | |||
| /*
 | ||||
|  * hamlib - (C) Frank Singleton 2000 (javabear at users.sourceforge.net) | ||||
|  * | ||||
|  * ftdx101.c - (C) Nate Bargmann 2007 (n0nb at arrl.net) | ||||
|  *             (C) Stephane Fillod 2008-2010 | ||||
|  *             (C) Terry Embry 2008-2009 | ||||
|  *             (C) Mikael Nousiainen 2020 | ||||
|  * | ||||
|  * This shared library provides an API for communicating | ||||
|  * via serial interface to an FTDX101(D/MP) using the "CAT" interface | ||||
|  * | ||||
|  * | ||||
|  *   This library is free software; you can redistribute it and/or | ||||
|  *   modify it under the terms of the GNU Lesser General Public | ||||
|  *   License as published by the Free Software Foundation; either | ||||
|  *   version 2.1 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *   This library 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 | ||||
|  *   Lesser General Public License for more details. | ||||
|  * | ||||
|  *   You should have received a copy of the GNU Lesser General Public | ||||
|  *   License along with this library; if not, write to the Free Software | ||||
|  *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| #ifdef HAVE_CONFIG_H | ||||
| #include "config.h" | ||||
| #endif | ||||
| 
 | ||||
| #include "hamlib/rig.h" | ||||
| #include "bandplan.h" | ||||
| #include "idx_builtin.h" | ||||
| #include "tones.h" | ||||
| #include "newcat.h" | ||||
| #include "ftdx101.h" | ||||
| 
 | ||||
| const struct rig_caps ftdx101d_caps = | ||||
| { | ||||
|     RIG_MODEL(RIG_MODEL_FTDX101D), | ||||
|     .model_name =         "FT-DX101D", | ||||
|     .mfg_name =           "Yaesu", | ||||
|     .version =            NEWCAT_VER ".5", | ||||
|     .copyright =          "LGPL", | ||||
|     .status =             RIG_STATUS_STABLE, | ||||
|     .rig_type =           RIG_TYPE_TRANSCEIVER, | ||||
|     .ptt_type =           RIG_PTT_RIG, | ||||
|     .dcd_type =           RIG_DCD_NONE, | ||||
|     .port_type =          RIG_PORT_SERIAL, | ||||
|     .serial_rate_min =    4800, | ||||
|     .serial_rate_max =    38400, | ||||
|     .serial_data_bits =   8, | ||||
|     .serial_stop_bits =   1, | ||||
|     .serial_parity =      RIG_PARITY_NONE, | ||||
|     .serial_handshake =   RIG_HANDSHAKE_HARDWARE, | ||||
|     .write_delay =        FTDX101_WRITE_DELAY, | ||||
|     .post_write_delay =   FTDX101_POST_WRITE_DELAY, | ||||
|     .timeout =            2000, | ||||
|     .retry =              3, | ||||
|     .has_get_func =       FTDX101_FUNCS, | ||||
|     .has_set_func =       FTDX101_FUNCS, | ||||
|     .has_get_level =      FTDX101_LEVELS, | ||||
|     .has_set_level =      RIG_LEVEL_SET(FTDX101_LEVELS), | ||||
|     .has_get_parm =       RIG_PARM_NONE, | ||||
|     .has_set_parm =       RIG_PARM_NONE, | ||||
|     .level_gran = { | ||||
|         [LVL_RAWSTR] = { .min = { .i = 0 }, .max = { .i = 255 } }, | ||||
|         [LVL_CWPITCH] = { .min = { .i = 300 }, .max = { .i = 1050 }, .step = { .i = 10 } }, | ||||
|     }, | ||||
|     .ctcss_list =         common_ctcss_list, | ||||
|     .dcs_list =           NULL, | ||||
|     .preamp =             { 10, 20, RIG_DBLST_END, }, | ||||
|     .attenuator =         { 6, 12, 18, RIG_DBLST_END, }, | ||||
|     .max_rit =            Hz(9999), | ||||
|     .max_xit =            Hz(9999), | ||||
|     .max_ifshift =        Hz(1200), | ||||
|     .vfo_ops =            FTDX101_VFO_OPS, | ||||
|     .targetable_vfo =     RIG_TARGETABLE_FREQ | RIG_TARGETABLE_MODE | RIG_TARGETABLE_FUNC | RIG_TARGETABLE_LEVEL, | ||||
|     .transceive =         RIG_TRN_OFF, /* May enable later as the FTDX101 has an Auto Info command */ | ||||
|     .bank_qty =           0, | ||||
|     .chan_desc_sz =       0, | ||||
|     .str_cal =            FTDX101_STR_CAL, | ||||
|     .chan_list =          { | ||||
|         {   1,  99, RIG_MTYPE_MEM,  NEWCAT_MEM_CAP }, | ||||
|         { 100, 117, RIG_MTYPE_EDGE, NEWCAT_MEM_CAP },    /* two by two */ | ||||
|         RIG_CHAN_END, | ||||
|     }, | ||||
| 
 | ||||
|     .rx_range_list1 =     { | ||||
|         /* General coverage + ham, ANT_5 is RX only antenna */ | ||||
|         {kHz(30), MHz(60), FTDX101_ALL_RX_MODES, -1, -1, FTDX101_VFO_ALL, FTDX101_TX_ANTS | RIG_ANT_5, "USA"}, | ||||
|         RIG_FRNG_END, | ||||
|     }, | ||||
| 
 | ||||
|     .tx_range_list1 =     { /* the 101DX is 100W and the MP is 200W */ | ||||
|         FRQ_RNG_HF(1, FTDX101_OTHER_TX_MODES, W(5), W(200), FTDX101_VFO_ALL, FTDX101_TX_ANTS), | ||||
|         FRQ_RNG_HF(1, FTDX101_AM_TX_MODES, W(2), W(75), FTDX101_VFO_ALL, FTDX101_TX_ANTS),   /* AM class */ | ||||
|         FRQ_RNG_6m(1, FTDX101_OTHER_TX_MODES, W(5), W(200), FTDX101_VFO_ALL, FTDX101_TX_ANTS), | ||||
|         FRQ_RNG_6m(1, FTDX101_AM_TX_MODES, W(2), W(75), FTDX101_VFO_ALL, FTDX101_TX_ANTS),   /* AM class */ | ||||
| 
 | ||||
|         RIG_FRNG_END, | ||||
|     }, | ||||
| 
 | ||||
|     .rx_range_list2 =     { | ||||
|         {kHz(30), MHz(60), FTDX101_ALL_RX_MODES, -1, -1, FTDX101_VFO_ALL, FTDX101_TX_ANTS | RIG_ANT_5, "EUR"}, | ||||
|         RIG_FRNG_END, | ||||
|     }, | ||||
| 
 | ||||
|     .tx_range_list2 =     { | ||||
|         FRQ_RNG_HF(2, FTDX101_OTHER_TX_MODES, W(5), W(200), FTDX101_VFO_ALL, FTDX101_TX_ANTS), | ||||
|         FRQ_RNG_HF(2, FTDX101_AM_TX_MODES, W(2), W(75), FTDX101_VFO_ALL, FTDX101_TX_ANTS),   /* AM class */ | ||||
|         FRQ_RNG_6m(2, FTDX101_OTHER_TX_MODES, W(5), W(200), FTDX101_VFO_ALL, FTDX101_TX_ANTS), | ||||
|         FRQ_RNG_6m(2, FTDX101_AM_TX_MODES, W(2), W(75), FTDX101_VFO_ALL, FTDX101_TX_ANTS),   /* AM class */ | ||||
|         FRQ_RNG_4m_REGION2(FTDX101_OTHER_TX_MODES, W(5), W(200), FTDX101_VFO_ALL, FTDX101_TX_ANTS), | ||||
|         FRQ_RNG_4m_REGION2(FTDX101_AM_TX_MODES, W(2), W(75), FTDX101_VFO_ALL, FTDX101_TX_ANTS),   /* AM class */ | ||||
| 
 | ||||
|         RIG_FRNG_END, | ||||
|     }, | ||||
| 
 | ||||
|     .tuning_steps =       { | ||||
|         {FTDX101_SSB_CW_RX_MODES, Hz(10)},    /* Normal */ | ||||
|         {FTDX101_SSB_CW_RX_MODES, Hz(100)},   /* Fast */ | ||||
| 
 | ||||
|         {FTDX101_AM_RX_MODES,     Hz(100)},   /* Normal */ | ||||
|         {FTDX101_AM_RX_MODES,     kHz(1)},    /* Fast */ | ||||
| 
 | ||||
|         {FTDX101_FM_RX_MODES,     Hz(100)},   /* Normal */ | ||||
|         {FTDX101_FM_RX_MODES,     kHz(1)},    /* Fast */ | ||||
| 
 | ||||
|         RIG_TS_END, | ||||
| 
 | ||||
|     }, | ||||
| 
 | ||||
|     /* mode/filter list, remember that order matters! */ | ||||
|     .filters =            { | ||||
|         {FTDX101_CW_RTTY_PKT_RX_MODES,  Hz(600)},   /* Normal CW, RTTY, PKT/USER */ | ||||
|         {FTDX101_CW_RTTY_PKT_RX_MODES,  Hz(300)},    /* Narrow CW, RTTY, PKT/USER */ | ||||
|         {FTDX101_CW_RTTY_PKT_RX_MODES,  Hz(2400)},   /* Wide   CW, RTTY, PKT/USER */ | ||||
|         {FTDX101_CW_RTTY_PKT_RX_MODES,  Hz(1200)},   /* Normal CW, RTTY, PKT/USER */ | ||||
|         {RIG_MODE_SSB,                 Hz(2400)},   /* Normal SSB */ | ||||
|         {RIG_MODE_SSB,                 Hz(1800)},   /* Narrow SSB */ | ||||
|         {RIG_MODE_SSB,                 Hz(3000)},   /* Wide   SSB */ | ||||
|         {RIG_MODE_AM,                  Hz(9000)},   /* Normal AM  */ | ||||
|         {RIG_MODE_AMN,                 Hz(6000)},   /* Narrow AM  */ | ||||
|         {RIG_MODE_FM | RIG_MODE_PKTFM, Hz(16000)},  /* Normal FM  */ | ||||
|         {RIG_MODE_FMN | RIG_MODE_PKTFMN, Hz(9000)},   /* Narrow FM  */ | ||||
|         {FTDX101_CW_RTTY_PKT_RX_MODES | RIG_MODE_SSB, RIG_FLT_ANY}, | ||||
| 
 | ||||
|         RIG_FLT_END, | ||||
|     }, | ||||
| 
 | ||||
|     .priv =               NULL, | ||||
| 
 | ||||
|     .rig_init =           newcat_init, | ||||
|     .rig_cleanup =        newcat_cleanup, | ||||
|     .rig_open =           newcat_open,     /* port opened */ | ||||
|     .rig_close =          newcat_close,    /* port closed */ | ||||
| 
 | ||||
|     .cfgparams =          newcat_cfg_params, | ||||
|     .set_conf =           newcat_set_conf, | ||||
|     .get_conf =           newcat_get_conf, | ||||
|     .set_freq =           newcat_set_freq, | ||||
|     .get_freq =           newcat_get_freq, | ||||
|     .set_mode =           newcat_set_mode, | ||||
|     .get_mode =           newcat_get_mode, | ||||
|     .set_vfo =            newcat_set_vfo, | ||||
|     .get_vfo =            newcat_get_vfo, | ||||
|     .set_ptt =            newcat_set_ptt, | ||||
|     .get_ptt =            newcat_get_ptt, | ||||
|     .set_split_vfo =      newcat_set_split_vfo, | ||||
|     .get_split_vfo =      newcat_get_split_vfo, | ||||
|     .set_rit =            newcat_set_rit, | ||||
|     .get_rit =            newcat_get_rit, | ||||
|     .set_xit =            newcat_set_xit, | ||||
|     .get_xit =            newcat_get_xit, | ||||
|     .set_ant =            newcat_set_ant, | ||||
|     .get_ant =            newcat_get_ant, | ||||
|     .get_func =           newcat_get_func, | ||||
|     .set_func =           newcat_set_func, | ||||
|     .get_level =          newcat_get_level, | ||||
|     .set_level =          newcat_set_level, | ||||
|     .get_mem =            newcat_get_mem, | ||||
|     .set_mem =            newcat_set_mem, | ||||
|     .vfo_op =             newcat_vfo_op, | ||||
|     .get_info =           newcat_get_info, | ||||
|     .power2mW =           newcat_power2mW, | ||||
|     .mW2power =           newcat_mW2power, | ||||
|     .set_rptr_shift =     newcat_set_rptr_shift, | ||||
|     .get_rptr_shift =     newcat_get_rptr_shift, | ||||
|     .set_ctcss_tone =     newcat_set_ctcss_tone, | ||||
|     .get_ctcss_tone =     newcat_get_ctcss_tone, | ||||
|     .set_ctcss_sql  =     newcat_set_ctcss_sql, | ||||
|     .get_ctcss_sql  =     newcat_get_ctcss_sql, | ||||
|     .set_powerstat =      newcat_set_powerstat, | ||||
|     .get_powerstat =      newcat_get_powerstat, | ||||
|     .get_ts =             newcat_get_ts, | ||||
|     .set_ts =             newcat_set_ts, | ||||
|     .set_trn =            newcat_set_trn, | ||||
|     .get_trn =            newcat_get_trn, | ||||
|     .set_channel =        newcat_set_channel, | ||||
|     .get_channel =        newcat_get_channel, | ||||
| 
 | ||||
| }; | ||||
|  | @ -0,0 +1,121 @@ | |||
| /*
 | ||||
|  * hamlib - (C) Frank Singleton 2000 (javabear at users.sourceforge.net) | ||||
|  * | ||||
|  * ftdx101.h - (C) Nate Bargmann 2007 (n0nb at arrl.net) | ||||
|  *             (C) Stephane Fillod 2008-2010 | ||||
|  *             (C) Mikael Nousiainen 2020 | ||||
|  * | ||||
|  * This shared library provides an API for communicating | ||||
|  * via serial interface to an FTDX101(D/MP) using the "CAT" interface | ||||
|  * | ||||
|  * | ||||
|  *   This library is free software; you can redistribute it and/or | ||||
|  *   modify it under the terms of the GNU Lesser General Public | ||||
|  *   License as published by the Free Software Foundation; either | ||||
|  *   version 2.1 of the License, or (at your option) any later version. | ||||
|  * | ||||
|  *   This library 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 | ||||
|  *   Lesser General Public License for more details. | ||||
|  * | ||||
|  *   You should have received a copy of the GNU Lesser General Public | ||||
|  *   License along with this library; if not, write to the Free Software | ||||
|  *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| 
 | ||||
| #ifndef _FTDX101_H | ||||
| #define _FTDX101_H 1 | ||||
| 
 | ||||
| #define FTDX101_VFO_ALL (RIG_VFO_MAIN|RIG_VFO_SUB) | ||||
| 
 | ||||
| /* Receiver caps */ | ||||
| 
 | ||||
| #define FTDX101_ALL_RX_MODES (RIG_MODE_AM|RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|\ | ||||
|         RIG_MODE_RTTY|RIG_MODE_RTTYR|RIG_MODE_PKTLSB|RIG_MODE_PKTUSB|RIG_MODE_PKTAM|RIG_MODE_PKTFM|\ | ||||
|         RIG_MODE_FM|RIG_MODE_FMN|RIG_MODE_PKTFMN) | ||||
| 
 | ||||
| #define FTDX101_SSB_CW_RX_MODES (RIG_MODE_CW|RIG_MODE_CWR|RIG_MODE_SSB|\ | ||||
| 		RIG_MODE_RTTY|RIG_MODE_RTTYR|RIG_MODE_PKTLSB|RIG_MODE_PKTUSB) | ||||
| #define FTDX101_AM_RX_MODES (RIG_MODE_AM|RIG_MODE_PKTAM) | ||||
| #define FTDX101_FM_RX_MODES (RIG_MODE_FM|RIG_MODE_PKTFM|RIG_MODE_FMN|RIG_MODE_PKTFMN) | ||||
| #define FTDX101_CW_RTTY_PKT_RX_MODES (RIG_MODE_RTTY|RIG_MODE_RTTYR|\ | ||||
|         RIG_MODE_PKTUSB|RIG_MODE_PKTLSB|RIG_MODE_CW|RIG_MODE_CWR) | ||||
| 
 | ||||
| /* TRX caps */ | ||||
| 
 | ||||
| #define FTDX101_OTHER_TX_MODES (RIG_MODE_AM|RIG_MODE_CW|RIG_MODE_SSB|RIG_MODE_RTTY| \ | ||||
| 		                RIG_MODE_PKTLSB|RIG_MODE_PKTUSB|RIG_MODE_PKTAM|RIG_MODE_PKTFM|RIG_MODE_FM|RIG_MODE_FMN|RIG_MODE_PKTFMN) /* 100 W class */ | ||||
| #define FTDX101_AM_TX_MODES (RIG_MODE_AM|RIG_MODE_PKTAM)    /* set 25W max */ | ||||
| 
 | ||||
| /* TBC */ | ||||
| #define FTDX101_LEVELS (RIG_LEVEL_ATT|RIG_LEVEL_PREAMP|\ | ||||
|                RIG_LEVEL_ALC|RIG_LEVEL_RAWSTR|RIG_LEVEL_SWR|\ | ||||
|                RIG_LEVEL_RFPOWER|RIG_LEVEL_RF|RIG_LEVEL_SQL|\ | ||||
|                RIG_LEVEL_MICGAIN|RIG_LEVEL_IF|RIG_LEVEL_CWPITCH|\ | ||||
|                RIG_LEVEL_KEYSPD|RIG_LEVEL_AF|RIG_LEVEL_AGC|\ | ||||
|                RIG_LEVEL_METER|RIG_LEVEL_BKINDL|RIG_LEVEL_SQL|\ | ||||
|                RIG_LEVEL_VOXGAIN|RIG_LEVEL_VOXDELAY|RIG_LEVEL_COMP|\ | ||||
|                RIG_LEVEL_ANTIVOX|RIG_LEVEL_NR|RIG_LEVEL_NOTCHF|\ | ||||
|                RIG_LEVEL_MONITOR_GAIN) | ||||
| 
 | ||||
| /* TBC */ | ||||
| #define FTDX101_FUNCS (RIG_FUNC_TONE|RIG_FUNC_TSQL|RIG_FUNC_LOCK|\ | ||||
|                RIG_FUNC_MON|RIG_FUNC_NB|RIG_FUNC_NR|RIG_FUNC_VOX|\ | ||||
|                RIG_FUNC_FBKIN|RIG_FUNC_COMP|RIG_FUNC_ANF|RIG_FUNC_MN|\ | ||||
|                RIG_FUNC_RIT|RIG_FUNC_XIT|RIG_FUNC_TUNER) | ||||
| 
 | ||||
| /* TBC */ | ||||
| #define FTDX101_VFO_OPS (RIG_OP_TUNE|RIG_OP_CPY|RIG_OP_XCHG|\ | ||||
|                RIG_OP_UP|RIG_OP_DOWN|RIG_OP_BAND_UP|RIG_OP_BAND_DOWN|\ | ||||
|                RIG_OP_TO_VFO|RIG_OP_FROM_VFO|RIG_OP_TOGGLE) | ||||
| 
 | ||||
| /* TBC */ | ||||
| #define FTDX101_STR_CAL { 16, \ | ||||
| 	       { \ | ||||
| 			{   0, -54 }, /*  S0 */ \ | ||||
| 			{  12, -48 }, /*  S1 */ \ | ||||
| 			{  27, -42 }, /*  S2 */ \ | ||||
| 			{  40, -36 }, /*  S3 */ \ | ||||
| 			{  55, -30 }, /*  S4 */ \ | ||||
| 			{  65, -24 }, /*  S5 */ \ | ||||
| 			{  80, -18 }, /*  S6 */ \ | ||||
| 			{  95, -12 }, /*  S7 */ \ | ||||
| 			{ 112,  -6 }, /*  S8 */ \ | ||||
| 			{ 130,   0 }, /*  S9 */ \ | ||||
| 			{ 150,  10 }, /* +10 */ \ | ||||
| 			{ 172,  20 }, /* +20 */ \ | ||||
| 			{ 190,  30 }, /* +30 */ \ | ||||
| 			{ 220,  40 }, /* +40 */ \ | ||||
| 			{ 240,  50 }, /* +50 */ \ | ||||
| 			{ 255,  60 }, /* +60 */ \ | ||||
| 		} } | ||||
| 
 | ||||
| /*
 | ||||
|  * Other features (used by rig_caps) | ||||
|  */ | ||||
| 
 | ||||
| #define FTDX101_TX_ANTS  (RIG_ANT_1|RIG_ANT_2) | ||||
| 
 | ||||
| #define FTDX101_MEM_CHNL_LENGTH           1       /* 0x10 P1 = 01 return size */ | ||||
| #define FTDX101_OP_DATA_LENGTH            19      /* 0x10 P1 = 03 return size */ | ||||
| #define FTDX101_VFO_DATA_LENGTH           18      /* 0x10 P1 = 03 return size -- A & B returned */ | ||||
| #define FTDX101_MEM_CHNL_DATA_LENGTH      19      /* 0x10 P1 = 04, P4 = 0x01-0x20 return size */ | ||||
| #define FTDX101_STATUS_FLAGS_LENGTH       5       /* 0xf7, 0xfa return size */ | ||||
| #define FTDX101_ALL_DATA_LENGTH           649     /* 0x10 P1 = 00 return size */ | ||||
| 
 | ||||
| /* Timing values in mS */ | ||||
| 
 | ||||
| /* Delay between bytes sent
 | ||||
|  * Should not exceed value set in CAT TOT menu (rig default is 10 mSec) | ||||
|  */ | ||||
| #define FTDX101_WRITE_DELAY                    0 | ||||
| 
 | ||||
| 
 | ||||
| /* Delay sequential fast writes */ | ||||
| 
 | ||||
| #define FTDX101_POST_WRITE_DELAY               5 | ||||
| 
 | ||||
| #endif /* _FTDX101_H */ | ||||
|  | @ -2721,7 +2721,7 @@ int newcat_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val) | |||
|             return -RIG_ENAVAIL; | ||||
|         } | ||||
| 
 | ||||
|         if (newcat_is_rig(rig, RIG_MODEL_FT1200)) | ||||
|         if (is_ft1200 || is_ft3000 || is_ft891 || is_ft991 || is_ft101) | ||||
|         { | ||||
|             fpf = newcat_scale_float(100, val.f); | ||||
|         } | ||||
|  | @ -3148,6 +3148,24 @@ int newcat_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val) | |||
| 
 | ||||
|         break; | ||||
| 
 | ||||
|     case RIG_LEVEL_MONITOR_GAIN: | ||||
|         if (!newcat_valid_command(rig, "ML")) | ||||
|         { | ||||
|             return -RIG_ENAVAIL; | ||||
|         } | ||||
| 
 | ||||
|         if (is_ft1200 || is_ft3000 || is_ft891 || is_ft991 || is_ft101) | ||||
|         { | ||||
|             fpf = newcat_scale_float(100, val.f); | ||||
|         } | ||||
|         else | ||||
|         { | ||||
|             fpf = newcat_scale_float(255, val.f); | ||||
|         } | ||||
| 
 | ||||
|         snprintf(priv->cmd_str, sizeof(priv->cmd_str), "ML1%03d%c", fpf, cat_term); | ||||
|         break; | ||||
| 
 | ||||
|     default: | ||||
|         return -RIG_EINVAL; | ||||
|     } | ||||
|  | @ -3435,6 +3453,15 @@ int newcat_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val) | |||
| 
 | ||||
|         break; | ||||
| 
 | ||||
|     case RIG_LEVEL_MONITOR_GAIN: | ||||
|         if (!newcat_valid_command(rig, "ML")) | ||||
|         { | ||||
|             return -RIG_ENAVAIL; | ||||
|         } | ||||
| 
 | ||||
|         snprintf(priv->cmd_str, sizeof(priv->cmd_str), "ML1%c", cat_term); | ||||
|         break; | ||||
| 
 | ||||
|     default: | ||||
|         return -RIG_EINVAL; | ||||
|     } | ||||
|  | @ -3486,8 +3513,19 @@ int newcat_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val) | |||
| 
 | ||||
|         break; | ||||
| 
 | ||||
|     case RIG_LEVEL_AF: | ||||
|     case RIG_LEVEL_MICGAIN: | ||||
|         if (is_ft1200 || is_ft3000 || is_ft891 || is_ft991 || is_ft101) | ||||
|         { | ||||
|             scale = 100.; | ||||
|         } | ||||
|         else | ||||
|         { | ||||
|             scale = 255.; | ||||
|         } | ||||
|         val->f = (float)atoi(retlvl) / scale; | ||||
|         break; | ||||
| 
 | ||||
|     case RIG_LEVEL_AF: | ||||
|     case RIG_LEVEL_RF: | ||||
|     case RIG_LEVEL_SQL: | ||||
|     case RIG_LEVEL_ALC: | ||||
|  | @ -3703,6 +3741,18 @@ int newcat_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val) | |||
|         val->i = atoi(retlvl) * 10; | ||||
|         break; | ||||
| 
 | ||||
|     case RIG_LEVEL_MONITOR_GAIN: | ||||
|         if (is_ft1200 || is_ft3000 || is_ft891 || is_ft991 || is_ft101) | ||||
|         { | ||||
|             scale = 100.; | ||||
|         } | ||||
|         else | ||||
|         { | ||||
|             scale = 255.; | ||||
|         } | ||||
|         val->f = (float)atoi(retlvl) / scale; | ||||
|         break; | ||||
| 
 | ||||
|     default: | ||||
|         return -RIG_EINVAL; | ||||
|     } | ||||
|  | @ -3866,7 +3916,13 @@ int newcat_set_func(RIG *rig, vfo_t vfo, setting_t func, int status) | |||
|             return -RIG_ENAVAIL; | ||||
|         } | ||||
| 
 | ||||
|         if (is_ft101 || is_ft5000) | ||||
|         if (is_ft1200 || is_ft3000 || is_ft991 || is_ft101) | ||||
|         { | ||||
|             // 1 = OFF, 2 = ON for these rigs
 | ||||
|             snprintf(priv->cmd_str, sizeof(priv->cmd_str), "PR0%d%c", status ? 2 : 1, | ||||
|                      cat_term); | ||||
|         } | ||||
|         else if (is_ft891) | ||||
|         { | ||||
|             snprintf(priv->cmd_str, sizeof(priv->cmd_str), "PR0%d%c", status ? 1 : 0, | ||||
|                      cat_term); | ||||
|  | @ -3936,6 +3992,7 @@ int newcat_get_func(RIG *rig, vfo_t vfo, setting_t func, int *status) | |||
|     struct newcat_priv_data *priv = (struct newcat_priv_data *)rig->state.priv; | ||||
|     int err; | ||||
|     int ret_data_len; | ||||
|     int last_digit_index; | ||||
|     char *retfunc; | ||||
|     char main_sub_vfo = '0'; | ||||
| 
 | ||||
|  | @ -4071,7 +4128,7 @@ int newcat_get_func(RIG *rig, vfo_t vfo, setting_t func, int *status) | |||
|             return -RIG_ENAVAIL; | ||||
|         } | ||||
| 
 | ||||
|         if (is_ft101 || is_ft5000) | ||||
|         if (is_ft1200 || is_ft3000 || is_ft891 || is_ft991 || is_ft101) | ||||
|         { | ||||
|             snprintf(priv->cmd_str, sizeof(priv->cmd_str), "PR0%c", cat_term); | ||||
|         } | ||||
|  | @ -4128,6 +4185,7 @@ int newcat_get_func(RIG *rig, vfo_t vfo, setting_t func, int *status) | |||
|     } | ||||
| 
 | ||||
|     ret_data_len = strlen(priv->ret_data); | ||||
|     last_digit_index = ret_data_len - 1; | ||||
| 
 | ||||
|     /* skip command */ | ||||
|     retfunc = priv->ret_data + strlen(priv->cmd_str) - 1; | ||||
|  | @ -4142,19 +4200,28 @@ int newcat_get_func(RIG *rig, vfo_t vfo, setting_t func, int *status) | |||
|         break; | ||||
| 
 | ||||
|     case RIG_FUNC_COMP: | ||||
| 
 | ||||
|         // future Yaesu's may use the new command format
 | ||||
|         // so we do this check here instead of the back end
 | ||||
|         // only need to add the "|| is_XXX" here
 | ||||
|         if (is_ft101) { *status = (retfunc[1] == '0') ? 0 : 1; } | ||||
|         else { *status = (retfunc[0] == '0') ? 0 : 1; } | ||||
| 
 | ||||
|         if (is_ft1200 || is_ft3000 || is_ft991 || is_ft101) | ||||
|         { | ||||
|             // The return values are 1=OFF and 2=ON for these rigs
 | ||||
|             *status = (retfunc[1] == '2') ? 1 : 0; | ||||
|         } | ||||
|         else if (is_ft891) | ||||
|         { | ||||
|             *status = (retfunc[1] == '1') ? 1 : 0; | ||||
|         } | ||||
|         else | ||||
|         { | ||||
|             *status = (retfunc[0] == '0') ? 0 : 1; | ||||
|         } | ||||
|         break; | ||||
| 
 | ||||
|     case RIG_FUNC_MON: | ||||
|         // The number of digits varies by rig, but the last digit indicates the status always
 | ||||
|         *status = (retfunc[last_digit_index] == '0') ? 0 : 1; | ||||
|         break; | ||||
|     case RIG_FUNC_ANF: | ||||
|     case RIG_FUNC_FBKIN: | ||||
|     case RIG_FUNC_LOCK: | ||||
|     case RIG_FUNC_MON: | ||||
|     case RIG_FUNC_NB: | ||||
|     case RIG_FUNC_NR: | ||||
|     case RIG_FUNC_VOX: | ||||
|  |  | |||
|  | @ -50,7 +50,7 @@ | |||
| typedef char ncboolean; | ||||
| 
 | ||||
| /* shared function version */ | ||||
| #define NEWCAT_VER "20201016" | ||||
| #define NEWCAT_VER "20201023" | ||||
| 
 | ||||
| /* Hopefully large enough for future use, 128 chars plus '\0' */ | ||||
| #define NEWCAT_DATA_LEN                 129 | ||||
|  |  | |||
		Ładowanie…
	
		Reference in New Issue
	
	 Mikael Nousiainen
						Mikael Nousiainen