From: DL1YCF <dl1ycf@darc.de> Date: Sat, 4 Jan 2020 11:32:26 +0000 (+0100) Subject: Support for HermesLite V1/V2 discrimination X-Git-Url: https://git.rkrishnan.org/%5B/htmlfontify-example.html?a=commitdiff_plain;h=ba5128d69abb35624d0fdaaa6c2a242e8a4cb6ef;p=pihpsdr.git Support for HermesLite V1/V2 discrimination --- diff --git a/discovered.h b/discovered.h index 79e08fd..c6bca2c 100644 --- a/discovered.h +++ b/discovered.h @@ -30,28 +30,29 @@ // ANAN 7000DLE and 8000DLE uses 10 as the device type in old protocol // Newer STEMlab hpsdr emulators use 100 instead of 1 -#define DEVICE_METIS 0 -#define DEVICE_HERMES 1 -#define DEVICE_GRIFFIN 2 -#define DEVICE_ANGELIA 4 -#define DEVICE_ORION 5 -#define DEVICE_HERMES_LITE 6 -#define DEVICE_HERMES_LITE2 7 -#define DEVICE_ORION2 10 -#define DEVICE_STEMLAB 100 +// HermesLite V2 uses V1 board ID and software version >= 40 +#define DEVICE_METIS 0 +#define DEVICE_HERMES 1 +#define DEVICE_GRIFFIN 2 +#define DEVICE_ANGELIA 4 +#define DEVICE_ORION 5 +#define DEVICE_HERMES_LITE 6 +#define DEVICE_HERMES_LITE2 1006 +#define DEVICE_ORION2 10 +#define DEVICE_STEMLAB 100 #ifdef USBOZY #define DEVICE_OZY 7 #endif -#define NEW_DEVICE_ATLAS 0 -#define NEW_DEVICE_HERMES 1 -#define NEW_DEVICE_HERMES2 2 -#define NEW_DEVICE_ANGELIA 3 -#define NEW_DEVICE_ORION 4 -#define NEW_DEVICE_ORION2 5 -#define NEW_DEVICE_HERMES_LITE 6 -#define NEW_DEVICE_HERMES_LITE2 7 +#define NEW_DEVICE_ATLAS 0 +#define NEW_DEVICE_HERMES 1 +#define NEW_DEVICE_HERMES2 2 +#define NEW_DEVICE_ANGELIA 3 +#define NEW_DEVICE_ORION 4 +#define NEW_DEVICE_ORION2 5 +#define NEW_DEVICE_HERMES_LITE 6 +#define NEW_DEVICE_HERMES_LITE2 1006 #ifdef SOAPYSDR #define SOAPYSDR_USB_DEVICE 0 diff --git a/hpsdrsim.c b/hpsdrsim.c index ad26a3e..c8dc5d1 100644 --- a/hpsdrsim.c +++ b/hpsdrsim.c @@ -762,6 +762,10 @@ int main(int argc, char *argv[]) buffer[20]=2; buffer[21]=1; buffer[22]=3; + // HERMES_LITE2 is a HermesLite with a new software version + if (NEWDEVICE == NEW_DEVICE_HERMES_LITE2) { + buffer[11]=NEW_DEVICE_HERMES_LITE; + } sendto(sock_udp, buffer, 60, 0, (struct sockaddr *)&addr_from, sizeof(addr_from)); break; } diff --git a/hpsdrsim.h b/hpsdrsim.h index f7c16e8..1c602ca 100644 --- a/hpsdrsim.h +++ b/hpsdrsim.h @@ -22,7 +22,7 @@ #define DEVICE_ANGELIA 4 #define DEVICE_ORION 5 #define DEVICE_HERMES_LITE 6 -#define DEVICE_HERMES_LITE2 7 +#define DEVICE_HERMES_LITE2 1006 #define DEVICE_ORION2 10 #define DEVICE_C25 100 @@ -33,7 +33,7 @@ #define NEW_DEVICE_ORION 4 #define NEW_DEVICE_ORION2 5 #define NEW_DEVICE_HERMES_LITE 6 -#define NEW_DEVICE_HERMES_LITE2 7 +#define NEW_DEVICE_HERMES_LITE2 1006 EXTERN int OLDDEVICE; EXTERN int NEWDEVICE; diff --git a/new_discovery.c b/new_discovery.c index ac0e55a..4d7a497 100644 --- a/new_discovery.c +++ b/new_discovery.c @@ -217,6 +217,8 @@ gpointer new_discover_receive_thread(gpointer data) { if(devices<MAX_DEVICES) { discovered[devices].protocol=NEW_PROTOCOL; discovered[devices].device=buffer[11]&0xFF; + discovered[devices].software_version=buffer[13]&0xFF; + discovered[devices].status=status; switch(discovered[devices].device) { case NEW_DEVICE_ATLAS: strcpy(discovered[devices].name,"Atlas"); @@ -249,12 +251,12 @@ gpointer new_discover_receive_thread(gpointer data) { frequency_max=61440000.0; break; case NEW_DEVICE_HERMES_LITE: - strcpy(discovered[devices].name,"Hermes Lite"); - frequency_min=0.0; - frequency_max=30720000.0; - break; - case NEW_DEVICE_HERMES_LITE2: - strcpy(discovered[devices].name,"Hermes Lite 2"); + if (discovered[devices].software_version < 40) { + strcpy(discovered[devices].name,"Hermes Lite V1"); + } else { + strcpy(discovered[devices].name,"Hermes Lite V2"); + discovered[devices].device = NEW_DEVICE_HERMES_LITE2; + } frequency_min=0.0; frequency_max=30720000.0; break; @@ -264,11 +266,9 @@ gpointer new_discover_receive_thread(gpointer data) { frequency_max=30720000.0; break; } - discovered[devices].software_version=buffer[13]&0xFF; for(i=0;i<6;i++) { discovered[devices].info.network.mac_address[i]=buffer[i+5]; } - discovered[devices].status=status; memcpy((void*)&discovered[devices].info.network.address,(void*)&addr,sizeof(addr)); discovered[devices].info.network.address_length=sizeof(addr); memcpy((void*)&discovered[devices].info.network.interface_address,(void*)&interface_addr,sizeof(interface_addr));