mirror of
https://github.com/Show-maket/IR-protocol.git
synced 2025-05-04 07:10:16 +00:00
cleanup
This commit is contained in:
parent
469d9875c8
commit
02410cc78c
@ -374,7 +374,7 @@ void IR_Decoder::writeToBuffer(bool bit) {
|
|||||||
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
}
|
}
|
||||||
|
|
||||||
bool IR_Decoder::crcCheck(uint8_t len, uint16_t &crc) {
|
bool IR_Decoder::crcCheck(uint8_t len, crc_t &crc) {
|
||||||
bool crcOK = false;
|
bool crcOK = false;
|
||||||
|
|
||||||
crc = 0;
|
crc = 0;
|
||||||
|
@ -23,6 +23,7 @@
|
|||||||
|
|
||||||
#define subBufferSize 7 //Буфер для складирования фронтов, пока их не обработают
|
#define subBufferSize 7 //Буфер для складирования фронтов, пока их не обработают
|
||||||
|
|
||||||
|
|
||||||
class IR_Encoder;
|
class IR_Encoder;
|
||||||
class IR_Decoder : private IR_FOX {
|
class IR_Decoder : private IR_FOX {
|
||||||
friend IR_Encoder;
|
friend IR_Encoder;
|
||||||
@ -200,7 +201,7 @@ private:
|
|||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
void noFunc();
|
void noFunc();
|
||||||
volatile uint8_t currentSubBufferIndex; // Счетчик текущей позиции во вспомогательном буфере фронтов/спадов
|
volatile uint8_t currentSubBufferIndex; // Счетчик текущей позиции во вспомогательном буфере фронтов/спадов
|
||||||
|
|
||||||
struct FrontStorage { // Структура для хранения времени и направления фронта/спада
|
struct FrontStorage { // Структура для хранения времени и направления фронта/спада
|
||||||
volatile uint32_t time; // Время
|
volatile uint32_t time; // Время
|
||||||
volatile bool dir; // Направление (true = ↑; false = ↓)
|
volatile bool dir; // Направление (true = ↑; false = ↓)
|
||||||
@ -220,7 +221,7 @@ private:
|
|||||||
volatile FrontStorage subBuffer[subBufferSize]; // вспомогательный буфер для хранения необработанных фронтов/спадов
|
volatile FrontStorage subBuffer[subBufferSize]; // вспомогательный буфер для хранения необработанных фронтов/спадов
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
uint8_t* dataBuffer = nullptr; // Указатель на буффер данных
|
uint8_t* dataBuffer = nullptr; // Указатель на буффер данных
|
||||||
uint32_t prevRise,prevPrevRise, prevFall, prevPrevFall; // Время предыдущих фронтов/спадов
|
uint32_t prevRise, prevPrevRise, prevFall, prevPrevFall; // Время предыдущих фронтов/спадов
|
||||||
uint16_t errorCounter = 0; // Счётчик ошибок
|
uint16_t errorCounter = 0; // Счётчик ошибок
|
||||||
int8_t preambFrontCounter = 0; // Счётчик __/``` ↑ преамбулы
|
int8_t preambFrontCounter = 0; // Счётчик __/``` ↑ преамбулы
|
||||||
int16_t bufBitPos = 0; // Позиция для записи бита в буффер
|
int16_t bufBitPos = 0; // Позиция для записи бита в буффер
|
||||||
@ -230,14 +231,14 @@ private:
|
|||||||
/// @param len Длина в байтах проверяемых данных
|
/// @param len Длина в байтах проверяемых данных
|
||||||
/// @param crc Результат рассчёта crc (Выходной параметр)
|
/// @param crc Результат рассчёта crc (Выходной параметр)
|
||||||
/// @return true если crc верно
|
/// @return true если crc верно
|
||||||
bool crcCheck(uint8_t len, uint16_t &crc);
|
bool crcCheck(uint8_t len, uint16_t& crc);
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
bool isData = true; // Флаг относится ли бит к данным, или битам синхронизации
|
bool isData = true; // Флаг относится ли бит к данным, или битам синхронизации
|
||||||
uint16_t i_dataBuffer; // Счётчик буфера данных
|
uint16_t i_dataBuffer; // Счётчик буфера данных
|
||||||
uint8_t nextControlBit = bitPerByte; // Метка для смены флага isData
|
uint8_t nextControlBit = bitPerByte; // Метка для смены флага isData
|
||||||
uint8_t i_syncBit; // Счётчик битов синхронизации
|
uint8_t i_syncBit; // Счётчик битов синхронизации
|
||||||
uint8_t err_syncBit; // Счётчик ошибок синхронизации
|
uint8_t err_syncBit; // Счётчик ошибок синхронизации
|
||||||
|
|
||||||
/// @brief Запиь бита в буффер, а так же проверка битов синхранизации и их фильтрация
|
/// @brief Запиь бита в буффер, а так же проверка битов синхранизации и их фильтрация
|
||||||
/// @param Бит данных
|
/// @param Бит данных
|
||||||
void writeToBuffer(bool);
|
void writeToBuffer(bool);
|
||||||
|
20
IR_config.h
20
IR_config.h
@ -11,7 +11,7 @@
|
|||||||
IR_MSG_ACCEPT с адреса 0 воспринимается всеми устройствами
|
IR_MSG_ACCEPT с адреса 0 воспринимается всеми устройствами
|
||||||
|
|
||||||
|
|
||||||
Адресное пространство:
|
Адресное пространство:
|
||||||
|
|
||||||
Излучатели контрольных точек: 1000 ~ 1999
|
Излучатели контрольных точек: 1000 ~ 1999
|
||||||
Излучатели без обратной связиЖ 2000 ~ 2999
|
Излучатели без обратной связиЖ 2000 ~ 2999
|
||||||
@ -70,6 +70,7 @@ msg type:
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
/////////////////////////////////////////////////////////////////////////////////////*/
|
/////////////////////////////////////////////////////////////////////////////////////*/
|
||||||
|
typedef uint16_t crc_t;
|
||||||
|
|
||||||
#define bytePerPack 3 // колличество байтов в пакете
|
#define bytePerPack 3 // колличество байтов в пакете
|
||||||
#ifndef freeFrec
|
#ifndef freeFrec
|
||||||
@ -89,13 +90,12 @@ msg type:
|
|||||||
#define addrBytes 2
|
#define addrBytes 2
|
||||||
#define msgBytes 1
|
#define msgBytes 1
|
||||||
#define crcBytes 2
|
#define crcBytes 2
|
||||||
typedef uint16_t crc_t;
|
|
||||||
#define poly1 0x31
|
#define poly1 0x31
|
||||||
#define poly2 0x8C
|
#define poly2 0x8C
|
||||||
#define syncBits 3U // количество битов синхронизации
|
#define syncBits 3U // количество битов синхронизации
|
||||||
|
|
||||||
#define dataByteSizeMax (msgBytes + addrBytes + addrBytes + bytePerPack + crcBytes)
|
#define dataByteSizeMax (msgBytes + addrBytes + addrBytes + bytePerPack + crcBytes)
|
||||||
// размер msg в битах // размер короткой посылки в битах
|
// размер msg в битах // размер короткой посылки в битах
|
||||||
#define dataBitSize ((8 + syncBits) * dataByteSizeMax) // размер посылки с данными в битах
|
#define dataBitSize ((8 + syncBits) * dataByteSizeMax) // размер посылки с данными в битах
|
||||||
#define bufferBitSizeMax (dataBitSize) // Размер буффера в битах
|
#define bufferBitSizeMax (dataBitSize) // Размер буффера в битах
|
||||||
|
|
||||||
@ -111,9 +111,9 @@ typedef uint16_t crc_t;
|
|||||||
|
|
||||||
#define bitTakts (bitActiveTakts+bitPauseTakts*2U) // Общая длительность бита в тактах
|
#define bitTakts (bitActiveTakts+bitPauseTakts*2U) // Общая длительность бита в тактах
|
||||||
#define bitTime (bitTakts*carrierPeriod) // Общая длительность бита
|
#define bitTime (bitTakts*carrierPeriod) // Общая длительность бита
|
||||||
const auto viewValue = bitTime;
|
|
||||||
#define tolerance 300U
|
#define tolerance 300U
|
||||||
|
|
||||||
|
|
||||||
class IR_FOX {
|
class IR_FOX {
|
||||||
private:
|
private:
|
||||||
bool isSending = false;
|
bool isSending = false;
|
||||||
@ -132,12 +132,12 @@ protected:
|
|||||||
}
|
}
|
||||||
return crc;
|
return crc;
|
||||||
}
|
}
|
||||||
// public:
|
// public:
|
||||||
/// @brief Вывод массива байт в строковом формате
|
/// @brief Вывод массива байт в строковом формате
|
||||||
/// @param d Указатель на массив
|
/// @param d Указатель на массив
|
||||||
/// @param s Размер массива
|
/// @param s Размер массива
|
||||||
/// @param mode Формат вывода DEC, BIN
|
/// @param mode Формат вывода DEC, BIN
|
||||||
/// @return Готовая для вывода строка
|
/// @return Готовая для вывода строка
|
||||||
String printBytes(uint8_t* d, uint8_t s, uint8_t mode = 10) {
|
String printBytes(uint8_t* d, uint8_t s, uint8_t mode = 10) {
|
||||||
String str = "";
|
String str = "";
|
||||||
uint8_t control = bitPerByte;
|
uint8_t control = bitPerByte;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user