Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: oldheating gps motorhome heating
tcp/tcb.h@126:62edacc9f14d, 2019-02-25 (annotated)
- Committer:
- andrewboyson
- Date:
- Mon Feb 25 20:59:19 2019 +0000
- Revision:
- 126:62edacc9f14d
- Parent:
- 93:580fc113d9e9
- Child:
- 131:774f7f367031
Added ability to post content plus content length and content start .
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 | 126:62edacc9f14d | 35 | |
| andrewboyson | 126:62edacc9f14d | 36 | /* |
| andrewboyson | 126:62edacc9f14d | 37 | Communicates between application (HTTP) and TCP. |
| andrewboyson | 126:62edacc9f14d | 38 | Application usually works out what to do from the first packet and so it stores that in todo to remember what it is doing for subsequent packets. |
| andrewboyson | 126:62edacc9f14d | 39 | Once all packets have been received the application sets postCompleted to indicate that TCP should start sending data. |
| andrewboyson | 126:62edacc9f14d | 40 | Once all packets have been sent the application returns a data size less than MSS. |
| andrewboyson | 126:62edacc9f14d | 41 | Note that TCP needs to keep todo in case data has to be resent after the application thinks it has finished. |
| andrewboyson | 126:62edacc9f14d | 42 | */ |
| andrewboyson | 126:62edacc9f14d | 43 | int32_t todo; |
| andrewboyson | 126:62edacc9f14d | 44 | bool postComplete; |
| andrewboyson | 10:f0854784e960 | 45 | }; |
| andrewboyson | 10:f0854784e960 | 46 | |
| andrewboyson | 61:aad055f1b0d1 | 47 | extern uint32_t TcbGetIsn(void); |
| andrewboyson | 80:4ef1500fca1d | 48 | extern struct tcb* TcbGetExisting(int ipType, int remArIndex, int locIpScope, uint16_t remPort, uint16_t locPort); |
| andrewboyson | 61:aad055f1b0d1 | 49 | extern struct tcb* TcbGetEmpty(void); |
| andrewboyson | 83:08c983006a6e | 50 | extern struct tcb* TcbGetNext(struct tcb* pTcb); |
| andrewboyson | 74:c3756bfa960e | 51 | extern void TcbInit(void); |
| andrewboyson | 74:c3756bfa960e | 52 | |
| andrewboyson | 74:c3756bfa960e | 53 | #endif |