private Sub ProcessIncomingData(data() As Byte)
Try
If data <> Null Then
Dim buffer() As Byte = data
Log("buffer data lenght: " & buffer.Length)
dataQueue.Append(buffer)
Log("dataQueue lenght: " & dataQueue.Length)
End If
Log("processingdata = " & processingData)
If (processingData = True) And (data <> Null) Then
Log("processing data, returning......")
Return
End If
Dim offset As Int = 0
Dim dd() As Byte = dataQueue.SubArray2(ToUnsigned(offset), ToUnsigned(offset + 4))
Dim dd2(dd.Length) As Int
For i = 0 To dd.Length - 1
dd2(i) = ToUnsigned(dd(i))
Next
Do While (dataQueue.Length > (offset+4)) And Not((isValidTLV(dd2)))
offset = offset + 1
Loop
If offset > 0 Then
dataQueue.Remove(0, offset)
End If
processingData = True
If dataQueue.Length >= 4 Then
Dim mode As Int = ToUnsigned(dataQueue.ToArray(0)) '''ToUnsigned(dataQueue.ToArray(0))
Dim lenght As Int =ToUnsigned(dataQueue.ToArray(1)) + Bit.ShiftLeft(ToUnsigned(dataQueue.ToArray(2)), 8) + Bit.ShiftLeft(ToUnsigned(dataQueue.ToArray(3)), 16)
Log("lenght1: " & lenght)
If dataQueue.Length >= (lenght + 4) Then
Dim payload() As Byte = dataQueue.SubArray2(4, (lenght + 4))
If mode = 6 Then
CallSubDelayed2(mCaller, mEventName&"_processdata", payload) 'These two subs
else if mode = 0 Then
CallSubDelayed2(mCaller, mEventName&"_pushmessage", payload)
End If
dataQueue.Remove(0, lenght + 4)
ProcessIncomingData(Null)
Else
processingData = False
End If
Else
'''dataQueue.Clear
processingData = False
End If
Catch
Log("error: " & LastException)
processingData = False
End Try
End Sub