MCPcopy Create free account
hub / github.com/BruceDevices/firmware / decodeNetBIOSLabel

Function decodeNetBIOSLabel

src/modules/wifi/responder.cpp:530–559  ·  view source on GitHub ↗

Décodage NetBIOS "A..P" (32 octets) -> "NAME "

Source from the content-addressed store, hash-verified

528
529// Décodage NetBIOS "A..P" (32 octets) -> "NAME<XX>"
530void decodeNetBIOSLabel(const uint8_t *enc32, char *out, size_t outSize) {
531 if (!enc32 || !out || outSize == 0) return;
532 out[0] = '\0';
533
534 // Convertit 32 caractères A..P en 16 octets bruts
535 uint8_t raw[16];
536 for (int i = 0; i < 16; ++i) {
537 uint8_t c1 = enc32[2 * i];
538 uint8_t c2 = enc32[2 * i + 1];
539 uint8_t hi = (c1 >= 'A' && c1 <= 'P') ? (uint8_t)(c1 - 'A') : 0;
540 uint8_t lo = (c2 >= 'A' && c2 <= 'P') ? (uint8_t)(c2 - 'A') : 0;
541 raw[i] = (uint8_t)((hi << 4) | lo);
542 }
543
544 // 15 premiers octets = nom (paddé avec des espaces), 16e = suffixe/type
545 char name[16];
546 memcpy(name, raw, 15);
547 name[15] = '\0';
548
549 // Trim des espaces de fin
550 int end = 14;
551 while (end >= 0 && name[end] == ' ') end--;
552 name[end + 1] = '\0';
553
554 uint8_t suffix = raw[15]; // ex: 0x00 pour <00>
555
556 // Rend "NAME<XX>" (out doit être assez grand, p.ex. 40 octets)
557 // %02X fonctionne sur Arduino (printf/printf-like).
558 snprintf(out, outSize, "%s<%02X>", name, suffix);
559}
560
561/***************************************************************************************
562** Function name: responder

Callers 1

responderFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected