Paparazzi UAS v7.0_unstable
Paparazzi is a free software Unmanned Aircraft System.
Loading...
Searching...
No Matches
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().