A stack which works with or without an Mbed os library. Provides IPv4 or IPv6 with a full 1500 byte buffer.
Dependents: oldheating gps motorhome heating
Diff: net.cpp
- Revision:
- 14:e75a59c1123d
- Parent:
- 11:c051adb70c5a
- Child:
- 22:914b970356f0
--- a/net.cpp Mon May 01 18:20:55 2017 +0000 +++ b/net.cpp Fri May 05 17:44:16 2017 +0000 @@ -10,67 +10,6 @@ char* NetName; -static void addHexNibble(bool* pAdded, int number, int index, char** pp) -{ - int nibble = number; - if (index) nibble >>= 4; - nibble &= 0xF; - - if (nibble || *pAdded) - { - **pp = nibble < 10 ? nibble + '0' : nibble - 10 + 'a'; - *pp += 1; - *pAdded = true; - } -} -int NetIp6AddressToString(char* pIp, int size, char* pText) -{ - char* pIpE = pIp + 16; - char* p = pText; - while (true) - { - bool added = false; - if (*pIp || *(pIp + 1)) - { - if (p > pText + size - 2) break; addHexNibble(&added, *(pIp + 0), 1, &p); - if (p > pText + size - 2) break; addHexNibble(&added, *(pIp + 0), 0, &p); - if (p > pText + size - 2) break; addHexNibble(&added, *(pIp + 1), 1, &p); - if (p > pText + size - 2) break; addHexNibble(&added, *(pIp + 1), 0, &p); - } - - pIp += 2; - if (pIp >= pIpE) break; - - if (p > pText + size - 2) break; *p++ = ':'; - } - *p = 0; - return p - pText; -} -int NetIp4AddressToString(uint32_t ip, int size, char* text) -{ - int a0 = (ip & 0xFF000000) >> 24; - int a1 = (ip & 0x00FF0000) >> 16; - int a2 = (ip & 0x0000FF00) >> 8; - int a3 = (ip & 0x000000FF); - return snprintf(text, size, "%d.%d.%d.%d", a3, a2, a1, a0); -} -int NetMacToString(char* mac, int size, char* text) -{ - return snprintf(text, size, "%02x:%02x:%02x:%02x:%02x:%02x", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); -} -void NetProtocolToString(uint8_t protocol, int size, char* text) -{ - switch (protocol) - { - case ICMP: strncpy (text, "ICMP", size); break; - case IGMP: strncpy (text, "IGMP", size); break; - case ICMP6: strncpy (text, "ICMP6", size); break; - case TCP: strncpy (text, "TCP" , size); break; - case UDP: strncpy (text, "UDP" , size); break; - default: snprintf(text, size, "%d", protocol); break; - } -} - int16_t NetToHost16(int16_t n) { int16_t h;