diff --git a/app/build.gradle b/app/build.gradle index 027d93daafacb3fecbcc0d36f3fc6073a5eeb215..b48e315c651f14dea31f0c579dac6a2ec348761c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -55,7 +55,7 @@ def getBugfenderApiKey() { android { compileSdkVersion 23 - buildToolsVersion "23.0.3" + buildToolsVersion '25.0.0' // FIXME - replace with URLConnection. This is used in ManageCNLActivity. useLibrary 'org.apache.http.legacy' diff --git a/app/src/main/java/info/nightscout/android/medtronic/message/pump/ReadHistoryBaseRequestMessage.java b/app/src/main/java/info/nightscout/android/medtronic/message/pump/ReadHistoryBaseRequestMessage.java index 4a81c27ff3a23702e4df1d601869becbf38cf6dd..39e3168116d00493128dc5d6be681199ab39071b 100644 --- a/app/src/main/java/info/nightscout/android/medtronic/message/pump/ReadHistoryBaseRequestMessage.java +++ b/app/src/main/java/info/nightscout/android/medtronic/message/pump/ReadHistoryBaseRequestMessage.java @@ -165,9 +165,6 @@ public abstract class ReadHistoryBaseRequestMessage<T extends AbstractResponseMe Log.d(TAG, "*** GOT A MULTIPACKET SEGMENT "+ packetNumber + ", count:" + this.segmentCount()); Log.d(TAG, "*** PAYLOAD:" + HexDump.dumpHexString(segmentPayload)); - // multiByteSegments don't always come back in a consecutive order. - this.segments[packetNumber] = segmentPayload; - if (packetNumber == this.lastPacketNumber() && segmentPayload.length != this.lastPacketSize) { throw new InvalidMessageException("Multipacket Transfer last packet size mismatch"); @@ -183,9 +180,16 @@ public abstract class ReadHistoryBaseRequestMessage<T extends AbstractResponseMe throw new InvalidMessageException("Total segment size mismatch"); } + ByteBuffer buffer = ByteBuffer.allocate(segmentPayload.length); + buffer.order(ByteOrder.BIG_ENDIAN); + buffer.put(segmentPayload); + + // multiByteSegments don't always come back in a consecutive order. + this.segments[packetNumber] = buffer.array(); + // TODO - all of this should go into different classes... // Decompress the message - if (segmentPayload.readUInt16BE(0x00) === 0x030E) { + if ((buffer.getInt(0x00) & 0xffffffffl) == 0x030E) { const HEADER_SIZE = 12; // TODO should be a static get. // It's an UnmergedHistoryUpdateCompressed response. We need to decompress it const dataType = segmentPayload[0x02]; // Returns a HISTORY_DATA_TYPE @@ -244,8 +248,6 @@ public abstract class ReadHistoryBaseRequestMessage<T extends AbstractResponseMe AckMultipacketCommand.SEGMENT_COMMAND.SEND_NEXT_SEGMENT) .send(hidDevice) .then(() => resolve()); - } else { - resolve(); } } diff --git a/build.gradle b/build.gradle index fa343792dd739dcc26b1521ca4931cdda922476f..887ff569940c12333cf509267d38bd90be0df977 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:2.2.3' + classpath 'com.android.tools.build:gradle:2.3.0' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files classpath 'io.realm:realm-gradle-plugin:2.2.2' diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 3d5435e07e9964062e47fc0426eaa27552a17041..9644428857a8cff60fdec73ea06b81b5bdd4e42a 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Sat Nov 12 11:44:13 AEDT 2016 +#Fri Mar 03 15:37:47 CET 2017 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip