Stima V4 Slave RAIN  4.2
All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Modules
canardClass Class Reference

#include <canard_class_rain.hpp>

Classes

struct  CanardRxQueue
 
class  flag
 
union  heartbeat_VSC
 
class  master
 
class  next_transfer_id
 
class  port_id
 
class  publisher_enabled
 

Public Types

enum  Sensor_Type : uint8_t { tbr , tpr , tbm }
 
enum  GetMonotonicTime_Type : uint8_t { syncronized_time , start_syncronization }
 
enum  Introspection_Port : uint8_t { PublisherSubjectID , SubscriptionSubjectID , ClientPortID , ServicePortID }
 
enum  Command_Private : uint8_t {
  download_file = 5 , calibrate_accelerometer = 6 , module_maintenance = 7 , reset_flags = 8 ,
  enable_publish_rmap = 10 , disable_publish_rmap = 11 , enable_publish_port_list = 12 , disable_publish_port_list = 13 ,
  remote_test = 99 , remote_test_value = 100
}
 
typedef struct canardClass::CanardRxQueue CanardRxQueue
 

Public Member Functions

 canardClass ()
 Contruttore della classe Canard. More...
 
void send (CanardMicrosecond tx_deadline_usec, const CanardTransferMetadata *const metadata, const size_t payload_size, const void *const payload)
 Send messaggio Canard con daeadline del tempo sincronizzato. More...
 
void sendResponse (const CanardMicrosecond tx_deadline_usec, const CanardTransferMetadata *const request_metadata, const size_t payload_size, const void *const payload)
 Send risposta al messaggio Canard con daeadline del tempo sincronizzato. More...
 
bool transmitQueueDataPresent (void)
 Test coda presenza dati in trasmissione di Canard. More...
 
void transmitQueue (void)
 Trasmette la coda con timeStamp sincronizzato. Per inviare con real_time va aggiornata la sincronizzazione prima della chiamata al relativo metodo di getMonotonicMicrosecond() More...
 
void receiveQueueEmpty (void)
 Azzera il buffer di ricezione dati collegato a BxCAN e ISR Interrupt. More...
 
bool receiveQueueDataPresent (void)
 Ritorna true se ci sono dati utili da gestire dal buffer di RX per BxCAN. More...
 
uint8_t receiveQueueElement (void)
 Ritorna l'elemento corrente del buffer di BxCAN, pronto ad essere gestito con Canard. More...
 
uint8_t receiveQueueNextElement (uint8_t currElement)
 Ritorna il prossimo elemento del buffer. More...
 
void receiveQueue (void)
 Gestione metodo ricezione coda messaggi dal buffer FIFO preparato di BxCAN Il buffer gestito nella ISR CAN_Rx viene passato alla libreria Canard e in automatico è gestita la richiamata di callBack per la funzione esterna di gestione su Rx Messaggi conformi. More...
 
void receiveQueue (char *logMessage)
 Gestione metodo ricezione coda messaggi dal buffer FIFO preparato di BxCAN Il buffer gestito nella ISR CAN_Rx viene passato alla libreria Canard e in automatico è gestita la richiamata di callBack per la funzione esterna di gestione su Rx Messaggi conformi Overloading per log dei messaggi. More...
 
void setReceiveMessage_CB (void(*ptrFunction)(canardClass &, const CanardRxTransfer *, void *), void *param)
 Setta il CallBack Function per il processo esterno di interprete su messaggio ricevuto e conforme a Canard. Richiama la funzione esterna su CanardRxAccept Valido. Abilitato su SET. More...
 
void enableReceiveMessage_CB (void)
 Abilita il CallBack Function Canard RX Message CanardRxAccept. More...
 
void disableReceiveMessage_CB (void)
 Disabilita il CallBack Function Canard RX Message CanardRxAccept. More...
 
bool rxSubscribe (const CanardTransferKind transfer_kind, const CanardPortID port_id, const size_t extent, const CanardMicrosecond transfer_id_timeout_usec)
 Sottoscrizione di una funzione Canard. More...
 
