kopia lustrzana https://github.com/Hamlib/Hamlib
Patch from Michael Smith for the OS456:
- adds SQL status and signal strength support - fixes the signal strength scaling - adds code to support get_ctcss_tone(), get_dcs_code() and rig_recv_dtmf() git-svn-id: https://hamlib.svn.sourceforge.net/svnroot/hamlib/trunk@1436 7ae35d74-ebe9-4afe-98af-79ac388436b8Hamlib-1.1.4
rodzic
e0b2a7b4ac
commit
524341a0f7
|
@ -2,7 +2,7 @@
|
|||
* Hamlib CI-V backend - main header
|
||||
* Copyright (c) 2000-2003 by Stephane Fillod
|
||||
*
|
||||
* $Id: icom.h,v 1.54 2003-04-06 18:40:35 fillods Exp $
|
||||
* $Id: icom.h,v 1.55 2003-04-09 06:37:37 fillods Exp $
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Library General Public License as
|
||||
|
@ -140,6 +140,9 @@ int icom_decode_event(RIG *rig);
|
|||
int optoscan_open(RIG *rig);
|
||||
int optoscan_close(RIG *rig);
|
||||
const char* optoscan_get_info(RIG *rig);
|
||||
int optoscan_get_ctcss_tone(RIG *rig, vfo_t vfo, tone_t *tone);
|
||||
int optoscan_get_dcs_code(RIG * rig, vfo_t vfo, tone_t *code);
|
||||
int optoscan_recv_dtmf(RIG *rig, vfo_t vfo, char *digits, int *length);
|
||||
|
||||
extern const struct confparams icom_cfg_params[];
|
||||
|
||||
|
|
109
icom/optoscan.c
109
icom/optoscan.c
|
@ -2,7 +2,7 @@
|
|||
* Hamlib CI-V backend - OptoScan extensions
|
||||
* Copyright (c) 2000-2003 by Stephane Fillod
|
||||
*
|
||||
* $Id: optoscan.c,v 1.3 2003-04-07 22:41:51 fillods Exp $
|
||||
* $Id: optoscan.c,v 1.4 2003-04-09 06:37:37 fillods Exp $
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Library General Public License as
|
||||
|
@ -134,4 +134,111 @@ const char* optoscan_get_info(RIG *rig)
|
|||
return info;
|
||||
}
|
||||
|
||||
/*
|
||||
* optoscan_get_ctcss_tone
|
||||
* Assumes rig!=NULL, rig->state.priv!=NULL
|
||||
*/
|
||||
int optoscan_get_ctcss_tone(RIG *rig, vfo_t vfo, tone_t *tone)
|
||||
{
|
||||
const struct rig_caps *caps;
|
||||
unsigned char tonebuf[MAXFRAMELEN];
|
||||
int tone_len, retval;
|
||||
|
||||
caps = rig->caps;
|
||||
|
||||
retval = icom_transaction(rig, C_CTL_MISC, S_OPTO_RDCTCSS, NULL, 0,
|
||||
tonebuf, &tone_len);
|
||||
if (retval != RIG_OK)
|
||||
return retval;
|
||||
|
||||
if (tone_len != 4) {
|
||||
rig_debug(RIG_DEBUG_ERR,"optoscan_get_ctcss_tone: ack NG (%#.2x), "
|
||||
"len=%d\n", tonebuf[0], tone_len);
|
||||
return -RIG_ERJCTED;
|
||||
}
|
||||
|
||||
tone_len -= 2;
|
||||
|
||||
*tone = from_bcd_be(tonebuf+2, tone_len*2);
|
||||
rig_debug(RIG_DEBUG_ERR,"optoscan_get_ctcss_tone: *tone=%d\n",*tone);
|
||||
|
||||
return RIG_OK;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* optoscan_get_dcs_code
|
||||
* Assumes rig!=NULL, rig->state.priv!=NULL
|
||||
*/
|
||||
int optoscan_get_dcs_code(RIG * rig, vfo_t vfo, tone_t *code)
|
||||
{
|
||||
const struct rig_caps *caps;
|
||||
unsigned char tonebuf[MAXFRAMELEN];
|
||||
int tone_len, retval;
|
||||
|
||||
caps = rig->caps;
|
||||
|
||||
retval = icom_transaction(rig, C_CTL_MISC, S_OPTO_RDDCS, NULL, 0,
|
||||
tonebuf, &tone_len);
|
||||
if (retval != RIG_OK)
|
||||
return retval;
|
||||
|
||||
if (tone_len != 4) {
|
||||
rig_debug(RIG_DEBUG_ERR,"optoscan_get_dcs_code: ack NG (%#.2x), "
|
||||
"len=%d\n", tonebuf[0], tone_len);
|
||||
return -RIG_ERJCTED;
|
||||
}
|
||||
|
||||
tone_len -= 2;
|
||||
|
||||
*code = from_bcd_be(tonebuf+2, tone_len*2);
|
||||
rig_debug(RIG_DEBUG_ERR,"optoscan_get_dcs_code: *code=%d\n",*code);
|
||||
|
||||
return RIG_OK;
|
||||
}
|
||||
|
||||
int optoscan_recv_dtmf(RIG *rig, vfo_t vfo, char *digits, int *length)
|
||||
{
|
||||
const struct rig_caps *caps;
|
||||
unsigned char dtmfbuf[MAXFRAMELEN],digit;
|
||||
int len, retval, digitpos;
|
||||
unsigned char xlate[] = {"0","1","2","3","4","5","6",
|
||||
"7","8","9","A","B","C","D",
|
||||
"*","#"};
|
||||
caps = rig->caps;
|
||||
digitpos=0;
|
||||
|
||||
do {
|
||||
retval = icom_transaction(rig, C_CTL_MISC, S_OPTO_RDDTMF,
|
||||
NULL,0,dtmfbuf, &len);
|
||||
if (retval != RIG_OK)
|
||||
return retval;
|
||||
|
||||
if (len != 3) {
|
||||
rig_debug(RIG_DEBUG_ERR,"optoscan_recv_dtmf: ack NG (%#.2x), len=%d\n", dtmfbuf[0], len);
|
||||
return -RIG_ERJCTED;
|
||||
}
|
||||
|
||||
digit = dtmfbuf[2];
|
||||
|
||||
if( digit < 0x16 )
|
||||
{
|
||||
digits[digitpos] = xlate[digit];
|
||||
digitpos++;
|
||||
}
|
||||
} while( (digit != 0x99) && (digitpos < *length) );
|
||||
|
||||
*length = digitpos;
|
||||
digits[digitpos]=0;
|
||||
|
||||
if(*length > 0)
|
||||
{
|
||||
rig_debug(RIG_DEBUG_ERR,"optoscan_recv_dtmf: %d digits - %s\n",*length,digits);
|
||||
}
|
||||
else
|
||||
{
|
||||
rig_debug(RIG_DEBUG_ERR,"optoscan_recv_dtmf: no digits to read.\n");
|
||||
}
|
||||
|
||||
return RIG_OK;
|
||||
}
|
||||
|
|
14
icom/os456.c
14
icom/os456.c
|
@ -2,7 +2,7 @@
|
|||
* Hamlib CI-V backend - description of the OptoScan456
|
||||
* Copyright (c) 2000-2002 by Stephane Fillod
|
||||
*
|
||||
* $Id: os456.c,v 1.2 2002-08-16 17:43:01 fillods Exp $
|
||||
* $Id: os456.c,v 1.3 2003-04-09 06:37:37 fillods Exp $
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Library General Public License as
|
||||
|
@ -33,7 +33,7 @@
|
|||
|
||||
#define OS456_VFO_ALL (RIG_VFO_A)
|
||||
|
||||
#define OS456_LEVELS (RIG_LEVEL_STRENGTH)
|
||||
#define OS456_LEVELS (RIG_LEVEL_SQLSTAT|RIG_LEVEL_STRENGTH)
|
||||
|
||||
/*
|
||||
* The signal strength data is in the form of two bytes, each consisting
|
||||
|
@ -44,8 +44,8 @@
|
|||
*/
|
||||
|
||||
#define OS456_STR_CAL { 2, { \
|
||||
{ 125, -60 }, \
|
||||
{ 0, 60 }, \
|
||||
{ 125, -60 }, \
|
||||
} } /* TBC */
|
||||
|
||||
/*
|
||||
|
@ -85,8 +85,8 @@ const struct rig_caps os456_caps = {
|
|||
.timeout = 200,
|
||||
.retry = 3,
|
||||
.has_get_func = RIG_FUNC_NONE,
|
||||
.has_set_func = RIG_FUNC_NONE,
|
||||
.has_get_level = RIG_LEVEL_NONE,
|
||||
.has_set_func = RIG_FUNC_NONE,
|
||||
.has_get_level = OS456_LEVELS,
|
||||
.has_set_level = RIG_LEVEL_NONE,
|
||||
.has_get_parm = RIG_PARM_NONE,
|
||||
.has_set_parm = RIG_PARM_NONE,
|
||||
|
@ -157,5 +157,9 @@ const struct rig_caps os456_caps = {
|
|||
|
||||
.get_info = optoscan_get_info,
|
||||
|
||||
.get_ctcss_tone = optoscan_get_ctcss_tone,
|
||||
.get_dcs_code = optoscan_get_dcs_code,
|
||||
.recv_dtmf = optoscan_recv_dtmf,
|
||||
|
||||
};
|
||||
|
||||
|
|
Ładowanie…
Reference in New Issue