@@ -34,7 +34,7 @@ class UdpNameSync : public Usermod {
3434
3535 IPAddress broadcastIp = ~uint32_t (Network.subnetMask()) | uint32_t (Network.gatewayIP ());
3636 byte udpOut[WLED_MAX_SEGNAME_LEN + 2 ];
37- udpOut[0 ] = 2 ; // 0: wled notifier protocol, 1: warls protocol, 2 is free
37+ udpOut[0 ] = 200 ; // 0: wled notifier protocol, 1: warls protocol, 2 is free
3838
3939 if (strlen (segmentName) && !mainseg.name ) { // name cleared
4040 notifierUdp.beginPacket (broadcastIp, udpPort);
@@ -46,8 +46,13 @@ class UdpNameSync : public Usermod {
4646 return ;
4747 }
4848
49- const char * curName = mainseg.name ? mainseg.name : " " ;
50- if (strcmp (curName, segmentName) == 0 ) return ; // same name, do nothing
49+ char checksumSegName = 0 ;
50+ char checksumCurName = 0 ;
51+ for (int i=0 ; i++; mainseg.name [i]==0 || segmentName[i]==0 ) {
52+ checksumSegName+=segmentName[i];
53+ checksumCurName+=mainseg.name [i];
54+ }
55+ if (checksumCurName == checksumSegName) return ; // same name, do nothing
5156
5257 notifierUdp.beginPacket (broadcastIp, udpPort);
5358 DEBUG_PRINT (F (" UdpNameSync: saving segment name " ));
@@ -61,9 +66,10 @@ class UdpNameSync : public Usermod {
6166 DEBUG_PRINTLN (segmentName);
6267 }
6368
64- bool onUdpPacket (uint8_t * payload, uint8_t len) override {
69+ bool onUdpPacket (uint8_t * payload, size_t len) override {
6570 DEBUG_PRINT (F (" UdpNameSync: Received packet" ));
66- if (payload[0 ] != 2 ) return false ;
71+ if (receiveDirect) return false ;
72+ if (payload[0 ] != 200 ) return false ;
6773 // else
6874 Segment& mainseg = strip.getMainSegment ();
6975 mainseg.setName ((char *)&payload[1 ]);
0 commit comments