csp.h File Reference
#include <stdint.h>
#include <csp/csp_autoconfig.h>
#include "csp_types.h"
#include "csp_platform.h"
#include "csp_error.h"
#include "csp_debug.h"
#include "csp_buffer.h"
#include "csp_rtable.h"
#include "csp_iflist.h"
#include <stdarg.h>

Go to the source code of this file.

Typedefs

typedef void * csp_memptr_t
 
typedef csp_memptr_t(* csp_memcpy_fnc_t) (csp_memptr_t, const csp_memptr_t, size_t)
 
typedef void(* csp_debug_hook_func_t) (csp_debug_level_t level, const char *format, va_list args)
 Set csp_debug hook function. More...
 

Functions

int csp_init (uint8_t my_node_address)
 csp_init Start up the can-space protocol More...
 
void csp_terminate (void)
 
void csp_set_address (uint8_t addr)
 csp_set_address Set the systems own address More...
 
uint8_t csp_get_address (void)
 csp_get_address Get the systems own address More...
 
void csp_set_hostname (char *hostname)
 csp_set_hostname Set subsystem hostname. More...
 
char * csp_get_hostname (void)
 csp_get_hostname Get current subsystem hostname. More...
 
void csp_set_model (char *model)
 csp_set_model Set subsystem model name. More...
 
char * csp_get_model (void)
 csp_get_model Get current model name. More...
 
void csp_set_revision (char *revision)
 csp_set_revision Set subsystem revision. More...
 
char * csp_get_revision (void)
 csp_get_revision Get subsystem revision. More...
 
csp_socket_tcsp_socket (uint32_t opts)
 csp_socket Create CSP socket endpoint More...
 
csp_conn_tcsp_accept (csp_socket_t *socket, uint32_t timeout)
 Wait for a new connection on a socket created by csp_socket. More...
 
csp_packet_tcsp_read (csp_conn_t *conn, uint32_t timeout)
 Read data from a connection This fuction uses the RX queue of a connection to receive a packet If no packet is available and a timeout has been specified The call will block. More...
 
int csp_send (csp_conn_t *conn, csp_packet_t *packet, uint32_t timeout)
 Send a packet on an already established connection. More...
 
int csp_send_prio (uint8_t prio, csp_conn_t *conn, csp_packet_t *packet, uint32_t timeout)
 Send a packet on an already established connection, and change the default priority of the connection. More...
 
int csp_transaction (uint8_t prio, uint8_t dest, uint8_t port, uint32_t timeout, void *outbuf, int outlen, void *inbuf, int inlen)
 Perform an entire request/reply transaction Copies both input buffer and reply to output buffeer. More...
 
int csp_transaction_persistent (csp_conn_t *conn, uint32_t timeout, void *outbuf, int outlen, void *inbuf, int inlen)
 Use an existing connection to perform a transaction, This is only possible if the next packet is on the same port and destination! More...
 
csp_packet_tcsp_recvfrom (csp_socket_t *socket, uint32_t timeout)
 Read data from a connection-less server socket This fuction uses the socket directly to receive a frame If no packet is available and a timeout has been specified the call will block. More...
 
int csp_sendto (uint8_t prio, uint8_t dest, uint8_t dport, uint8_t src_port, uint32_t opts, csp_packet_t *packet, uint32_t timeout)
 Send a packet without previously opening a connection. More...
 
int csp_sendto_reply (csp_packet_t *request_packet, csp_packet_t *reply_packet, uint32_t opts, uint32_t timeout)
 Send a packet as a direct reply to the source of an incoming packet, but still without holding an entire connection. More...
 
csp_conn_tcsp_connect (uint8_t prio, uint8_t dest, uint8_t dport, uint32_t timeout, uint32_t opts)
 csp_connect Used to establish outgoing connections This function searches the port table for free slots and finds an unused connection from the connection pool There is no handshake in the CSP protocol More...
 
int csp_close (csp_conn_t *conn)
 csp_close Closes a given connection and frees buffers used. More...
 
void csp_close_socket (csp_socket_t *socket)
 Closes a given socket and frees queue used. More...
 
int csp_conn_dport (csp_conn_t *conn)
 
int csp_conn_sport (csp_conn_t *conn)
 
int csp_conn_dst (csp_conn_t *conn)
 