uint8_t rxSubscriptionAvaiable (void)
 Ritorna il numero di sottoscrizioni ancora disponibili. More...
 
void rxUnSubscribe (const CanardTransferKind transfer_kind, const CanardPortID port_id)
 Rimozione di una sottoscrizione di una funzione Canard. More...
 
bool send_file_read_block (CanardNodeID server_id, char *fileName, uint64_t remoteOffset)
 Avvia la richiesta di un blocco file contiguo al file_server con ID Fisico. More...
 
bool master_file_read_block_pending (uint32_t timeout_us)
 Avvia la richiesta di un blocco file contiguo al file_server tramite classe e controllo Master. More...
 
bool slave_heartbeat_send_message (void)
 Invia il messaggio di HeartBeat ai nodi remoti. More...
 
bool slave_pnp_send_request (uint64_t serial_number)
 Invia il messaggio di PNP request (richiesta di node_id valido) al nodo server PNP (master) More...
 
bool slave_servicelist_send_message (void)
 Invia il messaggio dei servizi attivi ai nodi remoti. More...
 
void set_canard_node_id (CanardNodeID local_id)
 Imposta l'ID Nodo locale per l'istanza Canard privata della classe Canard. More...
 
CanardNodeID get_canard_node_id (void)
 Legge l'ID Nodo locale per l'istanza Canard privata della classe Canard. More...
 
bool is_canard_node_anonymous (void)
 Controlla se il nodo è anonimo (senza ID Impostato) More...
 
void set_canard_master_id (CanardNodeID remote_id)
 Set node master ID (slave respond to RMAP command and flag with master ID) More...
 
CanardNodeID get_canard_master_id (void)
 Get master node id for local set and flag operation automatic (sleep, power...) More...
 

Static Public Member Functions

static CanardMicrosecond getMicros ()
 Get MonotonicTime Interno realTime. More...
 
static CanardMicrosecond getMicros (GetMonotonicTime_Type syncro_type)
 Get MonotonicTime Interno con richiesta del tipo di sincronizzazione Overloading di RealTime. More...
 
static uint32_t getUpTimeSecond (void)
 Ritorna i secondi dall'avvio Canard per UpTime in (in formato 64 BIT necessario per UAVCAN) Non permette il reset n ei 70 minuti circa previsti per l'overflow della funzione uS a 32 Bit. More...
 

Public Attributes

class canardClass::master master
 
rmap_module_Rain_1_0 module_rain
 
class canardClass::port_id port_id
 
class canardClass::publisher_enabled publisher_enabled
 
class canardClass::next_transfer_id next_transfer_id
 
class canardClass::flag flag
 

Private Member Functions

void _fillSubscriptions (const CanardTreeNode *const tree, uavcan_node_port_SubjectIDList_0_1 *const obj)
 Prepara la lista delle sottoscrizioni Canard (privata) More...
 
void _fillServers (const CanardTreeNode *const tree, uavcan_node_port_ServiceIDList_0_1 *const obj)
 Prepara la lista dei servizi Canard (privata) More...
 
 _Alignas (O1HEAP_ALIGNMENT) uint8_t _heap_arena[HEAP_ARENA_SIZE]
 
O1HeapDiagnostics _memGetDiagnostics (void)
 Diagnostica Heap Data per Heartbeat e/o azioni interne. More...
 

Static Private Member Functions

static void * _memAllocate (CanardInstance *const ins, const size_t amount)
 Gestione O1Heap Memory Canard Allocate. More...
 
static void _memFree (CanardInstance *const ins, void *const pointer)
 Gestione O1Heap Memory Canard Free. More...
 

Private Attributes

CanardInstance _canard
 
CanardNodeID _master_id
 
CanardRxQueue _canard_rx_queue
 
CanardTxQueue _canard_tx_queues [CAN_REDUNDANCY_FACTOR]
 
O1HeapInstance * _heap
 
bool _attach_rx_callback
 
void(* _attach_rx_callback_PTR )(canardClass &, const CanardRxTransfer *, void *)
 
void * _attach_param_PTR
 
