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  */
 |