SMART_COMPONENTS_SOCKET/SocketInterface.h

50 lines
1.6 KiB
C

//
// Created by cfif on 21.05.23.
//
#ifndef SMART_COMPONENTS_SOCKETINTERFACE_H
#define SMART_COMPONENTS_SOCKETINTERFACE_H
#include "stdint.h"
#include "stddef.h"
#include "stdbool.h"
#include "AtGsmSimComSSLType.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, eAtGsmSimComA7600_SSL_Type clientType, 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, CLIENT_TYPE, ADDR, ADDR_SIZE, PORT, TIMEOUT) (ENV)->open((ENV)->env,TYPE, CLIENT_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, sizeof(ADDR)-1 , PORT, TIMEOUT)
#define SocketInterface_close(ENV, ID) (ENV)->close((ENV)->env, ID)
#endif //SMART_COMPONENTS_SOCKETINTERFACE_H