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

Committer:
andrewboyson
Date:
Wed Apr 10 10:07:06 2019 +0000
Revision:
140:9000ea70b220
Parent:
136:8a65abb0dc63
Child:
142:a8c0890a58d1
Added ajax functions to AR4, AR6, NR4, NR6 modules

Who changed what in which revision?

UserRevisionLine numberNew contents of line
andrewboyson 61:aad055f1b0d1 1 #include <stdint.h>
andrewboyson 61:aad055f1b0d1 2 #include <stdbool.h>
andrewboyson 61:aad055f1b0d1 3
andrewboyson 59:e0e556c8bd46 4 #include "link.h"
andrewboyson 7:b794780e33b4 5 #include "net.h"
andrewboyson 52:fbc5a46b5e16 6 #include "tcb.h"
andrewboyson 7:b794780e33b4 7 #include "dhcp.h"
andrewboyson 48:952dddb74b8b 8 #include "ar4.h"
andrewboyson 48:952dddb74b8b 9 #include "ar6.h"
andrewboyson 50:492f2d2954e4 10 #include "nr4.h"
andrewboyson 50:492f2d2954e4 11 #include "nr6.h"
andrewboyson 7:b794780e33b4 12 #include "dns.h"
andrewboyson 7:b794780e33b4 13 #include "slaac.h"
andrewboyson 47:73af5c0b0dc2 14 #include "ndp.h"
andrewboyson 22:914b970356f0 15 #include "ntp.h"
andrewboyson 113:904b40231907 16
andrewboyson 57:e0fb648acf48 17 #include "tftp.h"
andrewboyson 83:08c983006a6e 18 #include "led.h"
andrewboyson 97:d91f7db00235 19 #include "fault.h"
andrewboyson 37:793b39683406 20
andrewboyson 43:bc028d5a6424 21 bool NetTraceStack = false;
andrewboyson 43:bc028d5a6424 22 bool NetTraceNewLine = false;
andrewboyson 43:bc028d5a6424 23 bool NetTraceVerbose = false;
andrewboyson 59:e0e556c8bd46 24 const char* NetName4;
andrewboyson 59:e0e556c8bd46 25 const char* NetName6;
andrewboyson 57:e0fb648acf48 26
andrewboyson 57:e0fb648acf48 27 static bool hostMatched = false;
andrewboyson 57:e0fb648acf48 28 bool NetTraceHostGetMatched()
andrewboyson 57:e0fb648acf48 29 {
andrewboyson 57:e0fb648acf48 30 return hostMatched;
andrewboyson 57:e0fb648acf48 31 }
andrewboyson 57:e0fb648acf48 32 void NetTraceHostResetMatched()
andrewboyson 57:e0fb648acf48 33 {
andrewboyson 57:e0fb648acf48 34 hostMatched = false;
andrewboyson 57:e0fb648acf48 35 }
andrewboyson 59:e0e556c8bd46 36 char NetTraceHost[2];
andrewboyson 57:e0fb648acf48 37 void NetTraceHostCheckIp6(char* ip)
andrewboyson 57:e0fb648acf48 38 {
andrewboyson 57:e0fb648acf48 39 if (!ip[0]) return;
andrewboyson 57:e0fb648acf48 40 if (NetTraceHost[0] != ip[14]) return;
andrewboyson 57:e0fb648acf48 41 if (NetTraceHost[1] != ip[15]) return;
andrewboyson 57:e0fb648acf48 42 hostMatched = true;
andrewboyson 57:e0fb648acf48 43 }
andrewboyson 57:e0fb648acf48 44 void NetTraceHostCheckMac(char* mac)
andrewboyson 57:e0fb648acf48 45 {
andrewboyson 57:e0fb648acf48 46 if (NetTraceHost[0] != mac[4]) return;
andrewboyson 57:e0fb648acf48 47 if (NetTraceHost[1] != mac[5]) return;
andrewboyson 57:e0fb648acf48 48 hostMatched = true;
andrewboyson 57:e0fb648acf48 49 }
andrewboyson 0:faa09bd4e6bf 50 int16_t NetToHost16(int16_t n)
andrewboyson 0:faa09bd4e6bf 51 {
andrewboyson 0:faa09bd4e6bf 52 int16_t h;
andrewboyson 0:faa09bd4e6bf 53
andrewboyson 0:faa09bd4e6bf 54 char* pn = (char*)&n;
andrewboyson 0:faa09bd4e6bf 55 char* ph = (char*)&h + 1;
andrewboyson 0:faa09bd4e6bf 56
andrewboyson 0:faa09bd4e6bf 57 *ph = *pn; ph--; pn++; // 1<-0
andrewboyson 0:faa09bd4e6bf 58 *ph = *pn; // 0<-1
andrewboyson 0:faa09bd4e6bf 59
andrewboyson 0:faa09bd4e6bf 60 return h;
andrewboyson 0:faa09bd4e6bf 61 }
andrewboyson 0:faa09bd4e6bf 62 int32_t NetToHost32(int32_t n)
andrewboyson 0:faa09bd4e6bf 63 {
andrewboyson 0:faa09bd4e6bf 64 int32_t h;
andrewboyson 0:faa09bd4e6bf 65
andrewboyson 0:faa09bd4e6bf 66 char* pn = (char*)&n;
andrewboyson 0:faa09bd4e6bf 67 char* ph = (char*)&h + 3;
andrewboyson 0:faa09bd4e6bf 68
andrewboyson 0:faa09bd4e6bf 69 *ph = *pn; ph--; pn++; // 3<-0
andrewboyson 0:faa09bd4e6bf 70 *ph = *pn; ph--; pn++; // 2<-1
andrewboyson 0:faa09bd4e6bf 71 *ph = *pn; ph--; pn++; // 1<-2
andrewboyson 0:faa09bd4e6bf 72 *ph = *pn; // 0<-3
andrewboyson 0:faa09bd4e6bf 73
andrewboyson 0:faa09bd4e6bf 74 return h;
andrewboyson 0:faa09bd4e6bf 75 }
andrewboyson 0:faa09bd4e6bf 76 int64_t NetToHost64(int64_t n)
andrewboyson 0:faa09bd4e6bf 77 {
andrewboyson 0:faa09bd4e6bf 78 int64_t h;
andrewboyson 0:faa09bd4e6bf 79
andrewboyson 0:faa09bd4e6bf 80 char* pn = (char*)&n;
andrewboyson 0:faa09bd4e6bf 81 char* ph = (char*)&h + 7;
andrewboyson 0:faa09bd4e6bf 82
andrewboyson 0:faa09bd4e6bf 83 *ph = *pn; ph--; pn++; // 7<-0
andrewboyson 0:faa09bd4e6bf 84 *ph = *pn; ph--; pn++; // 6<-1
andrewboyson 0:faa09bd4e6bf 85 *ph = *pn; ph--; pn++; // 5<-2
andrewboyson 0:faa09bd4e6bf 86 *ph = *pn; ph--; pn++; // 4<-3
andrewboyson 0:faa09bd4e6bf 87 *ph = *pn; ph--; pn++; // 3<-4
andrewboyson 0:faa09bd4e6bf 88 *ph = *pn; ph--; pn++; // 2<-5
andrewboyson 0:faa09bd4e6bf 89 *ph = *pn; ph--; pn++; // 1<-6
andrewboyson 0:faa09bd4e6bf 90 *ph = *pn; // 0<-7
andrewboyson 0:faa09bd4e6bf 91
andrewboyson 0:faa09bd4e6bf 92 return h;
andrewboyson 0:faa09bd4e6bf 93 }
andrewboyson 136:8a65abb0dc63 94 void NetInvert16(void* h, void* n)
andrewboyson 136:8a65abb0dc63 95 {
andrewboyson 136:8a65abb0dc63 96 char* pn = (char*)n;
andrewboyson 136:8a65abb0dc63 97 char* ph = (char*)h + 1;
andrewboyson 136:8a65abb0dc63 98
andrewboyson 136:8a65abb0dc63 99 *ph = *pn; ph--; pn++; // 1<-0
andrewboyson 136:8a65abb0dc63 100 *ph = *pn; // 0<-1
andrewboyson 136:8a65abb0dc63 101 }
andrewboyson 136:8a65abb0dc63 102 void NetInvert32(void* h, void* n)
andrewboyson 0:faa09bd4e6bf 103 {
andrewboyson 136:8a65abb0dc63 104 char* pn = (char*)n;
andrewboyson 136:8a65abb0dc63 105 char* ph = (char*)h + 3;
andrewboyson 0:faa09bd4e6bf 106
andrewboyson 136:8a65abb0dc63 107 *ph = *pn; ph--; pn++; // 3<-0
andrewboyson 136:8a65abb0dc63 108 *ph = *pn; ph--; pn++; // 2<-1
andrewboyson 136:8a65abb0dc63 109 *ph = *pn; ph--; pn++; // 1<-2
andrewboyson 136:8a65abb0dc63 110 *ph = *pn; // 0<-3
andrewboyson 0:faa09bd4e6bf 111 }
andrewboyson 136:8a65abb0dc63 112 void NetInvert64(void* h, void* n)
andrewboyson 136:8a65abb0dc63 113 {
andrewboyson 136:8a65abb0dc63 114 char* pn = (char*)n;
andrewboyson 136:8a65abb0dc63 115 char* ph = (char*)h + 7;
andrewboyson 136:8a65abb0dc63 116
andrewboyson 136:8a65abb0dc63 117 *ph = *pn; ph--; pn++; // 7<-0
andrewboyson 136:8a65abb0dc63 118 *ph = *pn; ph--; pn++; // 6<-1
andrewboyson 136:8a65abb0dc63 119 *ph = *pn; ph--; pn++; // 5<-2
andrewboyson 136:8a65abb0dc63 120 *ph = *pn; ph--; pn++; // 4<-3
andrewboyson 136:8a65abb0dc63 121 *ph = *pn; ph--; pn++; // 3<-4
andrewboyson 136:8a65abb0dc63 122 *ph = *pn; ph--; pn++; // 2<-5
andrewboyson 136:8a65abb0dc63 123 *ph = *pn; ph--; pn++; // 1<-6
andrewboyson 136:8a65abb0dc63 124 *ph = *pn; // 0<-7
andrewboyson 0:faa09bd4e6bf 125 }
andrewboyson 2:849103b5a16d 126
andrewboyson 136:8a65abb0dc63 127 void NetDirect16(void* h, void* n)
andrewboyson 136:8a65abb0dc63 128 {
andrewboyson 136:8a65abb0dc63 129 char* pn = (char*)n;
andrewboyson 136:8a65abb0dc63 130 char* ph = (char*)h;
andrewboyson 136:8a65abb0dc63 131
andrewboyson 136:8a65abb0dc63 132 *ph = *pn; ph++; pn++; // 0<-0
andrewboyson 136:8a65abb0dc63 133 *ph = *pn; // 1<-1
andrewboyson 136:8a65abb0dc63 134 }
andrewboyson 136:8a65abb0dc63 135 void NetDirect32(void* h, void* n)
andrewboyson 136:8a65abb0dc63 136 {
andrewboyson 136:8a65abb0dc63 137 char* pn = (char*)n;
andrewboyson 136:8a65abb0dc63 138 char* ph = (char*)h;
andrewboyson 136:8a65abb0dc63 139
andrewboyson 136:8a65abb0dc63 140 *ph = *pn; ph++; pn++; // 0<-0
andrewboyson 136:8a65abb0dc63 141 *ph = *pn; ph++; pn++; // 1<-1
andrewboyson 136:8a65abb0dc63 142 *ph = *pn; ph++; pn++; // 2<-2
andrewboyson 136:8a65abb0dc63 143 *ph = *pn; // 3<-3
andrewboyson 136:8a65abb0dc63 144 }
andrewboyson 136:8a65abb0dc63 145 void NetDirect64(void* h, void* n)
andrewboyson 136:8a65abb0dc63 146 {
andrewboyson 136:8a65abb0dc63 147 char* pn = (char*)n;
andrewboyson 136:8a65abb0dc63 148 char* ph = (char*)h;
andrewboyson 136:8a65abb0dc63 149
andrewboyson 136:8a65abb0dc63 150 *ph = *pn; ph++; pn++; // 0<-0
andrewboyson 136:8a65abb0dc63 151 *ph = *pn; ph++; pn++; // 1<-1
andrewboyson 136:8a65abb0dc63 152 *ph = *pn; ph++; pn++; // 2<-2
andrewboyson 136:8a65abb0dc63 153 *ph = *pn; ph++; pn++; // 3<-3
andrewboyson 136:8a65abb0dc63 154 *ph = *pn; ph++; pn++; // 4<-4
andrewboyson 136:8a65abb0dc63 155 *ph = *pn; ph++; pn++; // 5<-5
andrewboyson 136:8a65abb0dc63 156 *ph = *pn; ph++; pn++; // 6<-6
andrewboyson 136:8a65abb0dc63 157 *ph = *pn; // 7<-7
andrewboyson 136:8a65abb0dc63 158 }
andrewboyson 61:aad055f1b0d1 159 void NetInit(const char* name4, const char* name6)
andrewboyson 59:e0e556c8bd46 160 {
andrewboyson 44:83ce5ace337b 161 NetName4 = name4;
andrewboyson 44:83ce5ace337b 162 NetName6 = name6;
andrewboyson 59:e0e556c8bd46 163 LinkInit();
andrewboyson 52:fbc5a46b5e16 164 TcbInit();
andrewboyson 48:952dddb74b8b 165 Ar4Init();
andrewboyson 48:952dddb74b8b 166 Ar6Init();
andrewboyson 50:492f2d2954e4 167 Nr4Init();
andrewboyson 50:492f2d2954e4 168 Nr6Init();
andrewboyson 30:e34173b7585c 169 SlaacInit();
andrewboyson 113:904b40231907 170 NtpInit();
andrewboyson 2:849103b5a16d 171 }
andrewboyson 61:aad055f1b0d1 172 void NetMain()
andrewboyson 2:849103b5a16d 173 {
andrewboyson 98:b977424ec7f7 174 int lastFaultPoint = FaultPoint;
andrewboyson 97:d91f7db00235 175 FaultPoint = FAULT_POINT_NetMain;
andrewboyson 115:5c003909bcf3 176 LinkMain();
andrewboyson 115:5c003909bcf3 177 Ar4Main();
andrewboyson 115:5c003909bcf3 178 Ar6Main();
andrewboyson 115:5c003909bcf3 179 Nr4Main();
andrewboyson 115:5c003909bcf3 180 Nr6Main();
andrewboyson 115:5c003909bcf3 181 DnsMain();
andrewboyson 98:b977424ec7f7 182 FaultPoint = lastFaultPoint;
andrewboyson 2:849103b5a16d 183 }