pinebuds/services/app_ibrt/src/app_ibrt_auto_test.cpp

157 lines
5.9 KiB
C++

/***************************************************************************
*
* Copyright 2015-2019 BES.
* All rights reserved. All unpublished rights reserved.
*
* No part of this work may be used or reproduced in any form or by any
* means, or stored in a database or retrieval system, without prior written
* permission of BES.
*
* Use of this work is governed by a license granted by BES.
* This work contains confidential and proprietary information of
* BES. which is protected by copyright, trade secret,
* trademark and other intellectual property rights.
*
****************************************************************************/
#include "app_ibrt_auto_test.h"
#include "a2dp_decoder.h"
#include "app_a2dp.h"
#include "app_ai_if.h"
#include "app_ai_manager_api.h"
#include "app_anc.h"
#include "app_audio.h"
#include "app_battery.h"
#include "app_ble_mode_switch.h"
#include "app_bt.h"
#include "app_bt_media_manager.h"
#include "app_ibrt_if.h"
#include "app_ibrt_keyboard.h"
#include "app_ibrt_peripheral_manager.h"
#include "app_ibrt_ui.h"
#include "app_ibrt_ui_test.h"
#include "app_key.h"
#include "app_tws_ibrt_trace.h"
#include "app_tws_if.h"
#include "apps.h"
#include "besbt.h"
#include "factory_section.h"
#include "hal_timer.h"
#include "nvrecord_ble.h"
#include "nvrecord_env.h"
#include <string.h>
#if defined(IBRT)
#include "btapp.h"
extern struct BT_DEVICE_T app_bt_device;
extern int hfp_volume_get(enum BT_DEVICE_ID_T id);
int bt_sco_player_get_codetype(void);
AUTO_TEST_STATE_T auto_test_state_t = {0};
uint16_t app_ibrt_auto_test_get_tws_page_timeout_value(void) {
return app_ibrt_ui_get_tws_page_timeout_value();
}
#ifdef BES_AUTOMATE_TEST
void app_ibrt_auto_test_print_earphone_state(void const *n) {
app_ibrt_ui_t *p_ibrt_ui = app_ibrt_ui_get_ctx();
ibrt_ctrl_t *p_ibrt_ctrl = app_tws_ibrt_get_bt_ctrl_ctx();
auto_test_state_t.head[0] = 0xE1;
auto_test_state_t.head[1] = 0x38;
auto_test_state_t.head[2] = 0x7C;
auto_test_state_t.length = sizeof(auto_test_state_t);
// a2dp & hfp state
auto_test_state_t.bt_stream_state.local_volume =
app_bt_stream_local_volume_get();
auto_test_state_t.bt_stream_state.a2dp_volume =
a2dp_volume_get(BT_DEVICE_ID_1);
auto_test_state_t.bt_stream_state.hfp_volume = hfp_volume_get(BT_DEVICE_ID_1);
auto_test_state_t.bt_stream_state.a2dp_streamming = a2dp_is_music_ongoing();
auto_test_state_t.bt_stream_state.a2dp_codec_type =
app_bt_device.codec_type[BT_DEVICE_ID_1];
auto_test_state_t.bt_stream_state.a2dp_sample_rate =
app_bt_device.sample_rate[BT_DEVICE_ID_1];
auto_test_state_t.bt_stream_state.a2dp_sample_bit =
app_bt_device.sample_bit[BT_DEVICE_ID_1];
auto_test_state_t.bt_stream_state.sco_streaming = is_sco_mode();
auto_test_state_t.bt_stream_state.sco_codec_type =
(uint8_t)bt_sco_player_get_codetype();
app_ibrt_if_get_hfp_call_status(
(AppIbrtCallStatus *)&auto_test_state_t.bt_stream_state.call_status);
// media state
auto_test_state_t.bt_media_state.media_active =
bt_media_get_media_active(BT_DEVICE_ID_1);
auto_test_state_t.bt_media_state.curr_active_media =
bt_media_get_current_media();
auto_test_state_t.bt_media_state.promt_exist =
app_audio_list_playback_exist();
// ui state
auto_test_state_t.ui_state.current_ms = TICKS_TO_MS(hal_sys_timer_get());
auto_test_state_t.ui_state.cpu_freq = hal_sysfreq_get();
auto_test_state_t.ui_state.super_state = p_ibrt_ui->super_state;
auto_test_state_t.ui_state.active_event = p_ibrt_ui->active_event;
auto_test_state_t.ui_state.ibrt_sm_running = p_ibrt_ui->ibrt_sm_running;
auto_test_state_t.ui_state.ui_state = p_ibrt_ui->box_state;
if (IBRT_SLAVE != p_ibrt_ctrl->current_role) {
auto_test_state_t.ui_state.mobile_link_bt_role =
app_tws_ibrt_get_local_mobile_role();
auto_test_state_t.ui_state.mobile_link_bt_mode = p_ibrt_ctrl->mobile_mode;
auto_test_state_t.ui_state.mobile_constate = p_ibrt_ctrl->mobile_constate;
// auto_test_state_t.ui_state.mobile_connect =
// app_tws_ibrt_mobile_link_connected();
}
auto_test_state_t.ui_state.tws_role = p_ibrt_ctrl->current_role;
auto_test_state_t.ui_state.tws_link_bt_role =
app_tws_ibrt_get_local_tws_role();
auto_test_state_t.ui_state.tws_link_bt_mode = p_ibrt_ctrl->tws_mode;
auto_test_state_t.ui_state.tws_constate = p_ibrt_ctrl->tws_constate;
auto_test_state_t.ui_state.role_switch_state =
(p_ibrt_ctrl->slave_tws_switch_pending ||
p_ibrt_ctrl->master_tws_switch_pending);
#ifdef __IAG_BLE_INCLUDE__
auto_test_state_t.ui_state.ble_state = app_ble_get_current_state();
auto_test_state_t.ui_state.ble_operation = app_ble_get_current_operation();
auto_test_state_t.ui_state.ble_connection_state = 0;
for (uint8_t i = 0; i < BLE_CONNECTION_MAX; i++) {
if (app_ble_is_connection_on(i)) {
auto_test_state_t.ui_state.ble_connection_state |= (1 << i);
}
}
#endif
// TRACE(1, "earphone len %d state :", auto_test_state_t.length);
DUMP8("%02x", (uint8_t *)&auto_test_state_t, auto_test_state_t.length);
}
#define APP_AUTO_TEST_PRINT_STATE_TIME_IN_MS 500
osTimerDef(APP_AUTO_TEST_PRINT_STATE_TIMEOUT,
app_ibrt_auto_test_print_earphone_state);
osTimerId app_auto_test_print_state_timeout_timer_id = NULL;
#endif
void app_ibrt_auto_test_init(void) {
#ifdef BES_AUTOMATE_TEST
memset((uint8_t *)&auto_test_state_t, 0, sizeof(auto_test_state_t));
if (app_auto_test_print_state_timeout_timer_id == NULL) {
app_auto_test_print_state_timeout_timer_id = osTimerCreate(
osTimer(APP_AUTO_TEST_PRINT_STATE_TIMEOUT), osTimerPeriodic, NULL);
osTimerStart(app_auto_test_print_state_timeout_timer_id,
APP_AUTO_TEST_PRINT_STATE_TIME_IN_MS);
}
#endif
}
void app_ibrt_auto_test_inform_cmd_received(uint8_t group_code,
uint8_t operation_code) {
AUTO_TEST_TRACE(2, "AUTO_TEST_CMD received:%d:%d:", group_code,
operation_code);
}
#endif