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

Committer:
andrewboyson
Date:
2018-11-11
Revision:
79:f50e02fb5c94
Parent:
78:9d8fc88df405
Child:
80:4ef1500fca1d

File content as of revision 79:f50e02fb5c94:

#ifndef TCB_H
#define TCB_H

#include <stdint.h>
#include <stdbool.h>

#define TCB_EMPTY          0
#define TCB_SYN_RECEIVED   1
#define TCB_ESTABLISHED    2
#define TCB_CLOSE_FIN_WAIT 3

struct tcb
{
    int      state;
    uint32_t timeSendsBeingAcked; //Used for RTO
    uint32_t timeLastRcvd;        //Used for detect idle links
    int      remArIndex;
    int      ipType;
    uint16_t remPort;
    uint16_t locPort;
    uint32_t remMss;
    uint32_t window;
    
    uint32_t remIsn;
    uint32_t bytesRcvdFromRem;
    uint32_t bytesAckdToRem;
    bool     rcvdFin;
    
     int32_t todo;
    
    uint32_t locIsn;
    uint32_t bytesSentToRem;
    uint32_t bytesAckdByRem;
    bool     sentFin;
};

extern uint32_t    TcbElapsed;
extern uint32_t    TcbGetIsn(void);
extern struct tcb* TcbGetExisting(int ipType, int remArIndex, uint16_t port);
extern struct tcb* TcbGetEmpty(void);
extern void        TcbGetNext(struct tcb** ppTcb);
extern void        TcbMain(void);
extern void        TcbInit(void);

#endif