128 lines
4.3 KiB
C
Executable File
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 */
|
|
|