// // Created by cfif on 21.05.23. // #ifndef SOCKET_TELIT_INTERFACE_H #define SOCKET_TELIT_INTERFACE_H #include "stdint.h" #include "stddef.h" #include "stdbool.h" typedef enum { eSocketType_UDP, eSocketType_TCP, } eSocketType; typedef enum { eSocketStatus_Connected, eSocketStatus_Disconnected, } eSocketStatus; typedef struct { void *env; uint8_t (*open)(void *env, eSocketType type, char *addr, size_t addrSize, uint16_t port, uint32_t timeout); size_t (*send)(void *env, uint8_t contextId, uint8_t *data, size_t size, uint32_t timeout); size_t (*read)(void *env, uint8_t contextId, uint8_t *data, size_t sizeLimit, uint32_t timeout); eSocketStatus (*status)(void *env, uint8_t contextId); void (*close)(void *env, uint8_t contextId); } tSocketInterface; #define SOCKET_WRONG_CONTEXT 0xFF #define SocketInterface_open(ENV, TYPE, ADDR, ADDR_SIZE, PORT, TIMEOUT) (ENV)->open((ENV)->env,TYPE, ADDR, ADDR_SIZE, PORT, TIMEOUT) #define SocketInterface_send(ENV, ID, DATA, SIZE, TIMEOUT) (ENV)->send((ENV)->env, ID, DATA, SIZE, TIMEOUT) #define SocketInterface_read(ENV, ID, DATA, SIZE, TIMEOUT) (ENV)->read((ENV)->env, ID, DATA, SIZE, TIMEOUT) #define SocketInterface_status(ENV, ID) (ENV)->status((ENV)->env, ID) #define SocketInterface_openStatic(ENV, TYPE, ADDR, PORT, TIMEOUT) SocketInterface_open(ENV,TYPE, ADDR, strlen(ADDR), PORT, TIMEOUT) #define SocketInterface_close(ENV, ID) (ENV)->close((ENV)->env, ID) #endif //SOCKET_TELIT_INTERFACE_H