From f55e7b8348e89f626d734bd0003df9d5e3e95aa5 Mon Sep 17 00:00:00 2001 From: Mike Black W9MDB Date: Sun, 7 May 2023 23:23:01 -0500 Subject: [PATCH] Rename multicast test routines and clean up things a bit Now works on mingw32 and Linux https://github.com/Hamlib/Hamlib/issues/695 --- src/multicast.c | 23 ++++++++++++++++++- tests/Makefile.am | 2 +- tests/{multicastserver.c => rigtestmcast.c} | 9 +++++++- tests/{multicastclient.c => rigtestmcastrx.c} | 0 4 files changed, 31 insertions(+), 3 deletions(-) rename tests/{multicastserver.c => rigtestmcast.c} (69%) rename tests/{multicastclient.c => rigtestmcastrx.c} (100%) diff --git a/src/multicast.c b/src/multicast.c index 07fd910c3..697be8cd1 100644 --- a/src/multicast.c +++ b/src/multicast.c @@ -236,15 +236,31 @@ void *multicast_thread(void *vrig) multicast_status_changed(rig); multicast_send_json(rig); loopcount = 4; + freqsave = freq; } } +#ifdef _WIN32 + WSACleanup(); +#endif + return NULL; } int multicast_init(RIG *rig, char *addr, int port) { +#ifdef _WIN32 + WSADATA wsaData; + + if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) + { + fprintf(stderr, "WSAStartup failed: %d\n", WSAGetLastError()); + return 1; + } + +#endif + if (rig->state.multicast == NULL) { rig->state.multicast = calloc(1, sizeof(struct multicast_s)); @@ -258,11 +274,16 @@ int multicast_init(RIG *rig, char *addr, int port) if (port == 0) { port = RIG_MULTICAST_PORT; } // Create a UDP socket - rig->state.multicast->sock = socket(AF_INET, SOCK_DGRAM, 0); + rig->state.multicast->sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); if (rig->state.multicast->sock < 0) { +#ifdef _WIN32 + int err = WSAGetLastError(); + rig_debug(RIG_DEBUG_ERR, "%s: socket: WSAGetLastError=%d\n", __func__, err); +#else rig_debug(RIG_DEBUG_ERR, "%s: socket: %s\n", __func__, strerror(errno)); +#endif return -RIG_EIO; } diff --git a/tests/Makefile.am b/tests/Makefile.am index 900ca6e11..8ef92741c 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -14,7 +14,7 @@ endif DISTCLEANFILES = rigctl.log rigctl.sum testbcd.log testbcd.sum -bin_PROGRAMS = rigctl rigctld rigmem rigsmtr rigswr rotctl rotctld rigctlcom rigctltcp rigctlsync ampctl ampctld multicastclient multicastserver $(TESTLIBUSB) +bin_PROGRAMS = rigctl rigctld rigmem rigsmtr rigswr rotctl rotctld rigctlcom rigctltcp rigctlsync ampctl ampctld rigtestmcast rigtestmcastrx $(TESTLIBUSB) #check_PROGRAMS = dumpmem testrig testrigopen testrigcaps testtrn testbcd testfreq listrigs testloc rig_bench testcache cachetest cachetest2 testcookie testgrid testsecurity check_PROGRAMS = dumpmem testrig testrigopen testrigcaps testtrn testbcd testfreq listrigs testloc rig_bench testcache cachetest cachetest2 testcookie testgrid hamlibmodels diff --git a/tests/multicastserver.c b/tests/rigtestmcast.c similarity index 69% rename from tests/multicastserver.c rename to tests/rigtestmcast.c index 22394245e..719ff7b08 100644 --- a/tests/multicastserver.c +++ b/tests/rigtestmcast.c @@ -7,7 +7,7 @@ int main(int argc, char *argv[]) { RIG *rig; rig_model_t myrig_model; - rig_set_debug_level(RIG_DEBUG_NONE); + rig_set_debug_level(RIG_DEBUG_WARN); if (argc > 1) { myrig_model = atoi(argv[1]); } else @@ -19,13 +19,20 @@ int main(int argc, char *argv[]) if (rig == NULL) { + printf("Error in rig_init\n"); + return 1; } +#ifdef _WIN32 + strncpy(rig->state.rigport.pathname, "COM37", HAMLIB_FILPATHLEN - 1); +#else strncpy(rig->state.rigport.pathname, "/dev/ttyUSB0", HAMLIB_FILPATHLEN - 1); +#endif rig->state.rigport.parm.serial.rate = 38400; rig_open(rig); multicast_init(rig, "224.0.0.1", 4532); + printf("threadid=%lld\n", (long long)rig->state.multicast->threadid); pthread_join(rig->state.multicast->threadid, NULL); pthread_exit(NULL); return 0; diff --git a/tests/multicastclient.c b/tests/rigtestmcastrx.c similarity index 100% rename from tests/multicastclient.c rename to tests/rigtestmcastrx.c