void push_back(uint8_t data)
{
- if (!opcode_set)
+ if (initiator == CECDEVICE_UNKNOWN && destination == CECDEVICE_UNKNOWN)
+ {
+ initiator = (cec_logical_address) (data >> 4);
+ destination = (cec_logical_address) (data & 0xF);
+ }
+ else if (!opcode_set)
{
opcode_set = 1;
opcode = (cec_opcode) data;
if (msg.size() >= 2)
{
logStr.AppendFormat(" initiator:%u destination:%u ack:%s %s", msg.initiator(), msg.destination(), msg.ack() ? "high" : "low", msg.eom() ? "eom" : "");
- m_currentframe.initiator = msg.initiator();
+ m_currentframe.initiator = msg.initiator();
m_currentframe.destination = msg.destination();
m_currentframe.ack = msg.ack();
m_currentframe.eom = msg.eom();
bytes.clear();
while (GetWord(input, strvalue) && HexStrToInt(strvalue, ivalue))
- bytes.push_back(ivalue);
+ bytes.push_back(ivalue);
parser->Transmit(bytes);
}