1st version that works
This commit is contained in:
87
libSafeMobile/src/main/java/com/safemobile/lib/TCPmsg.java
Normal file
87
libSafeMobile/src/main/java/com/safemobile/lib/TCPmsg.java
Normal file
@ -0,0 +1,87 @@
|
||||
package com.safemobile.lib;
|
||||
|
||||
import com.safemobile.lib.SM;
|
||||
|
||||
public class TCPmsg
|
||||
{
|
||||
public boolean OK;
|
||||
public int msgLen;
|
||||
public String seqID;
|
||||
public int opCode;
|
||||
public String data;
|
||||
public String error;
|
||||
public String allData;
|
||||
|
||||
public String leftOver="";
|
||||
|
||||
private char[] _rawdata;
|
||||
private int _len;
|
||||
public TCPmsg(char[] rawdata, int len)
|
||||
{
|
||||
_rawdata = rawdata;
|
||||
_len = len;
|
||||
OK = Parse();
|
||||
}
|
||||
|
||||
public TCPmsg(TCPmsg tcp)
|
||||
{
|
||||
_rawdata =tcp._rawdata;
|
||||
_len = tcp._len;
|
||||
OK = Parse();
|
||||
}
|
||||
|
||||
public TCPmsg(char[] msg)
|
||||
{
|
||||
_rawdata = msg;
|
||||
_len = msg.length;
|
||||
OK = Parse();
|
||||
}
|
||||
|
||||
private boolean Parse()
|
||||
{
|
||||
char[] temp = new char[_len];
|
||||
for(int i=0;i<_len;i++) temp[i] = _rawdata[i];
|
||||
data =new String(temp);
|
||||
//SM.Debug("multi RX: " + data);
|
||||
this.allData = data;
|
||||
|
||||
String[] tempArr = data.split("#");
|
||||
if ((tempArr.length == 0) || (tempArr.length == 1))
|
||||
{
|
||||
SM.Debug("incorect messagebuss message=" + data);
|
||||
return false;
|
||||
}
|
||||
//get msg len
|
||||
int messLen = -1;
|
||||
try
|
||||
{
|
||||
messLen = Integer.parseInt(tempArr[1]);
|
||||
} catch (Exception e) {
|
||||
SM.Debug("incorect msg len =" + tempArr[1]);
|
||||
return false;
|
||||
}
|
||||
//messLen not int
|
||||
if(messLen ==-1) return false;
|
||||
|
||||
if (_len != messLen)
|
||||
{
|
||||
SM.Debug("message length("+messLen+") != actual length("+_len+")");
|
||||
return false;
|
||||
}
|
||||
|
||||
seqID = tempArr[2];
|
||||
opCode = Integer.parseInt(tempArr[3]);
|
||||
data = "";
|
||||
for (int i = 4; i < tempArr.length; i++)
|
||||
{
|
||||
if(tempArr[i] !="")
|
||||
data += tempArr[i]+"#";
|
||||
}
|
||||
|
||||
// add sequence ID to data when ack message
|
||||
if(opCode == OperationCodes.TM_ACK || opCode == OperationCodes.TM_ACK_SD)
|
||||
data+= seqID + "#";
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user