You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

76 lines
1.5 KiB
C++

#include "CommandEncoder.h"
byte CommandEncoder::CheckSUM(byte main, byte data1, byte data2, byte data3)
{
uint16_t sum = ((uint16_t)main + (uint16_t)data1 + (uint16_t)data2 + (uint16_t)data3);
return ((byte)(sum % 256));
}
CommandEncoder::CommandEncoder()
{
cmd[0] = CommandData::FrameHead;
cmd[7] = CommandData::FrameEnd;
}
CommandEncoder::CommandEncoder(byte ir1, byte ir2, byte ir3, byte ir4, byte ir5, byte ir6)
{
ir_cmd[0] = ir1;
ir_cmd[1] = ir2;
ir_cmd[2] = ir3;
ir_cmd[3] = ir4;
ir_cmd[4] = ir5;
ir_cmd[5] = ir6;
}
CommandEncoder::CommandEncoder(byte device, byte main, byte data1, byte data2, byte data3)
{
cmd[0] = CommandData::FrameHead;
cmd[1] = device;
cmd[2] = main;
cmd[3] = data1;
cmd[4] = data2;
cmd[5] = data3;
cmd[6] = CheckSUM(main, data1, data2, data3);
cmd[7] = CommandData::FrameEnd;
}
void CommandEncoder::SetDevice(byte device)
{
cmd[1] = device;
}
void CommandEncoder::OverrideFrameHead(byte h1, byte h2)
{
cmd[0] = h1;
cmd[1] = h2;
}
void CommandEncoder::SetCommand(byte ir1, byte ir2, byte ir3, byte ir4, byte ir5, byte ir6)
{
ir_cmd[0] = ir1;
ir_cmd[1] = ir2;
ir_cmd[2] = ir3;
ir_cmd[3] = ir4;
ir_cmd[4] = ir5;
ir_cmd[5] = ir6;
}
void CommandEncoder::SetCommand(byte main, byte data1, byte data2, byte data3)
{
cmd[2] = main;
cmd[3] = data1;
cmd[4] = data2;
cmd[5] = data3;
cmd[6] = CheckSUM(main, data1, data2, data3);
}
byte* CommandEncoder::GetCommandArray()
{
return cmd;
}
byte* CommandEncoder::GetIRCommandArray()
{
return ir_cmd;
}