// 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
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;
}
#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
#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;
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");
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;
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));