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

128 lines
4.3 KiB
C
Executable File

#ifndef CYGONCE_NET_ETHSOCKET_H
#define CYGONCE_NET_ETHSOCKET_H
/* =================================================================
*
* ethsocket.h
*
* A simple user socket server
*
* =================================================================
*/
#if defined(__ECOS)
#include <pkgconf/system.h>
#include <pkgconf/isoinfra.h>
#include <cyg/hal/hal_tables.h>
#endif
#include <stdio.h>
#define CYG_ETHSOCKET_STATUS_CLIENT_CONNECT 0 // client connect.
#define CYG_ETHSOCKET_STATUS_CLIENT_REQUEST 1 // client has request comimg in
#define CYG_ETHSOCKET_STATUS_CLIENT_DISCONNECT 2 // client disconnect.
#define CYG_ETHSOCKET_UDP_STATUS_CLIENT_REQUEST 3 // udp client has request comimg in
#if defined(__ECOS)
#define DUMMY_NULL
#else
#ifndef __externC
#ifdef __cplusplus
# define __externC extern "C"
#else
# define __externC extern
#endif
#endif
#ifndef bool
#define bool int
#endif
#define false 0
#define true 1
#define cyg_bool int
#define cyg_addrword_t long*
#define CYG_ASSERT(cond,text) if(!(cond)){ \
printf("%s\n", text);\
exit(-1);\
}
#define cyg_flag_init(pflag) {*(pflag) = 0;}
#define cyg_flag_maskbits(pflag,bit) {*(pflag) &= (bit);}
#define cyg_flag_setbits(pflag,bit) {*(pflag) |= (bit);}
//#define cyg_flag_wait(pflag,bit,mode) while(!(*(pflag) & (bit))){sleep(1);}
#define cyg_flag_waitms(pflag,bit,mode) while(!(*(pflag) & (bit))){usleep(1000);}
#define cyg_flag_destroy(pflag) {*(pflag) = 0;}
#define DUMMY_NULL NULL
#endif
typedef int ethsocket_recv(char *addr, int size);
typedef void ethsocket_notify(int status, int parm);
typedef int ethsocket_recv_multi(char *addr, int size, int obj_index);
typedef void ethsocket_notify_multi(int status, int parm, int obj_index);
typedef struct {
ethsocket_notify *notify; // notify the status
ethsocket_recv *eth_recv;
int portNum; // socket port number
int threadPriority; // socket thread priority
int sockbufSize; // socket buffer size
int client_socket;
} ethsocket_install_obj;
typedef struct {
ethsocket_notify_multi *notify; // notify the status
ethsocket_recv_multi *multi_recv;
int portNum; // socket port number
int threadPriority; // socket thread priority
int sockbufSize; // socket buffer size
int client_socket;
int occupy; // 0:not using ,1:using
} ethsocket_install_obj_multi;
__externC int EthSocketDispIsEnable;
/////////////////////ethscoket multi//////////////////////////////////
__externC int ethsocket_install_multi(int obj_index, ethsocket_install_obj_multi *pObj); ///return obj_index, if return -1 means error.
__externC void ethsocket_uninstall_multi(int obj_index);
__externC void ethsocket_open_multi(int obj_index);
__externC void ethsocket_close_multi(int obj_index);
__externC int ethsocket_send_multi(char *buf, int *size, int obj_index);
__externC int ethsocket_get_obj_index(int port);
////////////////////////ethsocket/////////////////////////////////////
__externC void ethsocket_install(ethsocket_install_obj *pObj); // install some callback function & config some settings
__externC void ethsocket_uninstall(void);
__externC void ethsocket_open(void); // open ethsocket
__externC void ethsocket_close(void); // close ethsocket
__externC int ethsocket_send(char *addr, int *size); // install some callback function & config some settings
///////////////////////////UDP////////////////////////////
__externC void ethsocket_udp_install(ethsocket_install_obj *pObj); // install some callback function & config some settings
__externC void ethsocket_udp_uninstall(void);
__externC void ethsocket_udp_open(void); // open ethsocket
__externC void ethsocket_udp_close(void); // close ethsocket
__externC int ethsocket_udp_send(char *addr, int *size); // install some callback function & config some settings
__externC int ethsocket_udp_sendto(char *dest_ip, int dest_port, char *buf, int *size);
/* ----------------------------------------------------------------- */
#endif /* CYGONCE_NET_ETHSOCKET_H */
/* end of ethsocket.h */