微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > app断开关机问题

app断开关机问题

时间:10-02 整理:3721RD 点击:

你好,yan

       app断开关机问题一直找不到原因,用keyfob工程做防丢器,app这端按下按钮。发给防丢器一个数据。防丢器这端接到数据后,调用
GAPRole_TerminateConnection()函数主动断开。显示也是正确的,确实断开了。我搜遍跟工程文件有关的定时事件,全部关掉。但总进不了
pm3,关不了机。甚至灯都灭不掉。

             HalLedSet( HAL_LED_2, HAL_LED_MODE_OFF );
             HalLedSet( HAL_LED_1, HAL_LED_MODE_OFF );

             osal_stop_timerEx (Hal_TaskID, HAL_SLEEP_TIMER_EVENT);
             osal_stop_timerEx(Hal_TaskID, HAL_LED_BLINK_EVENT);
             osal_stop_timerEx( Hal_TaskID, HAL_KEY_EVENT );
             osal_stop_timerEx( keyfobapp_TaskID,KFD_START_DEVICE_EVT );
             osal_stop_timerEx( keyfobapp_TaskID,KFD_BATTERY_CHECK_EVT );
             osal_stop_timerEx( keyfobapp_TaskID,KFD_ACCEL_READ_EVT );
             osal_stop_timerEx( keyfobapp_TaskID,KFD_TOGGLE_BUZZER_EVT );
             osal_stop_timerEx( keyfobapp_TaskID,KFD_ADV_IN_CONNECTION_EVT );
             osal_stop_timerEx( keyfobapp_TaskID,KFD_POWERON_LED_TIMEOUT_EVT );
             osal_stop_timerEx(Hal_TaskID, HAL_PWRMGR_CONSERVE_EVENT);
             osal_stop_timerEx( gapRole_TaskID, START_ADVERTISING_EVT);
             osal_stop_timerEx( gapRole_TaskID, CONN_PARAM_TIMEOUT_EVT);
             osal_stop_timerEx( gapRole_TaskID, RSSI_READ_EVT);
             osal_stop_timerEx( gapRole_TaskID, START_CONN_UPDATE_EVT );

也没有类似performPeriodicTask()这种周期性的传输数据。
是不是还有其它的影响进入pm3?比如I/O口设置之类是否有影响?实在找不到原因。

谢谢

祝好

lincoln

首先要打开power_save,无连接,然后关闭广播就可以了。不需要停止系统的Event

你好,fred wang

      打开POWER_SAVING,》》》》除宏定义打开了POWER_SAVING外,还要做其它什么吗?

     关闭广播就可以了》》》用这个  osal_stop_timerEx( gapRole_TaskID, START_ADVERTISING_EVT);还是有其它函数调用。

谢谢

祝好

lincoln

做如下设置:initial_advertising_enable = false;GAPRole_SetParameter( GAPROLE_ADVERT_ENABLED, sizeof( uint8 ), &initial_advertising_enable );

还是关不掉呀?帮帮我。

谢了!

祝好

lincoln

关不掉的情况没见过,你要检查下代码,看看是不是还有打开广播的事件在运行。

      //停止广播
      uint8 new_adv_enabled_status = FALSE;
      bStatus_t status = GAPRole_SetParameter( GAPROLE_ADVERT_ENABLED, sizeof( uint8 ), &new_adv_enabled_status );

 

谢了,fred wang,关掉了。是我无意中把我设置广播30秒调用GAP_SetParamValue(TGAP_LIM_ADV_TIMEOUT, 30)给屏蔽掉了。又恢复到3分钟广播,结果到30秒还一直在广播。一直不关机。

有几个问题一直困扰我。

    1)公司现在固件、app同时跟客户定制。因此app关机是透过自己设置的uuid,特征值来发送一个标志值。当从机接到主机的标志就做断开链接,关广播,打开低功耗。按你所讲的,正常关机了。公司原来给一些客户做定制,app是其它公司帮做的,工程师已离职。客户要个新功能,我在固件里面增加一个uuid,特征值。没加这个时,app这边按键能关从机。加了再测试发现不能关机了。我把这个uuid屏蔽掉,app关机就正常了。我想app那边关机应该是主动发了一个断开连接指令。是不是我处理这个uuid时,改变了什么条件或状态。让主机app无法断开。还是我增加uuid后 要做多做些什么处理才能关机。手机app关机的api断开指令好象可以不要透过 uuid来处理。问过yan,他讲防止系统等待,触发timer之类。仔细排查,没做系统等待,触发timer之类。找不到原因。是否有办法能确定它是否透过uuid处理还是没有,有uuid就如何跟踪到那个uuid。没有,怎么判断它是在我们这边哪个状态下操作的。这样我们可以在那个状态下处理事件时,固件这边自行关广播,打开低功耗,断开连接也可以关机。

  2)我想用sniffer空中抓包跟踪,把从机设置一个频率广播,sniffer同频道。 除了断开时与连接时能抓到到广播包,包括一些lldata那些连接参数设置。数据通讯一直抓不到,不知哪里还有什么要求。如何能抓到连接后相互之间的通讯数据?

 3)当关闭app,断开连接时,系统好像进入了GAPROLE_ADVERTISING状态,led闪烁,不管如何调用这两个函数

osal_start_timerEx( keyfobapp_TaskID, KFD_TOGGLE_BUZZER_EVT, 800 );   

  keyfobapp_PerformAlert();       

把报警状态keyfobAlertState设成1或2,buzzer_state设成1,就是不报警,也关不掉led。排查很久,搞不清原因。

谢了。

祝好

lincoln

Fred Wang,好,问一个问题,就是停止广播后,也断开了连接。但再按一下键,马上就连上了。这说明应该在配对状态。而不是关机状态。停止广播,断开连接后。怎么才知道它进入关机了。谢了。

祝好

林肯

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top