osmocom-analog/src/libosmocc/socket.h

45 lines
1.4 KiB
C

#ifndef OSMO_CC_SOCKET_H
#define OSMO_CC_SOCKET_H
#define OSMO_CC_DEFAULT_PORT 4200
#define OSMO_CC_DEFAULT_PORT_MAX 4219
#define OSMO_CC_SOCKET_TX_KEEPALIVE 10.0
#define OSMO_CC_SOCKET_RX_KEEPALIVE 20.0
struct osmo_cc_socket;
typedef struct osmo_cc_conn {
struct osmo_cc_conn *next;
struct osmo_cc_socket *os;
int socket;
uint32_t callref;
int read_setup;
int read_version;
char read_version_string[sizeof(OSMO_CC_VERSION)]; /* must include 0-termination */
int read_version_pos;
int write_version;
osmo_cc_msg_t read_hdr;
osmo_cc_msg_t *read_msg;
int read_pos;
osmo_cc_msg_list_t *write_list;
struct timer tx_keepalive_timer;
struct timer rx_keepalive_timer;
} osmo_cc_conn_t;
typedef struct osmo_cc_socket {
int socket;
osmo_cc_conn_t *conn_list;
osmo_cc_msg_list_t *write_list;
void (*recv_msg_cb)(void *priv, uint32_t callref, osmo_cc_msg_t *msg);
void *priv;
uint8_t location;
} osmo_cc_socket_t;
int osmo_cc_open_socket(osmo_cc_socket_t *os, const char *host, uint16_t port, void *priv, void (*recv_msg_cb)(void *priv, uint32_t callref, osmo_cc_msg_t *msg), uint8_t location);
void osmo_cc_close_socket(osmo_cc_socket_t *os);
int osmo_cc_sock_send_msg(osmo_cc_socket_t *os, uint32_t callref, osmo_cc_msg_t *msg, const char *host, uint16_t port);
int osmo_cc_handle_socket(osmo_cc_socket_t *os);
#endif /* OSMO_CC_SOCKET_H */