CanardRxSubscription _rxSubscription [MAX_SUBSCRIPTION]
 
uint8_t _rxSubscriptionIdx
 

Static Private Attributes

static uint32_t _lastMicros
 
static uint64_t _currMicros
 
static uint64_t _syncMicros
 
static uint64_t _mastMicros
 

Detailed Description

Definition at line 55 of file canard_class_rain.hpp.

Member Typedef Documentation

◆ CanardRxQueue

Member Enumeration Documentation

◆ Command_Private

Enumerator
download_file 
calibrate_accelerometer 
module_maintenance 
reset_flags 
enable_publish_rmap 
disable_publish_rmap 
enable_publish_port_list 
disable_publish_port_list 
remote_test 
remote_test_value 

Definition at line 85 of file canard_class_rain.hpp.

◆ GetMonotonicTime_Type

Enumerator
syncronized_time 
start_syncronization 

Definition at line 71 of file canard_class_rain.hpp.

◆ Introspection_Port

Enumerator
PublisherSubjectID 
SubscriptionSubjectID 
ClientPortID 
ServicePortID 

Definition at line 77 of file canard_class_rain.hpp.

◆ Sensor_Type

enum canardClass::Sensor_Type : uint8_t
Enumerator
tbr 
tpr 
tbm 

Definition at line 64 of file canard_class_rain.hpp.

Constructor & Destructor Documentation

◆ canardClass()

canardClass::canardClass ( )

Contruttore della classe Canard.

Definition at line 76 of file canard_class_rain.cpp.

Member Function Documentation

◆ _Alignas()

canardClass::_Alignas ( O1HEAP_ALIGNMENT  )
private

◆ _fillServers()

void canardClass::_fillServers ( const CanardTreeNode *const  tree,
uavcan_node_port_ServiceIDList_0_1 *const  obj 
)
private

Prepara la lista dei servizi Canard (privata)

Parameters
treeout albero servizi
objoggetto servizi

Definition at line 821 of file canard_class_rain.cpp.

◆ _fillSubscriptions()

void canardClass::_fillSubscriptions ( const CanardTreeNode *const  tree,
uavcan_node_port_SubjectIDList_0_1 *const  obj 
)
private

Prepara la lista delle sottoscrizioni Canard (privata)

Parameters
treeout albero sottoscrizioni
objoggetto sottoscrizioni

Definition at line 805 of file canard_class_rain.cpp.

◆ _memAllocate()

void * canardClass::_memAllocate ( CanardInstance *const  ins,
const size_t  amount 
)
staticprivate

Gestione O1Heap Memory Canard Allocate.

Parameters
insistanza canard
amountdimensione da allocare
Returns
puntatore alla O1Heap allineata

Definition at line 1095 of file canard_class_rain.cpp.

◆ _memFree()

void canardClass::_memFree ( CanardInstance *const  ins,
void *const  pointer 
)
staticprivate

Gestione O1Heap Memory Canard Free.

Parameters
insistanza canard
pointerpuntatore alla posizione da deallocare

Definition at line 1104 of file canard_class_rain.cpp.

◆ _memGetDiagnostics()

O1HeapDiagnostics canardClass::_memGetDiagnostics ( void  )
private

Diagnostica Heap Data per Heartbeat e/o azioni interne.

Returns
O1HeapDiagnostics Info

Definition at line 1111 of file canard_class_rain.cpp.

◆ disableReceiveMessage_CB()

void canardClass::disableReceiveMessage_CB ( void  )

Disabilita il CallBack Function Canard RX Message CanardRxAccept.

Definition at line 380 of file canard_class_rain.cpp.

◆ enableReceiveMessage_CB()

void canardClass::enableReceiveMessage_CB ( void  )

Abilita il CallBack Function Canard RX Message CanardRxAccept.

Definition at line 375 of file canard_class_rain.cpp.

◆ get_canard_master_id()

CanardNodeID canardClass::get_canard_master_id ( void  )

Get master node id for local set and flag operation automatic (sleep, power...)

Returns
Master node ID

