--- a/project/sparkplug™_mqtt_edge_and_host-stack_b9741afd/function_blocks_8ad6e219/fb_payload_ad205903/fb_payload_ddc74abf/ddc74abfe7a4407aa4f50c8338e771b9.object +++ b/project/sparkplug™_mqtt_edge_and_host-stack_b9741afd/function_blocks_8ad6e219/fb_payload_ad205903/fb_payload_ddc74abf/ddc74abfe7a4407aa4f50c8338e771b9.object @@ -1 +1 @@ -{"payload":{"meta":{"Graph":{"@Type":"81297157","@Value":{"Guid":"(Guid)ddc74abf-e7a4-407a-a4f5-0c8338e771b9","ParentGuid":"(Guid)00000000-0000-0000-0000-000000000000","Name":"(string)FB_Payload","Properties":{"@Type":"2c41fa04:IDictionary","@Value":[{"@Key":"(Guid)829a18f2-c514-4f6e-9634-1df173429203","@Value":{"@Type":"829a18f2","@Value":{"ParentObjects":{"@Type":"fa2ee218:IDictionary","@Value":[{"@Key":"(Guid)21af5390-2942-461a-bf89-951aaf6999f1","@Value":"(Guid)ad205903-8508-4926-9d55-99ed8855a066"}]}}}}]},"TypeGuid":"(Guid)6f9dac99-8de1-4efc-8465-68ac443b7d08","EmbeddedTypeGuids":{"@Type":"[Guid]","@Value":["(Guid)a9ed5b7e-75c5-4651-af16-d2c27e98cb94","(Guid)3b83b776-fb25-43b8-99f2-3c507c9143fc"]}}},"TypeInfos":{"2c41fa04":"{2c41fa04-1834-41c1-816e-303c7aa2c05b}","81297157":"{81297157-7ec9-45ce-845e-84cab2b88ade}","829a18f2":"{829a18f2-c514-4f6e-9634-1df173429203}","fa2ee218":"{fa2ee218-a39b-4b6d-b249-49dbddbd168a}","Guid":"System.Guid","string":"System.String"}},"object":{"Graph":{"@Type":"6f9dac99","@Value":{"SpecialFunc":{"@Type":"0db3d7bb:Enum","@Value":"None"},"Implementation":{"@Type":"3b83b776","@Value":{"TextDocument":{"@Type":"f3878285","@Value":{"TextLines":{"@Type":"[a5de0b0b]","@Value":[{"@Type":"a5de0b0b","@Value":{"Id":"(long)3645","Tag":null,"Text":"(string)//This IF statement"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3646","Tag":null,"Text":"(string)IF xDecode AND xEncode THEN //ERROR"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3647","Tag":null,"Text":"(string) xDecodeDone := FALSE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3648","Tag":null,"Text":"(string) xDecodeBusy := FALSE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3649","Tag":null,"Text":"(string) xDecodeError := TRUE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3650","Tag":null,"Text":"(string) eDecodeError := ERROR.PayloadYouCantDoBothAtOnce;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3651","Tag":null,"Text":"(string) xEncodeDone := FALSE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3652","Tag":null,"Text":"(string) xEncodeBusy := FALSE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3653","Tag":null,"Text":"(string) xEncodeError := TRUE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3654","Tag":null,"Text":"(string) eEncodeError := ERROR.PayloadYouCantDoBothAtOnce;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3655","Tag":null,"Text":"(string)ELSIF NOT xDecode AND NOT xEncode THEN //DO NOTHING, ALL OUTPUTS OFF"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3656","Tag":null,"Text":"(string) xDecodeDone := FALSE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3657","Tag":null,"Text":"(string) xDecodeBusy := FALSE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3658","Tag":null,"Text":"(string) xDecodeError := FALSE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3659","Tag":null,"Text":"(string) eDecodeError := ERROR.NO_ERROR;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3660","Tag":null,"Text":"(string) xEncodeDone := FALSE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3661","Tag":null,"Text":"(string) xEncodeBusy := FALSE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3662","Tag":null,"Text":"(string) xEncodeError := FALSE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3663","Tag":null,"Text":"(string) eEncodeError := ERROR.NO_ERROR;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3664","Tag":null,"Text":"(string)ELSIF xDecode AND NOT xEncode THEN //Decode"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3665","Tag":null,"Text":"(string) xDecodeDone := FALSE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3666","Tag":null,"Text":"(string) xDecodeBusy := TRUE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3667","Tag":null,"Text":"(string) xDecodeError := FALSE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3668","Tag":null,"Text":"(string) eDecodeError := ERROR.NO_ERROR;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3669","Tag":null,"Text":"(string) xEncodeDone := FALSE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3670","Tag":null,"Text":"(string) xEncodeBusy := FALSE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3671","Tag":null,"Text":"(string) xEncodeError := FALSE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3672","Tag":null,"Text":"(string) eEncodeError := ERROR.NO_ERROR;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3673","Tag":null,"Text":"(string)ELSIF NOT xDecode AND xEncode THEN //Encode"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3674","Tag":null,"Text":"(string) xDecodeDone := FALSE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3675","Tag":null,"Text":"(string) xDecodeBusy := FALSE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3676","Tag":null,"Text":"(string) xDecodeError := FALSE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3677","Tag":null,"Text":"(string) eDecodeError := ERROR.NO_ERROR;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3678","Tag":null,"Text":"(string) xEncodeDone := FALSE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3679","Tag":null,"Text":"(string) xEncodeBusy := TRUE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3680","Tag":null,"Text":"(string) xEncodeError := FALSE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3681","Tag":null,"Text":"(string) eEncodeError := ERROR.NO_ERROR;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3682","Tag":null,"Text":"(string)END_IF"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3683","Tag":null,"Text":"(string)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3684","Tag":null,"Text":"(string)IF xDecodeBusy THEN"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3685","Tag":null,"Text":"(string) InitializeStructuredPayload();"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3686","Tag":null,"Text":"(string)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3687","Tag":null,"Text":"(string) //OK, now we are Listening to the user as to how many bytes in the payload"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3688","Tag":null,"Text":"(string) _diPayloadSize := protobufBlobSize;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3689","Tag":null,"Text":"(string) SetArrayBounds();"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3690","Tag":null,"Text":"(string) eDecodeState := PayloadDecodeStates.payload_getmember;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3691","Tag":null,"Text":"(string)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3692","Tag":null,"Text":"(string) FOR i := _protobufBlobLower TO _protobufBlobLower + _diPayloadSize - 1 DO"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3693","Tag":null,"Text":"(string) // loop through every byte and decode it"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3694","Tag":null,"Text":"(string) //start off looking for the messageID:"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3695","Tag":null,"Text":"(string) CASE eDecodeState OF"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3696","Tag":null,"Text":"(string) PayloadDecodeStates.payload_getmember:"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3697","Tag":null,"Text":"(string) CASE myProtobufBlob[i] OF"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3698","Tag":null,"Text":"(string) 16#00: //end of data? padding byte? ERROR"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3699","Tag":null,"Text":"(string) xDecodeError := TRUE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3700","Tag":null,"Text":"(string) eDecodeError := ERROR.PayloadFound00;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3701","Tag":null,"Text":"(string) i := _protobufBlobLower + _diPayloadSize - 1; //break out of FOR"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3702","Tag":null,"Text":"(string) ProtobufedId.Payload_timestamp: //payload timestamp 01<<3 | 00"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3703","Tag":null,"Text":"(string) eDecodeState := PayloadDecodeStates.payload_gettimestamp;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3704","Tag":null,"Text":"(string) ProtobufedId.Payload_metrics: //start of metrics 02<<3 | 02"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3705","Tag":null,"Text":"(string) eDecodeState := PayloadDecodeStates.payload_getmetric;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3706","Tag":null,"Text":"(string) ProtobufedId.Payload_seq: //payload sequence number 03<<3 | 00"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3707","Tag":null,"Text":"(string) eDecodeState := PayloadDecodeStates.payload_getseq;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3708","Tag":null,"Text":"(string) ProtobufedId.Payload_uuid: //payload uuid 04<<3 | 02"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3709","Tag":null,"Text":"(string) eDecodeState := PayloadDecodeStates.payload_getUuid;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3710","Tag":null,"Text":"(string) ProtobufedId.Payload_body: //payload with just raw bytes to send 05<<3 | 02"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3711","Tag":null,"Text":"(string) eDecodeState := PayloadDecodeStates.payload_getBody;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3712","Tag":null,"Text":"(string) ELSE //extension... error"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3713","Tag":null,"Text":"(string) xDecodeError := TRUE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3714","Tag":null,"Text":"(string) eDecodeError := ERROR.PayloadFoundExtensions;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3715","Tag":null,"Text":"(string) i := _protobufBlobLower + _diPayloadSize - 1; //break out of FOR"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3716","Tag":null,"Text":"(string) END_CASE"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3717","Tag":null,"Text":"(string) PayloadDecodeStates.payload_gettimestamp:"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3718","Tag":null,"Text":"(string) _xHasTimeStamp := TRUE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3719","Tag":null,"Text":"(string) dviTemp := DecodeNextVarInt(); //updates i to end of the varint"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3720","Tag":null,"Text":"(string) _uliTimestamp := dviTemp.uliDateTime;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3721","Tag":null,"Text":"(string) eDecodeState := PayloadDecodeStates.payload_getmember;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3722","Tag":null,"Text":"(string) PayloadDecodeStates.payload_getmetric:"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3723","Tag":null,"Text":"(string) //So i imagine, a metric should be able to decode itself, in one go"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3724","Tag":null,"Text":"(string) recentlyClaimedMetric REF= AddMetricBlank(eError => eDecodeError);"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3725","Tag":null,"Text":"(string)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3726","Tag":null,"Text":"(string) IF eDecodeError = ERROR.NO_ERROR THEN"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3727","Tag":null,"Text":"(string) //i starts off now pointing to the first byte of the Metric"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3728","Tag":null,"Text":"(string) THIS^.recentlyClaimedMetric(xDecode := TRUE,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3729","Tag":null,"Text":"(string) xEncode := FALSE,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3730","Tag":null,"Text":"(string) protobufBlobMaxIndex := _protobufBlobLower + _diPayloadSize - 1,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3731","Tag":null,"Text":"(string) OwnerPayload := THIS^,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3732","Tag":null,"Text":"(string) ProtobufBlobIndex := i,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3733","Tag":null,"Text":"(string) myProtobufBlob := myProtobufBlob,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3734","Tag":null,"Text":"(string) xDecodeDone =>,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3735","Tag":null,"Text":"(string) xDecodeBusy =>,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3736","Tag":null,"Text":"(string) xDecodeError =>,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3737","Tag":null,"Text":"(string) eDecodeError =>);"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3738","Tag":null,"Text":"(string)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3739","Tag":null,"Text":"(string) IF recentlyClaimedMetric.xDecodeDone THEN"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3740","Tag":null,"Text":"(string) //SUCCESS! the latest Metric has now been decoded"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3741","Tag":null,"Text":"(string) //i is now pointing to the very last byte of the Metric"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3742","Tag":null,"Text":"(string) eDecodeState := PayloadDecodeStates.payload_getmember;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3743","Tag":null,"Text":"(string) ELSE"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3744","Tag":null,"Text":"(string) //FAIL! OR actually, maybe just busy? so far it will all be taken as an error"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3745","Tag":null,"Text":"(string) xDecodeError := TRUE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3746","Tag":null,"Text":"(string)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3747","Tag":null,"Text":"(string) IF recentlyClaimedMetric.xDecodeError THEN"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3748","Tag":null,"Text":"(string) eDecodeError := recentlyClaimedMetric.eDecodeError;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3749","Tag":null,"Text":"(string) ELSE"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3750","Tag":null,"Text":"(string) eDecodeError := ERROR.PayloadMetricBusyButMultiCycleNotYetImplemented;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3751","Tag":null,"Text":"(string) END_IF"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3752","Tag":null,"Text":"(string)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3753","Tag":null,"Text":"(string) i := _protobufBlobLower + _diPayloadSize - 1; //break out of FOR"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3754","Tag":null,"Text":"(string) END_IF"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3755","Tag":null,"Text":"(string) ELSE"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3756","Tag":null,"Text":"(string) xDecodeError := TRUE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3757","Tag":null,"Text":"(string) //eDecodeError := ERROR.Can't Claim Metric;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3758","Tag":null,"Text":"(string) i := _protobufBlobLower + _diPayloadSize - 1; //break out of FOR"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3759","Tag":null,"Text":"(string) END_IF;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3760","Tag":null,"Text":"(string) PayloadDecodeStates.payload_getseq:"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3761","Tag":null,"Text":"(string) _xHasSeq := TRUE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3762","Tag":null,"Text":"(string) dviTemp := DecodeNextVarInt(); //updates i to end of the varint"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3763","Tag":null,"Text":"(string) _uliSeq := dviTemp.UInt64;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3764","Tag":null,"Text":"(string) eDecodeState := PayloadDecodeStates.payload_getmember;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3765","Tag":null,"Text":"(string) PayloadDecodeStates.payload_getUuid:"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3766","Tag":null,"Text":"(string) _xHasUuid := TRUE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3767","Tag":null,"Text":"(string) _sUuid := DecodeNextString(); //updates i to end of string"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3768","Tag":null,"Text":"(string) eDecodeState := PayloadDecodeStates.payload_getmember;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3769","Tag":null,"Text":"(string) PayloadDecodeStates.payload_getBody:"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3770","Tag":null,"Text":"(string) _xHasBody := TRUE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3771","Tag":null,"Text":"(string) DecodeNextBinaryData(numBytes => _diHasBody_bytes,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3772","Tag":null,"Text":"(string) BodyStartIndex => _diStartOfBody); //updates i to end of Body"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3773","Tag":null,"Text":"(string)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3774","Tag":null,"Text":"(string) eDecodeState := PayloadDecodeStates.payload_getmember;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3775","Tag":null,"Text":"(string) ELSE"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3776","Tag":null,"Text":"(string) // Here not..."}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3777","Tag":null,"Text":"(string) xDecodeError := TRUE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3778","Tag":null,"Text":"(string) eDecodeError := ERROR.OhMy_ThatShouldNotHaveHappened; //This isn't even a possible value of the PayloadDecodeStates;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3779","Tag":null,"Text":"(string)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3780","Tag":null,"Text":"(string) i := _protobufBlobLower + _diPayloadSize - 1; //break out of FOR NO IDEA WHAT TO DO HERE"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3781","Tag":null,"Text":"(string) END_CASE"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3782","Tag":null,"Text":"(string) END_FOR"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3783","Tag":null,"Text":"(string)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3784","Tag":null,"Text":"(string) eDecodeState := PayloadDecodeStates.idle;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3785","Tag":null,"Text":"(string) xDecodeDone := NOT xDecodeError;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3786","Tag":null,"Text":"(string) xDecodeBusy := FALSE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3787","Tag":null,"Text":"(string)END_IF;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3788","Tag":null,"Text":"(string)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3789","Tag":null,"Text":"(string)IF xEncodeBusy THEN"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3790","Tag":null,"Text":"(string) //NOTE: BLOB Data will not be initialized to 00."}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3791","Tag":null,"Text":"(string) //But we will start with a 0 byte payload."}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3792","Tag":null,"Text":"(string) InitializeBlob();"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3793","Tag":null,"Text":"(string) SetArrayBounds();"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3794","Tag":null,"Text":"(string) i := _protobufBlobLower;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3795","Tag":null,"Text":"(string) //Encode Timestamp (Field Number 1)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3796","Tag":null,"Text":"(string) IF eEncodeError = ERROR.NO_ERROR AND _xHasTimestamp THEN"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3797","Tag":null,"Text":"(string) //{info 'todo: i-campbell Make these field numbers a GVL'}"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3798","Tag":null,"Text":"(string) dviTemp.uliDateTime := _uliTimestamp;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3799","Tag":null,"Text":"(string) eEncodeError := EncodeNextVarInt(ValueToEncode := dviTemp,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3800","Tag":null,"Text":"(string) ProtobufFieldNumber := 1);"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3801","Tag":null,"Text":"(string)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3802","Tag":null,"Text":"(string) xEncodeError := eEncodeError <> ERROR.NO_ERROR;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3803","Tag":null,"Text":"(string) END_IF;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3804","Tag":null,"Text":"(string)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3805","Tag":null,"Text":"(string) //Encode All Metrics"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3806","Tag":null,"Text":"(string) _Metrics.ItterateRestart(HasNext => _COL_HasNext);"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3807","Tag":null,"Text":"(string)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3808","Tag":null,"Text":"(string) WHILE _COL_HasNext AND (eEncodeError = ERROR.NO_ERROR) DO"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3809","Tag":null,"Text":"(string) _Metrics.ItterateNext(itfElement => _COL_Element,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3810","Tag":null,"Text":"(string) HasNext => _COL_HasNext);"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3811","Tag":null,"Text":"(string)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3812","Tag":null,"Text":"(string) IF __QUERYPOINTER(_COL_Element,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3813","Tag":null,"Text":"(string) nextMetricToEncode) THEN"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3814","Tag":null,"Text":"(string) nextMetricToEncode^(xDecode := FALSE,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3815","Tag":null,"Text":"(string) xEncode := TRUE,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3816","Tag":null,"Text":"(string) ProtobufBlobIndex := i,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3817","Tag":null,"Text":"(string) protobufBlobMaxIndex := _protobufBlobUpper,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3818","Tag":null,"Text":"(string) OwnerPayload := THIS^,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3819","Tag":null,"Text":"(string) myProtobufBlob := myProtobufBlob,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3820","Tag":null,"Text":"(string) xDecodeDone =>,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3821","Tag":null,"Text":"(string) xDecodeBusy =>,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3822","Tag":null,"Text":"(string) xDecodeError =>,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3823","Tag":null,"Text":"(string) eDecodeError =>,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3824","Tag":null,"Text":"(string) xEncodeDone =>,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3825","Tag":null,"Text":"(string) xEncodeBusy =>,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3826","Tag":null,"Text":"(string) xEncodeError => xEncodeError,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3827","Tag":null,"Text":"(string) eEncodeError => eEncodeError);"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3828","Tag":null,"Text":"(string) END_IF;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3829","Tag":null,"Text":"(string) END_WHILE"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3830","Tag":null,"Text":"(string)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3831","Tag":null,"Text":"(string) //Encode Seq"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3832","Tag":null,"Text":"(string) IF eEncodeError = ERROR.NO_ERROR AND _xHasSeq THEN"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3833","Tag":null,"Text":"(string) //{info 'todo: i-campbell Make these field numbers a GVL'}"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3834","Tag":null,"Text":"(string) dviTemp.Uint64 := _uliSeq;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3835","Tag":null,"Text":"(string) eEncodeError := EncodeNextVarInt(ValueToEncode := dviTemp,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3836","Tag":null,"Text":"(string) ProtobufFieldNumber := 3);"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3837","Tag":null,"Text":"(string)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3838","Tag":null,"Text":"(string) xEncodeError := eEncodeError <> ERROR.NO_ERROR;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3839","Tag":null,"Text":"(string) END_IF;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3840","Tag":null,"Text":"(string)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3841","Tag":null,"Text":"(string) //Encode UUID"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3842","Tag":null,"Text":"(string) IF eEncodeError = ERROR.NO_ERROR AND _xHasUuid THEN"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3843","Tag":null,"Text":"(string) //{info 'todo: i-campbell Make these field numbers a GVL'}"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3844","Tag":null,"Text":"(string) eEncodeError := EncodeNextString(ValueToEncode := _sUuid,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3845","Tag":null,"Text":"(string) ProtobufFieldNumber := 4);"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3846","Tag":null,"Text":"(string)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3847","Tag":null,"Text":"(string) xEncodeError := eEncodeError <> ERROR.NO_ERROR;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3848","Tag":null,"Text":"(string) END_IF;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3849","Tag":null,"Text":"(string)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3850","Tag":null,"Text":"(string) //Encode Body"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3851","Tag":null,"Text":"(string) //{info 'todo: i-campbell implement encode body'}"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3852","Tag":null,"Text":"(string) IF eEncodeError = ERROR.NO_ERROR AND _xHasBody THEN"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3853","Tag":null,"Text":"(string) eEncodeError := ERROR.NotImplemented;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3854","Tag":null,"Text":"(string) xEncodeError := eEncodeError <> ERROR.NO_ERROR;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3855","Tag":null,"Text":"(string) END_IF;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3856","Tag":null,"Text":"(string)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3857","Tag":null,"Text":"(string) // i is pointing to the array index 1 after the end of the payload so return the length"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3858","Tag":null,"Text":"(string) _diPayloadSize := i - _protobufBlobLower;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3859","Tag":null,"Text":"(string) protobufBlobSize := _diPayloadSize;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3860","Tag":null,"Text":"(string) //DONE :)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3861","Tag":null,"Text":"(string) xEncodeDone := NOT xEncodeError;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3862","Tag":null,"Text":"(string) xEncodeBusy := FALSE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)9","Tag":null,"Text":"(string)END_IF;"}}]}}}}},"Interface":{"@Type":"a9ed5b7e","@Value":{"TextDocument":{"@Type":"f3878285","@Value":{"TextLines":{"@Type":"[a5de0b0b]","@Value":[{"@Type":"a5de0b0b","@Value":{"Id":"(long)3571","Tag":null,"Text":"(string)(*"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3572","Tag":null,"Text":"(string) Represents the sparkplugb data to be sent in a MQTT Publisher or received by an MQTT Subscriber"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3573","Tag":null,"Text":"(string)\tIt contains data for both the raw bytes and also a structured view of the data"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3574","Tag":null,"Text":"(string)\tIt contains code to transform either from or to the raw bytes"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3575","Tag":null,"Text":"(string)\tIF BOTH xDecode and xEncode are set, an error will be given for both and nothing will happen"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3576","Tag":null,"Text":"(string)*)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3577","Tag":null,"Text":"(string){attribute 'hide'}"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3578","Tag":null,"Text":"(string)FUNCTION_BLOCK FB_Payload"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3579","Tag":null,"Text":"(string)VAR_INPUT"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3580","Tag":null,"Text":"(string) (*Trigers for conversion*)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3581","Tag":null,"Text":"(string) xDecode : BOOL; //Based on CBML.LCon. Current implementation, It will always xDone or xError every cycle, it never takes more than one cycle "}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3582","Tag":null,"Text":"(string) xEncode : BOOL; //Based on CBML.LCon. Current implementation, It will always xDone or xError every cycle, it never takes more than one cycle"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3583","Tag":null,"Text":"(string) protobufBlobStartIndex : DINT := 16#7FFF_FFFF; //It is conceivable, you don't want to pass me the whole array. If this value is MaxDint, I will just use LOWER_BOUND"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3584","Tag":null,"Text":"(string) protobufBlobMaxIndex : DINT := 16#7FFF_FFFF; //It is conceivable, you don't want to pass me the whole array. If this value is MaxDint, I will just use UPPER_BOUND"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3585","Tag":null,"Text":"(string) myBodyPool : POINTER TO BYTE; //for example Payload.Metric[].Body"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3586","Tag":null,"Text":"(string) myBodyPoolSize : __XINT; //Size in bytes of the Body Pool"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3587","Tag":null,"Text":"(string)END_VAR"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3588","Tag":null,"Text":"(string)VAR_IN_OUT"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3589","Tag":null,"Text":"(string) protobufBlobSize : DINT; //size in bytes. for encode, this FB will write the size here. for decode, the caller must tell the size"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3590","Tag":null,"Text":"(string) myProtobufBlob : ARRAY[*] OF BYTE; //array of bytes containing the protobuf payload"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3591","Tag":null,"Text":"(string)END_VAR"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3592","Tag":null,"Text":"(string)VAR_OUTPUT"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3593","Tag":null,"Text":"(string) xDecodeDone, xDecodeBusy, xDecodeError : BOOL; //Based on CBML.LCon, but will automatically be reset if xDecode"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3594","Tag":null,"Text":"(string) eDecodeError : ERROR;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3595","Tag":null,"Text":"(string) xEncodeDone, xEncodeBusy, xEncodeError : BOOL; //Based on CBML.LCon, but will automatically be reset if xEncode"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3596","Tag":null,"Text":"(string) eEncodeError : ERROR;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3597","Tag":null,"Text":"(string)END_VAR"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3598","Tag":null,"Text":"(string)VAR"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3599","Tag":null,"Text":"(string) i : DINT;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3600","Tag":null,"Text":"(string) eDecodeState : PayloadDecodeStates;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3601","Tag":null,"Text":"(string) dviTemp : DecodedVarInt;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3602","Tag":null,"Text":"(string) WStringFactory : LinkedListWStringFactory;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3603","Tag":null,"Text":"(string) ColumnsPool : LinkedList.List; // OF LinkedListWStringElement"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3604","Tag":null,"Text":"(string) KeysPool : LinkedList.List; // OF LinkedListWStringElement"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3605","Tag":null,"Text":"(string) PropertySetValuesFactory : PayloadPropertyValueFactory;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3606","Tag":null,"Text":"(string) PropertySetValuesPool : LinkedList.List; //OF FB_PayloadPropertyValue"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3607","Tag":null,"Text":"(string) PropertySetsPool : LinkedList.List; //OF "}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3608","Tag":null,"Text":"(string) DataSetColumnsPool : LinkedList.List; //OF "}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3609","Tag":null,"Text":"(string) DataSetTypesPool : LinkedList.List; //OF "}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3610","Tag":null,"Text":"(string) RowsPool : LinkedList.List; //OF "}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3611","Tag":null,"Text":"(string) ElementsPool : LinkedList.List; //OF "}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3612","Tag":null,"Text":"(string) ParametersPool : LinkedList.List; //OF "}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3613","Tag":null,"Text":"(string) MetricsFactory : PayloadMetricFactory;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3614","Tag":null,"Text":"(string) MetricsPool : LinkedList.List; //OF FB_PayloadMetric"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3615","Tag":null,"Text":"(string) BodyPoolFreeIndex : DINT;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3616","Tag":null,"Text":"(string) recentlyClaimedMetric : REFERENCE TO FB_PayloadMetric;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3617","Tag":null,"Text":"(string) nextMetricToEncode : POINTER TO FB_PayloadMetric;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3618","Tag":null,"Text":"(string) _COL_HasNext : BOOL;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3619","Tag":null,"Text":"(string) _COL_Element : LinkedList.IElement;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3620","Tag":null,"Text":"(string) (* Binary Blob *)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3621","Tag":null,"Text":"(string) //_pbPayload : MOVED_TO_myPayloadARRAY__OF_BYTE; //array of bytes containing the payload"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3622","Tag":null,"Text":"(string) _diPayloadSize : DINT; //Size in Bytes. Actual size of message"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3623","Tag":null,"Text":"(string) _protobufBlobLower : DINT := 16#7FFF_FFFF; //It is conceivable, you don't want to pass me the whole array. If this value is MaxDint, I will just use LOWER_BOUND"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3624","Tag":null,"Text":"(string) _protobufBlobUpper : DINT := 16#7FFF_FFFF; //It is conceivable, you don't want to pass me the whole array. If this value is MaxDint, I will just use UPPER_BOUND"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3625","Tag":null,"Text":"(string) (* Structured data *)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3626","Tag":null,"Text":"(string) // optional uint64 timestamp = 1; // Timestamp at message sending time"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3627","Tag":null,"Text":"(string) _xHasTimestamp : BOOL;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3628","Tag":null,"Text":"(string) _uliTimestamp : T_DateTime;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3629","Tag":null,"Text":"(string) // repeated Metric metrics = 2; // Repeated forever - no limit in Google Protobufs"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3630","Tag":null,"Text":"(string) //uliHasMetrics : ULINT;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3631","Tag":null,"Text":"(string) //uliMaxMetrics : ULINT; //Size of the Metrics array"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3632","Tag":null,"Text":"(string) _Metrics : LinkedList.List; //Array of FB_PayloadMetrics"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3633","Tag":null,"Text":"(string) // optional uint64 seq = 3; // Sequence number"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3634","Tag":null,"Text":"(string) _xHasSeq : BOOL;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3635","Tag":null,"Text":"(string) _uliSeq : ULINT; // Sequence number"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3636","Tag":null,"Text":"(string) // optional string uuid = 4; // UUID to track message type in terms of schema definitions"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3637","Tag":null,"Text":"(string) _xHasUuid : BOOL;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3638","Tag":null,"Text":"(string) _sUuid : WSTRING; // UUID to track message type in terms of schema definitions"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3639","Tag":null,"Text":"(string) // optional bytes body = 5; // To optionally bypass the whole definition above"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3640","Tag":null,"Text":"(string) _xHasBody : BOOL; // it is feasible for a \"body\" to have 0 bytes, so we use this as well"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3641","Tag":null,"Text":"(string) _diHasBody_bytes : DINT; // there's only at most 1 body, but this number represents how many bytes"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3642","Tag":null,"Text":"(string) _diStartOfBody : DINT; // Array Index to the start position in FB_Payload.myBodyPool[] make up the \"body\", To optionally bypass the whole definition above"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3643","Tag":null,"Text":"(string) // extensions 6 to max; // For third party extensions"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3644","Tag":null,"Text":"(string) // IC: NOT IMPLEMENTED"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1","Tag":null,"Text":"(string)END_VAR"}}]}}}}},"UniqueIdGenerator":"(string)3862","POULevel":{"@Type":"8e575c5b:Enum","@Value":"Standard"},"ChildObjectGuids":{"@Type":"ArrayList:IList","@Value":[]},"AddAttributeSubsequent":"(bool)False"}},"TypeInfos":{"0db3d7bb":"{0db3d7bb-cde0-4416-9a7b-ce49a0124323}","3b83b776":"{3b83b776-fb25-43b8-99f2-3c507c9143fc}","6f9dac99":"{6f9dac99-8de1-4efc-8465-68ac443b7d08}","8e575c5b":"{8e575c5b-1d37-49c6-941b-5c0ec7874787}","a5de0b0b":"{a5de0b0b-1cb5-4913-ac21-9d70293ec00d}","a9ed5b7e":"{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}","ArrayList":"System.Collections.ArrayList","bool":"System.Boolean","f3878285":"{f3878285-8e4f-490b-bb1b-9acbb7eb04db}","long":"System.Int64","string":"System.String"}}},"FormatVersion":"1.0"} \ No newline at end of file +{"payload":{"meta":{"Graph":{"@Type":"81297157","@Value":{"Guid":"(Guid)ddc74abf-e7a4-407a-a4f5-0c8338e771b9","ParentGuid":"(Guid)00000000-0000-0000-0000-000000000000","Name":"(string)FB_Payload","Properties":{"@Type":"2c41fa04:IDictionary","@Value":[{"@Key":"(Guid)829a18f2-c514-4f6e-9634-1df173429203","@Value":{"@Type":"829a18f2","@Value":{"ParentObjects":{"@Type":"fa2ee218:IDictionary","@Value":[{"@Key":"(Guid)21af5390-2942-461a-bf89-951aaf6999f1","@Value":"(Guid)ad205903-8508-4926-9d55-99ed8855a066"}]}}}}]},"TypeGuid":"(Guid)6f9dac99-8de1-4efc-8465-68ac443b7d08","EmbeddedTypeGuids":{"@Type":"[Guid]","@Value":["(Guid)a9ed5b7e-75c5-4651-af16-d2c27e98cb94","(Guid)3b83b776-fb25-43b8-99f2-3c507c9143fc"]}}},"TypeInfos":{"2c41fa04":"{2c41fa04-1834-41c1-816e-303c7aa2c05b}","81297157":"{81297157-7ec9-45ce-845e-84cab2b88ade}","829a18f2":"{829a18f2-c514-4f6e-9634-1df173429203}","fa2ee218":"{fa2ee218-a39b-4b6d-b249-49dbddbd168a}","Guid":"System.Guid","string":"System.String"}},"object":{"Graph":{"@Type":"6f9dac99","@Value":{"SpecialFunc":{"@Type":"0db3d7bb:Enum","@Value":"None"},"Implementation":{"@Type":"3b83b776","@Value":{"TextDocument":{"@Type":"f3878285","@Value":{"TextLines":{"@Type":"[a5de0b0b]","@Value":[{"@Type":"a5de0b0b","@Value":{"Id":"(long)3645","Tag":null,"Text":"(string)//This IF statement"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3646","Tag":null,"Text":"(string)IF xDecode AND xEncode THEN //ERROR"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3647","Tag":null,"Text":"(string) xDecodeDone := FALSE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3648","Tag":null,"Text":"(string) xDecodeBusy := FALSE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3649","Tag":null,"Text":"(string) xDecodeError := TRUE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3650","Tag":null,"Text":"(string) eDecodeError := ERROR.PayloadYouCantDoBothAtOnce;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3651","Tag":null,"Text":"(string) xEncodeDone := FALSE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3652","Tag":null,"Text":"(string) xEncodeBusy := FALSE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3653","Tag":null,"Text":"(string) xEncodeError := TRUE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3654","Tag":null,"Text":"(string) eEncodeError := ERROR.PayloadYouCantDoBothAtOnce;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3655","Tag":null,"Text":"(string)ELSIF NOT xDecode AND NOT xEncode THEN //DO NOTHING, ALL OUTPUTS OFF"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3656","Tag":null,"Text":"(string) xDecodeDone := FALSE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3657","Tag":null,"Text":"(string) xDecodeBusy := FALSE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3658","Tag":null,"Text":"(string) xDecodeError := FALSE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3659","Tag":null,"Text":"(string) eDecodeError := ERROR.NO_ERROR;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3660","Tag":null,"Text":"(string) xEncodeDone := FALSE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3661","Tag":null,"Text":"(string) xEncodeBusy := FALSE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3662","Tag":null,"Text":"(string) xEncodeError := FALSE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3663","Tag":null,"Text":"(string) eEncodeError := ERROR.NO_ERROR;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3664","Tag":null,"Text":"(string)ELSIF xDecode AND NOT xEncode THEN //Decode"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3665","Tag":null,"Text":"(string) xDecodeDone := FALSE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3666","Tag":null,"Text":"(string) xDecodeBusy := TRUE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3667","Tag":null,"Text":"(string) xDecodeError := FALSE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3668","Tag":null,"Text":"(string) eDecodeError := ERROR.NO_ERROR;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3669","Tag":null,"Text":"(string) xEncodeDone := FALSE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3670","Tag":null,"Text":"(string) xEncodeBusy := FALSE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3671","Tag":null,"Text":"(string) xEncodeError := FALSE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3672","Tag":null,"Text":"(string) eEncodeError := ERROR.NO_ERROR;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3673","Tag":null,"Text":"(string)ELSIF NOT xDecode AND xEncode THEN //Encode"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3674","Tag":null,"Text":"(string) xDecodeDone := FALSE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3675","Tag":null,"Text":"(string) xDecodeBusy := FALSE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3676","Tag":null,"Text":"(string) xDecodeError := FALSE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3677","Tag":null,"Text":"(string) eDecodeError := ERROR.NO_ERROR;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3678","Tag":null,"Text":"(string) xEncodeDone := FALSE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3679","Tag":null,"Text":"(string) xEncodeBusy := TRUE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3680","Tag":null,"Text":"(string) xEncodeError := FALSE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3681","Tag":null,"Text":"(string) eEncodeError := ERROR.NO_ERROR;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3682","Tag":null,"Text":"(string)END_IF"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3683","Tag":null,"Text":"(string)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3684","Tag":null,"Text":"(string)IF xDecodeBusy THEN"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3685","Tag":null,"Text":"(string) InitializeStructuredPayload();"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3686","Tag":null,"Text":"(string)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3687","Tag":null,"Text":"(string) //OK, now we are Listening to the user as to how many bytes in the payload"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3688","Tag":null,"Text":"(string) _diPayloadSize := protobufBlobSize;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3689","Tag":null,"Text":"(string) SetArrayBounds();"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3690","Tag":null,"Text":"(string) eDecodeState := PayloadDecodeStates.payload_getmember;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3691","Tag":null,"Text":"(string)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3692","Tag":null,"Text":"(string) FOR i := _protobufBlobLower TO _protobufBlobLower + _diPayloadSize - 1 DO"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3693","Tag":null,"Text":"(string) // loop through every byte and decode it"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3694","Tag":null,"Text":"(string) //start off looking for the messageID:"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3695","Tag":null,"Text":"(string) CASE eDecodeState OF"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3696","Tag":null,"Text":"(string) PayloadDecodeStates.payload_getmember:"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3697","Tag":null,"Text":"(string) CASE myProtobufBlob[i] OF"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3698","Tag":null,"Text":"(string) 16#00: //end of data? padding byte? ERROR"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3699","Tag":null,"Text":"(string) xDecodeError := TRUE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3700","Tag":null,"Text":"(string) eDecodeError := ERROR.PayloadFound00;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3701","Tag":null,"Text":"(string) i := _protobufBlobLower + _diPayloadSize - 1; //break out of FOR"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3702","Tag":null,"Text":"(string) ProtobufedId.Payload_timestamp: //payload timestamp 01<<3 | 00"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3703","Tag":null,"Text":"(string) eDecodeState := PayloadDecodeStates.payload_gettimestamp;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3704","Tag":null,"Text":"(string) ProtobufedId.Payload_metrics: //start of metrics 02<<3 | 02"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3705","Tag":null,"Text":"(string) eDecodeState := PayloadDecodeStates.payload_getmetric;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3706","Tag":null,"Text":"(string) ProtobufedId.Payload_seq: //payload sequence number 03<<3 | 00"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3707","Tag":null,"Text":"(string) eDecodeState := PayloadDecodeStates.payload_getseq;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3708","Tag":null,"Text":"(string) ProtobufedId.Payload_uuid: //payload uuid 04<<3 | 02"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3709","Tag":null,"Text":"(string) eDecodeState := PayloadDecodeStates.payload_getUuid;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3710","Tag":null,"Text":"(string) ProtobufedId.Payload_body: //payload with just raw bytes to send 05<<3 | 02"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3711","Tag":null,"Text":"(string) eDecodeState := PayloadDecodeStates.payload_getBody;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3712","Tag":null,"Text":"(string) ELSE //extension... error"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3713","Tag":null,"Text":"(string) xDecodeError := TRUE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3714","Tag":null,"Text":"(string) eDecodeError := ERROR.PayloadFoundExtensions;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3715","Tag":null,"Text":"(string) i := _protobufBlobLower + _diPayloadSize - 1; //break out of FOR"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3716","Tag":null,"Text":"(string) END_CASE"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3717","Tag":null,"Text":"(string) PayloadDecodeStates.payload_gettimestamp:"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3718","Tag":null,"Text":"(string) _xHasTimeStamp := TRUE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3719","Tag":null,"Text":"(string) dviTemp := DecodeNextVarInt(); //updates i to end of the varint"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3720","Tag":null,"Text":"(string) _uliTimestamp := dviTemp.uliDateTime;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3721","Tag":null,"Text":"(string) eDecodeState := PayloadDecodeStates.payload_getmember;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3722","Tag":null,"Text":"(string) PayloadDecodeStates.payload_getmetric:"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3723","Tag":null,"Text":"(string) //So i imagine, a metric should be able to decode itself, in one go"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3724","Tag":null,"Text":"(string) recentlyClaimedMetric REF= AddMetricBlank(eError => eDecodeError);"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3725","Tag":null,"Text":"(string)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3726","Tag":null,"Text":"(string) IF eDecodeError = ERROR.NO_ERROR THEN"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3727","Tag":null,"Text":"(string) //i starts off now pointing to the first byte of the Metric"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3728","Tag":null,"Text":"(string) THIS^.recentlyClaimedMetric(xDecode := TRUE,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3729","Tag":null,"Text":"(string) xEncode := FALSE,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3730","Tag":null,"Text":"(string) protobufBlobMaxIndex := _protobufBlobLower + _diPayloadSize - 1,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3731","Tag":null,"Text":"(string) OwnerPayload := THIS^,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3732","Tag":null,"Text":"(string) ProtobufBlobIndex := i,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3733","Tag":null,"Text":"(string) myProtobufBlob := myProtobufBlob,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3734","Tag":null,"Text":"(string) xDecodeDone =>,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3735","Tag":null,"Text":"(string) xDecodeBusy =>,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3736","Tag":null,"Text":"(string) xDecodeError =>,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3737","Tag":null,"Text":"(string) eDecodeError =>);"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3738","Tag":null,"Text":"(string)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3739","Tag":null,"Text":"(string) IF recentlyClaimedMetric.xDecodeDone THEN"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3740","Tag":null,"Text":"(string) //SUCCESS! the latest Metric has now been decoded"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3741","Tag":null,"Text":"(string) //i is now pointing to the very last byte of the Metric"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3742","Tag":null,"Text":"(string) eDecodeState := PayloadDecodeStates.payload_getmember;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3743","Tag":null,"Text":"(string) ELSE"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3744","Tag":null,"Text":"(string) //FAIL! OR actually, maybe just busy? so far it will all be taken as an error"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3745","Tag":null,"Text":"(string) xDecodeError := TRUE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3746","Tag":null,"Text":"(string)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3747","Tag":null,"Text":"(string) IF recentlyClaimedMetric.xDecodeError THEN"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3748","Tag":null,"Text":"(string) eDecodeError := recentlyClaimedMetric.eDecodeError;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3749","Tag":null,"Text":"(string) ELSE"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3750","Tag":null,"Text":"(string) eDecodeError := ERROR.PayloadMetricBusyButMultiCycleNotYetImplemented;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3751","Tag":null,"Text":"(string) END_IF"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3752","Tag":null,"Text":"(string)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3753","Tag":null,"Text":"(string) i := _protobufBlobLower + _diPayloadSize - 1; //break out of FOR"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3754","Tag":null,"Text":"(string) END_IF"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3755","Tag":null,"Text":"(string) ELSE"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3756","Tag":null,"Text":"(string) xDecodeError := TRUE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3757","Tag":null,"Text":"(string) //eDecodeError := ERROR.Can't Claim Metric;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3758","Tag":null,"Text":"(string) i := _protobufBlobLower + _diPayloadSize - 1; //break out of FOR"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3759","Tag":null,"Text":"(string) END_IF;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3760","Tag":null,"Text":"(string) PayloadDecodeStates.payload_getseq:"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3761","Tag":null,"Text":"(string) _xHasSeq := TRUE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3762","Tag":null,"Text":"(string) dviTemp := DecodeNextVarInt(); //updates i to end of the varint"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3763","Tag":null,"Text":"(string) _uliSeq := dviTemp.UInt64;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3764","Tag":null,"Text":"(string) eDecodeState := PayloadDecodeStates.payload_getmember;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3765","Tag":null,"Text":"(string) PayloadDecodeStates.payload_getUuid:"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3766","Tag":null,"Text":"(string) _xHasUuid := TRUE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3767","Tag":null,"Text":"(string) _sUuid := DecodeNextString(); //updates i to end of string"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3768","Tag":null,"Text":"(string) eDecodeState := PayloadDecodeStates.payload_getmember;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3769","Tag":null,"Text":"(string) PayloadDecodeStates.payload_getBody:"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3770","Tag":null,"Text":"(string) _xHasBody := TRUE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3771","Tag":null,"Text":"(string) DecodeNextBinaryData(numBytes => _diHasBody_bytes,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3772","Tag":null,"Text":"(string) BodyStartIndex => _diStartOfBody); //updates i to end of Body"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3773","Tag":null,"Text":"(string)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3774","Tag":null,"Text":"(string) eDecodeState := PayloadDecodeStates.payload_getmember;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3775","Tag":null,"Text":"(string) ELSE"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3776","Tag":null,"Text":"(string) // Here not..."}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3777","Tag":null,"Text":"(string) xDecodeError := TRUE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3778","Tag":null,"Text":"(string) eDecodeError := ERROR.OhMy_ThatShouldNotHaveHappened; //This isn't even a possible value of the PayloadDecodeStates;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3779","Tag":null,"Text":"(string)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3780","Tag":null,"Text":"(string) i := _protobufBlobLower + _diPayloadSize - 1; //break out of FOR NO IDEA WHAT TO DO HERE"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3781","Tag":null,"Text":"(string) END_CASE"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3782","Tag":null,"Text":"(string) END_FOR"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3783","Tag":null,"Text":"(string)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3784","Tag":null,"Text":"(string) eDecodeState := PayloadDecodeStates.idle;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3785","Tag":null,"Text":"(string) xDecodeDone := NOT xDecodeError;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3786","Tag":null,"Text":"(string) xDecodeBusy := FALSE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3787","Tag":null,"Text":"(string)END_IF;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3788","Tag":null,"Text":"(string)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3789","Tag":null,"Text":"(string)IF xEncodeBusy THEN"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3790","Tag":null,"Text":"(string) //NOTE: BLOB Data will not be initialized to 00."}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3791","Tag":null,"Text":"(string) //But we will start with a 0 byte payload."}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3792","Tag":null,"Text":"(string) InitializeBlob();"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3793","Tag":null,"Text":"(string) SetArrayBounds();"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3794","Tag":null,"Text":"(string) i := _protobufBlobLower;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3795","Tag":null,"Text":"(string) //Encode Timestamp (Field Number 1)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3796","Tag":null,"Text":"(string) IF eEncodeError = ERROR.NO_ERROR AND _xHasTimestamp THEN"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3797","Tag":null,"Text":"(string) //{info 'todo: i-campbell Make these field numbers a GVL'}"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3798","Tag":null,"Text":"(string) dviTemp.uliDateTime := _uliTimestamp;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3799","Tag":null,"Text":"(string) eEncodeError := EncodeNextVarInt(ValueToEncode := dviTemp,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3800","Tag":null,"Text":"(string) ProtobufFieldNumber := 1);"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3801","Tag":null,"Text":"(string)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3802","Tag":null,"Text":"(string) xEncodeError := eEncodeError <> ERROR.NO_ERROR;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3803","Tag":null,"Text":"(string) END_IF;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3804","Tag":null,"Text":"(string)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3805","Tag":null,"Text":"(string) //Encode All Metrics"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3806","Tag":null,"Text":"(string) _Metrics.ItterateRestart(HasNext => _COL_HasNext);"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3807","Tag":null,"Text":"(string)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3808","Tag":null,"Text":"(string) WHILE _COL_HasNext AND (eEncodeError = ERROR.NO_ERROR) DO"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3809","Tag":null,"Text":"(string) _Metrics.ItterateNext(itfElement => _COL_Element,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3810","Tag":null,"Text":"(string) HasNext => _COL_HasNext);"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3811","Tag":null,"Text":"(string)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3812","Tag":null,"Text":"(string) IF __QUERYPOINTER(_COL_Element,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3813","Tag":null,"Text":"(string) nextMetricToEncode) THEN"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3814","Tag":null,"Text":"(string) nextMetricToEncode^(xDecode := FALSE,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3815","Tag":null,"Text":"(string) xEncode := TRUE,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3816","Tag":null,"Text":"(string) ProtobufBlobIndex := i,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3817","Tag":null,"Text":"(string) protobufBlobMaxIndex := _protobufBlobUpper,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3818","Tag":null,"Text":"(string) OwnerPayload := THIS^,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3819","Tag":null,"Text":"(string) myProtobufBlob := myProtobufBlob,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3820","Tag":null,"Text":"(string) xDecodeDone =>,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3821","Tag":null,"Text":"(string) xDecodeBusy =>,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3822","Tag":null,"Text":"(string) xDecodeError =>,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3823","Tag":null,"Text":"(string) eDecodeError =>,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3824","Tag":null,"Text":"(string) xEncodeDone =>,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3825","Tag":null,"Text":"(string) xEncodeBusy =>,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3826","Tag":null,"Text":"(string) xEncodeError => xEncodeError,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3827","Tag":null,"Text":"(string) eEncodeError => eEncodeError);"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3828","Tag":null,"Text":"(string) END_IF;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3829","Tag":null,"Text":"(string) END_WHILE"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3830","Tag":null,"Text":"(string)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3831","Tag":null,"Text":"(string) //Encode Seq"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3832","Tag":null,"Text":"(string) IF eEncodeError = ERROR.NO_ERROR AND _xHasSeq THEN"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3833","Tag":null,"Text":"(string) //{info 'todo: i-campbell Make these field numbers a GVL'}"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3834","Tag":null,"Text":"(string) dviTemp.Uint64 := _uliSeq;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3835","Tag":null,"Text":"(string) eEncodeError := EncodeNextVarInt(ValueToEncode := dviTemp,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3836","Tag":null,"Text":"(string) ProtobufFieldNumber := 3);"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3837","Tag":null,"Text":"(string)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3838","Tag":null,"Text":"(string) xEncodeError := eEncodeError <> ERROR.NO_ERROR;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3839","Tag":null,"Text":"(string) END_IF;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3840","Tag":null,"Text":"(string)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3841","Tag":null,"Text":"(string) //Encode UUID"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3842","Tag":null,"Text":"(string) IF eEncodeError = ERROR.NO_ERROR AND _xHasUuid THEN"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3843","Tag":null,"Text":"(string) //{info 'todo: i-campbell Make these field numbers a GVL'}"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3844","Tag":null,"Text":"(string) eEncodeError := EncodeNextString(ValueToEncode := _sUuid,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3845","Tag":null,"Text":"(string) ProtobufFieldNumber := 4);"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3846","Tag":null,"Text":"(string)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3847","Tag":null,"Text":"(string) xEncodeError := eEncodeError <> ERROR.NO_ERROR;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3848","Tag":null,"Text":"(string) END_IF;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3849","Tag":null,"Text":"(string)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3850","Tag":null,"Text":"(string) //Encode Body"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3851","Tag":null,"Text":"(string) //{info 'todo: i-campbell implement encode body'}"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3852","Tag":null,"Text":"(string) IF eEncodeError = ERROR.NO_ERROR AND _xHasBody THEN"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3853","Tag":null,"Text":"(string) eEncodeError := ERROR.NotImplemented;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3854","Tag":null,"Text":"(string) xEncodeError := eEncodeError <> ERROR.NO_ERROR;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3855","Tag":null,"Text":"(string) END_IF;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3856","Tag":null,"Text":"(string)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3857","Tag":null,"Text":"(string) // i is pointing to the array index 1 after the end of the payload so return the length"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3858","Tag":null,"Text":"(string) _diPayloadSize := i - _protobufBlobLower;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3859","Tag":null,"Text":"(string) protobufBlobSize := _diPayloadSize;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3860","Tag":null,"Text":"(string) //DONE :)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3861","Tag":null,"Text":"(string) xEncodeDone := NOT xEncodeError;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3862","Tag":null,"Text":"(string) xEncodeBusy := FALSE;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)9","Tag":null,"Text":"(string)END_IF;"}}]}}}}},"Interface":{"@Type":"a9ed5b7e","@Value":{"TextDocument":{"@Type":"f3878285","@Value":{"TextLines":{"@Type":"[a5de0b0b]","@Value":[{"@Type":"a5de0b0b","@Value":{"Id":"(long)3571","Tag":null,"Text":"(string)(*"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3572","Tag":null,"Text":"(string) Represents the sparkplugb data to be sent in a MQTT Publisher or received by an MQTT Subscriber"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3573","Tag":null,"Text":"(string)\tIt contains data for both the raw bytes and also a structured view of the data"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3574","Tag":null,"Text":"(string)\tIt contains code to transform either from (Decode) or to (Encode) the raw bytes"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3575","Tag":null,"Text":"(string)\tIF BOTH xDecode and xEncode are set, an error will be given for both and nothing will happen"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3576","Tag":null,"Text":"(string)*)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3577","Tag":null,"Text":"(string){attribute 'hide'}"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3578","Tag":null,"Text":"(string)FUNCTION_BLOCK FB_Payload"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3579","Tag":null,"Text":"(string)VAR_INPUT"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3580","Tag":null,"Text":"(string) (*Trigers for conversion*)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3581","Tag":null,"Text":"(string) xDecode : BOOL; //Based on CBML.LCon. Current implementation, It will always xDone or xError every cycle, it never takes more than one cycle "}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3582","Tag":null,"Text":"(string) xEncode : BOOL; //Based on CBML.LCon. Current implementation, It will always xDone or xError every cycle, it never takes more than one cycle"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3583","Tag":null,"Text":"(string) protobufBlobStartIndex : DINT := 16#7FFF_FFFF; //It is conceivable, you don't want to pass me the whole array. If this value is MaxDint, I will just use LOWER_BOUND"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3584","Tag":null,"Text":"(string) protobufBlobMaxIndex : DINT := 16#7FFF_FFFF; //It is conceivable, you don't want to pass me the whole array. If this value is MaxDint, I will just use UPPER_BOUND"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3585","Tag":null,"Text":"(string) myBodyPool : POINTER TO BYTE; //for example Payload.Metric[].Body"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3586","Tag":null,"Text":"(string) myBodyPoolSize : __XINT; //Size in bytes of the Body Pool"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3587","Tag":null,"Text":"(string)END_VAR"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3588","Tag":null,"Text":"(string)VAR_IN_OUT"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3589","Tag":null,"Text":"(string) protobufBlobSize : DINT; //size in bytes. for encode, this FB will write the size here. for decode, the caller must tell the size"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3590","Tag":null,"Text":"(string) myProtobufBlob : ARRAY[*] OF BYTE; //array of bytes containing the protobuf payload"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3591","Tag":null,"Text":"(string)END_VAR"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3592","Tag":null,"Text":"(string)VAR_OUTPUT"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3593","Tag":null,"Text":"(string) xDecodeDone, xDecodeBusy, xDecodeError : BOOL; //Based on CBML.LCon, but will automatically be reset if xDecode"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3594","Tag":null,"Text":"(string) eDecodeError : ERROR;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3595","Tag":null,"Text":"(string) xEncodeDone, xEncodeBusy, xEncodeError : BOOL; //Based on CBML.LCon, but will automatically be reset if xEncode"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3596","Tag":null,"Text":"(string) eEncodeError : ERROR;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3597","Tag":null,"Text":"(string)END_VAR"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3598","Tag":null,"Text":"(string)VAR"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3599","Tag":null,"Text":"(string) i : DINT;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3600","Tag":null,"Text":"(string) eDecodeState : PayloadDecodeStates;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3601","Tag":null,"Text":"(string) dviTemp : DecodedVarInt;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3602","Tag":null,"Text":"(string) WStringFactory : LinkedListWStringFactory;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3603","Tag":null,"Text":"(string) ColumnsPool : LinkedList.List; // OF LinkedListWStringElement"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3604","Tag":null,"Text":"(string) KeysPool : LinkedList.List; // OF LinkedListWStringElement"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3605","Tag":null,"Text":"(string) PropertySetValuesFactory : PayloadPropertyValueFactory;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3606","Tag":null,"Text":"(string) PropertySetValuesPool : LinkedList.List; //OF FB_PayloadPropertyValue"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3607","Tag":null,"Text":"(string) PropertySetsPool : LinkedList.List; //OF FB_PayloadPropertySet"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3609","Tag":null,"Text":"(string) DataSetTypesPool : LinkedList.List; //OF FB_PayloadDataSetType"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3610","Tag":null,"Text":"(string) RowsPool : LinkedList.List; //OF FB_PayloadRow"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3611","Tag":null,"Text":"(string) ElementsPool : LinkedList.List; //OF FB_PayloadElement"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3612","Tag":null,"Text":"(string) ParametersPool : LinkedList.List; //OF FB_PayloadParameter"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3613","Tag":null,"Text":"(string) MetricsFactory : PayloadMetricFactory;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3614","Tag":null,"Text":"(string) MetricsPool : LinkedList.List; //OF FB_PayloadMetric"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3615","Tag":null,"Text":"(string) BodyPoolFreeIndex : DINT;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3616","Tag":null,"Text":"(string) recentlyClaimedMetric : REFERENCE TO FB_PayloadMetric;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3617","Tag":null,"Text":"(string) nextMetricToEncode : POINTER TO FB_PayloadMetric;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3618","Tag":null,"Text":"(string) _COL_HasNext : BOOL;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3619","Tag":null,"Text":"(string) _COL_Element : LinkedList.IElement;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3620","Tag":null,"Text":"(string) (* Binary Blob *)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3621","Tag":null,"Text":"(string) //_pbPayload : MOVED_TO_myPayloadARRAY__OF_BYTE; //array of bytes containing the payload"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3622","Tag":null,"Text":"(string) _diPayloadSize : DINT; //Size in Bytes. Actual size of message"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3623","Tag":null,"Text":"(string) _protobufBlobLower : DINT := 16#7FFF_FFFF; //It is conceivable, you don't want to pass me the whole array. If this value is MaxDint, I will just use LOWER_BOUND"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3624","Tag":null,"Text":"(string) _protobufBlobUpper : DINT := 16#7FFF_FFFF; //It is conceivable, you don't want to pass me the whole array. If this value is MaxDint, I will just use UPPER_BOUND"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3625","Tag":null,"Text":"(string) (* Structured data *)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3626","Tag":null,"Text":"(string) // optional uint64 timestamp = 1; // Timestamp at message sending time"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3627","Tag":null,"Text":"(string) _xHasTimestamp : BOOL;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3628","Tag":null,"Text":"(string) _uliTimestamp : T_DateTime;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3629","Tag":null,"Text":"(string) // repeated Metric metrics = 2; // Repeated forever - no limit in Google Protobufs"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3630","Tag":null,"Text":"(string) //uliHasMetrics : ULINT;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3631","Tag":null,"Text":"(string) //uliMaxMetrics : ULINT; //Size of the Metrics array"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3632","Tag":null,"Text":"(string) _Metrics : LinkedList.List; //Array of FB_PayloadMetrics"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3633","Tag":null,"Text":"(string) // optional uint64 seq = 3; // Sequence number"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3634","Tag":null,"Text":"(string) _xHasSeq : BOOL;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3635","Tag":null,"Text":"(string) _uliSeq : ULINT; // Sequence number"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3636","Tag":null,"Text":"(string) // optional string uuid = 4; // UUID to track message type in terms of schema definitions"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3637","Tag":null,"Text":"(string) _xHasUuid : BOOL;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3638","Tag":null,"Text":"(string) _sUuid : WSTRING; // UUID to track message type in terms of schema definitions"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3639","Tag":null,"Text":"(string) // optional bytes body = 5; // To optionally bypass the whole definition above"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3640","Tag":null,"Text":"(string) _xHasBody : BOOL; // it is feasible for a \"body\" to have 0 bytes, so we use this as well"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3641","Tag":null,"Text":"(string) _diHasBody_bytes : DINT; // there's only at most 1 body, but this number represents how many bytes"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3642","Tag":null,"Text":"(string) _diStartOfBody : DINT; // Array Index to the start position in FB_Payload.myBodyPool[] make up the \"body\", To optionally bypass the whole definition above"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3643","Tag":null,"Text":"(string) // extensions 6 to max; // For third party extensions"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)3644","Tag":null,"Text":"(string) // IC: NOT IMPLEMENTED"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1","Tag":null,"Text":"(string)END_VAR"}}]}}}}},"UniqueIdGenerator":"(string)3862","POULevel":{"@Type":"8e575c5b:Enum","@Value":"Standard"},"ChildObjectGuids":{"@Type":"ArrayList:IList","@Value":[]},"AddAttributeSubsequent":"(bool)False"}},"TypeInfos":{"0db3d7bb":"{0db3d7bb-cde0-4416-9a7b-ce49a0124323}","3b83b776":"{3b83b776-fb25-43b8-99f2-3c507c9143fc}","6f9dac99":"{6f9dac99-8de1-4efc-8465-68ac443b7d08}","8e575c5b":"{8e575c5b-1d37-49c6-941b-5c0ec7874787}","a5de0b0b":"{a5de0b0b-1cb5-4913-ac21-9d70293ec00d}","a9ed5b7e":"{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}","ArrayList":"System.Collections.ArrayList","bool":"System.Boolean","f3878285":"{f3878285-8e4f-490b-bb1b-9acbb7eb04db}","long":"System.Int64","string":"System.String"}}},"FormatVersion":"1.0"} \ No newline at end of file