AM243x MCU+ SDK  09.00.00
Socket IPC utility functions

Introduction

Files

file  cb_ipcsock.h
 Socket IPC utility functions.
 

Functions

int cb_fdread_timeout (int fd, void *data, int size, int tout_ms)
 read from file descriptor with timeout More...
 
int cb_ipcsocket_init (CB_SOCKET_T *ipcfd, char *node, char *suffix, char *server_node)
 creats and initializes Unix Domain Socket for IPC More...
 
int cb_ipcsocket_udp_init (CB_SOCKET_T *ipcfd, char *own_ip, char *server_ip, int server_port)
 open Unix Domain Socket in UDP mode for IPC More...
 
int cb_ipcsocket_close (CB_SOCKET_T ipcfd, char *node, char *suffix)
 close Unix Domain Socket for IPC More...
 
cb_ipcserverd_tcb_ipcsocket_server_init (char *node_ip, char *suffix, uint16_t port)
 initialize the server mode ipc socket More...
 
void cb_ipcsocket_server_close (cb_ipcserverd_t *ipcsd)
 close the server mode ipc socket More...
 
int cb_ipcsocket_server_write (cb_ipcserverd_t *ipcsd, uint8_t *data, int size, struct sockaddr *client_address)
 send ipc data to a specific client_address or internally managed IPC clients More...
 
int cb_ipcsocket_server_write_ddata (cb_ipcserverd_t *ipcsd, void *cbdata, cb_ipcsocket_server_ddatacb ddatacb)
 send ipc data to all clients More...
 
int cb_ipcsocket_server_read (cb_ipcserverd_t *ipcsd, cb_ipcsocket_server_rdcb ipccb, void *cbdata)
 receive data on the IPC socket. More...
 
CB_SOCKET_T cb_ipcsocket_getfd (cb_ipcserverd_t *ipcsd)
 return ipc socket fd More...
 
int cb_ipcsocket_remove_client (cb_ipcserverd_t *ipcsd, struct sockaddr *client_address)
 remove IPC client from the managed list More...
 
cb_ipcclient_commode_t cb_ipcsocket_get_commode (cb_ipcserverd_t *ipcsd, struct sockaddr *client_address)
 get IPC ipc communication mode More...
 
int cb_ipcsocket_set_commode (cb_ipcserverd_t *ipcsd, struct sockaddr *client_address, cb_ipcclient_commode_t commode)
 get IPC ipc communication mode More...
 

Typedefs

typedef struct cb_ipcserverd cb_ipcserverd_t
 
typedef int(* cb_ipcsocket_server_ddatacb) (void *cbdata, uint8_t **sdata, int *size, struct sockaddr *addr)
 callback function to get sending data More...
 
typedef int(* cb_ipcsocket_server_rdcb) (void *cbdata, uint8_t *rdata, int size, struct sockaddr *addr)
 callback function to be called from 'cb_ipcsocket_server_read' More...
 

Enumerations

enum  cb_ipcclient_commode_t { CB_IPCCLIENT_DEFAULT = 0, CB_IPCCLIENT_BINARY, CB_IPCCLIENT_TEXT, CB_IPCCLIENT_LAST }
 

Macros

#define MAX_IPC_CLIENTS   16
 

Macro Definition Documentation

◆ MAX_IPC_CLIENTS

#define MAX_IPC_CLIENTS   16

Typedef Documentation

◆ cb_ipcserverd_t

typedef struct cb_ipcserverd cb_ipcserverd_t

◆ cb_ipcsocket_server_ddatacb

typedef int(* cb_ipcsocket_server_ddatacb) (void *cbdata, uint8_t **sdata, int *size, struct sockaddr *addr)

callback function to get sending data

Note
*sdata must be allocated in the callback

◆ cb_ipcsocket_server_rdcb

typedef int(* cb_ipcsocket_server_rdcb) (void *cbdata, uint8_t *rdata, int size, struct sockaddr *addr)

callback function to be called from 'cb_ipcsocket_server_read'

Note
if the callback returns non-zero, the connection is closed.

Enumeration Type Documentation

◆ cb_ipcclient_commode_t

Enumerator
CB_IPCCLIENT_DEFAULT 
CB_IPCCLIENT_BINARY 
CB_IPCCLIENT_TEXT 
CB_IPCCLIENT_LAST 

Function Documentation

◆ cb_fdread_timeout()

int cb_fdread_timeout ( int  fd,
void *  data,
int  size,
int  tout_ms 
)

read from file descriptor with timeout

Returns
0 on timeout, -1 on error, positive number on read size
Parameters
fda file descriptor
databuffer to read data, which must have more than size bytes
sizeread size
tout_mstimeout time in milliseconds

◆ cb_ipcsocket_init()

int cb_ipcsocket_init ( CB_SOCKET_T ipcfd,
char *  node,
char *  suffix,
char *  server_node 
)

creats and initializes Unix Domain Socket for IPC

Returns
0 on success, -1 on error
Parameters
ipcfdreturn opened file descriptor
nodemain part of file node i.e /temp/node
suffixsuffix part of file node, set "" for non suffix
server_nodeif NULL, create a socket without connection.
if not NULL, connect to this server_node(must be existing node).

◆ cb_ipcsocket_udp_init()

int cb_ipcsocket_udp_init ( CB_SOCKET_T ipcfd,
char *  own_ip,
char *  server_ip,
int  server_port 
)

open Unix Domain Socket in UDP mode for IPC

Returns
0 on success, -1 on error.
Parameters
ipcfdreturn opened file descriptor for socket.
own_ipNULL for any IF, '127.0.0.1' for local only
server_ipNULL in the server mode, set IP in the client mode
server_portport number on which the server mode listens

◆ cb_ipcsocket_close()

int cb_ipcsocket_close ( CB_SOCKET_T  ipcfd,
char *  node,
char *  suffix 
)

close Unix Domain Socket for IPC

Returns
0 on success, -1 on error
Parameters
ipcfdipc file descriptor
nodemain part of file node
suffixsuffix part of file node, set "" for non suffix
Note
this call unlink the node name of node+suffix

◆ cb_ipcsocket_server_init()

cb_ipcserverd_t* cb_ipcsocket_server_init ( char *  node_ip,
char *  suffix,
uint16_t  port 
)

initialize the server mode ipc socket

Returns
the data handle
Parameters
node_ipunix domain socket file node name OR udp socket port IP address
suffixsuffix part of file node, set "" for non suffix
portthe local port number for udp mode connection. Set 0 for unix domain socket.

◆ cb_ipcsocket_server_close()

void cb_ipcsocket_server_close ( cb_ipcserverd_t ipcsd)

close the server mode ipc socket

Parameters
ipcsdthe data handle

◆ cb_ipcsocket_server_write()

int cb_ipcsocket_server_write ( cb_ipcserverd_t ipcsd,
uint8_t *  data,
int  size,
struct sockaddr client_address 
)

send ipc data to a specific client_address or internally managed IPC clients

Returns
0 on success, -1 on error
Parameters
ipcsdthe data handle
datasend data
sizesend data size
client_addressif set, the data is sent to this client_address, if NULL, the data is sent to all IPC cients depends on 'ipcsd->udpport', client_address is 'sockaddr_in' or 'sockaddr_un'

◆ cb_ipcsocket_server_write_ddata()

int cb_ipcsocket_server_write_ddata ( cb_ipcserverd_t ipcsd,
void *  cbdata,
cb_ipcsocket_server_ddatacb  ddatacb 
)

send ipc data to all clients

Returns
0 on success, -1 on error
Parameters
ipcsdthe data handle
cbdatadata to be passed with the callback
ddatacbcallback function to get defered data from the caller
Note
this is used when notice data is different for each client. the data is not provided to this call but got by the callback.

◆ cb_ipcsocket_server_read()

int cb_ipcsocket_server_read ( cb_ipcserverd_t ipcsd,
cb_ipcsocket_server_rdcb  ipccb,
void *  cbdata 
)

receive data on the IPC socket.

Returns
0 on success, -1 on error
Parameters
ipcsdthe data handle
ipccba callback function to be called with the read data
cbdatadata to be passed with the callback
Note
this may block the process. the caller functin must check events not to be blocked

◆ cb_ipcsocket_getfd()

CB_SOCKET_T cb_ipcsocket_getfd ( cb_ipcserverd_t ipcsd)

return ipc socket fd

◆ cb_ipcsocket_remove_client()

int cb_ipcsocket_remove_client ( cb_ipcserverd_t ipcsd,
struct sockaddr client_address 
)

remove IPC client from the managed list

◆ cb_ipcsocket_get_commode()

cb_ipcclient_commode_t cb_ipcsocket_get_commode ( cb_ipcserverd_t ipcsd,
struct sockaddr client_address 
)

get IPC ipc communication mode

Returns
-1 on error, ipc communication mode
Parameters
ipcsdthe data handle
client_addressif set, the data is sent to this client_address,

◆ cb_ipcsocket_set_commode()

int cb_ipcsocket_set_commode ( cb_ipcserverd_t ipcsd,
struct sockaddr client_address,
cb_ipcclient_commode_t  commode 
)

get IPC ipc communication mode

Returns
0 on success, -1 on error
Parameters
ipcsdthe data handle
client_addressif set, the data is sent to this client_address,
commodeipc communication mode