Definition at line 1082 of file canard_class_rain.cpp.

◆ get_canard_node_id()

CanardNodeID canardClass::get_canard_node_id ( void  )

Legge l'ID Nodo locale per l'istanza Canard privata della classe Canard.

Returns
id nodo locale

Definition at line 1061 of file canard_class_rain.cpp.

◆ getMicros() [1/2]

CanardMicrosecond canardClass::getMicros ( )
static

Get MonotonicTime Interno realTime.

Returns
Microsecondi correnti realTime di Canard

Definition at line 135 of file canard_class_rain.cpp.

◆ getMicros() [2/2]

CanardMicrosecond canardClass::getMicros ( GetMonotonicTime_Type  syncro_type)
static

Get MonotonicTime Interno con richiesta del tipo di sincronizzazione Overloading di RealTime.

Parameters
syncro_typeTipo di funzione richiesta (sincronizzato, inizializza sincronizzazione)
Returns
Microsecondi correnti parametrizzato dalla richiesta

Definition at line 153 of file canard_class_rain.cpp.

◆ getUpTimeSecond()

uint32_t canardClass::getUpTimeSecond ( void  )
static

Ritorna i secondi dall'avvio Canard per UpTime in (in formato 64 BIT necessario per UAVCAN) Non permette il reset n ei 70 minuti circa previsti per l'overflow della funzione uS a 32 Bit.

Returns
Secondi dall'avvio di Canard (per funzioni Heartbeat o altri scopi)

Definition at line 162 of file canard_class_rain.cpp.

◆ is_canard_node_anonymous()

bool canardClass::is_canard_node_anonymous ( void  )

Controlla se il nodo è anonimo (senza ID Impostato)

Returns
true se il nodo è anonimo (ID Non valido o non Settato)

Definition at line 1068 of file canard_class_rain.cpp.

◆ master_file_read_block_pending()

bool canardClass::master_file_read_block_pending ( uint32_t  timeout_us)

Avvia la richiesta di un blocco file contiguo al file_server tramite classe e controllo Master.

Parameters
timeout_usdeadline di comando
Returns
true se il metodo è eseguito correttamente

Definition at line 433 of file canard_class_rain.cpp.

◆ receiveQueue() [1/2]

void canardClass::receiveQueue ( char *  logMessage)

Gestione metodo ricezione coda messaggi dal buffer FIFO preparato di BxCAN Il buffer gestito nella ISR CAN_Rx viene passato alla libreria Canard e in automatico è gestita la richiamata di callBack per la funzione esterna di gestione su Rx Messaggi conformi Overloading per log dei messaggi.

Parameters
logMessageBuffer esterno per la gestione del messaggio di log

Definition at line 324 of file canard_class_rain.cpp.

◆ receiveQueue() [2/2]

void canardClass::receiveQueue ( void  )

Gestione metodo ricezione coda messaggi dal buffer FIFO preparato di BxCAN Il buffer gestito nella ISR CAN_Rx viene passato alla libreria Canard e in automatico è gestita la richiamata di callBack per la funzione esterna di gestione su Rx Messaggi conformi.

Definition at line 299 of file canard_class_rain.cpp.

◆ receiveQueueDataPresent()

bool canardClass::receiveQueueDataPresent ( void  )

Ritorna true se ci sono dati utili da gestire dal buffer di RX per BxCAN.

Returns
true se il buffer non è vuoto.

Definition at line 274 of file canard_class_rain.cpp.

◆ receiveQueueElement()

uint8_t canardClass::receiveQueueElement ( void  )

Ritorna l'elemento corrente del buffer di BxCAN, pronto ad essere gestito con Canard.

Returns
Indice dell'elemento ricevuto

Definition at line 280 of file canard_class_rain.cpp.

◆ receiveQueueEmpty()

void canardClass::receiveQueueEmpty ( void  )

Azzera il buffer di ricezione dati collegato a BxCAN e ISR Interrupt.

Definition at line 268 of file canard_class_rain.cpp.

◆ receiveQueueNextElement()

