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

Revision:
136:8a65abb0dc63
Parent:
121:bc048b65a630
Child:
137:cf6e7db0e985
--- a/ip4/udptcp4.c	Sat Mar 23 12:25:48 2019 +0000
+++ b/ip4/udptcp4.c	Sat Apr 06 11:20:20 2019 +0000
@@ -15,25 +15,17 @@
 #include     "ar4.h"
 #include     "led.h"
 #include   "fault.h"
+#include "checksum.h"
 
 static uint16_t calculateChecksum(uint8_t pro, uint32_t srcIp, uint32_t dstIp, int size, void* pPacket)
 {
-    __packed struct pseudo
-    {
-        uint32_t src;
-        uint32_t dst;
-        uint8_t  zer;
-        uint8_t  pro;
-        uint16_t len;
-    } pseudo;
-    
-    pseudo.src = srcIp;
-    pseudo.dst = dstIp;
-    pseudo.zer = 0;
-    pseudo.pro = pro;
-    pseudo.len = NetToHost16(size);
-
-    return NetCheckSumTwo(sizeof(pseudo), &pseudo, size, pPacket);
+    uint32_t sum = 0;
+    uint16_t pro16 = pro;
+     sum = CheckSumAddDirect(sum,    4, &srcIp );
+     sum = CheckSumAddDirect(sum,    4, &dstIp );
+     sum = CheckSumAddInvert(sum,    2, &pro16 );
+     sum = CheckSumAddInvert(sum,    2, &size  );
+    return CheckSumFinDirect(sum, size, pPacket);
 }
 static void finalisePacket(uint8_t pro, int action, void* pPacket, int size, uint32_t* pSrcIp, uint32_t* pDstIp)
 {