Skip to content
This repository has been archived by the owner on Jul 19, 2022. It is now read-only.

Commit

Permalink
Fixed EMG data erroneously being converted from signed byte to unsign…
Browse files Browse the repository at this point in the history
…ed integer.
  • Loading branch information
d4rken committed Sep 4, 2015
1 parent d0c9bf1 commit c602f92
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 12 deletions.
12 changes: 6 additions & 6 deletions myolib/src/main/java/eu/darken/myolib/processor/emg/EmgData.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,11 @@
* Class to hold EMG data from one of the Myo's 8 EMG sensors.
*/
public class EmgData {
private final int[] mData;
private final byte[] mData;
private final long mTimestamp;
private final String mDeviceAddress;

public EmgData(String deviceAddress, long timestamp, int[] data) {
public EmgData(String deviceAddress, long timestamp, byte[] data) {
mDeviceAddress = deviceAddress;
mTimestamp = timestamp;
mData = data;
Expand All @@ -26,18 +26,18 @@ public String getDeviceAddress() {
}

/**
* @return Array of int values ranging from 0 to 255.
* @see <a href="https://github.com/thalmiclabs/myo-bluetooth/blob/master/myohw.h">Myo protocol specification</a>
* @return Array of byte values ranging from -128 to 127.
* @see <a href="https://github.com/thalmiclabs/myo-bluetooth/blob/master/myohw.h#L371">Myo protocol specification</a>
*/
public int[] getData() {
public byte[] getData() {
return mData;
}

@Override
public String toString() {
StringBuilder builder = new StringBuilder();
for (int b : mData)
builder.append(String.format("%03d", b)).append(" ");
builder.append(String.format("%+04d", b)).append(" ");
return builder.toString();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,14 +25,12 @@ public EmgProcessor() {
}

protected void doProcess(BaseDataPacket packet) {
int[] data1 = new int[8];
for (int i = 0; i < 8; i++)
data1[i] = packet.getData()[i] & 0xFF;
byte[] data1 = new byte[8];
System.arraycopy(packet.getData(), 0, data1, 0, 8);
EmgData emgData1 = new EmgData(packet.getDeviceAddress(), packet.getTimeStamp(), data1);

int[] data2 = new int[8];
for (int i = 8; i < 16; i++)
data2[i - 8] = packet.getData()[i] & 0xFF;
byte[] data2 = new byte[8];
System.arraycopy(packet.getData(), 8, data2, 0, 8);
EmgData emgData2 = new EmgData(packet.getDeviceAddress(), packet.getTimeStamp() + 5, data2);

for (DataListener listener : getDataListeners()) {
Expand Down

0 comments on commit c602f92

Please sign in to comment.