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.

CC2540 自身如何读取 RSSI

HCI_ReadRssiCmd();应该使用到这个函数吧,可是不知道这个函数如何使用?

GAPRole_GetParameter(GAPROLE_CONNHANDLE, &temp1 );  

temp2 = HCI_ReadRssiCmd(temp1);

这样试了一下可是不太对,似乎有回调函数,但是不知道怎么用,求高人指点。

  • GAPRole_SetParameter(GAPROLE_RSSI_READ_RATE,sizeof(uint16),&desired_rssi_rate);

    这个是设置RSSI的读取速率,默认是0,所以你要设一个非零值,然后如下,就不详细列了,你跟一下GAPROLE_RSSI_READ_RATE应该差不多就明白了。

    static void RssiRead( int8 newRSSI );
    static void RssiRead( int8 newRSSI )
    {
      //你的处理
    }



    // GAP Role Callbacks
    static gapRolesCBs_t keyFob_PeripheralCBs =
    {
      peripheralStateNotificationCB,  // Profile State Change Callbacks
      RssiRead                // When a valid RSSI is read from controller
    };

  • 谢谢了,已经解决问题了

  • 怎么解决的啊?能指导下解决方案吗?谢谢

  • 我在void SensorTag_Init( uint8 task_id )

    增加了:GAPRole_SetParameter(GAPROLE_RSSI_READ_RATE,sizeof(uint16),&desired_rssi_rate);

    static void RssiRead( int8 newRSSI );
    static void RssiRead( int8 newRSSI )
    {
      这里用什么函数?没理解
    }



    // GAP Role Callbacks
    static gapRolesCBs_t keyFob_PeripheralCBs =
    {
      peripheralStateNotificationCB,  // Profile State Change Callbacks
      RssiRead                // When a valid RSSI is read from controller
    };

  • 你好,TY先生,我想你那个回调函数static void RssiRead( int8 newRSSI),应该改成static void RssiRead( uint16 connHandle, int8 newRSSI),应该读RSSI是通过底层来完成的,TI的程序只提供一个回调函数来处理,底层传上来的参数应该是两个。

  • static void RssiRead( int8 newRSSI )是一个回调函数,在连接状态下,底层按照设定的时间间隔,读取RSSI的值。然后调用你设置的回调函数,把参数传newRSSI.函数体就是你自己的程序代码,主要是值跟新RSSI后,你想做什么事情。

  • 您好,请问您的这个代码是在SimpleBLEPeripheral工程里改的吗?我想实现主从连接后,从机测读取并显示出RSSI值(买回来的板子是主机的LCD显示RSSI值)。然后我就按您的方法改了,发现desired_rssi_rate是未定义的,估计您不是在SimpleBLEPeripheral工程里。请问,我这种情况,如何实现呀?十分感谢!

  • 楼上是在sensortag例程里改的,SimplePeripheral例程里没有定义变量 你自己定义一下,测试一下,这个就是读取自身RSSI值的,希望你早日解决!

  • 谢谢楼上的朋友