Fix flrig for 64-bit mode

pull/123/head
Michael Black 2019-07-31 15:45:11 -05:00
rodzic d6a72d15bf
commit 4ca11325b5
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 6599353EC683404D
2 zmienionych plików z 18 dodań i 11 usunięć

Wyświetl plik

@ -169,7 +169,7 @@ const struct rig_caps flrig_caps = {
// Structure for mapping flrig dynmamic modes to hamlib modes
// flrig displays modes as the rig displays them
struct s_modeMap {
int mode_hamlib;
rmode_t mode_hamlib;
char *mode_flrig;
};
@ -378,7 +378,6 @@ static int write_transaction(RIG *rig, char *xml, int xml_len)
{
int try=rig->caps->retry;
int retval=-RIG_EPROTO;
char xmltmp[MAXXMLLEN];
struct rig_state *rs = &rig->state;
@ -386,6 +385,7 @@ static int write_transaction(RIG *rig, char *xml, int xml_len)
// We need to avoid and empty write as rigctld replies with blank line
if (xml_len == 0) {
rig_debug(RIG_DEBUG_ERR,"%s: len==0??\n",__FUNCTION__);
return retval;
}
// appears we can lose sync if we don't clear things out
@ -398,7 +398,6 @@ static int write_transaction(RIG *rig, char *xml, int xml_len)
return -RIG_EIO;
}
}
strcpy(xml,xmltmp);
return retval;
}
@ -446,7 +445,7 @@ static int flrig_init(RIG *rig)
* Assumes mode!=NULL
* Return the string for FLRig for the given hamlib mode
*/
static const char * modeMapGetFLRig(unsigned int modeHamlib)
static const char * modeMapGetFLRig(rmode_t modeHamlib)
{
int i;
for(i=0; modeMap[i].mode_hamlib!=0; ++i) {
@ -463,14 +462,14 @@ static const char * modeMapGetFLRig(unsigned int modeHamlib)
* Assumes mode!=NULL
* Return the hamlib mode from the given FLRig string
*/
static unsigned int modeMapGetHamlib(const char *modeFLRig)
static rmode_t modeMapGetHamlib (const char *modeFLRig)
{
int i;
char modeFLRigCheck[64];
snprintf(modeFLRigCheck,sizeof(modeFLRigCheck),"|%.32s|",modeFLRig);
snprintf(modeFLRigCheck,sizeof(modeFLRigCheck),"|%s|",modeFLRig);
for(i=0; modeMap[i].mode_hamlib!=0; ++i) {
if (modeMap[i].mode_flrig)
if (modeMap[i].mode_flrig && strstr(modeMap[i].mode_flrig,modeFLRigCheck)) {
rig_debug(RIG_DEBUG_TRACE,"%s: find '%s' in '%s'\n", __FUNCTION__, modeFLRigCheck, modeMap[i].mode_flrig);
if (modeMap[i].mode_flrig && strcmp(modeMap[i].mode_flrig,modeFLRigCheck)==0) {
return modeMap[i].mode_hamlib;
}
}
@ -483,10 +482,14 @@ static unsigned int modeMapGetHamlib(const char *modeFLRig)
* modeMapAdd
* Assumes modes!=NULL
*/
static void modeMapAdd(unsigned int *modes,int mode_hamlib,char *mode_flrig)
static void modeMapAdd(rmode_t *modes,rmode_t mode_hamlib,char *mode_flrig)
{
int i;
rig_debug(RIG_DEBUG_TRACE,"%s:mode_flrig=%s\n",__FUNCTION__,mode_flrig);
// if we already have it just return
if (modeMapGetHamlib(mode_flrig)!=-RIG_EINVAL) return;
int len1 = strlen(mode_flrig)+3; /* bytes needed for allocating */
for(i=0; modeMap[i].mode_hamlib!=0; ++i) {
if (modeMap[i].mode_hamlib==mode_hamlib) {
@ -583,7 +586,7 @@ static int flrig_open(RIG *rig) {
read_transaction(rig, xml, sizeof(xml));
xml_parse(xml, value, sizeof(value));
rig_debug(RIG_DEBUG_TRACE, "%s: modes=%s\n",__FUNCTION__, value);
unsigned int modes = 0;
rmode_t modes = 0;
char *p;
for(p=strtok(value,"|"); p!=NULL; p=strtok(NULL,"|")) {
if (streq(p,"USB")) modeMapAdd(&modes,RIG_MODE_USB,p);
@ -667,6 +670,10 @@ static int flrig_cleanup(RIG *rig) {
free(rig->state.priv);
rig->state.priv = NULL;
for(int i=0; modeMap[i].mode_hamlib!=0; ++i) {
if (modeMap[i].mode_flrig) free(modeMap[i].mode_flrig);
}
return RIG_OK;
}

Wyświetl plik

@ -28,7 +28,7 @@
#include <sys/time.h>
#endif
#define BACKEND_VER "1.6"
#define BACKEND_VER "1.7"
#define EOM "\r"
#define TRUE 1