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++
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;
|
|
}
|