mirror of
https://github.com/Show-maket/IR-protocol.git
synced 2025-06-27 20:59:37 +00:00
refactor working
This commit is contained in:
@ -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;
|
||||
}
|
||||
};
|
Reference in New Issue
Block a user