#include <iostream>
int main()
{
struct SerialPacket
{
int payloadSize;
char state;
char configuation; // A -> Append, S -> SetRelays, C-> Clear all;
int relayIDS[35];
}m_packet;
char bufferData[] = "5,h,l,1,2,3,4,5";
char * p = bufferData;
m_packet.payloadSize = strtoul( p, &p, 10 );
p++;
m_packet.state = *p;
p += 2;
m_packet.configuation = *p;
p += 2;
uint8_t id = 0;
while ( *p && id < m_packet.payloadSize )
{
m_packet.relayIDS[ id++ ] = strtoul( p, &p, 10 );
if ( *p )
{
p++;
}
}
printf( "m_packet.payloadSize = %d\n", m_packet.payloadSize );
printf( "m_packet.state = %c\n", m_packet.state );
printf( "m_packet.configuation = %c\n", m_packet.configuation );
for ( uint8_t i = 0; i < m_packet.payloadSize; i++ )
{
printf( "m_packet.relayIDS[%hhu] = %d\n", i, m_packet.relayIDS[i] );
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKaW50IG1haW4oKQp7CglzdHJ1Y3QgU2VyaWFsUGFja2V0Cgl7CgkgIGludCBwYXlsb2FkU2l6ZTsKCSAgY2hhciBzdGF0ZTsKCSAgY2hhciBjb25maWd1YXRpb247IC8vIEEgLT4gQXBwZW5kLCBTIC0+IFNldFJlbGF5cywgQy0+IENsZWFyIGFsbDsKCSAgaW50IHJlbGF5SURTWzM1XTsKCSAgCgl9bV9wYWNrZXQ7CgkKCWNoYXIgYnVmZmVyRGF0YVtdID0gIjUsaCxsLDEsMiwzLDQsNSI7CgkKCQoJY2hhciAqIHAgPSBidWZmZXJEYXRhOwogCQoJbV9wYWNrZXQucGF5bG9hZFNpemUgPSBzdHJ0b3VsKCBwLCAmcCwgMTAgKTsKCXArKzsKCQoJbV9wYWNrZXQuc3RhdGUgPSAqcDsKCXAgKz0gMjsKCQoJbV9wYWNrZXQuY29uZmlndWF0aW9uID0gKnA7CglwICs9IDI7CgoJdWludDhfdCBpZCA9IDA7Cgl3aGlsZSAoICpwICYmIGlkIDwgbV9wYWNrZXQucGF5bG9hZFNpemUgKQoJewoJCW1fcGFja2V0LnJlbGF5SURTWyBpZCsrIF0gPSBzdHJ0b3VsKCBwLCAmcCwgMTAgKTsKCgkJaWYgKCAqcCApCgkJewoJCQlwKys7CgkJfQoJfQoJCgkKCXByaW50ZiggIm1fcGFja2V0LnBheWxvYWRTaXplID0gJWRcbiIsIG1fcGFja2V0LnBheWxvYWRTaXplICk7CglwcmludGYoICJtX3BhY2tldC5zdGF0ZSA9ICVjXG4iLCBtX3BhY2tldC5zdGF0ZSApOwoJcHJpbnRmKCAibV9wYWNrZXQuY29uZmlndWF0aW9uID0gJWNcbiIsIG1fcGFja2V0LmNvbmZpZ3VhdGlvbiApOwoJCglmb3IgKCB1aW50OF90IGkgPSAwOyBpIDwgbV9wYWNrZXQucGF5bG9hZFNpemU7IGkrKyApCgl7CgkJcHJpbnRmKCAibV9wYWNrZXQucmVsYXlJRFNbJWhodV0gPSAlZFxuIiwgaSwgbV9wYWNrZXQucmVsYXlJRFNbaV0gKTsKCX0KCQoJCglyZXR1cm4gMDsKfQ==