BES客户ble_APP调试

文章详细描述了在ble_app中,app_task.c文件处理来自底层到应用的消息,包括GAPM和GAPC消息的特定处理函数,以及app_datapath_server.c中的数据接收和处理机制。还提到了custom_command_receive_data的调用,用于定制应用的数据接收过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

\bthost\service\ble_app\app_main\app_task.c
/**
 ****************************************************************************************
 * @brief Handles reception of all messages sent from the lower layers to the application
 * @param[in] msgid     Id of the message received.
 * @param[in] param     Pointer to the parameters of the message.
 * @param[in] dest_id   ID of the receiving task instance
 * @param[in] src_id    ID of the sending task instance.
 *
 * @return If the message was consumed or not.
 ****************************************************************************************
 */
static int appm_msg_handler(ke_msg_id_t const msgid,
                            void *param,
                            ke_task_id_t const dest_id,
                            ke_task_id_t const src_id)
{
    // Retrieve identifier of the task from received message
    ke_task_id_t src_task_id = MSG_T(msgid);
    // Message policy
    uint8_t msg_pol = KE_MSG_CONSUMED;

    switch (src_task_id)
    {
........
        #if (BLE_APP_DATAPATH_SERVER)
        case (TASK_ID_DATAPATHPS):
        {
            // Call the Data Path Module
            msg_pol = app_get_handler(&app_datapath_server_table_handler, msgid, param, src_id); //--------------------------------------<
        } break;
        #endif //(BLE_APP_DATAPATH_SERVER)
........

    }

    return (msg_pol);
}


/*
 * GLOBAL VARIABLES DEFINITION
 ****************************************************************************************
 */

/* Default State handlers definition. */
KE_MSG_HANDLER_TAB(appm)
{
    /// please add in order of gapm_msg size
    // GAPM messages
    {GAPM_CMP_EVT,                 (ke_msg_func_t)gapm_cmp_evt_handler},
    {GAPM_DEV_BDADDR_IND,          (ke_msg_func_t)gapm_dev_addr_ind_handler},
    {GAPM_ADDR_SOLVED_IND,         (ke_msg_func_t)gapm_addr_solved_ind_handler},
    {GAPM_GEN_RAND_NB_IND,         (ke_msg_func_t)gapm_gen_rand_nb_ind_handler},
    {GAPM_ACTIVITY_CREATED_IND,    (ke_msg_func_t)gapm_activity_created_ind_handler},
    {GAPM_ACTIVITY_STOPPED_IND,    (ke_msg_func_t)gapm_activity_stopped_ind_handler},
    {GAPM_EXT_ADV_REPORT_IND,      (ke_msg_func_t)gapm_adv_report_ind_handler},
    {GAPM_PROFILE_ADDED_IND,       (ke_msg_func_t)gapm_profile_added_ind_handler},

    /// please add in order of gapc_msg size
    // GAPC messages
    {GAPC_CMP_EVT,                 (ke_msg_func_t)gapc_cmp_evt_handler},
    {GAPC_LE_CONNECTION_REQ_IND,   (ke_msg_func_t)gapc_le_connection_req_ind_handler},
    {GAPC_DISCONNECT_IND,          (ke_msg_func_t)gapc_disconnect_ind_handler},
    {GAPC_BT_CONNECTION_REQ_IND,   (ke_msg_func_t)gapc_bt_connection_req_ind_handler},
    {GAPC_MTU_CHANGED_IND,         (ke_msg_func_t)gapc_mtu_changed_ind_handler},
    {GAPC_PEER_ATT_INFO_IND,       (ke_msg_func_t)gapc_peer_att_info_ind_handler},
    {GAPC_PEER_FEATURES_IND,       (ke_msg_func_t)gapc_peer_features_ind_handler},
    {GAPC_GET_DEV_INFO_REQ_IND,    (ke_msg_func_t)gapc_get_dev_info_req_ind_handler},
    {GAPC_SET_DEV_INFO_REQ_IND,    (ke_msg_func_t)gapc_set_dev_info_req_ind_handler},

    {GAPC_PARAM_UPDATE_REQ_IND,    (ke_msg_func_t)gapc_conn_param_update_req_ind_handler},
    {GAPC_PARAM_UPDATED_IND,       (ke_msg_func_t)gapc_conn_param_updated_handler},

    {GAPC_BOND_DATA_UPDATE_IND,    (ke_msg_func_t)gapc_bond_data_update_ind_handler},

    {GAPC_LOC_TX_PWR_IND,          (ke_msg_func_t)gapc_get_local_tx_pwr_ind_handler},
    {GAPC_PEER_TX_PWR_IND,         (ke_msg_func_t)gapc_get_peer_tx_pwr_ind_handler},
    {GAPC_LOC_TX_PWR_REPORT_IND,   (ke_msg_func_t)gapc_local_tx_pwr_repot_ind_handler},
    {GAPC_PEER_TX_PWR_REPORT_IND,  (ke_msg_func_t)gapc_peer_tx_pwr_repot_ind_handler},
    {GAPC_PATH_LOSS_THRESHOLD_IND, (ke_msg_func_t)gapc_peer_path_loss_report_handler},
    {GAPC_SUBRATE_CHANGE_IND,      (ke_msg_func_t)gapc_subrate_change_ind_handler},

    {KE_MSG_DEFAULT_HANDLER,       (ke_msg_func_t)appm_msg_handler},//<---------------
};