uint8_t canardClass::receiveQueueNextElement ( uint8_t  currElement)

Ritorna il prossimo elemento del buffer.

Parameters
currElementelemento corrente gestito
Returns
prossimo elemento della coda FIFO

Definition at line 291 of file canard_class_rain.cpp.

◆ rxSubscribe()

bool canardClass::rxSubscribe ( const CanardTransferKind  transfer_kind,
const CanardPortID  port_id,
const size_t  extent,
const CanardMicrosecond  transfer_id_timeout_usec 
)

Sottoscrizione di una funzione Canard.

Parameters
transfer_kindtipo di messaggio
port_idporta del messaggio
extentdimensione del pacchetto dati
transfer_id_timeout_usecdaeadline di validità messaggio in microsecondi
Returns
true se la sottoscrizione è avvenuta

Definition at line 394 of file canard_class_rain.cpp.

◆ rxSubscriptionAvaiable()

uint8_t canardClass::rxSubscriptionAvaiable ( void  )

Ritorna il numero di sottoscrizioni ancora disponibili.

Returns
Numero di sottoscrizioni libere

Definition at line 413 of file canard_class_rain.cpp.

◆ rxUnSubscribe()

void canardClass::rxUnSubscribe ( const CanardTransferKind  transfer_kind,
const CanardPortID  port_id 
)

Rimozione di una sottoscrizione di una funzione Canard.

Parameters
transfer_kindtipo di messaggio
port_idporta del messaggio

Definition at line 420 of file canard_class_rain.cpp.

◆ send()

void canardClass::send ( CanardMicrosecond  tx_deadline_usec,
const CanardTransferMetadata *const  metadata,
const size_t  payload_size,
const void *const  payload 
)

Send messaggio Canard con daeadline del tempo sincronizzato.

Parameters
tx_deadline_usecmicrosecondi di validità del messaggio
metadatametadata del messaggio
payload_sizedimensione del messaggio
payloadmessaggio da trasmettere

Definition at line 175 of file canard_class_rain.cpp.

◆ send_file_read_block()

bool canardClass::send_file_read_block ( CanardNodeID  server_id,
char *  fileName,
uint64_t  remoteOffset 
)

Avvia la richiesta di un blocco file contiguo al file_server con ID Fisico.

Parameters
server_idremote file_server
fileNameNome del file da prelevare
remoteOffsetoffset di prelievo del blocco file remoto
Returns
true se il metodo è eseguito correttamente

Definition at line 447 of file canard_class_rain.cpp.

◆ sendResponse()

void canardClass::sendResponse ( const CanardMicrosecond  tx_deadline_usec,
const CanardTransferMetadata *const  request_metadata,
const size_t  payload_size,
const void *const  payload 
)

Send risposta al messaggio Canard con daeadline del tempo sincronizzato.

Parameters
tx_deadline_usecmicrosecondi di validità del messaggio
request_metadatametadata del messaggio
payload_sizedimensione del messaggio
payloadmessaggio da trasmettere

Definition at line 194 of file canard_class_rain.cpp.

◆ set_canard_master_id()

void canardClass::set_canard_master_id ( CanardNodeID  remote_id)

Set node master ID (slave respond to RMAP command and flag with master ID)

Parameters
remote_idremote id for master (normal reading in register)

Definition at line 1075 of file canard_class_rain.cpp.

◆ set_canard_node_id()

void canardClass::set_canard_node_id ( CanardNodeID  local_id)

Imposta l'ID Nodo locale per l'istanza Canard privata della classe Canard.

Parameters
local_idid nodo locale

Definition at line 1054 of file canard_class_rain.cpp.

◆ setReceiveMessage_CB()

void canardClass::setReceiveMessage_CB ( void(*)(canardClass &, const CanardRxTransfer *, void *)  ptrFunction,
void *  param 
)

Setta il CallBack Function per il processo esterno di interprete su messaggio ricevuto e conforme a Canard. Richiama la funzione esterna su CanardRxAccept Valido. Abilitato su SET.

Parameters
ptrFunctionpuntatore alla funzione di callBack(canardClass&, const CanardRxTransfer*)
paramcanard rx transfer parameters

