Skip to content

Commit 93c7ec5

Browse files
committed
Fixed the legacy parser switch over by moving the switcher all the way
down intt he packet parser. Close NrConsole 31
1 parent 24d3ac7 commit 93c7ec5

File tree

2 files changed

+31
-26
lines changed

2 files changed

+31
-26
lines changed

javasdk/NRSDK/src/com/neuronrobotics/sdk/common/BowlerAbstractConnection.java

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -316,6 +316,21 @@ public synchronized void setConnected(boolean c) {
316316
setSyncQueue(new QueueManager(true));
317317
setAsyncQueue(new QueueManager(false));
318318

319+
// if(!ping(new MACAddress())){
320+
/* if( BowlerDatagram.isUseBowlerV4()){
321+
//If the ping fails to get a response, try the older bowler format
322+
Log.warning("Switching to legacy parser");
323+
BowlerDatagram.setUseBowlerV4(false);
324+
}else{
325+
Log.warning("Switching to v4 parser");
326+
BowlerDatagram.setUseBowlerV4(true);
327+
}
328+
if(!ping(new MACAddress())){
329+
//neither packet format is working, bail out
330+
setConnected(false);
331+
}
332+
}
333+
*/
319334
fireConnectEvent();
320335
Runtime.getRuntime().addShutdownHook(new Thread() {
321336
@Override
@@ -326,6 +341,8 @@ public void run() {
326341
}
327342
}
328343
});
344+
345+
329346
}else{
330347
try {
331348
if(dataIns !=null)
@@ -936,12 +953,6 @@ public BowlerDatagram send(BowlerAbstractCommand command,MACAddress addr, int re
936953
}catch(MalformattedDatagram | NullPointerException e){
937954
Log.error("Sending Synchronus packet and there was a failure, will retry "+(retry-i-1)+" more times");
938955
ThreadUtil.wait(150*i);
939-
if( BowlerDatagram.isUseBowlerV4()){
940-
//If the ping fails to get a response, try the older bowler format
941-
BowlerDatagram.setUseBowlerV4(false);
942-
}else{
943-
BowlerDatagram.setUseBowlerV4(true);
944-
}
945956
}
946957

947958
}
@@ -999,18 +1010,10 @@ public PingCommand() {
9991010
public boolean ping(MACAddress mac) {
10001011
try {
10011012
//Log.warning("Ping device:");
1002-
BowlerDatagram bd = send(new PingCommand(),mac, 1);
1013+
BowlerDatagram bd = send(new PingCommand(),mac,2);
10031014
if(bd !=null){
10041015
BowlerDatagramFactory.freePacket(bd);
10051016
return true;
1006-
}else{
1007-
1008-
bd = send(new PingCommand(),mac, 5);
1009-
if(bd !=null){
1010-
BowlerDatagramFactory.freePacket(bd);
1011-
return true;
1012-
}
1013-
10141017
}
10151018
} catch (InvalidResponseException e) {
10161019
Log.error("Invalid response from Ping ");

javasdk/NRSDK/src/com/neuronrobotics/sdk/common/BowlerDatagram.java

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -215,24 +215,26 @@ public void parse(ByteList raw) {
215215
setUpstream((raw.getByte(8)<0));
216216
// Make sure that the size of the data payload is the stated length
217217
int dataLength = raw.getUnsigned(9);
218-
int amountOfData;
219-
if( isUseBowlerV4()){
220-
amountOfData = raw.getBytes(11).length-1;
221-
}else{
222-
amountOfData = raw.getBytes(11).length;
223-
}
224-
if(dataLength != amountOfData) {
218+
//Either legacy parser or the v4 parser
219+
if((dataLength != raw.getBytes(11).length-1) && (dataLength != raw.getBytes(11).length) ) {
225220
throw new MalformattedDatagram("Datagram payload length is mismatched");
226221
}
227-
228-
229222
// Put the remaining data into the data payload
230223
setData(raw.getBytes(HEADER_SIZE,dataLength));
231224

232225
// Validate the CRC
233226
if(!CheckCRC(raw,true) ) {
234-
System.err.println("CRC failed check");
235-
throw new MalformattedDatagram("CRC does not match");
227+
Log.error("CRC failed check");
228+
if( BowlerDatagram.isUseBowlerV4()){
229+
//If the ping fails to get a response, try the older bowler format
230+
Log.error("Switching to legacy parser");
231+
BowlerDatagram.setUseBowlerV4(false);
232+
}else{
233+
Log.error("Switching to v4 parser");
234+
BowlerDatagram.setUseBowlerV4(true);
235+
}
236+
if(!CheckCRC(raw,true) )
237+
throw new MalformattedDatagram("CRC does not match");
236238
}else{
237239
setCrc(getCRC(raw));
238240
setDataCrc(raw.getByte(raw.size()-1));

0 commit comments

Comments
 (0)