32#define UAVCAN_NODE_ID    100 
   35#ifndef UAVCAN_BAUDRATE 
   36#define UAVCAN_BAUDRATE   1000000 
   42#ifndef UAVCAN_CAN1_NODE_ID 
   43#define UAVCAN_CAN1_NODE_ID UAVCAN_NODE_ID 
   46#ifndef UAVCAN_CAN1_BAUDRATE 
   47#define UAVCAN_CAN1_BAUDRATE UAVCAN_BAUDRATE 
   69#ifndef UAVCAN_CAN2_NODE_ID 
   70#define UAVCAN_CAN2_NODE_ID UAVCAN_NODE_ID 
   73#ifndef UAVCAN_CAN2_BAUDRATE 
   74#define UAVCAN_CAN2_BAUDRATE UAVCAN_BAUDRATE 
   95  rx_frame.data_len = 
rx_msg->len;
 
 
  129        chSysHalt(
"UAVCAN_MSG_MAX_SIZE too small");
 
  135                    header.data_type_signature,
 
  136                    header.data_type_id, &
iface->transfer_id,
 
  146      tx_msg.
len = 
txf->data_len;
 
 
  180    if (
transfer->data_type_id == 
ev->data_type_id) {
 
 
  198    if (data_type_id == 
ev->data_type_id) {
 
 
  230    iface->initialized = 
true;
 
 
  253  ev->data_type_id = data_type_id;
 
  254  ev->data_type_signature = data_type_signature;
 
 
  269  if (!
iface->initialized) { 
return; }
 
  273    .data_type_signature = data_type_signature,
 
  274    .data_type_id = data_type_id,
 
  276    .payload_len = payload_len
 
 
int can_register_callback(can_rx_frame_callback_t callback, struct pprzaddr_can *src_addr, void *user_data)
Add a callback on received frames from an interface.
uint8_t data[SOCKETCAN_MAX_DLEN]
int can_transmit_frame(struct pprzcan_frame *txframe, struct pprzaddr_can *addr)
int pprz_mtx_unlock(pprz_mutex_t *mtx)
void pprz_bsem_init(pprz_bsem_t *bsem, bool taken)
int pprz_thread_create(pprz_thread_t *thread, size_t size, const char *name, uint8_t prio, void(*pf)(void *), void *arg)
Creates a new thread whose stack is dynamically allocated.
int pprz_mtx_init(pprz_mutex_t *mtx)
int pprz_mtx_lock(pprz_mutex_t *mtx)
void pprz_bsem_signal(pprz_bsem_t *bsem)
void pprz_bsem_wait(pprz_bsem_t *bsem)
void(* uavcan_callback)(struct uavcan_iface_t *iface, CanardRxTransfer *transfer)
Generic uavcan callback definition.
#define UAVCAN_TX_FIFO_SIZE
#define UAVCAN_MSG_MAX_SIZE
Main uavcan event structure for registering/calling callbacks.
int circular_buffer_put(struct circular_buffer *cb, const uint8_t *buf, size_t len)
Copy buf in the circular buffer.
void circular_buffer_init(struct circular_buffer *cb, uint8_t *buffer, size_t len)
initialize a circular buffer.
int circular_buffer_get(struct circular_buffer *cb, uint8_t *buf, size_t len)
copy the next buffer available in cb to buf.
int circular_buffer_drop(struct circular_buffer *cb)
Drop last inserted record.
struct pprzaddr_can can_net
uavcan interface structure
uint8_t msg_payload[UAVCAN_MSG_MAX_SIZE]
static void can_frame_cb(struct pprzcan_frame *rx_msg, UNUSED struct pprzaddr_can *src_addr, void *user_data)
void uavcan_init(void)
Initialize all uavcan interfaces.
static bool shouldAcceptTransfer(const CanardInstance *ins, uint64_t *out_data_type_signature, uint16_t data_type_id, CanardTransferType transfer_type, uint8_t source_node_id)
If we should accept this transfer.
static void uavcanInitIface(struct uavcan_iface_t *iface)
Initialize uavcan interface.
void uavcan_broadcast(struct uavcan_iface_t *iface, uint64_t data_type_signature, uint16_t data_type_id, uint8_t priority, const void *payload, uint16_t payload_len)
Broadcast an uavcan message to a specific interface.
static void uavcan_tx(void *p)
static uavcan_event * uavcan_event_hd
void uavcan_bind(uint16_t data_type_id, uint64_t data_type_signature, uavcan_event *ev, uavcan_callback cb)
Bind to a receiving message from uavcan.
static void onTransferReceived(CanardInstance *ins, CanardRxTransfer *transfer)
Whenever a valid and 'accepted' transfer is received.
unsigned short uint16_t
Typedef defining 16 bit unsigned short type.
unsigned long long uint64_t
unsigned char uint8_t
Typedef defining 8 bit unsigned char type.
int transfer(const Mat *from, const image_t *to)