工具与软件:
您好!
我们使用的是 CC2340R5器件、该器件在基于事件的模式下充当外设。 当我们按下设备上的某个按钮时、它会开始广播1秒。 但是、如果我们在1秒内按下另一个按钮或同一按钮、则会进入 ICall 中止状态。 请您告知我们此问题的可能原因吗?"
请查看我随附的图片、并提供解决方案。
谢谢、此致
Balaji Wankhede
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.
您好 Jan:
感谢您的答复。
我想说的是、按下按钮后、我们会在持续1秒的时间内进行广播、但在我们必须执行某些操作的情况下、此时它仍然在运行。在这种情况下、它将进入 iCall_abort 状态、因此请为此提供建议的解决方案。否则、我们必须使用看门狗释放此状态、如果从中止状态释放、则提供您对此问题的响应。
我已随附在我的代码中所做的更改、请检查一下、如果有任何错误、请告诉我。
按钮初始化和回调:
bStatus_t ButtonModule_init (void)
{
Button_Params 参数;
button_init();
Button_Params_(T¶ms);
//设置按钮参数
params.buttonEventMask = button_ev_clicked | button_EV_LONGCLICKED;
params.buttonCallback = Button_Callback_ c;
params.debounceDuration = button_debounce_duration;
// Button2_handle = button_open (CONFIG_Button_1、¶ms);//CONFIG_SW1
// Button1_handle = button_open (config_button_0、¶ms);
Button2_handle = button_open (CONFIG_SW2、¶ms);
button3_handle = button_open (CONFIG_SW3、¶ms);
Button1_handle = button_open (CONFIG_SW1、¶ms);
if (Button2_handle == NULL || button3_handle == NULL || Button1_handle == NULL)
{
返回失败;
}
返回成功;
}
按钮回调:
void Button_Callback_ c( Button_Handle buttonHandle, Button_Event buttonEvents )
{
buttonpresstime = button_getLastPressedDuration (buttonHandle);
if (buttonHandle == Button1_handle)
{
Battery_Voltage = BatteryMonitor_getVoltage ();
if (buttonpresstime > 100 && buttonpresstime < 2000)
{
BLEAppUtil_invokeFunctionNoData ((InvokeFromBLEAppUtilContext_t) start_adv_for_find_me);
}
if (buttonpresstime > 2000 && buttonpresstime < 15000)
{
BLEAppUtil_invokeFunctionNoData ((InvokeFromBLEAppUtilContext_t) start_adv_for_Folly_me);
}
}
}
void start_adv_for_find_me (void)
{
BLEAppUtil_advStart (peripheralAdvHandle_1、&advSetStartParamsSet_1);
BLEAppUtil_advStart (peripheralAdvHandle_2、&advSetStartParamsSet_2);
}
您好、Jan:
我怀疑当他在一秒钟内按下按钮时、先前触发的广播集仍处于活动状态。 因此、在未正确停止正在进行的广播的情况下再次调用 BLEAppUtil_advStart 可能会导致冲突。
为了解决这个问题、我建议在调用 BLEAppUtil_advStart 之前调用 BLEAppUtil_advStop。 这可确保在启动新广播之前关闭任何活动的广播句柄、从而防止重叠的广播会话。
实施此更改已解决该问题。 如果您有任何其他建议、或者采用不同的方法更合适、请告诉我。
将此标记为已解决。
此致、
Megh