\bthost\service\ble_app\app_datapath\app_datapath_server.c
/*
 * LOCAL VARIABLE DEFINITIONS
 ****************************************************************************************
 */

/// Default State handlers definition
const struct ke_msg_handler app_datapath_server_msg_handler_list[] =
{
    // Note: first message is latest message checked by kernel so default is put on top.
    {KE_MSG_DEFAULT_HANDLER,        (ke_msg_func_t)app_datapath_server_msg_handler},

    {DATAPATHPS_TX_CCC_CHANGED,     (ke_msg_func_t)app_datapath_server_tx_ccc_changed_handler},
    {DATAPATHPS_TX_DATA_SENT,       (ke_msg_func_t)app_datapath_server_tx_data_sent_handler},
    {DATAPATHPS_RX_DATA_RECEIVED,   (ke_msg_func_t)app_datapath_server_rx_data_received_handler},
    {DATAPATHPS_NOTIFICATION_RECEIVED, (ke_msg_func_t)app_datapath_server_rx_data_received_handler},
};


const struct app_subtask_handlers app_datapath_server_table_handler =
    {&app_datapath_server_msg_handler_list[0], (sizeof(app_datapath_server_msg_handler_list)/sizeof(struct ke_msg_handler))};

\bthost\service\ble_app\app_datapath\app_datapath_server.c
static int app_datapath_server_rx_data_received_handler(ke_msg_id_t const msgid,
                              struct ble_datapath_rx_data_ind_t *param,
                              ke_task_id_t const dest_id,
                              ke_task_id_t const src_id)
{
    // loop back the received data
    app_datapath_server_send_data_via_notification(param->data, param->length);

    TRACE(2,"%s length %d", __func__, param->length);
    //DUMP8("%02x ", (param->data+i), len);

#ifndef __INTERCONNECTION__
    BLE_custom_command_receive_data(param->data, param->length);//ble客制app数据接收函数
#endif

    if (NULL != rx_done_callback)
    {
        rx_done_callback(param->data, param->length);
    }

    if(dp_event_callback)
    {
        app_dp_rec_data_msg_t data_msg;
        data_msg.data     = param->data;
        data_msg.data_len = param->length;
        dp_event_callback(DP_DATA_RECEIVED, (ble_if_app_dp_param_u *)&data_msg);
    }

    return (KE_MSG_CONSUMED);
}

BLE_CUSTOM_CMD_RET_STATUS_E BLE_custom_command_receive_data(uint8_t* ptrData, uint32_t dataLength)

