SAB2 interface.
More...
#include <modm/communication/sab2/interface.hpp>
|
using | Index = std::conditional_t< (N >=255), uint16_t, uint8_t > |
|
using | Size = Index |
|
|
static void | initialize () |
| Initialize the interface. More...
|
|
static void | sendMessage (uint8_t address, Flags flags, uint8_t command, const void *payload, Size payloadLength) |
| Send a message. More...
|
|
template<typename T > |
static void | sendMessage (uint8_t address, Flags flags, uint8_t command, const T &payload) |
| Send a message.
|
|
static void | sendMessage (uint8_t address, Flags flags, uint8_t command) |
| Send a empty message.
|
|
static bool | isMessageAvailable () |
| Check if a message was received. More...
|
|
static uint8_t | getAddress () |
|
static uint8_t | getCommand () |
|
static bool | isResponse () |
|
static bool | isAcknowledge () |
| Check if the message is an ACK or NACK. More...
|
|
static const uint8_t * | getPayload () |
| Access the data of a received message. More...
|
|
static Size | getPayloadLength () |
|
static void | dropMessage () |
| End procession of the current message.
|
|
static void | update () |
| Update internal status. More...
|
|
template<typename Device, std::size_t N = maxPayloadLength>
class modm::sab2::Interface< Device, N >
SAB2 interface.
The framing is adapted from the HDLC asynchronous framing. See http://en.wikipedia.org/wiki/High-Level_Data_Link_Control#Asynchronous_framing
- Author
- Fabian Greif
template<typename Device , std::size_t N = maxPayloadLength>
static const uint8_t* modm::sab2::Interface< Device, N >::getPayload |
( |
| ) |
|
|
inlinestatic |
template<typename Device , std::size_t N = maxPayloadLength>
static Size modm::sab2::Interface< Device, N >::getPayloadLength |
( |
| ) |
|
|
inlinestatic |
- Returns
- Size of the received message. Zero if no message is available at the moment.
template<typename Device , std::size_t N = maxPayloadLength>
static void modm::sab2::Interface< Device, N >::initialize |
( |
| ) |
|
|
static |
Initialize the interface.
The UART has the be configured before calling this method.
template<typename Device , std::size_t N = maxPayloadLength>
static bool modm::sab2::Interface< Device, N >::isAcknowledge |
( |
| ) |
|
|
inlinestatic |
Check if the message is an ACK or NACK.
- Returns
true
if the message is an ACK, false
on NACK.
template<typename Device , std::size_t N = maxPayloadLength>
static bool modm::sab2::Interface< Device, N >::isMessageAvailable |
( |
| ) |
|
|
inlinestatic |
Check if a message was received.
Reset the status with a call of dropMessage().
template<typename Device , std::size_t N = maxPayloadLength>
static void modm::sab2::Interface< Device, N >::sendMessage |
( |
uint8_t |
address, |
|
|
Flags |
flags, |
|
|
uint8_t |
command, |
|
|
const void * |
payload, |
|
|
Size |
payloadLength |
|
) |
| |
|
static |
Send a message.
- Parameters
-
address | receiver address |
flags | see modm::sab::Flags |
command | command byte |
*payload | data field |
payloadLength | size of the data field |
template<typename Device , std::size_t N = maxPayloadLength>
static void modm::sab2::Interface< Device, N >::update |
( |
| ) |
|
|
static |
Update internal status.
Has to be called periodically. Encodes received messages.
The documentation for this class was generated from the following file:
- communication/sab2/interface.hpp