diff --git a/rigs/anytone/anytone.c b/rigs/anytone/anytone.c index 9e359204f..0a8807249 100644 --- a/rigs/anytone/anytone.c +++ b/rigs/anytone/anytone.c @@ -163,15 +163,16 @@ int anytone_send(RIG *rig, // --------------------------------------------------------------------------- // anytone_receive // --------------------------------------------------------------------------- -int anytone_receive(RIG *rig, char *buf, int buf_len, int expected) +int anytone_receive(RIG *rig, unsigned char *buf, int buf_len, int expected) { int retval = RIG_OK; struct rig_state *rs = &rig->state; ENTERFUNC; - retval = read_string(&rs->rigport, (unsigned char *) buf, buf_len, - NULL, 0, 0, expected); +// retval = read_string(&rs->rigport, (unsigned char *) buf, buf_len, +// NULL, 0, 0, expected); + retval = read_block(&rs->rigport, buf, expected); if (retval > 0) { @@ -203,11 +204,11 @@ int anytone_transaction(RIG *rig, char *cmd, int cmd_len, int expected_len) if (retval == RIG_OK && expected_len != 0) { - char *buf = calloc(64, 1); + unsigned char *buf = calloc(64, 1); int len = anytone_receive(rig, buf, 64, expected_len); rig_debug(RIG_DEBUG_VERBOSE, "%s(%d): rx len=%d\n", __func__, __LINE__, len); - if (len == 16 && buf[0] == 0xaa && buf[1] == 0x53) + if (buf[0] == 0xaa && buf[1] == 0x53) { p->vfo_curr = buf[8] == 0x00 ? RIG_VFO_A : RIG_VFO_B; } @@ -346,7 +347,7 @@ int anytone_get_vfo(RIG *rig, vfo_t *vfo) { anytone_priv_data_ptr p = (anytone_priv_data_ptr) rig->state.priv; - anytone_transaction(rig, cmd, sizeof(cmd), 16); + anytone_transaction(rig, cmd, sizeof(cmd), 17); *vfo = p->vfo_curr; } @@ -399,8 +400,8 @@ int anytone_set_vfo(RIG *rig, vfo_t vfo) anytone_transaction(rig, buf1, 8, 0); hl_usleep(100 * 1000); anytone_transaction(rig, buf2, 8, 0); - unsigned char reply[16]; - int nbytes = read_block(&rig->state.rigport, reply, 16); + unsigned char reply[17]; + int nbytes = read_block(&rig->state.rigport, reply, 17); rig_debug(RIG_DEBUG_ERR, "%s(%d): nbytes=%d\n", __func__, __LINE__, nbytes); if (reply[8] == 0x00) { p->vfo_curr = RIG_VFO_A; } diff --git a/simulators/simatd578.c b/simulators/simatd578.c index f9b977332..82b07a027 100644 --- a/simulators/simatd578.c +++ b/simulators/simatd578.c @@ -138,11 +138,11 @@ again: n = write(fd, buf, 1); } - if (buf[4] == 0x0d) // set vfo + if (buf[4] == 0x20) // get vfo { - printf("Set VFO key1=%d, curr_vfo=%d\n", buf[2], curr_vfo); + printf("Get VFO curr_vfo=%d\n", curr_vfo); - if (buf[2] == 0x00) + if (buf[4] == 0x20) { if (curr_vfo == 1) { @@ -154,14 +154,14 @@ again: } } - printf("Set VFO key2=%d, curr_vfo=%d\n", buf[2], curr_vfo); + printf("Get VFO curr_vfo=%d\n", curr_vfo); buf2[0] = 0xaa; buf2[1] = 0x53; buf2[2] = 0x00; buf2[3] = 0x00; buf2[4] = 0x00; - buf2[5] = 0x00; - buf2[6] = 0x00; + buf2[5] = 0x01; + buf2[6] = 0x01; buf2[7] = 0x00; buf2[8] = curr_vfo; buf2[9] = 0x00; @@ -170,9 +170,10 @@ again: buf2[12] = 0x00; buf2[13] = 0x00; buf2[14] = 0x00; - buf2[15] = 0x06; + buf2[15] = 0x00; + buf2[16] = 0x06; - if (buf[2] == 0x00) { n = write(fd, buf2, 16); } + if (buf[4] == 0x20) { n = write(fd, buf2, 17); } else { n = 0; } }