mirror of
https://github.com/Show-maket/IR-protocol.git
synced 2025-06-28 05:09:40 +00:00
refactor
This commit is contained in:
107
PacketTypes.cpp
Normal file
107
PacketTypes.cpp
Normal file
@ -0,0 +1,107 @@
|
||||
#include "PacketTypes.h"
|
||||
|
||||
namespace PacketTypes
|
||||
{
|
||||
bool BasePack::checkAddress() { return true; };
|
||||
void BasePack::set(IR_FOX::PackInfo *packInfo, uint16_t id)
|
||||
{
|
||||
this->packInfo = packInfo;
|
||||
this->id = id;
|
||||
|
||||
if (checkAddress())
|
||||
{
|
||||
isAvailable = true;
|
||||
isRawAvailable = true;
|
||||
#ifdef IRDEBUG_INFO
|
||||
Serial.print(" OK ");
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
isRawAvailable = true;
|
||||
#ifdef IRDEBUG_INFO
|
||||
Serial.print(" NOT-OK ");
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
uint16_t BasePack::_getAddrFrom(BasePack *obj)
|
||||
{
|
||||
return (obj->packInfo->buffer[obj->addressFromOffset] << 8) | obj->packInfo->buffer[obj->addressFromOffset + 1];
|
||||
};
|
||||
uint16_t BasePack::_getAddrTo(BasePack *obj)
|
||||
{
|
||||
return (obj->packInfo->buffer[obj->addressToOffset] << 8) | obj->packInfo->buffer[obj->addressToOffset + 1];
|
||||
};
|
||||
|
||||
uint8_t BasePack::_getDataSize(BasePack *obj)
|
||||
{
|
||||
return obj->packInfo->packSize - crcBytes - obj->DataOffset;
|
||||
};
|
||||
uint8_t *BasePack::_getDataPrt(BasePack *obj)
|
||||
{
|
||||
return obj->packInfo->buffer + obj->DataOffset;
|
||||
};
|
||||
uint8_t BasePack::_getDataRawSize(BasePack *obj)
|
||||
{
|
||||
return obj->packInfo->packSize;
|
||||
};
|
||||
|
||||
bool BasePack::available()
|
||||
{
|
||||
if (isAvailable)
|
||||
{
|
||||
isAvailable = false;
|
||||
isRawAvailable = false;
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
};
|
||||
bool BasePack::availableRaw()
|
||||
{
|
||||
if (isRawAvailable)
|
||||
{
|
||||
isRawAvailable = false;
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
bool Data::checkAddress()
|
||||
{
|
||||
bool ret;
|
||||
IR_FOX::checkAddressRuleApply(getAddrTo(), this->id, ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
bool DataBack::checkAddress()
|
||||
{
|
||||
bool ret;
|
||||
if (getMsgType() == IR_MSG_BACK_TO)
|
||||
{
|
||||
DataOffset = 5;
|
||||
IR_FOX::checkAddressRuleApply((packInfo->buffer[addressToOffset] << 8) | packInfo->buffer[addressToOffset + 1], this->id, ret);
|
||||
}
|
||||
else
|
||||
{
|
||||
DataOffset = 3;
|
||||
ret = true;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
bool Accept::checkAddress() { return true; }
|
||||
|
||||
bool Request::checkAddress()
|
||||
{
|
||||
bool ret;
|
||||
IR_FOX::checkAddressRuleApply(getAddrTo(), this->id, ret);
|
||||
return ret;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user