This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC2652R_BLE問題

Other Parts Discussed in Thread: CC2640R2F, CC2652R

HI TI

想請教一下

1:如何主動去查BLE裝置現在有沒有被連接到?

因為有發現到說SimplePeripheral_processGapMessage內的

GAP_LINK_ESTABLISHED_EVENT 跟GAP_LINK_TERMINATED_EVENT

這兩個CASE好像並不一定在手機斷開或重新連線時會有被觸發的跡象

開機後第一次(連接/主動斷開)到第二次(連接/主動斷開)會有反應,但第三次(連接/主動斷開)後就幾乎沒反應了??

所以想知道說有沒有主動的手段去知道說現在有沒有手機在連線中??

2:如何主動廣播??因為在開機後好像有一個時間後再用手機搜尋時

會發現裝置不廣播了?? 所以想請教一下有沒有主動的方法重新啟動廣播

謝謝.

  • 1、CC2640R2F有没有查询目前状态的API,比如是否连接之类
    可以自己添加状态查询的接口,如在simple_peripheral.h中有

    /// @brief GAP Peripheral Role States.
    typedef enum
    {
    GAPROLE_INIT = 0, //!< Waiting to be started
    GAPROLE_STARTED, //!< Started but not advertising
    GAPROLE_ADVERTISING, //!< Currently Advertising
    GAPROLE_ADVERTISING_NONCONN, //!< Currently using non-connectable Advertising
    GAPROLE_WAITING, //!< Device is started but not advertising, is in waiting period before advertising again
    GAPROLE_WAITING_AFTER_TIMEOUT, //!< Device just timed out from a connection but is not yet advertising, is in waiting period before advertising again
    GAPROLE_CONNECTED, //!< In a connection
    GAPROLE_CONNECTED_ADV, //!< In a connection + advertising
    GAPROLE_ERROR //!< Error occurred - invalid state
    } gaprole_States_t;

    可以在simple_peripheral.c中的回调函数 SimpleBLEPeripheral_processStateChangeEvt 中进行修改

    2、使用的是simple_peripheral例程吗?可以设置广播参数
  • HI VIKI

    我是使用CC26X2 CC13X3的SDK內的simple_peripheral例程
    CHIP 用的是CC2652R
    我後來發現是因為simple_peripheral例程內是提供FFF1及FFF3提供給手機做寫入DATA
    而我在寫入FFF3後(自己的DATA),似乎就會破壞"連線及斷線的偵測",所以FFF3是不是有和其他的功能有做連動??
    導致我一寫入後"連線及斷線的偵測"就沒有反應.
    後來是改寫入FFF1才正常.

    謝謝
  • Characteristic 3 (UUID: FFF3)
    This characteristic has write property only. Its value can be written to following the same procedure as is detailed for characteristic 1. It has a default value of 0x03.

    照理可以写,是不是设备处于连接状态没有被搜到?
  • HI VIKI

    不是能不能寫入FFF3的問題.
    而是一寫入FFF3我放在下面做
    連線斷線偵測的部份就不被執行了...................
    但我不是寫入一個BYTE,我大概寫入30個BYTE

    //--------------------------------------------------------
    static void SimplePeripheral_processGapMessage(gapEventHdr_t *pMsg)裡面的
    case GAP_LINK_ESTABLISHED_EVENT:
    跟 case GAP_LINK_TERMINATED_EVENT:
    //--------------------------------------------------------

    在沒寫入FFF3之前,這段CODE都正常被執行.
    一但寫入FFF3之後,這段CODE,手機連線斷線就不被執行.
    後來才把自己的DATA(30個BYTE)寫入FFF1, 沒有影響到這段CODE.

    謝謝.
  • 你有试过写入少量数据测试一下吗?或者你方便把这段数据及代码发给我测试一下吗?
  • 你这是已经写入FFE3的代码吗?如果改动不多的话,直接把写入FFE3的那部分代码给我,然后简要说一下你的测试步骤,我看下是否能复现问题
  • HI VIKI

    這個CC2652R是從機呀??
    寫入是手機APP寫入的??
    應該是從機被寫入FFF3,您找不到嗎???

    測試的話,

    我有在以下連線及斷線放入從UART1丟出DEBUG MESSGAE的部份.

    static void SimplePeripheral_processGapMessage(gapEventHdr_t *pMsg)裡面的
    case GAP_LINK_ESTABLISHED_EVENT:
    跟 case GAP_LINK_TERMINATED_EVENT:

    您可以試一下寫入FFF3及寫入FFF1後,DEBUG MESSAGE的變化.


    謝謝.

  • 我打不开你的文件,一直报错

  • HI VIKI

    你有沒有試先CLEAN TARGER,把上次組譯的部份先清掉,重新組譯看看??

    這個只是最後的結果, 錯的地方在那裡看不到......