app_ble_cmd_handler.c
BLE_CUSTOM_CMD_RET_STATUS_E BLE_custom_command_receive_data(uint8_t* ptrData, uint32_t dataLength)
{
    TRACE(1,"%s Receive length %d data: ", __func__,dataLength);
    DUMP8("0x%02x ", ptrData, dataLength);

    app_custom_receive_data_handle(ptrData,dataLength);//客制app数据接收处理函数

    return NO_ERROR;
}

TOOLS_DIR=$(cd $(dirname $0); pwd) USB_AUDIO_FRAME_MS=1 FS_MMC_USB_ENABLE='USB_MSD_ENABLE=1 AOS_FS_ENABLE=1' CUSTOM_BOARD='' USB_CFG="USB_AUDIO_SEND_ENABLE=1 USB_AUDIO_SEND_ENABLE=1 USB_AUDIO_VENDOR_ID=0xbe57 USB_AUDIO_PRODUCT_ID=0x0201 " USB_HID_CFG="USB_HID_COMMAND_ENABLE=1 USB_AUDIO_HID_ENABLE=1" TOTA_CFG="TOTA_v2=1 TOTA_CROSS_CHIP_OTA=1 TOTA_CROSS_CHIP_OTA_ROLE_IS_DONGLE=1 OTA_OVER_TOTA_ENABLED=1" OTA_CFG="BES_OTA=1 USB_OTA_ENABLE=1 NEW_IMAGE_FLASH_OFFSET=0x220000 FLASH_REMAP=0 OTA_REBOOT_FLASH_REMAP=0 FREEMAN_OTA_ENABLE=1" for arg in $* do if [ $arg == "master" ];then BUILD_MASTER_1502P=1 fi if [ $arg == "slave" ];then BUILD_SLAVE_1502P=1 fi if [ $arg == "clean" ];then BUILD_CLEAN=1 fi if [ $arg == "all" ];then BUILD_MASTER_1502P=1 BUILD_SLAVE_1502P=1 fi if [ $arg == 'gen_lst' ];then GEN_LST='all lst' fi if [ $arg == 'gpio_test' ];then GPIO_TEST='ULL_AUDIO_GPIO_TEST=1' fi if [ $arg == 'aud_dump' ];then AUD_DUMP='AUDIO_DEBUG=1 OFFLOAD_AUDIO_DUMP=1 VOWLAN_AUDIO_DUMP_DOWNLOAD=1' fi if [ $arg == '96k' ];then SAMPLE_RATE='LEA_OFFLOAD_96K=1 SPEECH_TX_1MIC_NS_96K=0' fi if [ $arg == "evb_fs_emmc_enable" ];then FS_MMC_USB_CFG=$FS_MMC_USB_ENABLE' EVB_1502P_SDMMC_SUPPORT=1' fi if [ $arg == "rel_sdk" ];then USE_LIB=GEN_LIB=1 RELEASE_SDK=1 BUILD_MASTER_1502P=1 BUILD_SLAVE_1502P=1 BUILD_BES_OTA=1 fi if [ $arg == "is_sdk" ];then USE_LIB=FORCE_TO_USE_LIB=1 IS_SDK=1 fi if [ $arg == "custom" ];then FS_MMC_USB_CFG=$FS_MMC_USB_ENABLE CUSTOM_BOARD='IS_CUSTOMER_BOARD_1502P=1 BT_EXT_LNA_PA=1 BT_EXT_LNA=1 BT_EXT_PA=1 RXON_IOMUX_INDEX=6 TXON_IOMUX_INDEX=7 BT_RF_TEST_MODULE=1' fi done build_1502p_master_cmd="\ make -j64 T=best1502p_ibrt $GEN_LST $GPIO_TEST BT_NATIVE_SUPPORT=1 BLE=1 WIRELESS_MIC_RX_BLE=1 BT_SERVICE_ENABLE=0 AOB_MOBILE_ENABLED=1 LC3PLUS_SUPPORT=1 AOB_CODEC_CP=1 APP_WIRELESS_MIC=1 \ UTILS_ESHELL_BT_TEST=1 WIRELESS_MIC_RX=1 UTILS_ESHELL_EN=1 BLE_AUDIO_ENABLED=1 $USE_LIB BT_NO_SLEEP=1 CP_FLASH_ACCESS=1 FIVE_MS_FRAME_MODE=1 AUDIO_RESAMPLE=0 \ CODEC_BUFF_FRAME_NUM=$USB_AUDIO_FRAME_MS USB_BUFF_FRAME_NUM=2*$USB_AUDIO_FRAME_MS USB_AUDIO_FRAME_MS=$USB_AUDIO_FRAME_MS WIRELESS_MIC_RX_USB=1 \ LEA_ULL_ENABLE=1 GAF_MUSIC_PLC_ON=1 $AUD_DUMP $SAMPLE_RATE BLE_CONNECTION_MAX=2 LC3_HR_MODE=1 BT_RF_TEST_MODULE=1 WIRELESS_MIC_RX_I2S=1 AF_DEVICE_I2S=1 \ $USB_CFG $USB_HID_CFG $OTA_CFG $TOTA_CFG $CUSTOM_BOARD" build_1502p_slave_cmd="\ make -j64 T=best1502p_ibrt $GEN_LST $GPIO_TEST BT_NATIVE_SUPPORT=1 BLE=1 WIRELESS_MIC_TX_BLE=1 BT_SERVICE_ENABLE=0 AOB_MOBILE_ENABLED=1 LC3PLUS_SUPPORT=1 AOB_CODEC_CP=1 APP_WIRELESS_MIC=1 \ WIRELESS_MIC_TX=1 UTILS_ESHELL_BT_TEST=1 UTILS_ESHELL_EN=1 BLE_AUDIO_ENABLED=1 $USE_LIB BT_NO_SLEEP=1 CP_FLASH_ACCESS=1 FIVE_MS_FRAME_MODE=1 AUDIO_RESAMPLE=0 \ LEA_ULL_ENABLE=1 $FS_MMC_USB_CFG TX_ALGO_PROCESS=1 $SAMPLE_RATE $AUD_DUMP BLE_CONNECTION_MAX=2 LC3_HR_MODE=1 SLAVE_LIB=1 SPEECH_TX_1MIC_NS_48K=0 MIC_EMMC_DUMP_SUPPORT=1 BT_RF_TEST_MODULE=1\ $USB_CFG $USB_HID_CFG $OTA_CFG $TOTA_CFG $CUSTOM_BOARD" build_bes_ota_cmd="\ make T=prod_test/ota_copy CHIP=best1502p GEN_LIB=1 -j" for arg in $* do if [ $arg == "BT_RF_TEST=1" ];then build_1502p_master_cmd+="BT_RF_TEST_MODULE=1 " build_1502p_slave_cmd+="BT_RF_TEST_MODULE=1 " fi done if [[ $BUILD_MASTER_1502P == 1 ]] then $build_1502p_master_cmd 2>build_log_1502p_mas.txt if [[ $? == 0 ]] then echo $build_1502p_master_cmd echo "#######################################" echo "######## master build success! ########" echo "#######################################" else echo $build_1502p_master_cmd echo "#######################################" echo "######## master build failed! #########" echo "#######################################" exit fi fi if [[ $BUILD_SLAVE_1502P == 1 ]] then $build_1502p_slave_cmd 2>build_log_1502p_sla.txt if [[ $? == 0 ]] then echo $build_1502p_slave_cmd echo "#######################################" echo "######## slave build success! ########" echo "#######################################" else echo $build_1502p_slave_cmd echo "#######################################" echo "######## slave build failed! #########" echo "#######################################" exit fi fi if [[ $BUILD_BES_OTA == 1 ]] then $build_bes_ota_cmd if [[ $? == 0 ]] then echo $build_bes_ota_cmd echo "#######################################" echo "######### ota build success! ##########" echo "#######################################" else echo $build_bes_ota_cmd echo "#######################################" echo "######### ota build failed! ###########" echo "#######################################" exit fi fi if [[ $RELEASE_SDK == 1 ]] then release_cmd="$TOOLS_DIR/relsw_wireless_mic_1502p.sh" echo $release_cmd $release_cmd fi
最新发布
07-09
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值