210 lines
6.3 KiB
C
Executable File
210 lines
6.3 KiB
C
Executable File
/**
|
|
Eth socket client export variables and function prototypes.
|
|
|
|
EthsockCliIpc is simple socket client API.
|
|
Through this API user can send and receive network data.
|
|
|
|
@file EthsockCliIpcAPI.h
|
|
@ingroup mIEthsockCliIpcAPI
|
|
|
|
Copyright Novatek Microelectronics Corp. 2019. All rights reserved.
|
|
*/
|
|
#ifndef _ETHSOCKCLIIPCAPI_H
|
|
#define _ETHSOCKCLIIPCAPI_H
|
|
|
|
#include "kwrap/type.h"
|
|
#ifdef __ECOS
|
|
#define USE_IPC 0
|
|
#elif defined (__FREERTOS)
|
|
#define USE_IPC 0
|
|
#elif defined (__LINUX_USER__)
|
|
#define USE_IPC 0
|
|
#else
|
|
#define USE_IPC 1
|
|
#endif
|
|
|
|
/**
|
|
@name Ethsocket client error status.
|
|
*/
|
|
//@{
|
|
#define ETHSOCKETCLI_RET_OK 0 // funcion success
|
|
#define ETHSOCKETCLI_RET_OPENED 1 // is opend
|
|
#define ETHSOCKETCLI_RET_ERR (-1) // function fail
|
|
#define ETHSOCKETCLI_RET_NO_FUNC (-2) // no command function
|
|
#define ETHSOCKETCLI_RET_NOT_OPEN (-3) // not open ipc
|
|
#define ETHSOCKETCLI_RET_ERR_PAR (-4) // error parameter
|
|
//@}
|
|
|
|
typedef enum _ETHSOCKIPCCLI_ID {
|
|
ETHSOCKIPCCLI_ID_0 = 0, ///< ethsocket cli 0
|
|
ETHSOCKIPCCLI_ID_1 = 1, ///< ethsocket cli 1
|
|
ETHSOCKIPCCLI_ID_2 = 2, ///< ethsocket cli 2
|
|
ETHSOCKIPCCLI_MAX_NUM, ///< Number of ethsocket
|
|
ENUM_DUMMY4WORD(ETHSOCKIPCCLI_ID)
|
|
} ETHSOCKIPCCLI_ID;
|
|
|
|
|
|
typedef struct
|
|
{
|
|
//UINT32 sharedMemAddr; // shared memory address
|
|
//UINT32 sharedMemSize; // shared memory size
|
|
|
|
UINT32 sharedSendMemAddr; // shared Send memory address
|
|
UINT32 sharedSendMemSize; // shared Send memory size
|
|
|
|
UINT32 sharedRecvMemAddr; // shared Recv memory address
|
|
UINT32 sharedRecvMemSize; // shared Recv memory size
|
|
} ETHSOCKCLIIPC_OPEN;
|
|
|
|
|
|
/**
|
|
Ethsocket client receive prototype.
|
|
User can register receive callback in EthsockCliIpc_Connect().
|
|
It would be a callback function so it would use ethcam client task.
|
|
|
|
@param[out] addr receive buffer address.
|
|
@param[out] size receive data size.
|
|
|
|
@return user can return result back.
|
|
*/
|
|
typedef int ethsocket_cli_recv(int path_id , char* addr, int size);
|
|
|
|
/**
|
|
Ethsocket client notify prototype.
|
|
User can register notify callback in EthsockCliIpc_Connect().
|
|
|
|
@param[out] status client connet status.
|
|
@param[out] parm connet parameter.
|
|
|
|
@return void.
|
|
|
|
*/
|
|
typedef void ethsocket_cli_notify(int path_id , int status, int parm);
|
|
|
|
#define ETHSOCKETCLI_IP_LEN (16)
|
|
|
|
/**
|
|
Ethsocket install structure.
|
|
*/
|
|
typedef struct
|
|
{
|
|
ethsocket_cli_notify *notify; // notify the status
|
|
ethsocket_cli_recv *recv;
|
|
char svrIP[ETHSOCKETCLI_IP_LEN]; // server IP addr
|
|
int portNum; // socket port number
|
|
int sockbufSize; // socket buffer size
|
|
int timeout;
|
|
int connect_socket;
|
|
int threadPriority; // socket thread priority
|
|
} ethsocketcli_install_obj;
|
|
|
|
/**
|
|
@name Ethsocket client notify status.
|
|
*/
|
|
//@{
|
|
#define CYG_ETHSOCKETCLI_STATUS_CLIENT_CONNECT 0 // client connect.
|
|
#define CYG_ETHSOCKETCLI_STATUS_CLIENT_REQUEST 1 // client has request comimg in
|
|
#define CYG_ETHSOCKETCLI_STATUS_CLIENT_DISCONNECT 2 // client disconnect.
|
|
#define CYG_ETHSOCKETCLI_STATUS_CLIENT_SOCKET_CLOSE 3 // client socket close.
|
|
|
|
#define CYG_ETHSOCKETCLI_UDP_STATUS_CLIENT_REQUEST 4 // udp client has request comimg in
|
|
|
|
#define CYG_ETHSOCKETCLI_STATUS_CLIENT_SLOW 5 // client slow card.//@}
|
|
|
|
/**
|
|
Install EthsockCliIpc flag and semaphore id.
|
|
|
|
@return void.
|
|
*/
|
|
extern void EthsockCliIpc_InstallID(UINT32 path_cnt) _SECTION(".kercfg_text");
|
|
/**
|
|
UnInstall EthsockCliIpc flag and semaphore id.
|
|
|
|
@return void.
|
|
*/
|
|
|
|
extern void EthsockCliIpc_UnInstallID(UINT32 path_cnt) _SECTION(".kercfg_text");
|
|
|
|
/**
|
|
Open ethcam socket client IPC task.
|
|
This API would open IPC of ethcam socket.
|
|
|
|
@param[in] pOpen user should assign none-cacha buffer for IPC
|
|
|
|
@return
|
|
- @b E_OK if success, others fail
|
|
*/
|
|
extern ER EthsockCliIpc_Open(UINT32 path_id, ETHSOCKIPCCLI_ID id,ETHSOCKCLIIPC_OPEN *pOpen);
|
|
|
|
/**
|
|
Close ethcam socket client IPC task.
|
|
This API would close IPC of user socket client .
|
|
It should run after EthsockCliIpc_Stop();
|
|
|
|
@return
|
|
- @b E_OK if success, others fail
|
|
*/
|
|
extern ER EthsockCliIpc_Stop(UINT32 path_id, ETHSOCKIPCCLI_ID id);
|
|
|
|
/**
|
|
EthsockCliIpc Start.
|
|
It would start thread to wait receive data
|
|
|
|
@return
|
|
- @b E_OK if success, others fail
|
|
*/
|
|
extern ER EthsockCliIpc_Start(UINT32 path_id, ETHSOCKIPCCLI_ID id);
|
|
|
|
/**
|
|
EthsockCliIpc Connect.
|
|
This is ethcam socket client initialization function.
|
|
It would connect to socket server
|
|
@param[out] pObj init socket client parameter.
|
|
|
|
@return
|
|
- @b E_OK if success, others fail
|
|
*/
|
|
extern INT32 EthsockCliIpc_Connect(UINT32 path_id, ETHSOCKIPCCLI_ID id, ethsocketcli_install_obj* pObj);
|
|
|
|
/**
|
|
Ethcam socket client send data.
|
|
|
|
@param[in] handle client socket handle.
|
|
|
|
@param[out] addr Send buffer address.
|
|
Buffer address must be 16 bytes alignment.
|
|
Buffer size also need 16 byte alignment;even data is not alignment.
|
|
@param[in,out] size Send data size,and would return real send data size.
|
|
Size address must be 16 bytes alignment.
|
|
|
|
@return
|
|
- @b (0) send success.
|
|
- @b (-1) send fail.
|
|
|
|
@return
|
|
- @b E_OK if success, others fail
|
|
*/
|
|
extern ER EthsockCliIpc_Send(UINT32 path_id, ETHSOCKIPCCLI_ID id, INT32 handle, char* addr, int* size);
|
|
|
|
/**
|
|
EthsockCliIpc Disconnect.
|
|
|
|
It would disconnect to socket server
|
|
@param[in,out] handle client socket handle.
|
|
|
|
@return
|
|
- @b E_OK if success, others fail
|
|
*/
|
|
extern ER EthsockCliIpc_Disconnect(UINT32 path_id, ETHSOCKIPCCLI_ID id, INT32 *handle);
|
|
|
|
/**
|
|
Ethcam socket client Uninit.
|
|
This API would close user socket.
|
|
|
|
@return
|
|
- @b E_OK if success, others fail
|
|
*/
|
|
extern ER EthsockCliIpc_Close(UINT32 path_id, ETHSOCKIPCCLI_ID id);
|
|
|
|
#endif /* _ETHSOCKCLIIPCAPI_H */
|