[1103e9]: / project / sparkplug™_mqtt_edge_and_host-stack_b9741afd / function_blocks_8ad6e219 / fb_payload_ad205903 / fb_payload_ddc74abf / ddc74abfe7a4407aa4f50c8338e771b9.object  Maximize  Restore  History

Download this file

1 lines (1 with data), 38.9 kB

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 (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"}