Skip to content

Commit 782181a

Browse files
authored
Merge pull request #107 from ShimmerEngineering/DEV-370
DEV-370
2 parents dfc1531 + b0f788e commit 782181a

File tree

2 files changed

+57
-1
lines changed
  • ShimmerAndroidInstrumentDriver/ShimmerAndroidInstrumentDriver

2 files changed

+57
-1
lines changed

ShimmerAndroidInstrumentDriver/ShimmerAndroidInstrumentDriver/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ publishing {
8383
bar(MavenPublication) {
8484
groupId = 'com.shimmerresearch' // Replace with your package's group/organization name
8585
artifactId = 'shimmerandroidinstrumentdriver' // Replace with the name of your package
86-
version = '3.2.5_beta' // Replace with your package version
86+
version = '3.2.6_beta' // Replace with your package version
8787
artifact("$buildDir/outputs/aar/${getArtificatId()}-release.aar")
8888
}
8989
}

ShimmerAndroidInstrumentDriver/ShimmerAndroidInstrumentDriver/src/main/java/com/shimmerresearch/android/Shimmer.java

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1922,4 +1922,60 @@ public void stateHandler(Object obj){
19221922
//sendMsgToHandlerListTarget(ShimmerBluetooth.MSG_IDENTIFIER_STATE_CHANGE, obj);
19231923
}
19241924

1925+
private static final byte PING_BYTE = (byte) 0xB5;
1926+
private java.util.concurrent.ScheduledExecutorService pingExec;
1927+
private java.util.concurrent.ScheduledFuture<?> pingTask;
1928+
1929+
public void startPingTask() {
1930+
if (pingExec != null && !pingExec.isShutdown()) return;
1931+
1932+
pingExec = java.util.concurrent.Executors.newSingleThreadScheduledExecutor(r -> {
1933+
Thread t = new Thread(r, "ShimmerPing");
1934+
t.setDaemon(true);
1935+
android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_URGENT_AUDIO);
1936+
return t;
1937+
});
1938+
1939+
// schedule every 2 seconds
1940+
pingTask = pingExec.scheduleWithFixedDelay(() -> {
1941+
try {
1942+
if (mIsStreaming)
1943+
{
1944+
write(new byte[]{PING_BYTE});
1945+
} else {
1946+
stopPingTask();
1947+
}
1948+
} catch (Throwable e) {
1949+
// If device disconnects, stop pings
1950+
stopPingTask();
1951+
}
1952+
}, 2, 2, java.util.concurrent.TimeUnit.SECONDS);
1953+
}
1954+
1955+
public void stopPingTask() {
1956+
if (pingTask != null) pingTask.cancel(true);
1957+
if (pingExec != null) {
1958+
pingExec.shutdownNow();
1959+
pingExec = null;
1960+
}
1961+
}
1962+
1963+
1964+
@Override
1965+
public void startStreaming() throws ShimmerException {
1966+
super.startStreaming();
1967+
if (getHardwareVersion()== ShimmerVerDetails.HW_ID.SHIMMER_3R
1968+
&& isThisVerCompatibleWith(ShimmerVerDetails.FW_ID.LOGANDSTREAM, 1, 0, 46)) {
1969+
startPingTask();
1970+
}
1971+
}
1972+
1973+
@Override
1974+
public void stopStreaming(){
1975+
super.stopStreaming();
1976+
if (getHardwareVersion()== ShimmerVerDetails.HW_ID.SHIMMER_3R
1977+
&& isThisVerCompatibleWith(ShimmerVerDetails.FW_ID.LOGANDSTREAM, 1, 0, 46)) {
1978+
stopPingTask();
1979+
}
1980+
}
19251981
}

0 commit comments

Comments
 (0)