Finally proper handling of an interrupted send

In the previous post, I mentioned a wierd message coming in part way through sending a second command in quick succession. Well, that's fixed properly now, it took a pretty substantial change as there was no way for the protocol to send a command up the queue at an arbitrary time. Now that can happen. So now, all I need to do is decode the command packets that are coming in from the PLM.

OPened socket 7
plcd[8648]: Network thread received: off for 00000001
Unhooking 7
plcd[8648]: Expanding Macro: outside lights
plcd[8648]: Transmission sending command: off to 00000001
plcd[8648]: Transmission sending command: off to 00146c07
plcd[8648]: SerialTransport::WriteByte '' 02
plcd[8648]: SerialTransport::WriteByte 'b' 62
plcd[8648]: SerialTransport::WriteByte '' 14
plcd[8648]: SerialTransport::WriteByte 'l' 6c
plcd[8648]: SerialTransport::WriteByte '' 07
plcd[8648]: SerialTransport::WriteByte '' 00
plcd[8648]: SerialTransport::WriteByte '' 13
plcd[8648]: SerialTransport::WriteByte '' 00
plcd[8648]: PLMProtocol sent: 0262146c07001300
plcd[8648]: SerialTransport::ReadByte '' 02
plcd[8648]: SerialTransport::ReadByte 'b' 62
plcd[8648]: SerialTransport::ReadByte '' 14
plcd[8648]: SerialTransport::ReadByte 'l' 6c
plcd[8648]: SerialTransport::ReadByte '' 07
plcd[8648]: SerialTransport::ReadByte '' 00
plcd[8648]: SerialTransport::ReadByte '' 00
plcd[8648]: SerialTransport::ReadByte '' 06
plcd[8648]: PLMProtocol received ack: 0262146c07000006
plcd[8648]: Transmission sending command: off to 001b8b19
plcd[8648]: SerialTransport::WriteByte '' 02
plcd[8648]: SerialTransport::WriteByte 'b' 62
plcd[8648]: SerialTransport::WriteByte 'b
plcd[8648]: SerialTransport::WriteByte '' 8b
plcd[8648]: SerialTransport::WriteByte '' 19
plcd[8648]: SerialTransport::WriteByte '' 00
plcd[8648]: SerialTransport::WriteByte '' 13
plcd[8648]: SerialTransport::WriteByte '' 00
plcd[8648]: PLMProtocol sent: 02621b8b19001300
plcd[8648]: SerialTransport::ReadByte '' 15
plcd[8648]: SerialTransport::ReadByte '' 15
plcd[8648]: SerialTransport::ReadByte '' 15
plcd[8648]: SerialTransport::ReadByte '' 15
plcd[8648]: SerialTransport::ReadByte '' 15
plcd[8648]: SerialTransport::ReadByte '' 15
plcd[8648]: SerialTransport::ReadByte '' 02
plcd[8648]: SerialTransport::ReadByte 'P' 50
plcd[8648]: SerialTransport::ReadByte '' 14
plcd[8648]: SerialTransport::ReadByte 'l' 6c
plcd[8648]: SerialTransport::ReadByte '' 07
plcd[8648]: SerialTransport::ReadByte '' 1c
plcd[8648]: SerialTransport::ReadByte 'ô' f4
plcd[8648]: SerialTransport::ReadByte '`' 60
plcd[8648]: SerialTransport::ReadByte '!' 21
plcd[8648]: SerialTransport::ReadByte '' 00
plcd[8648]: PLMProtocol received: 0250146c071cf460210000
plcd[8648]: SerialTransport::WriteByte '' 02
plcd[8648]: SerialTransport::WriteByte 'b' 62
plcd[8648]: SerialTransport::WriteByte 'b
plcd[8648]: SerialTransport::WriteByte '' 8b
plcd[8648]: SerialTransport::WriteByte '' 19
plcd[8648]: SerialTransport::WriteByte '' 00
plcd[8648]: SerialTransport::WriteByte '' 13
plcd[8648]: SerialTransport::WriteByte '' 00
plcd[8648]: PLMProtocol sent: 02621b8b19001300
plcd[8648]: SerialTransport::ReadByte '' 02
plcd[8648]: SerialTransport::ReadByte 'b' 62
plcd[8648]: SerialTransport::ReadByte 'b
plcd[8648]: SerialTransport::ReadByte '' 8b
plcd[8648]: SerialTransport::ReadByte '' 19
plcd[8648]: SerialTransport::ReadByte '' 00
plcd[8648]: SerialTransport::ReadByte '' 00
plcd[8648]: SerialTransport::ReadByte '' 06
plcd[8648]: PLMProtocol received ack: 02621b8b19000006
plcd[8648]: SerialTransport::ReadByte '' 02
plcd[8648]: SerialTransport::ReadByte 'P' 50
plcd[8648]: SerialTransport::ReadByte 'b
plcd[8648]: SerialTransport::ReadByte '' 8b
plcd[8648]: SerialTransport::ReadByte '' 19
plcd[8648]: SerialTransport::ReadByte '' 1c
plcd[8648]: SerialTransport::ReadByte 'ô' f4
plcd[8648]: SerialTransport::ReadByte '`' 60
plcd[8648]: SerialTransport::ReadByte '!' 21
plcd[8648]: SerialTransport::ReadByte '' 00
plcd[8648]: PLMProtocol received: 02501b8b191cf460210000

Subject: