diff options
Diffstat (limited to 'src/sample/ble_audio_ba/app_task.c')
-rw-r--r-- | src/sample/ble_audio_ba/app_task.c | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/src/sample/ble_audio_ba/app_task.c b/src/sample/ble_audio_ba/app_task.c new file mode 100644 index 0000000..ad37b38 --- /dev/null +++ b/src/sample/ble_audio_ba/app_task.c @@ -0,0 +1,108 @@ +/** +***************************************************************************************** +* Copyright(c) 2017, Realtek Semiconductor Corporation. All rights reserved. +***************************************************************************************** + * @file app_task.c + * @brief Routines to create App task and handle events & messages + * @author jane + * @date 2017-06-02 + * @version v1.0 + ************************************************************************************** + * @attention + * <h2><center>© COPYRIGHT 2017 Realtek Semiconductor Corporation</center></h2> + ************************************************************************************** + */ + +/*============================================================================* + * Header Files + *============================================================================*/ +#include "os_msg.h" +#include "os_task.h" +#include "trace.h" +#include "gap.h" +#include "gap_le.h" +#include "data_uart.h" +#include "user_cmd_parse.h" +#include "user_cmd.h" +#include "app_msg.h" +#include "ble_audio_ba_app.h" +#include "app_task.h" + +/** @defgroup BT5_CENTRAL_APP_TASK BT5 Central App Task + * @brief This file handles the implementation of application task related functions. + * + * Create App task and handle events & messages + * @{ + */ +/*============================================================================* + * Macros + *============================================================================*/ +#define APP_TASK_PRIORITY 1 //!< Task priorities +#define APP_TASK_STACK_SIZE 256 * 8 //!< Task stack size +#define MAX_NUMBER_OF_GAP_MESSAGE 0x20 //!< GAP message queue size +#define MAX_NUMBER_OF_IO_MESSAGE 0x20 //!< IO message queue size +#define MAX_NUMBER_OF_EVENT_MESSAGE (MAX_NUMBER_OF_GAP_MESSAGE + MAX_NUMBER_OF_IO_MESSAGE) //!< Event message queue size + +/*============================================================================* + * Variables + *============================================================================*/ +void *app_task_handle; //!< APP Task handle +void *evt_queue_handle; //!< Event queue handle +void *io_queue_handle; //!< IO queue handle + +/*============================================================================* + * Functions + *============================================================================*/ +void app_main_task(void *p_param); + +/** + * @brief Initialize App task + * @return void + */ +void app_task_init() +{ + os_task_create(&app_task_handle, "app", app_main_task, 0, APP_TASK_STACK_SIZE, + APP_TASK_PRIORITY); +} + +/** + * @brief App task to handle events & messages + * @param[in] p_param Parameters sending to the task + * @return void + */ +void app_main_task(void *p_param) +{ + uint8_t event; + + os_msg_queue_create(&io_queue_handle, MAX_NUMBER_OF_IO_MESSAGE, sizeof(T_IO_MSG)); + os_msg_queue_create(&evt_queue_handle, MAX_NUMBER_OF_EVENT_MESSAGE, sizeof(uint8_t)); + + gap_start_bt_stack(evt_queue_handle, io_queue_handle, MAX_NUMBER_OF_GAP_MESSAGE); + + data_uart_init(evt_queue_handle, io_queue_handle); + user_cmd_init(&user_cmd_if, "ble_audio_ba"); + + driver_init(); + while (true) + { + if (os_msg_recv(evt_queue_handle, &event, 0xFFFFFFFF) == true) + { + if (event == EVENT_IO_TO_APP) + { + T_IO_MSG io_msg; + if (os_msg_recv(io_queue_handle, &io_msg, 0) == true) + { + app_handle_io_msg(io_msg); + } + } + else + { + gap_handle_msg(event); + } + } + } +} + +/** @} */ /* End of group BT5_CENTRAL_APP_TASK */ + + |