mirror of
https://github.com/Show-maket/IR-protocol.git
synced 2025-05-04 07:10:16 +00:00
59 lines
2.1 KiB
C++
59 lines
2.1 KiB
C++
#pragma once
|
|
#include "IR_config.h"
|
|
|
|
class IOffsets {
|
|
public:
|
|
uint8_t msgOffset;
|
|
uint8_t addressFromOffset;
|
|
uint8_t addressToOffset;
|
|
uint8_t DataOffset;
|
|
};
|
|
|
|
class IPackInfo {
|
|
public:
|
|
IR_FOX::PackInfo* packInfo;
|
|
};
|
|
|
|
class IBaseEmptyPack : virtual public IOffsets, virtual public IPackInfo {};
|
|
|
|
class IEmptyPack : virtual protected IBaseEmptyPack {
|
|
bool isAvailable;
|
|
|
|
public:
|
|
IEmptyPack(IR_FOX::PackInfo* _packInfo) { packInfo = _packInfo; }
|
|
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]; };
|
|
virtual uint16_t getErrorCount() { return packInfo->err.all(); };
|
|
virtual uint8_t getErrorLowSignal() { return packInfo->err.lowSignal; };
|
|
virtual uint8_t getErrorHighSignal() { return packInfo->err.highSignal; };
|
|
virtual uint8_t getErrorOther() { return packInfo->err.other; };
|
|
virtual uint16_t getTunerTime() { return packInfo->rTime; };
|
|
};
|
|
|
|
class IHasAddresFrom : virtual protected IBaseEmptyPack {
|
|
virtual uint16_t getAddrFrom() { return packInfo->buffer[addressFromOffset] | packInfo->buffer[addressFromOffset + 1]; };
|
|
};
|
|
|
|
class IHasAddresTo : virtual protected IBaseEmptyPack {
|
|
virtual uint16_t getAddrTo() { return packInfo->buffer[addressToOffset] | packInfo->buffer[addressToOffset + 1]; };
|
|
};
|
|
|
|
class IHasAddresData : virtual protected IBaseEmptyPack {
|
|
virtual uint8_t getDataSize() { return /* packInfo->buffer[packInfo->packSize-2] */0; };//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 {
|
|
public:
|
|
Data(IR_FOX::PackInfo* packInfo) : IEmptyPack(packInfo) {
|
|
msgOffset = 0;
|
|
}
|
|
}; |