Arduino library for RS-485 network communication
#!!! IN DEVELOPING !!!
Класс имеет несколько колбэков для обработки принимаемых пакетов, а так-же обработки ошибок, возникших во время передачи или разбора данных.
При получении широковещательного пакета или пакета адресованного конкретному устройству вызывается колбэк bool OnReceive(DragonNETPacket &request, DragonNETPacket &response)
.
Параметр request
содержит ссылку на принятый пакет.
Параметр response
содержит ссылку на пакет, предназначенный для ответа.
Оба параметра имеет тип DragonNET_Packet
, методы работы с ним находятся ниже.
Колбэк должен вернуть булевый тип, который управляет функции ответа. Иными словами, если вернуть true, то после выхода будет отправлен пакет response
, в противном случае отправки не произойдёт.
При возникновении ошибок, вызывается колбэк void OnError(uint8_t errorType)
.
Параметр errorType
содержит код ошибки.
Код ошибки | Описание ошибки |
---|---|
DRAGONNET_ERROR_STRUCTURE | Нарушена структура пакета |
DRAGONNET_ERROR_CRC | Нарушена контрольная сумма |
DRAGONNET_ERROR_OVERFLOW | Переполнение RX буфера |
Класс предназначен для работы с пакетом данных, который упрощает работу с библиотекой в целом.
Метод | Описание | Тип |
---|---|---|
void PutToAddress(uint8_t address) |
Вставить адрес получателя | Пользовательский |
uint8_t TakeToAddress() |
Взять адрес получателя | Пользовательский |
void PutFromAddress(uint8_t address) |
Вставить адрес отправителя | Пользовательский |
uint8_t TakeFromAddress() |
Взять адрес отправителя | Пользовательский |
void PutConfigByte(byte config) |
Вставить байт настройки | Системный |
byte TakeConfigByte() |
Взять байт настройки | Системный |
bool PutData1(byte data) |
Вставить данные побайтно | Пользовательский / Системный |
byte TakeData1() |
Взять данные побайтно | Пользовательский / Системный |
bool PutData2(byte *data, uint8_t length) |
Вставить данные по ссылке | Пользовательский / Системный |
const byte *TakeData2() |
Взять данные по ссылке | Пользовательский / Системный |
uint8_t TakeDataLength() |
Взять длину данных | Пользовательский / Системный |
bool PutPacket1(byte packet) |
Вставить пакет побайтно | Пользовательский / Системный |
byte TakePacket1() |
Взять пакет побайтно | Пользовательский / Системный |
bool PutPacket2(byte *packet, uint8_t length) |
Вставить пакет по ссылке | Пользовательский / Системный |
const byte *TakePacket2() |
Взять пакет по ссылке | Пользовательский / Системный |
uint8_t TakePacketLength() |
Взять длину пакета | Пользовательский / Системный |
uint8_t CheckPacket() |
Проверка пакета, при приёме. Вернёт:0 - Пакет корректный1 - Ошибка структуры пакета2 - Ошибка CRC16. |
Пользовательский / Системный |
void PreparePackage() |
Подготовка пакета перед отправкой | Системный |
uint16_t TakeCRC16() |
Взять CRC16 от пакета | Пользовательский / Системный |
void Cleaning() |
Сбросить класс | Пользовательский / Системный |