129 lines
4.0 KiB
C
Raw Normal View History

2025-04-10 17:31:33 +08:00
#ifndef __MAIN_TCPIP_H__
#define __MAIN_TCPIP_H__
#include "sockets.h"
/*----------------------------------------------------------------------------*
* DATA TYPE DEFINITION *
*----------------------------------------------------------------------------*/
#define THREAD_STACK_SIZE_TCPIP (10 * 1024)
#define THREAD_STACK_SIZE_TCPIP_STA (1 * 1024)
#define OPEN_TCPIP_RX_BUF_SIZE (1500)
#define QUEUE_SIZE_TCPIP (100)
#define OPEN_TCPIP_SOCKET_TYPE_TCPC (0)
#define OPEN_TCPIP_SOCKET_TYPE_TCPS (1)
#define OPEN_TCPIP_SOCKET_TYPE_UDPC (2)
#define OPEN_TCPIP_SOCKET_TYPE_MAX (3)
#define OPEN_TCPIP_SOCKET_RXTIMEOUT_MAX (3*60)//3 min
#define OPEN_TCPIP_SOCKET_RXBUF_SIZE_MAX (64*1024)
#define OPEN_TCPIP_SOCKET_PORT_INDEX_MAX (65535)
#define OPEN_TCPIP_SOCKLET_ID_MAX (6)
typedef void (* tcpipSocketActionCb)(uint8_t socketId, uint8_t action, int8_t result,const void *extra);
typedef void (* tcpipSocketStateCb)(uint8_t socketId, int32_t value);
typedef int32_t (* openSocketStateCallBackFunc)(void * param);
typedef int32_t (* openSocketStateCallRelease)(void * param);
typedef enum _socketState_e{
E_SOCKET_STATE_IDLE,
E_SOCKET_STATE_SET,
E_SOCKET_STATE_CONNECT,
E_SOCKET_STATE_ACTIVE,
E_SOCKET_STATE_SENDING,
E_SOCKET_STATE_CLOSING,
}socketState_e;
typedef enum _socketAction_e{
E_SOCKET_ACTION_INIT,
E_SOCKET_ACTION_OPEN,
E_SOCKET_ACTION_SEND,
E_SOCKET_ACTION_READ,
E_SOCKET_ACTION_CLOSE,
E_SOCKET_ACTION_MAX,
}socketAction_e;
typedef enum _socketRet_e{
E_SOCKET_OK,
E_SOCKET_ERR_NETWORK_NO_ACTIVE = -1,
E_SOCKET_ERR_SIM_FAIL = -2,
E_SOCKET_ERR_CONNET = -3,
E_SOCKET_ERR_NO_CONNET = -4,
E_SOCKET_ERR_TIMEOUT = -5,
E_SOCKET_ERR_BUFFER_FULL = -6,
E_SOCKET_ERR_CONNECT_REJECT = -7,
E_SOCKET_ERR_CONNECT_TIMEOUT = -8,
E_SOCKET_ERR_DNS_FAIL = -9,
E_SOCKET_ERR_RARAM = -10,
E_SOCKET_ERR_DEINIT = -11,
E_SOCKET_ERR_GET_ADDR_INFO_FAIL = -12,
E_SOCKET_ERR_SOCKET_FAIL = -13,
E_SOCKET_ERR_SOCKET_SND_FAIL = -14,
E_SOCKET_ERR_NET_CONN_RESET = -15,
E_SOCKET_ERR_RECV_FAIL = -16,
E_SOCKET_ERR_EWOULDBLOCK = -17,
E_SOCKET_ERR_MAX = -127
}socketRet_e;
typedef struct _openSocketNode_t
{
int32_t param;
openSocketStateCallBackFunc Function;
openSocketStateCallRelease Release;
struct _openSocketNode_t *next;
}openSocketNode_t;
typedef struct _socketConfig_t{
uint8_t socketType;
uint8_t revTimeOut;
uint16_t port;
uint32_t rxBufSize; /*the size of receive buffer*/
int8_t * hostUrl;
tcpipSocketActionCb saCb;
tcpipSocketStateCb ssCb;
}socketConfig_t;
typedef struct _socketHandler_t {
uint8_t socketState;
uint8_t urcFlag;
int8_t sockfd;
uint16_t localPort; /*the port of local-host*/
uint16_t peerPort; /*the port of remote-host*/
uint32_t cid; /*channel id */
uint32_t rxDataLen; /*the length of receive*/
int32_t ai_family;
ip_addr_t remoteIp; /*the ip address of local-host*/
uint8_t * localIp; /*the ip address of remote-host*/
int8_t * rxBuff; /*pointer of receive buffer*/
socketConfig_t appConfigInfo;
openSocketNode_t *stateNode;
}socketHandler_t;
typedef struct _queueTcpipSocket_t{
uint8_t socketId;
uint8_t action;
union {
socketConfig_t config;
int8_t *txData;
uint32_t readLen;
}value;
}queueTcpipSocket_t;
/*----------------------------------------------------------------------------*
* GLOBAL FUNCTIONS DECLEARATION *
*----------------------------------------------------------------------------*/
int openSocketTaskinit(void);
int openSocketClientTracker(uint8_t socketId, uint8_t action, void *value);
int8_t openSocketConnect(uint8_t socketId);
int8_t openSocketClose(uint8_t socketId);
int32_t openSocketSend(uint8_t socketId, int8_t * sndbuffer, uint32_t sndLength);
int32_t openSocketRead(uint8_t socketId, int8_t *buffer,uint32_t rdLength);
#endif/*__MAIN_TCPIP_H__*/