mirror of
https://github.com/espressif/esp-idf.git
synced 2025-08-04 05:04:33 +02:00
component/bt: transfer bluedroid timer events to be handled by BTC task
This commit is contained in:
27
components/bt/bluedroid/btc/core/btc_alarm.c
Normal file
27
components/bt/bluedroid/btc/core/btc_alarm.c
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
#include "btc_task.h"
|
||||||
|
#include "btc_alarm.h"
|
||||||
|
|
||||||
|
void btc_alarm_handler(btc_msg_t *msg)
|
||||||
|
{
|
||||||
|
btc_alarm_args_t *arg = (btc_alarm_args_t *)msg->arg;
|
||||||
|
|
||||||
|
LOG_DEBUG("%s act %d\n", __FUNCTION__, msg->act);
|
||||||
|
|
||||||
|
if (arg->cb) {
|
||||||
|
arg->cb(arg->cb_data);
|
||||||
|
}
|
||||||
|
}
|
@@ -26,6 +26,7 @@
|
|||||||
#include "btc_gap_ble.h"
|
#include "btc_gap_ble.h"
|
||||||
#include "btc_blufi_prf.h"
|
#include "btc_blufi_prf.h"
|
||||||
#include "btc_dm.h"
|
#include "btc_dm.h"
|
||||||
|
#include "btc_alarm.h"
|
||||||
#include "bta_gatt_api.h"
|
#include "bta_gatt_api.h"
|
||||||
#if CONFIG_CLASSIC_BT_ENABLED
|
#if CONFIG_CLASSIC_BT_ENABLED
|
||||||
#include "btc_gap_bt.h"
|
#include "btc_gap_bt.h"
|
||||||
@@ -48,6 +49,7 @@ static btc_func_t profile_tab[BTC_PID_NUM] = {
|
|||||||
[BTC_PID_SPPLIKE] = {NULL, NULL},
|
[BTC_PID_SPPLIKE] = {NULL, NULL},
|
||||||
[BTC_PID_BLUFI] = {btc_blufi_call_handler, btc_blufi_cb_handler },
|
[BTC_PID_BLUFI] = {btc_blufi_call_handler, btc_blufi_cb_handler },
|
||||||
[BTC_PID_DM_SEC] = {NULL, btc_dm_sec_cb_handler },
|
[BTC_PID_DM_SEC] = {NULL, btc_dm_sec_cb_handler },
|
||||||
|
[BTC_PID_ALARM] = {btc_alarm_handler, NULL },
|
||||||
#if CONFIG_CLASSIC_BT_ENABLED
|
#if CONFIG_CLASSIC_BT_ENABLED
|
||||||
[BTC_PID_GAP_BT] = {btc_gap_bt_call_handler, NULL },
|
[BTC_PID_GAP_BT] = {btc_gap_bt_call_handler, NULL },
|
||||||
[BTC_PID_PRF_QUE] = {btc_profile_queue_handler, NULL },
|
[BTC_PID_PRF_QUE] = {btc_profile_queue_handler, NULL },
|
||||||
|
30
components/bt/bluedroid/btc/include/btc_alarm.h
Normal file
30
components/bt/bluedroid/btc/include/btc_alarm.h
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef __BTC_ALARM_H__
|
||||||
|
#define __BTC_ALARM_H__
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
#include "alarm.h"
|
||||||
|
|
||||||
|
/* btc_alarm_args_t */
|
||||||
|
typedef struct {
|
||||||
|
osi_alarm_callback_t cb;
|
||||||
|
void *cb_data;
|
||||||
|
} btc_alarm_args_t;
|
||||||
|
|
||||||
|
void btc_alarm_handler(btc_msg_t *msg);
|
||||||
|
|
||||||
|
#endif /* __BTC_ALARM_H__ */
|
@@ -44,6 +44,7 @@ typedef enum {
|
|||||||
BTC_PID_SPPLIKE,
|
BTC_PID_SPPLIKE,
|
||||||
BTC_PID_BLUFI,
|
BTC_PID_BLUFI,
|
||||||
BTC_PID_DM_SEC,
|
BTC_PID_DM_SEC,
|
||||||
|
BTC_PID_ALARM,
|
||||||
#if CONFIG_CLASSIC_BT_ENABLED
|
#if CONFIG_CLASSIC_BT_ENABLED
|
||||||
BTC_PID_GAP_BT,
|
BTC_PID_GAP_BT,
|
||||||
BTC_PID_PRF_QUE,
|
BTC_PID_PRF_QUE,
|
||||||
|
@@ -27,6 +27,8 @@
|
|||||||
#include "freertos/FreeRTOSConfig.h"
|
#include "freertos/FreeRTOSConfig.h"
|
||||||
#include "freertos/xtensa_api.h"
|
#include "freertos/xtensa_api.h"
|
||||||
#include "rom/ets_sys.h"
|
#include "rom/ets_sys.h"
|
||||||
|
#include "btc_task.h"
|
||||||
|
#include "btc_alarm.h"
|
||||||
|
|
||||||
#define RTC_TIMER_TICKS_TO_MS(ticks) (((ticks/625)<<1) + (ticks-(ticks/625)*625)/312)
|
#define RTC_TIMER_TICKS_TO_MS(ticks) (((ticks/625)<<1) + (ticks-(ticks/625)*625)/312)
|
||||||
|
|
||||||
@@ -122,17 +124,21 @@ static struct alarm_t *alarm_cbs_lookfor_available(void)
|
|||||||
static void alarm_cb_handler(TimerHandle_t xTimer)
|
static void alarm_cb_handler(TimerHandle_t xTimer)
|
||||||
{
|
{
|
||||||
struct alarm_t *alarm;
|
struct alarm_t *alarm;
|
||||||
|
|
||||||
if (!xTimer) {
|
if (!xTimer) {
|
||||||
LOG_ERROR("TimerName: NULL\n");
|
LOG_ERROR("TimerName: NULL\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
alarm = pvTimerGetTimerID(xTimer);
|
alarm = pvTimerGetTimerID(xTimer);
|
||||||
LOG_DEBUG("TimerID %p, Name %s\n", alarm, pcTimerGetTimerName(xTimer));
|
LOG_DEBUG("TimerID %p, Name %s\n", alarm, pcTimerGetTimerName(xTimer));
|
||||||
if (alarm->cb) {
|
|
||||||
alarm->cb(alarm->cb_data);
|
btc_msg_t msg;
|
||||||
}
|
btc_alarm_args_t arg;
|
||||||
|
msg.sig = BTC_SIG_API_CALL;
|
||||||
|
msg.pid = BTC_PID_ALARM;
|
||||||
|
arg.cb = alarm->cb;
|
||||||
|
arg.cb_data = alarm->cb_data;
|
||||||
|
btc_transfer_context(&msg, &arg, sizeof(btc_alarm_args_t), NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
osi_alarm_t *osi_alarm_new(char *alarm_name, osi_alarm_callback_t callback, void *data, period_ms_t timer_expire)
|
osi_alarm_t *osi_alarm_new(char *alarm_name, osi_alarm_callback_t callback, void *data, period_ms_t timer_expire)
|
||||||
|
Reference in New Issue
Block a user