[namespace][object_key][payload length][payload] #### sub format { return [ [Version1 => [1, 'C', '%u', undef, 'checkString']], [Version1String => [0, 'a*', '%s', undef, 'chompString']], [Version2 => [1, 'C', '%u', undef, 'checkString']], [Version2String => [0, 'a*', '%s', undef, 'chompString']], ]; } #### ['Speed' => [2, 'v', '%u', [ 0,1,100,0]]],#speed x 100 , 16 bit vax unsigned, 0 to 65535 (655.35) m/s ['Voltage' => [1, 'C', '%u', [200,1,100,0]]],#Voltage x100, + 2V, 8 bit char unsigned, 0 (2V) to 255 (4.55V) ['Method' => undef ],#0 length item for using the format for other things like building human displays #### sub format { return [ [ID => [10, 'C[10]', '%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X']], [MajorVersion => [1, 'C', '%u']], [MinorVersion => [1, 'C', '%u']], [SubVersion => [1, 'C', '%u']], ]; }