在Android上从TI BLE CC2540读取值失败,状态= 10

时间:2014-06-01 07:49:14

标签: android bluetooth-lowenergy android-bluetooth

我有一个带CC2540芯片的设备,我尝试连接并从Android读取/写入数据。

设备被发现,我能够连接,但是当我尝试发送读取命令时,我得到状态= 10:

public void onCharacteristicRead(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, int status)

我使用了“BLE传感器标签”源代码并根据我的更改了UUID - 我得到了相同的结果

我使用了Google Play的“BLE设备监视器”应用程序 - 我得到相同的结果(附加屏幕截图)

我的问题是:

  1. “status = 10”代表什么?

  2. 它来自哪里?芯片?的Android?

  3. 如何调试?

  4. 我有一个iPhone设备,效果很好......

    enter image description here

1 个答案:

答案 0 :(得分:1)

  

" status = 10"代表什么?

它可以是任何真实的,因为您无法访问BLE设备监视器的来源。您可以找到通用的GATT个人资料状态代码here(BluetoothGatt)

运行TI" BleSensorTag&#34>时,您是否看到相同的错误代码?来源示例?

  

它来自哪里?芯片? Android的?   怎么调试呢?

这是Android的BluetoothGattCallback()函数从芯片通过BluetoothAdapter访问它的解释。

我建议专注于" BleSensorTag"源代码; 对于状态代码find

private BluetoothGattCallback mGattCallbacks = new BluetoothGattCallback() 

;" BluetoothLeService.java"关于第82行。您获取状态代码的位置以及已覆盖的回调随后会注册到BluetoothDevice对象的connectGatt()方法。

mBluetoothGatt = device.connectGatt(this, false, mGattCallbacks)

如果可能的话,我还要确保我的BLE数据包使用TI的sniffer格式正确。如果不是,你也可以调试BluetoothAdapter.LeScanCallback

中出现的内容

再次出现在" BleSensorTag"在MainActivity.java中查找public void onLeScan(final BluetoothDevice device, final int rssi, byte[] scanRecord)方法。并改变;

public void onLeScan(final BluetoothDevice device, final int rssi, byte[] scanRecord) {
      runOnUiThread(new Runnable() {
        public void run() {
            // Filter devices

为:

public void onLeScan(final BluetoothDevice device, final int rssi, byte[] scanRecord) {

      final byte[] scanRecordStream = scanRecord;

      runOnUiThread(new Runnable() {
        public void run() {
            // Filter devices

            Log.i(TAG, "scanRecord:" + Conversion.BytetohexString(scanRecordStream, scanRecordStream.length));

rest是相同的,你应该在logcat中看到你的字节流。

[编辑] 根据Core Bluetooth Spec V4.0

,这是 LE通用数据包结构

enter image description here

以下是BLE数据包字节结构的示例,我将其添加为一个示例,以防您在控制台上记录数据包的长度并将其作为参考时使用。< / p>

可以预期BLE广告包具有通用形式:

02 01 06 1A FF 4C 00 02 15: iBeacon prefix (fixed)
B9 40 7F 30 F5 F8 46 6E AF F9 25 55 6B 57 FE 6D: proximity UUID (here: Estimote’s fixed UUID)
00 49: major
00 0A: minor
C5: 2’s complement of measured TX power

快乐的调试。