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:
Thu Apr 02 19:08:25 2020 +0000
Revision:
167:3ba4e3c49631
Parent:
161:89609cf070b4
Modified resolution cache ajaxs to include the index

Who changed what in which revision?

UserRevisionLine numberNew contents of line
andrewboyson 74:c3756bfa960e 1 #ifndef TCB_H
andrewboyson 74:c3756bfa960e 2 #define TCB_H
andrewboyson 74:c3756bfa960e 3
andrewboyson 61:aad055f1b0d1 4 #include <stdint.h>
andrewboyson 61:aad055f1b0d1 5 #include <stdbool.h>
andrewboyson 61:aad055f1b0d1 6
andrewboyson 74:c3756bfa960e 7 #define TCB_EMPTY 0
andrewboyson 74:c3756bfa960e 8 #define TCB_SYN_RECEIVED 1
andrewboyson 74:c3756bfa960e 9 #define TCB_ESTABLISHED 2
andrewboyson 74:c3756bfa960e 10 #define TCB_CLOSE_FIN_WAIT 3
andrewboyson 10:f0854784e960 11
andrewboyson 10:f0854784e960 12 struct tcb
andrewboyson 10:f0854784e960 13 {
andrewboyson 10:f0854784e960 14 int state;
andrewboyson 79:f50e02fb5c94 15 uint32_t timeSendsBeingAcked; //Used for RTO
andrewboyson 82:20781198d26d 16 int countSendsNotAcked; //Used for RTO
andrewboyson 79:f50e02fb5c94 17 uint32_t timeLastRcvd; //Used for detect idle links
andrewboyson 74:c3756bfa960e 18 int ipType;
andrewboyson 80:4ef1500fca1d 19 int remArIndex; //Unique per remote ip when taken with the ipType
andrewboyson 80:4ef1500fca1d 20 int locIpScope; //Unique per local ip
andrewboyson 74:c3756bfa960e 21 uint16_t remPort;
andrewboyson 74:c3756bfa960e 22 uint16_t locPort;
andrewboyson 74:c3756bfa960e 23 uint32_t remMss;
andrewboyson 74:c3756bfa960e 24 uint32_t window;
andrewboyson 74:c3756bfa960e 25
andrewboyson 74:c3756bfa960e 26 uint32_t remIsn;
andrewboyson 74:c3756bfa960e 27 uint32_t bytesRcvdFromRem;
andrewboyson 74:c3756bfa960e 28 uint32_t bytesAckdToRem;
andrewboyson 74:c3756bfa960e 29 bool rcvdFin;
andrewboyson 74:c3756bfa960e 30
andrewboyson 74:c3756bfa960e 31 uint32_t locIsn;
andrewboyson 74:c3756bfa960e 32 uint32_t bytesSentToRem;
andrewboyson 74:c3756bfa960e 33 uint32_t bytesAckdByRem;
andrewboyson 74:c3756bfa960e 34 bool sentFin;
andrewboyson 10:f0854784e960 35 };
andrewboyson 10:f0854784e960 36
andrewboyson 156:be12b8fd5b21 37 extern uint32_t TcbGetIsn (void);
andrewboyson 80:4ef1500fca1d 38 extern struct tcb* TcbGetExisting(int ipType, int remArIndex, int locIpScope, uint16_t remPort, uint16_t locPort);
andrewboyson 156:be12b8fd5b21 39 extern struct tcb* TcbGetEmpty (void);
andrewboyson 156:be12b8fd5b21 40 extern struct tcb* TcbGetNext (struct tcb* pTcb);
andrewboyson 156:be12b8fd5b21 41 extern int TcbGetId (struct tcb* pTcb); //A unique identifier greater than 0. An id of zero means empty.
andrewboyson 156:be12b8fd5b21 42 extern void TcbInit (void);
andrewboyson 161:89609cf070b4 43 extern void TcbSendAjax (void);
andrewboyson 74:c3756bfa960e 44
andrewboyson 74:c3756bfa960e 45 #endif