Definition at line 368 of file canard_class_rain.cpp.

◆ slave_heartbeat_send_message()

bool canardClass::slave_heartbeat_send_message ( void  )

Invia il messaggio di HeartBeat ai nodi remoti.

Returns
true se il metodo è eseguito correttamente

Definition at line 738 of file canard_class_rain.cpp.

◆ slave_pnp_send_request()

bool canardClass::slave_pnp_send_request ( uint64_t  serial_number)

Invia il messaggio di PNP request (richiesta di node_id valido) al nodo server PNP (master)

Returns
true se il metodo è eseguito correttamente

Definition at line 775 of file canard_class_rain.cpp.

◆ slave_servicelist_send_message()

bool canardClass::slave_servicelist_send_message ( void  )

Invia il messaggio dei servizi attivi ai nodi remoti.

Returns
true se il metodo è eseguito correttamente

Definition at line 835 of file canard_class_rain.cpp.

◆ transmitQueue()

void canardClass::transmitQueue ( void  )

Trasmette la coda con timeStamp sincronizzato. Per inviare con real_time va aggiornata la sincronizzazione prima della chiamata al relativo metodo di getMonotonicMicrosecond()

Definition at line 218 of file canard_class_rain.cpp.

◆ transmitQueueDataPresent()

bool canardClass::transmitQueueDataPresent ( void  )

Test coda presenza dati in trasmissione di Canard.

Returns
true se ci sono dati da trasmettere

Definition at line 205 of file canard_class_rain.cpp.

Member Data Documentation

◆ _attach_param_PTR

void* canardClass::_attach_param_PTR
private

Definition at line 418 of file canard_class_rain.hpp.

◆ _attach_rx_callback

bool canardClass::_attach_rx_callback
private

Definition at line 416 of file canard_class_rain.hpp.

◆ _attach_rx_callback_PTR

void(* canardClass::_attach_rx_callback_PTR) (canardClass &, const CanardRxTransfer *, void *)
private

Definition at line 417 of file canard_class_rain.hpp.

◆ _canard

CanardInstance canardClass::_canard
private

Definition at line 385 of file canard_class_rain.hpp.

◆ _canard_rx_queue

CanardRxQueue canardClass::_canard_rx_queue
private

Definition at line 392 of file canard_class_rain.hpp.

◆ _canard_tx_queues

CanardTxQueue canardClass::_canard_tx_queues[CAN_REDUNDANCY_FACTOR]
private

Definition at line 393 of file canard_class_rain.hpp.

◆ _currMicros

uint64_t canardClass::_currMicros
inlinestaticprivate

Definition at line 397 of file canard_class_rain.hpp.

◆ _heap

O1HeapInstance* canardClass::_heap
private

Definition at line 406 of file canard_class_rain.hpp.

◆ _lastMicros

uint32_t canardClass::_lastMicros
inlinestaticprivate

Definition at line 396 of file canard_class_rain.hpp.

◆ _master_id

CanardNodeID canardClass::_master_id
private

Definition at line 389 of file canard_class_rain.hpp.

◆ _mastMicros

uint64_t canardClass::_mastMicros
inlinestaticprivate

Definition at line 399 of file canard_class_rain.hpp.

◆ _rxSubscription

CanardRxSubscription canardClass::_rxSubscription[MAX_SUBSCRIPTION]
private

Definition at line 421 of file canard_class_rain.hpp.

◆ _rxSubscriptionIdx

uint8_t canardClass::_rxSubscriptionIdx
private

Definition at line 422 of file canard_class_rain.hpp.

◆ _syncMicros

uint64_t canardClass::_syncMicros
inlinestaticprivate

Definition at line 398 of file canard_class_rain.hpp.

◆ flag

◆ master

◆ module_rain

rmap_module_Rain_1_0 canardClass::module_rain

Definition at line 290 of file canard_class_rain.hpp.

◆ next_transfer_id

◆ port_id

◆ publisher_enabled


The documentation for this class was generated from the following files: