kopia lustrzana https://github.com/Hamlib/Hamlib
kenwood: send the whole buffer at once, added kenwood_cmd
git-svn-id: https://hamlib.svn.sourceforge.net/svnroot/hamlib/trunk@2885 7ae35d74-ebe9-4afe-98af-79ac388436b8Hamlib-1.2.11
rodzic
092dd5915e
commit
328e67a44d
|
@ -172,16 +172,27 @@ transaction_write:
|
||||||
serial_flush(&rs->rigport);
|
serial_flush(&rs->rigport);
|
||||||
|
|
||||||
if (cmdstr) {
|
if (cmdstr) {
|
||||||
|
|
||||||
|
char *cmd;
|
||||||
int len = strlen(cmdstr);
|
int len = strlen(cmdstr);
|
||||||
|
|
||||||
retval = write_block(&rs->rigport, cmdstr, strlen(cmdstr));
|
cmd = malloc(len + 2);
|
||||||
if (retval != RIG_OK)
|
if (cmd == NULL) {
|
||||||
|
retval = -RIG_ENOMEM;
|
||||||
goto transaction_quit;
|
goto transaction_quit;
|
||||||
|
}
|
||||||
|
|
||||||
|
memcpy(cmd, cmdstr, len);
|
||||||
|
|
||||||
/* XXX the if is temporary, until all invocations are fixed */
|
/* XXX the if is temporary, until all invocations are fixed */
|
||||||
/* XXX eventually a buffer could be used and write_block called once */
|
if (cmdstr[len - 1] != ';' && cmdstr[len - 1] != '\r') {
|
||||||
if (cmdstr[len - 1] != ';' && cmdstr[len - 1] != '\r')
|
cmd[len] = '\r';
|
||||||
retval = write_block(&rs->rigport, &caps->cmdtrm, 1);
|
len++;
|
||||||
|
}
|
||||||
|
|
||||||
|
retval = write_block(&rs->rigport, cmd, len);
|
||||||
|
|
||||||
|
free(cmd);
|
||||||
|
|
||||||
if (retval != RIG_OK)
|
if (retval != RIG_OK)
|
||||||
goto transaction_quit;
|
goto transaction_quit;
|
||||||
|
|
|
@ -23,6 +23,7 @@
|
||||||
#ifndef _KENWOOD_H
|
#ifndef _KENWOOD_H
|
||||||
#define _KENWOOD_H 1
|
#define _KENWOOD_H 1
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
#include "token.h"
|
#include "token.h"
|
||||||
|
|
||||||
#define BACKEND_VER "0.7"
|
#define BACKEND_VER "0.7"
|
||||||
|
@ -164,7 +165,7 @@ extern const struct rig_caps r5000_caps;
|
||||||
|
|
||||||
extern const struct rig_caps ts480_caps;
|
extern const struct rig_caps ts480_caps;
|
||||||
|
|
||||||
/* use when not interested in the answer, bit want to check its len */
|
/* use when not interested in the answer, but want to check its len */
|
||||||
static int inline kenwood_simple_transaction(RIG *rig, const char *cmd, size_t expected)
|
static int inline kenwood_simple_transaction(RIG *rig, const char *cmd, size_t expected)
|
||||||
{
|
{
|
||||||
char buf[10];
|
char buf[10];
|
||||||
|
@ -178,4 +179,11 @@ static int inline kenwood_simple_cmd(RIG *rig, const char *cmd)
|
||||||
return kenwood_safe_transaction(rig, cmd, buf, 10, 0);
|
return kenwood_safe_transaction(rig, cmd, buf, 10, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* answer is the same as the command */
|
||||||
|
static int inline kenwood_cmd(RIG *rig, const char *cmd)
|
||||||
|
{
|
||||||
|
char buf[10];
|
||||||
|
return kenwood_safe_transaction(rig, cmd, buf, 10, strlen(cmd) + 1);
|
||||||
|
}
|
||||||
|
|
||||||
#endif /* _KENWOOD_H */
|
#endif /* _KENWOOD_H */
|
||||||
|
|
Ładowanie…
Reference in New Issue