nt9856x/rtos/code/lib/include/EthCam/ethsocket_ipc.h
2023-03-28 15:07:53 +08:00

109 lines
3.1 KiB
C
Executable File

#ifndef _ETHSOCKET_IPC_H_
#define _ETHSOCKET_IPC_H_
//=============================================================================
//define ETHSOCKET_SIM for simulation
//#define ETHSOCKET_SIM
#define ETHSOCKET_VER_KEY 20190506
#ifndef MAKEFOURCC
#define MAKEFOURCC(ch0, ch1, ch2, ch3) ((unsigned int)(unsigned char)(ch0) | ((unsigned int)(unsigned char)(ch1) << 8) | ((unsigned int)(unsigned char)(ch2) << 16) | ((unsigned int)(unsigned char)(ch3) << 24 ))
#endif
#define ETHSOCKETIPC_BUF_CHK_SIZE (4)
#define ETHSOCKETIPC_BUF_TAG MAKEFOURCC('E','T','S','C')
#define ETHSOCKIPC_PARAM_BUF_SIZE 4112 //for ETHSOCKIPC_TRANSFER_BUF_SIZE is 2048
#define ETHSOCKIPC_TRANSFER_BUF_SIZE ((ETHSOCKIPC_PARAM_BUF_SIZE / 2) - ETHSOCKETIPC_BUF_CHK_SIZE - 4) // 4 is size of ETHSOCKET_TRANSFER_PARAM
#define ETHSOCKIPC_IP_BUF (16)
//-------------------------------------------------------------------------
//ETHSOCKETECOS API return value
#define ETHSOCKET_RET_OK 0
#define ETHSOCKET_RET_OPENED 1
#define ETHSOCKET_RET_ERR (-1)
#define ETHSOCKET_RET_NO_FUNC (-2)
#define ETHSOCKET_RET_FORCE_ACK (-3)
#define ETHSOCKET_TOKEN_PATH0 "ethsockipc0"
#define ETHSOCKET_TOKEN_PATH1 "ethsockipc1"
#define ETHSOCKET_TOKEN_PATH2 "ethsockipc2"
#define ETHSOCKET_MAX_PARAM 6
//-------------------------------------------------------------------------
//IPC command id and parameters
typedef enum {
ETHSOCKET_CMDID_GET_VER_INFO = 0x00000000,
ETHSOCKET_CMDID_GET_BUILD_DATE,
ETHSOCKET_CMDID_TEST,
ETHSOCKET_CMDID_OPEN,
ETHSOCKET_CMDID_CLOSE,
ETHSOCKET_CMDID_SEND,
ETHSOCKET_CMDID_RCV,
ETHSOCKET_CMDID_NOTIFY,
ETHSOCKET_CMDID_UDP_OPEN,
ETHSOCKET_CMDID_UDP_CLOSE,
ETHSOCKET_CMDID_UDP_SEND,
ETHSOCKET_CMDID_UDP_RCV,
ETHSOCKET_CMDID_UDP_NOTIFY,
ETHSOCKET_CMDID_SYSREQ_ACK,
ETHSOCKET_CMDID_UNINIT,
ETHSOCKET_CMDID_UDP_SENDTO,
ETHSOCKET_CMDID_MAX,
} ETHSOCKET_CMDID;
typedef struct {
ETHSOCKET_CMDID CmdId;
int Arg;
} ETHSOCKET_MSG;
typedef struct {
int param1;
int param2;
int param3;
} ETHSOCKET_PARAM_PARAM;
typedef struct {
int size;
char buf[ETHSOCKIPC_TRANSFER_BUF_SIZE];
} ETHSOCKET_TRANSFER_PARAM;
typedef struct {
int size;
char* buf;
} ETHSOCKET_SEND_PARAM;
typedef struct {
char dest_ip[ETHSOCKIPC_IP_BUF];
int dest_port;
int size;
char buf[ETHSOCKIPC_TRANSFER_BUF_SIZE];
} ETHSOCKET_SENDTO_PARAM;
//-------------------------------------------------------------------------
//ETHSOCKET definition
typedef struct _ETHSOCKET_OPEN_OBJ {
unsigned int RcvParamAddr;
unsigned int RcvParamSize;
unsigned int SndParamAddr;
unsigned int SndParamSize;
} ETHSOCKET_OPEN_OBJ;
#ifndef __externC
#ifdef __cplusplus
# define __externC extern "C"
#else
# define __externC extern
#endif
#endif
#if defined(__ECOS)
__externC void ETHSOCKETECOS_CmdLine(char *szCmd);
#else
__externC int ETHSOCKETECOS_CmdLine(char *szCmd, char *szRcvAddr, char *szSndAddr);
__externC int ETHSOCKETECOS_HandleCmd(ETHSOCKET_CMDID CmdId, unsigned int id);
#endif
#endif //_ETHSOCKET_IPC_H_