kopia lustrzana https://github.com/Hamlib/Hamlib
Add modelist to multicast
Add time to multicast Fix id to show rig+path Remove sleep to speed up multicast packets to once per seconds https://github.com/Hamlib/Hamlib/issues/695pull/1389/head
rodzic
da9199577e
commit
5f825aa0d4
|
@ -560,7 +560,7 @@ int multicast_init(RIG *rig, char *addr, int port)
|
||||||
rig->state.multicast->dest_addr.sin_addr.s_addr = inet_addr(addr);
|
rig->state.multicast->dest_addr.sin_addr.s_addr = inet_addr(addr);
|
||||||
rig->state.multicast->dest_addr.sin_port = htons(port);
|
rig->state.multicast->dest_addr.sin_port = htons(port);
|
||||||
|
|
||||||
#if 1
|
#if 0
|
||||||
rig->state.multicast->runflag = 1;
|
rig->state.multicast->runflag = 1;
|
||||||
pthread_create(&rig->state.multicast->threadid, NULL, multicast_thread,
|
pthread_create(&rig->state.multicast->threadid, NULL, multicast_thread,
|
||||||
(void *)rig);
|
(void *)rig);
|
||||||
|
|
|
@ -887,7 +887,7 @@ void *multicast_publisher(void *arg)
|
||||||
RIG *rig = args->rig;
|
RIG *rig = args->rig;
|
||||||
struct rig_state *rs = &rig->state;
|
struct rig_state *rs = &rig->state;
|
||||||
struct rig_spectrum_line spectrum_line;
|
struct rig_spectrum_line spectrum_line;
|
||||||
uint8_t packet_type;
|
uint8_t packet_type = MULTICAST_PUBLISHER_DATA_PACKET_TYPE_SPECTRUM;
|
||||||
|
|
||||||
struct sockaddr_in dest_addr;
|
struct sockaddr_in dest_addr;
|
||||||
int socket_fd = args->socket_fd;
|
int socket_fd = args->socket_fd;
|
||||||
|
@ -913,13 +913,13 @@ void *multicast_publisher(void *arg)
|
||||||
{
|
{
|
||||||
if (result == -RIG_ETIMEOUT)
|
if (result == -RIG_ETIMEOUT)
|
||||||
{
|
{
|
||||||
continue;
|
// continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: how to detect closing of pipe, indicate with error code
|
// TODO: how to detect closing of pipe, indicate with error code
|
||||||
// TODO: error handling, flush pipe in case of error?
|
// TODO: error handling, flush pipe in case of error?
|
||||||
hl_usleep(500 * 1000);
|
//hl_usleep(500 * 1000);
|
||||||
continue;
|
// continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
result = snapshot_serialize(sizeof(snapshot_buffer), snapshot_buffer, rig,
|
result = snapshot_serialize(sizeof(snapshot_buffer), snapshot_buffer, rig,
|
||||||
|
|
|
@ -1486,7 +1486,7 @@ int HAMLIB_API rig_open(RIG *rig)
|
||||||
memcpy(&rs->pttport_deprecated, &rs->pttport, sizeof(hamlib_port_t_deprecated));
|
memcpy(&rs->pttport_deprecated, &rs->pttport, sizeof(hamlib_port_t_deprecated));
|
||||||
memcpy(&rs->dcdport_deprecated, &rs->dcdport, sizeof(hamlib_port_t_deprecated));
|
memcpy(&rs->dcdport_deprecated, &rs->dcdport, sizeof(hamlib_port_t_deprecated));
|
||||||
rig_flush_force(&rs->rigport, 1);
|
rig_flush_force(&rs->rigport, 1);
|
||||||
if (rig->caps->rig_model != RIG_MODEL_NETRIGCTL) multicast_init(rig, "224.0.0.1", 4532);
|
// if (rig->caps->rig_model != RIG_MODEL_NETRIGCTL) multicast_init(rig, "224.0.0.1", 4532);
|
||||||
RETURNFUNC2(RIG_OK);
|
RETURNFUNC2(RIG_OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1526,7 +1526,7 @@ int HAMLIB_API rig_close(RIG *rig)
|
||||||
|
|
||||||
morse_data_handler_stop(rig);
|
morse_data_handler_stop(rig);
|
||||||
async_data_handler_stop(rig);
|
async_data_handler_stop(rig);
|
||||||
multicast_stop(rig);
|
//multicast_stop(rig);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Let the backend say 73s to the rig.
|
* Let the backend say 73s to the rig.
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
#include "misc.h"
|
#include "misc.h"
|
||||||
#include "snapshot_data.h"
|
#include "snapshot_data.h"
|
||||||
#include "hamlibdatetime.h"
|
#include "hamlibdatetime.h"
|
||||||
|
#include "sprintflst.h"
|
||||||
|
|
||||||
#include "cJSON.h"
|
#include "cJSON.h"
|
||||||
|
|
||||||
|
@ -15,9 +16,13 @@
|
||||||
static int snapshot_serialize_rig(cJSON *rig_node, RIG *rig)
|
static int snapshot_serialize_rig(cJSON *rig_node, RIG *rig)
|
||||||
{
|
{
|
||||||
cJSON *node;
|
cJSON *node;
|
||||||
|
char buf[1024];
|
||||||
|
|
||||||
// TODO: need to assign rig an ID, e.g. from command line
|
// TODO: need to assign rig an ID, e.g. from command line
|
||||||
node = cJSON_AddStringToObject(rig_node, "id", "rig_id");
|
snprintf(buf, sizeof(buf), "%s:%s", rig->caps->model_name,
|
||||||
|
rig->state.rigport.pathname);
|
||||||
|
|
||||||
|
node = cJSON_AddStringToObject(rig_node, "id", buf);
|
||||||
|
|
||||||
if (node == NULL)
|
if (node == NULL)
|
||||||
{
|
{
|
||||||
|
@ -72,6 +77,14 @@ static int snapshot_serialize_rig(cJSON *rig_node, RIG *rig)
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rig_sprintf_mode(buf, sizeof(buf), rig->state.mode_list);
|
||||||
|
node = cJSON_AddStringToObject(rig_node, "modelist", buf);
|
||||||
|
|
||||||
|
if (node == NULL)
|
||||||
|
{
|
||||||
|
goto error;
|
||||||
|
}
|
||||||
|
|
||||||
RETURNFUNC2(RIG_OK);
|
RETURNFUNC2(RIG_OK);
|
||||||
|
|
||||||
error:
|
error:
|
||||||
|
@ -296,6 +309,7 @@ int snapshot_serialize(size_t buffer_length, char *buffer, RIG *rig,
|
||||||
cJSON *rig_node, *vfos_array, *vfo_node, *spectra_array, *spectrum_node;
|
cJSON *rig_node, *vfos_array, *vfo_node, *spectra_array, *spectrum_node;
|
||||||
cJSON *node;
|
cJSON *node;
|
||||||
cJSON_bool bool_result;
|
cJSON_bool bool_result;
|
||||||
|
char buf[256];
|
||||||
|
|
||||||
int vfo_count = 2;
|
int vfo_count = 2;
|
||||||
vfo_t vfos[MAX_VFO_COUNT];
|
vfo_t vfos[MAX_VFO_COUNT];
|
||||||
|
@ -334,6 +348,14 @@ int snapshot_serialize(size_t buffer_length, char *buffer, RIG *rig,
|
||||||
{
|
{
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
date_strget(buf, sizeof(buf), 0);
|
||||||
|
node = cJSON_AddStringToObject(root_node, "time", buf);
|
||||||
|
|
||||||
|
if (node == NULL)
|
||||||
|
{
|
||||||
|
goto error;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// TODO: Calculate 32-bit CRC of the entire JSON record replacing the CRC value with 0
|
// TODO: Calculate 32-bit CRC of the entire JSON record replacing the CRC value with 0
|
||||||
node = cJSON_AddNumberToObject(root_node, "crc", 0);
|
node = cJSON_AddNumberToObject(root_node, "crc", 0);
|
||||||
|
|
Ładowanie…
Reference in New Issue