Paparazzi UAS v7.0_unstable
Paparazzi is a free software Unmanned Aircraft System.
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
uavcan.c File Reference

Interface from actuators to ChibiOS CAN driver using UAVCan. More...

#include "uavcan.h"
+ Include dependency graph for uavcan.c:

Go to the source code of this file.

Macros

#define UAVCAN_NODE_ID   100
 
#define UAVCAN_BAUDRATE   1000000
 

Functions

void can_init (void)
 
static THD_FUNCTION (uavcan_rx, p)
 
static THD_FUNCTION (uavcan_tx, p)
 
static void onTransferReceived (CanardInstance *ins, CanardRxTransfer *transfer)
 Whenever a valid and 'accepted' transfer is received.
 
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 bool uavcanConfigureIface (struct uavcan_iface_t *iface)
 Try to compute the timing registers for the can interface and set the configuration.
 
static void uavcanInitIface (struct uavcan_iface_t *iface)
 Initialize uavcan interface.
 
void uavcan_init (void)
 Initialize all uavcan interfaces.
 
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.
 
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.
 

Variables

static uavcan_eventuavcan_event_hd = NULL
 

Detailed Description

Interface from actuators to ChibiOS CAN driver using UAVCan.

Definition in file uavcan.c.

Macro Definition Documentation

◆ UAVCAN_BAUDRATE

#define UAVCAN_BAUDRATE   1000000

Definition at line 34 of file uavcan.c.

◆ UAVCAN_NODE_ID

#define UAVCAN_NODE_ID   100

Definition at line 30 of file uavcan.c.

Function Documentation

◆ can_init()

void can_init ( void  )

Definition at line 94 of file uavcan.c.

Referenced by can_hw_init(), and mcu_init().

+ Here is the caller graph for this function:

◆ onTransferReceived()

static void onTransferReceived ( CanardInstance ins,
CanardRxTransfer transfer 
)
static

Whenever a valid and 'accepted' transfer is received.

Definition at line 209 of file uavcan.c.

References abi_struct::cb, ev, foo, abi_struct::next, transfer(), and uavcan_event_hd.

Referenced by uavcanInitIface().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ shouldAcceptTransfer()

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 
)
static

If we should accept this transfer.

Definition at line 224 of file uavcan.c.

References ev, foo, abi_struct::next, and uavcan_event_hd.

Referenced by uavcanInitIface().

+ Here is the caller graph for this function:

◆ THD_FUNCTION() [1/2]

static THD_FUNCTION ( uavcan_rx  ,
p   
)
static

Definition at line 99 of file uavcan.c.

References foo, and p.

◆ THD_FUNCTION() [2/2]

static THD_FUNCTION ( uavcan_tx  ,
p   
)
static

Definition at line 145 of file uavcan.c.

References foo, and p.

◆ uavcan_bind()

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.

Definition at line 417 of file uavcan.c.

References abi_struct::cb, ev, abi_struct::next, and uavcan_event_hd.

Referenced by actuators_uavcan_init(), airspeed_uavcan_init(), can_fuelcell_init(), power_uavcan_init(), and range_sensor_uavcan_init().

+ Here is the caller graph for this function:

◆ uavcan_broadcast()

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.

Definition at line 432 of file uavcan.c.

References foo.

Referenced by actuators_uavcan_cmd_commit(), and actuators_uavcan_commit().

+ Here is the caller graph for this function:

◆ uavcan_init()

void uavcan_init ( void  )

Initialize all uavcan interfaces.

uavcan interfaces

Definition at line 388 of file uavcan.c.

References foo, and uavcanInitIface().

+ Here is the call graph for this function:

◆ uavcanConfigureIface()

static bool uavcanConfigureIface ( struct uavcan_iface_t iface)
static

Try to compute the timing registers for the can interface and set the configuration.

Definition at line 245 of file uavcan.c.

References foo.

Referenced by uavcanInitIface().

+ Here is the caller graph for this function:

◆ uavcanInitIface()

static void uavcanInitIface ( struct uavcan_iface_t iface)
static

Initialize uavcan interface.

Definition at line 359 of file uavcan.c.

References foo, onTransferReceived(), shouldAcceptTransfer(), and uavcanConfigureIface().

Referenced by uavcan_init().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Variable Documentation

◆ uavcan_event_hd

uavcan_event* uavcan_event_hd = NULL
static

Definition at line 37 of file uavcan.c.

Referenced by onTransferReceived(), shouldAcceptTransfer(), and uavcan_bind().