I haven't gotten to structure in my self taught adventures in C.
Your checksum loop creates a 8 bit checksum, Xor's every byte? Meaning msg, msg, msg, msg would be the 4 bytes of msg.data?
Was there a reason for the loop for Serial.write, would Serial.write(msg, sizeof(msg)) not work?
Thanks for your help.