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
tcp/tcb.h@167:3ba4e3c49631, 2020-04-02 (annotated)
- 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?
User | Revision | Line number | New 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 |