BLEを介してAndroid携帯からNordic nRF51デバイスにデータを送受信する特性を使用しています。Android BLE setValueが間違った値を書き込んでいます
BLEにはCRCコードが実装されており、パケットの再送信が使用されているため、データ転送は信頼できると見なすことができます。
ただし、書き込み操作が成功したかどうかを確認しても、Androidが特性に書き込めないことがあります。
のAndroidコード:
byte value[] = new byte[3 + transaction.data.length];
value[PKT_ID] = transaction.id; //Event ID
value[PKT_TWI_WRITE_DEVADD] = transaction.deviceAddress; //Address
for (int i = 0; i < transaction.data.length; i++)
value[i + PKT_TWI_WRITE_DATA] = transaction.data[i];
while(!charac.setValue(value) || (value[PKT_ID]&0xFF) != ((charac.getValue())[PKT_ID]&0xFF));
charac.setWriteType(BluetoothGattCharacteristic.WRITE_TYPE_NO_RESPONSE);
boolean status = false;
while(!(status = gattInstance.writeCharacteristic(charac)));
System.out.println("Sent id " + (value[PKT_ID]&0xFF) + " char val:" + ((charac.getValue())[PKT_ID]&0xFF));
出力例:
I/System.out: Sent id 2 char val:2
I/System.out: Sent id 3 char val:169
I/System.out: Sent id 4 char val:4
I/System.out: Sent id 5 char val:5
何をして、これを引き起こしている可能性、そしてどのようにそれを修正することができますか?