Add send_morse to icom rigs

Add send_morse to ic7300 -- now works with CQRLog CW mode

73
Mike W9MDB
Hamlib-3.1
Michael Black 2016-04-23 10:41:29 -05:00 zatwierdzone przez Nate Bargmann
rodzic 7ddb7841f6
commit 62a90596dc
3 zmienionych plików z 48 dodań i 0 usunięć

Wyświetl plik

@ -229,5 +229,6 @@ const struct rig_caps ic7300_caps = {
.get_split_mode = icom_get_split_mode,
.set_split_vfo = icom_set_split_vfo,
.get_split_vfo = NULL,
.send_morse = icom_send_morse
};

Wyświetl plik

@ -956,6 +956,16 @@ int icom_set_level(RIG *rig, vfo_t vfo, setting_t level, value_t val)
break;
}
}
if (rig->caps->rig_model == RIG_MODEL_IC7300) {
switch (level) {
case RIG_LEVEL_KEYSPD:
if (val.i < 6) val.i = 6;
if (val.i > 48) val.i = 48;
icom_val = (val.i-6)*(255/42.0)+.99;
default:
break;
}
}
/*
* Most of the time, the data field is a 3 digit BCD,
@ -1360,6 +1370,13 @@ int icom_get_level(RIG *rig, vfo_t vfo, setting_t level, value_t *val)
break;
}
}
else if ((rig->caps->rig_model == RIG_MODEL_IC7300)&&(level==RIG_LEVEL_KEYSPD)){
switch (level) {
case RIG_LEVEL_KEYSPD:
val->i = val->i*(42.0/255)+6+.5;
break;
}
}
rig_debug(RIG_DEBUG_TRACE,"icom_get_level: %d %d %d %f\n", lvl_len,
icom_val, val->i, val->f);
@ -3182,6 +3199,35 @@ int icom_scan(RIG *rig, vfo_t vfo, scan_t scan, int ch)
return RIG_OK;
}
/*
* icom_send_morse
* Assumes rig!=NULL, msg!=NULL
*/
int icom_send_morse (RIG * rig, vfo_t vfo, const char *msg)
{
unsigned char ackbuf[MAXFRAMELEN];
int ack_len=sizeof(ackbuf), retval;
int len = strlen(msg);
if (len > 30) len=30;
rig_debug(RIG_DEBUG_TRACE,"icom_send_morse: %s\n", msg);
retval = icom_transaction(rig, C_SND_CW, -1, (unsigned char*)msg, len,
ackbuf, &ack_len);
if (retval != RIG_OK)
return retval;
if (ack_len != 1 || ackbuf[0] != ACK) {
rig_debug(RIG_DEBUG_ERR,"icom_send_morse: ack NG (%#.2x), "
"len=%d\n", ackbuf[0],ack_len);
return -RIG_ERJCTED;
}
return RIG_OK;
}
/*
* icom_decode is called by sa_sigio, when some asynchronous
* data has been received from the rig

Wyświetl plik

@ -194,6 +194,7 @@ int icom_get_powerstat(RIG *rig, powerstat_t *status);
int icom_set_ant(RIG * rig, vfo_t vfo, ant_t ant);
int icom_get_ant(RIG * rig, vfo_t vfo, ant_t *ant);
int icom_decode_event(RIG *rig);
int icom_send_morse (RIG * rig, vfo_t vfo, const char *msg);
extern const struct confparams icom_cfg_params[];