refactor working

This commit is contained in:
2024-02-26 11:38:35 +03:00
parent e35bf7ae23
commit 1dc702f05d
5 changed files with 128 additions and 121 deletions

View File

@ -2,7 +2,7 @@
#include "IR_config.h"
class IOffsets {
public:
protected:
uint8_t msgOffset;
uint8_t addressFromOffset;
uint8_t addressToOffset;
@ -14,14 +14,34 @@ public:
IR_FOX::PackInfo* packInfo;
};
class IBaseEmptyPack : virtual public IOffsets, virtual public IPackInfo {};
class IBaseEmptyPack : virtual public IOffsets, virtual public IPackInfo {
};
class IR_Decoder;
class IEmptyPack : virtual protected IBaseEmptyPack {
friend IR_Decoder;
bool isAvailable;
protected:
virtual void set(IR_FOX::PackInfo *packInfo) {
IBaseEmptyPack::IPackInfo::packInfo = packInfo;
Serial.print(" SET ");
Serial.print("\n*******ErrAll: "); Serial.println(packInfo->err.all());
Serial.print("**ErrDistance: "); Serial.println((int)(packInfo->err.highSignal - packInfo->err.lowSignal));
isAvailable = true;
}
public:
IEmptyPack(IR_FOX::PackInfo* _packInfo) { packInfo = _packInfo; }
virtual bool available() { if (isAvailable) { isAvailable = false; return true; } else { return false; } };
virtual bool available() {
if (isAvailable) {
isAvailable = false;
return true;
} else {
return false;
}
};
virtual uint8_t getMsgInfo() { return packInfo->buffer[0] & IR_MASK_MSG_INFO; };
virtual uint8_t getMsgType() { return (packInfo->buffer[0] >> 5) & IR_MASK_MSG_TYPE; };
virtual uint8_t getMsgRAW() { return packInfo->buffer[0]; };
@ -33,27 +53,34 @@ public:
};
class IHasAddresFrom : virtual protected IBaseEmptyPack {
virtual uint16_t getAddrFrom() { return packInfo->buffer[addressFromOffset] | packInfo->buffer[addressFromOffset + 1]; };
public:
virtual uint16_t getAddrFrom() { return (packInfo->buffer[addressFromOffset]<<8) | packInfo->buffer[addressFromOffset + 1]; };
};
class IHasAddresTo : virtual protected IBaseEmptyPack {
virtual uint16_t getAddrTo() { return packInfo->buffer[addressToOffset] | packInfo->buffer[addressToOffset + 1]; };
public:
virtual uint16_t getAddrTo() { return (packInfo->buffer[addressToOffset]<<8) | packInfo->buffer[addressToOffset + 1]; };
};
class IHasAddresData : virtual protected IBaseEmptyPack {
virtual uint8_t getDataSize() { return /* packInfo->buffer[packInfo->packSize-2] */0; };//TODO:
public:
virtual uint8_t getDataSize() { return &(packInfo->buffer[packInfo->packSize - 2]) - &(packInfo->buffer[DataOffset]); }; // TODO:
virtual uint8_t* getDataPrt() { return packInfo->buffer + DataOffset; };
virtual uint8_t getDataRawSize() { return packInfo->packSize; };
virtual uint8_t* getDataRawPtr() { return packInfo->buffer; };
};
class Data :
virtual public IEmptyPack,
virtual public IHasAddresFrom {
virtual public IHasAddresFrom,
virtual public IHasAddresTo,
virtual public IHasAddresData {
public:
Data(IR_FOX::PackInfo* packInfo) : IEmptyPack(packInfo) {
Data() {
msgOffset = 0;
addressFromOffset = 1;
addressToOffset = 3;
DataOffset = 5;
}
};