Quantcast
Channel: 蓝牙论坛 - 最近的话题
Viewing all articles
Browse latest Browse all 7485

multi role as central

$
0
0

Hi all,

    我的環境如下:

central:  cc2640 multi role(服務是 0xFFF0,兩個特徵值 0xFFF1(read/write),0xFFF2(notification))

peripheral: cc2640 simple_peripheral(服務是 0xFFF0,只開一個特徵值 0xFFF1)

peripheral  已經調適完成,使用手機可以正常連接、使用

但 central 跟 peripheral 連接就有問題,當連接後,會進入  multi_role_processGATTDiscEvent(),

    else if (discState == BLE_DISC_STATE_SVC)
    {
        // Service found, store handles
        if (pMsg->method == ATT_FIND_BY_TYPE_VALUE_RSP &&
            pMsg->msg.findByTypeValueRsp.numInfo > 0)
        {
            svcStartHdl = ATT_ATTR_HANDLE(pMsg->msg.findByTypeValueRsp.pHandlesInfo, 0);
            svcEndHdl = ATT_GRP_END_HANDLE(pMsg->msg.findByTypeValueRsp.pHandlesInfo, 0);
        }

        // If procedure complete
        if (((pMsg->method == ATT_FIND_BY_TYPE_VALUE_RSP) &&
            (pMsg->hdr.status == bleProcedureComplete))  ||
            (pMsg->method == ATT_ERROR_RSP))
        {
            if (svcStartHdl != 0)
            {
                attReadByTypeReq_t req;

                // Discover characteristic
                discState = BLE_DISC_STATE_CHAR;

                req.startHandle = svcStartHdl;
                req.endHandle = svcEndHdl;
                req.type.len = ATT_BT_UUID_SIZE;
                req.type.uuid[0] = LO_UINT16(SIMPLEPROFILE_CHAR1_UUID);
                req.type.uuid[1] = HI_UINT16(SIMPLEPROFILE_CHAR1_UUID);

                VOID GATT_ReadUsingCharUUID(connHandle, &req, selfEntity);
            }
        }
    }

得到

svcStartHdl = 28

svcEndHdl = 65535

這兩個值表示什麼?

並且我一直無法進入底下的判斷式內,pMsg->method 始終為 1

    else if (discState == BLE_DISC_STATE_CHAR)
    {
        // Characteristic found, store handle
        if ((pMsg->method == ATT_READ_BY_TYPE_RSP) &&
            (pMsg->msg.readByTypeRsp.numPairs > 0))
        {
            //find index to store handle
            uint8_t connIndex = multi_role_mapConnHandleToIndex(connHandle);
            charHdl[connIndex] = BUILD_UINT16(pMsg->msg.readByTypeRsp.pDataList[0],
                                                pMsg->msg.readByTypeRsp.pDataList[1]);

            //Display_print0(dispHandle, LCD_PAGE6, 0, "Simple Svc Found");
        }

        discState = BLE_DISC_STATE_IDLE;
    }

想請問以上是什麼問題,我有哪些沒注意到的,該如何解決?

謝謝


Viewing all articles
Browse latest Browse all 7485

Trending Articles