int csp_conn_src (csp_conn_t *conn)
 
int csp_conn_flags (csp_conn_t *conn)
 
int csp_conn_check_alive (csp_conn_t *conn)
 
int csp_listen (csp_socket_t *socket, size_t conn_queue_length)
 Set socket to listen for incoming connections. More...
 
int csp_bind (csp_socket_t *socket, uint8_t port)
 Bind port to socket. More...
 
int csp_route_start_task (unsigned int task_stack_size, unsigned int priority)
 Start the router task. More...
 
void csp_route_end_task ()
 Ends the router task. More...
 
int csp_route_work (uint32_t timeout)
 Call the router worker function manually (without the router task) This must be run inside a loop or called periodically for the csp router to work. More...
 
int csp_bridge_start (unsigned int task_stack_size, unsigned int task_priority, csp_iface_t *_if_a, csp_iface_t *_if_b)
 Start the bridge task. More...
 
int csp_promisc_enable (unsigned int buf_size)
 Enable promiscuous mode packet queue This function is used to enable promiscuous mode for the router. More...
 
void csp_promisc_disable (void)
 Disable promiscuous mode. More...
 
csp_packet_tcsp_promisc_read (uint32_t timeout)
 Get packet from promiscuous mode packet queue Returns the first packet from the promiscuous mode packet queue. More...
 
int csp_sfp_send (csp_conn_t *conn, void *data, int totalsize, int mtu, uint32_t timeout)
 Send multiple packets using the simple fragmentation protocol CSP will add total size and offset to all packets This can be read by the client using the csp_sfp_recv, if the CSP_FFRAG flag is set. More...
 
int csp_sfp_send_own_memcpy (csp_conn_t *conn, void *data, int totalsize, int mtu, uint32_t timeout, void *(*memcpyfcn)(void *, const void *, size_t))
 Same as csp_sfp_send but with option to supply your own memcpy function. More...
 
int csp_sfp_recv (csp_conn_t *conn, void **dataout, int *datasize, uint32_t timeout)
 This is the counterpart to the csp_sfp_send function. More...
 
int csp_sfp_recv_fp (csp_conn_t *conn, void **dataout, int *datasize, uint32_t timeout, csp_packet_t *first_packet)
 This is the counterpart to the csp_sfp_send function. More...
 
void csp_service_handler (csp_conn_t *conn, csp_packet_t *packet)
 If the given packet is a service-request (that is uses one of the csp service ports) it will be handled according to the CSP service handler. More...
 
int csp_ping (uint8_t node, uint32_t timeout, unsigned int size, uint8_t conn_options)
 Send a single ping/echo packet. More...
 
void csp_ping_noreply (uint8_t node)
 Send a single ping/echo packet without waiting for reply. More...
 
void csp_ps (uint8_t node, uint32_t timeout)
 Request process list. More...
 
void csp_memfree (uint8_t node, uint32_t timeout)
 Request amount of free memory. More...
 
void csp_buf_free (uint8_t node, uint32_t timeout)
 Request number of free buffer elements. More...
 
void csp_reboot (uint8_t node)
 Reboot subsystem. More...
 
void csp_shutdown (uint8_t node)
 Shutdown subsystem. More...
 
void csp_uptime (uint8_t node, uint32_t timeout)
 Request subsystem uptime. More...
 
void csp_rdp_set_opt (unsigned int window_size, unsigned int conn_timeout_ms, unsigned int packet_timeout_ms, unsigned int delayed_acks, unsigned int ack_timeout, unsigned int ack_delay_count)
 Set RDP options. More...
 
void csp_rdp_get_opt (unsigned int *window_size, unsigned int *conn_timeout_ms, unsigned int *packet_timeout_ms, unsigned int *delayed_acks, unsigned int *ack_timeout, unsigned int *ack_delay_count)
 Get RDP options. More...
 
int csp_xtea_set_key (char *key, uint32_t keylen)
 Set XTEA key. More...
 
int csp_hmac_set_key (char *key, uint32_t keylen)
 Set HMAC key. More...
 
void csp_conn_print_table (void)
 Print connection table. More...
 
void csp_buffer_print_table (void)
 Print buffer usage table. More...
 
void csp_cmp_set_memcpy (csp_memcpy_fnc_t fnc)
 
void csp_debug_hook_set (csp_debug_hook_func_t f)