patch_0521_to_0626 402/1
authorSnickerSun <snickersun@163.com>
Fri, 28 Jun 2024 08:08:21 +0000 (16:08 +0800)
committerSnickerSun <snickersun@163.com>
Fri, 28 Jun 2024 08:08:21 +0000 (16:08 +0800)
386 files changed:
auto_ota_readme.txt [new file with mode: 0644]
bt_ctkd_feature.txt [new file with mode: 0644]
code/sdk/application/brandy/brandy_recovery/main.c
code/sdk/application/brandy/brandy_standard/chip_init.c
code/sdk/application/brandy/brandy_standard/thread_init.c
code/sdk/application/wearable/CMakeLists.txt
code/sdk/application/wearable/alipay/service/alipay_bluetooth.c
code/sdk/application/wearable/auto_ota/CMakeLists.txt [new file with mode: 0644]
code/sdk/application/wearable/auto_ota/auto_ota_service.c [new file with mode: 0644]
code/sdk/application/wearable/auto_ota/auto_ota_service.h [new file with mode: 0644]
code/sdk/application/wearable/nativeabilityfwk/include/SliceTransition.h
code/sdk/application/wearable/nativeabilityfwk/src/Ability.cpp
code/sdk/application/wearable/nativeabilityfwk/src/SliceTransition.cpp
code/sdk/application/wearable/nativeabilityfwk/src/transition/BackToHexagonsTransition.cpp
code/sdk/application/wearable/nativeabilityfwk/src/transition/BackToHexagonsTransition.h
code/sdk/application/wearable/nativeabilityfwk/src/transition/HexagonsTransition.cpp
code/sdk/application/wearable/nativeapp/CMakeLists.txt
code/sdk/application/wearable/nativeapp/nativelauncher/include/AppViewIDs.h
code/sdk/application/wearable/nativeapp/nativelauncher/include/NativeLauncher.h
code/sdk/application/wearable/nativeapp/nativelauncher/include/UiConfig.h
code/sdk/application/wearable/nativeapp/nativelauncher/src/NativeLauncher.cpp
code/sdk/application/wearable/nativeapp/nativeui/alarmclocktimerconfig/src/AlarmClockTimerConfig.cpp
code/sdk/application/wearable/nativeapp/nativeui/alipay/include/AlipayModel.h
code/sdk/application/wearable/nativeapp/nativeui/alipay/src/AlipayMainView.cpp
code/sdk/application/wearable/nativeapp/nativeui/alipay/src/AlipayModel.cpp
code/sdk/application/wearable/nativeapp/nativeui/alipay/src/AlipayPresenter.cpp
code/sdk/application/wearable/nativeapp/nativeui/applist/include/AppItemView.h
code/sdk/application/wearable/nativeapp/nativeui/applist/include/ApplistModel.h
code/sdk/application/wearable/nativeapp/nativeui/applist/include/ApplistPresenter.h
code/sdk/application/wearable/nativeapp/nativeui/applist/include/ApplistView.h
code/sdk/application/wearable/nativeapp/nativeui/applist/src/AppItemView.cpp
code/sdk/application/wearable/nativeapp/nativeui/applist/src/ApplistModel.cpp
code/sdk/application/wearable/nativeapp/nativeui/applist/src/ApplistPresenter.cpp
code/sdk/application/wearable/nativeapp/nativeui/applist/src/ApplistView.cpp
code/sdk/application/wearable/nativeapp/nativeui/bluetooth/include/BluetoothModel.h
code/sdk/application/wearable/nativeapp/nativeui/bluetooth/include/BluetoothWrapper.h [new file with mode: 0644]
code/sdk/application/wearable/nativeapp/nativeui/bluetooth/src/BluetoothEarPhoneView.cpp
code/sdk/application/wearable/nativeapp/nativeui/bluetooth/src/BluetoothModel.cpp
code/sdk/application/wearable/nativeapp/nativeui/bluetooth/src/BluetoothWrapper.cpp [new file with mode: 0644]
code/sdk/application/wearable/nativeapp/nativeui/connectnewphone/include/ConnectPhonePresenter.h
code/sdk/application/wearable/nativeapp/nativeui/connectnewphone/src/ConnectOpenView.cpp
code/sdk/application/wearable/nativeapp/nativeui/connectnewphone/src/ConnectPhonePresenter.cpp
code/sdk/application/wearable/nativeapp/nativeui/main/include/dial/DialDigitalImgView.h
code/sdk/application/wearable/nativeapp/nativeui/main/include/dial/DialViewGroup.h
code/sdk/application/wearable/nativeapp/nativeui/main/src/MainPresenterSample.cpp
code/sdk/application/wearable/nativeapp/nativeui/main/src/dial/DialDigitalImgView.cpp
code/sdk/application/wearable/nativeapp/nativeui/main/src/dial/DialViewGroup.cpp
code/sdk/application/wearable/nativeapp/nativeui/main/src/dial/parser/DialBinParser.cpp
code/sdk/application/wearable/nativeapp/nativeui/phoneservice/src/PhoneService.cpp
code/sdk/application/wearable/nativeapp/nativeui/rtcservice/src/RtcService.cpp
code/sdk/application/wearable/nativeapp/nativeui/set_desktop/include/SetDesktopModel.h
code/sdk/application/wearable/nativeapp/nativeui/set_desktop/include/SetDesktopPresenter.h
code/sdk/application/wearable/nativeapp/nativeui/set_desktop/include/SetDesktopView.h
code/sdk/application/wearable/nativeapp/nativeui/set_desktop/src/SetDesktopModel.cpp
code/sdk/application/wearable/nativeapp/nativeui/set_desktop/src/SetDesktopPresenter.cpp
code/sdk/application/wearable/nativeapp/nativeui/set_desktop/src/SetDesktopView.cpp
code/sdk/application/wearable/nativeapp/nativeui/set_dial/include/SetDialPresenter.h
code/sdk/application/wearable/nativeapp/nativeui/set_dial/include/SetDialView.h
code/sdk/application/wearable/nativeapp/nativeui/set_dial/src/SetDialPresenter.cpp
code/sdk/application/wearable/nativeapp/nativeui/set_dial/src/SetDialView.cpp
code/sdk/application/wearable/nativeapp/nativeui/set_dial_style/include/SetDialStyleModel.h [new file with mode: 0644]
code/sdk/application/wearable/nativeapp/nativeui/set_dial_style/include/SetDialStylePresenter.h [new file with mode: 0644]
code/sdk/application/wearable/nativeapp/nativeui/set_dial_style/include/SetDialStyleView.h [new file with mode: 0644]
code/sdk/application/wearable/nativeapp/nativeui/set_dial_style/src/SetDialStyleModel.cpp [new file with mode: 0644]
code/sdk/application/wearable/nativeapp/nativeui/set_dial_style/src/SetDialStylePresenter.cpp [new file with mode: 0644]
code/sdk/application/wearable/nativeapp/nativeui/set_dial_style/src/SetDialStyleView.cpp [new file with mode: 0644]
code/sdk/application/wearable/nativeapp/nativeui/settings/src/SettingModel.cpp
code/sdk/application/wearable/nativeapp/nativeui/uiservice/src/ui_service.cpp
code/sdk/application/wearable/service/broadcast/src/broadcast_implement.c
code/sdk/application/wearable/service/msg_center/CMakeLists.txt
code/sdk/application/wearable/service/msg_center/brandy-native-js/libmsg_center.a
code/sdk/application/wearable/service/msg_center/brandy-xts/libmsg_center.a
code/sdk/application/wearable/service/msg_center/include/msg_center_protocol.h
code/sdk/application/wearable/service/msg_center/include/ota/msg_center_ota.h [new file with mode: 0644]
code/sdk/application/wearable/service/msg_center/libs/libbaidumapsdk.a
code/sdk/application/wearable/service/msg_center/src/msg_center_cmd.cpp
code/sdk/application/wearable/service/msg_center/src/ota/msg_center_ota.cpp [new file with mode: 0644]
code/sdk/application/wearable/service/msg_center/src/vendor_app/baidu/baidu_app.cpp
code/sdk/application/wstp/at_service/app/app_at_process.c
code/sdk/application/wstp/at_service/app/app_cmd_manager.c
code/sdk/application/wstp/at_service/app/app_msg_manager.h
code/sdk/bootloader/flashboot/brandy/main.c
code/sdk/build/config/target_config/brandy/config.py
code/sdk/build/config/target_config/brandy/hdb_config/database_template/acore/system/hdbcfg/mss_cmd_db.xml
code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/pymb.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/regular_hexagon.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/regular_hexagon_inverse.bin [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/nv_bin_cfg/mk_nv_bin_cfg.json [deleted file]
code/sdk/build/config/target_config/common_config.py
code/sdk/drivers/boards/brandy_evb/linker/recovery/acore.prelds
code/sdk/drivers/boards/brandy_evb/memory_config/include/psram.h
code/sdk/drivers/chips/brandy/porting/button/button_porting.c
code/sdk/drivers/chips/brandy/porting/dma/dma_porting.c
code/sdk/drivers/chips/brandy/porting/include/button_porting.h
code/sdk/drivers/chips/brandy/porting/include/i2c_porting.h
code/sdk/drivers/drivers/driver/audio/source/core/common/probe/probe.c
code/sdk/drivers/drivers/driver/audio/source/core/common/probe/probe.h
code/sdk/drivers/drivers/driver/audio/source/drv/aoe/drv_ao.c
code/sdk/drivers/drivers/driver/audio/source/include/audio_struct.h
code/sdk/drivers/drivers/driver/i2c/i2c.c
code/sdk/drivers/drivers/driver/spi/spi.c
code/sdk/drivers/drivers/driver/uart/uart.c
code/sdk/drivers/drivers/hal/calendar/hal_calendar_hw.c
code/sdk/drivers/drivers/hal/dma/v100/hal_dmac_v100.c
code/sdk/drivers/drivers/hal/reboot/hal_reboot.c
code/sdk/include/middleware/services/bts/ble/bts_le_gap.h
code/sdk/include/middleware/services/bts/common/bts_feature.h
code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/a2dp_snk_service.c.xml
code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/app_style.cpp.xml
code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/app_style_item.cpp.xml
code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/app_style_manager.cpp.xml
code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/bt_data_config.c.xml
code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/btsrv_gatt_client.c.xml
code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/btsrv_gatt_server.c.xml
code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/bundle_mgr_service.cpp.xml
code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/bundlems_slite_client.cpp.xml
code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/connection_manager.c.xml
code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/descriptor_utils.cpp.xml
code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/event_util.cpp.xml
code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/fatal_handler.cpp.xml
code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/js_ability.cpp.xml
code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/js_ability_impl.cpp.xml
code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/js_app_context.cpp.xml
code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/js_app_environment.cpp.xml
code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/js_fwk_common.cpp.xml
code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/js_page_state.cpp.xml
code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/js_page_state_machine.cpp.xml
code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/js_profiler.cpp.xml
code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/js_router.cpp.xml
code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/jsi.cpp.xml
code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/local_device_manager.c.xml
code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/mpc_trans.c.xml
code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/platform_adapter.cpp.xml
code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/remote_device_manager.c.xml
code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/sdk_general_gap.c.xml
code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/sdk_general_gatt.c.xml
code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/spp_service.c.xml
code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/stack_av_if.c.xml
code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/ui_coverflow_view.cpp.xml
code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/ui_icosahedron_view.cpp.xml
code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/ui_map_view.cpp.xml
code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/ui_roller_view.cpp.xml
code/sdk/interim_binary/brandy/audio/build_hso_cfg/hso_database/xml/base/dsp_core/core_sea.c.xml
code/sdk/interim_binary/brandy/audio/build_hso_cfg/hso_database/xml/base/dsp_core/dsp_main.c.xml
code/sdk/interim_binary/brandy/bt/build_hso_cfg/hdb/hdbcfg/mss_prim_db.xml
code/sdk/interim_binary/brandy/bt/build_hso_cfg/hso_database/xml/base/bt_core/a2dp_hlp_ram.c.xml
code/sdk/interim_binary/brandy/bt/build_hso_cfg/hso_database/xml/base/bt_core/ahib_mpc.c.xml
code/sdk/interim_binary/brandy/bt/build_hso_cfg/hso_database/xml/base/bt_core/att_gatt.c.xml
code/sdk/interim_binary/brandy/bt/build_hso_cfg/hso_database/xml/base/bt_core/ble_conf.c.xml
code/sdk/interim_binary/brandy/bt/build_hso_cfg/hso_database/xml/base/bt_core/ble_core.c.xml
code/sdk/interim_binary/brandy/bt/build_hso_cfg/hso_database/xml/base/bt_core/ble_general_gatt.c.xml
code/sdk/interim_binary/brandy/bt/build_hso_cfg/hso_database/xml/base/bt_core/bt_ahi_av.c.xml
code/sdk/interim_binary/brandy/bt/build_hso_cfg/hso_database/xml/base/bt_core/bt_ahi_gap.c.xml
code/sdk/interim_binary/brandy/bt/build_hso_cfg/hso_database/xml/base/bt_core/bt_ahi_hfp.c.xml
code/sdk/interim_binary/brandy/bt/build_hso_cfg/hso_database/xml/base/bt_core/bt_dft.c.xml
code/sdk/interim_binary/brandy/bt/build_hso_cfg/hso_database/xml/base/bt_core/bt_mpc_adpt_gatt.c.xml
code/sdk/interim_binary/brandy/bt/build_hso_cfg/hso_database/xml/base/bt_core/bt_tran_task.c.xml
code/sdk/interim_binary/brandy/bt/build_hso_cfg/hso_database/xml/base/bt_core/fsm.c.xml
code/sdk/interim_binary/brandy/bt/build_hso_cfg/hso_database/xml/base/bt_core/gap_hlp_br.c.xml
code/sdk/interim_binary/brandy/bt/build_hso_cfg/hso_database/xml/base/bt_core/gap_ui.c.xml
code/sdk/interim_binary/brandy/bt/build_hso_cfg/hso_database/xml/base/bt_core/gdk_cmsis.c.xml
code/sdk/interim_binary/brandy/bt/build_hso_cfg/hso_database/xml/base/bt_core/hci_data_proc.c.xml
code/sdk/interim_binary/brandy/bt/build_hso_cfg/hso_database/xml/base/bt_core/hci_hlp_ram.c.xml
code/sdk/interim_binary/brandy/bt/build_hso_cfg/hso_database/xml/base/bt_core/hci_link_br.c.xml
code/sdk/interim_binary/brandy/bt/build_hso_cfg/hso_database/xml/base/bt_core/ipc.c.xml
code/sdk/interim_binary/brandy/bt/build_hso_cfg/hso_database/xml/base/bt_core/ld_fm_ram.c.xml
code/sdk/interim_binary/brandy/bt/build_hso_cfg/hso_database/xml/base/bt_core/osdep.c.xml
code/sdk/interim_binary/brandy/bt/build_hso_cfg/hso_database/xml/base/bt_core/packet_dl.c.xml
code/sdk/interim_binary/brandy/bt/build_hso_cfg/hso_database/xml/base/bt_core/patch_bth.c.xml
code/sdk/interim_binary/brandy/bt/build_hso_cfg/hso_database/xml/base/bt_core/sdk_gatt.c.xml
code/sdk/interim_binary/brandy/bt/build_hso_cfg/hso_database/xml/base/bt_core/sdk_gatt_hlp.c.xml
code/sdk/interim_binary/brandy/bt/build_hso_cfg/hso_database/xml/base/bt_core/sdk_hlp.c.xml
code/sdk/interim_binary/brandy/bt/build_hso_cfg/hso_database/xml/base/bt_core/sdk_pbap.c.xml
code/sdk/interim_binary/brandy/bt/build_hso_cfg/hso_database/xml/base/bt_core/security_main.c.xml
code/sdk/interim_binary/brandy/bt/build_hso_cfg/hso_database/xml/base/bt_core/smp_ui.c.xml
code/sdk/interim_binary/brandy/bt/build_hso_cfg/hso_database/xml/base/bt_core/sppui.c.xml
code/sdk/interim_binary/brandy/libs/bt/evb_standard/freertos/br/libbt_host_audio_manager_wrapper.a
code/sdk/interim_binary/brandy/libs/bt/evb_standard/freertos/br/libbt_host_brandy_service.a
code/sdk/interim_binary/brandy/libs/bt/evb_standard/freertos/br/libbt_host_sdk.a
code/sdk/interim_binary/brandy/libs/bt/evb_standard/liteos/br/libbt_host_audio_manager_wrapper.a
code/sdk/interim_binary/brandy/libs/bt/evb_standard/liteos/br/libbt_host_brandy_service.a
code/sdk/interim_binary/brandy/libs/bt/evb_standard/liteos/br/libbt_host_sdk.a
code/sdk/interim_binary/brandy/libs/bt/evb_standard/liteos/mini/br/libbt_host_brandy_service.a
code/sdk/interim_binary/brandy/libs/bt/evb_standard/liteos/mini/br/libbt_host_sdk.a
code/sdk/interim_binary/brandy/libs/media/evb_standard/libjs_audio_capturer.a [new file with mode: 0644]
code/sdk/middleware/chips/brandy/dfx/CMakeLists.txt
code/sdk/middleware/chips/brandy/dfx/dfx_channel.c
code/sdk/middleware/chips/brandy/dfx/dfx_channel.h
code/sdk/middleware/chips/brandy/dfx/dfx_system_init.c
code/sdk/middleware/chips/brandy/dfx/diag_audio.c [new file with mode: 0644]
code/sdk/middleware/chips/brandy/dfx/diag_audio.h [new file with mode: 0644]
code/sdk/middleware/chips/brandy/dfx/include/log_def_app.h
code/sdk/middleware/chips/brandy/dfx/include/log_def_ohos.h
code/sdk/middleware/chips/brandy/dfx/include/soc_diag_cmd_id.h
code/sdk/middleware/chips/brandy/exception/chip_system_time.c
code/sdk/middleware/chips/brandy/exception/exception_riscv.c
code/sdk/middleware/chips/brandy/nv/nv_config/cfg/acore/app.json [deleted file]
code/sdk/middleware/chips/brandy/nv/nv_config/cfg/eng/acore/app.json
code/sdk/middleware/chips/brandy/nv/nv_config/cfg/user/acore/app.json
code/sdk/middleware/chips/brandy/pm/include/pm_definition.h
code/sdk/middleware/chips/brandy/update/include/upg_common_porting.h
code/sdk/middleware/services/gpu/api/vau/draw/vau_draw.c
code/sdk/middleware/services/gpu/api/vau/soc_vau_api.c
code/sdk/middleware/services/gpu/drv/vau/hal/vau_hal_apb.c
code/sdk/middleware/services/gpu/drv/vau/hal/vau_hal_apb.h
code/sdk/middleware/services/gui/hal/common/include/graphic_hardware_config.h
code/sdk/middleware/services/gui/hal/display/brandy-native-js/libdisplay_gfx.a
code/sdk/middleware/services/gui/hal/display/brandy-target1/libdisplay_gfx.a
code/sdk/middleware/services/gui/hal/display/brandy-target3/libdisplay_gfx.a
code/sdk/middleware/services/gui/hal/display/brandy-target5/libdisplay_gfx.a
code/sdk/middleware/services/gui/hal/display/brandy-xts/libdisplay_gfx.a
code/sdk/middleware/services/gui/hal/display/src/display_gralloc.c
code/sdk/middleware/services/gui/uikit/brandy-native-js/libuikit_ext.a
code/sdk/middleware/services/gui/uikit/brandy-target3/libuikit_ext.a
code/sdk/middleware/services/gui/uikit/brandy-xts/libuikit_ext.a
code/sdk/middleware/services/gui/uikit/proprietary/include/components/ui_coverflow_view.h
code/sdk/middleware/services/gui/uikit/proprietary/include/components/ui_cross_view.h
code/sdk/middleware/services/gui/uikit/proprietary/include/components/ui_icosahedron_view.h
code/sdk/middleware/services/gui/uikit/proprietary/include/components/ui_label_button_ext.h
code/sdk/middleware/services/gui/uikit/proprietary/include/components/ui_label_ext.h
code/sdk/middleware/services/gui/uikit/proprietary/include/components/ui_lite_surface_view.h
code/sdk/middleware/services/gui/uikit/proprietary/include/components/ui_menu_item.h
code/sdk/middleware/services/gui/uikit/proprietary/include/components/ui_roller_view.h
code/sdk/middleware/services/gui/uikit/proprietary/include/gfx_utils/mem_check.h
code/sdk/middleware/services/gui/uikit/proprietary/src/ui/frameworks/components/ui_input_method.cpp
code/sdk/middleware/services/gui/uikit/proprietary/src/ui/frameworks/components/ui_lite_surface_view.cpp
code/sdk/middleware/services/gui/uikit/proprietary/src/ui/frameworks/components/ui_menu_item.cpp
code/sdk/middleware/services/gui/uikit/proprietary/src/ui/frameworks/dfx/dfx_cmd.cpp
code/sdk/middleware/services/gui/uikit/proprietary/src/ui/innerkits/input_method/ui_input_method.h
code/sdk/middleware/services/gui/uikit/proprietary/src/utils/frameworks/hals/lite_input_distributer.cpp
code/sdk/middleware/services/gui/uikit/proprietary/src/utils/frameworks/mem_check.cpp
code/sdk/middleware/services/gui/uikit/proprietary/src/utils/innerkits/hals/lite_input_distributer.h
code/sdk/middleware/services/gui/uikit/sample/uitest/components/ui_test_coverflow/ui_test_coverflow.cpp
code/sdk/middleware/services/gui/uikit/sample/uitest/components/ui_test_list_ext/menu_item_adapter.cpp [new file with mode: 0644]
code/sdk/middleware/services/gui/uikit/sample/uitest/components/ui_test_list_ext/menu_item_adapter.h [new file with mode: 0644]
code/sdk/middleware/services/gui/uikit/sample/uitest/components/ui_test_list_ext/ui_test_list_ext.cpp [new file with mode: 0644]
code/sdk/middleware/services/gui/uikit/sample/uitest/components/ui_test_list_ext/ui_test_list_ext.h [new file with mode: 0644]
code/sdk/middleware/services/gui/uikit/sample/uitest/components/ui_test_roller_view/ui_test_roller_view.cpp [new file with mode: 0644]
code/sdk/middleware/services/gui/uikit/sample/uitest/components/ui_test_roller_view/ui_test_roller_view.h [new file with mode: 0644]
code/sdk/middleware/services/gui/uikit/sample/uitest/framework/src/ui_test_group.cpp
code/sdk/middleware/services/gui/uikit/ui/frameworks/components/ui_arc_label.cpp
code/sdk/middleware/services/gui/uikit/ui/frameworks/components/ui_arc_scroll_bar.cpp
code/sdk/middleware/services/gui/uikit/ui/frameworks/components/ui_label.cpp
code/sdk/middleware/services/gui/uikit/ui/frameworks/components/ui_swipe_view.cpp
code/sdk/middleware/services/gui/uikit/ui/frameworks/components/ui_view_group.cpp
code/sdk/middleware/services/gui/uikit/ui/frameworks/draw/draw_label.cpp
code/sdk/middleware/services/gui/uikit/ui/frameworks/draw/draw_utils.cpp
code/sdk/middleware/services/gui/uikit/ui/frameworks/draw/draw_utils.h
code/sdk/middleware/services/gui/uikit/ui/interfaces/kits/components/root_view.h
code/sdk/middleware/services/gui/uikit/ui/interfaces/kits/components/ui_arc_label.h
code/sdk/middleware/services/gui/uikit/ui/interfaces/kits/components/ui_label.h
code/sdk/middleware/services/gui/uikit/ui/interfaces/kits/components/ui_view.h
code/sdk/middleware/services/gui/uikit/ui/interfaces/kits/components/ui_view_group.h
code/sdk/middleware/services/gui/uikit/utils/interfaces/kits/gfx_utils/input_event_info.h
code/sdk/middleware/services/media/foundation/audio_capturer/CMakeLists.txt
code/sdk/middleware/services/media/foundation/audio_capturer/interfaces/kits/audio_capturer_lite/CMakeLists.txt [moved from code/sdk/middleware/services/media/foundation/audio_capturer/interfaces/kits/audio_captuer_lite/CMakeLists.txt with 98% similarity]
code/sdk/middleware/services/media/foundation/audio_capturer/interfaces/kits/audio_capturer_lite/recording_module.cpp [moved from code/sdk/middleware/services/media/foundation/audio_capturer/interfaces/kits/audio_captuer_lite/recording_module.cpp with 93% similarity]
code/sdk/middleware/services/media/foundation/audio_capturer/interfaces/kits/audio_capturer_lite/recording_module.h [moved from code/sdk/middleware/services/media/foundation/audio_capturer/interfaces/kits/audio_captuer_lite/recording_module.h with 77% similarity]
code/sdk/middleware/services/media/foundation/audiomanager/frameworks/audiomanager/cpp/audio_manager.cpp
code/sdk/middleware/services/media/foundation/audiomanager/frameworks/audiomanager/cpp/audio_manager_impl.cpp
code/sdk/middleware/services/media/foundation/audiomanager/frameworks/audiomanager/cpp/audio_manager_impl.h
code/sdk/middleware/services/media/foundation/audiomanager/frameworks/audioservice/include/audio_service.h
code/sdk/middleware/services/media/foundation/audiomanager/frameworks/audioservice/src/audio_service.c
code/sdk/middleware/services/media/foundation/audiomanager/frameworks/audioservice/src/devicemanager/src/device_hal.c
code/sdk/middleware/services/media/foundation/audiomanager/frameworks/audioservice/src/policymanager/brandy/policy_default_config.h
code/sdk/middleware/services/media/foundation/audiomanager/frameworks/audioservice/src/policymanager/src/hifi_clock_freq_manager.c
code/sdk/middleware/services/media/foundation/audiomanager/frameworks/audioservice/src/streammanager/include/source_handle.h
code/sdk/middleware/services/media/foundation/audiomanager/frameworks/audioservice/src/streammanager/include/stream_manager.h
code/sdk/middleware/services/media/foundation/audiomanager/frameworks/audioservice/src/streammanager/include/track_handle.h
code/sdk/middleware/services/media/foundation/audiomanager/frameworks/audioservice/src/streammanager/src/source_handle.c
code/sdk/middleware/services/media/foundation/audiomanager/frameworks/audioservice/src/streammanager/src/stream_manager.c
code/sdk/middleware/services/media/foundation/audiomanager/frameworks/audioservice/src/streammanager/src/track_handle.c
code/sdk/middleware/services/media/foundation/audiomanager/frameworks/audiostream/include/cpp/audio_stream_in.h
code/sdk/middleware/services/media/foundation/audiomanager/frameworks/audiostream/include/cpp/audio_stream_out.h
code/sdk/middleware/services/media/foundation/audiomanager/frameworks/audiostream/src/cpp/audio_stream_in.cpp
code/sdk/middleware/services/media/foundation/audiomanager/frameworks/audiostream/src/cpp/audio_stream_out.cpp
code/sdk/middleware/services/media/foundation/audiomanager/interfaces/kits/audiomanager/cpp/audio_manager.h
code/sdk/middleware/services/media/foundation/player/frameworks/player_control/sink/player_audio_sink.cpp
code/sdk/middleware/services/media/foundation/sample/wrapper/audio_manager_c_wrapper.cpp
code/sdk/middleware/services/media/foundation/sample/wrapper/audio_manager_c_wrapper.h
code/sdk/middleware/services/media/foundation/sample/wrapper/player_sample_wrapper.cpp
code/sdk/middleware/services/media/foundation/sample/wrapper/video_play_wrapper.cpp
code/sdk/middleware/services/media/foundation/sample/wrapper/video_play_wrapper.h
code/sdk/middleware/services/media/hal/audio/plugins/brandy/common/include/plugin_common.h
code/sdk/middleware/services/media/hal/audio/plugins/brandy/common/src/plugin_common.c
code/sdk/middleware/services/media/hal/audio/plugins/brandy/primary/primary_sub_port_in.c
code/sdk/middleware/services/media/hal/audio/plugins/brandy/primary/primary_sub_port_out.c
code/sdk/middleware/services/media/hal/audio/plugins/plugin_include/audio_port_plugin.h
code/sdk/middleware/services/media/hal/audio/src/audio_adapter.c
code/sdk/middleware/services/media/hal/audio/src/audio_capture.c
code/sdk/middleware/services/media/hal/audio/src/audio_internal.h
code/sdk/middleware/services/media/hal/audio/src/audio_render.c
code/sdk/middleware/utils/common_headers/drivers/gpu/soc_vau_api.h
code/sdk/middleware/utils/dfx/CMakeLists.txt
code/sdk/middleware/utils/dfx/diag_dfx_cmd/diag_audio_probe/zdiag_audio_probe.c
code/sdk/middleware/utils/dfx/diag_transmit/dfx_include/transmit_st.h
code/sdk/middleware/utils/dfx/diag_transmit/transmit_item.h
code/sdk/middleware/utils/dfx/diag_transmit/transmit_write_read.h
code/sdk/middleware/utils/dfx/file_operation/dfx_file_operation.h
code/sdk/middleware/utils/fs/yaffs2/brandy-native-js-r/libfs_yaffs2.a
code/sdk/middleware/utils/fs/yaffs2/brandy-native-js/libfs_yaffs2.a
code/sdk/middleware/utils/fs/yaffs2/brandy-target1-r/libfs_yaffs2.a
code/sdk/middleware/utils/fs/yaffs2/brandy-target1/libfs_yaffs2.a
code/sdk/middleware/utils/fs/yaffs2/brandy-target3-r/libfs_yaffs2.a
code/sdk/middleware/utils/fs/yaffs2/brandy-target3/libfs_yaffs2.a
code/sdk/middleware/utils/fs/yaffs2/brandy-target4-r/libfs_yaffs2.a
code/sdk/middleware/utils/fs/yaffs2/brandy-target4/libfs_yaffs2.a
code/sdk/middleware/utils/fs/yaffs2/brandy-target5-r/libfs_yaffs2.a
code/sdk/middleware/utils/fs/yaffs2/brandy-target5/libfs_yaffs2.a
code/sdk/middleware/utils/fs/yaffs2/brandy-xts-r/libfs_yaffs2.a
code/sdk/middleware/utils/fs/yaffs2/brandy-xts/libfs_yaffs2.a
code/sdk/middleware/utils/fs/yaffs2/testsuite-brandy-sdk/libfs_yaffs2.a
code/sdk/middleware/utils/fs/yaffs2/yaffs/direct/include/yaffsfs.h
code/sdk/open_source/openharmony/base/startup/bootstrap_lite/source/bootstrap_service.c
code/sdk/open_source/openharmony/foundation/aafwk/aafwk_lite/CMakeLists.txt
code/sdk/open_source/openharmony/foundation/aafwk/aafwk_lite/brandy-native-js/libams.a
code/sdk/open_source/openharmony/foundation/aafwk/aafwk_lite/brandy-xts/libams.a
code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/CMakeLists.txt
code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/base/js_fwk_common.h
code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/base/keys.h
code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/brandy-native-js/libace.a
code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/brandy-xts/libace.a
code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/components/component.h
code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/components/component_factory.h
code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/components/event_listener.cpp
code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/components/event_listener.h
code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/components/input_edittext_component.cpp [new file with mode: 0644]
code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/components/input_edittext_component.h [new file with mode: 0644]
code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/components/list_adapter.cpp
code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/components/text_component.h
code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/interfaces/acelite_config.h
code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/device_module.cpp [new file with mode: 0644]
code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/device_module.h [new file with mode: 0644]
code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/ohos_module_config.h
code/sdk/open_source/openharmony/foundation/appexecfwk/appexecfwk_lite/brandy-native-js/libbms.a
code/sdk/open_source/openharmony/foundation/appexecfwk/appexecfwk_lite/brandy-xts/libbms.a
code/sdk/open_source/openharmony/foundation/multimedia/audio_capturer/interfaces/kits/audio_capturer_lite/recording_module.h [moved from code/sdk/open_source/openharmony/foundation/multimedia/audio_capturer/interfaces/kits/audio_captuer_lite/recording_module.h with 77% similarity]
code/sdk/protocol/bt/host/bt/bts/bg_common/include/ahi_a/mpc_trans.h
code/sdk/protocol/bt/host/bt/bts/bg_common/include/ahi_common/mpc_code_def.h [new file with mode: 0644]
code/sdk/protocol/bt/host/bt/bts/bg_common/include/hci/hci_hlp.h [new file with mode: 0644]
code/sdk/protocol/bt/host/bt/bts/bg_common/include/hci/hci_ui.h [new file with mode: 0644]
code/sdk/protocol/bt/host/bt/bts/brandy_service/service/src/base/connection_manager.h
code/sdk/protocol/bt/host/bt/bts/brandy_service/service/src/base/local_device_manager.h
code/sdk/protocol/bt/host/bt/bts/brandy_service/service/src/base/remote_device_manager.h
code/sdk/protocol/bt/host/bt/bts/bt_sample/bt_core/sample_bts_gap.c
code/sdk/protocol/bt/host/bt/bts/bt_sample/bt_core/sample_bts_gatt.c
code/sdk/protocol/bt/host/bt/bts/sdk/inc/stack_api/stack_av_if.h
code/sdk/protocol/bt/host/bt/bts/sdk/src/stack_api/CMakeLists.txt [new file with mode: 0644]
code/sdk/protocol/bt/host/bt/bts/sdk/src/stack_api/gap/CMakeLists.txt [new file with mode: 0644]
code/sdk/protocol/bt/host/bt/bts/sdk/src/stack_api/stack_mpc.h [new file with mode: 0644]
code/sdk/tools/pkg/bin/brandy/bt.bin
code/sdk/tools/pkg/bin/brandy/dsp/max/dsp_main.bin
code/sdk/tools/pkg/bin/brandy/dsp/mini/dsp_main.bin
code/sdk/tools/pkg/bin/brandy/dsp/normal/dsp_main.bin
jsapp/baidu_voiceassistant/build.gradle [new file with mode: 0644]
jsapp/baidu_voiceassistant/entry/.gitignore [new file with mode: 0644]
jsapp/baidu_voiceassistant/entry/build.gradle [new file with mode: 0644]
jsapp/baidu_voiceassistant/entry/proguard-rules.pro [new file with mode: 0644]
jsapp/baidu_voiceassistant/entry/src/main/config.json [new file with mode: 0644]
jsapp/baidu_voiceassistant/entry/src/main/js/default/app.js [new file with mode: 0644]
jsapp/baidu_voiceassistant/entry/src/main/js/default/common/back.bmp [new file with mode: 0644]
jsapp/baidu_voiceassistant/entry/src/main/js/default/common/back_48.bmp [new file with mode: 0644]
jsapp/baidu_voiceassistant/entry/src/main/js/default/common/end.bmp [new file with mode: 0644]
jsapp/baidu_voiceassistant/entry/src/main/js/default/common/start.bmp [new file with mode: 0644]
jsapp/baidu_voiceassistant/entry/src/main/js/default/i18n/en-US.json [new file with mode: 0644]
jsapp/baidu_voiceassistant/entry/src/main/js/default/i18n/zh-CN.json [new file with mode: 0644]
jsapp/baidu_voiceassistant/entry/src/main/js/default/pages/first/first.css [new file with mode: 0644]
jsapp/baidu_voiceassistant/entry/src/main/js/default/pages/first/first.hml [new file with mode: 0644]
jsapp/baidu_voiceassistant/entry/src/main/js/default/pages/first/first.js [new file with mode: 0644]
jsapp/baidu_voiceassistant/entry/src/main/js/default/pages/index/index.css [new file with mode: 0644]
jsapp/baidu_voiceassistant/entry/src/main/js/default/pages/index/index.hml [new file with mode: 0644]
jsapp/baidu_voiceassistant/entry/src/main/js/default/pages/index/index.js [new file with mode: 0644]
jsapp/baidu_voiceassistant/entry/src/main/js/default/res/icon_microphone_128.png [new file with mode: 0644]
jsapp/baidu_voiceassistant/entry/src/main/js/default/res/icon_microphone_64.png [new file with mode: 0644]
jsapp/baidu_voiceassistant/entry/src/main/js/default/res/icon_old.png [new file with mode: 0644]
jsapp/baidu_voiceassistant/entry/src/main/js/default/res/icon_small.png [new file with mode: 0644]
jsapp/baidu_voiceassistant/entry/src/main/resources/base/element/string.json [new file with mode: 0644]
jsapp/baidu_voiceassistant/entry/src/main/resources/base/media/icon.png [new file with mode: 0644]
jsapp/baidu_voiceassistant/entry/src/main/resources/base/media/icon_small.png [new file with mode: 0644]
jsapp/baidu_voiceassistant/gradle.properties [new file with mode: 0644]
jsapp/baidu_voiceassistant/gradle/wrapper/gradle-wrapper.jar [new file with mode: 0644]
jsapp/baidu_voiceassistant/gradle/wrapper/gradle-wrapper.properties [new file with mode: 0644]
jsapp/baidu_voiceassistant/gradlew [new file with mode: 0644]
jsapp/baidu_voiceassistant/gradlew.bat [new file with mode: 0644]
jsapp/baidu_voiceassistant/settings.gradle [new file with mode: 0644]
patch_0521_to_0626.txt [new file with mode: 0644]

diff --git a/auto_ota_readme.txt b/auto_ota_readme.txt
new file mode 100644 (file)
index 0000000..fe54f7d
--- /dev/null
@@ -0,0 +1,34 @@
+auto_ota说明:\r
+\r
+client: (升级主板专用)\r
+1、需要增加组件 'auto_ota'\r
+2、需要开启宏 SUPPORT_AUTO_OTA\r
+3、设计成客户可定制连续升级设备数量 AUTO_OTA_RECORD_DEV_MAX_NUM\r
+4、关键日志搜索 auto_ota/msg_center\r
+5、客户可定制扫描时长 AUTO_OTA_SCAN_WAIT_TIME \r
+6、客户可定制扫描最大个数 AUTO_OTA_INQUERY_DEV_NUM\r
+7、客户可定制自动化动作之间的时延 AUTO_OTA_OPRATE_DELAY_MS\r
+8、客户可定制acl链接的时延 AUTO_OTA_ACL_CONN_DELAY\r
+9、新增版本校验信息,从文件读取 /user/dst_ver.txt -- 客户需要把每次升级的版本号存入文件并推送到升级主板\r
+10、需要开启特性宏 SUPPORT_AUTO_OTA_SERVER (client/server均需要开启)\r
+11、增加容错,客户可定制等待spp连接超时时间,AUTO_OTA_SPP_RECONN_TIMEOUT\r
+12、需要开启CONFIG_DFX_SUPPORT_DIAG_UP_MACHINE=1\r
+\r
+\r
+server: (客户正式版本)\r
+1、不需要增加组件 'auto_ota' (客户版本中默认不配置)\r
+2、不需要开启宏 SUPPORT_AUTO_OTA (客户版本中默认不配置)\r
+3、升级路径默认为 /user/update.fwpkg,确认客户代码 UPG_FILE_NAME这个枚举值是否与默认路径一致\r
+4、默认开启特性宏 SUPPORT_AUTO_OTA_SERVER(client/server均需要开启),对无需此特性客户手动关闭宏即可\r
+5、需要开启CONFIG_DFX_SUPPORT_DIAG_UP_MACHINE=1\r
+6、客户需要开发:版本校验用于check是否升级,实现弱引用 msg_center_ota_upg_version_check/msg_center_ota_get_src_ver\r
+\r
+\r
+使用说明:\r
+1、升级主板使用AT^STACKINFO查看任务auto_ota是否存在,不存在需要检查版本是否正确\r
+2、升级主板的任务auto_ota自动运行进行扫描/ACL链接/SPP链接/升级文件trans/升级指令/记录已升级设备MAC/断开SPP/断开ACL/ ... 重复如上操作\r
+\r
+补丁特别说明:(各AE、补丁出口人特别注意!!!)\r
+因SDK制作,需要同时开启SUPPORT_AUTO_OTA/SUPPORT_AUTO_OTA_SERVER这两个宏,客户拿到补丁集成分两种情况\r
+1、需要自动升级的客户:手表版本应该只开启SUPPORT_AUTO_OTA_SERVER\r
+2、不需要自动升级的客户:这两个宏均不开启\r
diff --git a/bt_ctkd_feature.txt b/bt_ctkd_feature.txt
new file mode 100644 (file)
index 0000000..7747fb5
--- /dev/null
@@ -0,0 +1,27 @@
+苹果手机一键双连(安卓手机连接,请关闭一键双连开关)\r
+使能后,连接前执行\r
+1、调用以下接口,配置BLE安全连接参数\r
+errcode_t gap_ble_set_sec_param(gap_ble_sec_params_t *params);\r
+AT命令:\r
+AT^BTTESTCMD=13 58 <bondable> <io_capability> <sc_enable 1:安全连接 0:非安全连接> <sc_mode>\r
+AT^BTTESTCMD=13 58 1 3 1 2\r
+2、调用以下接口,打开一键双连开关\r
+errcode_t gap_ble_set_ctkd_enable(bool ctkd_enable);\r
+AT命令:\r
+AT^BTTESTCMD=13 61 <ctkd_enable 1:开启 0:关闭>\r
+AT^BTTESTCMD=13 61 1\r
+\r
+3、苹果手机app发起BLE连接配对后,会同时配对上BT,\r
+3-1、如果手表开启了自动回连,这时手表会自动回连BT,手机系统蓝牙界面,只显示一个手表设备(BT和BLE合成一个设备)\r
+3-2、如果手表没有开自动回连,需要上层应用适配,BT配对状态上报后调用下BT回连接口,回连成功后,手机系统蓝牙界面,只显示一个手表设备(BT和BLE合成一个设备)\r
+\r
+3-2-1、配置是否自动回连(使能前调用):\r
+errcode_t bts_set_features(bts_feature_t *feature);\r
+AT命令:\r
+AT^BTTESTCMD=1 32 <特性配置 0:开启自动回连 1:关闭自动回连>\r
+AT^BTTESTCMD=1 32 0\r
+\r
+3-2-2、BT回连接口:\r
+errcode_t gap_reconnect_media_device(const bd_addr_t *addr);\r
+AT命令:\r
+AT^BTTESTCMD=1 34 <addr-大端>
\ No newline at end of file
index 3f761f3..8ab629f 100644 (file)
@@ -40,6 +40,7 @@
 #include "arch_port.h"
 #include "flash_porting.h"
 #include "clocks_switch.h"
+#include "pm_clocks.h"
 #include "pmu_pg.h"
 #include "efuse.h"
 #if defined(__LITEOS__)
 #define IMG_SEC        0
 #define IMG_HIFI       1
 #define SW_PRINT_DELAY 200ULL
-#define CSR_WST_VAL        0x4 // 向寄存器目标位写入的值(0b100)
-#define CSR_WST_POS        0xb // 寄存器偏移,结合CSR_WST_VAL改变11、12、13位的值
-#define CSR_WST_MASK       0xffffc7ff
+
+#define CSR_WST_VAL                             0x4
+#define CSR_WST_POS                             0xb
+#define XIP_CACHE_INTR_MASK                     0xa3006128
+#define XIP_CACHE_WRITE_DATA_DELAY_INTR_MASK    0x8
+#define XIP_CACHE_ENABLE_WRITE_INTR_MASK        0x1
 
 extern uint32_t __l2m_gpu_text_start;
 extern uint32_t __l2m_gpu_text_load;
@@ -72,6 +76,7 @@ extern uint32_t __l2m_gpu_bss_end;
 extern uint32_t __l2m_gpu_data_start;
 extern uint32_t __l2m_gpu_data_load;
 extern uint32_t __l2m_gpu_data_end;
+#ifndef CONFIG_PSRAM_SUPPORT
 extern uint32_t __l2m_dsp_text_start;
 extern uint32_t __l2m_dsp_text_load;
 extern uint32_t __l2m_dsp_text_end;
@@ -80,6 +85,7 @@ extern uint32_t __l2m_dsp_bss_end;
 extern uint32_t __l2m_dsp_data_start;
 extern uint32_t __l2m_dsp_data_load;
 extern uint32_t __l2m_dsp_data_end;
+#endif
 
 extern char __heap_start;
 extern void *g_intheap_size;
@@ -132,42 +138,26 @@ static void OsCacheInit(void)
 
 static void copy_from_flash_to_l2ram(void)
 {
-    errno_t ret;
     uint32_t size = (uint32_t)(&__l2m_gpu_text_end) - (uint32_t)(&__l2m_gpu_text_start);
-    ret = memcpy_s((void *)((uint32_t)(&__l2m_gpu_text_start)), size, (void *)(uint32_t)(&__l2m_gpu_text_load), size);
-    if (ret != EOK) {
-        PRINT("l2m gpu text memcpy fail."NEWLINE);
-    }
+    (void)memcpy_s((void *)((uint32_t)(&__l2m_gpu_text_start)), size, (void *)(uint32_t)(&__l2m_gpu_text_load), size);
 
     size = (uint32_t)(&__l2m_gpu_data_end) - (uint32_t)(&__l2m_gpu_data_start);
-    ret = memcpy_s((void *)((uint32_t)(&__l2m_gpu_data_start)), size, (void *)(uint32_t)(&__l2m_gpu_data_load), size);
-    if (ret != EOK) {
-        PRINT("l2m gpu data memcpy fail."NEWLINE);
-    }
+    (void)memcpy_s((void *)((uint32_t)(&__l2m_gpu_data_start)), size, (void *)(uint32_t)(&__l2m_gpu_data_load), size);
 
     size = (uint32_t)(&__l2m_gpu_bss_end) - (uint32_t)(&__l2m_gpu_bss_start);
-    ret = memset_s((void *)((uint32_t)(&__l2m_gpu_bss_start)), size, 0, size);
-    if (ret != EOK) {
-        PRINT("l2m gpu bss memset fail."NEWLINE);
-    }
+    (void)memset_s((void *)((uint32_t)(&__l2m_gpu_bss_start)), size, 0, size);
+
+#ifndef CONFIG_PSRAM_SUPPORT
 #if DSP_L2RAM_AREA_SIZE < DSP_L2RAM_AREA_TOTAL
     size = (uint32_t)(&__l2m_dsp_text_end) - (uint32_t)(&__l2m_dsp_text_start);
-    ret = memcpy_s((void *)((uint32_t)(&__l2m_dsp_text_start)), size, (void *)(uint32_t)(&__l2m_dsp_text_load), size);
-    if (ret != EOK) {
-        PRINT("l2m dsp text memcpy fail."NEWLINE);
-    }
+    (void)memcpy_s((void *)((uint32_t)(&__l2m_dsp_text_start)), size, (void *)(uint32_t)(&__l2m_dsp_text_load), size);
 
     size = (uint32_t)(&__l2m_dsp_data_end) - (uint32_t)(&__l2m_dsp_data_start);
-    ret = memcpy_s((void *)((uint32_t)(&__l2m_dsp_data_start)), size, (void *)(uint32_t)(&__l2m_dsp_data_load), size);
-    if (ret != EOK) {
-        PRINT("l2m dsp data memcpy fail."NEWLINE);
-    }
+    (void)memcpy_s((void *)((uint32_t)(&__l2m_dsp_data_start)), size, (void *)(uint32_t)(&__l2m_dsp_data_load), size);
 
     size = (uint32_t)(&__l2m_dsp_bss_end) - (uint32_t)(&__l2m_dsp_bss_start);
-    ret = memset_s((void *)((uint32_t)(&__l2m_dsp_bss_start)), size, 0, size);
-    if (ret != EOK) {
-        PRINT("l2m dsp bss memset fail."NEWLINE);
-    }
+    (void)memset_s((void *)((uint32_t)(&__l2m_dsp_bss_start)), size, 0, size);
+#endif
 #endif
 }
 
@@ -177,7 +167,6 @@ static void service_init(void)
     hal_register_exception_dump_callback(log_exception_dump);
 
     uapi_partition_init();
-    PRINT("partition init success"NEWLINE);
 }
 
 static void pio_func_init(void)
@@ -242,7 +231,10 @@ static void chip_xip_init(void)
 {
     hal_xip_init();
     hal_xip_config_interrupt_type(XIP_0, XIP_INTR_NMI);
-    write_csr(0x7d0, (read_csr(0x7d0) & CSR_WST_MASK) | (CSR_WST_VAL << CSR_WST_POS)); // 调整写cache的阈值,防止opi xip报nmi中断
+    write_csr(0x7d0, read_csr(0x7d0) | (CSR_WST_VAL << CSR_WST_POS));
+    // Mask interrupts caused by CACHE2AHBM module state machine timeout
+    reg16_clrbit(XIP_CACHE_INTR_MASK, XIP_CACHE_WRITE_DATA_DELAY_INTR_MASK);
+    reg16_clrbit(XIP_CACHE_INTR_MASK, XIP_CACHE_ENABLE_WRITE_INTR_MASK);
 }
 
 static void chip_enable_ulp_ram(void)
@@ -251,6 +243,17 @@ static void chip_enable_ulp_ram(void)
     writew(0x5700450c, 0x1);
 }
 
+static void clocks_set_xip_div(void)
+{
+    // xip cache div = 2
+    writew(0xa3006014, 0x1);  // sync mode = 1, high freq
+    regw_clrbits(0xa3006000, 0x24, 0x0, 0x1);       // close xip cache clk en
+    regw_clrbits(0xa3006000, 0x24, 0x3, 0x1);       // close xip cache div en
+    regw_setbits(0xa3006000, 0x24, 0x4, 0x2, 0x2);  // xip cache div = 2 from xip_opi
+    regw_setbits(0xa3006000, 0x24, 0x3, 0x1, 0x1);  // open xip cache div en
+    regw_setbits(0xa3006000, 0x24, 0x0, 0x1, 0x1);  // open xip cache clk en
+}
+
 static void chip_init(void)
 {
     chip_enable_ulp_ram();
@@ -277,7 +280,8 @@ static void chip_init(void)
     uapi_dma_init();
     uapi_dma_open();
 
-    cpu_trace_enable_mcpu_repeat();
+    clocks_set_xip_div();
+    uapi_clocks_init();
 
     uapi_pm_control(PM_SDIO_POWER_UP_AND_RUN);
 }
index 1e2d853..0455b99 100644 (file)
@@ -24,6 +24,7 @@
 #include "arch_encoding.h"\r
 #include "arch_port.h"\r
 #include "debug_print.h"\r
+#include "button_porting.h"\r
 #ifdef CONFIG_CLDO1PD_SUPPORT\r
 #include "pmu_ldo.h"\r
 #endif\r
@@ -168,4 +169,6 @@ void chip_init(void)
     pmu_control_cldo1_sleep_bypass(TURN_OFF);\r
 #endif\r
     chip_get_tempe();\r
+\r
+    uapi_ulp_systick_soc_calibration();\r
 }
\ No newline at end of file
index c070630..1fa1209 100644 (file)
@@ -74,6 +74,9 @@
 #include "time.h"
 #include "log_panic.h"
 #include "nandflash_config.h"
+#ifdef SUPPORT_AUTO_OTA
+#include "auto_ota_service.h"
+#endif
 
 #define EMMC_BASE_ADDR              0x52062000
 
@@ -87,6 +90,7 @@
 #define TASK_PRIORITY_DFX_MSG       (osPriority_t)(18)
 #define TASK_PRIORITY_TRANSMIT      (osPriority_t)(20)
 #define TASK_PRIORITY_SAVE_FILE     (osPriority_t)(36)
+#define TASK_PRIORITY_AUTO_OTA      (osPriority_t)(36)
 
 #define BTH_SDK_STACK_SIZE          0xC00
 #define AT_GRAPHIC_STACK_SIZE       0xC00
 #define AT_OHOSFWK_STACK_SIZE       0xC00
 #define APP_MAIN_STACK_SIZE         0xC00
 #define SAVE_FILE_STACK_SIZE        0xC00
+#define AUTO_OTA_STACK_SIZE         0xC00
 
 #define TIME_MAX                64
 #define USEC_TO_MILLI           1000
@@ -176,6 +181,10 @@ app_task_definition_t g_app_tasks[] = {
 #endif
     { { "save_file", 0, NULL, 0, NULL, SAVE_FILE_STACK_SIZE, TASK_PRIORITY_SAVE_FILE, 0, 0 },
       (osThreadFunc_t)save_file_main, NULL, NULL, USE_EXTEND_MEM },
+#ifdef SUPPORT_AUTO_OTA
+    { { "auto_ota", 0, NULL, 0, NULL, AUTO_OTA_STACK_SIZE, TASK_PRIORITY_AUTO_OTA, 0, 0 },
+      (osThreadFunc_t)auto_ota_task_main, NULL, NULL, USE_DTCM_MEM },
+#endif
 };
 
 osSemaphoreId_t get_save_file_semaphore(void)
index 50ace28..0e54ea2 100644 (file)
@@ -10,3 +10,6 @@ add_subdirectory_if_exist(service)
 add_subdirectory_if_exist(ohos_startup)
 add_subdirectory_if_exist(xts_adapt)
 add_subdirectory_if_exist(alipay)
+if("SUPPORT_AUTO_OTA" IN_LIST DEFINES)
+    add_subdirectory_if_exist(auto_ota)
+endif()
\ No newline at end of file
index 5322e54..0a7635b 100644 (file)
@@ -14,8 +14,8 @@
 #include "osal_task.h"\r
 #include "alipay_feature.h"\r
 #include "securec.h"\r
-#ifdef JS_ENABLE\r
-#include "msg_center_msg.h"\r
+#ifdef SUPPORT_AT_OHOSFWK\r
+#include "BluetoothWrapper.h"\r
 #endif\r
 \r
 /* Gatt service UUID */\r
 #define ALIPAY_BLE_ADV_TYPE_LENTH 3\r
 #define ALIPAY_BLE_ADV_UUID_LENTH 4\r
 #define ALIPAY_BLE_DEFAULT_NAME  "WatchDemo"\r
-#define ALIPAY_BLE_DEFAULT_NAME_LEN 9 \r
+#define ALIPAY_BLE_DEFAULT_NAME_LEN 9\r
+#define ALIPAY_DESC_HANDLE_NUM 2\r
 \r
 // Alipay 蓝牙模块全局变量\r
 static gap_ble_callbacks_t g_alipay_gapble_cbs;\r
 static gatts_callbacks_t g_alipay_gatts_cbs;\r
 static bool g_alipay_adv_start_state = false;\r
 static uint16_t g_alipay_server_id = 1;\r
-static uint16_t g_alipay_server_handle = 0;\r
+static uint16_t g_alipay_characteristic_handle = 0;\r
+static uint16_t g_alipay_descriptor_handle[ALIPAY_DESC_HANDLE_NUM] = { 0 };\r
+static uint16_t g_alipay_svr_handle = 0;\r
 static uint16_t g_alipay_conn_id = 0;\r
 static uint8_t g_alipay_character_buf[ALIPAY_CHARACTERISTIC_MAX_LENGTH] = {0};\r
 static bool g_alipay_ble_init_flag = false;\r
@@ -81,7 +84,7 @@ static void svr_alipay_ble_adv_data_set(int adv_id)
         ALIPAY_PRINT_ERR(0, "gap_ble_get_local_name fail, name:%s,len:%u,ret:%u.", ble_name, ble_name_len, ret);\r
         memset_s(ble_name, ALIPAY_BLE_NAME_LENGTH, 0, ALIPAY_BLE_NAME_LENGTH);\r
         memcpy_s(ble_name, ALIPAY_BLE_NAME_LENGTH, ALIPAY_BLE_DEFAULT_NAME, ALIPAY_BLE_DEFAULT_NAME_LEN);\r
-        ble_name_len = ALIPAY_BLE_DEFAULT_NAME_LEN + 1;        \r
+        ble_name_len = ALIPAY_BLE_DEFAULT_NAME_LEN + 1;\r
     }\r
     ALIPAY_PRINT_DEBUG(0, "gap_ble_get_local_name name:%s,len:%u,ret:%u.", ble_name, ble_name_len, ret);\r
 \r
@@ -152,29 +155,22 @@ void svr_alipay_ble_adv_start(void)
 \r
 static void svr_alipay_ble_connstate_change_cb(unsigned short conn_id, bd_addr_t *addr, gap_ble_conn_state_t conn_state,\r
     gap_ble_pair_state_t pair_state, gap_ble_disc_reason_t disc_reason)\r
-\r
 {\r
     ALIPAY_PRINT_DEBUG(0, "BleConnStateChangeCallback conn_id 0x%x, conn_state 0x%x, pair_state 0x%x", conn_id,\r
         conn_state, pair_state);\r
-    g_alipay_conn_id = conn_id;\r
-    if (GAP_BLE_STATE_DISCONNECTED == conn_state) { // restart ble adv when disconnected\r
-        #ifdef JS_ENABLE\r
-        /* 通知msg_center,ble状态仍用bt状态,此处不区分 */\r
-        SendMsgToMsgCenterService(BT_DISCONNECTED_TO_MSGCENTER, 0, NULL, 0);\r
-        #endif\r
-        svr_alipay_ble_adv_start();\r
+    if (GAP_BLE_STATE_DISCONNECTED == conn_state) {\r
+        g_alipay_conn_id = 0;\r
     } else {\r
-        svr_alipay_set_adv_start_state(false);\r
-        #ifdef JS_ENABLE\r
-        SendMsgToMsgCenterService(BT_CONNECTED_TO_MSGCENTER, 0, NULL, 0);\r
-        #endif\r
+        g_alipay_conn_id = conn_id;\r
     }\r
 }\r
 \r
 static void svr_alipay_ble_adv_start_cb(uint8_t adv_id, adv_status_t status)\r
 {\r
-    ALIPAY_PRINT_DEBUG(0, "BleAdvStartCallback adv_id: %d, status:%d\n", adv_id, status);\r
-    svr_alipay_set_adv_start_state(true);\r
+    if (adv_id == ALIPAY_BLE_ADV_ID) {\r
+        ALIPAY_PRINT_DEBUG(0, "BleAdvStartCallback adv_id: %d, status:%d\n", adv_id, status);\r
+        svr_alipay_set_adv_start_state(true);\r
+    }\r
 }\r
 \r
 static void svr_alipay_ble_set_adv_data_cb(uint8_t adv_id, errcode_t status)\r
@@ -182,18 +178,28 @@ static void svr_alipay_ble_set_adv_data_cb(uint8_t adv_id, errcode_t status)
     ALIPAY_PRINT_DEBUG(0, "BleAdvSetDataCallback adv_id: %d, status:%d\n", adv_id, status);\r
 }\r
 \r
+static void svr_alipay_ble_terminate_adv_cb(uint8_t adv_id, adv_status_t status)\r
+{\r
+    if (adv_id == ALIPAY_BLE_ADV_ID) {\r
+        ALIPAY_PRINT_DEBUG(0, "BleTerminateAdvCallback adv_id: %d, status:%d\n", adv_id, status);\r
+        svr_alipay_set_adv_start_state(false);\r
+    }\r
+}\r
+\r
 static void svr_alipay_ble_adv_stop_cb(uint8_t adv_id, adv_status_t status)\r
 {\r
-    ALIPAY_PRINT_DEBUG(0, "BleAdvStopCallback adv_id: %d, status:%d\n", adv_id, status);\r
+    if (adv_id == ALIPAY_BLE_ADV_ID) {\r
+        ALIPAY_PRINT_DEBUG(0, "BleAdvStopCallback adv_id: %d, status:%d\n", adv_id, status);\r
+        svr_alipay_set_adv_start_state(false);\r
+    }\r
 }\r
 \r
 static void svr_alipay_bt_gatts_service_add_cb(uint8_t server_id, bt_uuid_t *uuid, uint16_t srv_handle,\r
     errcode_t status)\r
 {\r
-    ALIPAY_PRINT_DEBUG(0, "BtGattsServiceAddCallback 0x%x 0x%x 0x%x 0x%x", status, server_id, srv_handle,\r
-        *((uint16_t *)uuid->uuid));\r
-    int ret;\r
     if ((uuid->uuid_len == sizeof(uint16_t)) && (*((uint16_t *)uuid->uuid) == ALIPAYY_SERVICE_ID)) {\r
+        ALIPAY_PRINT_DEBUG(0, "BtGattsServiceAddCallback 0x%x 0x%x 0x%x 0x%x",\r
+                           status, server_id, srv_handle, *((uint16_t *)uuid->uuid));\r
         uint16_t id = ALIPAYY_CHARACTERISTIC_ID;\r
         gatts_add_chara_info_t character;\r
         uint16_t value = 0;\r
@@ -207,22 +213,20 @@ static void svr_alipay_bt_gatts_service_add_cb(uint8_t server_id, bt_uuid_t *uui
         character.value_len = ALIPAY_CHARACTERISTIC_MAX_LENGTH;\r
         character.value = g_alipay_character_buf;\r
 \r
-        ret = gatts_add_characteristic(server_id, srv_handle, &character);\r
+        int ret = gatts_add_characteristic(server_id, srv_handle, &character);\r
         if (ret != ERRCODE_SUCC) {\r
             ALIPAY_PRINT_ERR(0, "gatts_add_characteristic fail, ret:%u.\r\n", ret);\r
         }\r
+        g_alipay_svr_handle = srv_handle;\r
     }\r
 }\r
 \r
 static void svr_alipay_bt_gatts_characteristic_add_cb(uint8_t server_id, bt_uuid_t *uuid, uint16_t srv_handle,\r
     gatts_add_character_result_t *result, errcode_t status)\r
 {\r
-    ALIPAY_PRINT_DEBUG(0, "BtGattsCharacteristicAddCallback 0x%x 0x%x 0x%x 0x%x 0x%x", status, server_id, srv_handle,\r
-        result->handle, result->value_handle);\r
-\r
-    g_alipay_server_handle = result->value_handle;\r
-\r
     if ((uuid->uuid_len == sizeof(uint16_t)) && (*((uint16_t *)uuid->uuid) == ALIPAYY_CHARACTERISTIC_ID)) {\r
+        ALIPAY_PRINT_DEBUG(0, "BtGattsCharacteristicAddCallback 0x%x 0x%x 0x%x 0x%x 0x%x",\r
+                           status, server_id, srv_handle, result->handle, result->value_handle);\r
         uint8_t bas_ccc_val[] = {\r
             0x01,\r
             0x00\r
@@ -260,19 +264,28 @@ static void svr_alipay_bt_gatts_characteristic_add_cb(uint8_t server_id, bt_uuid
         if (ret != ERRCODE_SUCC) {\r
             ALIPAY_PRINT_ERR(0, "gatts_start_service fail, ret:%u.\r\n", ret);\r
         }\r
+        g_alipay_characteristic_handle = result->value_handle;\r
     }\r
 }\r
 \r
 static void svr_alipay_bt_gatts_descriptor_add_cb(uint8_t server_id, bt_uuid_t *uuid, uint16_t srv_handle,\r
     uint16_t desc_handle, errcode_t status)\r
 {\r
-    ALIPAY_PRINT_DEBUG(0, "BtGattsDescriptorAddCallback 0x%x 0x%x 0x%x 0x%x", status, server_id, srv_handle,\r
-        desc_handle);\r
+    if (g_alipay_svr_handle == srv_handle) {\r
+        ALIPAY_PRINT_DEBUG(0, "BtGattsDescriptorAddCallback 0x%x 0x%x 0x%x 0x%x", status, server_id, srv_handle,\r
+            desc_handle);\r
+        static uint8_t desc_handle_count = 0;\r
+        desc_handle_count = desc_handle_count % ALIPAY_DESC_HANDLE_NUM;\r
+        g_alipay_descriptor_handle[desc_handle_count] = desc_handle;\r
+        desc_handle_count++;\r
+    }\r
 }\r
 \r
 static void svr_alipay_bt_gatts_service_start_cb(uint8_t server_id, uint16_t srv_handle, errcode_t status)\r
 {\r
-    ALIPAY_PRINT_DEBUG(0, "BtGattsServiceStartCallback 0x%x 0x%x 0x%x", status, server_id, srv_handle);\r
+    if (g_alipay_svr_handle == srv_handle) {\r
+        ALIPAY_PRINT_DEBUG(0, "BtGattsServiceStartCallback 0x%x 0x%x 0x%x", status, server_id, srv_handle);\r
+    }\r
 }\r
 \r
 static void svr_alipay_bt_gatts_service_stop_cb(uint8_t server_id, uint16_t srv_handle, errcode_t status)\r
@@ -294,11 +307,16 @@ static void svr_alipay_bt_gatts_req_read_cb(uint8_t server_id, uint16_t conn_id,
 static void svr_alipay_bt_gatts_req_write_cb(uint8_t server_id, uint16_t conn_id, gatts_req_write_cb_t *write_cb_para,\r
     errcode_t status)\r
 {\r
-    ALIPAY_PRINT_DEBUG(0, "write callback,str:%s len:%u", write_cb_para->value, write_cb_para->length);\r
-    uint8_t *msg_data = write_cb_para->value;\r
-    errcode_t ret = svr_alipay_msg_write(ALIPAY_MSG_BT, msg_data, write_cb_para->length, false);\r
-    if (ret != ERRCODE_SUCC) {\r
-        ALIPAY_PRINT_ERR(0, "svr_alipay_msg_write fail, ret:%u.\r\n", ret);\r
+    if ((g_alipay_characteristic_handle == write_cb_para->handle) ||\r
+        (g_alipay_descriptor_handle[0] == write_cb_para->handle) ||\r
+        (g_alipay_descriptor_handle[1] == write_cb_para->handle)) {\r
+        ALIPAY_PRINT_DEBUG(0, "write callback,handle:%u str:%s len:%u",\r
+                           write_cb_para->handle, write_cb_para->value, write_cb_para->length);\r
+        uint8_t *msg_data = write_cb_para->value;\r
+        errcode_t ret = svr_alipay_msg_write(ALIPAY_MSG_BT, msg_data, write_cb_para->length, false);\r
+        if (ret != ERRCODE_SUCC) {\r
+            ALIPAY_PRINT_ERR(0, "svr_alipay_msg_write fail, ret:%u.\r\n", ret);\r
+        }\r
     }\r
     return;\r
 }\r
@@ -306,13 +324,13 @@ static void svr_alipay_bt_gatts_req_write_cb(uint8_t server_id, uint16_t conn_id
 void svr_alipay_bt_gatts_noyify(uint8_t *data, uint16_t data_len)\r
 {\r
     gatts_ntf_ind_t data_info;\r
-    data_info.attr_handle = g_alipay_server_handle;\r
+    data_info.attr_handle = g_alipay_characteristic_handle;\r
     data_info.value = data;\r
     data_info.value_len = data_len;\r
 \r
     errcode_t ret = gatts_notify_indicate(g_alipay_server_id, g_alipay_conn_id, &data_info);\r
     ALIPAY_PRINT_DEBUG(0, "gatts_notify_indicate ret:0x%x. serverid:%u,conn_id:%u,handle:%u.", ret, g_alipay_server_id,\r
-        g_alipay_conn_id, g_alipay_server_handle);\r
+        g_alipay_conn_id, g_alipay_characteristic_handle);\r
 }\r
 \r
 static void svr_alipay_btcallback_reg(void)\r
@@ -321,7 +339,12 @@ static void svr_alipay_btcallback_reg(void)
     g_alipay_gapble_cbs.start_adv_cb = svr_alipay_ble_adv_start_cb;\r
     g_alipay_gapble_cbs.stop_adv_cb = svr_alipay_ble_adv_stop_cb;\r
     g_alipay_gapble_cbs.set_adv_data_cb = svr_alipay_ble_set_adv_data_cb;\r
+    g_alipay_gapble_cbs.terminate_adv_cb = svr_alipay_ble_terminate_adv_cb;\r
+#ifndef SUPPORT_AT_OHOSFWK\r
     gap_ble_register_callbacks(&g_alipay_gapble_cbs);\r
+#else\r
+    wrapper_gap_ble_register_callbacks(&g_alipay_gapble_cbs);\r
+#endif\r
 \r
     g_alipay_gatts_cbs.add_service_cb = svr_alipay_bt_gatts_service_add_cb;\r
     g_alipay_gatts_cbs.add_characteristic_cb = svr_alipay_bt_gatts_characteristic_add_cb;\r
@@ -332,7 +355,11 @@ static void svr_alipay_btcallback_reg(void)
     g_alipay_gatts_cbs.read_request_cb = svr_alipay_bt_gatts_req_read_cb;\r
     g_alipay_gatts_cbs.write_request_cb = svr_alipay_bt_gatts_req_write_cb;\r
     g_alipay_gatts_cbs.mtu_changed_cb = NULL;\r
+#ifndef SUPPORT_AT_OHOSFWK\r
     gatts_register_callbacks(&g_alipay_gatts_cbs);\r
+#else\r
+    wrapper_gatts_register_callbacks(&g_alipay_gatts_cbs);\r
+#endif\r
 }\r
 \r
 static void svr_alipay_bt_init_gatts(void)\r
@@ -344,7 +371,11 @@ static void svr_alipay_bt_init_gatts(void)
 \r
     uuid.uuid_len = sizeof(service_id);\r
     memcpy_s(uuid.uuid, sizeof(uuid.uuid), (char *)&service_id, sizeof(service_id));\r
+#ifndef SUPPORT_AT_OHOSFWK\r
     ret = gatts_register_server(&uuid, &server_id); /* 注册gatt server */\r
+#else\r
+    ret = wrapper_gatts_register_server(&uuid, &server_id); /* 注册gatt server */\r
+#endif\r
     if (ret != ERRCODE_SUCC) {\r
         ALIPAY_PRINT_ERR(0, "gatts_register_server ret:%u.\r\n", ret);\r
     }\r
@@ -352,7 +383,11 @@ static void svr_alipay_bt_init_gatts(void)
     g_alipay_server_id = server_id;\r
     uuid.uuid_len = sizeof(service_id);\r
     memcpy_s(uuid.uuid, sizeof(uuid.uuid), (char *)&service_id, sizeof(service_id));\r
+#ifndef SUPPORT_AT_OHOSFWK\r
     ret = gatts_add_service(server_id, &uuid, true);\r
+#else\r
+    ret = wrapper_gatts_add_service(server_id, &uuid, true);\r
+#endif\r
     if (ret != ERRCODE_SUCC) {\r
         ALIPAY_PRINT_ERR(0, "gatts_add_service ret:%u.\r\n", ret);\r
     }\r
@@ -361,10 +396,12 @@ static void svr_alipay_bt_init_gatts(void)
 \r
 void svr_alipay_bluetooth_init(void)\r
 {\r
+#ifndef SUPPORT_AT_OHOSFWK\r
     bool ret = enable_bt_stack();\r
     if (ret != ERRCODE_SUCC) {\r
         ALIPAY_PRINT_ERR(0, "enable_bt_stack ret:%u.\r\n", ret);\r
     }\r
+#endif\r
     if (g_alipay_ble_init_flag == true) {\r
         return;\r
     }\r
diff --git a/code/sdk/application/wearable/auto_ota/CMakeLists.txt b/code/sdk/application/wearable/auto_ota/CMakeLists.txt
new file mode 100644 (file)
index 0000000..ab05cf1
--- /dev/null
@@ -0,0 +1,58 @@
+#===============================================================================
+# @brief    cmake make file
+# Copyright (c) 2023 @CompanyNameMagicTag
+#===============================================================================
+set(COMPONENT_NAME "auto_ota")
+
+set(SOURCES
+    ${CMAKE_CURRENT_SOURCE_DIR}/auto_ota_service.c
+)
+
+set(PUBLIC_HEADER
+    ${CMAKE_CURRENT_SOURCE_DIR}
+)
+
+set(PRIVATE_HEADER
+    ${ROOT_DIR}/protocol/bt/host/bt/bts/sdk/inc
+    ${ROOT_DIR}/protocol/bt/host/bt/bts/sdk/inc/stack_api
+    ${ROOT_DIR}/protocol/bt/host/bt/bts/sdk/src/inc
+    ${ROOT_DIR}/protocol/bt/host/bt/bts/host/inc
+    ${ROOT_DIR}/protocol/bt/host/bt/bts/service/wear/gdk/inc
+    ${ROOT_DIR}/protocol/bt/host/bt/bts/sdk/src/stack_api
+    ${ROOT_DIR}/protocol/bt/host/bt/bts/bg_common/include/log
+    ${ROOT_DIR}/protocol/bt/host/bt/bts/bg_common/include/sdk_common
+    ${ROOT_DIR}/protocol/bt/host/bt/bts/bg_common/include/host
+    ${ROOT_DIR}/protocol/bt/host/bt/bts/bg_common/include/hci
+    ${ROOT_DIR}/protocol/bt/host/bt/bts/bg_common/include/gdk_common
+    ${ROOT_DIR}/protocol/bt/host/bt/bts/bg_common/include/ahi_common
+    ${ROOT_DIR}/protocol/bt/host/bt/bts/bg_common/include/ahi_a
+    ${ROOT_DIR}/protocol/bt/host/bt/bts/brandy_service/service/src
+    ${ROOT_DIR}/protocol/bt/host/bt/bts/brandy_service/service/src/base
+    ${ROOT_DIR}/protocol/bt/host/bt/bts/bt_sample/sample_common
+)
+
+set(PRIVATE_DEFINES
+)
+
+set(PUBLIC_DEFINES
+)
+
+# use this when you want to add ccflags like -include xxx
+set(COMPONENT_PUBLIC_CCFLAGS
+)
+
+set(COMPONENT_CCFLAGS
+    -Wno-implicit-function-declaration
+    -Wno-unused-parameter
+    -Wno-int-conversion
+)
+
+set(WHOLE_LINK
+    true
+)
+
+set(MAIN_COMPONENT
+    false
+)
+
+build_component()
diff --git a/code/sdk/application/wearable/auto_ota/auto_ota_service.c b/code/sdk/application/wearable/auto_ota/auto_ota_service.c
new file mode 100644 (file)
index 0000000..3f7d962
--- /dev/null
@@ -0,0 +1,601 @@
+/**
+ * Copyright (c) CompanyNameMagicTag 2021-2022. All rights reserved.
+ * Description: Power display service.
+ * Author:
+ * Create:
+ */
+
+#include <soc_osal.h>
+#include <osal_list.h>
+#include <securec.h>
+#include "cmsis_os2.h"
+#include "systick.h"
+#include "soc_errno.h"
+#include "common_def.h"
+#include "bts_def.h"
+#include "bts_br_gap.h"
+#include "oal_interface.h"
+#include "wearable_log.h"
+#include "local_device_manager.h"
+#include "remote_device_manager.h"
+#include "spp_service.h"
+#include "bts_spp.h"
+#include "btsrv_log.h"
+#include "bts_feature.h"
+#include "auto_ota_service.h"
+#include "msg_center_ota.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define AUTO_OTA_RETRY_TIMES 5
+#define AUTO_OTA_SEM_TIMEOUT (60*60*1000) /* 等待信号量超时时间,考虑资源大包传输时间长场景 */
+#define AUTO_OTA_DELAY_MS 100
+#define AUTO_OTA_SPP_TASK_STACK_SIZE 2048
+#define AUTO_OTA_SPP_TASK_PRI 20
+#define ADDR_MAC_LEN 6
+#define AUTO_OTA_RECORD_DEV_MAX_NUM 200 /* 设计成客户可定制 */
+#define AUTO_OTA_SCAN_WAIT_TIME  (25*1000) /* 客户可定制 */
+#define AUTO_OTA_UPDATE_RSSI_WAIT_TIME  (20*1000) /* 客户可定制 */
+#define AUTO_OTA_INQUERY_DEV_NUM   20 /* 客户可定制 */
+#define AUTO_OTA_OPRATE_DELAY_MS (2*1000) /* 客户可定制 */
+#define AUTO_OTA_ACL_CONN_DELAY (6*1000) /* 客户可定制 */
+#define AUTO_OTA_SPP_RECONN_TIMEOUT 10000 /* 客户可定制 */
+#define AUTO_OTA_WAIT_PREPARE_TIMEOUT (2 * 1000) /* 客户可定制, 用于更换升级包场景 */
+#define AUTO_OTA_DEV_NAME_PREFIX "Watch" /* 客户基于自己产品定义修改bt name前缀,用于黑名单管理 */
+#define AUTO_OTA_DEV_NAME_PREFIX_LEN 5
+#define AUTO_OTA_DST_UPG_VER_PATH "/user/dst_ver.txt"
+
+bool g_auto_ota_found_list_init = false;
+struct osal_list_head g_auto_ota_found_dev_list_head;
+osSemaphoreId_t g_auto_ota_transmit_done_sem = NULL;
+uint8_t g_auto_ota_upload_mode = 0; /* 默认是0,不阻塞auto_ota */
+uint8_t g_auto_ota_mac_tmp[ADDR_MAC_LEN] = {0};
+static bool g_anti_back_link_flag = false;
+
+typedef struct auto_ota_record_dev {
+    uint8_t addr[ADDR_MAC_LEN];   /* mac地址 */
+    uint8_t has_been_updated; /* 标记是否已经升级 */
+    uint8_t reserved;         /* 对齐 */
+} auto_ota_record_dev_t;
+
+static auto_ota_record_dev_t g_auto_ota_record_dev[AUTO_OTA_RECORD_DEV_MAX_NUM];
+
+typedef struct {
+    struct osal_list_head node;
+    bd_addr_t bd_addr;
+    uint8_t name[BD_NAME_LEN];
+    int32_t cod;
+    int32_t rssi;
+} auto_ota_found_dev_list_node;
+
+typedef struct {
+    uint32_t sample_mode;
+    spp_create_socket_para_t socket_params;
+    bd_addr_t addr;
+} auto_ota_spp_connect_task_params;
+
+/* 数据管理 */
+void auto_ota_dev_init(void)
+{
+    for (uint8_t i = 0; i < AUTO_OTA_RECORD_DEV_MAX_NUM; i++) {
+        (void)memset_s(&g_auto_ota_record_dev[i], sizeof(auto_ota_record_dev_t), 0, sizeof(auto_ota_record_dev_t));
+    }
+    return;
+}
+
+void auto_ota_dev_add(uint8_t *addr)
+{
+    for (uint16_t i = 0; i < AUTO_OTA_RECORD_DEV_MAX_NUM; i++) {
+        if (g_auto_ota_record_dev[i].has_been_updated == 0) {
+            (void)memcpy_s(g_auto_ota_record_dev[i].addr, ADDR_MAC_LEN, addr, ADDR_MAC_LEN);
+            g_auto_ota_record_dev[i].has_been_updated = 1;
+            WEARABLE_LOGI(WEARABLE_LOG_MODULE_MSG_CENTER, "to add record dev_mac : ****%02x%02x%02x%02x\r\n",
+                g_auto_ota_record_dev[i].addr[3], g_auto_ota_record_dev[i].addr[2], g_auto_ota_record_dev[i].addr[1],
+                g_auto_ota_record_dev[i].addr[0]);
+            WEARABLE_LOGI(WEARABLE_LOG_MODULE_MSG_CENTER, "alloc index = %d\r\n", i);
+            return;
+        }
+    }
+}
+
+bool auto_ota_dev_del(uint8_t *addr)
+{
+    for (uint16_t i = 0; i < AUTO_OTA_RECORD_DEV_MAX_NUM; i++) {
+        if (g_auto_ota_record_dev[i].has_been_updated == 1 &&
+            memcmp(g_auto_ota_record_dev[i].addr, addr, ADDR_MAC_LEN) == 0) {
+            WEARABLE_LOGI(WEARABLE_LOG_MODULE_MSG_CENTER, "found! to del record dev_mac : ****%02x%02x%02x%02x\r\n",
+                g_auto_ota_record_dev[i].addr[3], g_auto_ota_record_dev[i].addr[2], g_auto_ota_record_dev[i].addr[1],
+                g_auto_ota_record_dev[i].addr[0]);
+            WEARABLE_LOGI(WEARABLE_LOG_MODULE_MSG_CENTER, "free index = %d\r\n", i);
+            (void)memset_s(g_auto_ota_record_dev[i].addr, ADDR_MAC_LEN, 0, ADDR_MAC_LEN);
+            g_auto_ota_record_dev[i].has_been_updated = 0;
+            return true;
+        }
+    }
+
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_MSG_CENTER, "dev_del: no found dev_mac.\r\n");
+    return false;
+}
+
+bool auto_ota_dev_found(uint8_t *addr)
+{
+    for (uint16_t i = 0; i < AUTO_OTA_RECORD_DEV_MAX_NUM; i++) {
+        if (g_auto_ota_record_dev[i].has_been_updated == 1 &&
+            memcmp(g_auto_ota_record_dev[i].addr, addr, ADDR_MAC_LEN) == 0) {
+            WEARABLE_LOGI(WEARABLE_LOG_MODULE_MSG_CENTER, "no need to record dev_mac: ****%02x%02x%02x%02x\r\n",
+                g_auto_ota_record_dev[i].addr[3], g_auto_ota_record_dev[i].addr[2], g_auto_ota_record_dev[i].addr[1],
+                g_auto_ota_record_dev[i].addr[0]);
+            WEARABLE_LOGI(WEARABLE_LOG_MODULE_MSG_CENTER, "taken index = %d\r\n", i);
+            return true;
+        }
+    }
+    return false;
+}
+
+void auto_ota_dev_show(void)
+{
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_MSG_CENTER, "auto_ota total dev info :");
+    for (uint16_t i = 0; i < AUTO_OTA_RECORD_DEV_MAX_NUM; i++) {
+        if (g_auto_ota_record_dev[i].has_been_updated == 1) {
+            WEARABLE_LOGI(WEARABLE_LOG_MODULE_MSG_CENTER, "already record dev_mac : ****%02x%02x%02x%02x\r\n",
+                g_auto_ota_record_dev[i].addr[3], g_auto_ota_record_dev[i].addr[2], g_auto_ota_record_dev[i].addr[1],
+                g_auto_ota_record_dev[i].addr[0]);
+            WEARABLE_LOGI(WEARABLE_LOG_MODULE_MSG_CENTER, "taken index = %d\r\n", i);
+        }
+    }
+}
+
+/* 黑名单处理 */
+static bool auto_ota_dev_check_dev_name(unsigned char *dev_name)
+{
+    if (strncmp((const char *)dev_name, AUTO_OTA_DEV_NAME_PREFIX, AUTO_OTA_DEV_NAME_PREFIX_LEN) == 0) {
+        return true;
+    } else {
+        return false;
+    }
+}
+
+/* 重置发现设备链表 */
+void auto_ota_reset_found_dev_list(void)
+{
+    if (!g_auto_ota_found_list_init) {
+        g_auto_ota_found_list_init = true;
+        OSAL_INIT_LIST_HEAD(&g_auto_ota_found_dev_list_head);
+        return;
+    }
+
+    while (osal_list_empty(&g_auto_ota_found_dev_list_head) == false) {
+        struct osal_list_head *node = g_auto_ota_found_dev_list_head.next;
+        osal_list_del(node);
+        oal_mem_free(node);
+    }
+}
+
+bool auto_ota_bt_start_discovery(void)
+{
+    auto_ota_reset_found_dev_list();
+    (void)gap_br_set_inquiry_paramters(0, AUTO_OTA_INQUERY_DEV_NUM);
+    for (uint8_t i = 0; i < AUTO_OTA_RETRY_TIMES; i++) {
+        bool res = gap_br_start_discovery();
+        if (res != true) {
+            osDelay(AUTO_OTA_DELAY_MS);
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_MSG_CENTER, "gap_br_start_discovery fail.\r\n");
+            continue;
+        } else {
+            WEARABLE_LOGI(WEARABLE_LOG_MODULE_MSG_CENTER, "gap_br_start_discovery succ.\r\n");
+            return true;
+        }
+    }
+    return false;
+}
+
+/* 新增节点 */
+static void auto_ota_add_node_to_found_dev_list(const bd_addr_t *bd_addr, const uint8_t *name, int32_t cod, int32_t rssi)
+{
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_MSG_CENTER, "auto_ota_add_node, addr: ****%02x%02x%02x%02x, name: %s",
+        bd_addr->addr[3], bd_addr->addr[2], bd_addr->addr[1], bd_addr->addr[0], name); /* addr下标 0 1 2 3 */
+
+    auto_ota_found_dev_list_node *node =
+        (auto_ota_found_dev_list_node *)(void *)oal_mem_alloc(sizeof(auto_ota_found_dev_list_node));
+    if (node == NULL) {
+        return;
+    }
+    (void)memset_s(node, sizeof(auto_ota_found_dev_list_node), 0, sizeof(auto_ota_found_dev_list_node));
+
+    if (memcpy_s(&node->bd_addr, sizeof(node->bd_addr), bd_addr, sizeof(bd_addr_t)) != EOK) {
+        oal_mem_free(node);
+        return;
+    }
+
+    if (memcpy_s(node->name, sizeof(node->name), name, BD_NAME_LEN) != EOK) {
+        oal_mem_free(node);
+        return;
+    }
+
+    node->cod = cod;
+    node->rssi = rssi;
+    osal_list_add_tail((struct osal_list_head *)node, &g_auto_ota_found_dev_list_head);
+}
+
+static void auto_ota_sort_found_dev_list(void)
+{
+    struct osal_list_head *list_head = &g_auto_ota_found_dev_list_head;
+
+    for (struct osal_list_head *node1 = list_head->next; node1 != NULL && node1 != list_head; node1 = node1->next) {
+        auto_ota_found_dev_list_node *dev_info1 = (auto_ota_found_dev_list_node *)node1;
+        for (struct osal_list_head *node2 = node1->next; node2 != NULL && node2 != list_head; node2 = node2->next) {
+            auto_ota_found_dev_list_node *dev_info2 = (auto_ota_found_dev_list_node *)node2;
+
+            /* rssi大的在前 */
+            if (dev_info1->rssi >= dev_info2->rssi) {
+                continue;
+            }
+
+            /* 交换两个节点的信息 */
+            auto_ota_found_dev_list_node tmp_node;
+            uint32_t ret =
+                (uint32_t)memcpy_s(&tmp_node, sizeof(tmp_node), dev_info1, sizeof(auto_ota_found_dev_list_node));
+            ret |= (uint32_t)memcpy_s(&dev_info1->bd_addr,
+                sizeof(auto_ota_found_dev_list_node) - sizeof(struct osal_list_head),
+                &dev_info2->bd_addr,
+                sizeof(auto_ota_found_dev_list_node) - sizeof(struct osal_list_head));
+            ret |= (uint32_t)memcpy_s(&dev_info2->bd_addr,
+                sizeof(auto_ota_found_dev_list_node) - sizeof(struct osal_list_head),
+                &tmp_node.bd_addr,
+                sizeof(auto_ota_found_dev_list_node) - sizeof(struct osal_list_head));
+            if (ret != EOK) {
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_MSG_CENTER, "swap fail %x\n", ret);
+            }
+        }
+    }
+}
+
+/* 异步返回,更新RSSI */
+static void auto_ota_update_found_dev_node_rssi(const bd_addr_t *bd_addr, int32_t rssi)
+{
+    struct osal_list_head *list_head = &g_auto_ota_found_dev_list_head;
+    struct osal_list_head *node = list_head->next;
+
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_MSG_CENTER,"will update rssi, addr: ****%02x%02x%02x%02x, rssi = %d\n",
+        bd_addr->addr[3], bd_addr->addr[2], bd_addr->addr[1], bd_addr->addr[0], rssi); /* addr下标 0 1 2 3 */
+
+    while (node != NULL && node != list_head) {
+        auto_ota_found_dev_list_node *dev_info = (auto_ota_found_dev_list_node *)node;
+        if (memcmp(dev_info->bd_addr.addr, bd_addr->addr, BD_ADDR_LEN) == 0) {
+            dev_info->rssi = rssi;
+            return;
+        }
+
+        node = node->next;
+    }
+}
+
+static void auto_ota_gap_read_remote_rssi_event_callback(const bd_addr_t *bd_addr, int rssi, int status)
+{
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_MSG_CENTER,
+        " addr: ****%02x%02x%02x%02x rssi: %d status: %d\n",
+        bd_addr->addr[3], bd_addr->addr[2], /* addr下标 2 3 */
+        bd_addr->addr[1], bd_addr->addr[0], rssi, status); /* addr下标 0 1 */
+
+    if (status == ERRCODE_BT_SUCCESS) {
+        auto_ota_update_found_dev_node_rssi(bd_addr, rssi);
+    }
+}
+
+static bool auto_ota_get_top_dev_to_connect(void)
+{
+    struct osal_list_head *list_head = &g_auto_ota_found_dev_list_head;
+    uint8_t blank_addr[ADDR_MAC_LEN] = {0};
+
+    for (struct osal_list_head *node = list_head->next; node != NULL && node != list_head; node = node->next) {
+        auto_ota_found_dev_list_node *dev_info = (auto_ota_found_dev_list_node *)node;
+        if (memcmp(dev_info->bd_addr.addr, blank_addr, ADDR_MAC_LEN) == 0) {
+            WEARABLE_LOGI(WEARABLE_LOG_MODULE_MSG_CENTER, "ignore zero addr, name: %s\n", dev_info->name);
+            continue;
+        }
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_MSG_CENTER,
+                "plan to connect addr: ****%02x%02x%02x%02x name: \"%s\" cod: %x rssi: %d\n",
+                dev_info->bd_addr.addr[3], dev_info->bd_addr.addr[2], /* addr下标 3 2 */
+                dev_info->bd_addr.addr[1], dev_info->bd_addr.addr[0], /* addr下标 1 0 */
+                dev_info->name,
+                dev_info->cod,
+                dev_info->rssi);
+
+        for (uint8_t i = 0; i < AUTO_OTA_RETRY_TIMES; i++) {
+            if (gap_connect_remote_device(&(dev_info->bd_addr)) != true) {
+                WEARABLE_LOGI(WEARABLE_LOG_MODULE_MSG_CENTER, "to connect acl fail\r\n");
+                osDelay(100);
+            } else {
+                osDelay(AUTO_OTA_ACL_CONN_DELAY);
+                WEARABLE_LOGI(WEARABLE_LOG_MODULE_MSG_CENTER, "to connect acl succ\r\n");
+                return true;
+            }
+        }
+    }
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_MSG_CENTER, "no found_device\n");
+    return false;
+}
+
+static void auto_ota_discovery_result_callback(const bd_addr_t *bd_addr)
+{
+    unsigned char length = BD_NAME_LEN;
+    unsigned char *device_name = (unsigned char *)(void *)oal_mem_alloc(length);
+    if (device_name == NULL) {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_MSG_CENTER, "gap_discovery_result_callback malloc error!\n");
+        return;
+    }
+    (void)memset_s(device_name, length, 0, length);
+
+    bool ret1 = gap_get_device_name(bd_addr, device_name, &length);
+    int cod = gap_get_device_class(bd_addr);
+    bool ret2 = gap_read_remote_rssi_value(bd_addr);
+
+    if (auto_ota_dev_found(bd_addr->addr) != true && auto_ota_dev_check_dev_name(device_name) == true) {
+        auto_ota_add_node_to_found_dev_list(bd_addr, device_name, cod, 0);
+    }
+
+    return;
+}
+
+static bool auto_ota_upg_check(void)
+{
+    errcode_t ret = ERRCODE_SUCC;
+
+    /* 目标版本从文件读取,方便客户每次推送不同版本 */
+    FILE *fp = NULL;
+
+    fp = fopen(AUTO_OTA_DST_UPG_VER_PATH, "rb");
+    if (fp == NULL) {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_MSG_CENTER, "open %s fail.\r\n", AUTO_OTA_DST_UPG_VER_PATH);
+        return false;
+    }
+
+    fseek(fp, 0L, SEEK_END);
+    long file_len = ftell(fp);
+    char *dst_ver = (char *)malloc(sizeof(char) * (file_len + 1));
+    if (dst_ver == NULL) {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_MSG_CENTER, "malloc fail, file_len = %d.\r\n", file_len);
+        return false;
+    }
+
+    fseek(fp, 0L, SEEK_SET);
+    if (fread(dst_ver, file_len, 1, fp) != 1) {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_MSG_CENTER, "fread fail, file_len = %d.\r\n", file_len);
+        free(dst_ver);
+        dst_ver = NULL;
+        return false;
+    }
+    fclose(fp);
+    dst_ver[file_len] = '\0';
+
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_MSG_CENTER, "dst_ver = %s, file_len = %d.\r\n", dst_ver, file_len);
+
+    ret = msg_center_send_data(MSGCENTER_CMD_OTA, MSGCENTER_TYPE_ID_OTA_UPG_CHECK, dst_ver, strlen(dst_ver));
+    if (ret != ERRCODE_SUCC) {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_MSG_CENTER, "send upgrade version check fail, ret = %d\r\n", ret);
+        free(dst_ver);
+        dst_ver = NULL;
+        return false;
+    }
+
+    free(dst_ver);
+    dst_ver = NULL;
+    return true;
+}
+
+static int auto_ota_spp_client_connect_task_body(void *data)
+{
+    auto_ota_spp_connect_task_params *task_params = (auto_ota_spp_connect_task_params *)data;
+    spp_create_socket_para_t *socket_param = &task_params->socket_params;
+
+    int ret = spp_connect(socket_param, &task_params->addr);
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_MSG_CENTER, "spp_connect ret: %x\n", ret);
+
+    oal_mem_free(data);
+    return OSAL_SUCCESS;
+}
+
+/* client连接server */
+bool auto_ota_spp_connect(const char *spp_uuid, const bd_addr_t *addr)
+{
+    uint8_t uuid_len = (uint8_t)strlen(spp_uuid);
+    auto_ota_spp_connect_task_params *task_params =
+        (auto_ota_spp_connect_task_params *)oal_mem_alloc(sizeof(auto_ota_spp_connect_task_params));
+
+    if (generate_uuid_from_string(spp_uuid, uuid_len + 1, &task_params->socket_params.uuid) != EXT_ERR_SUCCESS) {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_MSG_CENTER, "generate uuid fail\n");
+        return false;
+    }
+
+    task_params->sample_mode = 0;
+    task_params->socket_params.socket_type = SPP_SOCKET_RFCOMM;
+    task_params->socket_params.is_encrypt = true;
+    (void)memcpy_s(&(task_params->addr.addr), BD_ADDR_LEN, addr->addr, BD_ADDR_LEN);
+
+    osal_task *task = osal_kthread_create(auto_ota_spp_client_connect_task_body, task_params,
+        "auto_ota_spp_client_connect_task", AUTO_OTA_SPP_TASK_STACK_SIZE);
+    if (task == NULL) {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_MSG_CENTER, "create task fail\n");
+        return false;
+    }
+    int ret = osal_kthread_set_priority(task, AUTO_OTA_SPP_TASK_PRI);
+    if (ret != OSAL_SUCCESS) {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_MSG_CENTER, "set pri error: %08x\n", ret);
+    }
+
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_MSG_CENTER, "create task success.\n");
+
+    bool is_connected = false;
+    uint64_t start_time = uapi_tcxo_get_ms();
+    uint64_t current_time;
+    while (is_connected == false) {
+        is_connected = is_spp_connected(0);
+        osDelay(AUTO_OTA_OPRATE_DELAY_MS);
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_MSG_CENTER, "spp reconnecting.\r\n");
+        current_time = uapi_tcxo_get_ms();
+        if (current_time - start_time > AUTO_OTA_SPP_RECONN_TIMEOUT || is_connected == true) {
+            WEARABLE_LOGI(WEARABLE_LOG_MODULE_MSG_CENTER, "spp connect %s.\r\n", is_connected == true ? "Succ" : "Fail");
+            break;
+        }
+    }
+
+    /* 升级版本号校验 */
+    bool res = auto_ota_upg_check();
+    if (res != true) {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_MSG_CENTER, "auto_ota_upg_check fail.\n");
+        return false;
+    }
+
+    return true;
+}
+
+static void auto_ota_acl_state_changed_callback(const bd_addr_t *bd_addr, gap_acl_state_t state, unsigned int reason)
+{
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_MSG_CENTER, "acl cb, state %d, reason %x", state, reason);
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_MSG_CENTER, "addr: ****%02x%02x%02x%02x",
+        bd_addr->addr[3], bd_addr->addr[2], bd_addr->addr[1], bd_addr->addr[0]); /* mac下标 0 1 2 3 */
+    char uuid[] = {"1101"};
+    if (state == GAP_ACL_STATE_CONNECTED) {
+        if (g_anti_back_link_flag == true) {
+            WEARABLE_LOGI(WEARABLE_LOG_MODULE_MSG_CENTER, "anti back link addr: ****%02x%02x%02x%02x",
+                bd_addr->addr[3], bd_addr->addr[2], bd_addr->addr[1], bd_addr->addr[0]); /* mac下标 0 1 2 3 */
+            return;
+        }
+        bool res = auto_ota_spp_connect(uuid, bd_addr);
+        if (res != true) {
+            (void)osSemaphoreRelease(g_auto_ota_transmit_done_sem);
+            return;
+        }
+        /* spp trans回调中释放信号量最准确,故此处临时记录mac地址 */
+        (void)memcpy_s(g_auto_ota_mac_tmp, ADDR_MAC_LEN, (const char *)bd_addr->addr, ADDR_MAC_LEN);
+        g_anti_back_link_flag = true;
+    }
+}
+
+void auto_ota_gap_register_callbacks(void)
+{
+    gap_call_backs_t cb = {
+        NULL,
+        auto_ota_acl_state_changed_callback,
+        NULL,
+        NULL,
+        NULL,
+        NULL,
+        NULL,
+        NULL,
+        NULL,
+        auto_ota_discovery_result_callback,
+        NULL,
+        NULL,
+        NULL,
+        NULL,
+        NULL,
+        auto_ota_gap_read_remote_rssi_event_callback,
+        NULL
+    };
+    (void)gap_register_callbacks(&cb);
+}
+
+errcode_t auto_ota_enable_bt(void)
+{
+#if defined(SW_UART_DEBUG) || defined(SW_RTT_DEBUG)
+    g_bth_log_type_level = 0xFF2; /* BTSRV_LOG_UART_INFO */
+#endif
+    bts_feature_t feature = {0};
+    feature.bt_auto_reconnect_closed = 1;
+
+    auto_ota_gap_register_callbacks();
+    bts_set_features(&feature); /* 关闭client回链 */
+    errcode_t res = enable_bt_stack();
+    if (res != 0) {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_MSG_CENTER, "bt enable fail, ret = %d\r\n", res);
+        return ERRCODE_FAIL;
+    } else {
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_MSG_CENTER, "bt enable ok\r\n");
+        return ERRCODE_SUCC;
+    }
+}
+
+void auto_ota_task_init(void)
+{
+    g_auto_ota_transmit_done_sem = osSemaphoreNew(1, 0, NULL);
+    if (!g_auto_ota_transmit_done_sem) {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_MSG_CENTER, "sem creat fail!\r\n");
+        return;
+    }
+}
+
+void auto_ota_task_main(void)
+{
+    errcode_t ret;
+
+    auto_ota_dev_init();
+    auto_ota_task_init();
+
+    if (auto_ota_enable_bt() != ERRCODE_SUCC) {
+        return;
+    }
+
+    while (1) {
+        if (g_auto_ota_upload_mode == 1) {
+            WEARABLE_LOGI(WEARABLE_LOG_MODULE_MSG_CENTER, "enter upload fwpkg mode, auto_ota not run!\r\n");
+            osDelay(AUTO_OTA_WAIT_PREPARE_TIMEOUT);
+            continue;
+        }
+
+        /* 保证最开始不会有配对信息回连,可能导致B核wait等回连 */
+        if (gap_remove_all_pairs() != true) {
+            osDelay(AUTO_OTA_DELAY_MS);
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_MSG_CENTER, "remove all pairs fail, auto retry...\r\n");
+            continue;
+        }
+        osDelay(AUTO_OTA_OPRATE_DELAY_MS);
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_MSG_CENTER, "gap_remove_all_pairs ok\r\n");
+
+        /* scan */
+        if (auto_ota_bt_start_discovery() != true) {
+            osDelay(AUTO_OTA_DELAY_MS);
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_MSG_CENTER, "start discovery fail, auto retry...\r\n");
+            continue;
+        }
+
+        osDelay(AUTO_OTA_SCAN_WAIT_TIME); /* 保证能扫到设备 */
+
+        (void)gap_br_cancel_discovery();
+        osDelay(AUTO_OTA_UPDATE_RSSI_WAIT_TIME);
+        auto_ota_sort_found_dev_list(); /* 根据rssi降序排序 */
+        /* connect */
+        if (auto_ota_get_top_dev_to_connect() != true) {
+            osDelay(AUTO_OTA_DELAY_MS);
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_MSG_CENTER, "connect fail, auto retry...\r\n");
+            continue;
+        }
+
+        osSemaphoreAcquire(g_auto_ota_transmit_done_sem, AUTO_OTA_SEM_TIMEOUT);
+
+        /* clean, spp资源内部释放 */
+        spp_disconnect(0);
+        /* 删除配对时会disconnect ACL */
+        if (gap_remove_all_pairs() != true) {
+            osDelay(AUTO_OTA_DELAY_MS);
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_MSG_CENTER, "remove all pairs fail, auto retry...\r\n");
+            continue;
+        }
+        osDelay(AUTO_OTA_OPRATE_DELAY_MS);
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_MSG_CENTER, "gap_remove_all_pairs ok\r\n");
+
+        osDelay(AUTO_OTA_DELAY_MS);
+        auto_ota_dev_show();
+        memset_s(g_auto_ota_mac_tmp, sizeof(g_auto_ota_mac_tmp), 0, sizeof(g_auto_ota_mac_tmp));
+        g_anti_back_link_flag = false;
+        osDelay(AUTO_OTA_DELAY_MS);
+    }
+
+    return;
+}
+
+#ifdef __cplusplus
+}
+#endif
\ No newline at end of file
diff --git a/code/sdk/application/wearable/auto_ota/auto_ota_service.h b/code/sdk/application/wearable/auto_ota/auto_ota_service.h
new file mode 100644 (file)
index 0000000..322835e
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
+ * Description: broadcast service api
+ * Author: CompanyName
+ * Create: 2021-11-11
+ */
+
+#ifndef AUTO_OTA_SERVICE_H
+#define AUTO_OTA_SERVICE_H
+
+#include "stdint.h"
+
+#ifdef __cplusplus
+#if __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+#endif /* __cplusplus */
+
+void auto_ota_dev_add(uint8_t *addr);
+bool auto_ota_dev_del(uint8_t *addr);
+void auto_ota_dev_show(void);
+void auto_ota_task_main(void);
+
+#ifdef __cplusplus
+#if __cplusplus
+}
+#endif /* __cplusplus */
+#endif /* __cplusplus */
+#endif /* AUTO_OTA_SERVICE_H */
index e7b25f5..df3e841 100644 (file)
@@ -49,6 +49,7 @@ private:
     void TransitionStart(TransitionCallback* transition, uint32_t duration);
     bool SaveTargetSnapshot(UIView* view);
     ImageInfo RectifySnapshot(ImageInfo& dstInfo);
+    bool isTransAnimInterrupted_ = false;
 };
 } // namespace OHOS
 #endif // SLICE_TRANSITION_H
index 31e2962..6e46de0 100644 (file)
@@ -93,6 +93,9 @@ ListsNode<Ability::ProxyStruct>* Ability::Find(const uint16_t sliceId)
 
 void Ability::ChangeSlice(const uint16_t targetSliceId, TransitionType type, const uint16_t priority)
 {
+    if (GetCurSliceId() == targetSliceId) {
+        return;
+    }
     if (osal_atomic_read(&transitionCount_) <= 0) {
         osal_atomic_inc(&transitionCount_);
         GraphicService::GetInstance()->PostGraphicEvent(std::bind(&Ability::PostChangeSlice, this, targetSliceId,
index 20226e6..edf6b2d 100644 (file)
@@ -86,6 +86,11 @@ void SliceTransition::ClearTransitionResource()
 
 bool SliceTransition::SetTransitionType(TransitionType type)
 {
+    isTransAnimInterrupted_ = false;
+    if ((animator_ != nullptr) && (animator_->GetState() != Animator::STOP)) {
+        animator_->Stop();
+        isTransAnimInterrupted_ = true;
+    }
     transitionCallback_ = TransitionManager::GetInstance().GetTransition(type);
     if (transitionCallback_ == nullptr) {
         return false;
@@ -130,7 +135,7 @@ bool SliceTransition::SaveCurrentSnapshot(UIView* view)
     }
 
     ImageInfo info = {{0}};
-    if (RootView::GetInstance()->isSystemViewEmpty() && !view->IsVideoContained()) {
+    if (RootView::GetInstance()->isSystemViewEmpty() && !view->IsVideoContained() && !isTransAnimInterrupted_) {
         if (!Screen::GetInstance().GetCurrentScreenBitmap(info)) {
             return false;
         }
@@ -207,15 +212,19 @@ void SliceTransition::Transition(UIView* current, UIView* target)
 
 void SliceTransition::StopAnimator()
 {
-    animator_->Stop();
-    NativeAbility::GetInstance().OnTransitionEnd();
-    if (transitionCallback_->enableCurrentSnapshot_) {
-        RootView::GetInstance()->Remove(currentSnapshot_);
+    if (animator_ != nullptr) {
+        animator_->Stop();
     }
+    NativeAbility::GetInstance().OnTransitionEnd();
+    if (transitionCallback_ != nullptr) {
+        if (transitionCallback_->enableCurrentSnapshot_) {
+            RootView::GetInstance()->Remove(currentSnapshot_);
+        }
 
-    if (transitionCallback_->enableTargetSnapshot_) {
-        RootView::GetInstance()->Remove(targetSnapshot_);
-        targetView_->SetVisible(true);
+        if (transitionCallback_->enableTargetSnapshot_) {
+            RootView::GetInstance()->Remove(targetSnapshot_);
+            targetView_->SetVisible(true);
+        }
     }
     ClearTransitionResource();
 }
index fd7b9ba..8ba2871 100644 (file)
@@ -73,4 +73,12 @@ void BackToHexagonsTransition::TransitionAlg(uint32_t time)
     target_->Scale(targetScale, focusIndex_);
     focusView_->SetOpaScale(OPA_OPAQUE - opa);
 }
+
+void BackToHexagonsTransition::OnTransitionEnd()
+{
+    if ((target_ != nullptr) && (focusView_ != nullptr)) {
+        target_->Scale(TARGET_SCALE_END, focusIndex_);
+        focusView_->SetOpaScale(OPA_OPAQUE);
+    }
+}
 } // namespace OHOS
index 2e261b2..4738a88 100644 (file)
@@ -18,6 +18,7 @@ public:
     ~BackToHexagonsTransition() override {}
     void OnTransitionStart(UIImageView* current, UIView* target) override;
     void TransitionAlg(uint32_t time) override;
+    void OnTransitionEnd() override;
 private:
     UIImageView* current_ = nullptr;
     UICustomHexagonsList* target_ = nullptr;
index 8095361..1a92641 100644 (file)
@@ -39,7 +39,7 @@ void HexagonsTransition::OnTransitionStart(UIView* current, UIImageView* target)
     current_->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);
     Vector2<int16_t> delta = Vector2<int16_t>(current_->GetWidth() / 2, current_->GetHeight() / 2) -
         current_->GetCurrentPosition(focusIndex_);
-    opaStart_ =  current->GetOpaScale();
+    opaStart_ = focusView_->GetOpaScale();
     scaleStart_ = current_->GetGlobalScale();
     Rect rect = focusView_->GetRect();
     float xScale = target_->GetWidth() * 1.0f / rect.GetWidth();
index 0e72a0e..85ce56b 100644 (file)
@@ -7,6 +7,7 @@ set(PUBLIC_HEADER
     ${CMAKE_CURRENT_SOURCE_DIR}/nativelauncher/include
     ${CMAKE_CURRENT_SOURCE_DIR}/nativelauncher/include/slices/main
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/screennotify/include
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/bluetooth/include
 )
 
 set(PRIVATE_HEADER
@@ -33,6 +34,7 @@ set(PRIVATE_HEADER
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/set_card/include
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/add_card/include
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/set_dial/include
+       ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/set_dial_style/include
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/key/include
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/player/include
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/applist/include
@@ -120,6 +122,7 @@ set(SOURCES
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/bluetooth/src/BluetoothPresenter.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/bluetooth/src/BluetoothHeadsetEvent.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/bluetooth/src/BluetoothModel.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/bluetooth/src/BluetoothWrapper.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/bluetooth/src/MainBluetoothView.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/bluetooth/src/BluetoothEarPhoneView.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/bluetooth/src/TipsConnFailMessageView.cpp
@@ -227,6 +230,9 @@ set(SOURCES
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/set_dial/src/SetDialModel.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/set_dial/src/SetDialPresenter.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/set_dial/src/SetDialView.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/set_dial_style/src/SetDialStyleModel.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/set_dial_style/src/SetDialStylePresenter.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/set_dial_style/src/SetDialStyleView.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/key/src/KeyInputListener.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/compass/src/CompassControlView.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/compass/src/CompassCalibrationView.cpp
index 1c77878..fa4182e 100644 (file)
@@ -52,6 +52,7 @@ typedef enum : uint16_t {
     VIEW_SET_CARD,
     VIEW_ADD_CARD,
     VIEW_SET_DIAL,
+    VIEW_SET_DIAL_STYLE,
     VIEW_MAX_INTER_APP, // 在此之前添加native应用ID.
     VIEW_EXTERN_APP = 0xFFFE, // 三方应用
     VIEW_INVALIDE_APP = 0xFFFF,
index cadd1ee..b05347e 100644 (file)
@@ -47,6 +47,7 @@ public:
     void InitSetCardSlice(void);
     void InitAddCardSlice(void);
     void InitSetDialSlice(void);
+    void InitSetDialStyleSlice(void);
 private:
     void InitAllNativeSlices(void);
 
index 7f19352..aacff82 100644 (file)
@@ -330,6 +330,9 @@ namespace OHOS {
     static constexpr const char *PNG_ALIPAY_PAY_ICON_WHITE = APP_RES_PATH"/ALIPAY_PAY_ICON_WHITE.bin";
     static constexpr const char *PNG_ALIPAY_PAY_ICON_GREY = APP_RES_PATH"/ALIPAY_PAY_ICON_GREY.bin";
 
+    // AppList hexagon icon
+    static constexpr const char *PNG_APPLIST_DEFAULT_IMG = APP_RES_PATH"/regular_hexagon.bin";
+    static constexpr const char *PNG_APPLIST_NOTSETUSE_IMG = APP_RES_PATH"/regular_hexagon_inverse.bin";
 
     // 室内步行
     static constexpr const char *PNG_APPLIST_WALK_IMAGE = APP_RES_PATH"/APPLIST_WALK.bin"; // Applist图标
index a1e55d1..034db97 100644 (file)
@@ -74,6 +74,8 @@
 #include "AddCardPresenter.h"
 #include "SetDialView.h"
 #include "SetDialPresenter.h"
+#include "SetDialStylePresenter.h"
+#include "SetDialStyleView.h"
 #ifdef JS_ENABLE
 #include "product_adapter.h"
 #endif
@@ -115,6 +117,7 @@ static const AppViewMapper SLICE_MAPPER[] = {
     {VIEW_SET_CARD, &NativeLauncher::InitSetCardSlice},
     {VIEW_ADD_CARD, &NativeLauncher::InitAddCardSlice},
     {VIEW_SET_DIAL, &NativeLauncher::InitSetDialSlice},
+    {VIEW_SET_DIAL_STYLE, &NativeLauncher::InitSetDialStyleSlice},
 };
 
 static const ViewIdToString VIEW_MAPPER[] = {
@@ -143,6 +146,7 @@ static const ViewIdToString VIEW_MAPPER[] = {
     {VIEW_SET_CARD, "SetCard"},
     {VIEW_ADD_CARD, "AddCard"},
     {VIEW_SET_DIAL, "SetDial"},
+    {VIEW_SET_DIAL_STYLE, "SetDialStyle"},
 };
 
 NativeLauncher::NativeLauncher() {}
@@ -442,4 +446,14 @@ void NativeLauncher::InitSetDialSlice(void)
     NativeAbility::GetInstance().AddSliceProxy(VIEW_SET_DIAL, setDialView);
 }
 
+void NativeLauncher::InitSetDialStyleSlice(void)
+{
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitSetDialStyleSlice");
+    SliceProxy *setDialStyleView = new AbilitySliceProxy<SetDialStyleView, SetDialStylePresenter>;
+    if (setDialStyleView == nullptr) {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "setDialStyleView");
+        return;
+    }
+    NativeAbility::GetInstance().AddSliceProxy(VIEW_SET_DIAL_STYLE, setDialStyleView);
+}
 }
index 56ba901..9f514d6 100644 (file)
@@ -30,41 +30,43 @@ void AlarmTimerEventPublish(uint16 topic, AlarmClockEventData data)
 {\r
     int32 ret;\r
     uint32 size = sizeof(AlarmClockEventData);\r
-    Request *request = nullptr;\r
     BroadcastApi *broadcastApi = nullptr;\r
     IUnknown *api = nullptr;\r
 \r
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmTimerEventPublish topic=%u!!", topic);\r
 \r
-    /* alloc request */\r
-    request = SAMGR_AllocRequestMsg(0, PLATFORM_CORE, BROADCAST_SVR_ID, size);\r
-    if (request == nullptr) {\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SAMGR_AllocRequestMsg failed");\r
+    void *publishData = malloc(size);\r
+    if (publishData == nullptr) {\r
         return;\r
     }\r
-    request->msgId = topic;\r
-    ret = memcpy_s(request->data, size, (const void *)&data, size);\r
+    ret = memcpy_s(publishData, size, (const void *)&data, size);\r
     if (ret != EOK) {\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmTimerEventPublish memcpy_s rateDataTmp fail! ret = %d", ret);\r
+        free(publishData);\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlarmTimerEventPublish memcpy_s fail! ret = %d", ret);\r
         return;\r
     }\r
-    request->len = size;\r
-    request->msgValue = 0;\r
+\r
+    Request request = {\r
+        .msgId = topic,\r
+        .len = size,\r
+        .msgValue = 0,\r
+        .data = publishData,\r
+    };\r
 \r
     /* public request */\r
     api = SAMGR_GetInstance()->GetFeatureApi(BROADCAST_SERVICE_NAME, BROADCAST_FEATURE_NAME);\r
     if (api == nullptr) {\r
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GetFeatureApi failed");\r
-        SAMGR_FreeRequestMsg(request);\r
+        free(publishData);\r
         return;\r
     }\r
     ret = api->QueryInterface(api, DEFAULT_VERSION, (void **)&broadcastApi);\r
     if (ret != 0 || broadcastApi == nullptr) {\r
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "QueryInterface failed");\r
-        SAMGR_FreeRequestMsg(request);\r
+        free(publishData);\r
         return;\r
     }\r
-    broadcastApi->PublishTopic((IUnknown *)broadcastApi, request);\r
+    broadcastApi->PublishTopic((IUnknown *)broadcastApi, &request);\r
     broadcastApi->Release((IUnknown *)broadcastApi);\r
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlarmTimerEventPublish end!!");\r
 \r
index 4f0d4bb..9cbbaf2 100644 (file)
@@ -58,6 +58,7 @@ public:
     int32_t AlipayGetAidCode(int8_t *aidStr);\r
     void AlipayUnbind(void);\r
     bool AlipayStartBind(void);\r
+    bool AlipayFinishBind(void);\r
     bool AlipayStartSwitchTimer(uint16_t time);\r
     void AlipayStopBindTimer(void);\r
     void AlipayStopSwitchTimer();\r
index 888dff2..12c2d60 100644 (file)
@@ -224,9 +224,12 @@ void AlipayMainView::DropView(UIView &view)
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayMainView::DropView::container[ALIPAY_BIND_ANI_VIEW]");\r
         ChangeView(ALIPAY_BIND_ANI_VIEW, ALIPAY_BIND_EXIT_VIEW);\r
     } else if (&view == container[ALIPAY_LIST_VIEW] || &view == container[ALIPAY_BIND_VIEW]) {\r
+        if (&view == container[ALIPAY_BIND_VIEW]) {\r
+            AlipayModel::GetInstance()->AlipayFinishBind();\r
+        }\r
         AlipayModel::GetInstance()->AlipayStopSwitchTimer();\r
-        AlipayModel::GetInstance()->AlipayStopBindTimer();\r
         NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);\r
+\r
     } else if (&view == container[ALIPAY_TRANS_LIST_VIEW]) {\r
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayMainView::DropView::container[ALIPAY_TRANS_LIST_VIEW]");\r
         ChangeView(ALIPAY_TRANS_LIST_VIEW, ALIPAY_LIST_VIEW);\r
index 353c788..0414fd4 100644 (file)
@@ -60,10 +60,9 @@ void AlipayBindCallBackProc(void *argument)
         return;\r
     } else if (ALIPAY_INTER_STATUS_BINDING_OK == status && reFlag == 1) {\r
         AlipayModel::GetInstance()->AlipaySetRefreshFlag(0);\r
-        AlipayModel::GetInstance()->AlipayStopBindTimer();\r
+        AlipayModel::GetInstance()->AlipayFinishBind();\r
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayBindCallBackProc ALIPAY_INTER_STATUS_BINDING_OK");\r
         AlipayModel::GetInstance()->AlipaySetBindFlag(true);\r
-        \r
         AlipayMainView::GetInstance()->ChangeView(currentView, ALIPAY_BIND_RES_VIEW);\r
     } else if (ALIPAY_INTER_STATUS_BINDING_FAIL == status && reFlag == 1) {\r
         AlipayModel::GetInstance()->AlipayStopBindTimer();\r
@@ -101,6 +100,13 @@ bool AlipayModel::AlipayStartBind(void)
     return true;\r
 }\r
 \r
+bool AlipayModel::AlipayFinishBind(void)\r
+{\r
+    AlipayStopBindTimer();\r
+    alipayApi->bind_finish();\r
+    return true;\r
+}\r
+\r
 void AlipaySwitchTimerCallBackProc(void *argument)\r
 {\r
     UNUSED(argument);\r
index ef16fe9..bf1f2b2 100644 (file)
@@ -85,6 +85,7 @@ bool AlipayPresenter::OnDrag(UIView &view, const DragEvent &event)
 void AlipayPresenter::ClickExitAlipay(UIView &view)\r
 {\r
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayPresenter::ClickExitAlipay start");\r
+    AlipayModel::GetInstance()->AlipayFinishBind();\r
     uint16 preSlice = NativeAbility::GetInstance().GetPreSliceId();\r
     NativeAbility::GetInstance().ChangeSlice(preSlice);\r
     return;\r
index 31eae8f..8aacc9e 100644 (file)
@@ -47,6 +47,18 @@ private:
     AppItem itemInfo_ = { VIEW_INVALID, nullptr, nullptr, nullptr, nullptr };
 };
 
+class FootballItemView : public UIImageView {
+public:
+    explicit FootballItemView() {}
+    ~FootballItemView() {}
+    void SetItemInfo(const AppItem &itemInfo);
+    AppViewId GetViewId();
+    const char *GetAppUid();
+private:
+    FootballItemView(const FootballItemView &);
+    FootballItemView &operator = (const FootballItemView &);
+    AppItem itemInfo_ = { VIEW_INVALID, nullptr, nullptr, nullptr, nullptr };
+};
 }
 
 #endif
index 1350710..1648798 100644 (file)
@@ -19,10 +19,17 @@ typedef struct {
     AppViewId id;
     const char *iconLarge;
     const char *iconSmall;
+    const char *iconHexagon;
     const char *label;
     const char *uid;
 } AppItem;
 
+enum AppListStyle {
+    APPLIST_STYLE,
+    HEXAGONS_STYLE,
+    FOOTBALL_STYLE
+};
+
 class ApplistPresenter;
 class ApplistModel {
 public:
@@ -38,7 +45,8 @@ public:
     int GetHeadItemY(void);
     void ApplistUpdate(void);
     void SetPresenter(ApplistPresenter *p);
-    bool GetIsUseListStyle(void);
+    AppListStyle GetCurrentStyle(void);
+
 private:
     ApplistModel();
     ApplistModel(const ApplistModel &);
index bcb6ec7..cf7bcd6 100644 (file)
@@ -37,7 +37,7 @@ namespace OHOS {
         int GetHeadItemY(void);
         uint8_t GetListItemNum(void);
         ApplistView* GetAppListView();
-        bool GetIsUseListStyle(void);
+        AppListStyle GetCurrentStyle(void);
 
     private:
         AppItemView *itemViewSele{nullptr};
index a1c5e91..401408e 100644 (file)
@@ -9,12 +9,15 @@
 #define APPLIST_VIEW_H
 
 #include "View.h"
+#include "animator/animator_manager.h"
 #include "components/root_view.h"
 #include "components/ui_view_group.h"
 #include "components/ui_scroll_view.h"
 #include "components/ui_label.h"
 #include "components/ui_list.h"
 #include "components/ui_custom_hexagons_list.h"
+#include "components/ui_icosahedron_view.h"
+#include "gfx_utils/list.h"
 #include "window/window.h"
 #include "ohos_types.h"
 #include "BaseView.h"
@@ -66,6 +69,42 @@ private:
     bool continueDrag{false};
 };
 
+class FootballAnimatorCallback : public AnimatorCallback {
+public:
+    explicit FootballAnimatorCallback(UIView* view, int16_t startPos, int16_t endPos)
+        : startPos_(startPos),
+          endPos_(endPos),
+          startTime_(0),
+          animator_(new Animator(this, view, 1000, false)) {}  // 1000:duration of animator_, in milliseconds.
+
+    ~FootballAnimatorCallback() override
+    {
+        if (animator_ != nullptr) {
+            delete animator_;
+            animator_ = nullptr;
+        }
+    }
+
+    void Callback(UIView* view) override;
+
+    Animator* GetAnimator() const
+    {
+        return animator_;
+    }
+
+    void SetStartTime(uint32_t time)
+    {
+        isStartAnim_ = false;
+        startTime_ = time;
+    }
+protected:
+    int16_t startPos_;
+    int16_t endPos_;
+    uint32_t startTime_;
+    bool isStartAnim_ = false;
+    Animator* animator_;
+};
+
 class ApplistPresenter;
 class ApplistView : public View<ApplistPresenter> {
 public:
@@ -80,24 +119,34 @@ public:
     void AddAppItemToList(const AppItem &item);
     void ClearAppItemToList();
     void RefreshAppList(void);
+
 private:
-    void HexagonsStyleOnStart();
+    /* for list style */
     void ListStyleOnStart();
-    void HexagonsStyleOnSetUpView();
     void ListStyleOnSetUpView();
-    void HexagonsStyleOnStop();
     void ListStyleOnStop();
-
-    /* for list style */
     ApplistAdapter *listAdapter_{nullptr};
     UIList *contentList_{nullptr};
     UIView::OnDragListener *dragListener{nullptr};
 
     /* for hexagons style */
+    void HexagonsStyleOnStart();
+    void HexagonsStyleOnSetUpView();
+    void HexagonsStyleOnStop();
     UICustomHexagonsList* hexagonsList_{nullptr};
-    std::list<HexagonsItemView*> listHexagonsView_;
+    List<HexagonsItemView*> listHexagonsView_;
     uint16_t imgSize_ = 0;
     uint16_t imgDistance_ = 0;
+
+    /* for football style */
+    void FootballStyleOnStart();
+    void FootballStyleOnSetUpView();
+    void FootballStyleOnStop();
+    UIIcosahedronView* footballList_ = nullptr;
+    List<FootballItemView*> footballItemList_;
+    ImageInfo* footballDefaultImg_ = nullptr;
+    FootballAnimatorCallback* callback_ = nullptr;
+    Animator* enterAnimator_ = nullptr;
 };
 }
 #endif // APPLIST_VIEW_H
\ No newline at end of file
index cd35ebb..9a56529 100644 (file)
@@ -103,4 +103,19 @@ namespace OHOS {
     {
         return itemInfo_.uid;
     }
+
+    void FootballItemView::SetItemInfo(const AppItem &itemInfo)
+    {
+        itemInfo_ = itemInfo;
+    }
+
+    AppViewId FootballItemView::GetViewId()
+    {
+        return itemInfo_.id;
+    }
+
+    const char *FootballItemView::GetAppUid()
+    {
+        return itemInfo_.uid;
+    }
 }
index c7fd860..c83dc49 100644 (file)
 #include "UiConfig.h"
 #include "ApplistModel.h"
 #include "ApplistPresenter.h"
-#include "SetDesktopModel.h"
+#include "SetDesktopView.h"
 
 namespace OHOS {
     const AppItem g_nativeAppList[] = {
-        {VIEW_MAIN_ALARM, PNG_APPLIST_ALARM_IMAGE, PNG_APPLIST_ALARM_IMAGE, "闹钟", nullptr},
-        {VIEW_BLOODOXY_SAMPLE, PNG_APPLIST_SPO2_IMAGE, PNG_APPLIST_SPO2_IMAGE, "血氧饱和度", nullptr},
-        {VIEW_SETTING, PNG_APPLIST_SETTING_IMAGE, PNG_APPLIST_SETTING_IMAGE, "设置", nullptr},
-        {VIEW_CALLER_SAMPLE, PNG_APPLIST_CALLER_IMAGE, PNG_APPLIST_CALLER_IMAGE, "通话记录", nullptr},
-        {VIEW_COMPASS, PNG_APPLIST_COMPASS_IMAGE, PNG_APPLIST_COMPASS_IMAGE, "指南针", nullptr},
-        {VIEW_OFFLINEVOICE, PNG_APPLIST_VOCASSIST_IMAGE, PNG_APPLIST_VOCASSIST_IMAGE, "语音助手", nullptr},
-        {VIEW_MAIN_TEMP, PNG_APPLIST_TEMP_IMAGE, PNG_APPLIST_TEMP_IMAGE, "体温", nullptr},
-        {VIEW_INDOORWALK, PNG_APPLIST_WALK_IMAGE, PNG_APPLIST_WALK_IMAGE, "室内步行", nullptr},
-        {VIEW_UISAMPLE, PNG_APPLIST_UI_SAMPLE_IMAGE, PNG_APPLIST_UI_SAMPLE_IMAGE, "示例", nullptr},
+        {VIEW_MAIN_ALARM, PNG_APPLIST_ALARM_IMAGE, PNG_APPLIST_ALARM_IMAGE, PNG_APPLIST_DEFAULT_IMG, "闹钟", nullptr},
+        {VIEW_BLOODOXY_SAMPLE, PNG_APPLIST_SPO2_IMAGE, PNG_APPLIST_SPO2_IMAGE, PNG_APPLIST_DEFAULT_IMG, "血氧饱和度", nullptr},
+        {VIEW_SETTING, PNG_APPLIST_SETTING_IMAGE, PNG_APPLIST_SETTING_IMAGE, PNG_APPLIST_DEFAULT_IMG, "设置", nullptr},
+        {VIEW_CALLER_SAMPLE, PNG_APPLIST_CALLER_IMAGE, PNG_APPLIST_CALLER_IMAGE, PNG_APPLIST_DEFAULT_IMG, "通话记录", nullptr},
+        {VIEW_COMPASS, PNG_APPLIST_COMPASS_IMAGE, PNG_APPLIST_COMPASS_IMAGE, PNG_APPLIST_DEFAULT_IMG, "指南针", nullptr},
+        {VIEW_OFFLINEVOICE, PNG_APPLIST_VOCASSIST_IMAGE, PNG_APPLIST_VOCASSIST_IMAGE, PNG_APPLIST_DEFAULT_IMG, "语音助手", nullptr},
+        {VIEW_MAIN_TEMP, PNG_APPLIST_TEMP_IMAGE, PNG_APPLIST_TEMP_IMAGE, PNG_APPLIST_DEFAULT_IMG, "体温", nullptr},
+        {VIEW_INDOORWALK, PNG_APPLIST_WALK_IMAGE, PNG_APPLIST_WALK_IMAGE, PNG_APPLIST_DEFAULT_IMG, "室内步行", nullptr},
+        {VIEW_UISAMPLE, PNG_APPLIST_UI_SAMPLE_IMAGE, PNG_APPLIST_UI_SAMPLE_IMAGE, PNG_APPLIST_DEFAULT_IMG, "示例", nullptr},
 #ifdef SUPPORT_ALIPAY_SEC
-        {VIEW_MAIN_ALIPAY, PNG_APPLIST_ALIPAY_IMAGE, PNG_APPLIST_ALIPAY_IMAGE, "支付宝", nullptr},
+        {VIEW_MAIN_ALIPAY, PNG_APPLIST_ALIPAY_IMAGE, PNG_APPLIST_ALIPAY_IMAGE, PNG_APPLIST_DEFAULT_IMG, "支付宝", nullptr},
 #endif
-        
     };
 
     ApplistModel &ApplistModel::GetInstance(void)
@@ -101,6 +100,7 @@ namespace OHOS {
                     VIEW_EXTERN_APP,
                     bundleInfos[len].smallIconPath,
                     bundleInfos[len].smallIconPath,
+                    bundleInfos[len].bigIconPath,
                     bundleInfos[len].label,
                     bundleInfos[len].bundleName
                 };
@@ -164,8 +164,15 @@ namespace OHOS {
         presenter = p;
     }
 
-    bool ApplistModel::GetIsUseListStyle(void)
+    AppListStyle ApplistModel::GetCurrentStyle(void)
     {
-        return (SetDesktopModel::GetInstance().GetDesktopStyle() == APPLIST_STYLE);
+        uint8_t currenStyle = SetDesktopView::GetInstance()->GetCurrentSelectedStyle();
+        if (currenStyle == 1) { // 1: hexagons desktop style
+            return HEXAGONS_STYLE;
+        } else if (currenStyle == 2) { // 2: football desktop style
+            return FOOTBALL_STYLE;
+        } else {
+            return APPLIST_STYLE;
+        }
     }
 }
index cf68b21..39c2411 100644 (file)
@@ -94,15 +94,12 @@ namespace OHOS {
         AppViewId viewId = VIEW_INVALID;
         char *uid =  nullptr;
         TransitionType type = TransitionType::TRANSITION_INVALID;
-        if (GetIsUseListStyle()) {
-            AppItemView *itemView = dynamic_cast<AppItemView *>(&view);
-            if (itemView == nullptr) {
-                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "itemView is nullptr", viewId);
-                return false;
-            }
+        AppListStyle style = GetCurrentStyle();
+        if (style == AppListStyle::FOOTBALL_STYLE) {
+            FootballItemView *itemView = dynamic_cast<FootballItemView *>(&view);
             viewId = itemView->GetViewId();
             uid = (char *)itemView->GetAppUid();
-        } else {
+        } else if (style == AppListStyle::HEXAGONS_STYLE) {
             HexagonsItemView *itemView = dynamic_cast<HexagonsItemView *>(&view);
             UIHexagonsList* hexagonsView = dynamic_cast<UIHexagonsList *>(itemView->GetParent());
             if (hexagonsView == nullptr || itemView == nullptr) {
@@ -114,6 +111,14 @@ namespace OHOS {
             hexagonsView->SetDraggable(false);
             hexagonsView->Scale(1.0f, itemView->GetViewIndex()); // switch focus to click view
             type = TransitionType::TRANSITION_HEXAGONS;
+        } else {
+            AppItemView *itemView = dynamic_cast<AppItemView *>(&view);
+            if (itemView == nullptr) {
+                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "itemView is nullptr", viewId);
+                return false;
+            }
+            viewId = itemView->GetViewId();
+            uid = (char *)itemView->GetAppUid();
         }
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ApplistPresenter::OnClick viewid = %d", viewId);
         if (viewId < VIEW_MAX_INTER_APP) {
@@ -178,9 +183,9 @@ namespace OHOS {
         return model->GetAppListNum();
     }
 
-    bool ApplistPresenter::GetIsUseListStyle(void)
+    AppListStyle ApplistPresenter::GetCurrentStyle(void)
     {
-        return model->GetIsUseListStyle();
+        return model->GetCurrentStyle();
     }
 
     ApplistView* ApplistPresenter::GetAppListView()
index 0f3d9bb..e7cd373 100644 (file)
@@ -9,6 +9,8 @@
 #include "ApplistView.h"
 #include "ApplistPresenter.h"
 #include "AppItemView.h"
+#include "common/image_cache_manager.h"
+#include "hal_tick.h"
 
 namespace OHOS {
 static constexpr int16 NUM_2 = 2;
@@ -38,16 +40,50 @@ ApplistView::~ApplistView()
         delete hexagonsList_;
         hexagonsList_ = nullptr;
     }
+    if (callback_ != nullptr) {
+        delete callback_;
+        callback_ = nullptr;
+    }
+    enterAnimator_ = nullptr;
 }
 
 void ApplistView::OnStart()
 {
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ApplistView::OnStart ");
     View<ApplistPresenter>::OnStart();
-    if (presenter_->GetIsUseListStyle()) {
-        ListStyleOnStart();
-    } else {
+    AppListStyle style = presenter_->GetCurrentStyle();
+    if (style == AppListStyle::FOOTBALL_STYLE) {
+        FootballStyleOnStart();
+    } else if (style == AppListStyle::HEXAGONS_STYLE) {
         HexagonsStyleOnStart();
+    } else {
+        ListStyleOnStart();
+    }
+}
+
+void ApplistView::FootballStyleOnStart()
+{
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ApplistView::FootballStyleOnStart ");
+    if (footballList_ == nullptr) {
+        footballList_ = new UIIcosahedronView();
+    }
+    footballList_->SetThrowDrag(true);
+    if (footballDefaultImg_ == nullptr) {
+        footballDefaultImg_ = ImageCacheManager::GetInstance().LoadSingleRes(PNG_APPLIST_NOTSETUSE_IMG);
+        if (footballDefaultImg_ == nullptr) {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "load res faild");
+            return;
+        }
+    }
+    if (callback_ == nullptr) {
+        callback_ = new FootballAnimatorCallback(footballList_, 30, 250); // 30: Initial Size 250: Final display size
+    }
+    footballList_->SetDefaultImage(footballDefaultImg_);
+    footballList_->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());
+    enterAnimator_ = callback_->GetAnimator();
+    SetContainerView(footballList_);
+    if (callback_ != nullptr) {
+        callback_->SetStartTime(HALTick::GetInstance().GetTime());
     }
 }
 
@@ -57,8 +93,7 @@ void ApplistView::HexagonsStyleOnStart()
     if (hexagonsList_ == nullptr) {
         hexagonsList_ = new UICustomHexagonsList();
     }
-    hexagonsList_->SetPosition(0, 0,
-        Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight()); // 2, two
+    hexagonsList_->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());
     imgDistance_ = hexagonsList_->GetWidth() * 0.25991; // 0.25991, empirical coefficient
     imgSize_ = hexagonsList_->GetWidth() * 0.23348; // 0.23348, empirical coefficient
     hexagonsList_->SetImageDistance(imgDistance_);
@@ -111,16 +146,27 @@ void ApplistView::OnSetUpView()
 {
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ApplistView::OnSetUpView");
     View<ApplistPresenter>::OnSetUpView();
-    if (presenter_->GetIsUseListStyle()) {
-        ListStyleOnSetUpView();
-    } else {
+    AppListStyle style = presenter_->GetCurrentStyle();
+    if (style == AppListStyle::FOOTBALL_STYLE) {
+        FootballStyleOnSetUpView();
+    } else if (style == AppListStyle::HEXAGONS_STYLE) {
         HexagonsStyleOnSetUpView();
+    } else {
+        ListStyleOnSetUpView();
+    }
+}
+
+void ApplistView::FootballStyleOnSetUpView()
+{
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ApplistView::HexagonsStyleOnSetUpView");
+    if (enterAnimator_ != nullptr) {
+        enterAnimator_->Start();
     }
 }
 
 void ApplistView::HexagonsStyleOnSetUpView()
 {
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ApplistView::HexagonsStyleOnSetUpView ");
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ApplistView::HexagonsStyleOnSetUpView");
 }
 
 void ApplistView::ListStyleOnSetUpView()
@@ -159,10 +205,13 @@ void ApplistView::OnTearDownView()
 void ApplistView::OnStop()
 {
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ApplistView::OnStop");
-    if (presenter_->GetIsUseListStyle()) {
-        ListStyleOnStop();
-    } else {
+    AppListStyle style = presenter_->GetCurrentStyle();
+    if (style == AppListStyle::FOOTBALL_STYLE) {
+        FootballStyleOnStop();
+    } else if (style == AppListStyle::HEXAGONS_STYLE) {
         HexagonsStyleOnStop();
+    } else {
+        ListStyleOnStop();
     }
     View<ApplistPresenter>::OnStop();
     if (container_ != nullptr) {
@@ -175,16 +224,39 @@ void ApplistView::OnStop()
     return;
 }
 
+void ApplistView::FootballStyleOnStop()
+{
+    if (enterAnimator_ != nullptr) {
+        enterAnimator_->Stop();
+    }
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ApplistView::FootballStyleOnStop");
+    if (footballDefaultImg_ != nullptr) {
+        ImageCacheManager::GetInstance().UnloadSingleRes(PNG_APPLIST_NOTSETUSE_IMG);
+        footballDefaultImg_ = nullptr;
+    }
+    if (footballList_ != nullptr) {
+        footballList_->RemoveAll();
+    }
+    ListNode<FootballItemView*>* viewNode = footballItemList_.Head();
+    while (viewNode != footballItemList_.End()) {
+        delete(viewNode->data_);
+        viewNode = viewNode->next_;
+    }
+    footballItemList_.Clear();
+}
+
 void ApplistView::HexagonsStyleOnStop()
 {
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ApplistView::HexagonsStyleOnStop");
     if (hexagonsList_ != nullptr) {
         hexagonsList_->RemoveAll();
     }
-    for (auto iter : listHexagonsView_) {
-        delete iter;
+    ListNode<HexagonsItemView*>* viewNode = listHexagonsView_.Head();
+    while (viewNode != listHexagonsView_.End()) {
+        delete(viewNode->data_);
+        viewNode = viewNode->next_;
     }
-    listHexagonsView_.clear();
+    listHexagonsView_.Clear();
 }
 
 void ApplistView::ListStyleOnStop()
@@ -198,42 +270,72 @@ void ApplistView::ListStyleOnStop()
 
 void ApplistView::AddAppItemToList(const AppItem &item)
 {
-    if (presenter_->GetIsUseListStyle()) {
-        listAdapter_->AddListItem(item);
-    } else {
+    AppListStyle style = presenter_->GetCurrentStyle();
+    if (style == AppListStyle::FOOTBALL_STYLE) {
+        FootballItemView* itemView = new FootballItemView();
+        itemView->SetItemInfo(item);
+        itemView->SetSrc(item.iconHexagon);
+        itemView->SetTouchable(true);
+        itemView->SetOnClickListener(presenter_);
+        footballList_->Add(itemView);
+        footballItemList_.PushBack(itemView);
+    } else if (style == AppListStyle::HEXAGONS_STYLE) {
         HexagonsItemView *itemView = new HexagonsItemView();
         itemView->SetItemInfo(item);
         itemView->SetSrc(item.iconSmall);
         itemView->SetTouchable(true);
         itemView->SetOnClickListener(presenter_);
-
         hexagonsList_->Add(itemView);
-        listHexagonsView_.push_back(itemView);
+        listHexagonsView_.PushBack(itemView);
+    } else {
+        listAdapter_->AddListItem(item);
     }
 }
 
 void ApplistView::ClearAppItemToList()
 {
-    if (presenter_->GetIsUseListStyle()) {
-        listAdapter_->ClearItem();
+    AppListStyle style = presenter_->GetCurrentStyle();
+    if (style == FOOTBALL_STYLE) {
+        FootballStyleOnStop();
+    } else if (style == AppListStyle::HEXAGONS_STYLE) {
+        HexagonsStyleOnStop();
     } else {
-        if (hexagonsList_ != nullptr) {
-            hexagonsList_->RemoveAll();
-        }
-        for (auto iter : listHexagonsView_) {
-            delete iter;
-        }
-        listHexagonsView_.clear();
+        listAdapter_->ClearItem();
     }
 }
 
 void ApplistView::RefreshAppList(void)
 {
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ApplistView::RefreshAppList");
-    if (presenter_->GetIsUseListStyle()) {
-        contentList_->RefreshList();
-    } else {
+    AppListStyle style = presenter_->GetCurrentStyle();
+    if (style == AppListStyle::FOOTBALL_STYLE) {
+        footballList_->RefreshIcosahedron();
+    } else if (style == AppListStyle::HEXAGONS_STYLE) {
         hexagonsList_->LayoutChildren(true);
+    } else {
+        contentList_->RefreshList();
+    }
+}
+
+void FootballAnimatorCallback::Callback(UIView *view)
+{
+    if (HALTick::GetInstance().GetElapseTime(startTime_) < 300) {
+        return;
+    }
+    if (!isStartAnim_) {
+        animator_->Stop();
+        animator_->Start();
+        isStartAnim_ = true;
     }
+    UIIcosahedronView* footView = dynamic_cast<UIIcosahedronView*>(view);
+    int16_t el = EasingEquation::LinearEaseNone(startPos_, endPos_, animator_->GetRunTime(), animator_->GetTime());
+    footView->SetSideLength(el);
+    footView->RefreshIcosahedron();
+    const Vector3<float> rotateStart(Screen::GetInstance().GetWidth() / 2.0, // 2.0: divisor
+        Screen::GetInstance().GetHeight() / 2.0, 0); // 2.0: divisor
+    const Vector3<float> rotateEnd(0, 0, 0);
+    // 270 : stop angle
+    int16_t angle = EasingEquation::LinearEaseNone(0, 270, animator_->GetRunTime(), animator_->GetTime());
+    footView->RotatePlanes(angle, rotateStart, rotateEnd);
 }
 }
index 1c9347e..04ddcc1 100644 (file)
@@ -80,12 +80,15 @@ public:
     void SetAdvStartState(bool state);\r
     int ConnectRemoteDevice(const bd_addr_t *addr);\r
     bool ConnectRemoteCheck(const bd_addr_t *addr);\r
+    char* getWatchName(void);\r
+\r
 private:\r
     BluetoothModel();\r
     int16_t callerid{0};\r
     void SetUpListCase();\r
     void SetUpConnedDevicesList();\r
     bool FindNameByAddr(BluetoothCaseInfo &listInfo, BluetoothCaseInfo *caseInfo);\r
+    void InitBluetoothInfo(void);\r
     bool aclConnected{false};\r
     BluetoothCaseInfo tempMacValue{};\r
     bd_addr_t lastConnedAddr{};\r
@@ -101,6 +104,7 @@ private:
     bool tagReturnToDeviceListView{false};\r
     bool tagScanDeviceClicked{false};\r
     bool advStartState{false};\r
+    char watchName[BD_NAME_LEN] = { 0 };\r
 };\r
 \r
 #ifdef __cplusplus\r
diff --git a/code/sdk/application/wearable/nativeapp/nativeui/bluetooth/include/BluetoothWrapper.h b/code/sdk/application/wearable/nativeapp/nativeui/bluetooth/include/BluetoothWrapper.h
new file mode 100644 (file)
index 0000000..3c645fe
--- /dev/null
@@ -0,0 +1,31 @@
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: BluetoothWrapper\r
+ * Author:\r
+ * Create: 2021-10-13\r
+ */\r
+#ifndef BLUETOOTH_WRAPPER_H\r
+#define BLUETOOTH_WRAPPER_H\r
+\r
+#include "common_def.h"\r
+#include "bts_def.h"\r
+#include "bts_gatt_stru.h"\r
+#include "bts_gatt_server.h"\r
+#include "bts_le_gap.h"\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+\r
+errcode_t wrapper_gap_ble_register_callbacks(gap_ble_callbacks_t *func);\r
+errcode_t wrapper_gatts_register_callbacks(gatts_callbacks_t *func);\r
+void wrapper_ble_register(void);\r
+errcode_t wrapper_gatts_register_server(bt_uuid_t *app_uuid, uint8_t *server_id);\r
+errcode_t wrapper_gatts_add_service(uint8_t server_id, bt_uuid_t *service_uuid, bool is_primary);\r
+void wrapper_gatts_service_start(void);\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+\r
+#endif
\ No newline at end of file
index c26c7f5..c3e8a52 100644 (file)
@@ -228,8 +228,12 @@ void BluetoothEarPhoneView::BtEnable()
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothEarPhoneView::BtEnable Bt is Discovering");\r
         return;\r
     } else {\r
+        results = gap_br_set_bt_scan_mode(GAP_SCAN_MODE_NONE, 0);\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "gap_br_set_bt_scan_mode results %d", results);\r
+        results = gap_br_set_inquiry_paramters(DEVICE_MAJOR_CLASS_AUDIO_VIDEO, 0);\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "gap_br_set_inquiry_paramters results %d", results);\r
         results = gap_br_start_discovery();\r
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothEarPhoneView::BtEnable StartBtDiscovery results %d", results);\r
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "gap_br_start_discovery results %d", results);\r
     }\r
     if (g_stopScanHandle != nullptr) {\r
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BluetoothEarPhoneView::BtEnable g_stopScanHandle != nullptr");\r
index c8cd31c..029f614 100644 (file)
@@ -6,6 +6,7 @@
  */\r
 #include <cstdint>\r
 #include "BluetoothModel.h"\r
+#include "BluetoothWrapper.h"\r
 #include "BluetoothPresenter.h"\r
 #include "ConnectPhonePresenter.h"\r
 #include "BluetoothView.h"\r
 #include "alipay_feature.h"\r
 #endif\r
 #include "bts_a2dp_sink.h"\r
+#include "bts_feature.h"\r
 #include "bt_audio_hal_interface.h"\r
 #include "audio_manager_c_wrapper.h"\r
 #include "bts_avrcp_target.h"\r
 #include "msg_center_msg.h"\r
+#include "dfx_channel.h"\r
+#include "tcxo.h"\r
 \r
 namespace OHOS {\r
 \r
@@ -42,6 +46,11 @@ constexpr uint16_t BLUETOOTH_MAX_NUM = 20;
 osal_timer g_a2dp_stream_accept_timer = {nullptr, nullptr, 0, 0};\r
 #define A2DP_STREAM_ACCEPT_TIMER_PERIOD 500\r
 AudioFormatConfig g_audio_format_config = {AUDIO_DEFAULT, 0, 0};\r
+static uint16_t g_sample_svr_handle = 0;\r
+static uint16_t g_sample_characteristic_handle = 0;\r
+static uint16_t g_diag_characteristic_handle = 0;\r
+constexpr uint16_t g_sample_adv_id = 2;\r
+static bd_addr_t g_bd_addr = { 0 };\r
 \r
 void BluetoothModel::SetBluetoothCalleridStatus(int16_t value)\r
 {\r
@@ -64,22 +73,70 @@ BluetoothModel *BluetoothModel::GetInstance(void)
     return &instance;\r
 }\r
 \r
+char* BluetoothModel::getWatchName(void)\r
+{\r
+    return watchName;\r
+}\r
+\r
+void BluetoothModel::InitBluetoothInfo(void)\r
+{\r
+    errcode_t ret;\r
+    unsigned char nameLen = BD_NAME_LEN;\r
+    memset_s(watchName, sizeof(watchName), 0, sizeof(watchName));\r
+    ret = bluetooth_get_local_name((unsigned char *)watchName, &nameLen);\r
+    // 为了实验室测试需要,客户需要自己修改\r
+    if ((nameLen == strlen("WatchDemo") + 1) && (strcmp("WatchDemo", watchName) == 0)) {\r
+        uint32_t currentUs = uapi_tcxo_get_us();\r
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "currentUs 0x%x", currentUs);\r
+        // 设置蓝牙名称\r
+        (void)sprintf_s(watchName, sizeof(watchName), "Watch%x", (currentUs & 0xFFFF));\r
+        ret = bluetooth_set_local_name((unsigned char*)watchName, strlen((char*)watchName) + 1);\r
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "bluetooth_set_local_name %s ret = %u", watchName, ret);\r
+\r
+        //  设置蓝牙地址\r
+        bd_addr_t addr = {{0x0, 0x0, 0x33, 0x44, 0x55, 0x66} ,0};\r
+        addr.addr[0] = currentUs & 0xFF;\r
+        addr.addr[1] = (currentUs & 0XFF00) >> 8;\r
+        ret = bluetooth_set_local_addr(addr.addr, BD_ADDR_LEN);\r
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "bluetooth_set_local_addr [0x%x:0x%x] ret = %u", addr.addr[0], addr.addr[1], ret);\r
+    } else {\r
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "watchName: %s", watchName);\r
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "nameLen: %u", nameLen);\r
+    }\r
+}\r
+\r
 void BluetoothModel::Init()\r
 {\r
-    bool ret = enable_bt_stack();\r
-    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "bt enable_bt_stack ret = %d", ret);\r
+#ifndef SUPPORT_AUTO_OTA\r
+    errcode_t ret;\r
+\r
+    // 设置自动回连,ios一键双连依赖此配置\r
+    bts_feature_t bts_feature = { 0 };\r
+    bts_feature.bt_auto_reconnect_closed = 0;\r
+    ret = bts_set_features(&bts_feature);\r
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "bt bts_set_features ret = %u", ret);\r
+\r
+    ret = enable_bt_stack();\r
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "bt enable_bt_stack ret = %u", ret);\r
+\r
+    // 设置安全连接\r
+    gap_ble_sec_params_t sec_param = { 1, GAP_BLE_IO_CAPABILITY_NOINPUTNOOUTPUT, 1, GAP_BLE_GAP_SECURITY_MODE1_LEVEL3 };\r
+    ret = gap_ble_set_sec_param(&sec_param);\r
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "bt gap_ble_set_sec_param ret = %u", ret);\r
 \r
+    InitBluetoothInfo();\r
     BtInitCallBacks();\r
+    wrapper_ble_register();\r
 #ifdef SUPPORT_ALIPAY_SEC\r
     svr_alipay_bluetooth_init();\r
-#else\r
+#endif\r
     BtInitCallBacksEx();\r
     BtInitGatts();\r
-#endif\r
     BtInitSpp();\r
 \r
     SetUpListCase();\r
     SetUpConnedDevicesList();\r
+#endif\r
 }\r
 \r
 void BluetoothModel::SetCaseListClear()\r
@@ -587,7 +644,7 @@ void BtGapPairConfirmedCallback(const bd_addr_t *bdAddr, int req_type, int numbe
 // 回调:扫描结果处理/发现结果上报\r
 void BtGapDiscoveryResultCallback(const bd_addr_t *bdAddr)\r
 {\r
-    if ((gap_get_device_class(bdAddr) & 0x200) != 0) {\r
+    if ((gap_get_device_class(bdAddr) & DEVICE_MAJOR_CLASS_PHONE) != 0) {\r
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BtGapDiscoveryResultCallback: Mobile Phone Device");\r
         return;\r
     }\r
@@ -874,54 +931,86 @@ static void BleConnStateChangeCallback(unsigned short connId, bd_addr_t *addr, g
     if (GAP_BLE_STATE_DISCONNECTED == connState) { // restart ble adv when disconnected\r
         /* 通知msg_center,ble状态仍用bt状态,此处不区分 */\r
         SendMsgToMsgCenterService(BT_DISCONNECTED_TO_MSGCENTER, 0, nullptr, 0);\r
-        BleAdvStart();\r
     } else {\r
-        BluetoothModel::GetInstance()->SetAdvStartState(false);\r
         SendMsgToMsgCenterService(BT_CONNECTED_TO_MSGCENTER, 0, nullptr, 0);\r
+        (void)memcpy_s(&g_bd_addr, sizeof(bd_addr_t), addr, sizeof(bd_addr_t));\r
     }\r
 }\r
 \r
 static void BleAdvStartCallback(uint8_t advId, adv_status_t status)\r
 {\r
-    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BleAdvStartCallback advId: %d, status:%d\n", advId, status);\r
-    BluetoothModel::GetInstance()->SetAdvStartState(true);\r
+    if (g_sample_adv_id == advId) {\r
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BleAdvStartCallback advId: %d, status:%d\n", advId, status);\r
+        BluetoothModel::GetInstance()->SetAdvStartState(true);\r
+    }\r
 }\r
 \r
 static void BleAdvStopCallback(uint8_t advId, adv_status_t status)\r
 {\r
-    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BleAdvStopCallback advId: %d, status:%d\n", advId, status);\r
+    if (g_sample_adv_id == advId) {\r
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BleAdvStopCallback advId: %d, status:%d\n", advId, status);\r
+        BluetoothModel::GetInstance()->SetAdvStartState(false);\r
+    }\r
 }\r
 \r
-static void BtGattsServiceAddCallback(uint8_t serverId, bt_uuid_t *uuid, uint16_t srvcHandle, errcode_t status)\r
+static void BleAdvTerminateCallback(uint8_t advId, adv_status_t status)\r
 {\r
-    int ret;\r
-    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BtGattsServiceAddCallback 0x%x 0x%x 0x%x",\r
-        status, serverId, srvcHandle);\r
+    if (g_sample_adv_id == advId) {\r
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BleAdvTerminateCallback advId: %d, status:%d\n", advId, status);\r
+        BluetoothModel::GetInstance()->SetAdvStartState(false);\r
+        // 此处开广播是为了实验室测试需要,客户需要自己修改\r
+        BleAdvStart();\r
+    }\r
+}\r
 \r
+static void BtGattsServiceAddCallback(uint8_t serverId, bt_uuid_t *uuid, uint16_t srvcHandle, errcode_t status)\r
+{\r
     if ((uuid->uuid_len == sizeof(uint16_t)) && (*((uint16_t*)uuid->uuid) == 0x1FF0)) {\r
-        uint16_t id = 0x1FF1;\r
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BtGattsServiceAddCallback 0x%x 0x%x 0x%x",\r
+            status, serverId, srvcHandle);\r
+        uint16_t sample_id = 0x1FF1;\r
+        uint16_t diag_id = 0x1FF2;\r
         gatts_add_chara_info_t character;\r
         uint16_t value = 0;\r
 \r
         memset_s(&character, sizeof(gatts_add_chara_info_t), 0, sizeof(gatts_add_chara_info_t));\r
-        character.chara_uuid.uuid_len = sizeof(id);\r
-        memcpy_s(character.chara_uuid.uuid, sizeof(character.chara_uuid.uuid), (char *)&id, sizeof(id));\r
+        character.chara_uuid.uuid_len = sizeof(sample_id);\r
+        memcpy_s(character.chara_uuid.uuid, sizeof(character.chara_uuid.uuid), (char *)&sample_id, sizeof(sample_id));\r
         character.permissions = GATT_ATTRIBUTE_PERMISSION_WRITE;\r
-        character.properties = GATT_CHARACTER_PROPERTY_BIT_WRITE;\r
+        character.properties = GATT_CHARACTER_PROPERTY_BIT_WRITE_NO_RSP;\r
+        character.value_len = (uint16_t)sizeof(value);\r
+        character.value = (uint8_t *)(&value);\r
+        int ret = gatts_add_characteristic(serverId, srvcHandle, &character);\r
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "gatts_add_characteristic sample ret 0x%x", ret);\r
+\r
+        memset_s(&character, sizeof(gatts_add_chara_info_t), 0, sizeof(gatts_add_chara_info_t));\r
+        character.chara_uuid.uuid_len = sizeof(diag_id);\r
+        memcpy_s(character.chara_uuid.uuid, sizeof(character.chara_uuid.uuid), (char *)&diag_id, sizeof(diag_id));\r
+        character.permissions = GATT_ATTRIBUTE_PERMISSION_WRITE | GATT_ATTRIBUTE_PERMISSION_READ;\r
+        character.properties = GATT_CHARACTER_PROPERTY_BIT_WRITE | GATT_CHARACTER_PROPERTY_BIT_READ;\r
         character.value_len = (uint16_t)sizeof(value);\r
         character.value = (uint8_t *)(&value);\r
 \r
         ret = gatts_add_characteristic(serverId, srvcHandle, &character);\r
-        WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "gatts_add_characteristic ret 0x%x", ret);\r
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "gatts_add_characteristic diag ret 0x%x", ret);\r
+\r
+        g_sample_svr_handle = srvcHandle;\r
     }\r
 }\r
 \r
 static void BtGattsCharacteristicAddCallback(uint8_t serverId, bt_uuid_t *uuid, uint16_t srvcHandle, gatts_add_character_result_t *result, errcode_t status)\r
 {\r
-    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BtGattsCharacteristicAddCallback 0x%x 0x%x 0x%x",\r
-        status, serverId, srvcHandle);\r
-\r
     if ((uuid->uuid_len == sizeof(uint16_t)) && (*((uint16_t*)uuid->uuid) == 0x1FF1)) {\r
+        g_sample_characteristic_handle = result->value_handle;\r
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BtGattsCharacteristicAddCallback 0x%x 0x%x 0x%x 0x%x",\r
+                      status, serverId, srvcHandle, g_sample_characteristic_handle);\r
+    }\r
+    if ((uuid->uuid_len == sizeof(uint16_t)) && (*((uint16_t*)uuid->uuid) == 0x1FF2)) {\r
+        g_diag_characteristic_handle = result->value_handle;\r
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BtGattsCharacteristicAddCallback 0x%x 0x%x 0x%x 0x%x",\r
+                      status, serverId, srvcHandle, g_diag_characteristic_handle);\r
+    }\r
+    if (g_sample_characteristic_handle != 0 && g_diag_characteristic_handle !=0) {\r
         int ret = gatts_start_service(serverId, srvcHandle);\r
         WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "gatts_start_service ret 0x%x", ret);\r
     }\r
@@ -929,13 +1018,17 @@ static void BtGattsCharacteristicAddCallback(uint8_t serverId, bt_uuid_t *uuid,
 \r
 static void BtGattsDescriptorAddCallback(uint8_t serverId, bt_uuid_t *uuid, uint16_t srvcHandle, uint16_t descriptorHandle, errcode_t status)\r
 {\r
-    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BtGattsDescriptorAddCallback 0x%x 0x%x 0x%x 0x%x",\r
-        status, serverId, srvcHandle, descriptorHandle);\r
+    if (g_sample_svr_handle == srvcHandle) {\r
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BtGattsDescriptorAddCallback 0x%x 0x%x 0x%x 0x%x",\r
+            status, serverId, srvcHandle, descriptorHandle);\r
+    }\r
 }\r
 \r
 static void BtGattsServiceStartCallback(uint8_t serverId, uint16_t srvcHandle, errcode_t status)\r
 {\r
-    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BtGattsServiceStartCallback 0x%x 0x%x 0x%x", status, serverId, srvcHandle);\r
+    if (g_sample_svr_handle == srvcHandle) {\r
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BtGattsServiceStartCallback 0x%x 0x%x 0x%x", status, serverId, srvcHandle);\r
+    }\r
 }\r
 \r
 static void BtGattsServiceStopCallback(uint8_t serverId, uint16_t srvcHandle, errcode_t status)\r
@@ -955,7 +1048,37 @@ static void BtGattsRequestReadCallback(uint8_t serverId, uint16_t connId, gatts_
 \r
 static void BtGattsRequestWriteCallback(uint8_t serverId, uint16_t connId, gatts_req_write_cb_t *writeCbPara,  errcode_t status)\r
 {\r
-    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BtGattsRequestWriteCallback");\r
+    if (g_sample_characteristic_handle == writeCbPara->handle) {\r
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BtGattsRequestWriteCallback");\r
+        if (writeCbPara->length == 9) {\r
+            uint8_t ctkd[] = {'o', 'p', 'e', 'n', ' ', 'c', 't', 'k', 'd'};\r
+            if (memcmp(ctkd, writeCbPara->value, writeCbPara->length) == 0) {\r
+                WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "enable ctkd");\r
+                // 一键双连使能(依赖安全连接参数配置)\r
+                errcode_t ret = gap_ble_set_ctkd_enable(true);\r
+                WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "gap_ble_set_ctkd_enable ret = %u", ret);\r
+\r
+                // 发起ble配对\r
+                ret = gap_ble_pair_remote_device(&g_bd_addr);\r
+                WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "gap_ble_pair_remote_device ret = %u ", ret);\r
+            }\r
+        } else if (writeCbPara->length == 10) {\r
+            uint8_t ctkd[] = {'c', 'l', 'o', 's', 'e', ' ', 'c', 't', 'k', 'd'};\r
+            if (memcmp(ctkd, writeCbPara->value, writeCbPara->length) == 0) {\r
+                // 一键双连去使能\r
+                errcode_t ret = gap_ble_set_ctkd_enable(false);\r
+                WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "gap_ble_set_ctkd_disable ret = %u", ret);\r
+            }\r
+        }\r
+    } else if (g_diag_characteristic_handle == writeCbPara->handle) {\r
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "diag_gatt_write_req_cbk");\r
+        diag_gatt_write_req_cbk(serverId, connId, writeCbPara, status);\r
+    }\r
+}\r
+\r
+static void BtGattsMtuChangedCallback(uint8_t serverId, uint16_t connId, uint16_t mtuSize, errcode_t status)\r
+{\r
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BtGattsMtuChangedCallback connId = %u mtuSize = %u", connId, mtuSize);\r
 }\r
 \r
 static void BtA2dpSnkAcceptTimerStop(void)\r
@@ -1131,7 +1254,8 @@ void BtInitCallBacksEx()
     g_gapBleCallbacks.conn_state_change_cb = BleConnStateChangeCallback;\r
     g_gapBleCallbacks.start_adv_cb = BleAdvStartCallback;\r
     g_gapBleCallbacks.stop_adv_cb = BleAdvStopCallback;\r
-    gap_ble_register_callbacks(&g_gapBleCallbacks);\r
+    g_gapBleCallbacks.terminate_adv_cb = BleAdvTerminateCallback;\r
+    wrapper_gap_ble_register_callbacks(&g_gapBleCallbacks);\r
 \r
     g_btGattsCallbacks.add_service_cb = BtGattsServiceAddCallback;\r
     g_btGattsCallbacks.add_characteristic_cb = BtGattsCharacteristicAddCallback;\r
@@ -1141,8 +1265,8 @@ void BtInitCallBacksEx()
     g_btGattsCallbacks.delete_service_cb = BtGattsServiceDeleteCallback;\r
     g_btGattsCallbacks.read_request_cb = BtGattsRequestReadCallback;\r
     g_btGattsCallbacks.write_request_cb = BtGattsRequestWriteCallback;\r
-    g_btGattsCallbacks.mtu_changed_cb = nullptr;\r
-    gatts_register_callbacks(&g_btGattsCallbacks);\r
+    g_btGattsCallbacks.mtu_changed_cb = BtGattsMtuChangedCallback;\r
+    wrapper_gatts_register_callbacks(&g_btGattsCallbacks);\r
 }\r
 \r
 void BtInitGatts(void)\r
@@ -1155,13 +1279,15 @@ void BtInitGatts(void)
 \r
     uuid.uuid_len = sizeof(ser_id);\r
     memcpy_s(uuid.uuid, sizeof(uuid.uuid), (char *)&ser_id, sizeof(ser_id));\r
-    ret = gatts_register_server(&uuid, &serverId); /* 注册gatt server */\r
+    ret = wrapper_gatts_register_server(&uuid, &serverId); /* 注册gatt server */\r
     WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "gatts_register_server ret: 0x%x serverId = 0x%x", ret, serverId);\r
 \r
     uuid.uuid_len = sizeof(id);\r
     memcpy_s(uuid.uuid, sizeof(uuid.uuid), (char *)&id, sizeof(id));\r
-    ret = gatts_add_service(serverId, &uuid, true);\r
+    ret = wrapper_gatts_add_service(serverId, &uuid, true);\r
     WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "gatts_add_service ret: 0x%x", ret);\r
+\r
+    wrapper_gatts_service_start();\r
 }\r
 \r
 static uint8_t Char2Num(int8_t c)\r
@@ -1266,7 +1392,7 @@ void BtInitSpp(void)
 \r
 void BleAdvStart(void)\r
 {\r
-    int advId = 1;\r
+    int advId = g_sample_adv_id;\r
     if (BluetoothModel::GetInstance()->GetAdvStartState()) {\r
         WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BleAdvStart already started");\r
         gap_ble_stop_adv(advId);\r
diff --git a/code/sdk/application/wearable/nativeapp/nativeui/bluetooth/src/BluetoothWrapper.cpp b/code/sdk/application/wearable/nativeapp/nativeui/bluetooth/src/BluetoothWrapper.cpp
new file mode 100644 (file)
index 0000000..fd9dd57
--- /dev/null
@@ -0,0 +1,318 @@
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
+ * Description: BluetoothModel view\r
+ * Author:\r
+ * Create: 2021-10-13\r
+ */\r
+\r
+#include <list>\r
+#include "BluetoothWrapper.h"\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+\r
+static bool gatts_register_flag = false;\r
+static uint8_t gatts_server_id = 0;\r
+std::list<gap_ble_callbacks_t> g_gap_ble_callback_list;\r
+std::list<gatts_callbacks_t> g_gatts_callback_list;\r
+std::list<bt_uuid_t> g_uuid_list;\r
+std::list<uint16_t> g_svr_handle_list;\r
+\r
+errcode_t wrapper_gap_ble_register_callbacks(gap_ble_callbacks_t *func)\r
+{\r
+    g_gap_ble_callback_list.push_back(*func);\r
+    return ERRCODE_SUCC;\r
+}\r
+\r
+errcode_t wrapper_gatts_register_callbacks(gatts_callbacks_t *func)\r
+{\r
+    g_gatts_callback_list.push_back(*func);\r
+    return ERRCODE_SUCC;\r
+}\r
+\r
+void wrapper_gap_ble_enable_callback(errcode_t status)\r
+{\r
+    for (auto callback : g_gap_ble_callback_list) {\r
+        if (callback.ble_enable_cb != nullptr) {\r
+            callback.ble_enable_cb(status);\r
+        }\r
+    }\r
+}\r
+\r
+void wrapper_gap_ble_disable_callback(errcode_t status)\r
+{\r
+    for (auto callback : g_gap_ble_callback_list) {\r
+        if (callback.ble_disable_cb != nullptr) {\r
+            callback.ble_disable_cb(status);\r
+        }\r
+    }\r
+}\r
+\r
+void wrapper_gap_ble_start_adv_callback(uint8_t adv_id, adv_status_t status)\r
+{\r
+    for (auto callback : g_gap_ble_callback_list) {\r
+        if (callback.start_adv_cb) {\r
+            callback.start_adv_cb(adv_id, status);\r
+        }\r
+    }\r
+}\r
+\r
+void wrapper_gap_ble_stop_adv_callback(uint8_t adv_id, adv_status_t status)\r
+{\r
+    for (auto callback : g_gap_ble_callback_list) {\r
+        if (callback.stop_adv_cb) {\r
+            callback.stop_adv_cb(adv_id, status);\r
+        }\r
+    }\r
+}\r
+\r
+void wrapper_gap_ble_set_adv_data_callback(uint8_t adv_id, errcode_t status)\r
+{\r
+    for (auto callback : g_gap_ble_callback_list) {\r
+        if (callback.set_adv_data_cb) {\r
+            callback.set_adv_data_cb(adv_id, status);\r
+        }\r
+    }\r
+}\r
+\r
+void wrapper_gap_ble_set_adv_param_callback(uint8_t adv_id, errcode_t status)\r
+{\r
+    for (auto callback : g_gap_ble_callback_list) {\r
+        if (callback.set_adv_param_cb) {\r
+            callback.set_adv_param_cb(adv_id, status);\r
+        }\r
+    }\r
+}\r
+\r
+void wrapper_gap_ble_scan_result_callback(gap_scan_result_data_t *scan_result_data)\r
+{\r
+    for (auto callback : g_gap_ble_callback_list) {\r
+        if (callback.scan_result_cb) {\r
+            callback.scan_result_cb(scan_result_data);\r
+        }\r
+    }\r
+}\r
+\r
+void wrapper_gap_ble_set_scan_param_callback(errcode_t status)\r
+{\r
+    for (auto callback : g_gap_ble_callback_list) {\r
+        if (callback.set_scan_param_cb) {\r
+            callback.set_scan_param_cb(status);\r
+        }\r
+    }\r
+}\r
+\r
+void wrapper_gap_ble_connect_state_changed_callback(uint16_t conn_id, bd_addr_t *addr, gap_ble_conn_state_t conn_state,\r
+    gap_ble_pair_state_t pair_state, gap_ble_disc_reason_t disc_reason)\r
+{\r
+    for (auto callback : g_gap_ble_callback_list) {\r
+        if (callback.conn_state_change_cb) {\r
+            callback.conn_state_change_cb(conn_id, addr, conn_state, pair_state, disc_reason);\r
+        }\r
+    }\r
+}\r
+\r
+void wrapper_gap_ble_paired_complete_callback(uint16_t conn_id, const bd_addr_t *addr, errcode_t status)\r
+{\r
+    for (auto callback : g_gap_ble_callback_list) {\r
+        if (callback.pair_result_cb) {\r
+            callback.pair_result_cb(conn_id, addr, status);\r
+        }\r
+    }\r
+}\r
+\r
+void wrapper_gap_ble_terminate_adv_callback(uint8_t adv_id, adv_status_t status)\r
+{\r
+    for (auto callback : g_gap_ble_callback_list) {\r
+        if (callback.terminate_adv_cb) {\r
+            callback.terminate_adv_cb(adv_id, status);\r
+        }\r
+    }\r
+}\r
+\r
+void wrapper_gap_ble_read_rssi_callback(uint16_t conn_id, int8_t rssi, errcode_t status)\r
+{\r
+    for (auto callback : g_gap_ble_callback_list) {\r
+        if (callback.read_rssi_cb) {\r
+            callback.read_rssi_cb(conn_id, rssi, status);\r
+        }\r
+    }\r
+}\r
+\r
+void wrapper_gap_ble_auth_complete_callback(uint16_t conn_id, const bd_addr_t *addr,\r
+    errcode_t status, const ble_auth_info_evt_t* evt)\r
+{\r
+    for (auto callback : g_gap_ble_callback_list) {\r
+        if (callback.auth_complete_cb) {\r
+            callback.auth_complete_cb(conn_id, addr, status, evt);\r
+        }\r
+    }\r
+}\r
+\r
+void wrapper_gap_ble_connect_param_update_callback(uint16_t conn_id, errcode_t status,\r
+    const gap_ble_conn_param_update_t *param)\r
+{\r
+    for (auto callback : g_gap_ble_callback_list) {\r
+        if (callback.conn_param_update_cb) {\r
+            callback.conn_param_update_cb(conn_id, status, param);\r
+        }\r
+    }\r
+}\r
+\r
+void wrapper_gatts_add_service_callback(uint8_t server_id, bt_uuid_t *uuid, uint16_t handle, errcode_t status)\r
+{\r
+    g_svr_handle_list.push_back(handle);\r
+    for (auto callback : g_gatts_callback_list) {\r
+        if (callback.add_service_cb) {\r
+            callback.add_service_cb(server_id, uuid, handle, status);\r
+        }\r
+    }\r
+}\r
+void wrapper_gatts_add_characteristic_callback(uint8_t server_id, bt_uuid_t *uuid, uint16_t service_handle,\r
+    gatts_add_character_result_t *result, errcode_t status)\r
+{\r
+    for (auto callback : g_gatts_callback_list) {\r
+        if (callback.add_characteristic_cb) {\r
+            callback.add_characteristic_cb(server_id, uuid, service_handle, result, status);\r
+        }\r
+    }\r
+}\r
+void wrapper_gatts_add_descriptor_callback(uint8_t server_id, bt_uuid_t *uuid, uint16_t service_handle,\r
+    uint16_t handle, errcode_t status)\r
+{\r
+    for (auto callback : g_gatts_callback_list) {\r
+        if (callback.add_descriptor_cb) {\r
+            callback.add_descriptor_cb(server_id, uuid, service_handle, handle, status);\r
+        }\r
+    }\r
+}\r
+void wrapper_gatts_start_service_callback(uint8_t server_id, uint16_t handle, errcode_t status)\r
+{\r
+    bool skip_flag = true;\r
+    for (auto svr_handle : g_svr_handle_list) {\r
+        if (svr_handle == handle) {\r
+            skip_flag = false;\r
+        }\r
+    }\r
+    if (!skip_flag) {\r
+        for (auto callback : g_gatts_callback_list) {\r
+            if (callback.start_service_cb) {\r
+                callback.start_service_cb(server_id, handle, status);\r
+            }\r
+        }\r
+        wrapper_gatts_service_start();\r
+    }\r
+}\r
+void wrapper_gatts_stop_service_callback(uint8_t server_id, uint16_t handle, errcode_t status)\r
+{\r
+    for (auto callback : g_gatts_callback_list) {\r
+        if (callback.stop_service_cb) {\r
+            callback.stop_service_cb(server_id, handle, status);\r
+        }\r
+    }\r
+}\r
+void wrapper_gatts_delete_all_service_callback(uint8_t server_id, errcode_t status)\r
+{\r
+    for (auto callback : g_gatts_callback_list) {\r
+        if (callback.delete_service_cb) {\r
+            callback.delete_service_cb(server_id, status);\r
+        }\r
+    }    \r
+}\r
+void wrapper_gatts_read_request_callback(uint8_t server_id, uint16_t conn_id, gatts_req_read_cb_t *read_cb_para, errcode_t status)\r
+{\r
+    for (auto callback : g_gatts_callback_list) {\r
+        if (callback.read_request_cb) {\r
+            callback.read_request_cb(server_id, conn_id, read_cb_para, status);\r
+        }\r
+    }\r
+}\r
+void wrapper_gatts_write_request_callback(uint8_t server_id, uint16_t conn_id, gatts_req_write_cb_t *write_cb_para, errcode_t status)\r
+{\r
+    for (auto callback : g_gatts_callback_list) {\r
+        if (callback.write_request_cb) {\r
+            callback.write_request_cb(server_id, conn_id, write_cb_para, status);\r
+        }\r
+    }\r
+}\r
+void wrapper_gatts_mtu_changed_callback(uint8_t server_id, uint16_t conn_id, uint16_t mtu_size, errcode_t status)\r
+{\r
+    for (auto callback : g_gatts_callback_list) {\r
+        if (callback.mtu_changed_cb) {\r
+            callback.mtu_changed_cb(server_id, conn_id, mtu_size, status);\r
+        }\r
+    }\r
+}\r
+\r
+static gap_ble_callbacks_t g_wrapper_gap_ble_callbacks = {\r
+    .ble_enable_cb = wrapper_gap_ble_enable_callback,\r
+    .ble_disable_cb = wrapper_gap_ble_disable_callback,\r
+    .set_adv_data_cb = wrapper_gap_ble_set_adv_data_callback,\r
+    .set_adv_param_cb = wrapper_gap_ble_set_adv_param_callback,\r
+    .set_scan_param_cb = wrapper_gap_ble_set_scan_param_callback,\r
+    .start_adv_cb = wrapper_gap_ble_start_adv_callback,\r
+    .stop_adv_cb = wrapper_gap_ble_stop_adv_callback,\r
+    .scan_result_cb = wrapper_gap_ble_scan_result_callback,\r
+    .conn_state_change_cb = wrapper_gap_ble_connect_state_changed_callback,\r
+    .pair_result_cb = wrapper_gap_ble_paired_complete_callback,\r
+    .read_rssi_cb = wrapper_gap_ble_read_rssi_callback,\r
+    .terminate_adv_cb = wrapper_gap_ble_terminate_adv_callback,\r
+    .auth_complete_cb = wrapper_gap_ble_auth_complete_callback,\r
+    .conn_param_update_cb = wrapper_gap_ble_connect_param_update_callback,  \r
+};\r
+\r
+static gatts_callbacks_t g_wrapper_gatts_callbacks = {\r
+    .add_service_cb = wrapper_gatts_add_service_callback,\r
+    .add_characteristic_cb = wrapper_gatts_add_characteristic_callback,\r
+    .add_descriptor_cb = wrapper_gatts_add_descriptor_callback,\r
+    .start_service_cb = wrapper_gatts_start_service_callback,\r
+    .stop_service_cb = wrapper_gatts_stop_service_callback,\r
+    .delete_service_cb = wrapper_gatts_delete_all_service_callback,\r
+    .read_request_cb = wrapper_gatts_read_request_callback,\r
+    .write_request_cb = wrapper_gatts_write_request_callback,\r
+    .mtu_changed_cb = wrapper_gatts_mtu_changed_callback,   \r
+};\r
+\r
+void wrapper_ble_register(void)\r
+{\r
+    gap_ble_register_callbacks(&g_wrapper_gap_ble_callbacks);\r
+    gatts_register_callbacks(&g_wrapper_gatts_callbacks);\r
+}\r
+\r
+\r
+errcode_t wrapper_gatts_register_server(bt_uuid_t *app_uuid, uint8_t *server_id)\r
+{\r
+    errcode_t ret = ERRCODE_SUCC;\r
+    if (gatts_register_flag) {\r
+        *server_id = gatts_server_id;\r
+        ret = ERRCODE_SUCC;\r
+    } else {\r
+        gatts_register_flag = true;\r
+        ret = gatts_register_server(app_uuid, server_id);\r
+        gatts_server_id = *server_id;\r
+    }\r
+    return ret;\r
+}\r
+\r
+errcode_t wrapper_gatts_add_service(uint8_t server_id, bt_uuid_t *service_uuid, bool is_primary)\r
+{\r
+    g_uuid_list.push_back(*service_uuid);\r
+    return ERRCODE_SUCC;\r
+}\r
+\r
+void wrapper_gatts_service_start(void)\r
+{\r
+    if (!g_uuid_list.empty()) {\r
+        bt_uuid_t &uuid = g_uuid_list.front();\r
+        // 服务异步添加,需要保证当前服务start后,再添加下一个服务\r
+        (void)gatts_add_service(gatts_server_id, &uuid, true);\r
+        g_uuid_list.pop_front();\r
+    } else {\r
+        g_svr_handle_list.clear();\r
+    }\r
+}\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
index 2920e06..e7b833b 100644 (file)
@@ -43,10 +43,7 @@ public:
     bool OnDrag(UIView& view, const DragEvent& event) override;\r
     void ConfirmOnClick();\r
     void RemovePair();\r
-    char* getWatchName();\r
-\r
 private:\r
-    char watchName[32];\r
 };\r
 } // namespace OHOS\r
 #endif
\ No newline at end of file
index 47ad06a..6c93595 100644 (file)
@@ -7,6 +7,7 @@
 #include "wearable_log.h"\r
 #include "UiConfig.h"\r
 #include "ConnectPhonePresenter.h"\r
+#include "BluetoothModel.h"\r
 \r
 namespace OHOS {\r
 static ConnectOpenView *g_pConnectOpenView{nullptr};\r
@@ -45,7 +46,7 @@ void ConnectOpenView::ShowUpBackView()
             return;\r
         }\r
         watchNameLabel->SetPosition(0, 165, HORIZONTAL_RESOLUTION, 45); // 0:x 244:y 454:width 45:height\r
-        watchNameLabel->SetText(ConnectPhonePresenter::GetInstance()->getWatchName());\r
+        watchNameLabel->SetText(BluetoothModel::GetInstance()->getWatchName());\r
         watchNameLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40:font data\r
         watchNameLabel->SetStyle(STYLE_BACKGROUND_COLOR, OPA_OPAQUE);\r
         watchNameLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
index 06a0bce..6644d0e 100644 (file)
@@ -11,7 +11,6 @@
 #include "bts_le_gap.h"\r
 #include "drag_event.h"\r
 #include "cmsis_os.h"\r
-#include "tcxo.h"\r
 #include "UiConfig.h"\r
 #include "wearable_log.h"\r
 \r
@@ -77,7 +76,7 @@ void ConnectPhonePresenter::RemovePair()
     unsigned int connedDevicesNum = 0;\r
 \r
     bool ret = gap_get_paired_devices_num(&connedDevicesNum);\r
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Setup GetPariedDevicesNum ret = %d, num = %d", ret, connedDevicesNum);\r
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "Setup GapGetPariedDevicesNum ret = %d, num = %d", ret, connedDevicesNum);\r
 \r
     if (connedDevicesNum != 0) {\r
         gap_paired_device_info_t *devInfo = (gap_paired_device_info_t *)malloc(sizeof(gap_paired_device_info_t) * connedDevicesNum);\r
@@ -95,27 +94,18 @@ void ConnectPhonePresenter::RemovePair()
         }\r
         free(devInfo);\r
     }\r
+\r
+    (void)gap_ble_remove_all_pairs();\r
 }\r
 \r
 void ConnectPhonePresenter::ConfirmOnClick()\r
 {\r
     bool ret;\r
-\r
-    memset_s(watchName, sizeof(watchName), 0, sizeof(watchName));\r
-    (void)sprintf_s(watchName, sizeof(watchName), "Watch%x", ((uint32_t)uapi_tcxo_get_us() & 0xFFFF));\r
-\r
-    ret = bluetooth_set_local_name((unsigned char*)watchName, strlen((char*)watchName) + 1);\r
-    if (!ret) {\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ConnectPhonePresenter: bt SetLocalName ret = 0x%x", ret);\r
-    }\r
-\r
     ret = gap_br_set_bt_scan_mode(GAP_SCAN_MODE_CONNECTABLE_GENERAL_DISCOVERABLE, 60); // start scan\r
     if (!ret) {\r
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ConnectPhonePresenter bt gap_br_set_bt_scan_mode ret = 0x%x", ret);\r
     }\r
-#ifndef SUPPORT_ALIPAY_SEC\r
     BleAdvStart();\r
-#endif\r
 }\r
 \r
 bool ConnectPhonePresenter::OnDrag(UIView& view, const DragEvent& event)\r
@@ -130,9 +120,4 @@ bool ConnectPhonePresenter::OnDrag(UIView& view, const DragEvent& event)
     return true;\r
 }\r
 \r
-char* ConnectPhonePresenter::getWatchName()\r
-{\r
-    return watchName;\r
 }\r
-\r
-}
\ No newline at end of file
index 443c325..2817eab 100644 (file)
@@ -39,7 +39,7 @@ public:
 private:
     void SetNumImg(UIImageView* img, const ImageInfo *info);
     void FillIntegerPart(uint16_t intVal);
-    void FillDecimalPart(uint16_t intVal);
+    void FillDecimalPart(float data);
     void HandlePosition();
     bool CreateImageViews(float data);
 
index f682261..db348cc 100644 (file)
@@ -111,6 +111,8 @@ public:
     */
     void OnActive(void) override;
 
+    void OnInactive(void) override;
+
 private:
     void ProcessData(DialDataType type, DialView* view);
     std::unordered_map<int16_t, DialView*> dataTypeMap_;
index 8c9f3c2..d734feb 100644 (file)
@@ -218,14 +218,15 @@ void MainPresenterSample::SetCircleProgress()
     if (playbackProgress == nullptr) {
         return;
     }
+    int32_t playerState;
+    PlayersModel::GetInstance()->GetPlayerCtr()->GetPlayerState(playerState);
     state_ = playersView->GetPlayerButtonState();
+    if ((playerState != PLAYER_STARTED) && (state_ == UICheckBox::UICheckBoxState::SELECTED)) {
+        playersView->SetPlayerButtonState(UICheckBox::UICheckBoxState::UNSELECTED);
+    } else if ((playerState == PLAYER_STARTED) && (state_ == UICheckBox::UICheckBoxState::UNSELECTED)) {
+        playersView->SetPlayerButtonState(UICheckBox::UICheckBoxState::SELECTED);
+    }
     if (state_ == UICheckBox::UICheckBoxState::SELECTED) {
-        int32_t playerState;
-        PlayersModel::GetInstance()->GetPlayerCtr()->GetPlayerState(playerState);
-        if (playerState != PLAYER_STARTED) {
-            playersView->SetPlayerButtonState(UICheckBox::UICheckBoxState::UNSELECTED);
-            return;
-        }
         PlayersModel::GetInstance()->GetPlayerCtr()->GetCurrentTime(playerCurrentTime_);
         PlayersModel::GetInstance()->GetDuration(playerMusicDuration_);
         if (playerMusicDuration_ != 0) {
index 04ccf10..0650368 100644 (file)
@@ -89,9 +89,18 @@ void DialDigitalImgView::SetNumImg(UIImageView* img, const ImageInfo *info)
     currentIndex_++;
 }
 
+static uint8_t GetValueLength(uint16_t value)
+{
+    uint8_t length = 1;
+    if (value > 0) {
+        length = log10(value) + 1;
+    }
+    return length;
+}
+
 void DialDigitalImgView::FillIntegerPart(uint16_t intVal)
 {
-    uint8_t length = log10(intVal) + 1;
+    uint8_t length = GetValueLength(intVal);
     if (length < allocIntegerLen_) {
         for (uint8_t i = 0; i < (allocIntegerLen_ - length); i++) {
             SetNumImg(imgs_[currentIndex_], numInfo_[0]);
@@ -103,18 +112,21 @@ void DialDigitalImgView::FillIntegerPart(uint16_t intVal)
     }
 }
 
-void DialDigitalImgView::FillDecimalPart(uint16_t intVal)
+void DialDigitalImgView::FillDecimalPart(float data)
 {
-    uint8_t length = log10(intVal) + 1;
-    if (length < decimalPrecision_) {
-        for (uint8_t i = 0; i < (decimalPrecision_ - length); i++) {
+    uint8_t startIndex = GetValueLength(static_cast<uint16_t>(abs(data))) + 1;
+    char dataStr[10] = {'\0'}; // 10: max number of digits.
+    sprintf_s(dataStr, 10, "%f", data); // 10: size of dataStr
+
+    for (uint8_t i = 0; i < decimalPrecision_; i++) {
+        uint8_t index = startIndex + i;
+        if ((index < 10) && (dataStr[index] != '\0')) { // 10: size of dataStr
+            uint8_t val = dataStr[index] - '0';
+            SetNumImg(imgs_[currentIndex_], numInfo_[val]);
+        } else {
             SetNumImg(imgs_[currentIndex_], numInfo_[0]);
         }
     }
-    for (uint8_t i = 0; i < length; i++) {
-        uint8_t curNum = static_cast<uint16_t>(intVal / (pow(10, length - i - 1))) % 10; // 10: conversion
-        SetNumImg(imgs_[currentIndex_], numInfo_[curNum]);
-    }
 }
 
 void DialDigitalImgView::HandlePosition()
@@ -134,6 +146,7 @@ void DialDigitalImgView::HandlePosition()
     for (uint8_t i = 0; i < currentIndex_; i++) {
         parent_->Add(imgs_[i]);
         imgs_[i]->SetPosition(curX, alignPos_.y);
+        imgs_[i]->Invalidate();
         curX += imgs_[i]->GetWidth() + space_;
     }
 }
@@ -141,8 +154,9 @@ void DialDigitalImgView::HandlePosition()
 bool DialDigitalImgView::CreateImageViews(float data)
 {
     uint8_t imgCnt = 0;
-    uint32_t integer = static_cast<uint32_t>(abs(data));
-    uint8_t actualIntegerLen = log10(integer) + 1;
+    uint16_t integer = static_cast<uint16_t>(abs(data));
+
+    uint8_t actualIntegerLen = GetValueLength(integer);
 
     if (integerLength_ == 0) {
         imgCnt = actualIntegerLen;
@@ -164,6 +178,7 @@ bool DialDigitalImgView::CreateImageViews(float data)
     if (imgCnt_ != 0) {
         for (uint8_t i = 0; i < imgCnt_; i++) {
             if (parent_ != nullptr) {
+                imgs_[i]->Invalidate();
                 parent_->Remove(imgs_[i]);
             }
         }
@@ -210,9 +225,7 @@ void DialDigitalImgView::HandleFloatData(float data)
 
     if (decimalPrecision_ != 0 && decimalPointInfo_ != nullptr) {
         SetNumImg(imgs_[currentIndex_], decimalPointInfo_);
-        // 10: conversion
-        uint16_t decimalVal = static_cast<uint16_t>((abs(data) - intVal) * (pow(10, decimalPrecision_)));
-        FillDecimalPart(decimalVal);
+        FillDecimalPart(data);
     }
     HandlePosition();
     value_ = data;
index 2eea946..a8866df 100644 (file)
@@ -363,4 +363,16 @@ void DialViewGroup::OnActive(void)
         kaleidoscope_->StartRotateAnimator();
     }
 }
+
+void DialViewGroup::OnInactive(void)
+{
+    if (video_ != nullptr) {
+        if (!video_->IsStopped()) {
+            video_->StopPlay();
+        }
+    } else if (kaleidoscope_ != nullptr) {
+        kaleidoscope_->StopRotateAnimator();
+        kaleidoscope_->ClearFocus();
+    }
+}
 }
index b2978d1..a61df48 100644 (file)
@@ -93,21 +93,21 @@ bool DialBinParser::GetDialPreviewInfo(FILE* fp, DialPreviewInfo* info)
 \r
     if (memcpy_s(info->dialName, DIAL_NAME_MAX_LEN, dialHeader->dialName, DIAL_NAME_MAX_LEN) != EOK) {\r
         GRAPHIC_LOGE("[%s: %d]memcpy_s dial name fail!\n", __FUNCTION__, __LINE__);\r
-        free(dialHeader);\r
+        UIFree(dialHeader);\r
         return false;\r
     }\r
 \r
     if (memcpy_s(info->description, DIAL_DESCRIPTION_MAX_LEN,\r
         dialHeader->description, DIAL_DESCRIPTION_MAX_LEN) != EOK) {\r
         GRAPHIC_LOGE("[%s: %d]memcpy_s dial description fail!\n", __FUNCTION__, __LINE__);\r
-        free(dialHeader);\r
+        UIFree(dialHeader);\r
         return false;\r
     }\r
 \r
     info->imgId =  dialHeader->previewImgId | dirId_;\r
     info->offset = dialHeader->imageOffset;\r
 \r
-    free(dialHeader);\r
+    UIFree(dialHeader);\r
     return true;\r
 }\r
 \r
index 7a9d948..c9374ea 100644 (file)
@@ -1092,41 +1092,43 @@ void HfpIncomingEventPublish(uint16 topic, hfp_hf_calls_info_t callsInfo)
 {
     int32 ret;
     uint32 size = sizeof(hfp_hf_calls_info_t);
-    Request *request = nullptr;
     BroadcastApi *broadcastApi = nullptr;
     IUnknown *api = nullptr;
 
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HfpIncomingEventPublish topic=%u!!", topic);
 
-    /* alloc request */
-    request = SAMGR_AllocRequestMsg(0, PLATFORM_CORE, BROADCAST_SVR_ID, size);
-    if (request == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SAMGR_AllocRequestMsg failed");
+    void *publishData = malloc(size);
+    if (publishData == nullptr) {
         return;
     }
-    request->msgId = topic;
-    ret = memcpy_s(request->data, size, (const void *)&callsInfo, size);
+    ret = memcpy_s(publishData, size, (const void *)&callsInfo, size);
     if (ret != EOK) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HfpIncomingEventPublish memcpy_s rateDataTmp fail! ret:%d", ret);
+        free(publishData);
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HfpIncomingEventPublish memcpy_s fail! ret = %d", ret);
         return;
     }
-    request->len = size;
-    request->msgValue = 0;
+
+    Request request = {
+        .msgId = topic,
+        .len = size,
+        .msgValue = 0,
+        .data = publishData,
+    };
 
     /* public request */
     api = SAMGR_GetInstance()->GetFeatureApi(BROADCAST_SERVICE_NAME, BROADCAST_FEATURE_NAME);
     if (api == nullptr) {
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GetFeatureApi failed");
-        SAMGR_FreeRequestMsg(request);
+        free(publishData);
         return;
     }
     ret = api->QueryInterface(api, DEFAULT_VERSION, (void **)&broadcastApi);
     if (ret != 0 || broadcastApi == nullptr) {
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "QueryInterface failed");
-        SAMGR_FreeRequestMsg(request);
+        free(publishData);
         return;
     }
-    broadcastApi->PublishTopic((IUnknown *)broadcastApi, request);
+    broadcastApi->PublishTopic((IUnknown *)broadcastApi, &request);
     broadcastApi->Release((IUnknown *)broadcastApi);
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HfpIncomingEventPublish end!!");
 
index 8e13b59..bd99bcd 100644 (file)
@@ -82,7 +82,6 @@ static BOOL ServiceMessageHandle(Service *service, Request *request)
     if (request == nullptr) {\r
         return FALSE;\r
     }\r
-    SAMGR_FreeRequestMsg(request);\r
     return TRUE;\r
 }\r
 \r
index d757dbe..31a578c 100644 (file)
@@ -14,6 +14,7 @@
 namespace OHOS {
 static const char *SET_DESKTOP_LIST = "setdesktopList";
 static const char *SET_DESKTOP_HEXAGONS = "setdesktopHexagons";
+static const char *SET_DESKTOP_FOOTBALL = "setdesktopFootball";
 
 class SetDesktopView;
 class SetDesktopModel;
@@ -30,7 +31,7 @@ public:
 
     bool OnClick(UIView &view, const ClickEvent &event) override;
     bool OnDrag(UIView& view, const DragEvent& event) override;
-    bool GetHexagonsStyleState(void);
+    uint8_t GetCurrentStyle(void);
 private:
 };
 }
index d1827c7..1a6a808 100644 (file)
@@ -36,15 +36,21 @@ public:
     void OnSetUpView() override;
     void OnTearDownView() override;
     void OnStop() override;
-    void UpdateSelectedStyle(bool hexagonsSelected);
+    void UpdateSelectedStyle(uint8_t selectedStyle);
+    uint8_t GetCurrentSelectedStyle(void);
+
 private:
+    void InitFootballItem();
     UILabel titleText;
     UIToggleButton hexagonsBtn;
     UIToggleButton listBtn;
+    UIToggleButton footballBtn_;
     UIImageView hexagonsImage;
     UIImageView listImage;
+    UIImageView footballImage_;
     UILabel listText;
     UILabel hexagonsText;
+    UILabel footballText_;
 };
 }
 #endif // SET_DESKTOP_VIEW_H
index 43c523e..180bcd9 100644 (file)
@@ -28,6 +28,8 @@ namespace OHOS {
         (void)UtilsGetValue("applist_style", temp, STYLE_VALUE_LEN);
         if (strcmp(temp, "hexagons") == 0) {
             style = HEXAGONS_STYLE;
+        } else if (strcmp(temp, "football") == 0) {
+            style = FOOTBALL_STYLE;
         } else {
             style = APPLIST_STYLE;
         }
@@ -40,6 +42,8 @@ namespace OHOS {
             (void)UtilsSetValue("applist_style", "list");
         } else if (style == HEXAGONS_STYLE) {
             (void)UtilsSetValue("applist_style", "hexagons");
+        } else if (style == FOOTBALL_STYLE) {
+            (void)UtilsSetValue("applist_style", "football");
         }
     }
 
index e535895..34eef7a 100644 (file)
@@ -50,14 +50,22 @@ namespace OHOS {
             SetDesktopModel::GetInstance().SetDesktopStyle(HEXAGONS_STYLE);
         } else if (strcmp(view.GetViewId(), SET_DESKTOP_LIST) == 0) {
             SetDesktopModel::GetInstance().SetDesktopStyle(APPLIST_STYLE);
+        } else if (strcmp(view.GetViewId(), SET_DESKTOP_FOOTBALL) == 0) {
+            SetDesktopModel::GetInstance().SetDesktopStyle(FOOTBALL_STYLE);
         }
         uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();
         NativeAbility::GetInstance().ChangeSlice(preSlice);
         return true;
     }
 
-    bool SetDesktopPresenter::GetHexagonsStyleState(void)
+    uint8_t SetDesktopPresenter::GetCurrentStyle(void)
     {
-        return (SetDesktopModel::GetInstance().GetDesktopStyle() == HEXAGONS_STYLE);
+        DesktopStyle style = SetDesktopModel::GetInstance().GetDesktopStyle();
+        if (style == HEXAGONS_STYLE) {
+            return 1;   // 1: hexagons style enum index
+        } else if (style == FOOTBALL_STYLE) {
+            return 2;   // 2: football style enum index
+        }
+        return 0;
     }
 }
index c5f2b49..f736926 100644 (file)
@@ -43,41 +43,43 @@ void SetDesktopView::OnSetUpView()
     titleText.SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
     container_->Add(&titleText);
 
-    listImage.SetPosition(25, 135, 190, 190);
+    listImage.SetPosition(0, 135, 190, 190);
     listImage.SetSrc(PNG_SET_DESKTOP_BG_IMAGE);
     container_->Add(&listImage);
 
-    listBtn.SetPosition(47, 157, 148, 148);
+    listBtn.SetPosition(22, 157, 148, 148);
     listBtn.SetImages(PNG_SET_DESKTOP_LIST_IMAGE, PNG_SET_DESKTOP_LIST_IMAGE);
     listBtn.SetViewId(SET_DESKTOP_LIST);
     container_->Add(&listBtn);
 
-    listText.SetPosition(96, 328, 200, 60);
+    listText.SetPosition(61, 328, 200, 60);
     listText.SetText("列表");
     listText.SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);
     listText.SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
     listText.SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
     container_->Add(&listText);
 
-    hexagonsImage.SetPosition(247, 135, 190, 190);
+    hexagonsImage.SetPosition(150, 135, 190, 190);
     hexagonsImage.SetSrc(PNG_SET_DESKTOP_BG_IMAGE);
     container_->Add(&hexagonsImage);
 
-    hexagonsBtn.SetPosition(267, 157, 148, 148);
+    hexagonsBtn.SetPosition(172, 157, 148, 148);
     hexagonsBtn.SetImages(PNG_SET_DESKTOP_HEXAGONS_IMAGE, PNG_SET_DESKTOP_HEXAGONS_IMAGE);
     hexagonsBtn.SetViewId(SET_DESKTOP_HEXAGONS);
     container_->Add(&hexagonsBtn);
 
-    hexagonsText.SetPosition(305, 328, 200, 60);
+    hexagonsText.SetPosition(218, 328, 200, 60);
     hexagonsText.SetText("蜂窝");
     hexagonsText.SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);
     hexagonsText.SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
     hexagonsText.SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
     container_->Add(&hexagonsText);
 
+    InitFootballItem();
     listBtn.SetOnClickListener(presenter_);
     hexagonsBtn.SetOnClickListener(presenter_);
-    UpdateSelectedStyle(presenter_->GetHexagonsStyleState());
+    footballBtn_.SetOnClickListener(presenter_);
+    UpdateSelectedStyle(presenter_->GetCurrentStyle());
 }
 
 void SetDesktopView::OnTearDownView()
@@ -97,11 +99,48 @@ void SetDesktopView::OnStop()
     }
 }
 
-void SetDesktopView::UpdateSelectedStyle(bool hexagonsSelected)
+void SetDesktopView::UpdateSelectedStyle(uint8_t selectedStyle)
 {
-    listImage.SetVisible(!hexagonsSelected);
-    hexagonsImage.SetVisible(hexagonsSelected);
-    hexagonsBtn.SetState(hexagonsSelected);
-    listBtn.SetState(!hexagonsSelected);
+    hexagonsImage.SetVisible(false);
+    hexagonsBtn.SetState(false);
+    listImage.SetVisible(false);
+    listBtn.SetState(false);
+    footballImage_.SetVisible(false);
+    footballBtn_.SetState(false);
+
+    if (selectedStyle == 1) { // 1: select hexagons style
+        hexagonsImage.SetVisible(true);
+        hexagonsBtn.SetState(true);
+    } else if (selectedStyle == 2) { // 2: select football style
+        footballImage_.SetVisible(true);
+        footballBtn_.SetState(true);
+    } else {
+        listImage.SetVisible(true);
+        listBtn.SetState(true);
+    }
+}
+
+void SetDesktopView::InitFootballItem()
+{
+    footballImage_.SetPosition(300, 135, 190, 190);
+    footballImage_.SetSrc(PNG_SET_DESKTOP_BG_IMAGE);
+    container_->Add(&footballImage_);
+
+    footballBtn_.SetPosition(322, 157, 148, 148);
+    footballBtn_.SetImages(PNG_SET_DESKTOP_HEXAGONS_IMAGE, PNG_SET_DESKTOP_HEXAGONS_IMAGE);
+    footballBtn_.SetViewId(SET_DESKTOP_FOOTBALL);
+    container_->Add(&footballBtn_);
+
+    footballText_.SetPosition(368, 328, 200, 60);
+    footballText_.SetText("足球");
+    footballText_.SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);
+    footballText_.SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
+    footballText_.SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+    container_->Add(&footballText_);
+}
+
+uint8_t SetDesktopView::GetCurrentSelectedStyle()
+{
+    return presenter_->GetCurrentStyle();
 }
 }
index 1af1cc9..fb89507 100644 (file)
@@ -11,6 +11,7 @@
 #include "SetDialModel.h"
 #include "Presenter.h"
 #include "components/ui_view.h"
+#include "components/ui_roller_view.h"
 #include "KeyInputListener.h"
 #include "ModelListenerSample.h"
 
@@ -22,7 +23,8 @@ class SetDialView;
 class SetDialModel;
 class SetDialPresenter : public Presenter<SetDialView>,
                          public UIView::OnClickListener, public ModelListenerSample,
-                         public UICoverflowView::OnCoverflowScrollListener {
+                         public UICoverflowView::OnCoverflowScrollListener,
+                         public UIRollerView::OnScrollListener {
 public:
     SetDialPresenter();
     ~SetDialPresenter() override;
@@ -35,6 +37,7 @@ public:
     void OnTickEvent() override;
     void Notify() override {}
     bool OnScroll() override;
+    void OnScroll(UIRollerView* roller, std::string currentItemName, float currentItemAngle) override;
     bool OnClick(UIView &view, const ClickEvent &event) override;
     void ResetTickTimer(void);
 private:
index 0a7f564..0a0408d 100644 (file)
@@ -11,6 +11,7 @@
 #include "View.h"
 #include "components/ui_view_group.h"
 #include "components/ui_coverflow_view.h"
+#include "components/ui_roller_view.h"
 #include "window/window.h"
 #include "BaseView.h"
 #include "ChangeSliceListener.h"
@@ -20,6 +21,12 @@ namespace OHOS {
 static constexpr uint8_t DIVISOR_TWO = 2;
 class SetDialPresenter;
 
+enum class DialStyle {
+    COVERFLOW = 0,
+    ROLLER,
+    STYLE_NUM
+};
+
 class SetDialView : public View<SetDialPresenter> {
 public:
     SetDialView();
@@ -36,10 +43,14 @@ public:
     void OnTearDownView() override;
     void OnStop() override;
     void CoverflowViewScroll(void);
+    void RollerViewScroll(std::string currentItemName, float currentItemAngle);
     uint8_t GetCoverflowPage(void);
 private:
     void SetUpCoverflowView(void);
+    void SetUpRollerView(void);
     UICoverflowView coverflow_;
+    UIRollerView rollerView_;
+    int16_t rollerItemNum_ = 0;
     UILabel label_;
     uint8_t lastIndex_;
 };
index 2c3ae78..c003241 100644 (file)
@@ -67,6 +67,11 @@ namespace OHOS {
         return true;
     }
 
+    void SetDialPresenter::OnScroll(UIRollerView* roller, std::string currentItemName, float currentItemAngle)
+    {
+        view_->RollerViewScroll(currentItemName, currentItemAngle);
+    }
+
     size_t SetDialPresenter::GetDialCount(void)
     {
         return model->GetDialCount();
index daa69cd..d45af35 100644 (file)
@@ -8,6 +8,7 @@
 #include <string>
 #include "SetDialView.h"
 #include "SetDialPresenter.h"
+#include "SetDialStyleModel.h"
 
 namespace OHOS {
 SetDialView::SetDialView()
@@ -26,7 +27,11 @@ void SetDialView::OnStart()
     View<SetDialPresenter>::OnStart();
     SetContainerView(new UIViewGroup());
     container_->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());
-    SetUpCoverflowView();
+    if (SetDialStyleModel::GetInstance().GetStyle() == DialStyle::COVERFLOW) {
+        SetUpCoverflowView();
+    } else {
+        SetUpRollerView();
+    }
 }
 
 void SetDialView::SetUpCoverflowView(void)
@@ -35,6 +40,7 @@ void SetDialView::SetUpCoverflowView(void)
     coverflow_.SetIntercept(true);
     coverflow_.SetOnCoverflowListener(presenter_);
     coverflow_.SetOnClickListener(presenter_);
+    coverflow_.SetThrowDrag(true);
     std::vector<SetDialInfo> &dialInfo = presenter_->GetDialInfo();
     for (auto iter : dialInfo) {
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetDialView::SetUpCoverflowView %s",
@@ -49,11 +55,43 @@ void SetDialView::SetUpCoverflowView(void)
     label_.SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
     label_.SetText(dialInfo[lastIndex_].dialName.c_str());
     label_.SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
-        
+
     container_->Add(&coverflow_);
     container_->Add(&label_);
 }
 
+void SetDialView::SetUpRollerView(void)
+{
+    rollerView_.SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());
+    rollerView_.SetItemSize(150, 150); // 150: item size
+    rollerView_.SetThrowDrag(true);
+    rollerView_.SetItemPadding(80); // 80: item padding
+    container_->Add(&rollerView_);
+
+    std::vector<SetDialInfo> &dialInfo = presenter_->GetDialInfo();
+    for (auto iter : dialInfo) {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetDialView::SetUpRollerView %s",
+                      iter.dialName.c_str());
+        bool succ = rollerView_.AddItem(iter.dialName, iter.preImageInfo);
+        rollerItemNum_ += succ ? 1 : 0;
+    }
+    float scalerCoef = 0.55;
+    uint16_t w = Screen::GetInstance().GetWidth();
+    uint16_t h = Screen::GetInstance().GetHeight();
+    rollerView_.SetItemSize(w * scalerCoef, h * scalerCoef);
+    lastIndex_ = presenter_->GetPageIndex();
+    rollerView_.SetCurrentItem(dialInfo[lastIndex_].dialName);
+    rollerView_.SetOnClickListener(presenter_);
+    rollerView_.SetOnScrollListener(presenter_);
+
+    label_.SetPosition(127, 50, 200, 50);
+    label_.SetTextColor(Color::White());
+    label_.SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);
+    label_.SetText(dialInfo[lastIndex_].dialName.c_str());
+    label_.SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);
+    container_->Add(&label_);
+}
+
 void SetDialView::OnSetUpView()
 {
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetDialView::OnSetUpView");
@@ -111,9 +149,31 @@ void SetDialView::CoverflowViewScroll(void)
     presenter_->ResetTickTimer();
 }
 
+void SetDialView::RollerViewScroll(std::string currentItemName, float currentItemAngle)
+{
+    const float baseAngle = 360.0;
+    const float halfBaseAngle = 180.0;
+    if (FloatMoreEqual(currentItemAngle, halfBaseAngle)) {
+        currentItemAngle -= baseAngle;
+    }
+    if (currentItemAngle < 0) {
+        currentItemAngle = -currentItemAngle;
+    }
+    float maxAngle = baseAngle / rollerItemNum_;
+    float coef = 1.0 - 1.0 / (maxAngle) * currentItemAngle;
+    label_.SetStyle(STYLE_TEXT_OPA, coef * OPA_OPAQUE);
+    label_.SetText(currentItemName.c_str());
+    std::vector<SetDialInfo> &dialInfo = presenter_->GetDialInfo();
+    for (uint8_t i = 0; i < dialInfo.size(); ++i) {
+        if (dialInfo[i].dialName == currentItemName) {
+            lastIndex_ = i;
+        }
+    }
+    presenter_->ResetTickTimer();
+}
+
 uint8_t SetDialView::GetCoverflowPage(void)
 {
     return lastIndex_;
 }
-
 }
diff --git a/code/sdk/application/wearable/nativeapp/nativeui/set_dial_style/include/SetDialStyleModel.h b/code/sdk/application/wearable/nativeapp/nativeui/set_dial_style/include/SetDialStyleModel.h
new file mode 100644 (file)
index 0000000..c27e300
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) CompanyNameMagicTag 2024. All rights reserved.
+ * Description: SetDialStyleModel.h
+ * Author:
+ * Create: 2024-06-06
+ */
+
+#ifndef SET_DIAL_STYLE_MODEL_H
+#define SET_DIAL_STYLE_MODEL_H
+#include "SetDialView.h"
+#include "components/ui_view.h"
+
+namespace OHOS {
+class SetDialStyleModel {
+public:
+    static SetDialStyleModel& GetInstance()
+    {
+        static SetDialStyleModel model;
+        return model;
+    }
+
+    void SetStyle(DialStyle style);
+    DialStyle GetStyle();
+
+private:
+    constexpr static uint8_t MAX_LEN = 32;
+    const char key_[MAX_LEN] = "set_dial_style";
+    struct {
+        const DialStyle style;
+        const char value[MAX_LEN];
+    } values_[static_cast<int>(DialStyle::STYLE_NUM)] = {
+        {DialStyle::COVERFLOW, "DialStyle::COVERFLOW"},
+        {DialStyle::ROLLER, "DialStyle::ROLLER"},
+    };
+    SetDialStyleModel();
+    ~SetDialStyleModel();
+    SetDialStyleModel(const SetDialStyleModel&) = delete;
+    SetDialStyleModel& operator=(const SetDialStyleModel&) = delete;
+};
+} // OHOS
+#endif
\ No newline at end of file
diff --git a/code/sdk/application/wearable/nativeapp/nativeui/set_dial_style/include/SetDialStylePresenter.h b/code/sdk/application/wearable/nativeapp/nativeui/set_dial_style/include/SetDialStylePresenter.h
new file mode 100644 (file)
index 0000000..fda918e
--- /dev/null
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) CompanyNameMagicTag 2024. All rights reserved.
+ * Description: SetDialStylePresenter.h
+ * Author:
+ * Create: 2024-06-06
+ */
+
+#ifndef SET_DIAL_STYLE_PRESENTER_H
+#define SET_DIAL_STYLE_PRESENTER_H
+#include "SetDialView.h"
+#include "components/ui_view.h"
+#include "Presenter.h"
+
+namespace OHOS {
+class SetDialStyleModel;
+class SetDialStyleView;
+class SetDialStylePresenter : public Presenter<SetDialStyleView, SetDialStyleModel>,
+                              public UIView::OnClickListener,
+                              public UIView::OnDragListener {
+public:
+    SetDialStylePresenter();
+    ~SetDialStylePresenter();
+    SetDialStylePresenter(const SetDialStylePresenter&) = delete;
+    SetDialStylePresenter& operator=(const SetDialStylePresenter&) = delete;
+    bool OnClick(UIView &view, const ClickEvent &event) override;
+    bool OnDrag(UIView& view, const DragEvent& event) override;
+    DialStyle GetCurrentStyle() const
+    {
+        return curStyle_;
+    }
+
+private:
+    DialStyle curStyle_ = DialStyle::COVERFLOW;
+};
+
+} // OHOS
+#endif
\ No newline at end of file
diff --git a/code/sdk/application/wearable/nativeapp/nativeui/set_dial_style/include/SetDialStyleView.h b/code/sdk/application/wearable/nativeapp/nativeui/set_dial_style/include/SetDialStyleView.h
new file mode 100644 (file)
index 0000000..3b1a932
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) CompanyNameMagicTag 2024. All rights reserved.
+ * Description: SetDialStyleView.h
+ * Author:
+ * Create: 2024-06-06
+ */
+
+#ifndef SET_DIAL_STYLE_VIEW_H
+#define SET_DIAL_STYLE_VIEW_H
+#include "components/ui_view.h"
+#include "components/ui_label.h"
+#include "components/ui_view_group.h"
+#include "components/ui_toggle_button.h"
+#include "SetDialView.h"
+#include "View.h"
+
+namespace OHOS {
+class SetDialStylePresenter;
+class SetDialStyleView : public View<SetDialStylePresenter> {
+public:
+    SetDialStyleView();
+    ~SetDialStyleView() override;
+    SetDialStyleView(const SetDialStyleView &) = delete;
+    SetDialStyleView& operator=(const SetDialStyleView &) = delete;
+
+    void OnStart() override;
+    void OnSetUpView() override;
+    void OnStop() override;
+    void OnClick(UIView &view);
+
+private:
+    UILabel labelCover_;
+    UILabel labelRoller_;
+    UIToggleButton btnCover_;
+    UIToggleButton btnRoller_;
+    struct {
+        UIToggleButton *btn;
+        DialStyle style;
+    } styleTable_[static_cast<int>(DialStyle::STYLE_NUM)] = {
+        {&btnCover_, DialStyle::COVERFLOW},
+        {&btnRoller_, DialStyle::ROLLER},
+    };
+};
+} // OHOS
+#endif
\ No newline at end of file
diff --git a/code/sdk/application/wearable/nativeapp/nativeui/set_dial_style/src/SetDialStyleModel.cpp b/code/sdk/application/wearable/nativeapp/nativeui/set_dial_style/src/SetDialStyleModel.cpp
new file mode 100644 (file)
index 0000000..81d833a
--- /dev/null
@@ -0,0 +1,43 @@
+/*
+ * Copyright (c) CompanyNameMagicTag 2024. All rights reserved.
+ * Description: SetDialStyleModel.cpp
+ * Author:
+ * Create: 2024-06-06
+ */
+
+#include "SetDialStyleModel.h"
+#include "kv_store.h"
+
+namespace OHOS {
+void SetDialStyleModel::SetStyle(DialStyle style)
+{
+    int len = sizeof(values_) / sizeof(values_[0]);
+    for (int i = 0; i < len; ++i) {
+        if (values_[i].style == style) {
+            UtilsSetValue(key_, values_[i].value);
+            break;
+        }
+    }
+}
+
+DialStyle SetDialStyleModel::GetStyle()
+{
+    int len = sizeof(values_) / sizeof(values_[0]);
+    char temp[MAX_LEN];
+    UtilsGetValue(key_, temp, MAX_LEN);
+    for (int i = 0; i < len; ++i) {
+        if (strcmp(temp, values_[i].value) == 0) {
+            return values_[i].style;
+        }
+    }
+    return DialStyle::COVERFLOW;
+}
+
+SetDialStyleModel::SetDialStyleModel()
+{
+}
+
+SetDialStyleModel::~SetDialStyleModel()
+{
+}
+} // OHOS
\ No newline at end of file
diff --git a/code/sdk/application/wearable/nativeapp/nativeui/set_dial_style/src/SetDialStylePresenter.cpp b/code/sdk/application/wearable/nativeapp/nativeui/set_dial_style/src/SetDialStylePresenter.cpp
new file mode 100644 (file)
index 0000000..6dbc283
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) CompanyNameMagicTag 2024. All rights reserved.
+ * Description: SetDialStylePresenter.cpp
+ * Author:
+ * Create: 2024-06-06
+ */
+
+#include "SetDialStyleView.h"
+#include "SetDialStyleModel.h"
+#include "SetDialStylePresenter.h"
+
+namespace OHOS {
+SetDialStylePresenter::SetDialStylePresenter()
+{
+    Attach(&SetDialStyleModel::GetInstance());
+}
+
+SetDialStylePresenter::~SetDialStylePresenter()
+{
+}
+
+bool SetDialStylePresenter::OnClick(UIView &view, const ClickEvent &event)
+{
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetDialStylePresenter::OnClick");
+    view_->OnClick(view);
+    return true;
+}
+
+bool SetDialStylePresenter::OnDrag(UIView& view, const DragEvent& event)
+{
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SetDialStylePresenter::OnDrag");
+    UNUSED(view);
+    if ((event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) &&
+        (event.GetDeltaX() > X_DRAG_OFFSET) && (event.GetDeltaX() > (DOUBLES * MATH_ABS(event.GetDeltaY())))) {
+        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SettingPresenter::OnDrag ChangeSlice");
+        uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();
+        NativeAbility::GetInstance().ChangeSlice(preSlice);
+    }
+    return true;
+}
+} // OHOS
\ No newline at end of file
diff --git a/code/sdk/application/wearable/nativeapp/nativeui/set_dial_style/src/SetDialStyleView.cpp b/code/sdk/application/wearable/nativeapp/nativeui/set_dial_style/src/SetDialStyleView.cpp
new file mode 100644 (file)
index 0000000..86901f0
--- /dev/null
@@ -0,0 +1,93 @@
+/*
+ * Copyright (c) CompanyNameMagicTag 2024. All rights reserved.
+ * Description: SetDialStyleView.cpp
+ * Author:
+ * Create: 2024-06-06
+ */
+
+#include "SetDialStyleView.h"
+#include "SetDialStyleModel.h"
+#include "SetDialStylePresenter.h"
+
+namespace OHOS {
+SetDialStyleView::SetDialStyleView()
+{
+}
+
+SetDialStyleView::~SetDialStyleView()
+{
+}
+
+void SetDialStyleView::OnStart()
+{
+    View<SetDialStylePresenter>::OnStart();
+    SetContainerView(new UIViewGroup);
+    if (container_ == nullptr) {
+        return;
+    }
+    container_->SetDraggable(true);
+    container_->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());
+    container_->SetOnDragListener(presenter_);
+    container_->SetTouchable(true);
+}
+
+void SetDialStyleView::OnSetUpView()
+{
+    if (container_ == nullptr) {
+        return;
+    }
+    View<SetDialStylePresenter>::OnSetUpView();
+    labelCover_.SetPosition(96, 328, 200, 60);
+    labelCover_.SetText("Coverflow");
+    container_->Add(&labelCover_);
+
+    labelRoller_.SetPosition(305, 328, 200, 60);
+    labelRoller_.SetText("Roller");
+    container_->Add(&labelRoller_);
+
+    btnCover_.SetPosition(47, 157, 148, 148);
+    container_->Add(&btnCover_);
+    btnRoller_.SetPosition(267, 157, 148, 148);
+    container_->Add(&btnRoller_);
+
+    const DialStyle style = SetDialStyleModel::GetInstance().GetStyle();
+    int len = sizeof(styleTable_) / sizeof(styleTable_[0]);
+    for (int i = 0; i < len; ++i) {
+        if (style == styleTable_[i].style) {
+            styleTable_[i].btn->SetState(true);
+        } else {
+            styleTable_[i].btn->SetState(false);
+        }
+    }
+
+    btnCover_.SetOnClickListener(presenter_);
+    btnRoller_.SetOnClickListener(presenter_);
+}
+
+void SetDialStyleView::OnStop()
+{
+    View<SetDialStylePresenter>::OnStop();
+    if (container_ != nullptr) {
+        container_->RemoveAll();
+        delete container_;
+        container_ = nullptr;
+    }
+}
+
+void SetDialStyleView::OnClick(UIView &view)
+{
+    const UIToggleButton *ptr = dynamic_cast<UIToggleButton*>(&view);
+    if (ptr == nullptr) {
+        return;
+    }
+    int len = sizeof(styleTable_) / sizeof(styleTable_[0]);
+    for (int i = 0; i < len; ++i) {
+        if (ptr == styleTable_[i].btn) {
+            styleTable_[i].btn->SetState(true);
+            SetDialStyleModel::GetInstance().SetStyle(styleTable_[i].style);
+        } else {
+            styleTable_[i].btn->SetState(false);
+        }
+    }
+}
+} // OHOS
\ No newline at end of file
index 71fed04..61b893d 100644 (file)
@@ -29,6 +29,7 @@ namespace OHOS {
         settings[index++] = {VIEW_SET_DESKTOP, PNG_SETTTING_DESKTOP_IMAGE, "桌面", true};
         settings[index++] = {VIEW_SET_DIAL, PNG_SETTTING_DESKTOP_IMAGE, "表盘", true};
         settings[index++] = {VIEW_SET_CARD, PNG_SETTTING_DESKTOP_IMAGE, "卡片", true};
+        settings[index++] = {VIEW_SET_DIAL_STYLE, PNG_SETTTING_DESKTOP_IMAGE, "表盘风格", true};
         usedLen = index;
     }
 
index ed8408e..64fd4ee 100644 (file)
@@ -169,7 +169,6 @@ void ServiceMsgProcess(Request *request)
             uapi_pm_remove_sleep_veto(PM_ID_SCREEN);
             break;
     }
-    SAMGR_FreeRequestMsg(request);
 }
 
 BOOL ServiceMessageHandle(Service *service, Request *request)
@@ -192,19 +191,33 @@ TaskConfig GetServiceTaskConfig(Service *service)
 
 static int32_t SendMsg(int32_t msgId, uint32_t msgValue, void *data, int32_t dataLen)
 {
-    Request *request = SAMGR_AllocRequestMsg(0, PLATFORM_CORE, UI_SVR_ID, dataLen);
-    if (request == nullptr) {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_UI_SERVICE, "SAMGR_AllocRequestMsg failed");
-        return FALSE;
-    }
-    request->msgId = msgId;
-    request->msgValue = msgValue;
-    if (data != nullptr) {
-        (void)memcpy_s(request->data, dataLen, data, dataLen);
+    int32_t ret;
+    void *sendData = nullptr;
+    if (dataLen > 0) {
+        sendData = malloc(dataLen);
+        if (sendData == nullptr) {
+            return FALSE;
+        }
+        ret = memcpy_s(sendData, dataLen, data, dataLen);
+        if (ret != EOK) {
+            free(sendData);
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "uiservice sendMsg memcpy_s fail! ret = %d", ret);
+            return FALSE;
+        }
     }
 
-    int32_t ret = SAMGR_SendRequest(IUNKNOWN_GetIdentity(GET_IUNKNOWN(g_uiService)), request, nullptr);
+    Request request = {
+        .msgId = msgId,
+        .len = dataLen,
+        .msgValue = msgValue,
+        .data = sendData,
+    };
+
+    ret = SAMGR_SendRequest(IUNKNOWN_GetIdentity(GET_IUNKNOWN(g_uiService)), &request, nullptr);
     if (ret != 0) {
+        if (sendData != nullptr) {
+            free(sendData);
+        }
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_UI_SERVICE, "SendMsg failed ret = %d ", ret);
         return FALSE;
     }
index b1b82ad..2560ff4 100644 (file)
@@ -146,6 +146,9 @@ static BOOL SendLocalMessage(const Identity *id, Request *req)
                   req, req->msgId, req->len, req->data);
     int32_t ret = SAMGR_SendRequest(id, req, NULL);
     if (ret != OHOS_SUCCESS) {
+        if (req->data != NULL) {
+            free(req->data);
+        }
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_BROADCASE_SERVICE, "SAMGR_SendRequest failed. ret=%d ", ret);
         return FALSE;
     }
@@ -181,19 +184,27 @@ static BOOL SendInnerMessage(const TopicSubscriberInfo *topicSubscriberInfo, int
                 continue;
             }
 
-            /* 在当前核内给对应服务发送消息。(共享内存时,消息分配,相当于零拷贝) zero-copy */
-            Request *tmpReq = SAMGR_ZeroCopyMsg(req);
-            if (tmpReq == NULL) {
-                WEARABLE_LOGE(WEARABLE_LOG_MODULE_BROADCASE_SERVICE, "SAMGR_AllocRequestMsg failed! subIdx=%u, len=%u",
-                              subIdx, req->len);
-                break;
+            /* 在当前核内给对应服务发送消息 */
+            Request tmpReq = {
+                .msgId =  req->msgId,
+                .len = req->len,
+                .msgValue = req->msgValue,
+                .data = NULL,
+            };
+            if (tmpReq.len != 0) {
+                tmpReq.data = malloc(tmpReq.len);
+                if (tmpReq.data != NULL) {
+                    (void)memcpy_s(tmpReq.data, tmpReq.len, req->data, req->len);
+                } else {
+                    break;
+                }
             }
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_BROADCASE_SERVICE, "subIdx=%u, topicIdx=%u, tmpReq=0x%p",
-                          subIdx, topicIdx, tmpReq);
-
-            SendLocalMessage(subscriber->identity, tmpReq);
+            SendLocalMessage(subscriber->identity, &tmpReq);
         }
     }
+    if (req->data != NULL) {
+        free(req->data);
+    }
     MUTEX_Unlock(topicSubscriberInfo->mutex);
     return TRUE;
 }
@@ -502,7 +513,9 @@ int32_t PublishTopicMsgImpl(const TopicSubscriberInfo *topicSubscriberInfo, Requ
     int16_t topicIdx = GetTopicIndex(topicTable->topics, topicTable->count, req->msgId);
     if (topicIdx == INVALID_INDEX) {
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_BROADCASE_SERVICE, "topic not exist! msgId=%u", req->msgId);
-        SAMGR_FreeRequestMsg(req);
+        if (req->data != NULL) {
+            free(req->data);
+        }
         return ret;
     }
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_BROADCASE_SERVICE, "topic=%u, topicIdx=%u", req->msgId, topicIdx);
@@ -521,7 +534,5 @@ int32_t PublishTopicMsgImpl(const TopicSubscriberInfo *topicSubscriberInfo, Requ
     if (isInnerCore) {
         SendInnerMessage(topicSubscriberInfo, topicIdx, req);
     }
-
-    SAMGR_FreeRequestMsg(req);
     return OHOS_SUCCESS;
 }
index 75d45b2..69d64a4 100644 (file)
@@ -94,6 +94,7 @@ set(COMPONENT_NAME "msg_center_adapt")
 set(PUBLIC_HEADER
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${CMAKE_CURRENT_SOURCE_DIR}/include/vendor_app
+    ${CMAKE_CURRENT_SOURCE_DIR}/include/ota
 )
 
 set(PRIVATE_HEADER
@@ -125,6 +126,7 @@ set(PRIVATE_HEADER
     ${ROOT_DIR}/middleware/utils/fs/include/fs
     ${ROOT_DIR}/include/middleware/services/bts/br
     ${ROOT_DIR}/include/middleware/services/bts/common
+    ${ROOT_DIR}/application/auto_ota
 )
 
 if("JS_ENABLE" IN_LIST DEFINES)
@@ -153,6 +155,13 @@ set(SOURCES
 )
 endif()
 
+if("SUPPORT_AUTO_OTA_SERVER" IN_LIST DEFINES)
+set(SOURCES
+    ${SOURCES}
+    ${CMAKE_CURRENT_SOURCE_DIR}/src/ota/msg_center_ota.cpp
+)
+endif()
+
 set(COMPONENT_PUBLIC_CCFLAGS
 )
 
index 914878b..5ee51f2 100644 (file)
Binary files a/code/sdk/application/wearable/service/msg_center/brandy-native-js/libmsg_center.a and b/code/sdk/application/wearable/service/msg_center/brandy-native-js/libmsg_center.a differ
index 8c53ae5..bba3ff9 100644 (file)
Binary files a/code/sdk/application/wearable/service/msg_center/brandy-xts/libmsg_center.a and b/code/sdk/application/wearable/service/msg_center/brandy-xts/libmsg_center.a differ
index 09e6824..7b5a2fd 100644 (file)
@@ -139,11 +139,19 @@ typedef enum msg_center_alipay_type_id {
 \r
 } msg_center_alipay_type_id_t;\r
 \r
+typedef enum msg_center_ota_type_id {\r
+    MSGCENTER_TYPE_ID_OTA_UPG_START = 0x1,\r
+    MSGCENTER_TYPE_ID_OTA_UPG_CHECK = 0x2,\r
+    MSGCENTER_TYPE_ID_OTA_UPG_CHECK_RESULT = 0x3,\r
+\r
+} msg_center_ota_type_id_t;\r
+\r
 typedef enum msg_center_cmd_id {\r
     MSGCENTER_CMD_XIAODU             = 0x1,\r
     MSGCENTER_CMD_NAVIGATION         = 0x2,\r
     MSGCENTER_CMD_VECTOR_NAVI        = 0x3,\r
     MSGCENTER_CMD_ALIPAY             = 0x4,\r
+    MSGCENTER_CMD_OTA                = 0x5,\r
     MSGCENTER_CMD_MAX\r
 } msg_center_cmd_id_t;\r
 \r
@@ -306,7 +314,7 @@ int32_t msg_center_fill_tlv(msg_center_pkt_tlv_t *tlv, uint8_t type, uint8_t *va
 errcode_t msg_center_send_data(uint8_t cmd_id, uint8_t type, void *usr_data, uint16_t usr_len);\r
 void msg_center_split_file(char *origin_file, int size, char *flist);\r
 void msg_center_combine_file(char *flist, char *target_file_name);\r
-diag_frame_fid_t msg_center_get_trans_channel();\r
+diag_frame_fid_t msg_center_get_trans_channel(void);\r
 void msg_center_set_trans_channel(diag_frame_fid_t select);\r
 \r
 #ifdef __cplusplus\r
diff --git a/code/sdk/application/wearable/service/msg_center/include/ota/msg_center_ota.h b/code/sdk/application/wearable/service/msg_center/include/ota/msg_center_ota.h
new file mode 100644 (file)
index 0000000..bd1a84d
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
+ * Description: broadcast service api
+ * Author: CompanyName
+ * Create: 2021-11-11
+ */
+
+#ifndef MSG_CENTER_OTA_H
+#define MSG_CENTER_OTA_H
+
+#include "msg_center_protocol.h"
+
+#ifdef __cplusplus
+#if __cplusplus
+extern "C" {
+#endif
+#endif
+
+errcode_t msg_center_ota_rec_upg_start(uint8_t cmd_id, uint8_t type, void *usr_data, uint16_t usr_len);
+errcode_t msg_center_ota_rec_upg_check(uint8_t cmd_id, uint8_t type, void *usr_data, uint16_t usr_len);
+errcode_t msg_center_ota_rec_upg_check_result(uint8_t cmd_id, uint8_t type, void *usr_data, uint16_t usr_len);
+void msg_center_ota_upgrade_start(void);
+
+#ifdef __cplusplus
+#if __cplusplus
+}
+#endif
+#endif
+#endif /* MSG_CENTER_OTA_H */
index 906a03f..468970f 100644 (file)
Binary files a/code/sdk/application/wearable/service/msg_center/libs/libbaidumapsdk.a and b/code/sdk/application/wearable/service/msg_center/libs/libbaidumapsdk.a differ
index 36d52ce..d5503ab 100644 (file)
@@ -11,6 +11,7 @@
 #include "wearable_log.h"
 #include "baidu_app.h"
 #include "alipay_app.h"
+#include "msg_center_ota.h"
 
 #ifdef __cplusplus
 extern "C" {
@@ -101,6 +102,11 @@ msg_center_cmd_map_t g_msg_center_type_tbl[] = {
     { MSGCENTER_CMD_ALIPAY,      MSGCENTER_TYPE_ID_ALIPAY_CLOSE,                     msg_center_alipay_close},
     { MSGCENTER_CMD_ALIPAY,      MSGCENTER_TYPE_ID_ALIPAY_TIME_SYNC,                 msg_center_alipay_time_sync},
 #endif
+#ifdef SUPPORT_AUTO_OTA_SERVER
+    { MSGCENTER_CMD_OTA,         MSGCENTER_TYPE_ID_OTA_UPG_START,               msg_center_ota_rec_upg_start},
+    { MSGCENTER_CMD_OTA,         MSGCENTER_TYPE_ID_OTA_UPG_CHECK,               msg_center_ota_rec_upg_check},
+    { MSGCENTER_CMD_OTA,         MSGCENTER_TYPE_ID_OTA_UPG_CHECK_RESULT,        msg_center_ota_rec_upg_check_result},
+#endif
 };
 
 msg_center_cmd_map_t *msg_center_get_cmd_tbl_ops(uint8_t idx)
diff --git a/code/sdk/application/wearable/service/msg_center/src/ota/msg_center_ota.cpp b/code/sdk/application/wearable/service/msg_center/src/ota/msg_center_ota.cpp
new file mode 100644 (file)
index 0000000..7ae4e61
--- /dev/null
@@ -0,0 +1,272 @@
+/*
+ * Copyright (c) CompanyNameMagicTag 2023-2023. All rights reserved.
+ * Description: ota upgrade handle.
+ * This file should be changed only infrequently and with great care.
+ */
+#include "build_version.h"
+#include "securec.h"
+#include "soc_osal.h"
+#include "diag_service.h"
+#include "upg.h"
+#include "upg_common_porting.h"
+#include "upg_definitions.h"
+#include "diag_common.h"
+#include "transmit_st.h"
+#include "transmit_item.h"
+#include "transmit_write_read.h"
+#include "dfx_resource_id.h"
+#include "dfx_file_operation.h"
+#include "msg_center_protocol.h"
+#include "wearable_log.h"
+#include "upg_porting.h"
+#ifdef SUPPORT_AUTO_OTA
+#include "auto_ota_service.h"
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifdef SUPPORT_AUTO_OTA
+extern osSemaphoreId_t g_auto_ota_transmit_done_sem;
+extern uint8_t g_auto_ota_mac_tmp[];
+#endif
+#ifndef unused
+#define unused(var)     (void)(var)
+#endif
+
+/* 固定升级包文件长度, "/user/update.fwpkg"*/
+#define UPGRADE_FILE_LEN 19
+
+static errcode_t msg_center_ota_upgrade_request_call_back(bool is_finished, uintptr_t usr_data)
+{
+    unused(usr_data);
+    errcode_t ret = ERRCODE_SUCC;
+    /* 目的端升级路径,建议固定 */
+    uint32_t package_len = 0;
+    const char *file_name = "/user/update.fwpkg";
+    FILE *fp = fopen(file_name, "rb");
+    if (fp == nullptr) {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_MSG_CENTER, "open %s fail.\r\n", file_name);
+        return ERRCODE_FAIL;
+    }
+    fseek(fp, 0L, SEEK_END);
+    package_len = ftell(fp);
+    fclose(fp);
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_MSG_CENTER, "send file_len = %d\n", package_len);
+
+    // 文件传输结果判断
+    if (is_finished) {
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_MSG_CENTER, "transmit success\n");
+        // 文件传输成功,向Watch发送请求升级指令
+        ret = msg_center_send_data(MSGCENTER_CMD_OTA, MSGCENTER_TYPE_ID_OTA_UPG_START, &package_len, sizeof(package_len));
+        if (ret != ERRCODE_SUCC) {
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_MSG_CENTER, "send upgrade command fail, ret = %d\r\n", ret);
+            return ERRCODE_FAIL;
+        }
+#ifdef SUPPORT_AUTO_OTA
+        auto_ota_dev_add(g_auto_ota_mac_tmp);
+        (void)osSemaphoreRelease(g_auto_ota_transmit_done_sem);
+#endif
+        return ret;
+    } else {
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_MSG_CENTER, "transmit fail\n");
+#ifdef SUPPORT_AUTO_OTA
+        (void)osSemaphoreRelease(g_auto_ota_transmit_done_sem);
+#endif
+        return ret;
+    }
+}
+
+static errcode_t msg_center_src_send_file_start(transmit_type_t transmit_type, diag_addr dst, uint32_t total_size,
+    const char *file_name, bool re_transmit, transmit_result_hook handler)
+{
+    diag_option_t option = DIAG_OPTION_INIT_VAL;
+    option.peer_addr = dst;
+
+    switch (transmit_type) {
+        case TRANSMIT_TYPE_SAVE_FILE:
+        case TRANSMIT_TYPE_SAVE_OTA_IMG:
+        case TRANSMIT_TYPE_WRITE_MEMORY:
+        case TRANSMIT_TYPE_WRITE_FLASH:
+            break;
+        default:
+            return ERRCODE_INVALID_PARAM;
+    }
+
+    transmit_item_t *item = transmit_item_init(0);
+    if (item == NULL) {
+        return ERRCODE_FAIL;
+    }
+
+    transmit_item_init_file_name(item, file_name, strlen(file_name));
+    transmit_item_init_permanent(item, false);
+    transmit_item_init_local_start(item, true);
+    transmit_item_init_local_src(item, true);
+    transmit_item_init_remote_type(item, transmit_type);
+    transmit_item_init_local_type(item, TRANSMIT_LOCAL_TYPE_READ_FILE);
+    transmit_item_init_read_handler(item, file_read_data, (uintptr_t)item);
+    transmit_item_init_option(item, &option);
+    transmit_item_init_down_machine(item, false);
+    transmit_item_init_total_size(item, total_size);
+    transmit_item_init_result_handler(item, handler, (uintptr_t)item);
+    transmit_item_init_re_trans(item, re_transmit);
+
+    if (transmit_item_init_is_success(item) == false) {
+        transmit_item_deinit(item);
+        return ERRCODE_FAIL;
+    }
+
+#if (CONFIG_DFX_SUPPORT_FILE_SYSTEM == DFX_YES)
+    item->file_fd = dfx_file_open_for_read(item->file_name);
+    if (item->file_fd < 0) {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_MSG_CENTER, "[ERR][transmit src]file : %s open failed, fd = %d\r\n",
+            item->file_name, item->file_fd);
+        item->file_fd = 0;
+        transmit_item_deinit(item);
+        return ERRCODE_FAIL;
+    }
+#endif
+
+    transmit_item_enable(item);
+    return ERRCODE_SUCC;
+}
+
+void msg_center_ota_upgrade_start(void)
+{
+    const char *file_name = "/user/update.fwpkg";
+    uint32_t total_size;
+    errcode_t ret;
+    FILE *fp = fopen(file_name, "rb");
+    if (fp == nullptr) {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_MSG_CENTER, "open %s fail.\r\n", file_name);
+        return;
+    }
+    fseek(fp, 0L, SEEK_END);
+    total_size = ftell(fp);
+    fclose(fp);
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_MSG_CENTER, "read file size = %d\r\n", total_size);
+
+    ret = msg_center_src_send_file_start(TRANSMIT_TYPE_SAVE_FILE, DIAG_FRAME_FID_PHONE, total_size, file_name,
+                                        false, msg_center_ota_upgrade_request_call_back);
+    if (ret != ERRCODE_SUCC) {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_MSG_CENTER, "transmit_src_send_file_start fail, ret = %d\r\n", ret);
+        return;
+    }
+
+    return;
+}
+
+errcode_t msg_center_ota_rec_upg_start(uint8_t cmd_id, uint8_t type, void *usr_data, uint16_t usr_len)
+{
+    errcode_t ret = ERRCODE_SUCC;
+    uint8_t *tlv_payload = (uint8_t *)msg_center_get_tlv_payload(usr_data);
+    /* 收到升级指令 */
+    upg_prepare_info_t info;
+    info.package_len = *(uint32_t *)tlv_payload;
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_MSG_CENTER, "upg_prepare running......, rec file_len = %d\r\n", info.package_len);
+    ret = uapi_upg_prepare(&info);
+    if (ret != ERRCODE_SUCC) {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_MSG_CENTER, "upg_prepare err, ret = 0x%x\r\n", ret);
+        return ret;
+    }
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_MSG_CENTER, "upg_prepare success!!!!\r\n");
+
+    ret = uapi_upg_request_upgrade(false);
+    if (ret != ERRCODE_SUCC) {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_MSG_CENTER, "upg_request err, ret = 0x%x\r\n", ret);
+        return ret;
+    }
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_MSG_CENTER, "upg request success!!!!\r\n");
+
+    ret = uapi_upg_start();
+    if (ret != ERRCODE_SUCC) {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_MSG_CENTER, "upg_request start, ret = 0x%x\r\n", ret);
+        return ret;
+    }
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_MSG_CENTER, "upg start success!!!!\r\n");
+
+    upg_reboot();
+    return ERRCODE_SUCC;
+}
+
+/* 客户逻辑实现 */
+__attribute__((weak)) errcode_t msg_center_ota_upg_version_check(char *dst_ver, char *src_ver)
+{
+    unused(dst_ver);
+    unused(src_ver);
+    /* 客户版本号校验逻辑 */
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_MSG_CENTER, "upg version check default pass!\r\n");
+    /* 客户检查本地剩余空间是否足够容纳升级包大小 */
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_MSG_CENTER, "upg space check default pass!\r\n");
+    return ERRCODE_SUCC;
+}
+
+__attribute__((weak)) char * msg_center_ota_get_src_ver(void)
+{
+    char *src_ver = "XXX_YYY";
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_MSG_CENTER, "get src version : %s\r\n", src_ver);
+    return src_ver;
+}
+
+errcode_t msg_center_ota_rec_upg_check(uint8_t cmd_id, uint8_t type, void *usr_data, uint16_t usr_len)
+{
+    uint8_t tl_len = msg_center_get_tlv_tl_len(usr_data);
+    uint16_t payload_len = usr_len - tl_len;
+    uint8_t *tlv_payload = (uint8_t *)msg_center_get_tlv_payload(usr_data);
+    errcode_t ret = ERRCODE_SUCC;
+    errcode_t res = ERRCODE_SUCC;
+    uint8_t check_succ = 1;
+    uint8_t check_fail = 0;
+
+    char *dst_ver = (char *)malloc(payload_len + 1);
+    if (dst_ver == nullptr) {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_MSG_CENTER, "rec_dst_version: malloc failed.\r\n");
+        return ERRCODE_FAIL;
+    }
+
+    (void)memcpy_s(dst_ver, payload_len, tlv_payload, payload_len);
+    dst_ver[payload_len] = '\0';
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_MSG_CENTER, "rec_dst_version: %s\r\n", dst_ver);
+
+    ret = msg_center_ota_upg_version_check(dst_ver, msg_center_ota_get_src_ver());
+    if (ret != ERRCODE_SUCC) {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_MSG_CENTER, "upg version check fail, no need upg!\r\n");
+        res = msg_center_send_data(cmd_id, MSGCENTER_TYPE_ID_OTA_UPG_CHECK_RESULT, &check_fail, sizeof(check_fail));
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_MSG_CENTER, "send upg check fail, result = %d\r\n", res);
+        free(dst_ver);
+        dst_ver = NULL;
+        return ret;
+    }
+
+    free(dst_ver);
+    dst_ver = NULL;
+    res = msg_center_send_data(cmd_id, MSGCENTER_TYPE_ID_OTA_UPG_CHECK_RESULT, &check_succ, sizeof(check_succ));
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_MSG_CENTER, "send upg check succ, result = %d\r\n", res);
+
+    return ERRCODE_SUCC;
+}
+
+errcode_t msg_center_ota_rec_upg_check_result(uint8_t cmd_id, uint8_t type, void *usr_data, uint16_t usr_len)
+{
+    uint8_t tl_len = msg_center_get_tlv_tl_len(usr_data);
+    uint16_t payload_len = usr_len - tl_len;
+    uint8_t *tlv_payload = (uint8_t *)msg_center_get_tlv_payload(usr_data);
+    errcode_t ret = ERRCODE_SUCC;
+    uint8_t upg_check_result = *tlv_payload;
+
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_MSG_CENTER, "upg_check_result = %d\r\n", upg_check_result);
+    if (upg_check_result) {
+        msg_center_ota_upgrade_start();
+    } else {
+#ifdef SUPPORT_AUTO_OTA
+        (void)osSemaphoreRelease(g_auto_ota_transmit_done_sem);
+#endif
+    }
+
+    return ERRCODE_SUCC;
+}
+
+#ifdef __cplusplus
+}
+#endif
\ No newline at end of file
index 1d6fd9d..375838d 100644 (file)
@@ -20,6 +20,7 @@
 #include "baidumap_msg_center.h"\r
 #include "baidumap.h"\r
 #include "soc_osal.h"\r
+#include "watchdog.h"\r
 \r
 #ifdef __cplusplus\r
 extern "C" {\r
@@ -460,6 +461,8 @@ static void msg_center_transfer_longbuf(char *data, uint8_t type)
     fseek(fp, 0L, SEEK_SET);\r
     if (fread(file_content, file_len, 1, fp) != 1) {\r
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_MSG_CENTER, "%s: fread fail, file_len = %d.\r\n", vector_navi_get_str(type), file_len);\r
+        free(file_content);\r
+        file_content = nullptr;\r
         return;\r
     }\r
     fclose(fp);\r
@@ -798,6 +801,7 @@ static errcode_t msg_center_vector_navi_rec_common_proc(uint8_t cmd_id, uint8_t
         }\r
         display_api->set_screen_set_keepon_timeout(600000); // 600000ms\r
     #endif\r
+    uapi_watchdog_kick();\r
 \r
     char *data = (char *)malloc(payload_len + 1);\r
     if (data == nullptr) {\r
index 1e1c080..d69fb55 100644 (file)
@@ -175,6 +175,16 @@ uint32_t g_app_emmc_clk = SDIOM_SRC_CLK_FREQ_LVL_98M_VAL;
 #define COMBINE_FILE_PATH "/user/test/ssb_c.bin"\r
 #endif\r
 \r
+#ifdef SUPPORT_AUTO_OTA\r
+extern uint8_t g_auto_ota_upload_mode;\r
+#ifndef ONE_ADDR_LEN\r
+#define ONE_ADDR_LEN 2\r
+#endif\r
+#ifndef ADDR_MAC_LEN\r
+#define ADDR_MAC_LEN 6\r
+#endif\r
+#endif\r
+\r
 const uint8_t g_decrypt_aes_salt[AES_SALT_LENGTH] = { 0x0 };\r
 const uint8_t g_decrypt_aes_iv[AES_IV_LENGTH] = { 0x0 };\r
 // The length of the GID must be 32 bytes and cannot be changed.\r
@@ -2544,6 +2554,104 @@ static uint32_t mcu_file_combine_test(uint8_t *para, uint32_t para_len)
 }\r
 #endif\r
 \r
+#ifdef JS_ENABLE\r
+static uint32_t mcu_get_trans_channel_test(uint8_t *para, uint32_t para_len, char *str_cmd)\r
+{\r
+    unused(para_len);\r
+    unused(para);\r
+    msg_center_get_trans_channel();\r
+\r
+    return ERRCODE_SUCC;\r
+}\r
+\r
+static uint32_t mcu_set_trans_channel_test(uint8_t *para, uint32_t para_len, char *str_cmd)\r
+{\r
+    unused(para_len);\r
+    char *ptr = (char *)para;\r
+    uint32_t select = strtoul(ptr, NULL, 10); /* 10进制 */\r
+    msg_center_set_trans_channel(select);\r
+\r
+    return ERRCODE_SUCC;\r
+}\r
+#endif\r
+\r
+#ifdef SUPPORT_AUTO_OTA\r
+static uint32_t mcu_auto_ota_block(uint8_t *para, uint32_t para_len, char *str_cmd)\r
+{\r
+    unused(para_len);\r
+    unused(para);\r
+     g_auto_ota_upload_mode = 1;// 阻塞等待升级包上传\r
+    wstp_print("auto_ota block!\r\n");\r
+    return ERRCODE_SUCC;\r
+}\r
+\r
+static uint32_t mcu_auto_ota_run(uint8_t *para, uint32_t para_len, char *str_cmd)\r
+{\r
+    unused(para_len);\r
+    unused(para);\r
+     g_auto_ota_upload_mode = 0; // 升级包上传完成后auto_ota继续执行\r
+    wstp_print("auto_ota run!\r\n");\r
+    return ERRCODE_SUCC;\r
+}\r
+\r
+static uint32_t mcu_auto_ota_del_mac(uint8_t *para, uint32_t para_len, char *str_cmd)\r
+{\r
+    unused(para_len);\r
+    wstp_print("para = %s\r\n", para);\r
+    uint8_t addr[ADDR_MAC_LEN] = {0};\r
+    char tmp[ONE_ADDR_LEN + 1] = {0};\r
+    char *p = (char *)para;\r
+\r
+    for (uint8_t i = 0; i < ADDR_MAC_LEN; i++) {\r
+        memcpy_s(tmp, ONE_ADDR_LEN + 1, p, ONE_ADDR_LEN);\r
+        tmp[ONE_ADDR_LEN] = '\0';\r
+        addr[i] = strtol(tmp, NULL, 16); // 16进制\r
+        p = p + ONE_ADDR_LEN;\r
+    }\r
+\r
+    wstp_print("mcu_auto_ota_del_mac, mac = %02x%02x%02x%02x%02x%02x\r\n", addr[5], addr[4], addr[3], addr[2], addr[1],\r
+               addr[0]);\r
+    bool res = auto_ota_dev_del(addr);\r
+    wstp_print("auto_ota_dev_del, res = %d\r\n", res);\r
+\r
+    return ERRCODE_SUCC;\r
+}\r
+\r
+static uint32_t mcu_auto_ota_add_mac(uint8_t *para, uint32_t para_len, char *str_cmd)\r
+{\r
+    unused(para_len);\r
+    wstp_print("enter mcu_auto_ota_add_mac\r\n");\r
+    wstp_print("para = %s\r\n", para);\r
+    uint8_t addr[ADDR_MAC_LEN] = {0};\r
+    char tmp[ONE_ADDR_LEN + 1] = {0};\r
+    char *p = (char *)para;\r
+\r
+    for (uint8_t i = 0; i < ADDR_MAC_LEN; i++) {\r
+        memcpy_s(tmp, ONE_ADDR_LEN + 1, p, ONE_ADDR_LEN);\r
+        tmp[ONE_ADDR_LEN] = '\0';\r
+        addr[i] = strtol(tmp, NULL, 16); // 16进制\r
+        p = p + ONE_ADDR_LEN;\r
+    }\r
+\r
+    wstp_print("mcu_auto_ota_add_mac, mac = %02x%02x%02x%02x%02x%02x\r\n", addr[5], addr[4], addr[3], addr[2], addr[1],\r
+               addr[0]);\r
+    auto_ota_dev_add(addr);\r
+\r
+    return ERRCODE_SUCC;\r
+}\r
+\r
+static uint32_t mcu_auto_ota_show_mac(uint8_t *para, uint32_t para_len, char *str_cmd)\r
+{\r
+    unused(para_len);\r
+    unused(para);\r
+    wstp_print("enter mcu_auto_ota_show_mac\r\n");\r
+\r
+    auto_ota_dev_show();\r
+\r
+    return ERRCODE_SUCC;\r
+}\r
+#endif\r
+\r
 static const app_process_table g_app_funcs[] = {\r
     { RESET,                mcu_os_sys_reset },\r
     { FSTEST,               mcu_fs_test },\r
@@ -2631,6 +2739,17 @@ static const app_process_table g_app_funcs[] = {
     { FILESPLIT,            mcu_file_spilt_test },\r
     { FILECOMBINE,          mcu_file_combine_test },\r
 #endif\r
+#ifdef JS_ENABLE\r
+    { GETTRANSCHAN,         mcu_get_trans_channel_test },\r
+    { SETTRANSCHAN,         mcu_set_trans_channel_test },\r
+#endif\r
+#ifdef SUPPORT_AUTO_OTA\r
+    { AUTOOTABLOCK,         mcu_auto_ota_block },\r
+    { AUTOOTARUN,           mcu_auto_ota_run },\r
+    { AUTOOTADELMAC,        mcu_auto_ota_del_mac },\r
+    { AUTOOTAADDMAC,        mcu_auto_ota_add_mac },\r
+    { AUTOOTASHOWMAC,       mcu_auto_ota_show_mac },\r
+#endif\r
 };\r
 \r
 void app_at_process(uint8_t *data, uint32_t data_len)\r
index 1d001e0..3848a28 100644 (file)
@@ -905,6 +905,80 @@ static uint32_t app_file_combine_test(uint8_t *para, uint32_t para_len, char *st
 }\r
 #endif\r
 \r
+#ifdef JS_ENABLE\r
+static uint32_t app_get_trans_channel_test(uint8_t *para, uint32_t para_len, char *str_cmd)\r
+{\r
+    unused(str_cmd);\r
+    if (para == NULL) {\r
+        return ERRCODE_FAIL;\r
+    }\r
+    app_pkg_msg_send(GETTRANSCHAN, DIAG_CONTROL_FALSE, para, para_len);\r
+    return ERRCODE_SUCC;\r
+}\r
+\r
+static uint32_t app_set_trans_channel_test(uint8_t *para, uint32_t para_len, char *str_cmd)\r
+{\r
+    unused(str_cmd);\r
+    if (para == NULL) {\r
+        return ERRCODE_FAIL;\r
+    }\r
+    app_pkg_msg_send(SETTRANSCHAN, DIAG_CONTROL_FALSE, para, para_len);\r
+    return ERRCODE_SUCC;\r
+}\r
+#endif\r
+\r
+#ifdef SUPPORT_AUTO_OTA\r
+static uint32_t app_auto_ota_block(uint8_t *para, uint32_t para_len, char *str_cmd)\r
+{\r
+    unused(str_cmd);\r
+    if (para == NULL) {\r
+        return ERRCODE_FAIL;\r
+    }\r
+    app_pkg_msg_send(AUTOOTABLOCK, DIAG_CONTROL_FALSE, para, para_len);\r
+    return ERRCODE_SUCC;\r
+}\r
+\r
+static uint32_t app_auto_ota_run(uint8_t *para, uint32_t para_len, char *str_cmd)\r
+{\r
+    unused(str_cmd);\r
+    if (para == NULL) {\r
+        return ERRCODE_FAIL;\r
+    }\r
+    app_pkg_msg_send(AUTOOTARUN, DIAG_CONTROL_FALSE, para, para_len);\r
+    return ERRCODE_SUCC;\r
+}\r
+\r
+static uint32_t app_auto_ota_del_mac(uint8_t *para, uint32_t para_len, char *str_cmd)\r
+{\r
+    unused(str_cmd);\r
+    if (para == NULL) {\r
+        return ERRCODE_FAIL;\r
+    }\r
+    app_pkg_msg_send(AUTOOTADELMAC, DIAG_CONTROL_FALSE, para, para_len);\r
+    return ERRCODE_SUCC;\r
+}\r
+\r
+static uint32_t app_auto_ota_add_mac(uint8_t *para, uint32_t para_len, char *str_cmd)\r
+{\r
+    unused(str_cmd);\r
+    if (para == NULL) {\r
+        return ERRCODE_FAIL;\r
+    }\r
+    app_pkg_msg_send(AUTOOTAADDMAC, DIAG_CONTROL_FALSE, para, para_len);\r
+    return ERRCODE_SUCC;\r
+}\r
+\r
+static uint32_t app_auto_ota_show_mac(uint8_t *para, uint32_t para_len, char *str_cmd)\r
+{\r
+    unused(str_cmd);\r
+    if (para == NULL) {\r
+        return ERRCODE_FAIL;\r
+    }\r
+    app_pkg_msg_send(AUTOOTASHOWMAC, DIAG_CONTROL_FALSE, para, para_len);\r
+    return ERRCODE_SUCC;\r
+}\r
+#endif\r
+\r
 static const at_cmd_table_t g_app_cmd[] = {\r
 /* 无参数无特殊处理AT命令 */\r
     { "AT^HEAPINFO",     parse_heap_info_handle,            "" },\r
@@ -1005,8 +1079,8 @@ static const at_cmd_table_t g_app_cmd[] = {
 #ifdef FT_DONGLE\r
     { "AT^ISDONGLECONN", app_check_dongle_connected,         "" },\r
 #endif\r
-    { "AT^I2CWRITE", app_i2c_write,                  "" },\r
-    { "AT^I2CREAD", app_i2c_read,                  "" },\r
+    { "AT^I2CWRITE", app_i2c_write,                 "" },\r
+    { "AT^I2CREAD",  app_i2c_read,                  "" },\r
 #ifdef SUPPORT_ALIPAY_SEC\r
     { "AT^ALIPAYSECTEST",  app_alipay_sec_test,              "" },\r
     { "AT^ALIPAYDEBUG",    app_alipay_debug,                 "" },\r
@@ -1017,6 +1091,17 @@ static const at_cmd_table_t g_app_cmd[] = {
     { "AT^FILESPLIT",    app_file_split_test,              "" }, /* 注意,执行此操作前提是传入待分隔文件 */\r
     { "AT^FILECOMBINE",  app_file_combine_test,            "" },\r
 #endif\r
+#ifdef JS_ENABLE\r
+    { "AT^GETTRANSCHAN",  app_get_trans_channel_test,      "" },\r
+    { "AT^SETTRANSCHAN",  app_set_trans_channel_test,      "" },\r
+#endif\r
+#ifdef SUPPORT_AUTO_OTA\r
+    { "AT^AUTOOTABLOCK",   app_auto_ota_block,      "" },\r
+    { "AT^AUTOOTARUN",     app_auto_ota_run,        "" },\r
+    { "AT^AUTOOTADELMAC",  app_auto_ota_del_mac,    "" },\r
+    { "AT^AUTOOTAADDMAC",  app_auto_ota_add_mac,    "" },\r
+    { "AT^AUTOOTASHOWMAC", app_auto_ota_show_mac,   "" },\r
+#endif\r
 };\r
 \r
 at_cmd_table_t *get_app_cmd_table(uint32_t *cmd_count)\r
index c9e8db7..34e52ec 100644 (file)
@@ -105,6 +105,13 @@ typedef enum {
     ALIPAYVERIFY        = 0x4A,\r
     ALIPAYRESET         = 0x4B,\r
     FORCEDEEPSLEEP      = 0x4C,\r
+    GETTRANSCHAN        = 0x4D,\r
+    SETTRANSCHAN        = 0x4E,\r
+    AUTOOTABLOCK        = 0x4F,\r
+    AUTOOTARUN          = 0x50,\r
+    AUTOOTADELMAC       = 0x51,\r
+    AUTOOTAADDMAC       = 0x52,\r
+    AUTOOTASHOWMAC      = 0x53,\r
     MSG_ID_MAX_BUTT,\r
 } app_msg_id;\r
 \r
index 274de4b..3a6c4dc 100644 (file)
 #include "clocks_switch_priv.h"
 #include "main.h"
 #include "hal_uart_v120_regs_op.h"
+#include "hal_pmu_vdd.h"
 
 #ifdef CFG_DRIVERS_NANDFLASH
 #include "nandflash_config.h"
 #endif
 
+#define CFG_PMU_PROTECT_WDT_RESET    1
+
 #define FLASH_INIT_DATA              0xff
 #define FLASH_CHECK_LEN              16
 #define FLASH_FIRST_PAGE             0
@@ -616,6 +619,105 @@ extern uint32_t __rtt_bss_end;
 extern uint32_t __rtt_bss_start;
 #endif
 
+#if CFG_PMU_PROTECT_WDT_RESET == 1
+void software_delay_us(uint32_t delay)
+{
+#define SOFT_DELAY_COUNT    40
+    volatile uint32_t val = delay;
+    volatile uint32_t count;
+
+    while (--val > 0) {
+        count = SOFT_DELAY_COUNT;
+        while (count-- > 0) {
+            ;
+        }
+    }
+}
+
+static void clear_wdt_reset_cause(void)
+{
+    for (uint16_t i = 0; i < UINT16_MAX; i++) {
+        writew(0x57004304, 0x1);
+        if (reg16_getbit(0x57004300, 0) == 0) {
+            break;
+        }
+    }
+}
+
+static void pmu_protect_config_and_reset(bool rom_codeloadered)
+{
+    // codeloader
+    if (rom_codeloadered == true) {
+        writew(0x5702c010, 0x0);
+        return;
+    }
+
+    // wdt reset
+    if (reg16_getbit(0x57004300, 0) == 1) {
+        if (readw(0x5702c010) == 0x5a00) {
+            clear_wdt_reset_cause();
+            writew(0x5702c010, 0x0);
+        }
+        return;
+    }
+
+    if (readw(0x5702c010) == 0x5a00) {
+        writew(0x5702c010, 0x0);
+        return;
+    }
+
+    PRINT("first reset, 0x%x \r\n", readw(0x5702c010));
+
+    writew(0x5702c010, 0x5a00);
+    uapi_tcxo_delay_ms(10ULL);
+
+    writew(0x52000700, 0x0);  // disable nmi int
+    watchdog_turnon_clk();
+    uapi_watchdog_init(CHIP_WDT_TIMEOUT_2S);
+    uapi_watchdog_enable(WDT_MODE_RESET);
+
+    pmu_vdd0p8_power_vset(HAL_PMU_VDD0P8_1P0_1P100V);
+    writew(0x57028104, 0xF);
+    writew(0x57028184, 0x1);
+
+    hal_pmu_intldo1_set_voltage(HAL_PMU_INTLDO1_LEVEL_1P92V);
+
+    writew(0x5700412c, 0x1e); // set short_pd and softtime_adj
+    writew(0x57004138, 0x1e);
+
+    // DBB CCRG 16M
+    writew(0x5500060c, 0x103); // cpu 8 div
+    writew(0x5500060c, 0x113);
+    writew(0x55000614, 0x13);  // perp ls 16M
+    writew(0x55000618, 0x13);  // perp uart 16M
+    writew(0x5500061c, 0x13);  // perp spi 16M
+    writew(0x55000620, 0x13);  // combus ch0 16M
+    writew(0x55000624, 0x13);  // combus ch0 16M
+    writew(0x5500062c, 0x13);  // membus 16M
+    writew(0x55000630, 0x13);  // xip opi 16M
+    writew(0x55000634, 0x13);  // xip qspi 16M
+    hal_clocks_set_aon_bus_div(4);  // aon bus 8M
+
+    writew(0x57004130, 0x1822);   // 1.9->2.0v
+    reg16_setbit(0x57004124, POS_14); // vo_det 0->1
+    writew(0x57004108, 0x14C0);  // detect threshodd 1.85->1.7v
+    uapi_tcxo_delay_ms(100UL);
+
+    // 32k -> 1M   2s -> 64ms
+    writew(0x57000060, 0x1820);
+    writew(0x57000064, 0x601);
+    writew(0x57000068, 0x1601);
+
+    writew(0x57004110, 0x3);
+    software_delay_us(5UL);
+    writew(0x57004110, 0x7);
+
+    // wait wdt reset
+    while (1) {
+    }
+}
+#endif
+
 void main(void)
 {
     errno_t ret = 0;
@@ -635,11 +737,16 @@ void main(void)
     uapi_systick_init();
     watchdog_init();
     hal_xip_init();
-    hw_init();
+
 #ifdef SW_UART_DEBUG
     sw_debug_uart_init(UART_L_BAUDRATE);
     PRINT("SSb Debug uart init succ\r\n");
 #endif
+
+#if CFG_PMU_PROTECT_WDT_RESET == 1
+    pmu_protect_config_and_reset(rom_codeloadered);
+#endif
+    hw_init();
     uapi_ulp_systick_self_verification();
     show_reboot_info();
 
index 4ec9688..3ee1394 100644 (file)
@@ -25,7 +25,7 @@ target = {
                           'x_dpal', 'x_vfs', 'x_disk', 'x_fat', 'drv_mmc','fs_yaffs2', 'x_vfs_private',
                           'pm_service', 'pm_brandy', 'cmn_header', 'at_cmd', 'graphic_at_service', 'app_at_service',
                           'audio_at_service', 'media_at_service', 'bt_manager_at_service',
-                          "audio_proc", "audio_dump", "audio_probe", "gpu_proc"],
+                          "audio_proc", "audio_dump", "audio_probe", "gpu_proc", 'bts_header'],
         'ram_component_set': ['bgh', 'media_mini', 'gpu', 'graphic_lvgl_mini', 'dfx_set'],
         'image_analysis': True,
         'dsp_version': 'mini',
@@ -118,10 +118,10 @@ target = {
         'ram_component': ["algorithm", "dfx_port_brandy", "dfx_update", 'dfx_nv', "osal", "arch_port", "-:testsuite",
                           "liteos_port", 'lcd', 'qspi_display', 'dfx_file_operation',
                           'psram', 'hal_mipi', 'mipi_tx', 'non_os', 'touch',
-                          'ulp_aon', 'hal_l2ram',
+                          'ulp_aon', 'hal_l2ram', 'bt_manager_at_service',
                           'x_dpal', 'x_vfs', 'x_disk', 'x_fat', 'drv_mmc', 'fs_yaffs2', 'x_vfs_private',
                           'pm_service', 'pm_brandy', 'cmn_header', 'at_cmd', 'graphic_at_service', 'app_at_service', 'ohosfwk_at_service',
-                          "audio_proc", "audio_dump", "audio_probe", "power_manager", "gpu_proc", 'bts_header', 'baidumapsdk'],
+                          "audio_proc", "audio_dump", "audio_probe", "power_manager", "gpu_proc",'bts_header', 'baidumapsdk'],
         'ram_component_set': ['bgh', 'media', 'gpu', 'graphic_uikit', 'bgh_audio', 'dfx_set', 'ohos_set', 'wearable_set', 'alipay_set'],
         'dsp_version': 'max',
         'packet': True,
index 41490b0..07b05e1 100644 (file)
       <REQ STRUCTURE="audio_vqe_param_struct" TYPE="Auto" PARAM_VALUE="" />\r
       <IND STRUCTURE="audio_vqe_param_struct" TYPE="Auto" RESULT_CODE="" />\r
     </CMD>\r
+    <CMD ID="0x2f05" NAME="audio_aef_3a_save" DESCRIPTION="" PLUGIN="0x100,0x102(2),0x259" TYPE="REQ_IND">\r
+      <REQ STRUCTURE="audio_vqe_param_struct" TYPE="Auto" PARAM_VALUE="" />\r
+      <IND STRUCTURE="audio_vqe_param_struct" TYPE="Auto" RESULT_CODE="" />\r
+    </CMD>\r
     <CMD ID="0x2505" NAME="audio_aef_sws" DESCRIPTION="" PLUGIN="0x100,0x102(2),0x259" TYPE="REQ_IND">\r
       <REQ STRUCTURE="audio_sws_mobile_para" TYPE="Auto" PARAM_VALUE="" />\r
       <IND STRUCTURE="audio_sws_mobile_para" TYPE="Auto" RESULT_CODE="" />\r
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/pymb.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/pymb.bin
new file mode 100644 (file)
index 0000000..cbf2ea9
Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/pymb.bin differ
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/regular_hexagon.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/regular_hexagon.bin
new file mode 100644 (file)
index 0000000..b2174b4
Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/regular_hexagon.bin differ
diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/regular_hexagon_inverse.bin b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/regular_hexagon_inverse.bin
new file mode 100644 (file)
index 0000000..7d8eeba
Binary files /dev/null and b/code/sdk/build/config/target_config/brandy/mk_fs_image/fs/user/res/regular_hexagon_inverse.bin differ
diff --git a/code/sdk/build/config/target_config/brandy/nv_bin_cfg/mk_nv_bin_cfg.json b/code/sdk/build/config/target_config/brandy/nv_bin_cfg/mk_nv_bin_cfg.json
deleted file mode 100644 (file)
index bddcea4..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-{\r
-    "OUT_BIN_DIR" : "output/brandy/nv_bin",\r
-    "OUT_BIN_NAME" : "brandy_all_nv.bin",\r
-    "BUILD_TEMP_PATH" : "output/brandy",\r
-\r
-    "NV_TARGET_JSON_PATH" : "middleware/chips/brandy/nv/nv_config/cfg/nv_target.json",\r
-    "NV_RELATIVE_PATH" : "output/brandy/nv_bin/temp",\r
-    "NV_DEFAULT_CFG_DIR" : "middleware/chips/brandy/nv/nv_config/cfg",\r
-    "DATABASE_TXT_FILE" : "output/brandy/nv_bin"\r
-}
\ No newline at end of file
index 0719036..63ff998 100644 (file)
@@ -116,7 +116,7 @@ component_set = {
     'efuse_v120': ['efuse', 'hal_efuse_v120', 'efuse_porting'],
     'efuse_v100': ['efuse', 'hal_efuse_v100', 'efuse_porting'],
     'efuse_v130': ['efuse', 'hal_efuse_v130', 'efuse_port'],
-    'ohos_set' : ['bootstrap', 'samgr', 'ams', 'bms', 'bms_sign_mode', 'ace', 'ace_adapt', 'permission', 'appverify', 'jerryscript','js_player', 'js_audio_captuer', 'baidumapcomponent', 'i18n',
+    'ohos_set' : ['bootstrap', 'samgr', 'ams', 'bms', 'bms_sign_mode', 'ace', 'ace_adapt', 'permission', 'appverify', 'jerryscript','js_player', 'js_audio_capturer', 'baidumapcomponent', 'i18n',
                   'resmgr', 'syspara', 'utils_kv_store', 'native_file', 'storage_jsapi', 'brightness'],
     'wearable_set' : ['nativeabilityfwk', 'nativelauncher', 'ai_voice_service', 'ai_voice_engine_hal', 'ai_voice_audio_stream_wrapper', 'ohos_deps',
                       'broadcast', 'msg_center', 'msg_center_adapt', 'ohos_startup'],
index 96586a0..8e716a5 100644 (file)
@@ -23,8 +23,9 @@ MEMORY
     PSRAM_HEAP                    : ORIGIN = PSRAM_HEAP_ADDR,           LENGTH = PSRAM_HEAP_LENGTH
 
     L2M_GPU_PROGRAM               : ORIGIN = L2M_GPU_RAM_SHARE_MCU_ORIGIN, LENGTH = L2M_GPU_RAM_MCU_SHARE_LENGTH
+#ifndef CONFIG_PSRAM_SUPPORT
     L2M_DSP_PROGRAM               : ORIGIN = L2M_DSP_RAM_RESERVED_ORIGIN, LENGTH = L2M_DSP_RAM_RESERVED_LENGTH + L2M_DSP_RAM_MCU_SHARE_LENGTH + L2M_DSP_RAM_DSP_SHARE_LENGTH
-
+#endif
     ITCM                          : ORIGIN = APP_ITCM_ORIGIN + APP_VECTORS_LENGTH,        LENGTH = APP_ITCM_LENGTH - APP_VECTORS_LENGTH
     DTCM                          : ORIGIN = APP_RAM_ORIGIN,            LENGTH = APP_RAM_LENGTH
 
@@ -115,6 +116,7 @@ SECTIONS
         __l2m_gpu_data_end = .;
     } > L2M_GPU_PROGRAM AT > FLASH_PROGRAM
     __l2m_gpu_data_size = __l2m_gpu_data_end - __l2m_gpu_data_start;
+#ifndef CONFIG_PSRAM_SUPPORT
 #if DSP_L2RAM_AREA_SIZE > 0
     .l2m_dsp_text :
     {
@@ -148,37 +150,7 @@ SECTIONS
     } > L2M_DSP_PROGRAM AT > FLASH_PROGRAM
     __l2m_dsp_data_size = __l2m_dsp_data_end - __l2m_dsp_data_start;
 #endif
-}
-
-SECTIONS
-{
-    .flash_text :
-    {
-        . = ALIGN(8);
-        /* open_source */
-        *open_source/sdio*.o* (.text .text* .rodata .rodata* .srodata .srodata*)
-
-        *utils/sec_boot*.o* (.text .text* .rodata .rodata* .srodata .srodata*)
-        *utils/dfx/dfx_reboot/cpu_utils/libcpu_utils*.a:*.o* (.text .text* .rodata .rodata* .srodata .srodata*)
-        *utils/dfx/libdfx_panic*.a:*.o* (.text .text* .rodata .rodata* .srodata .srodata*)
-        *utils/dfx/libdfx_log*.a:*.o* (.text .text* .rodata .rodata* .srodata .srodata*)
-        *utils/dfx/libdfx*.a:*.o* (.text .text* .rodata .rodata* .srodata .srodata*)
-        *common/testsuite*.a:*.o* (.text .text* .rodata .rodata* .srodata .srodata*)
-        *utils/algorithm*.a:*.o* (.text .text* .rodata .rodata* .srodata .srodata*)
-        *utils/partition/libpartition*.a:*.o* (.text .text* .rodata .rodata* .srodata .srodata*)
-        *open_source/lzma/liblzma*.a:*.o* (.text .text* .rodata .rodata* .srodata .srodata*)
-        *libhal_uart*.a:*.o* (.text .text* .rodata .rodata* .srodata .srodata*)
-        *driver/uart/uart_cmsis/libuart_cmsis*.a:*.o* (.text .text* .rodata .rodata* .srodata .srodata*)
-        *drivers/chips/brandy/libbrandy_pmu*.a:*.o* (.text .text* .rodata .rodata* .srodata .srodata*)
-        . = ALIGN(8);
-    } > FLASH_PROGRAM
-
-    .flash_data :
-    {
-        . = ALIGN(8);
-        KEEP(*( SORT (.liteos.table.*)))
-        . = ALIGN(8);
-    } > FLASH_PROGRAM
+#endif
 }
 
 SECTIONS
@@ -191,9 +163,6 @@ SECTIONS
         __ramtext_begin__ = .;
         KEEP (*(.flash_version))
 
-
-        /* Drivers */
-
         /* middleware/utils */
         *utils/connectivity*.a:*.o* (.text .text* .rodata .rodata* .srodata .srodata*)
         *utils/lib_utils*.a:*.o* (.text .text* .rodata .rodata* .srodata .srodata*)
@@ -201,10 +170,21 @@ SECTIONS
         *utils/cpu_utils*.a:*.o* (.text .text* .rodata .rodata* .srodata .srodata*)
         *utils/cpu_load*.a:*.o* (.text .text* .rodata .rodata* .srodata .srodata*)
         *utils/preserve*.a:*.o* (.text .text* .rodata .rodata* .srodata .srodata*)
+        *utils/sec_boot*.o* (.text .text* .rodata .rodata* .srodata .srodata*)
+        *utils/dfx*.a:*.o* (.text .text* .rodata .rodata* .srodata .srodata*)
+        *utils/algorithm*.a:*.o* (.text .text* .rodata .rodata* .srodata .srodata*)
+        *utils/partition/libpartition*.a:*.o* (.text .text* .rodata .rodata* .srodata .srodata*)
+        *utils/update*.a:*.o* (.text .text* .rodata .rodata* .srodata .srodata*)
+
+        /* middleware/chips */
+        *middleware/chips/brandy*.a:*.o* (.text .text* .rodata .rodata* .srodata .srodata*)
 
         /* Kernel */
         *kernel/osal*.a:*.o* (.text .text* .rodata .rodata* .srodata .srodata*)
+        *kernel/dpal*.a:*.o* (.text .text* .rodata .rodata* .srodata .srodata*)
+        *kernel/non_os*.a:*.o* (.text .text* .rodata .rodata* .srodata .srodata*)
 
+        /* Drivers */
         *libhal*.a:*.o* (.text .text* .rodata .rodata* .srodata .srodata*)
         *driver/uart*.a:*.o* (.text .text* .rodata .rodata* .srodata .srodata*)
         *driver/eflash*.a:*.o* (.text .text* .rodata .rodata* .srodata .srodata*)
@@ -212,7 +192,7 @@ SECTIONS
         *driver*.a:*.o* (.text .text* .rodata .rodata* .srodata .srodata*)
         *drivers/boards*.a:*.o* (.text .text* .rodata .rodata* .srodata .srodata*)
         *drivers/chips*.a:*.o* (.text .text* .rodata .rodata* .srodata .srodata*)
-        *kernel/non_os*.a:*.o* (.text .text* .rodata .rodata* .srodata .srodata*)
+
         /* platfrom */
         *application/brandy*.a:*.o* (.text .text* .rodata .rodata* .srodata .srodata*)
 
@@ -226,12 +206,25 @@ SECTIONS
         SORT(*libriscv.a:*.o*) (*.text *.text* .rodata .rodata* .srodata .srodata*)
 #endif
 
-        *libsec.a:*.o* (.text .text* .rodata .rodata* .srodata .srodata*)
-        *libposix.a:*.o* (.text .text* .rodata .rodata* .srodata .srodata*)
-        *libcsysdeps.a:*.o* (.text .text* .rodata .rodata* .srodata .srodata*)
+        /* open_source */
+        *open_source/sdio*.o* (.text .text* .rodata .rodata* .srodata .srodata*)
+        *liblzma*.a:*.o* (.text .text* .rodata .rodata* .srodata .srodata*)
 
-        *utils/update*.a:*.o* (.text .text* .rodata .rodata* .srodata .srodata*)
-        *middleware/chips/brandy/update*.a:*.o* (.text .text* .rodata .rodata* .srodata .srodata*)
+        SORT(*libc.a:*.o*) (.text .text* .rodata .rodata* .srodata .srodata*)
+        SORT(*libcmsis.a:*.o*) (.text .text* .rodata .rodata* .srodata .srodata*)
+        SORT(*libcsysdeps.a:*.o*) (.text .text* .rodata .rodata* .srodata .srodata*)
+        SORT(*libdriverbase.a:*.o*) (.text .text* .rodata .rodata* .srodata .srodata*)
+        SORT(*libinit.a:*.o*) (.text .text* .rodata .rodata* .srodata .srodata*)
+        SORT(*libinterrupt.a:*.o*) (.text .text* .rodata .rodata* .srodata .srodata*)
+        SORT(*liblinux.a:*.o*) (.text .text* .rodata .rodata* .srodata .srodata*)
+        SORT(*libm.a:*.o*) (.text .text* .rodata .rodata* .srodata .srodata*)
+        SORT(*libposix.a:*.o*) (.text .text* .rodata .rodata* .srodata .srodata*)
+        SORT(*libsec.a:*.o*) (.text .text* .rodata .rodata* .srodata .srodata*)
+        SORT(*libtargets.a:*.o*) (.text .text* .rodata .rodata* .srodata .srodata*)
+
+        SORT(*libsegger*.a:*.o*) (.text .text* .rodata .rodata* .srodata .srodata*)
+        SORT(*libgfx_rm.a:*.o*) (.text .text* .rodata .rodata* .srodata .srodata*)
+        SORT(*libclang_rt.builtins-riscv32.a:*.o*) (.text .text* .rodata .rodata* .srodata .srodata*)
 
         KEEP (*(.gdb_debug))
 
@@ -339,21 +332,6 @@ SECTIONS
         . = ALIGN(8);
         /* TODO: add close component code here begin */
         /* new liteos libs config */
-        SORT(*libc.a:*.o*) (.text .text* .rodata .rodata* .srodata .srodata*)
-        SORT(*libcmsis.a:*.o*) (.text .text* .rodata .rodata* .srodata .srodata*)
-        SORT(*libcsysdeps.a:*.o*) (.text .text* .rodata .rodata* .srodata .srodata*)
-        SORT(*libdriverbase.a:*.o*) (.text .text* .rodata .rodata* .srodata .srodata*)
-        SORT(*libinit.a:*.o*) (.text .text* .rodata .rodata* .srodata .srodata*)
-        SORT(*libinterrupt.a:*.o*) (.text .text* .rodata .rodata* .srodata .srodata*)
-        SORT(*liblinux.a:*.o*) (.text .text* .rodata .rodata* .srodata .srodata*)
-        SORT(*libm.a:*.o*) (.text .text* .rodata .rodata* .srodata .srodata*)
-        SORT(*libposix.a:*.o*) (.text .text* .rodata .rodata* .srodata .srodata*)
-        SORT(*libsec:*.o*) (.text .text* .rodata .rodata* .srodata .srodata*)
-        SORT(*libtargets.a:*.o*) (.text .text* .rodata .rodata* .srodata .srodata*)
-
-        SORT(*libsegger*.a:*.o*) (.text .text* .rodata .rodata* .srodata .srodata*)
-        SORT(*libgfx_rm.a:*.o*) (.text .text* .rodata .rodata* .srodata .srodata*)
-        SORT(*libclang_rt.builtins-riscv32.a:*.o*) (.text .text* .rodata .rodata* .srodata .srodata*)
         *(.ramtext)
         *(.text)
         *(.text*)
index e9aa734..bf2e93c 100644 (file)
@@ -1,18 +1,19 @@
-/*
- * Copyright (c) @CompanyNameMagicTag 2021-2022. All rights reserved.
- * Description:  psram memory configurations
- * Author: @CompanyNameTag
- * Create:  2022-03-09
- */
-
-#ifndef PSRAM_H
-#define PSRAM_H
-
-#include "product.h"
-#if PSRAM_DENSITY_MB == 16
-#include "psram_16.h"
-#else /* PSRAM_DENSITY_MB == 32 */
-#include "psram_32.h"
-#endif
-
-#endif // PSRAM_H
+/*\r
+ * Copyright (c) @CompanyNameMagicTag 2021-2022. All rights reserved.\r
+ * Description:  psram memory configurations\r
+ * Author: @CompanyNameTag\r
+ * Create:  2022-03-09\r
+ */\r
+\r
+#ifndef PSRAM_H\r
+#define PSRAM_H\r
+\r
+#include "product.h"\r
+\r
+#if PSRAM_DENSITY_MB == 16\r
+#include "psram_16.h"\r
+#else /* PSRAM_DENSITY_MB == 32 */\r
+#include "psram_32.h"\r
+#endif\r
+\r
+#endif // PSRAM_H\r
index 1aad10d..de5d76c 100644 (file)
@@ -89,6 +89,11 @@ uint32_t uapi_ulp_systick_soc_calibration(void)
     return g_clock_ulp;\r
 }\r
 \r
+uint32_t uapi_ulp_systick_get_frequency(void)\r
+{\r
+    return g_clock_ulp;\r
+}\r
+\r
 uint64_t uapi_ulp_systick_get_ms(void)\r
 {\r
     uint64_t count = 0;\r
index b4440fa..fce484b 100644 (file)
@@ -337,12 +337,10 @@ errcode_t dmac_port_config_periph(dma_channel_t ch,
 
 void dma_port_add_sleep_veto(void)
 {
-    uapi_pm_add_sleep_veto(PM_ID_DMA);
     return;
 }
 
 void dma_port_remove_sleep_veto(void)
 {
-    uapi_pm_remove_sleep_veto(PM_ID_DMA);
     return;
 }
index e33c417..baf183d 100644 (file)
@@ -94,6 +94,9 @@ uint64_t uapi_ulp_systick_get_ms(void);
  * @brief  RC32K clock calibration. Do not call this API when the clock is in use.\r
  */\r
 uint32_t uapi_ulp_systick_soc_calibration(void);\r
+\r
+uint32_t uapi_ulp_systick_get_frequency(void);\r
+\r
 /**\r
  * @}\r
  */\r
index 6418e1e..2aee8f4 100644 (file)
@@ -35,6 +35,8 @@ extern "C" {
 #define I2C_3_SCL_PIN                 S_MGPIO17\r
 #define I2C_3_SDA_PIN                 S_MGPIO18\r
 \r
+#define I2C_DMA_TIMEOUT_MS        100\r
+\r
 typedef struct {\r
     volatile uint32_t con;              /*!< I2c control register. <i>Offset: 00h</i>. */\r
     volatile uint32_t tar;              /*!< I2c target address register. <i>Offset: 04h</i>. */\r
index 8a89e71..efa10f8 100644 (file)
@@ -255,3 +255,35 @@ td_void probe_add_msg_crc_fail(audio_core_id core_id)
     }
     *crc_fail += 1;
 }
+
+td_void probe_add_msg_int_fail(audio_core_id core_id)
+{
+    volatile td_u32 *msg_int_fail = TD_NULL;
+
+    if (g_probe_ctx == TD_NULL) {
+        return;
+    }
+
+    if (core_id == AUDIO_CORE_DSP0) {
+        msg_int_fail = &(g_probe_ctx->core_status[DSP_CORE0].msg_int_fail);
+    } else {
+        msg_int_fail = &(g_probe_ctx->core_status[DSP_CORE1].msg_int_fail);
+    }
+    *msg_int_fail += 1;
+}
+
+td_void probe_add_msg_int_retrigger(audio_core_id core_id)
+{
+    volatile td_u32 *msg_int_retrigger = TD_NULL;
+
+    if (g_probe_ctx == TD_NULL) {
+        return;
+    }
+
+    if (core_id == AUDIO_CORE_DSP0) {
+        msg_int_retrigger = &(g_probe_ctx->core_status[DSP_CORE0].msg_int_retrigger);
+    } else {
+        msg_int_retrigger = &(g_probe_ctx->core_status[DSP_CORE1].msg_int_retrigger);
+    }
+    *msg_int_retrigger += 1;
+}
index 6d29948..a0c5900 100644 (file)
@@ -30,4 +30,7 @@ td_void probe_add_msg_ack_timeout(audio_core_id core_id);
 td_void probe_add_msg_underflow(audio_core_id core_id);
 td_void probe_add_msg_crc_fail(audio_core_id core_id);
 
+td_void probe_add_msg_int_fail(audio_core_id core_id);
+td_void probe_add_msg_int_retrigger(audio_core_id core_id);
+
 #endif
index a86cdd3..3b8757c 100644 (file)
@@ -190,12 +190,6 @@ td_s32 sap_ioctl_ao_open(td_u32 cmd, td_void *arg, td_void *file)
     param = (sap_ao_open *)arg;
     attr = &param->attr;
 
-    ret = drv_ao_load_aef();
-    if (ret != AUDIO_SUCCESS) {
-        sap_err_log_fun(drv_ao_load_aef, ret);
-        return ret;
-    }
-
     ret = drv_msg_ao_open(&ao_handle, param->snd_id, attr);
     if (ret != AUDIO_SUCCESS) {
         sap_err_log_fun(drv_msg_ao_open, ret);
@@ -222,6 +216,12 @@ td_s32 sap_ioctl_ao_open(td_u32 cmd, td_void *arg, td_void *file)
     }
 #endif
 
+    ret = drv_ao_load_aef();
+    if (ret != AUDIO_SUCCESS) {
+        sap_err_log_fun(drv_ao_load_aef, ret);
+        return ret;
+    }
+
     audio_unused(cmd);
     audio_unused(file);
     return AUDIO_SUCCESS;
index 168e3fc..f1087c2 100644 (file)
@@ -527,6 +527,10 @@ typedef struct {
     td_u32 msg_ack_timeout;
     td_u32 msg_underflow;
     td_u32 msg_crc_fail;
+
+    /* msg int status */
+    td_u32 msg_int_fail;
+    td_u32 msg_int_retrigger;
 } probe_status_info;
 
 typedef struct {
index 9d2d657..4d92ea8 100644 (file)
@@ -16,6 +16,8 @@
 #if defined(CONFIG_I2C_SUPPORT_DMA) && (CONFIG_I2C_SUPPORT_DMA == 1)\r
 #include "dma.h"\r
 #include "hal_dma.h"\r
+#include "pm_definition.h"\r
+#include "pm_veto.h"\r
 #endif  /* CONFIG_I2C_SUPPORT_DMA */\r
 #include "i2c_porting.h"\r
 \r
@@ -472,16 +474,21 @@ static errcode_t i2c_write_by_dma(i2c_bus_t bus, uint16_t dev_addr, hal_i2c_buff
 \r
     /* if the lenth is 0 here, send stop byte straightforward */\r
     if (buffer_wrap.len != 0) {\r
+        uapi_pm_add_sleep_veto(PM_ID_I2C_DMA);\r
         ret = i2c_transmit_dma(bus, &buffer_wrap);\r
         if (ret != ERRCODE_SUCC) {\r
+            uapi_pm_remove_sleep_veto(PM_ID_I2C_DMA);\r
             return ret;\r
         }\r
 \r
         /* wait for trans */\r
-        if (osal_sem_down(&(g_dma_trans[bus].dma_sem)) != OSAL_SUCCESS) {\r
+        if (osal_sem_down_timeout(&(g_dma_trans[bus].dma_sem), I2C_DMA_TIMEOUT_MS) != OSAL_SUCCESS) {\r
+            uapi_dma_end_transfer(g_dma_trans[bus].write_channel - 1);\r
+            uapi_pm_remove_sleep_veto(PM_ID_I2C_DMA);\r
             g_dma_trans[bus].write_channel = 0;\r
             return ERRCODE_I2C_DMA_TRANSFER_ERROR;\r
         }\r
+        uapi_pm_remove_sleep_veto(PM_ID_I2C_DMA);\r
         g_dma_trans[bus].write_channel = 0;\r
         if (!g_dma_trans[bus].trans_succ) {\r
             return ERRCODE_I2C_DMA_TRANSFER_ERROR;\r
@@ -537,7 +544,8 @@ static errcode_t i2c_read_by_dma(i2c_bus_t bus, uint16_t dev_addr, hal_i2c_buffe
 \r
     /* 从模式在这里接收信号量,主模式在发送读命令之后接收信号量 */\r
     if (!i2c_ctrl->master_flag) {\r
-        if (osal_sem_down(&(g_dma_trans[bus].dma_sem)) != OSAL_SUCCESS) {\r
+        if (osal_sem_down_timeout(&(g_dma_trans[bus].dma_sem), I2C_DMA_TIMEOUT_MS) != OSAL_SUCCESS) {\r
+            uapi_dma_end_transfer(g_dma_trans[bus].write_channel - 1);\r
             g_dma_trans[bus].write_channel = 0;\r
             return ERRCODE_I2C_DMA_TRANSFER_ERROR;\r
         }\r
@@ -571,7 +579,9 @@ static errcode_t i2c_read_do_send_cmd(i2c_bus_t bus, hal_i2c_buffer_wrap_t *data
         }\r
 \r
         /* 发送len - 1个命令的dma中断 */\r
-        if (osal_sem_down(&(g_dma_trans[bus].dma_sem)) != OSAL_SUCCESS) {\r
+        if (osal_sem_down_timeout(&(g_dma_trans[bus].dma_sem), I2C_DMA_TIMEOUT_MS) != OSAL_SUCCESS) {\r
+            uapi_dma_end_transfer(g_dma_trans[bus].write_channel - 1);\r
+            uapi_dma_end_transfer(g_dma_trans[bus].read_channel - 1);\r
             g_dma_trans[bus].write_channel = 0;\r
             g_dma_trans[bus].read_channel = 0;\r
             return ERRCODE_I2C_DMA_TRANSFER_ERROR;\r
@@ -582,7 +592,8 @@ static errcode_t i2c_read_do_send_cmd(i2c_bus_t bus, hal_i2c_buffer_wrap_t *data
     buffer_wrap.len = 1;\r
     hal_funcs->ctrl(bus, I2C_CTRL_FLUSH_RX_FIFO, (uintptr_t)&buffer_wrap);\r
     /* 等待接收数据的dma中断释放信号量 */\r
-    if (osal_sem_down(&(g_dma_trans[bus].dma_sem)) != OSAL_SUCCESS) {\r
+    if (osal_sem_down_timeout(&(g_dma_trans[bus].dma_sem), I2C_DMA_TIMEOUT_MS) != OSAL_SUCCESS) {\r
+        uapi_dma_end_transfer(g_dma_trans[bus].read_channel - 1);\r
         g_dma_trans[bus].read_channel = 0;\r
         (void)hal_funcs->ctrl(bus, I2C_CTRL_READ_RESTORE, (uintptr_t)NULL);\r
         return ERRCODE_I2C_DMA_TRANSFER_ERROR;\r
@@ -1022,24 +1033,30 @@ errcode_t uapi_i2c_master_read(i2c_bus_t bus, uint16_t dev_addr, i2c_data_t *dat
 #if defined(CONFIG_I2C_SUPPORT_POLL_AND_DMA_AUTO_SWITCH) && (CONFIG_I2C_SUPPORT_POLL_AND_DMA_AUTO_SWITCH == 1)\r
     if (buffer_wrap.len > CONFIG_I2C_POLL_AND_DMA_AUTO_SWITCH_THRESHOLD) {\r
         uapi_i2c_set_dma_mode(bus, true);\r
+        uapi_pm_add_sleep_veto(PM_ID_I2C_DMA);\r
         errcode_t ret = i2c_read_by_dma(bus, dev_addr, &buffer_wrap);\r
         if (ret != ERRCODE_SUCC) {\r
+            uapi_pm_remove_sleep_veto(PM_ID_I2C_DMA);\r
             i2c_mutex_unlock(bus);\r
             return ret;\r
         }\r
         ret = i2c_read_do_send_cmd(bus, &buffer_wrap);\r
+        uapi_pm_remove_sleep_veto(PM_ID_I2C_DMA);\r
         i2c_mutex_unlock(bus);\r
         return ret;\r
     }\r
     uapi_i2c_set_dma_mode(bus, false);\r
 #else\r
     if (g_i2c_ctrl[bus].operate_type == I2C_DATA_OPERATION_TYPE_DMA) {\r
+        uapi_pm_add_sleep_veto(PM_ID_I2C_DMA);\r
         errcode_t ret = i2c_read_by_dma(bus, dev_addr, &buffer_wrap);\r
         if (ret != ERRCODE_SUCC) {\r
+            uapi_pm_remove_sleep_veto(PM_ID_I2C_DMA);\r
             i2c_mutex_unlock(bus);\r
             return ret;\r
         }\r
         ret = i2c_read_do_send_cmd(bus, &buffer_wrap);\r
+        uapi_pm_remove_sleep_veto(PM_ID_I2C_DMA);\r
         i2c_mutex_unlock(bus);\r
         return ret;\r
     }\r
@@ -1204,14 +1221,18 @@ errcode_t uapi_i2c_slave_read(i2c_bus_t bus, i2c_data_t *data)
 #if defined(CONFIG_I2C_SUPPORT_POLL_AND_DMA_AUTO_SWITCH) && (CONFIG_I2C_SUPPORT_POLL_AND_DMA_AUTO_SWITCH == 1)\r
     if (buffer_wrap.len > CONFIG_I2C_POLL_AND_DMA_AUTO_SWITCH_THRESHOLD) {\r
         uapi_i2c_set_dma_mode(bus, true);\r
+        uapi_pm_add_sleep_veto(PM_ID_I2C_DMA);\r
         ret = i2c_read_by_dma(bus, I2C_DEFAULT_DEV_ADDRESS, &buffer_wrap);\r
+        uapi_pm_remove_sleep_veto(PM_ID_I2C_DMA);\r
         i2c_mutex_unlock(bus);\r
         return ret;\r
     }\r
     uapi_i2c_set_dma_mode(bus, false);\r
 #else\r
     if (g_i2c_ctrl[bus].operate_type == I2C_DATA_OPERATION_TYPE_DMA) {\r
+        uapi_pm_add_sleep_veto(PM_ID_I2C_DMA);\r
         ret = i2c_read_by_dma(bus, I2C_DEFAULT_DEV_ADDRESS, &buffer_wrap);\r
+        uapi_pm_remove_sleep_veto(PM_ID_I2C_DMA);\r
         i2c_mutex_unlock(bus);\r
         return ret;\r
     }\r
index 298aedd..f5e1637 100644 (file)
@@ -16,6 +16,8 @@
 #include "dma.h"
 #include "hal_dma.h"
 #include "securec.h"
+#include "pm_definition.h"
+#include "pm_veto.h"
 
 #define DMA_SPI_TRANSFER_WIDTH_WORD 4
 #define DMA_SPI_TRANSFER_WIDTH_HALF_WORD 2
@@ -590,16 +592,21 @@ static errcode_t spi_write_dma(spi_bus_t bus, const spi_xfer_data_t *data, uint3
     g_dma_trans_tx[bus].channel = channel + 1;
     g_dma_trans_tx[bus].trans_succ = false;
 
+    uapi_pm_add_sleep_veto(PM_ID_SPI_DMA);
     if (uapi_dma_start_transfer(channel) != ERRCODE_SUCC) {
+        uapi_pm_remove_sleep_veto(PM_ID_SPI_DMA);
         g_dma_trans_tx[bus].channel = 0;
         return ERRCODE_SPI_DMA_CONFIG_ERROR;
     }
 
     if (osal_sem_down_timeout(&(g_dma_trans_tx[bus].dma_sem), timeout) != OSAL_SUCCESS) {
+        uapi_dma_end_transfer(channel);
+        uapi_pm_remove_sleep_veto(PM_ID_SPI_DMA);
         g_dma_trans_tx[bus].channel = 0;
         return ERRCODE_SPI_DMA_TRANSFER_ERROR;
     }
 
+    uapi_pm_remove_sleep_veto(PM_ID_SPI_DMA);
     g_dma_trans_tx[bus].channel = 0;
 
     if (!g_dma_trans_tx[bus].trans_succ) {
@@ -626,7 +633,7 @@ static void spi_dma_rx_config(dma_ch_user_peripheral_config_t *transfer_config,
     transfer_config->src = data_addr;
 }
 
-static errcode_t spi_read_dma(spi_bus_t bus, const spi_xfer_data_t *data)
+static errcode_t spi_read_dma(spi_bus_t bus, const spi_xfer_data_t *data, uint32_t timeout)
 {
     dma_ch_user_peripheral_config_t transfer_config = { 0 };
     uint8_t channel = DMA_CHANNEL_NONE;
@@ -660,16 +667,21 @@ static errcode_t spi_read_dma(spi_bus_t bus, const spi_xfer_data_t *data)
     g_dma_trans_rx[bus].channel = channel + 1;
     g_dma_trans_rx[bus].trans_succ = false;
 
+    uapi_pm_add_sleep_veto(PM_ID_SPI_DMA);
     if (uapi_dma_start_transfer(channel) != ERRCODE_SUCC) {
+        uapi_pm_remove_sleep_veto(PM_ID_SPI_DMA);
         g_dma_trans_rx[bus].channel = 0;
         return ERRCODE_SPI_DMA_CONFIG_ERROR;
     }
 
-    if (osal_sem_down(&(g_dma_trans_rx[bus].dma_sem)) != OSAL_SUCCESS) {
+    if (osal_sem_down_timeout(&(g_dma_trans_rx[bus].dma_sem), timeout) != OSAL_SUCCESS) {
+        uapi_dma_end_transfer(channel);
+        uapi_pm_remove_sleep_veto(PM_ID_SPI_DMA);
         g_dma_trans_rx[bus].channel = 0;
         return ERRCODE_SPI_DMA_TRANSFER_ERROR;
     }
 
+    uapi_pm_remove_sleep_veto(PM_ID_SPI_DMA);
     g_dma_trans_rx[bus].channel = 0;
 
     if (!g_dma_trans_rx[bus].trans_succ) {
@@ -763,7 +775,7 @@ static inline void spi_writeread_dma_clear_trans(spi_bus_t bus, uint8_t channel_
     uapi_dma_end_transfer(channel_tx);
 }
 
-static errcode_t spi_writeread_dma(spi_bus_t bus, const spi_xfer_data_t *data)
+static errcode_t spi_writeread_dma(spi_bus_t bus, const spi_xfer_data_t *data, uint32_t timeout)
 {
     uint8_t channel_rx = 0;
     uint8_t channel_tx = 0;
@@ -772,32 +784,39 @@ static errcode_t spi_writeread_dma(spi_bus_t bus, const spi_xfer_data_t *data)
         return ERRCODE_SPI_DMA_CONFIG_ERROR;
     }
 
+    uapi_pm_add_sleep_veto(PM_ID_SPI_DMA);
     if (uapi_dma_start_transfer(channel_rx) != ERRCODE_SUCC) {
+        uapi_pm_remove_sleep_veto(PM_ID_SPI_DMA);
         g_dma_trans_rx[bus].channel = 0;
         return ERRCODE_SPI_DMA_CONFIG_ERROR;
     }
 
     if (spi_write_dma_config(bus, &channel_tx, data) != ERRCODE_SUCC) {
         uapi_dma_end_transfer(channel_rx);
+        uapi_pm_remove_sleep_veto(PM_ID_SPI_DMA);
         return ERRCODE_SPI_DMA_CONFIG_ERROR;
     }
 
     if (uapi_dma_start_transfer(channel_tx) != ERRCODE_SUCC) {
         uapi_dma_end_transfer(channel_rx);
+        uapi_pm_remove_sleep_veto(PM_ID_SPI_DMA);
         g_dma_trans_tx[bus].channel = 0;
         return ERRCODE_SPI_DMA_CONFIG_ERROR;
     }
 
-    if (osal_sem_down(&(g_dma_trans_tx[bus].dma_sem)) != OSAL_SUCCESS) {
+    if (osal_sem_down_timeout(&(g_dma_trans_tx[bus].dma_sem), timeout) != OSAL_SUCCESS) {
         spi_writeread_dma_clear_trans(bus, channel_tx, channel_rx);
+        uapi_pm_remove_sleep_veto(PM_ID_SPI_DMA);
         return ERRCODE_SPI_DMA_TRANSFER_ERROR;
     }
 
-    if (osal_sem_down(&(g_dma_trans_rx[bus].dma_sem)) != OSAL_SUCCESS) {
+    if (osal_sem_down_timeout(&(g_dma_trans_rx[bus].dma_sem), timeout) != OSAL_SUCCESS) {
         spi_writeread_dma_clear_trans(bus, channel_tx, channel_rx);
+        uapi_pm_remove_sleep_veto(PM_ID_SPI_DMA);
         return ERRCODE_SPI_DMA_TRANSFER_ERROR;
     }
 
+    uapi_pm_remove_sleep_veto(PM_ID_SPI_DMA);
     g_dma_trans_tx[bus].channel = 0;
     g_dma_trans_rx[bus].channel = 0;
 
@@ -1079,7 +1098,7 @@ static errcode_t spi_master_read_dma(spi_bus_t bus, const spi_xfer_data_t *data,
     if (spi_get_attr_tmod(bus) == HAL_SPI_TRANS_MODE_RX) {
         return spi_read_by_writeread(bus, data, timeout);
     }
-    return spi_read_dma(bus, data);
+    return spi_read_dma(bus, data, timeout);
 }
 #endif  /* NOT CONFIG_SPI_SUPPORT_POLL_AND_DMA_AUTO_SWITCH */
 
@@ -1149,7 +1168,7 @@ errcode_t uapi_spi_master_writeread(spi_bus_t bus, const spi_xfer_data_t *data,
     if (data->rx_bytes > CONFIG_SPI_AUTO_SWITCH_DMA_THRESHOLD ||
         data->tx_bytes > CONFIG_SPI_AUTO_SWITCH_DMA_THRESHOLD) {
         uapi_spi_set_dma_mode(bus, true, NULL);
-        ret = spi_writeread_dma(bus, data);
+        ret = spi_writeread_dma(bus, data, timeout_tmp);
         spi_mutex_unlock(bus);
         return ret;
     }
@@ -1157,7 +1176,7 @@ errcode_t uapi_spi_master_writeread(spi_bus_t bus, const spi_xfer_data_t *data,
 #else
 #if defined(CONFIG_SPI_SUPPORT_DMA) && (CONFIG_SPI_SUPPORT_DMA == 1)
     if (g_dma_trans_tx[bus].is_enable && g_dma_trans_rx[bus].is_enable) {
-        ret = spi_writeread_dma(bus, data);
+        ret = spi_writeread_dma(bus, data, timeout_tmp);
         spi_mutex_unlock(bus);
         return ret;
     }
@@ -1238,7 +1257,7 @@ errcode_t uapi_spi_slave_read(spi_bus_t bus, const spi_xfer_data_t *data, uint32
 #if defined(CONFIG_SPI_SUPPORT_POLL_AND_DMA_AUTO_SWITCH) && (CONFIG_SPI_SUPPORT_POLL_AND_DMA_AUTO_SWITCH == 1)
     if (data->rx_bytes > CONFIG_SPI_AUTO_SWITCH_DMA_THRESHOLD) {
         uapi_spi_set_dma_mode(bus, true, NULL);
-        ret = spi_read_dma(bus, data);
+        ret = spi_read_dma(bus, data, timeout_tmp);
         spi_mutex_unlock(bus);
         return ret;
     }
@@ -1246,7 +1265,7 @@ errcode_t uapi_spi_slave_read(spi_bus_t bus, const spi_xfer_data_t *data, uint32
 #else
 #if defined(CONFIG_SPI_SUPPORT_DMA) && (CONFIG_SPI_SUPPORT_DMA == 1)
     if (g_dma_trans_rx[bus].is_enable) {
-        ret = spi_read_dma(bus, data);
+        ret = spi_read_dma(bus, data, timeout_tmp);
         spi_mutex_unlock(bus);
         return ret;
     }
index b6000ff..9f0eb29 100644 (file)
@@ -14,6 +14,8 @@
 #if defined(CONFIG_UART_SUPPORT_DMA)
 #include "dma_porting.h"
 #include "dma.h"
+#include "pm_definition.h"
+#include "pm_veto.h"
 #endif
 
 /**
@@ -70,7 +72,7 @@ static uart_tx_state_t g_uart_tx_state_array[UART_BUS_MAX_NUM];
 static uart_tx_state_t *g_uart_tx_state[UART_BUS_MAX_NUM];
 
 #if defined(CONFIG_UART_SUPPORT_DMA)
-#define DMA_UART_TRANSFER_TIMEOUT_MS 1000
+#define UART_DMA_TRANSFER_TIMEOUT_MS 1000
 #define UART_DMA_TRANS_MEMORY_TO_PERIPHERAL_DMA 1
 #define UART_DMA_TRANS_PERIPHERAL_TO_MEMORY_DMA 2
 #define UART_DMA_TRANSFER_DIR_MEM_TO_PERIPHERAL 0
@@ -552,16 +554,21 @@ int32_t uapi_uart_write_by_dma(uart_bus_t bus, const void *buffer, uint32_t leng
     g_dma_trans[bus].channel = dma_ch + 1;
     g_dma_trans[bus].trans_succ = false;
 
+    uapi_pm_add_sleep_veto(PM_ID_UART_DMA);
     if (uapi_dma_start_transfer(dma_ch) != ERRCODE_SUCC) {
+        uapi_pm_remove_sleep_veto(PM_ID_UART_DMA);
         g_dma_trans[bus].channel = 0;
         return UART_DMA_START_TRANSFER_FAIL;
     }
 
-    if (osal_sem_down_timeout(&(g_dma_trans[bus].dma_sem), DMA_UART_TRANSFER_TIMEOUT_MS) != OSAL_SUCCESS) {
+    if (osal_sem_down_timeout(&(g_dma_trans[bus].dma_sem), UART_DMA_TRANSFER_TIMEOUT_MS) != OSAL_SUCCESS) {
+        uapi_dma_end_transfer(dma_ch);
+        uapi_pm_remove_sleep_veto(PM_ID_UART_DMA);
         g_dma_trans[bus].channel = 0;
         return UART_DMA_TRANSFER_TIMEOUT;
     }
 
+    uapi_pm_remove_sleep_veto(PM_ID_UART_DMA);
     g_dma_trans[bus].channel = 0;
 
     if (!g_dma_trans[bus].trans_succ) {
@@ -628,16 +635,21 @@ int32_t uapi_uart_read_by_dma(uart_bus_t bus, const void *buffer, uint32_t lengt
     g_dma_trans[bus].channel = dma_ch + 1;
     g_dma_trans[bus].trans_succ = false;
 
+    uapi_pm_add_sleep_veto(PM_ID_UART_DMA);
     if (uapi_dma_start_transfer(dma_ch) != ERRCODE_SUCC) {
+        uapi_pm_remove_sleep_veto(PM_ID_UART_DMA);
         g_dma_trans[bus].channel = 0;
         return -1;
     }
 
-    if (osal_sem_down(&(g_dma_trans[bus].dma_sem)) != OSAL_SUCCESS) {
+    if (osal_sem_down_timeout(&(g_dma_trans[bus].dma_sem), UART_DMA_TRANSFER_TIMEOUT_MS) != OSAL_SUCCESS) {
+        uapi_dma_end_transfer(dma_ch);
+        uapi_pm_remove_sleep_veto(PM_ID_UART_DMA);
         g_dma_trans[bus].channel = 0;
         return -1;
     }
 
+    uapi_pm_remove_sleep_veto(PM_ID_UART_DMA);
     g_dma_trans[bus].channel = 0;
 
     if (!g_dma_trans[bus].trans_succ) {
index 5156f87..94e1025 100644 (file)
@@ -44,7 +44,7 @@ static uint64_t hal_calendar_get_timestamp(void)
     cnt_h = hal_calendar_get_cnt_h();\r
     counter = (cnt_h << HAL_CLC_H_OFFSET) | cnt_l;\r
     timeout = ((uapi_ulp_systick_get_count() - counter) * (MS_PER_S * CALIBRATION_CLOCK_MUL)) /\r
-               uapi_ulp_systick_soc_calibration();\r
+               uapi_ulp_systick_get_frequency();\r
     timestamp = ((data_h << HAL_CLC_H_OFFSET) | data_l) + timeout;\r
 \r
     /* get时补偿刷新 */\r
index bd6f024..7572eae 100644 (file)
@@ -163,6 +163,7 @@ static void hal_dmac_v100_ch_enable(dma_channel_t ch, bool en)
     } else {
         hal_dma_lli_free(ch);
         uapi_reg_setbit(&tmp_dma_regs->dma_ch_en, (uint32_t)tmp_dma_ch + HAL_DMA_CH_EN_WE_OFFSET);
+        g_hal_dma_channel[ch].state = HAL_DMA_CH_STATE_CLOSED;
     }
 }
 
index e09b252..acca28f 100644 (file)
@@ -133,7 +133,7 @@ void hal_reboot_chip(void)
     gpio_ulp_int_en(false);  // when soft reset, ulp area is not cleared.
 #endif
     // when bt at sleep, need wkup bt before soft reset
-#if !defined(BUILD_APPLICATION_SSB)
+#if !defined(BUILD_APPLICATION_SSB) && !defined(BUILD_RECOVERY_IMAGE)
     uint16_t lock_cnt = 0;
     uint16_t max_lock_cnt = HAL_REBOOT_WAIT_ACK_TRY_TIMES;
     writew(PM_SLEEP_SOFT_RESET_FORCE_WKUP_REG, PM_SLEEP_SOFT_RESET_FORCE_WKUP_VAL);
index 9485cc1..3d66b49 100644 (file)
@@ -1520,6 +1520,27 @@ errcode_t gap_ble_disconnect_remote_device(const bd_addr_t *addr);
  */
 errcode_t gap_ble_set_sec_param(gap_ble_sec_params_t *params);
 
+/**
+ * @if Eng
+ * @brief Use this funtion to set ctkd enable.
+ * @par   Use this funtion to set ctkd enable.
+ * @attention NULL
+ * @param  [in] param  ctkd enable, true:enable,false:disable
+ * @retval errcode_t { @ref errcode_bt_t }
+ * @par Dependency:
+ * @li  bts_def.h
+ * @else
+ * @brief  设置一键双连开关。
+ * @par    设置一键双连开关。
+ * @attention 无
+ * @param  [in] param  一键双连开关 true:打开 false:关闭
+ * @retval 执行结果错误码。 { @ref errcode_bt_t }
+ * @par 依赖:
+ * @li  bts_def.h
+ * @endif
+ */
+errcode_t gap_ble_set_ctkd_enable(bool ctkd_enable);
+
 /**
  * @if Eng
  * @brief Use this funtion to read rssi of remote device.
index 5c13978..42cfc67 100644 (file)
@@ -32,7 +32,9 @@ extern "C" {
 typedef struct {
     uint32_t bt_auto_reconnect_closed:1;        /*!< @if Eng BT reconnect feature.
                                                 @else   蓝牙回连特性。 @endif */
-    uint32_t reserved:31;                       /*!< @if Eng Featrues reserved for future.
+    uint32_t bt_a2dp_snk_closed : 1;            /*!< @if Eng BT A2DP SNK feature.
+                                                @else   蓝牙A2DP SNK特性。 @endif */
+    uint32_t reserved:30;                       /*!< @if Eng Featrues reserved for future.
                                                 @else   保留字段。 @endif */
 } bts_feature_t;
 
index 0fe8d10..9081ff4 100644 (file)
@@ -1,57 +1,57 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg2" NAME="last_state: %d new_state: %d @a2dp_snk_service.c(65),INFO" ID="0xd80e020d" />
-                       <MSG STRUCTURE="diag_log_msg5" NAME="addr: ****%02x%02x%02x%02x conn_hdl: %x @a2dp_snk_service.c(88),INFO" ID="0xd80e02c5" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="disconnect_ret(int): %d @a2dp_snk_service.c(94),INFO" ID="0xd80e02f5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy fail @a2dp_snk_service.c(98),ERROR" ID="0xd80e0312" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="event: %x dev_hdl: %x conn_hdl: %x @a2dp_snk_service.c(117),INFO" ID="0xd80e03ad" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="rmt_hdl: %x seid: %x sc_len: %d sc:  @a2dp_snk_service.c(128),INFO" ID="0xd80e0405" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="%x  @a2dp_snk_service.c(130),INFO" ID="0xd80e0415" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME=" @a2dp_snk_service.c(132),INFO" ID="0xd80e0425" />
-                       <MSG STRUCTURE="diag_log_msg5" NAME="streamMtu:%d, FrameSize: %d, numFrame: %d, stream_hdl: 0x%x, stream_state: %d @a2dp_snk_service.c(151),INFO" ID="0xd80e04bd" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="unexpected state %d @a2dp_snk_service.c(182),WARNING" ID="0xd80e05b3" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="stream_hdl: %x state: %d param_len: %d @a2dp_snk_service.c(190),INFO" ID="0xd80e05f5" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="set active device ret: %x @a2dp_snk_service.c(200),INFO" ID="0xd80e0645" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="error: cap_len is bigger! @a2dp_snk_service.c(247),ERROR" ID="0xd80e07ba" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="sbc report inf  @a2dp_snk_service.c(249),INFO" ID="0xd80e07cd" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="codec_caps[%u]:%02x  @a2dp_snk_service.c(251),INFO" ID="0xd80e07dd" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME=" @a2dp_snk_service.c(253),INFO" ID="0xd80e07ed" />
-                       <MSG STRUCTURE="diag_log_msg8" NAME="sbc sampleFreq: %02x chnlMode: %02x blockLen: %02x subBand: %02x allocMtd: %02x Bitpool: %02x %02x payload:%u @a2dp_snk_service.c(276),INFO" ID="0xd80e08a5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="error: cap_len is bigger! @a2dp_snk_service.c(305),ERROR" ID="0xd80e098a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="aac report inf  @a2dp_snk_service.c(307),INFO" ID="0xd80e099d" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="codec_caps[%u]:%02x  @a2dp_snk_service.c(309),INFO" ID="0xd80e09ad" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME=" @a2dp_snk_service.c(311),INFO" ID="0xd80e09bd" />
-                       <MSG STRUCTURE="diag_log_msg6" NAME="aac sampleFreq: %02x bit_rate: %02x channels: %02x objectType: %02x rfa: %02x vbr: %02x @a2dp_snk_service.c(331),INFO" ID="0xd80e0a5d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="code_c: %d @a2dp_snk_service.c(339),INFO" ID="0xd80e0a9d" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="stream_hdl: %x, role: %x, event: %x, err: %x @a2dp_snk_service.c(362),INFO" ID="0xd80e0b55" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc errr @a2dp_snk_service.c(372),ERROR" ID="0xd80e0ba2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s errr @a2dp_snk_service.c(381),ERROR" ID="0xd80e0bea" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc errr @a2dp_snk_service.c(392),ERROR" ID="0xd80e0c42" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s errr @a2dp_snk_service.c(401),ERROR" ID="0xd80e0c8a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc errr @a2dp_snk_service.c(412),ERROR" ID="0xd80e0ce2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s errr @a2dp_snk_service.c(418),ERROR" ID="0xd80e0d12" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc errr @a2dp_snk_service.c(429),ERROR" ID="0xd80e0d6a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s errr @a2dp_snk_service.c(435),ERROR" ID="0xd80e0d9a" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="conn_state:%d dev_hdl: %08x conn_hdl: %08x stream_hdl: %08x @a2dp_snk_service.c(466),INFO" ID="0xd80e0e95" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="a2dp_snk_set_stream_codec memcpy fail @a2dp_snk_service.c(510),ERROR" ID="0xd80e0ff2" />
-                       <MSG STRUCTURE="diag_log_msg7" NAME="sbc sF: %02x cM: %02x blockL: %02x sBand: %02x alcM: %02x BitP: %02x %02x @a2dp_snk_service.c(519),INFO" ID="0xd80e103d" />
-                       <MSG STRUCTURE="diag_log_msg6" NAME="aac sF: %02x bit_rate: %02x channel: %02x objType: %02x fa: %02x vbr: %02x @a2dp_snk_service.c(524),INFO" ID="0xd80e1065" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="is_reconfig: %d stream_hdl: %x ret %x @a2dp_snk_service.c(530),INFO" ID="0xd80e1095" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="btsdk_disconnect error ret: %x @a2dp_snk_service.c(562),ERROR" ID="0xd80e1192" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="filter try_report: %d now: %d reported: %d @a2dp_snk_service.c(589),INFO" ID="0xd80e126d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="get addr error @a2dp_snk_service.c(596),INFO" ID="0xd80e12a5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="get addr error @a2dp_snk_service.c(613),INFO" ID="0xd80e132d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="get addr error @a2dp_snk_service.c(630),INFO" ID="0xd80e13b5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="get addr error @a2dp_snk_service.c(647),ERROR" ID="0xd80e143a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc error @a2dp_snk_service.c(653),ERROR" ID="0xd80e146a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="fill codec error @a2dp_snk_service.c(660),ERROR" ID="0xd80e14a2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="error sbc sample_frequency %x @a2dp_snk_service.c(690),ERROR" ID="0xd80e1592" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="error aac sample_frequency %x @a2dp_snk_service.c(712),ERROR" ID="0xd80e1642" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="error codec_type %x @a2dp_snk_service.c(716),ERROR" ID="0xd80e1662" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="unhandled msg id %x @a2dp_snk_service.c(766),WARNING" ID="0xd80e17f3" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="btsdk_connect_ex error ret: %x, %x @a2dp_snk_service.c(835),ERROR" ID="0xd80e1a1a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="a2dp snk disconnect error ret: %x @a2dp_snk_service.c(858),ERROR" ID="0xd80e1ad2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy fail @a2dp_snk_service.c(874),ERROR" ID="0xd80e1b52" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="stream_hdl: %08x stream_status:%u ret: %08x @a2dp_snk_service.c(959),INFO" ID="0xd80e1dfd" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="suspend stream_hdl: %08x ret: %08x @a2dp_snk_service.c(970),INFO" ID="0xd80e1e55" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="stop stream_hdl: %08x ret: %08x @a2dp_snk_service.c(981),INFO" ID="0xd80e1ead" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="start accept stream_hdl: %08x ret: %08x @a2dp_snk_service.c(992),INFO" ID="0xd80e1f05" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg2" NAME="last_state: %d new_state: %d @a2dp_snk_service.c(69),INFO" ID="0xd80e022d" />
+                       <MSG STRUCTURE="diag_log_msg5" NAME="addr: ****%02x%02x%02x%02x conn_hdl: %x @a2dp_snk_service.c(92),INFO" ID="0xd80e02e5" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="disconnect_ret(int): %d @a2dp_snk_service.c(98),INFO" ID="0xd80e0315" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy fail @a2dp_snk_service.c(102),ERROR" ID="0xd80e0332" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="event: %x dev_hdl: %x conn_hdl: %x @a2dp_snk_service.c(121),INFO" ID="0xd80e03cd" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="rmt_hdl: %x seid: %x sc_len: %d sc:  @a2dp_snk_service.c(132),INFO" ID="0xd80e0425" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="%x  @a2dp_snk_service.c(134),INFO" ID="0xd80e0435" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME=" @a2dp_snk_service.c(136),INFO" ID="0xd80e0445" />
+                       <MSG STRUCTURE="diag_log_msg5" NAME="streamMtu:%d, FrameSize: %d, numFrame: %d, stream_hdl: 0x%x, stream_state: %d @a2dp_snk_service.c(155),INFO" ID="0xd80e04dd" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="unexpected state %d @a2dp_snk_service.c(186),WARNING" ID="0xd80e05d3" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="stream_hdl: %x state: %d param_len: %d @a2dp_snk_service.c(194),INFO" ID="0xd80e0615" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="set active device ret: %x @a2dp_snk_service.c(204),INFO" ID="0xd80e0665" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="error: cap_len is bigger! @a2dp_snk_service.c(251),ERROR" ID="0xd80e07da" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="sbc report inf  @a2dp_snk_service.c(253),INFO" ID="0xd80e07ed" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="codec_caps[%u]:%02x  @a2dp_snk_service.c(255),INFO" ID="0xd80e07fd" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME=" @a2dp_snk_service.c(257),INFO" ID="0xd80e080d" />
+                       <MSG STRUCTURE="diag_log_msg8" NAME="sbc sampleFreq: %02x chnlMode: %02x blockLen: %02x subBand: %02x allocMtd: %02x Bitpool: %02x %02x payload:%u @a2dp_snk_service.c(280),INFO" ID="0xd80e08c5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="error: cap_len is bigger! @a2dp_snk_service.c(309),ERROR" ID="0xd80e09aa" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="aac report inf  @a2dp_snk_service.c(311),INFO" ID="0xd80e09bd" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="codec_caps[%u]:%02x  @a2dp_snk_service.c(313),INFO" ID="0xd80e09cd" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME=" @a2dp_snk_service.c(315),INFO" ID="0xd80e09dd" />
+                       <MSG STRUCTURE="diag_log_msg6" NAME="aac sampleFreq: %02x bit_rate: %02x channels: %02x objectType: %02x rfa: %02x vbr: %02x @a2dp_snk_service.c(335),INFO" ID="0xd80e0a7d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="code_c: %d @a2dp_snk_service.c(343),INFO" ID="0xd80e0abd" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="stream_hdl: %x, role: %x, event: %x, err: %x @a2dp_snk_service.c(366),INFO" ID="0xd80e0b75" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc errr @a2dp_snk_service.c(376),ERROR" ID="0xd80e0bc2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s errr @a2dp_snk_service.c(385),ERROR" ID="0xd80e0c0a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc errr @a2dp_snk_service.c(396),ERROR" ID="0xd80e0c62" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s errr @a2dp_snk_service.c(405),ERROR" ID="0xd80e0caa" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc errr @a2dp_snk_service.c(416),ERROR" ID="0xd80e0d02" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s errr @a2dp_snk_service.c(422),ERROR" ID="0xd80e0d32" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc errr @a2dp_snk_service.c(433),ERROR" ID="0xd80e0d8a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s errr @a2dp_snk_service.c(439),ERROR" ID="0xd80e0dba" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="conn_state:%d dev_hdl: %08x conn_hdl: %08x stream_hdl: %08x @a2dp_snk_service.c(470),INFO" ID="0xd80e0eb5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="a2dp_snk_set_stream_codec memcpy fail @a2dp_snk_service.c(514),ERROR" ID="0xd80e1012" />
+                       <MSG STRUCTURE="diag_log_msg7" NAME="sbc sF: %02x cM: %02x blockL: %02x sBand: %02x alcM: %02x BitP: %02x %02x @a2dp_snk_service.c(523),INFO" ID="0xd80e105d" />
+                       <MSG STRUCTURE="diag_log_msg6" NAME="aac sF: %02x bit_rate: %02x channel: %02x objType: %02x fa: %02x vbr: %02x @a2dp_snk_service.c(528),INFO" ID="0xd80e1085" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="is_reconfig: %d stream_hdl: %x ret %x @a2dp_snk_service.c(534),INFO" ID="0xd80e10b5" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="btsdk_disconnect error ret: %x @a2dp_snk_service.c(566),ERROR" ID="0xd80e11b2" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="filter try_report: %d now: %d reported: %d @a2dp_snk_service.c(593),INFO" ID="0xd80e128d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="get addr error @a2dp_snk_service.c(600),INFO" ID="0xd80e12c5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="get addr error @a2dp_snk_service.c(617),INFO" ID="0xd80e134d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="get addr error @a2dp_snk_service.c(634),INFO" ID="0xd80e13d5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="get addr error @a2dp_snk_service.c(651),ERROR" ID="0xd80e145a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc error @a2dp_snk_service.c(657),ERROR" ID="0xd80e148a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="fill codec error @a2dp_snk_service.c(664),ERROR" ID="0xd80e14c2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="error sbc sample_frequency %x @a2dp_snk_service.c(694),ERROR" ID="0xd80e15b2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="error aac sample_frequency %x @a2dp_snk_service.c(716),ERROR" ID="0xd80e1662" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="error codec_type %x @a2dp_snk_service.c(720),ERROR" ID="0xd80e1682" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="unhandled msg id %x @a2dp_snk_service.c(770),WARNING" ID="0xd80e1813" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="btsdk_connect_ex error ret: %x, %x @a2dp_snk_service.c(843),ERROR" ID="0xd80e1a5a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="a2dp snk disconnect error ret: %x @a2dp_snk_service.c(870),ERROR" ID="0xd80e1b32" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy fail @a2dp_snk_service.c(886),ERROR" ID="0xd80e1bb2" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="stream_hdl: %08x stream_status:%u ret: %08x @a2dp_snk_service.c(971),INFO" ID="0xd80e1e5d" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="suspend stream_hdl: %08x ret: %08x @a2dp_snk_service.c(982),INFO" ID="0xd80e1eb5" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="stop stream_hdl: %08x ret: %08x @a2dp_snk_service.c(993),INFO" ID="0xd80e1f0d" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="start accept stream_hdl: %08x ret: %08x @a2dp_snk_service.c(1004),INFO" ID="0xd80e1f65" />
                        </MSG_LOG>
\ No newline at end of file
index 3505361..308065c 100644 (file)
@@ -1,10 +1,10 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="create style_name failed. @app_style.cpp(29),ERROR" ID="0xe10600ea" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="style_name set string value error @app_style.cpp(33),ERROR" ID="0xe106010a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="transform prop value must be set. @app_style.cpp(169),ERROR" ID="0xe106054a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="None style to parse. @app_style.cpp(187),ERROR" ID="0xe10605da" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="None style to parse. @app_style.cpp(193),ERROR" ID="0xe106060a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc space error @app_style.cpp(265),ERROR" ID="0xe106084a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="convert style name to char failed, will be dropped @app_style.cpp(295),ERROR" ID="0xe106093a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="style name length is 0 or max, will be dropped @app_style.cpp(300),ERROR" ID="0xe1060962" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="create style error @app_style.cpp(308),ERROR" ID="0xe10609a2" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="create style_name failed. @app_style.cpp(29),ERROR" ID="0xe10a00ea" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="style_name set string value error @app_style.cpp(33),ERROR" ID="0xe10a010a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="transform prop value must be set. @app_style.cpp(169),ERROR" ID="0xe10a054a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="None style to parse. @app_style.cpp(187),ERROR" ID="0xe10a05da" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="None style to parse. @app_style.cpp(193),ERROR" ID="0xe10a060a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc space error @app_style.cpp(265),ERROR" ID="0xe10a084a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="convert style name to char failed, will be dropped @app_style.cpp(295),ERROR" ID="0xe10a093a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="style name length is 0 or max, will be dropped @app_style.cpp(300),ERROR" ID="0xe10a0962" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="create style error @app_style.cpp(308),ERROR" ID="0xe10a09a2" />
                        </MSG_LOG>
\ No newline at end of file
index 41741a1..24286d2 100644 (file)
@@ -1,9 +1,9 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="create style item string failed. @app_style_item.cpp(58),ERROR" ID="0xe10801d2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="app_style set string value error @app_style_item.cpp(62),ERROR" ID="0xe10801f2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="style item transform num to string fail @app_style_item.cpp(77),ERROR" ID="0xe108026a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="convert style prop name to char failed, will be dropped @app_style_item.cpp(90),ERROR" ID="0xe10802d2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="style prop name length is 0, will be dropped @app_style_item.cpp(95),ERROR" ID="0xe10802fa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="new styleItem error @app_style_item.cpp(114),ERROR" ID="0xe1080392" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="convert style value to char failed, will be dropped @app_style_item.cpp(135),ERROR" ID="0xe108043a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="new styleItem error @app_style_item.cpp(161),ERROR" ID="0xe108050a" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="create style item string failed. @app_style_item.cpp(58),ERROR" ID="0xe10c01d2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="app_style set string value error @app_style_item.cpp(62),ERROR" ID="0xe10c01f2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="style item transform num to string fail @app_style_item.cpp(77),ERROR" ID="0xe10c026a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="convert style prop name to char failed, will be dropped @app_style_item.cpp(90),ERROR" ID="0xe10c02d2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="style prop name length is 0, will be dropped @app_style_item.cpp(95),ERROR" ID="0xe10c02fa" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="new styleItem error @app_style_item.cpp(114),ERROR" ID="0xe10c0392" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="convert style value to char failed, will be dropped @app_style_item.cpp(135),ERROR" ID="0xe10c043a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="new styleItem error @app_style_item.cpp(161),ERROR" ID="0xe10c050a" />
                        </MSG_LOG>
\ No newline at end of file
index 7b7e87f..edf5055 100644 (file)
@@ -1,5 +1,5 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="malloc flags data buffer failed @app_style_manager.cpp(62),ERROR" ID="0xe10c01f2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="convert id value to char failed, will be dropped @app_style_manager.cpp(227),ERROR" ID="0xe10c071a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="not supported yet @app_style_manager.cpp(243),WARNING" ID="0xe10c079b" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="invalid prop count @app_style_manager.cpp(283),ERROR" ID="0xe10c08da" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="malloc flags data buffer failed @app_style_manager.cpp(62),ERROR" ID="0xe11001f2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="convert id value to char failed, will be dropped @app_style_manager.cpp(227),ERROR" ID="0xe110071a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="not supported yet @app_style_manager.cpp(243),WARNING" ID="0xe110079b" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="invalid prop count @app_style_manager.cpp(283),ERROR" ID="0xe11008da" />
                        </MSG_LOG>
\ No newline at end of file
index d6dfba5..9122204 100644 (file)
@@ -1,14 +1,14 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="[ACore] bt read nv config fail. @bt_data_config.c(44),INFO" ID="0xd87e0165" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] bt read nv config succ, real_len:%hu. @bt_data_config.c(46),INFO" ID="0xd87e0175" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] bt set nv config fail. @bt_data_config.c(56),INFO" ID="0xd87e01c5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] bt set nv config succ. @bt_data_config.c(58),INFO" ID="0xd87e01d5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] sync config err, malloc fail. @bt_data_config.c(94),ERROR" ID="0xd87e02f2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] bt get data config table offset fail. @bt_data_config.c(120),ERROR" ID="0xd87e03c2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="bt acore config data write err @bt_data_config.c(136),ERROR" ID="0xd87e0442" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="bt acore config data write:%d @bt_data_config.c(139),INFO" ID="0xd87e045d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="bt acore config data write offset err! @bt_data_config.c(144),ERROR" ID="0xd87e0482" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="bt config data write err! @bt_data_config.c(150),ERROR" ID="0xd87e04b2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="bt acore config data read err! @bt_data_config.c(158),ERROR" ID="0xd87e04f2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="bt acore config data read offset err! @bt_data_config.c(165),ERROR" ID="0xd87e052a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="bt acore config data read memcpy err! @bt_data_config.c(170),ERROR" ID="0xd87e0552" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="[ACore] bt read nv config fail. @bt_data_config.c(63),INFO" ID="0xd87e01fd" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] bt read nv config succ, real_len:%hu. @bt_data_config.c(65),INFO" ID="0xd87e020d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] bt set nv config fail. @bt_data_config.c(75),INFO" ID="0xd87e025d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] bt set nv config succ. @bt_data_config.c(77),INFO" ID="0xd87e026d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] sync config err, malloc fail. @bt_data_config.c(113),ERROR" ID="0xd87e038a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] bt get data config table offset fail. @bt_data_config.c(139),ERROR" ID="0xd87e045a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="bt acore config data write err @bt_data_config.c(155),ERROR" ID="0xd87e04da" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="bt acore config data write:%d @bt_data_config.c(158),INFO" ID="0xd87e04f5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="bt acore config data write offset err! @bt_data_config.c(163),ERROR" ID="0xd87e051a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="bt config data write err! @bt_data_config.c(169),ERROR" ID="0xd87e054a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="bt acore config data read err! @bt_data_config.c(177),ERROR" ID="0xd87e058a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="bt acore config data read offset err! @bt_data_config.c(184),ERROR" ID="0xd87e05c2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="bt acore config data read memcpy err! @bt_data_config.c(189),ERROR" ID="0xd87e05ea" />
                        </MSG_LOG>
\ No newline at end of file
index 12aa032..23fc732 100644 (file)
                        <MSG STRUCTURE="diag_log_msg0" NAME="[Error] enable ble first! @btsrv_gatt_client.c(1062),ERROR" ID="0xd8162132" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] invalid client_id. @btsrv_gatt_client.c(1067),ERROR" ID="0xd816215a" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="[btsrv][INFO] unregister client %d success. @btsrv_gatt_client.c(1074),INFO" ID="0xd8162195" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] gattc discovery service param error @btsrv_gatt_client.c(1089),ERROR" ID="0xd816220a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] discovery service memcpy fail @btsrv_gatt_client.c(1094),ERROR" ID="0xd8162232" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] gattc discovery character param error @btsrv_gatt_client.c(1120),ERROR" ID="0xd8162302" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] discovery service result next request addr memcpy fail @btsrv_gatt_client.c(1126),ERROR" ID="0xd8162332" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] gattc discovery descriptor param error @btsrv_gatt_client.c(1153),ERROR" ID="0xd816240a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] discovery descriptor addr memcpy fail @btsrv_gatt_client.c(1158),ERROR" ID="0xd8162432" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] gattc read by hdl param error @btsrv_gatt_client.c(1179),ERROR" ID="0xd81624da" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] gattc read by hdl addr memcpy fail @btsrv_gatt_client.c(1184),ERROR" ID="0xd8162502" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] gattc read by uuid param error @btsrv_gatt_client.c(1206),ERROR" ID="0xd81625b2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] gattc read by uuid addr memcpy fail @btsrv_gatt_client.c(1211),ERROR" ID="0xd81625da" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] gattc write req param error @btsrv_gatt_client.c(1233),ERROR" ID="0xd816268a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] write req param new fail! @btsrv_gatt_client.c(1241),ERROR" ID="0xd81626ca" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] write req param set fail! @btsrv_gatt_client.c(1247),ERROR" ID="0xd81626fa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] write req addr memcpy fail @btsrv_gatt_client.c(1252),ERROR" ID="0xd8162722" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] write req value memcpy fail @btsrv_gatt_client.c(1259),ERROR" ID="0xd816275a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] gattc write cmd param error @btsrv_gatt_client.c(1281),ERROR" ID="0xd816280a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] write cmd param new fail! @btsrv_gatt_client.c(1289),ERROR" ID="0xd816284a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] write cmd addr memcpy fail @btsrv_gatt_client.c(1294),ERROR" ID="0xd8162872" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] write cmd value memcpy fail @btsrv_gatt_client.c(1301),ERROR" ID="0xd81628aa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] gattc exchange mtu param error @btsrv_gatt_client.c(1323),ERROR" ID="0xd816295a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] addr memcpy fail @btsrv_gatt_client.c(1327),ERROR" ID="0xd816297a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[btsrv][ERROR] mc ble gatt mtu config req atb ret: %d @btsrv_gatt_client.c(1335),ERROR" ID="0xd81629ba" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] gatt client callback memcpy fail @btsrv_gatt_client.c(1344),ERROR" ID="0xd8162a02" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] gattc discovery service param error @btsrv_gatt_client.c(1091),ERROR" ID="0xd816221a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] discovery service memcpy fail @btsrv_gatt_client.c(1097),ERROR" ID="0xd816224a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] gattc discovery character param error @btsrv_gatt_client.c(1126),ERROR" ID="0xd8162332" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] discovery service result next request addr memcpy fail @btsrv_gatt_client.c(1133),ERROR" ID="0xd816236a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] gattc discovery descriptor param error @btsrv_gatt_client.c(1163),ERROR" ID="0xd816245a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] discovery descriptor addr memcpy fail @btsrv_gatt_client.c(1169),ERROR" ID="0xd816248a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] gattc read by hdl param error @btsrv_gatt_client.c(1193),ERROR" ID="0xd816254a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] gattc read by hdl addr memcpy fail @btsrv_gatt_client.c(1199),ERROR" ID="0xd816257a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] gattc read by uuid param error @btsrv_gatt_client.c(1224),ERROR" ID="0xd8162642" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] gattc read by uuid addr memcpy fail @btsrv_gatt_client.c(1230),ERROR" ID="0xd8162672" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] gattc write req param error @btsrv_gatt_client.c(1255),ERROR" ID="0xd816273a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] write req param new fail! @btsrv_gatt_client.c(1265),ERROR" ID="0xd816278a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] write req param set fail! @btsrv_gatt_client.c(1272),ERROR" ID="0xd81627c2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] write req addr memcpy fail @btsrv_gatt_client.c(1278),ERROR" ID="0xd81627f2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] write req value memcpy fail @btsrv_gatt_client.c(1286),ERROR" ID="0xd8162832" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] gattc write cmd param error @btsrv_gatt_client.c(1310),ERROR" ID="0xd81628f2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] write cmd param new fail! @btsrv_gatt_client.c(1320),ERROR" ID="0xd8162942" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] write cmd addr memcpy fail @btsrv_gatt_client.c(1326),ERROR" ID="0xd8162972" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] write cmd value memcpy fail @btsrv_gatt_client.c(1334),ERROR" ID="0xd81629b2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] gattc exchange mtu param error @btsrv_gatt_client.c(1358),ERROR" ID="0xd8162a72" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] addr memcpy fail @btsrv_gatt_client.c(1363),ERROR" ID="0xd8162a9a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[btsrv][ERROR] mc ble gatt mtu config req atb ret: %d @btsrv_gatt_client.c(1372),ERROR" ID="0xd8162ae2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] gatt client callback memcpy fail @btsrv_gatt_client.c(1381),ERROR" ID="0xd8162b2a" />
                        </MSG_LOG>
\ No newline at end of file
index f22cc8a..be14d17 100644 (file)
                        <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] send msg fail @btsrv_gatt_server.c(1553),ERROR" ID="0xd81a308a" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[Error] enable ble first! @btsrv_gatt_server.c(1563),ERROR" ID="0xd81a30da" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[Error] enable ble first! @btsrv_gatt_server.c(1573),ERROR" ID="0xd81a312a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] invalid param @btsrv_gatt_server.c(1582),ERROR" ID="0xd81a3172" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] gatts send response param new fail @btsrv_gatt_server.c(1587),ERROR" ID="0xd81a319a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] gatts send response addr memcpy fail @btsrv_gatt_server.c(1595),ERROR" ID="0xd81a31da" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] gatts send response data memcpy fail @btsrv_gatt_server.c(1601),ERROR" ID="0xd81a320a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[Error] enable ble first! @btsrv_gatt_server.c(1617),ERROR" ID="0xd81a328a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] invalid param @btsrv_gatt_server.c(1622),ERROR" ID="0xd81a32b2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] malloc send notification param fail @btsrv_gatt_server.c(1631),ERROR" ID="0xd81a32fa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] data memcpy fail @btsrv_gatt_server.c(1639),ERROR" ID="0xd81a333a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[Error] enable ble first! @btsrv_gatt_server.c(1656),ERROR" ID="0xd81a33c2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] invalid param @btsrv_gatt_server.c(1661),ERROR" ID="0xd81a33ea" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] param new fail @btsrv_gatt_server.c(1669),ERROR" ID="0xd81a342a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] sen ntf/ind by uuid memcpy fail @btsrv_gatt_server.c(1679),ERROR" ID="0xd81a347a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] sen ntf/ind by uuid memcpy fail @btsrv_gatt_server.c(1688),ERROR" ID="0xd81a34c2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="set mtu out of bounds use dft_val:23 set_val:%d. @btsrv_gatt_server.c(1704),WARNING" ID="0xd81a3543" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] gatt server callback memcpy fail @btsrv_gatt_server.c(1717),ERROR" ID="0xd81a35aa" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] invalid param @btsrv_gatt_server.c(1584),ERROR" ID="0xd81a3182" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] gatts send response param new fail @btsrv_gatt_server.c(1590),ERROR" ID="0xd81a31b2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] gatts send response addr memcpy fail @btsrv_gatt_server.c(1599),ERROR" ID="0xd81a31fa" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] gatts send response data memcpy fail @btsrv_gatt_server.c(1606),ERROR" ID="0xd81a3232" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[Error] enable ble first! @btsrv_gatt_server.c(1623),ERROR" ID="0xd81a32ba" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] invalid param @btsrv_gatt_server.c(1628),ERROR" ID="0xd81a32e2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] malloc send notification param fail @btsrv_gatt_server.c(1637),ERROR" ID="0xd81a332a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] data memcpy fail @btsrv_gatt_server.c(1645),ERROR" ID="0xd81a336a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[Error] enable ble first! @btsrv_gatt_server.c(1662),ERROR" ID="0xd81a33f2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] invalid param @btsrv_gatt_server.c(1667),ERROR" ID="0xd81a341a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] param new fail @btsrv_gatt_server.c(1675),ERROR" ID="0xd81a345a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] sen ntf/ind by uuid memcpy fail @btsrv_gatt_server.c(1685),ERROR" ID="0xd81a34aa" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] sen ntf/ind by uuid memcpy fail @btsrv_gatt_server.c(1694),ERROR" ID="0xd81a34f2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="set mtu out of bounds use dft_val:23 set_val:%d. @btsrv_gatt_server.c(1710),WARNING" ID="0xd81a3573" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] gatt server callback memcpy fail @btsrv_gatt_server.c(1723),ERROR" ID="0xd81a35da" />
                        </MSG_LOG>
\ No newline at end of file
index 3590845..01ff7f4 100644 (file)
@@ -1,3 +1,3 @@
 <MSG_LOG><MSG STRUCTURE="diag_log_msg1" NAME="bms starts %s&quot;, result ? &quot;successfully&quot; : &quot;unsuccessfully @bundle_mgr_service.cpp(50),INFO" ID="0xe03a0195" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="BundleMgrService::ServiceMessageHandle @bundle_mgr_service.cpp(100),INFO" ID="0xe03a0325" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="BundleMgrService::ServiceMessageHandle @bundle_mgr_service.cpp(90),INFO" ID="0xe03a02d5" />
                        </MSG_LOG>
\ No newline at end of file
index e169c7b..06794b0 100644 (file)
@@ -1,3 +1,3 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="[BMS] Initialize is failed @bundlems_slite_client.cpp(184),ERROR" ID="0xe03005c2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[BMS] Initialize is failed @bundlems_slite_client.cpp(199),ERROR" ID="0xe030063a" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="[BMS] Initialize is failed @bundlems_slite_client.cpp(154),ERROR" ID="0xe03004d2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[BMS] Initialize is failed @bundlems_slite_client.cpp(169),ERROR" ID="0xe030054a" />
                        </MSG_LOG>
\ No newline at end of file
index 8860423..41d0266 100644 (file)
-<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="osal_mutex_init in g_connect_list_lock failed @connection_manager.c(114),ERROR" ID="0xd8060392" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="create timer error! ret: %x @connection_manager.c(187),ERROR" ID="0xd80605da" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="start timer error! ret: %x @connection_manager.c(195),ERROR" ID="0xd806061a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="start timer success! @connection_manager.c(200),INFO" ID="0xd8060645" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="already in discovery @connection_manager.c(219),WARNING" ID="0xd80606db" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="max_num invalid. %u @connection_manager.c(223),WARNING" ID="0xd80606fb" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="already in discovery @connection_manager.c(235),WARNING" ID="0xd806075b" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="start discovery fail ret: %x @connection_manager.c(249),ERROR" ID="0xd80607ca" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="discovery started @connection_manager.c(257),INFO" ID="0xd806080d" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="reconnect phone con_hdl:0x%x, result: %08x @connection_manager.c(374),INFO" ID="0xd8060bb5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="exist connect phone reject! @connection_manager.c(402),INFO" ID="0xd8060c95" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc fail @connection_manager.c(423),ERROR" ID="0xd8060d3a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy fail @connection_manager.c(427),ERROR" ID="0xd8060d5a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="send msg fail. %x @connection_manager.c(433),ERROR" ID="0xd8060d8a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="create acl cfm ret = %08x @connection_manager.c(441),INFO" ID="0xd8060dcd" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="dev_hdl: 0x%08x cod: 0x%x link_type: 0x%x @connection_manager.c(470),INFO" ID="0xd8060eb5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="already exist conn_node @connection_manager.c(480),INFO" ID="0xd8060f05" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="accept not paired earbuds. @connection_manager.c(489),INFO" ID="0xd8060f4d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="exist same type conn node. @connection_manager.c(493),INFO" ID="0xd8060f6d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="add conn info error! @connection_manager.c(500),ERROR" ID="0xd8060fa2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="btsdk_disconnect_acl_by_handle ret: %x @connection_manager.c(507),INFO" ID="0xd8060fdd" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc fail @connection_manager.c(515),ERROR" ID="0xd806101a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="get addr fail @connection_manager.c(522),ERROR" ID="0xd8061052" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy fail @connection_manager.c(527),ERROR" ID="0xd806107a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="send msg fail. %x @connection_manager.c(533),ERROR" ID="0xd80610aa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="connect exist conn_node @connection_manager.c(549),INFO" ID="0xd806112d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="exist same type conn_node, disconnect. @connection_manager.c(555),INFO" ID="0xd806115d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="find remote node fail @connection_manager.c(563),WARNING" ID="0xd806119b" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="add conn info error! @connection_manager.c(570),ERROR" ID="0xd80611d2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="create acl ret = %08x @connection_manager.c(582),WARNING" ID="0xd8061233" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="acl is connected @connection_manager.c(590),INFO" ID="0xd8061275" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="dev_hdl: %08x @connection_manager.c(599),INFO" ID="0xd80612bd" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="not exist conn node. @connection_manager.c(602),INFO" ID="0xd80612d5" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="is phone=0x%x @connection_manager.c(605),INFO" ID="0xd80612ed" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="status error dev_hdl: %x status: %d @connection_manager.c(608),WARNING" ID="0xd8061303" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="btsdk_disconnect_acl_by_handle ret: %x @connection_manager.c(648),INFO" ID="0xd8061445" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="send msg connecting @connection_manager.c(680),INFO" ID="0xd8061545" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc fail @connection_manager.c(684),ERROR" ID="0xd8061562" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy fail @connection_manager.c(688),ERROR" ID="0xd8061582" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="send msg fail. %x @connection_manager.c(694),ERROR" ID="0xd80615b2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="send msg connecting success! @connection_manager.c(697),INFO" ID="0xd80615cd" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="stop timer @connection_manager.c(702),INFO" ID="0xd80615f5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="stop timer success! @connection_manager.c(710),INFO" ID="0xd8061635" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="start timer @connection_manager.c(715),INFO" ID="0xd806165d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy fail @connection_manager.c(725),ERROR" ID="0xd80616aa" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="create timer error! ret: %x @connection_manager.c(730),ERROR" ID="0xd80616d2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="start timer error! ret: %x @connection_manager.c(736),ERROR" ID="0xd8061702" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="start timer success! try to reconnect %d times interval %dms @connection_manager.c(741),INFO" ID="0xd806172d" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="dev_hdl: %08x reason: %08x @connection_manager.c(778),INFO" ID="0xd8061855" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="no conn record dev_hdl: %08x @connection_manager.c(787),WARNING" ID="0xd806189b" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="rmt device class=0x%x is phone: 0x%x @connection_manager.c(797),INFO" ID="0xd80618ed" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="get addr fail @connection_manager.c(810),WARNING" ID="0xd8061953" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="get remote dev addr failed. dev_hdl: %x @connection_manager.c(824),WARNING" ID="0xd80619c3" />
-                       <MSG STRUCTURE="diag_log_msg6" NAME="addr: ****%02x%02x%02x%02x dev_hdl: %08x gap_remove_pair ret(bool): %d @connection_manager.c(833),INFO" ID="0xd8061a0d" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="error dev_hdl: %x pair_ret: %x disconn_ret: %x @connection_manager.c(842),WARNING" ID="0xd8061a53" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="dev_hdl: %08x @connection_manager.c(849),INFO" ID="0xd8061a8d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="conn node is null dev_hdl: %x @connection_manager.c(853),INFO" ID="0xd8061aad" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="status error dev_hdl: %x status: %d @connection_manager.c(859),INFO" ID="0xd8061add" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="dev_hdl: %08x @connection_manager.c(873),INFO" ID="0xd8061b4d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="get addr fail @connection_manager.c(881),WARNING" ID="0xd8061b8b" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="rmt device is phone @connection_manager.c(888),INFO" ID="0xd8061bc5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="rmt device is not phone @connection_manager.c(891),INFO" ID="0xd8061bdd" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="node not exist @connection_manager.c(902),INFO" ID="0xd8061c35" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="success @connection_manager.c(910),INFO" ID="0xd8061c75" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="descovery result @connection_manager.c(973),INFO" ID="0xd8061e6d" />
-                       <MSG STRUCTURE="diag_log_msg5" NAME="found device addr: ****%02x%02x%02x%02x name: %s @connection_manager.c(982),INFO" ID="0xd8061eb5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="gap_get_device_name failed @connection_manager.c(984),INFO" ID="0xd8061ec5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="get device name fail @connection_manager.c(1009),WARNING" ID="0xd8061f8b" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="unhandled msg id: %d @connection_manager.c(1078),WARNING" ID="0xd80621b3" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="set discovery status to stop @connection_manager.c(1096),INFO" ID="0xd8062245" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="unhandled msg id: %d @connection_manager.c(1167),WARNING" ID="0xd806247b" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="show conn list: @connection_manager.c(1188),INFO" ID="0xd8062525" />
-                       <MSG STRUCTURE="diag_log_msg7" NAME="| %-4s | %-32s | %-12s | %-16s | %-16s | %-8s | %-8s | @connection_manager.c(1190),INFO" ID="0xd8062535" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="remote is null @connection_manager.c(1198),ERROR" ID="0xd8062572" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="addr memcpy_s fail @connection_manager.c(1201),ERROR" ID="0xd806258a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="name memcpy_s fail @connection_manager.c(1204),ERROR" ID="0xd80625a2" />
-                       <MSG STRUCTURE="diag_log_msg10" NAME="| %-4d | %-32s | ****%02x%02x%02x%02x | %-16d | %-16d | %-8d | %-8d | @connection_manager.c(1209),INFO" ID="0xd80625cd" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="show conn list end! @connection_manager.c(1214),INFO" ID="0xd80625f5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="show ble conn list: @connection_manager.c(1221),INFO" ID="0xd806262d" />
-                       <MSG STRUCTURE="diag_log_msg9" NAME="| %-4s | %-12s | %-10s | %-8s | %-12s | %-12s | %-12s | %-12s  | %-48s | @connection_manager.c(1226),INFO" ID="0xd8062655" />
-                       <MSG STRUCTURE="diag_log_msg11" NAME="| %-4d | %02x******%02x%02x | %-10d | %-8d | %-12d | %-12d | %-12d | %-12d | %-48s | @connection_manager.c(1239),INFO" ID="0xd80626bd" />
-                       <MSG STRUCTURE="diag_log_msg8" NAME="| %-4s | %-12s | %-10s | %-8s | %-12s | %-12s | %-12s | %-12s  | @connection_manager.c(1246),INFO" ID="0xd80626f5" />
-                       <MSG STRUCTURE="diag_log_msg10" NAME="| %-4d | %02x******%02x%02x | %-10d | %-8d | %-12d | %-12d | %-12d | %-12d | @connection_manager.c(1252),INFO" ID="0xd8062725" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="show ble conn list end! @connection_manager.c(1259),INFO" ID="0xd806275d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="show link mode: @connection_manager.c(1271),INFO" ID="0xd80627bd" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="| %-4s | %-32s | %-12s | %-16s | @connection_manager.c(1273),INFO" ID="0xd80627cd" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="remote is null @connection_manager.c(1282),ERROR" ID="0xd8062812" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="addr memcpy_s fail @connection_manager.c(1285),ERROR" ID="0xd806282a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="name memcpy_s fail @connection_manager.c(1288),ERROR" ID="0xd8062842" />
-                       <MSG STRUCTURE="diag_log_msg7" NAME="| %-4d | %-32s | ****%02x%02x%02x%02x | %-16s | @connection_manager.c(1296),INFO" ID="0xd8062885" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="show link mode end! @connection_manager.c(1301),INFO" ID="0xd80628ad" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="set scan mode old=%d new=%d @connection_manager.c(1363),INFO" ID="0xd8062a9d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="btsdk_set_discovery_mode ret: %x @connection_manager.c(1374),INFO" ID="0xd8062af5" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="btsdk_set_discovery_mode mode: %x ret: %x @connection_manager.c(1385),INFO" ID="0xd8062b4d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="already in discovery @connection_manager.c(1407),INFO" ID="0xd8062bfd" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="bt is not enabled @connection_manager.c(1420),WARNING" ID="0xd8062c63" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="discovery already stopped @connection_manager.c(1425),WARNING" ID="0xd8062c8b" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="btsdk_stop_device_discovery ret=0x%x @connection_manager.c(1430),INFO" ID="0xd8062cb5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="discovery stopped @connection_manager.c(1433),INFO" ID="0xd8062ccd" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="not start bt @connection_manager.c(1459),INFO" ID="0xd8062d9d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="param id null @connection_manager.c(1463),INFO" ID="0xd8062dbd" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="exist connect audio device @connection_manager.c(1469),INFO" ID="0xd8062ded" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="gap_br_cancel_discovery fail @connection_manager.c(1474),INFO" ID="0xd8062e15" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="btsdk_disconnect_acl_by_handle ret: %x @connection_manager.c(1510),INFO" ID="0xd8062f35" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] gatt client add conn node memcpy fail. @connection_manager.c(1577),ERROR" ID="0xd806314a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="btsrv connect state change cbk arg NULL! @connection_manager.c(1589),ERROR" ID="0xd80631aa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="connect state update memcpy fail. @connection_manager.c(1594),ERROR" ID="0xd80631d2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="connect node is null. @connection_manager.c(1609),ERROR" ID="0xd806324a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble smp paired keys cbk param error @connection_manager.c(1626),ERROR" ID="0xd80632d2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="paired keys malloc fail. @connection_manager.c(1632),ERROR" ID="0xd8063302" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="paired keys malloc fail. @connection_manager.c(1637),ERROR" ID="0xd806332a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="pair keys notify, keys addr memcpy fail. @connection_manager.c(1642),ERROR" ID="0xd8063352" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="pair keys notify, keys memcpy fail. @connection_manager.c(1649),ERROR" ID="0xd806338a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble smp paired complete cbk param error @connection_manager.c(1666),ERROR" ID="0xd8063412" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="connect param update incomes arg is NULL! @connection_manager.c(1677),ERROR" ID="0xd806346a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="connect param update, conn_node not found. @connection_manager.c(1684),ERROR" ID="0xd80634a2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="connect param update,connect_params NULL. @connection_manager.c(1690),ERROR" ID="0xd80634d2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="connect param update, addr memcpy fail. @connection_manager.c(1696),ERROR" ID="0xd8063502" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="connect param update done ret:%d. @connection_manager.c(1705),INFO" ID="0xd806354d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="gap_ble_connect_remote_device not start bt @connection_manager.c(1714),INFO" ID="0xd8063595" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="gap_ble_connect_remote_device param id null @connection_manager.c(1718),INFO" ID="0xd80635b5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][INFO] addr memcpy to param fail. @connection_manager.c(1724),INFO" ID="0xd80635e5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv]addr memcpy fail. @connection_manager.c(1742),INFO" ID="0xd8063675" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="addr memcpy_s fail @connection_manager.c(1759),ERROR" ID="0xd80636fa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="read remote device rssi, conn_node not found. @connection_manager.c(1778),ERROR" ID="0xd8063792" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="read remote device rssi fail @connection_manager.c(1783),ERROR" ID="0xd80637ba" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="conn_node not found. @connection_manager.c(1797),ERROR" ID="0xd806382a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="auto reconnect is enabled, close it first. @connection_manager.c(1820),ERROR" ID="0xd80638e2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc fail @connection_manager.c(1825),ERROR" ID="0xd806390a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy fail @connection_manager.c(1829),ERROR" ID="0xd806392a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="send msg fail. %x @connection_manager.c(1836),ERROR" ID="0xd8063962" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="send msg connecting success! @connection_manager.c(1839),INFO" ID="0xd806397d" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="osal_mutex_init in g_connect_list_lock failed @connection_manager.c(126),ERROR" ID="0xd80603f2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="osal_mutex_init in g_ble_conn_list_lock failed @connection_manager.c(131),ERROR" ID="0xd806041a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="create timer error! ret: %x @connection_manager.c(204),ERROR" ID="0xd8060662" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="start timer error! ret: %x @connection_manager.c(212),ERROR" ID="0xd80606a2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="start timer success! @connection_manager.c(217),INFO" ID="0xd80606cd" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="already in discovery @connection_manager.c(236),WARNING" ID="0xd8060763" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="already in discovery @connection_manager.c(248),WARNING" ID="0xd80607c3" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="start discovery fail ret: %x @connection_manager.c(262),ERROR" ID="0xd8060832" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="discovery started @connection_manager.c(270),INFO" ID="0xd8060875" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="reconnect phone con_hdl:0x%x, result: %08x @connection_manager.c(403),INFO" ID="0xd8060c9d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="exist connect phone reject! @connection_manager.c(431),INFO" ID="0xd8060d7d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc fail @connection_manager.c(452),ERROR" ID="0xd8060e22" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy fail @connection_manager.c(456),ERROR" ID="0xd8060e42" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="send msg fail. %x @connection_manager.c(462),ERROR" ID="0xd8060e72" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="create acl cfm ret = %08x @connection_manager.c(470),INFO" ID="0xd8060eb5" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="dev_hdl: 0x%08x cod: 0x%x link_type: 0x%x @connection_manager.c(499),INFO" ID="0xd8060f9d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="already exist conn_node @connection_manager.c(509),INFO" ID="0xd8060fed" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="accept not paired earbuds. @connection_manager.c(518),INFO" ID="0xd8061035" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="exist same type conn node. @connection_manager.c(522),INFO" ID="0xd8061055" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="add conn info error! @connection_manager.c(529),ERROR" ID="0xd806108a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="btsdk_disconnect_acl_by_handle ret: %x @connection_manager.c(536),INFO" ID="0xd80610c5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc fail @connection_manager.c(544),ERROR" ID="0xd8061102" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="get addr fail @connection_manager.c(551),ERROR" ID="0xd806113a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy fail @connection_manager.c(556),ERROR" ID="0xd8061162" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="send msg fail. %x @connection_manager.c(562),ERROR" ID="0xd8061192" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="connect exist conn_node @connection_manager.c(578),INFO" ID="0xd8061215" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="exist same type conn_node, disconnect. @connection_manager.c(584),INFO" ID="0xd8061245" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="find remote node fail @connection_manager.c(592),WARNING" ID="0xd8061283" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="add conn info error! @connection_manager.c(599),ERROR" ID="0xd80612ba" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="create acl ret = %08x @connection_manager.c(611),WARNING" ID="0xd806131b" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="acl is connected @connection_manager.c(619),INFO" ID="0xd806135d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="dev_hdl: %08x @connection_manager.c(628),INFO" ID="0xd80613a5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="not exist conn node. @connection_manager.c(631),INFO" ID="0xd80613bd" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="is phone=0x%x @connection_manager.c(634),INFO" ID="0xd80613d5" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="status error dev_hdl: %x status: %d @connection_manager.c(637),WARNING" ID="0xd80613eb" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="btsdk_disconnect_acl_by_handle ret: %x @connection_manager.c(677),INFO" ID="0xd806152d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="send msg connecting @connection_manager.c(709),INFO" ID="0xd806162d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc fail @connection_manager.c(713),ERROR" ID="0xd806164a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy fail @connection_manager.c(717),ERROR" ID="0xd806166a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="send msg fail. %x @connection_manager.c(723),ERROR" ID="0xd806169a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="send msg connecting success! @connection_manager.c(726),INFO" ID="0xd80616b5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="stop timer @connection_manager.c(731),INFO" ID="0xd80616dd" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="stop timer success! @connection_manager.c(739),INFO" ID="0xd806171d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="start timer @connection_manager.c(744),INFO" ID="0xd8061745" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy fail @connection_manager.c(754),ERROR" ID="0xd8061792" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="create timer error! ret: %x @connection_manager.c(759),ERROR" ID="0xd80617ba" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="start timer error! ret: %x @connection_manager.c(765),ERROR" ID="0xd80617ea" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="start timer success! try to reconnect %d times interval %dms @connection_manager.c(770),INFO" ID="0xd8061815" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="dev_hdl: %08x reason: %08x @connection_manager.c(807),INFO" ID="0xd806193d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="no conn record dev_hdl: %08x @connection_manager.c(816),WARNING" ID="0xd8061983" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="rmt device class=0x%x is phone: 0x%x @connection_manager.c(826),INFO" ID="0xd80619d5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="get addr fail @connection_manager.c(839),WARNING" ID="0xd8061a3b" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="get remote dev addr failed. dev_hdl: %x @connection_manager.c(853),WARNING" ID="0xd8061aab" />
+                       <MSG STRUCTURE="diag_log_msg6" NAME="addr: ****%02x%02x%02x%02x dev_hdl: %08x gap_remove_pair ret(bool): %d @connection_manager.c(862),INFO" ID="0xd8061af5" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="error dev_hdl: %x pair_ret: %x disconn_ret: %x @connection_manager.c(871),WARNING" ID="0xd8061b3b" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="dev_hdl: %08x @connection_manager.c(878),INFO" ID="0xd8061b75" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="conn node is null dev_hdl: %x @connection_manager.c(882),INFO" ID="0xd8061b95" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="status error dev_hdl: %x status: %d @connection_manager.c(888),INFO" ID="0xd8061bc5" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="dev_hdl: %08x @connection_manager.c(902),INFO" ID="0xd8061c35" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="get addr fail @connection_manager.c(910),WARNING" ID="0xd8061c73" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="rmt device is phone @connection_manager.c(917),INFO" ID="0xd8061cad" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="rmt device is not phone @connection_manager.c(920),INFO" ID="0xd8061cc5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="node not exist @connection_manager.c(931),INFO" ID="0xd8061d1d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="success @connection_manager.c(939),INFO" ID="0xd8061d5d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="add remote list error! @connection_manager.c(993),WARNING" ID="0xd8061f0b" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="descovery result @connection_manager.c(1019),INFO" ID="0xd8061fdd" />
+                       <MSG STRUCTURE="diag_log_msg5" NAME="found device addr: ****%02x%02x%02x%02x name: %s @connection_manager.c(1028),INFO" ID="0xd8062025" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="gap_get_device_name failed @connection_manager.c(1030),INFO" ID="0xd8062035" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="get device name fail @connection_manager.c(1055),WARNING" ID="0xd80620fb" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="unhandled msg id: %d @connection_manager.c(1124),WARNING" ID="0xd8062323" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="set discovery status to stop @connection_manager.c(1142),INFO" ID="0xd80623b5" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="unhandled msg id: %d @connection_manager.c(1213),WARNING" ID="0xd80625eb" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="show conn list: @connection_manager.c(1234),INFO" ID="0xd8062695" />
+                       <MSG STRUCTURE="diag_log_msg7" NAME="| %-4s | %-32s | %-12s | %-16s | %-16s | %-8s | %-8s | @connection_manager.c(1236),INFO" ID="0xd80626a5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="remote is null @connection_manager.c(1244),ERROR" ID="0xd80626e2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="addr memcpy_s fail @connection_manager.c(1247),ERROR" ID="0xd80626fa" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="name memcpy_s fail @connection_manager.c(1250),ERROR" ID="0xd8062712" />
+                       <MSG STRUCTURE="diag_log_msg10" NAME="| %-4d | %-32s | ****%02x%02x%02x%02x | %-16d | %-16d | %-8d | %-8d | @connection_manager.c(1255),INFO" ID="0xd806273d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="show conn list end! @connection_manager.c(1260),INFO" ID="0xd8062765" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="show ble conn list: @connection_manager.c(1268),INFO" ID="0xd80627a5" />
+                       <MSG STRUCTURE="diag_log_msg9" NAME="| %-4s | %-12s | %-10s | %-8s | %-12s | %-12s | %-12s | %-12s  | %-48s | @connection_manager.c(1273),INFO" ID="0xd80627cd" />
+                       <MSG STRUCTURE="diag_log_msg11" NAME="| %-4d | %02x******%02x%02x | %-10d | %-8d | %-12d | %-12d | %-12d | %-12d | %-48s | @connection_manager.c(1286),INFO" ID="0xd8062835" />
+                       <MSG STRUCTURE="diag_log_msg8" NAME="| %-4s | %-12s | %-10s | %-8s | %-12s | %-12s | %-12s | %-12s  | @connection_manager.c(1293),INFO" ID="0xd806286d" />
+                       <MSG STRUCTURE="diag_log_msg10" NAME="| %-4d | %02x******%02x%02x | %-10d | %-8d | %-12d | %-12d | %-12d | %-12d | @connection_manager.c(1299),INFO" ID="0xd806289d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="show ble conn list end! @connection_manager.c(1306),INFO" ID="0xd80628d5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="show link mode: @connection_manager.c(1318),INFO" ID="0xd8062935" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="| %-4s | %-32s | %-12s | %-16s | @connection_manager.c(1320),INFO" ID="0xd8062945" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="remote is null @connection_manager.c(1329),ERROR" ID="0xd806298a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="addr memcpy_s fail @connection_manager.c(1332),ERROR" ID="0xd80629a2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="name memcpy_s fail @connection_manager.c(1335),ERROR" ID="0xd80629ba" />
+                       <MSG STRUCTURE="diag_log_msg7" NAME="| %-4d | %-32s | ****%02x%02x%02x%02x | %-16s | @connection_manager.c(1343),INFO" ID="0xd80629fd" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="show link mode end! @connection_manager.c(1348),INFO" ID="0xd8062a25" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="set scan mode old=%d new=%d @connection_manager.c(1410),INFO" ID="0xd8062c15" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="btsdk_set_discovery_mode ret: %x @connection_manager.c(1421),INFO" ID="0xd8062c6d" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="btsdk_set_discovery_mode mode: %x ret: %x @connection_manager.c(1432),INFO" ID="0xd8062cc5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="already in discovery @connection_manager.c(1454),INFO" ID="0xd8062d75" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="bt is not enabled @connection_manager.c(1467),WARNING" ID="0xd8062ddb" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="discovery already stopped @connection_manager.c(1472),WARNING" ID="0xd8062e03" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="btsdk_stop_device_discovery ret=0x%x @connection_manager.c(1477),INFO" ID="0xd8062e2d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="discovery stopped @connection_manager.c(1480),INFO" ID="0xd8062e45" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="not start bt @connection_manager.c(1506),INFO" ID="0xd8062f15" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="param id null @connection_manager.c(1510),INFO" ID="0xd8062f35" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="exist connect audio device @connection_manager.c(1516),INFO" ID="0xd8062f65" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="gap_br_cancel_discovery fail @connection_manager.c(1521),INFO" ID="0xd8062f8d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="btsdk_disconnect_acl_by_handle ret: %x @connection_manager.c(1557),INFO" ID="0xd80630ad" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] gatt client add conn node memcpy fail. @connection_manager.c(1624),ERROR" ID="0xd80632c2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="btsrv connect state change cbk arg NULL! @connection_manager.c(1638),ERROR" ID="0xd8063332" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="connect state update memcpy fail. @connection_manager.c(1643),ERROR" ID="0xd806335a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="connect node is null. @connection_manager.c(1659),ERROR" ID="0xd80633da" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble smp paired keys cbk param error @connection_manager.c(1678),ERROR" ID="0xd8063472" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="paired keys malloc fail. @connection_manager.c(1684),ERROR" ID="0xd80634a2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="paired keys malloc fail. @connection_manager.c(1689),ERROR" ID="0xd80634ca" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="pair keys notify, keys addr memcpy fail. @connection_manager.c(1694),ERROR" ID="0xd80634f2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="pair keys notify, keys memcpy fail. @connection_manager.c(1701),ERROR" ID="0xd806352a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble smp paired complete cbk param error @connection_manager.c(1718),ERROR" ID="0xd80635b2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="connect param update incomes arg is NULL! @connection_manager.c(1729),ERROR" ID="0xd806360a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="connect param update, conn_node not found. @connection_manager.c(1736),ERROR" ID="0xd8063642" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="connect param update,connect_params NULL. @connection_manager.c(1742),ERROR" ID="0xd8063672" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="connect param update, addr memcpy fail. @connection_manager.c(1748),ERROR" ID="0xd80636a2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="connect param update done ret:%d. @connection_manager.c(1757),INFO" ID="0xd80636ed" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="gap_ble_connect_remote_device not start bt @connection_manager.c(1766),INFO" ID="0xd8063735" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="gap_ble_connect_remote_device param id null @connection_manager.c(1770),INFO" ID="0xd8063755" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][INFO] addr memcpy to param fail. @connection_manager.c(1776),INFO" ID="0xd8063785" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv]addr memcpy fail. @connection_manager.c(1794),INFO" ID="0xd8063815" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="addr memcpy_s fail @connection_manager.c(1812),ERROR" ID="0xd80638a2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="read remote device rssi, conn_node not found. @connection_manager.c(1833),ERROR" ID="0xd806394a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="read remote device rssi fail @connection_manager.c(1838),ERROR" ID="0xd8063972" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="conn_node not found. @connection_manager.c(1854),ERROR" ID="0xd80639f2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="auto reconnect is enabled, close it first. @connection_manager.c(1877),ERROR" ID="0xd8063aaa" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc fail @connection_manager.c(1882),ERROR" ID="0xd8063ad2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy fail @connection_manager.c(1886),ERROR" ID="0xd8063af2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="send msg fail. %x @connection_manager.c(1893),ERROR" ID="0xd8063b2a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="send msg connecting success! @connection_manager.c(1897),INFO" ID="0xd8063b4d" />
                        </MSG_LOG>
\ No newline at end of file
index 927a87a..2b52c37 100644 (file)
@@ -1,6 +1,6 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="Failed to RenderForDescriptor because the result value is undefined. @descriptor_utils.cpp(94),ERROR" ID="0xe0ce02f2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="delete native view pointer from native element failed. @descriptor_utils.cpp(193),WARNING" ID="0xe0ce060b" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Failed to create descriptor because the type argument is null or empty. @descriptor_utils.cpp(211),ERROR" ID="0xe0ce069a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Failed to create descriptor because the getter argument is not a function. @descriptor_utils.cpp(216),ERROR" ID="0xe0ce06c2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Failed to create descriptor because the render argument is not a function. @descriptor_utils.cpp(221),ERROR" ID="0xe0ce06ea" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="Failed to RenderForDescriptor because the result value is undefined. @descriptor_utils.cpp(94),ERROR" ID="0xe0d002f2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="delete native view pointer from native element failed. @descriptor_utils.cpp(193),WARNING" ID="0xe0d0060b" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="Failed to create descriptor because the type argument is null or empty. @descriptor_utils.cpp(211),ERROR" ID="0xe0d0069a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="Failed to create descriptor because the getter argument is not a function. @descriptor_utils.cpp(216),ERROR" ID="0xe0d006c2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="Failed to create descriptor because the render argument is not a function. @descriptor_utils.cpp(221),ERROR" ID="0xe0d006ea" />
                        </MSG_LOG>
\ No newline at end of file
index fb1e68e..d59532b 100644 (file)
@@ -4,6 +4,4 @@
                        <MSG STRUCTURE="diag_log_msg0" NAME="fail to invoke event callback. @event_util.cpp(132),ERROR" ID="0xe0600422" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="EventUtil::InvokeCallback failed: Async task dispatch failure. @event_util.cpp(142),ERROR" ID="0xe0600472" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="fail to get element by UI view. @event_util.cpp(151),ERROR" ID="0xe06004ba" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="fail to get element by UI view. @event_util.cpp(156),ERROR" ID="0xe06004e2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="fail to get element by UI view. @event_util.cpp(161),ERROR" ID="0xe060050a" />
                        </MSG_LOG>
\ No newline at end of file
index e1b3f67..f75dcbf 100644 (file)
@@ -1,4 +1,4 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg1" NAME="hitted by fatal error[%d] @fatal_handler.cpp(56),ERROR" ID="0xe0be01c2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="the JS task is not killed after sleep very long time @fatal_handler.cpp(77),ERROR" ID="0xe0be026a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="hitted again when handling fatal error @fatal_handler.cpp(157),WARNING" ID="0xe0be04eb" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg1" NAME="hitted by fatal error[%d] @fatal_handler.cpp(56),ERROR" ID="0xe0c001c2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="the JS task is not killed after sleep very long time @fatal_handler.cpp(77),ERROR" ID="0xe0c0026a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="hitted again when handling fatal error @fatal_handler.cpp(157),WARNING" ID="0xe0c004eb" />
                        </MSG_LOG>
\ No newline at end of file
index c0397f6..e580525 100644 (file)
@@ -1,16 +1,15 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg1" NAME="available free size: %d @js_ability.cpp(56),DBG" ID="0xe0c001c6" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Launch only can be triggered once @js_ability.cpp(64),ERROR" ID="0xe0c00202" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="invalid app path @js_ability.cpp(70),ERROR" ID="0xe0c00232" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="invalid bundle name @js_ability.cpp(76),ERROR" ID="0xe0c00262" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Create JSAbilityRuntime failed @js_ability.cpp(91),ERROR" ID="0xe0c002da" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Must trigger Launch first @js_ability.cpp(109),ERROR" ID="0xe0c0036a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="LIFECYCLE: JS Ability will be shown @js_ability.cpp(113),INFO" ID="0xe0c0038d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Must trigger Launch first @js_ability.cpp(124),ERROR" ID="0xe0c003e2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="LIFECYCLE: JS Ability will be hidden @js_ability.cpp(127),INFO" ID="0xe0c003fd" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Must trigger Launch first @js_ability.cpp(138),ERROR" ID="0xe0c00452" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="LIFECYCLE: JS Ability is exiting @js_ability.cpp(142),INFO" ID="0xe0c00475" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Fail to recover screen visible property @js_ability.cpp(152),ERROR" ID="0xe0c004c2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Must trigger Launch first @js_ability.cpp(167),ERROR" ID="0xe0c0053a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ForceDestroy interface is deprecated as JS engine can not run on other task @js_ability.cpp(183),ERROR" ID="0xe0c005ba" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSAbility::HandleRenderTick js app is not forground @js_ability.cpp(218),ERROR" ID="0xe0c006d2" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg1" NAME="available free size: %d @js_ability.cpp(56),DBG" ID="0xe0c201c6" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="Launch only can be triggered once @js_ability.cpp(64),ERROR" ID="0xe0c20202" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="invalid app path @js_ability.cpp(70),ERROR" ID="0xe0c20232" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="invalid bundle name @js_ability.cpp(76),ERROR" ID="0xe0c20262" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="Create JSAbilityRuntime failed @js_ability.cpp(91),ERROR" ID="0xe0c202da" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="Must trigger Launch first @js_ability.cpp(109),ERROR" ID="0xe0c2036a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="LIFECYCLE: JS Ability will be shown @js_ability.cpp(113),INFO" ID="0xe0c2038d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="Must trigger Launch first @js_ability.cpp(124),ERROR" ID="0xe0c203e2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="LIFECYCLE: JS Ability will be hidden @js_ability.cpp(127),INFO" ID="0xe0c203fd" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="Must trigger Launch first @js_ability.cpp(138),ERROR" ID="0xe0c20452" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="LIFECYCLE: JS Ability is exiting @js_ability.cpp(142),INFO" ID="0xe0c20475" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="Must trigger Launch first @js_ability.cpp(168),ERROR" ID="0xe0c20542" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ForceDestroy interface is deprecated as JS engine can not run on other task @js_ability.cpp(184),ERROR" ID="0xe0c205c2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSAbility::HandleRenderTick js app is not forground @js_ability.cpp(219),ERROR" ID="0xe0c206da" />
                        </MSG_LOG>
\ No newline at end of file
index 2f88837..8ab28bf 100644 (file)
@@ -1,8 +1,8 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="invalid input parameters @js_ability_impl.cpp(35),ERROR" ID="0xe0c2011a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="already initialized, return @js_ability_impl.cpp(40),ERROR" ID="0xe0c20142" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="relocate js file failed @js_ability_impl.cpp(62),ERROR" ID="0xe0c201f2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc router heap memory failed. @js_ability_impl.cpp(77),ERROR" ID="0xe0c2026a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="no router instance to perform the show request @js_ability_impl.cpp(137),ERROR" ID="0xe0c2044a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="no router instance to perform the hide request @js_ability_impl.cpp(146),ERROR" ID="0xe0c20492" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="view model is undefined when call user's init @js_ability_impl.cpp(166),ERROR" ID="0xe0c20532" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="invalid input parameters @js_ability_impl.cpp(35),ERROR" ID="0xe0c4011a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="already initialized, return @js_ability_impl.cpp(40),ERROR" ID="0xe0c40142" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="relocate js file failed @js_ability_impl.cpp(62),ERROR" ID="0xe0c401f2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc router heap memory failed. @js_ability_impl.cpp(77),ERROR" ID="0xe0c4026a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="no router instance to perform the show request @js_ability_impl.cpp(137),ERROR" ID="0xe0c4044a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="no router instance to perform the hide request @js_ability_impl.cpp(146),ERROR" ID="0xe0c40492" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="view model is undefined when call user's init @js_ability_impl.cpp(166),ERROR" ID="0xe0c40532" />
                        </MSG_LOG>
\ No newline at end of file
index e2684fa..e66a69e 100644 (file)
@@ -1,15 +1,15 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg1" NAME="invalid snapshot version[%{public}d] @js_app_context.cpp(65),ERROR" ID="0xe0c4020a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Failed to eval js code cause by empty JavaScript script. @js_app_context.cpp(75),ERROR" ID="0xe0c4025a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="empty js file or length is incorrect, eval user code failed @js_app_context.cpp(86),ERROR" ID="0xe0c402b2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="JS mode changed unexpected [%{public}d] @js_app_context.cpp(161),ERROR" ID="0xe0c4050a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Failed to render app cause by render error. @js_app_context.cpp(180),ERROR" ID="0xe0c405a2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Nothing to render as it is undefined. @js_app_context.cpp(185),ERROR" ID="0xe0c405ca" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc buffer for current ability path failed @js_app_context.cpp(222),ERROR" ID="0xe0c406f2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc buffer for current uuid failed @js_app_context.cpp(239),ERROR" ID="0xe0c4077a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc buffer for current js path failed @js_app_context.cpp(269),ERROR" ID="0xe0c4086a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="uri is null. @js_app_context.cpp(302),ERROR" ID="0xe0c40972" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="uri is empty or too long. @js_app_context.cpp(307),ERROR" ID="0xe0c4099a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="fail to get resource path. @js_app_context.cpp(313),ERROR" ID="0xe0c409ca" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="fail to get resource path. @js_app_context.cpp(320),ERROR" ID="0xe0c40a02" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="fail to get resource path. @js_app_context.cpp(325),ERROR" ID="0xe0c40a2a" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg1" NAME="invalid snapshot version[%{public}d] @js_app_context.cpp(65),ERROR" ID="0xe0c6020a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="Failed to eval js code cause by empty JavaScript script. @js_app_context.cpp(75),ERROR" ID="0xe0c6025a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="empty js file or length is incorrect, eval user code failed @js_app_context.cpp(86),ERROR" ID="0xe0c602b2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="JS mode changed unexpected [%{public}d] @js_app_context.cpp(161),ERROR" ID="0xe0c6050a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="Failed to render app cause by render error. @js_app_context.cpp(180),ERROR" ID="0xe0c605a2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="Nothing to render as it is undefined. @js_app_context.cpp(185),ERROR" ID="0xe0c605ca" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc buffer for current ability path failed @js_app_context.cpp(222),ERROR" ID="0xe0c606f2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc buffer for current uuid failed @js_app_context.cpp(239),ERROR" ID="0xe0c6077a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc buffer for current js path failed @js_app_context.cpp(269),ERROR" ID="0xe0c6086a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="uri is null. @js_app_context.cpp(302),ERROR" ID="0xe0c60972" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="uri is empty or too long. @js_app_context.cpp(307),ERROR" ID="0xe0c6099a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="fail to get resource path. @js_app_context.cpp(313),ERROR" ID="0xe0c609ca" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="fail to get resource path. @js_app_context.cpp(320),ERROR" ID="0xe0c60a02" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="fail to get resource path. @js_app_context.cpp(325),ERROR" ID="0xe0c60a2a" />
                        </MSG_LOG>
\ No newline at end of file
index edbeccf..116bec4 100644 (file)
@@ -1,6 +1,6 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="JsAppEnvironment::JsAppEnvironment @js_app_environment.cpp(48),DBG" ID="0xe0c60186" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Failed to load JavaScript framework. @js_app_environment.cpp(110),ERROR" ID="0xe0c60372" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Success to load JavaScript framework. @js_app_environment.cpp(114),INFO" ID="0xe0c60395" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ACELite is running in snapshot mode @js_app_environment.cpp(143),DBG" ID="0xe0c6047e" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ACELite is running in JS parser mode @js_app_environment.cpp(145),DBG" ID="0xe0c6048e" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="JsAppEnvironment::JsAppEnvironment @js_app_environment.cpp(48),DBG" ID="0xe0c80186" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="Failed to load JavaScript framework. @js_app_environment.cpp(110),ERROR" ID="0xe0c80372" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="Success to load JavaScript framework. @js_app_environment.cpp(114),INFO" ID="0xe0c80395" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ACELite is running in snapshot mode @js_app_environment.cpp(143),DBG" ID="0xe0c8047e" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ACELite is running in JS parser mode @js_app_environment.cpp(145),DBG" ID="0xe0c8048e" />
                        </MSG_LOG>
\ No newline at end of file
index 8bfb5fa..a881298 100644 (file)
@@ -40,7 +40,7 @@
                        <MSG STRUCTURE="diag_log_msg0" NAME="Failed to parse image src cause by empty source. @js_fwk_common.cpp(1277),ERROR" ID="0xe06427ea" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="Failed to parse image src cause by empty source. @js_fwk_common.cpp(1281),ERROR" ID="0xe064280a" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="Relative path is not allowed in image src. @js_fwk_common.cpp(1288),ERROR" ID="0xe0642842" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="the fontFamily is too long @js_fwk_common.cpp(1313),ERROR" ID="0xe064290a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc string failed @js_fwk_common.cpp(1319),ERROR" ID="0xe064293a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="copy fontFamily failed @js_fwk_common.cpp(1323),ERROR" ID="0xe064295a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="the fontFamily is too long @js_fwk_common.cpp(1340),ERROR" ID="0xe06429e2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc string failed @js_fwk_common.cpp(1346),ERROR" ID="0xe0642a12" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="copy fontFamily failed @js_fwk_common.cpp(1350),ERROR" ID="0xe0642a32" />
                        </MSG_LOG>
\ No newline at end of file
index 4247ae3..e2fef88 100644 (file)
@@ -1,11 +1,11 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="undefined state -&gt; init state @js_page_state.cpp(29),INFO" ID="0xe10000ed" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="current state(%d) is invalid when changing undefined state to init state. @js_page_state.cpp(41),ERROR" ID="0xe100014a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="init state -&gt; ready state @js_page_state.cpp(49),INFO" ID="0xe100018d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="current state(%d) is invalid when changing init state to ready state. @js_page_state.cpp(60),ERROR" ID="0xe10001e2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="current state(%d) -&gt; show state @js_page_state.cpp(68),INFO" ID="0xe1000225" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="current state(%d) is invalid when changing ready state to show state. @js_page_state.cpp(77),ERROR" ID="0xe100026a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="current state(%d) -&gt; background state @js_page_state.cpp(85),INFO" ID="0xe10002ad" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="current state(%d) is invalid when changing show state to background state. @js_page_state.cpp(93),ERROR" ID="0xe10002ea" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="current state(%d) -&gt; destroy state @js_page_state.cpp(102),INFO" ID="0xe1000335" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="current state(%d) is invalid when changing show state to destroy state. @js_page_state.cpp(111),ERROR" ID="0xe100037a" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="undefined state -&gt; init state @js_page_state.cpp(29),INFO" ID="0xe10400ed" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="current state(%d) is invalid when changing undefined state to init state. @js_page_state.cpp(41),ERROR" ID="0xe104014a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="init state -&gt; ready state @js_page_state.cpp(49),INFO" ID="0xe104018d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="current state(%d) is invalid when changing init state to ready state. @js_page_state.cpp(60),ERROR" ID="0xe10401e2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="current state(%d) -&gt; show state @js_page_state.cpp(68),INFO" ID="0xe1040225" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="current state(%d) is invalid when changing ready state to show state. @js_page_state.cpp(77),ERROR" ID="0xe104026a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="current state(%d) -&gt; background state @js_page_state.cpp(85),INFO" ID="0xe10402ad" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="current state(%d) is invalid when changing show state to background state. @js_page_state.cpp(93),ERROR" ID="0xe10402ea" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="current state(%d) -&gt; destroy state @js_page_state.cpp(102),INFO" ID="0xe1040335" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="current state(%d) is invalid when changing show state to destroy state. @js_page_state.cpp(111),ERROR" ID="0xe104037a" />
                        </MSG_LOG>
\ No newline at end of file
index d53ccf5..5b549c3 100644 (file)
@@ -1,22 +1,22 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg1" NAME="error input state:%d @js_page_state_machine.cpp(83),ERROR" ID="0xe102029a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc path memory heap failed. @js_page_state_machine.cpp(116),ERROR" ID="0xe10203a2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="delete $page property failed from global object. @js_page_state_machine.cpp(148),ERROR" ID="0xe10204a2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="statemachine init failed as this app's root path is invalid. @js_page_state_machine.cpp(160),ERROR" ID="0xe1020502" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="statemachine init failed as object is invalid. @js_page_state_machine.cpp(177),ERROR" ID="0xe102058a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="statemachine init failed as uri is invalid. @js_page_state_machine.cpp(186),ERROR" ID="0xe10205d2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="statemachine init failed as uri is invalid. @js_page_state_machine.cpp(194),ERROR" ID="0xe1020612" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="statemachine init failed as uri is empty. @js_page_state_machine.cpp(201),ERROR" ID="0xe102064a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="statemachine init failed as generating js file's path failed. @js_page_state_machine.cpp(211),ERROR" ID="0xe102069a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="statemachine init failed as js file isn't existed. @js_page_state_machine.cpp(220),ERROR" ID="0xe10206e2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="error input state:%d @js_page_state_machine.cpp(278),ERROR" ID="0xe10208b2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="relocat page JS file failed @js_page_state_machine.cpp(295),ERROR" ID="0xe102093a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Eval JS file failed @js_page_state_machine.cpp(301),ERROR" ID="0xe102096a" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="JS Heap allocBytes[%d], peakAllocBytes[%d] @js_page_state_machine.cpp(333),DBG" ID="0xe1020a6e" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="StateMachine::ShowPage @js_page_state_machine.cpp(365),INFO" ID="0xe1020b6d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="showpage: the whole application already in background, do not operate rootview @js_page_state_machine.cpp(367),WARNING" ID="0xe1020b7b" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="hidepage: the whole application already in background, do not operate rootview @js_page_state_machine.cpp(382),WARNING" ID="0xe1020bf3" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="input parameter is invalid when invoking page life cycle callback. @js_page_state_machine.cpp(399),ERROR" ID="0xe1020c7a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="delete $page property failed from global object. @js_page_state_machine.cpp(424),ERROR" ID="0xe1020d42" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="delete $root property failed from global object. @js_page_state_machine.cpp(433),ERROR" ID="0xe1020d8a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[%d] components leaked! @js_page_state_machine.cpp(475),ERROR" ID="0xe1020eda" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg1" NAME="error input state:%d @js_page_state_machine.cpp(83),ERROR" ID="0xe106029a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc path memory heap failed. @js_page_state_machine.cpp(116),ERROR" ID="0xe10603a2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="delete $page property failed from global object. @js_page_state_machine.cpp(148),ERROR" ID="0xe10604a2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="statemachine init failed as this app's root path is invalid. @js_page_state_machine.cpp(160),ERROR" ID="0xe1060502" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="statemachine init failed as object is invalid. @js_page_state_machine.cpp(177),ERROR" ID="0xe106058a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="statemachine init failed as uri is invalid. @js_page_state_machine.cpp(186),ERROR" ID="0xe10605d2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="statemachine init failed as uri is invalid. @js_page_state_machine.cpp(194),ERROR" ID="0xe1060612" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="statemachine init failed as uri is empty. @js_page_state_machine.cpp(201),ERROR" ID="0xe106064a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="statemachine init failed as generating js file's path failed. @js_page_state_machine.cpp(211),ERROR" ID="0xe106069a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="statemachine init failed as js file isn't existed. @js_page_state_machine.cpp(220),ERROR" ID="0xe10606e2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="error input state:%d @js_page_state_machine.cpp(278),ERROR" ID="0xe10608b2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="relocat page JS file failed @js_page_state_machine.cpp(295),ERROR" ID="0xe106093a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="Eval JS file failed @js_page_state_machine.cpp(301),ERROR" ID="0xe106096a" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="JS Heap allocBytes[%d], peakAllocBytes[%d] @js_page_state_machine.cpp(333),DBG" ID="0xe1060a6e" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="StateMachine::ShowPage @js_page_state_machine.cpp(365),INFO" ID="0xe1060b6d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="showpage: the whole application already in background, do not operate rootview @js_page_state_machine.cpp(367),WARNING" ID="0xe1060b7b" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="hidepage: the whole application already in background, do not operate rootview @js_page_state_machine.cpp(382),WARNING" ID="0xe1060bf3" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="input parameter is invalid when invoking page life cycle callback. @js_page_state_machine.cpp(399),ERROR" ID="0xe1060c7a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="delete $page property failed from global object. @js_page_state_machine.cpp(424),ERROR" ID="0xe1060d42" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="delete $root property failed from global object. @js_page_state_machine.cpp(433),ERROR" ID="0xe1060d8a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[%d] components leaked! @js_page_state_machine.cpp(475),ERROR" ID="0xe1060eda" />
                        </MSG_LOG>
\ No newline at end of file
index 1e7dbea..4a36f52 100644 (file)
@@ -1,14 +1,14 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="malloc performance data buffer failed @js_profiler.cpp(205),ERROR" ID="0xe0ca066a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc performance data buffer failed @js_profiler.cpp(211),ERROR" ID="0xe0ca069a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="sync js profiler msg error @js_profiler.cpp(224),ERROR" ID="0xe0ca0702" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ace js profiler flushmsg sprintf error @js_profiler.cpp(231),ERROR" ID="0xe0ca073a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ace js profiler create error @js_profiler.cpp(237),ERROR" ID="0xe0ca076a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ace js profiler open error @js_profiler.cpp(243),ERROR" ID="0xe0ca079a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ace dump js profiler msg error @js_profiler.cpp(251),ERROR" ID="0xe0ca07da" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ace js profiler close error @js_profiler.cpp(257),ERROR" ID="0xe0ca080a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ace js profiler memset_s failed @js_profiler.cpp(280),ERROR" ID="0xe0ca08c2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ace js profiler memset_s failed @js_profiler.cpp(289),ERROR" ID="0xe0ca090a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ace js profiler tag(%d) mismatch! @js_profiler.cpp(358),ERROR" ID="0xe0ca0b32" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ace js profiler memset_s msg failed @js_profiler.cpp(394),ERROR" ID="0xe0ca0c52" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ace js profiler write msg failed @js_profiler.cpp(398),ERROR" ID="0xe0ca0c72" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="malloc performance data buffer failed @js_profiler.cpp(205),ERROR" ID="0xe0cc066a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc performance data buffer failed @js_profiler.cpp(211),ERROR" ID="0xe0cc069a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="sync js profiler msg error @js_profiler.cpp(224),ERROR" ID="0xe0cc0702" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ace js profiler flushmsg sprintf error @js_profiler.cpp(231),ERROR" ID="0xe0cc073a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ace js profiler create error @js_profiler.cpp(237),ERROR" ID="0xe0cc076a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ace js profiler open error @js_profiler.cpp(243),ERROR" ID="0xe0cc079a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ace dump js profiler msg error @js_profiler.cpp(251),ERROR" ID="0xe0cc07da" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ace js profiler close error @js_profiler.cpp(257),ERROR" ID="0xe0cc080a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ace js profiler memset_s failed @js_profiler.cpp(280),ERROR" ID="0xe0cc08c2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ace js profiler memset_s failed @js_profiler.cpp(289),ERROR" ID="0xe0cc090a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ace js profiler tag(%d) mismatch! @js_profiler.cpp(358),ERROR" ID="0xe0cc0b32" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ace js profiler memset_s msg failed @js_profiler.cpp(394),ERROR" ID="0xe0cc0c52" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ace js profiler write msg failed @js_profiler.cpp(398),ERROR" ID="0xe0cc0c72" />
                        </MSG_LOG>
\ No newline at end of file
index cc56b35..4e5c0b9 100644 (file)
@@ -1,9 +1,9 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="replace async failed with null input parameter @js_router.cpp(31),ERROR" ID="0xe10400fa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="router is replacing, can not handle the new request @js_router.cpp(43),ERROR" ID="0xe104015a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc state machine memory heap failed. @js_router.cpp(48),ERROR" ID="0xe1040182" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="dispatch replacing request failed @js_router.cpp(64),ERROR" ID="0xe1040202" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="replace sync failed, new sm should be prepared @js_router.cpp(78),ERROR" ID="0xe1040272" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="the whole application is in background, move to HIDE state directly @js_router.cpp(94),DBG" ID="0xe10402f6" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="no SM when performing show @js_router.cpp(110),ERROR" ID="0xe1040372" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="no SM when performing background @js_router.cpp(122),ERROR" ID="0xe10403d2" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="replace async failed with null input parameter @js_router.cpp(31),ERROR" ID="0xe10800fa" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="router is replacing, can not handle the new request @js_router.cpp(43),ERROR" ID="0xe108015a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc state machine memory heap failed. @js_router.cpp(48),ERROR" ID="0xe1080182" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="dispatch replacing request failed @js_router.cpp(64),ERROR" ID="0xe1080202" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="replace sync failed, new sm should be prepared @js_router.cpp(78),ERROR" ID="0xe1080272" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="the whole application is in background, move to HIDE state directly @js_router.cpp(94),DBG" ID="0xe10802f6" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="no SM when performing show @js_router.cpp(110),ERROR" ID="0xe1080372" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="no SM when performing background @js_router.cpp(122),ERROR" ID="0xe10803d2" />
                        </MSG_LOG>
\ No newline at end of file
index c9bf4d9..cbb9bfe 100644 (file)
@@ -1,98 +1,98 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="JSI:GetGlobalObject has not been implemented in this js engine! @jsi.cpp(33),ERROR" ID="0xe0d2010a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CreateObject has not been implemented in this js engine! @jsi.cpp(43),ERROR" ID="0xe0d2015a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:SetProperty failed! @jsi.cpp(51),ERROR" ID="0xe0d2019a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:SetProperty has not been implemented in this js engine! @jsi.cpp(61),ERROR" ID="0xe0d201ea" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:SetNamedProperty failed! @jsi.cpp(68),ERROR" ID="0xe0d20222" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:SetNamedProperty has not been implemented in this js engine! @jsi.cpp(76),ERROR" ID="0xe0d20262" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:SetNumberProperty failed! @jsi.cpp(83),ERROR" ID="0xe0d2029a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:SetBooleanProperty failed! @jsi.cpp(94),ERROR" ID="0xe0d202f2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:SetStringProperty failed! @jsi.cpp(105),ERROR" ID="0xe0d2034a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:SetStringPropertyWithBufferSize failed! @jsi.cpp(116),ERROR" ID="0xe0d203a2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CreateJerryFuncHelper get function pointer failed! @jsi.cpp(137),ERROR" ID="0xe0d2044a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CreateJerryFuncHelper allocate memory failed! @jsi.cpp(149),ERROR" ID="0xe0d204aa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CreateFunction failed! @jsi.cpp(166),ERROR" ID="0xe0d20532" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CreateFunction has not been implemented in this js engine! @jsi.cpp(175),ERROR" ID="0xe0d2057a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CreateString has not been implemented in this js engine! @jsi.cpp(188),ERROR" ID="0xe0d205e2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CreateStringWithBufferSize has not been implemented in this js engine! @jsi.cpp(201),ERROR" ID="0xe0d2064a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CreateUndefined has not been implemented in this js engine! @jsi.cpp(210),ERROR" ID="0xe0d20692" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueIsFunction has not been implemented in this js engine! @jsi.cpp(220),ERROR" ID="0xe0d206e2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueIsUndefined has not been implemented in this js engine! @jsi.cpp(230),ERROR" ID="0xe0d20732" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueIsNumber has not been implemented in this js engine! @jsi.cpp(240),ERROR" ID="0xe0d20782" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueIsString has not been implemented in this js engine! @jsi.cpp(250),ERROR" ID="0xe0d207d2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueIsBoolean has not been implemented in this js engine! @jsi.cpp(260),ERROR" ID="0xe0d20822" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueIsNull has not been implemented in this js engine! @jsi.cpp(270),ERROR" ID="0xe0d20872" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueIsObject has not been implemented in this js engine! @jsi.cpp(280),ERROR" ID="0xe0d208c2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueIsError has not been implemented in this js engine! @jsi.cpp(290),ERROR" ID="0xe0d20912" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:JsonStringify failed! @jsi.cpp(298),ERROR" ID="0xe0d20952" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:JsonStringify has not been implemented in this js engine! @jsi.cpp(307),ERROR" ID="0xe0d2099a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:JsonParse failed! @jsi.cpp(315),ERROR" ID="0xe0d209da" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:JsonParse has not been implemented in this js engine! @jsi.cpp(322),ERROR" ID="0xe0d20a12" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:GetProperty failed! @jsi.cpp(330),ERROR" ID="0xe0d20a52" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:GetProperty has not been implemented in this js engine! @jsi.cpp(338),ERROR" ID="0xe0d20a92" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:GetNamedProperty failed! @jsi.cpp(346),ERROR" ID="0xe0d20ad2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:GetNamedProperty has not been implemented in this js engine! @jsi.cpp(355),ERROR" ID="0xe0d20b1a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:GetNumberProperty failed! @jsi.cpp(363),ERROR" ID="0xe0d20b5a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:GetBooleanProperty failed! @jsi.cpp(375),ERROR" ID="0xe0d20bba" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:GetStringProperty failed! @jsi.cpp(387),ERROR" ID="0xe0d20c1a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ReleaseValue has not been implemented in this js engine! @jsi.cpp(403),ERROR" ID="0xe0d20c9a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:GetStringPropertyWithBufferSize failed! @jsi.cpp(410),ERROR" ID="0xe0d20cd2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CallFunction failed! @jsi.cpp(430),ERROR" ID="0xe0d20d72" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CallFunction error returned! @jsi.cpp(439),ERROR" ID="0xe0d20dba" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CallFunction allocate memory failed! @jsi.cpp(446),ERROR" ID="0xe0d20df2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CallFunction error returned! @jsi.cpp(455),ERROR" ID="0xe0d20e3a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CallFunction has not been implemented in this js engine! @jsi.cpp(461),ERROR" ID="0xe0d20e6a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CreateNumber has not been implemented in this js engine! @jsi.cpp(470),ERROR" ID="0xe0d20eb2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CreateNumberNan has not been implemented in this js engine! @jsi.cpp(480),ERROR" ID="0xe0d20f02" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CreateError parameters invalid! @jsi.cpp(555),ERROR" ID="0xe0d2115a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CreateError has not been implemented in this js engine! @jsi.cpp(563),ERROR" ID="0xe0d2119a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:GetErrorType has not been implemented in this js engine! @jsi.cpp(578),ERROR" ID="0xe0d21212" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CreateBoolean has not been implemented in this js engine! @jsi.cpp(588),ERROR" ID="0xe0d21262" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CreateNull has not been implemented in this js engine! @jsi.cpp(598),ERROR" ID="0xe0d212b2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CreateSymbol has not been implemented in this js engine! @jsi.cpp(610),ERROR" ID="0xe0d21312" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueIsSymbol has not been implemented in this js engine! @jsi.cpp(620),ERROR" ID="0xe0d21362" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CreateArray has not been implemented in this js engine! @jsi.cpp(631),ERROR" ID="0xe0d213ba" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:SetPropertyByIndex has not been implemented in this js engine! @jsi.cpp(650),ERROR" ID="0xe0d21452" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueToString params invalid! @jsi.cpp(661),ERROR" ID="0xe0d214aa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueToString malloc memory for empty char failed! @jsi.cpp(670),ERROR" ID="0xe0d214f2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueToString malloc memory failed! @jsi.cpp(678),ERROR" ID="0xe0d21532" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueToString jerry string to char buffer failed @jsi.cpp(683),ERROR" ID="0xe0d2155a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueToString has not been implemented in this js engine! @jsi.cpp(693),ERROR" ID="0xe0d215aa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueToStringWithBufferSize params invalid! @jsi.cpp(703),ERROR" ID="0xe0d215fa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueToStringWithBufferSize malloc memory failed! @jsi.cpp(716),ERROR" ID="0xe0d21662" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueToStringWithBufferSize jerry string to char buffer failed @jsi.cpp(722),ERROR" ID="0xe0d21692" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueToStringWithBufferSize has not been implemented in this js engine! @jsi.cpp(731),ERROR" ID="0xe0d216da" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueToNumber params invalid! @jsi.cpp(742),ERROR" ID="0xe0d21732" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueToNumber has not been implemented in this js engine! @jsi.cpp(747),ERROR" ID="0xe0d2175a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueToBoolean params invalid! @jsi.cpp(757),ERROR" ID="0xe0d217aa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueToBoolean has not been implemented in this js engine! @jsi.cpp(762),ERROR" ID="0xe0d217d2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:JSIValueToString has not been implemented in this js engine! @jsi.cpp(775),ERROR" ID="0xe0d2183a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:GetArrayLength params invalid! @jsi.cpp(785),ERROR" ID="0xe0d2188a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:GetArrayLength has not been implemented in this js engine! @jsi.cpp(790),ERROR" ID="0xe0d218b2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:GetPropertyByIndex has not been implemented in this js engine! @jsi.cpp(801),ERROR" ID="0xe0d2190a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:GetObjectKeys failed! @jsi.cpp(809),ERROR" ID="0xe0d2194a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:GetObjectKeys has not been implemented in this js engine! @jsi.cpp(816),ERROR" ID="0xe0d21982" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:GetJSHeapStatus has not been implemented in this js engine! @jsi.cpp(833),ERROR" ID="0xe0d21a0a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueIsArray has not been implemented in this js engine! @jsi.cpp(843),ERROR" ID="0xe0d21a5a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:AcquireValue has not been implemented in this js engine! @jsi.cpp(854),ERROR" ID="0xe0d21ab2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:SetModuleAPI failed! @jsi.cpp(862),ERROR" ID="0xe0d21af2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:SetOnDestroy failed! @jsi.cpp(873),ERROR" ID="0xe0d21b4a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:SetOnDestroy has not been implemented in this js engine! @jsi.cpp(880),ERROR" ID="0xe0d21b82" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:SetOnTerminate failed! @jsi.cpp(892),ERROR" ID="0xe0d21be2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:SetNamedPointer failed! @jsi.cpp(909),ERROR" ID="0xe0d21c6a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:SetNamedPointer has not been implemented in this js engine! @jsi.cpp(919),ERROR" ID="0xe0d21cba" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:GetTypedArrayInfo failed! @jsi.cpp(972),ERROR" ID="0xe0d21e62" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:GetTypedArrayInfo has not been implemented in this js engine! @jsi.cpp(990),ERROR" ID="0xe0d21ef2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CreateTypedArray has not been implemented in this js engine! @jsi.cpp(1045),ERROR" ID="0xe0d220aa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:GetArrayBufferInfo failed! @jsi.cpp(1053),ERROR" ID="0xe0d220ea" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:GetArrayBufferInfo has not been implemented in this js engine! @jsi.cpp(1063),ERROR" ID="0xe0d2213a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CreateArrayBuffer has not been implemented in this js engine! @jsi.cpp(1078),ERROR" ID="0xe0d221b2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueIsArrayBuffer has not been implemented in this js engine! @jsi.cpp(1088),ERROR" ID="0xe0d22202" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueIsTypedArray has not been implemented in this js engine! @jsi.cpp(1098),ERROR" ID="0xe0d22252" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:DefineProperty failed! @jsi.cpp(1107),ERROR" ID="0xe0d2229a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:DefineProperty has not been implemented in this js engine! @jsi.cpp(1134),ERROR" ID="0xe0d22372" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:DefineNamedProperty failed! @jsi.cpp(1142),ERROR" ID="0xe0d223b2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:DefineNamedProperty has not been implemented in this js engine! @jsi.cpp(1151),ERROR" ID="0xe0d223fa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CreateErrorWithCode parameters invalid! @jsi.cpp(1201),ERROR" ID="0xe0d2258a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CreateErrorWithCode error message too long! @jsi.cpp(1206),ERROR" ID="0xe0d225b2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CreateErrorWithCode has not been implemented in this js engine! @jsi.cpp(1219),ERROR" ID="0xe0d2261a" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="JSI:GetGlobalObject has not been implemented in this js engine! @jsi.cpp(33),ERROR" ID="0xe0d4010a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CreateObject has not been implemented in this js engine! @jsi.cpp(43),ERROR" ID="0xe0d4015a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:SetProperty failed! @jsi.cpp(51),ERROR" ID="0xe0d4019a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:SetProperty has not been implemented in this js engine! @jsi.cpp(61),ERROR" ID="0xe0d401ea" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:SetNamedProperty failed! @jsi.cpp(68),ERROR" ID="0xe0d40222" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:SetNamedProperty has not been implemented in this js engine! @jsi.cpp(76),ERROR" ID="0xe0d40262" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:SetNumberProperty failed! @jsi.cpp(83),ERROR" ID="0xe0d4029a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:SetBooleanProperty failed! @jsi.cpp(94),ERROR" ID="0xe0d402f2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:SetStringProperty failed! @jsi.cpp(105),ERROR" ID="0xe0d4034a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:SetStringPropertyWithBufferSize failed! @jsi.cpp(116),ERROR" ID="0xe0d403a2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CreateJerryFuncHelper get function pointer failed! @jsi.cpp(137),ERROR" ID="0xe0d4044a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CreateJerryFuncHelper allocate memory failed! @jsi.cpp(149),ERROR" ID="0xe0d404aa" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CreateFunction failed! @jsi.cpp(166),ERROR" ID="0xe0d40532" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CreateFunction has not been implemented in this js engine! @jsi.cpp(175),ERROR" ID="0xe0d4057a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CreateString has not been implemented in this js engine! @jsi.cpp(188),ERROR" ID="0xe0d405e2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CreateStringWithBufferSize has not been implemented in this js engine! @jsi.cpp(201),ERROR" ID="0xe0d4064a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CreateUndefined has not been implemented in this js engine! @jsi.cpp(210),ERROR" ID="0xe0d40692" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueIsFunction has not been implemented in this js engine! @jsi.cpp(220),ERROR" ID="0xe0d406e2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueIsUndefined has not been implemented in this js engine! @jsi.cpp(230),ERROR" ID="0xe0d40732" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueIsNumber has not been implemented in this js engine! @jsi.cpp(240),ERROR" ID="0xe0d40782" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueIsString has not been implemented in this js engine! @jsi.cpp(250),ERROR" ID="0xe0d407d2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueIsBoolean has not been implemented in this js engine! @jsi.cpp(260),ERROR" ID="0xe0d40822" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueIsNull has not been implemented in this js engine! @jsi.cpp(270),ERROR" ID="0xe0d40872" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueIsObject has not been implemented in this js engine! @jsi.cpp(280),ERROR" ID="0xe0d408c2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueIsError has not been implemented in this js engine! @jsi.cpp(290),ERROR" ID="0xe0d40912" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:JsonStringify failed! @jsi.cpp(298),ERROR" ID="0xe0d40952" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:JsonStringify has not been implemented in this js engine! @jsi.cpp(307),ERROR" ID="0xe0d4099a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:JsonParse failed! @jsi.cpp(315),ERROR" ID="0xe0d409da" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:JsonParse has not been implemented in this js engine! @jsi.cpp(322),ERROR" ID="0xe0d40a12" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:GetProperty failed! @jsi.cpp(330),ERROR" ID="0xe0d40a52" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:GetProperty has not been implemented in this js engine! @jsi.cpp(338),ERROR" ID="0xe0d40a92" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:GetNamedProperty failed! @jsi.cpp(346),ERROR" ID="0xe0d40ad2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:GetNamedProperty has not been implemented in this js engine! @jsi.cpp(355),ERROR" ID="0xe0d40b1a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:GetNumberProperty failed! @jsi.cpp(363),ERROR" ID="0xe0d40b5a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:GetBooleanProperty failed! @jsi.cpp(375),ERROR" ID="0xe0d40bba" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:GetStringProperty failed! @jsi.cpp(387),ERROR" ID="0xe0d40c1a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ReleaseValue has not been implemented in this js engine! @jsi.cpp(403),ERROR" ID="0xe0d40c9a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:GetStringPropertyWithBufferSize failed! @jsi.cpp(410),ERROR" ID="0xe0d40cd2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CallFunction failed! @jsi.cpp(430),ERROR" ID="0xe0d40d72" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CallFunction error returned! @jsi.cpp(439),ERROR" ID="0xe0d40dba" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CallFunction allocate memory failed! @jsi.cpp(446),ERROR" ID="0xe0d40df2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CallFunction error returned! @jsi.cpp(455),ERROR" ID="0xe0d40e3a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CallFunction has not been implemented in this js engine! @jsi.cpp(461),ERROR" ID="0xe0d40e6a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CreateNumber has not been implemented in this js engine! @jsi.cpp(470),ERROR" ID="0xe0d40eb2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CreateNumberNan has not been implemented in this js engine! @jsi.cpp(480),ERROR" ID="0xe0d40f02" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CreateError parameters invalid! @jsi.cpp(555),ERROR" ID="0xe0d4115a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CreateError has not been implemented in this js engine! @jsi.cpp(563),ERROR" ID="0xe0d4119a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:GetErrorType has not been implemented in this js engine! @jsi.cpp(578),ERROR" ID="0xe0d41212" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CreateBoolean has not been implemented in this js engine! @jsi.cpp(588),ERROR" ID="0xe0d41262" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CreateNull has not been implemented in this js engine! @jsi.cpp(598),ERROR" ID="0xe0d412b2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CreateSymbol has not been implemented in this js engine! @jsi.cpp(610),ERROR" ID="0xe0d41312" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueIsSymbol has not been implemented in this js engine! @jsi.cpp(620),ERROR" ID="0xe0d41362" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CreateArray has not been implemented in this js engine! @jsi.cpp(631),ERROR" ID="0xe0d413ba" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:SetPropertyByIndex has not been implemented in this js engine! @jsi.cpp(650),ERROR" ID="0xe0d41452" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueToString params invalid! @jsi.cpp(661),ERROR" ID="0xe0d414aa" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueToString malloc memory for empty char failed! @jsi.cpp(670),ERROR" ID="0xe0d414f2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueToString malloc memory failed! @jsi.cpp(678),ERROR" ID="0xe0d41532" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueToString jerry string to char buffer failed @jsi.cpp(683),ERROR" ID="0xe0d4155a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueToString has not been implemented in this js engine! @jsi.cpp(693),ERROR" ID="0xe0d415aa" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueToStringWithBufferSize params invalid! @jsi.cpp(703),ERROR" ID="0xe0d415fa" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueToStringWithBufferSize malloc memory failed! @jsi.cpp(716),ERROR" ID="0xe0d41662" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueToStringWithBufferSize jerry string to char buffer failed @jsi.cpp(722),ERROR" ID="0xe0d41692" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueToStringWithBufferSize has not been implemented in this js engine! @jsi.cpp(731),ERROR" ID="0xe0d416da" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueToNumber params invalid! @jsi.cpp(742),ERROR" ID="0xe0d41732" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueToNumber has not been implemented in this js engine! @jsi.cpp(747),ERROR" ID="0xe0d4175a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueToBoolean params invalid! @jsi.cpp(757),ERROR" ID="0xe0d417aa" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueToBoolean has not been implemented in this js engine! @jsi.cpp(762),ERROR" ID="0xe0d417d2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:JSIValueToString has not been implemented in this js engine! @jsi.cpp(775),ERROR" ID="0xe0d4183a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:GetArrayLength params invalid! @jsi.cpp(785),ERROR" ID="0xe0d4188a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:GetArrayLength has not been implemented in this js engine! @jsi.cpp(790),ERROR" ID="0xe0d418b2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:GetPropertyByIndex has not been implemented in this js engine! @jsi.cpp(801),ERROR" ID="0xe0d4190a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:GetObjectKeys failed! @jsi.cpp(809),ERROR" ID="0xe0d4194a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:GetObjectKeys has not been implemented in this js engine! @jsi.cpp(816),ERROR" ID="0xe0d41982" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:GetJSHeapStatus has not been implemented in this js engine! @jsi.cpp(833),ERROR" ID="0xe0d41a0a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueIsArray has not been implemented in this js engine! @jsi.cpp(843),ERROR" ID="0xe0d41a5a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:AcquireValue has not been implemented in this js engine! @jsi.cpp(854),ERROR" ID="0xe0d41ab2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:SetModuleAPI failed! @jsi.cpp(862),ERROR" ID="0xe0d41af2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:SetOnDestroy failed! @jsi.cpp(873),ERROR" ID="0xe0d41b4a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:SetOnDestroy has not been implemented in this js engine! @jsi.cpp(880),ERROR" ID="0xe0d41b82" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:SetOnTerminate failed! @jsi.cpp(892),ERROR" ID="0xe0d41be2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:SetNamedPointer failed! @jsi.cpp(909),ERROR" ID="0xe0d41c6a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:SetNamedPointer has not been implemented in this js engine! @jsi.cpp(919),ERROR" ID="0xe0d41cba" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:GetTypedArrayInfo failed! @jsi.cpp(972),ERROR" ID="0xe0d41e62" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:GetTypedArrayInfo has not been implemented in this js engine! @jsi.cpp(990),ERROR" ID="0xe0d41ef2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CreateTypedArray has not been implemented in this js engine! @jsi.cpp(1045),ERROR" ID="0xe0d420aa" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:GetArrayBufferInfo failed! @jsi.cpp(1053),ERROR" ID="0xe0d420ea" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:GetArrayBufferInfo has not been implemented in this js engine! @jsi.cpp(1063),ERROR" ID="0xe0d4213a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CreateArrayBuffer has not been implemented in this js engine! @jsi.cpp(1078),ERROR" ID="0xe0d421b2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueIsArrayBuffer has not been implemented in this js engine! @jsi.cpp(1088),ERROR" ID="0xe0d42202" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueIsTypedArray has not been implemented in this js engine! @jsi.cpp(1098),ERROR" ID="0xe0d42252" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:DefineProperty failed! @jsi.cpp(1107),ERROR" ID="0xe0d4229a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:DefineProperty has not been implemented in this js engine! @jsi.cpp(1134),ERROR" ID="0xe0d42372" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:DefineNamedProperty failed! @jsi.cpp(1142),ERROR" ID="0xe0d423b2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:DefineNamedProperty has not been implemented in this js engine! @jsi.cpp(1151),ERROR" ID="0xe0d423fa" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CreateErrorWithCode parameters invalid! @jsi.cpp(1201),ERROR" ID="0xe0d4258a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CreateErrorWithCode error message too long! @jsi.cpp(1206),ERROR" ID="0xe0d425b2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CreateErrorWithCode has not been implemented in this js engine! @jsi.cpp(1219),ERROR" ID="0xe0d4261a" />
                        </MSG_LOG>
\ No newline at end of file
index b3843de..1c84d85 100644 (file)
@@ -1,90 +1,94 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg6" NAME="generate addr: ****%02x%02x%02x%02x name: %s sp-ret: %d @local_device_manager.c(238),INFO" ID="0xd8080775" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="local dev info write error! ret 0x%x @local_device_manager.c(263),ERROR" ID="0xd808083a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="deinit bt stack @local_device_manager.c(298),INFO" ID="0xd8080955" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="adv id is not active, please set param first. @local_device_manager.c(374),ERROR" ID="0xd8080bb2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] ble gap conn state change fail. @local_device_manager.c(393),ERROR" ID="0xd8080c4a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] ble gap conn addr memcpy fail. @local_device_manager.c(402),ERROR" ID="0xd8080c92" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble smp can not find connect node by handle @local_device_manager.c(430),ERROR" ID="0xd8080d72" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] ble gap conn addr memcpy fail. @local_device_manager.c(437),ERROR" ID="0xd8080daa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="adv id is not active, please set param first. @local_device_manager.c(458),ERROR" ID="0xd8080e52" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble enable err,B core may be not calibration end and not notify A Core  @local_device_manager.c(482),ERROR" ID="0xd8080f12" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="bt init err ret = %08x @local_device_manager.c(513),ERROR" ID="0xd808100a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="unhandled msg id %x @local_device_manager.c(610),WARNING" ID="0xd8081313" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="inquiry complete @local_device_manager.c(618),INFO" ID="0xd8081355" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="dev_hdl:0x%08x @local_device_manager.c(625),INFO" ID="0xd808138d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="dev_hdl:0x%08x @local_device_manager.c(639),INFO" ID="0xd80813fd" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="btsrv_connection_request_ind_callback: memecpy error @local_device_manager.c(653),ERROR" ID="0xd808146a" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="addr:****%02x%02x%02x%02x @local_device_manager.c(658),INFO" ID="0xd8081495" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="dev_hdl:0x%08x @local_device_manager.c(668),INFO" ID="0xd80814e5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s errr @local_device_manager.c(682),ERROR" ID="0xd8081552" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc errr @local_device_manager.c(696),ERROR" ID="0xd80815c2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s errr @local_device_manager.c(702),ERROR" ID="0xd80815f2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc errr @local_device_manager.c(731),ERROR" ID="0xd80816da" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s errr @local_device_manager.c(737),ERROR" ID="0xd808170a" />
-                       <MSG STRUCTURE="diag_log_msg8" NAME="conn_hdl: %08x event: %04x role: %x result: %x dev_hdl: %x svc_hdl: %x svc_class: %x duration: %d @local_device_manager.c(751),INFO" ID="0xd808177d" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="received_bytes: %d sent_bytes: %d @local_device_manager.c(754),INFO" ID="0xd8081795" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="unhandled service class 0x%x @local_device_manager.c(780),WARNING" ID="0xd8081863" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="dev_hdl: %08x num_value: %06d @local_device_manager.c(803),INFO" ID="0xd808191d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="dev_hdl: 0x%08x @local_device_manager.c(810),INFO" ID="0xd8081955" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="dev_hdl: 0x%08x @local_device_manager.c(817),INFO" ID="0xd808198d" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="dev_hdl: %08x num_value: %06d @local_device_manager.c(823),INFO" ID="0xd80819bd" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="dev_hdl: %08x reason: %x @local_device_manager.c(837),INFO" ID="0xd8081a2d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="white_list_size:%d  @local_device_manager.c(843),INFO" ID="0xd8081a5d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="transmit_power_level:%d  @local_device_manager.c(848),INFO" ID="0xd8081a85" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="register err id: %x ret: %x @local_device_manager.c(879),ERROR" ID="0xd8081b7a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="bt enable err,B core may be not calibration end and not notify A Core  @local_device_manager.c(914),ERROR" ID="0xd8081c92" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="bt_init err ret = %08x @local_device_manager.c(943),ERROR" ID="0xd8081d7a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="buff is't long enough, need length:%d. @local_device_manager.c(1050),ERROR" ID="0xd80820d2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="get local name memcpy fail. @local_device_manager.c(1054),ERROR" ID="0xd80820f2" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="name: %s, length: %d @local_device_manager.c(1063),INFO" ID="0xd808213d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="failed: bt not enabled @local_device_manager.c(1078),INFO" ID="0xd80821b5" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="local name null or length not match, len: %d @local_device_manager.c(1082),INFO" ID="0xd80821d5" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="returns error ret: %x @local_device_manager.c(1088),WARNING" ID="0xd8082203" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="set result name: &quot;%s&quot; name_len: %d get_re: %x @local_device_manager.c(1094),INFO" ID="0xd8082235" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="gap_remove_all_pairs fail @local_device_manager.c(1154),ERROR" ID="0xd8082412" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="gap ble remove all pairs fail @local_device_manager.c(1160),ERROR" ID="0xd8082442" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="diable_bt_ret(errcode_t): %x @local_device_manager.c(1167),INFO" ID="0xd808247d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="disable_ble_ret(errcode_t): %x @local_device_manager.c(1172),INFO" ID="0xd80824a5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="set discovery data pointer is null. @local_device_manager.c(1203),ERROR" ID="0xd808259a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="adv_id(%d) advertising, please stop first. @local_device_manager.c(1218),ERROR" ID="0xd8082612" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="adv data alloc faild, length:%d @local_device_manager.c(1231),ERROR" ID="0xd808267a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[Error] gap_ble_set_adv_data adv data memcpy_s fail @local_device_manager.c(1235),ERROR" ID="0xd808269a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="scan rsp data alloc faild, length:%d @local_device_manager.c(1244),ERROR" ID="0xd80826e2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[Error] gap_ble_set_adv_data scan rsp data memcpy_s fail @local_device_manager.c(1248),ERROR" ID="0xd8082702" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="adv_id(%d) advertising, please stop first. @local_device_manager.c(1284),ERROR" ID="0xd8082822" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[Error] gap ble set adv param memcpy_s fail @local_device_manager.c(1296),ERROR" ID="0xd8082882" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[Error] gap ble set adv param memcpy_s fail @local_device_manager.c(1310),ERROR" ID="0xd80828f2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble gap set sec param error param NULL @local_device_manager.c(1332),ERROR" ID="0xd80829a2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble gap set sec param error param NULL @local_device_manager.c(1337),ERROR" ID="0xd80829ca" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[Error] gap set adv data memcpy_s fail @local_device_manager.c(1361),ERROR" ID="0xd8082a8a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[Error] gap set scan rsp data memcpy_s fail @local_device_manager.c(1368),ERROR" ID="0xd8082ac2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[Error] btsrv_gap_set_adv_param memcpy_s fail @local_device_manager.c(1387),ERROR" ID="0xd8082b5a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[Error] gap set adv param memcpy_s fail @local_device_manager.c(1392),ERROR" ID="0xd8082b82" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble gap ext adv rpt memcpy fail @local_device_manager.c(1412),ERROR" ID="0xd8082c22" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble gap ext adv rpt memcpy fail @local_device_manager.c(1427),ERROR" ID="0xd8082c9a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble gap adv set terminated cbk param error @local_device_manager.c(1439),ERROR" ID="0xd8082cfa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble enable cbk param error @local_device_manager.c(1450),ERROR" ID="0xd8082d52" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble read remote rssi cbk param error @local_device_manager.c(1461),ERROR" ID="0xd8082daa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble conn param update cbk param error @local_device_manager.c(1477),ERROR" ID="0xd8082e2a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble gap conn param malloc fail @local_device_manager.c(1489),ERROR" ID="0xd8082e8a" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="ble conn param update cbk interval:%x, latency:%x, timeout:%x @local_device_manager.c(1496),INFO" ID="0xd8082ec5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="adv id is not active, please set param first. @local_device_manager.c(1530),ERROR" ID="0xd8082fd2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="adv id(%d) is discoverying, please stop first. @local_device_manager.c(1534),ERROR" ID="0xd8082ff2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="adv param alloc fail @local_device_manager.c(1543),ERROR" ID="0xd808303a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="adv id is not active, please set param first. @local_device_manager.c(1576),ERROR" ID="0xd8083142" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="no advertising in progress or advertising for adv_id(%d). No advertising for adv_id(%d). @local_device_manager.c(1582),ERROR" ID="0xd8083172" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="mc sdk ble stop adv atb failed  @local_device_manager.c(1588),ERROR" ID="0xd80831a2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="scanning in process, please stop first. @local_device_manager.c(1622),ERROR" ID="0xd80832b2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="scanning already stopped. @local_device_manager.c(1654),ERROR" ID="0xd80833b2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble stop extern scan ret: %#x @local_device_manager.c(1658),INFO" ID="0xd80833d5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble set phy node == NULL @local_device_manager.c(1681),ERROR" ID="0xd808348a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble set phy memcpy fail @local_device_manager.c(1686),ERROR" ID="0xd80834b2" />
-                       <MSG STRUCTURE="diag_log_msg5" NAME="ble general set phy hdl:%x all:%x rx:%x tx:%x op:%x. @local_device_manager.c(1691),INFO" ID="0xd80834dd" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble set phy ret: %#x @local_device_manager.c(1694),ERROR" ID="0xd80834f2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble set data length node == NULL @local_device_manager.c(1715),ERROR" ID="0xd808359a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble set data length memcpy fail @local_device_manager.c(1720),ERROR" ID="0xd80835c2" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="ble general set len hdl:%x maxoct:%x maxtime:%x @local_device_manager.c(1725),INFO" ID="0xd80835ed" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble set len ret: %#x @local_device_manager.c(1728),ERROR" ID="0xd8083602" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="bts sert log type levle:%x @local_device_manager.c(1746),INFO" ID="0xd8083695" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="g_bts_feature_bitmap bt_auto_reconnect_closed:%d. @local_device_manager.c(1767),ERROR" ID="0xd808373a" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="list node create fail! @local_device_manager.c(118),ERROR" ID="0xd80803b2" />
+                       <MSG STRUCTURE="diag_log_msg6" NAME="generate addr: ****%02x%02x%02x%02x name: %s sp-ret: %d @local_device_manager.c(242),INFO" ID="0xd8080795" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="local dev info write error! ret 0x%x @local_device_manager.c(267),ERROR" ID="0xd808085a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="deinit bt stack @local_device_manager.c(303),INFO" ID="0xd808097d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="adv id is not active, please set param first. @local_device_manager.c(379),ERROR" ID="0xd8080bda" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] ble gap conn state change fail. @local_device_manager.c(398),ERROR" ID="0xd8080c72" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] ble gap conn addr memcpy fail. @local_device_manager.c(407),ERROR" ID="0xd8080cba" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble smp can not find connect node by handle @local_device_manager.c(437),ERROR" ID="0xd8080daa" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] ble gap conn addr memcpy fail. @local_device_manager.c(446),ERROR" ID="0xd8080df2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="adv id is not active, please set param first. @local_device_manager.c(467),ERROR" ID="0xd8080e9a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble enable err,B core may be not calibration end and not notify A Core  @local_device_manager.c(491),ERROR" ID="0xd8080f5a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="bt init err ret = %08x @local_device_manager.c(522),ERROR" ID="0xd8081052" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="unhandled msg id %x @local_device_manager.c(620),WARNING" ID="0xd8081363" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="inquiry complete @local_device_manager.c(628),INFO" ID="0xd80813a5" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="dev_hdl:0x%08x @local_device_manager.c(635),INFO" ID="0xd80813dd" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="dev_hdl:0x%08x @local_device_manager.c(649),INFO" ID="0xd808144d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="btsrv_connection_request_ind_callback: memecpy error @local_device_manager.c(663),ERROR" ID="0xd80814ba" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="addr:****%02x%02x%02x%02x @local_device_manager.c(668),INFO" ID="0xd80814e5" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="dev_hdl:0x%08x @local_device_manager.c(678),INFO" ID="0xd8081535" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s errr @local_device_manager.c(693),ERROR" ID="0xd80815aa" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc errr @local_device_manager.c(707),ERROR" ID="0xd808161a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s errr @local_device_manager.c(713),ERROR" ID="0xd808164a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc errr @local_device_manager.c(742),ERROR" ID="0xd8081732" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s errr @local_device_manager.c(748),ERROR" ID="0xd8081762" />
+                       <MSG STRUCTURE="diag_log_msg8" NAME="conn_hdl: %08x event: %04x role: %x result: %x dev_hdl: %x svc_hdl: %x svc_class: %x duration: %d @local_device_manager.c(762),INFO" ID="0xd80817d5" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="received_bytes: %d sent_bytes: %d @local_device_manager.c(765),INFO" ID="0xd80817ed" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="unhandled service class 0x%x @local_device_manager.c(791),WARNING" ID="0xd80818bb" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="dev_hdl: %08x num_value: %06d @local_device_manager.c(814),INFO" ID="0xd8081975" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="dev_hdl: 0x%08x @local_device_manager.c(821),INFO" ID="0xd80819ad" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="dev_hdl: 0x%08x @local_device_manager.c(828),INFO" ID="0xd80819e5" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="dev_hdl: %08x num_value: %06d @local_device_manager.c(834),INFO" ID="0xd8081a15" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="dev_hdl: %08x reason: %x @local_device_manager.c(848),INFO" ID="0xd8081a85" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="white_list_size:%d  @local_device_manager.c(854),INFO" ID="0xd8081ab5" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="transmit_power_level:%d  @local_device_manager.c(859),INFO" ID="0xd8081add" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="register err id: %x ret: %x @local_device_manager.c(890),ERROR" ID="0xd8081bd2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="bt enable err,B core may be not calibration end and not notify A Core  @local_device_manager.c(925),ERROR" ID="0xd8081cea" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="bt_init err ret = %08x @local_device_manager.c(954),ERROR" ID="0xd8081dd2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="buff is't long enough, need length:%d. @local_device_manager.c(1062),ERROR" ID="0xd8082132" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="get local name memcpy fail. @local_device_manager.c(1066),ERROR" ID="0xd8082152" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="name: %s, length: %d @local_device_manager.c(1075),INFO" ID="0xd808219d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="failed: bt not enabled @local_device_manager.c(1090),INFO" ID="0xd8082215" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="local name null or length not match, len: %d @local_device_manager.c(1094),INFO" ID="0xd8082235" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="returns error ret: %x @local_device_manager.c(1100),WARNING" ID="0xd8082263" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="set result name: &quot;%s&quot; name_len: %d get_re: %x @local_device_manager.c(1106),INFO" ID="0xd8082295" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="gap_remove_all_pairs fail @local_device_manager.c(1166),ERROR" ID="0xd8082472" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="gap ble remove all pairs fail @local_device_manager.c(1172),ERROR" ID="0xd80824a2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="diable_bt_ret(errcode_t): %x @local_device_manager.c(1179),INFO" ID="0xd80824dd" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="disable_ble_ret(errcode_t): %x @local_device_manager.c(1184),INFO" ID="0xd8082505" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="set discovery data pointer is null. @local_device_manager.c(1215),ERROR" ID="0xd80825fa" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="adv_id(%d) advertising, please stop first. @local_device_manager.c(1233),ERROR" ID="0xd808268a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="adv data alloc faild, length:%d @local_device_manager.c(1246),ERROR" ID="0xd80826f2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[Error] gap_ble_set_adv_data adv data memcpy_s fail @local_device_manager.c(1250),ERROR" ID="0xd8082712" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="scan rsp data alloc faild, length:%d @local_device_manager.c(1259),ERROR" ID="0xd808275a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[Error] gap_ble_set_adv_data scan rsp data memcpy_s fail @local_device_manager.c(1263),ERROR" ID="0xd808277a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="adv_id(%d) advertising, please stop first. @local_device_manager.c(1302),ERROR" ID="0xd80828b2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[Error] gap ble set adv param memcpy_s fail @local_device_manager.c(1314),ERROR" ID="0xd8082912" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[Error] gap ble set adv param memcpy_s fail @local_device_manager.c(1328),ERROR" ID="0xd8082982" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble gap set sec param error param NULL @local_device_manager.c(1350),ERROR" ID="0xd8082a32" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble gap set sec param error param NULL @local_device_manager.c(1355),ERROR" ID="0xd8082a5a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="bt has page scanning enabled. @local_device_manager.c(1379),ERROR" ID="0xd8082b1a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="bt has an ACL connection. @local_device_manager.c(1385),ERROR" ID="0xd8082b4a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[CTKD] please set ble secure connection enable,current_sc=%d. @local_device_manager.c(1402),ERROR" ID="0xd8082bd2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[Error] gap set adv data memcpy_s fail @local_device_manager.c(1425),ERROR" ID="0xd8082c8a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[Error] gap set scan rsp data memcpy_s fail @local_device_manager.c(1432),ERROR" ID="0xd8082cc2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[Error] btsrv_gap_set_adv_param memcpy_s fail @local_device_manager.c(1451),ERROR" ID="0xd8082d5a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[Error] gap set adv param memcpy_s fail @local_device_manager.c(1456),ERROR" ID="0xd8082d82" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble gap ext adv rpt memcpy fail @local_device_manager.c(1476),ERROR" ID="0xd8082e22" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble gap ext adv rpt memcpy fail @local_device_manager.c(1491),ERROR" ID="0xd8082e9a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble gap adv set terminated cbk param error @local_device_manager.c(1503),ERROR" ID="0xd8082efa" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble enable cbk param error @local_device_manager.c(1514),ERROR" ID="0xd8082f52" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble read remote rssi cbk param error @local_device_manager.c(1525),ERROR" ID="0xd8082faa" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble conn param update cbk param error @local_device_manager.c(1541),ERROR" ID="0xd808302a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble gap conn param malloc fail @local_device_manager.c(1555),ERROR" ID="0xd808309a" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="ble conn param update cbk interval:%x, latency:%x, timeout:%x @local_device_manager.c(1562),INFO" ID="0xd80830d5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="adv id is not active, please set param first. @local_device_manager.c(1596),ERROR" ID="0xd80831e2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="adv id(%d) is discoverying, please stop first. @local_device_manager.c(1600),ERROR" ID="0xd8083202" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="adv param alloc fail @local_device_manager.c(1609),ERROR" ID="0xd808324a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="adv id is not active, please set param first. @local_device_manager.c(1642),ERROR" ID="0xd8083352" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="no advertising in progress or advertising for adv_id(%d). No advertising for adv_id(%d). @local_device_manager.c(1648),ERROR" ID="0xd8083382" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="mc sdk ble stop adv atb failed  @local_device_manager.c(1654),ERROR" ID="0xd80833b2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="scanning in process, please stop first. @local_device_manager.c(1688),ERROR" ID="0xd80834c2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="scanning already stopped. @local_device_manager.c(1720),ERROR" ID="0xd80835c2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble stop extern scan ret: %#x @local_device_manager.c(1724),INFO" ID="0xd80835e5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble set phy node == NULL @local_device_manager.c(1749),ERROR" ID="0xd80836aa" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble set phy memcpy fail @local_device_manager.c(1755),ERROR" ID="0xd80836da" />
+                       <MSG STRUCTURE="diag_log_msg5" NAME="ble general set phy hdl:%x all:%x rx:%x tx:%x op:%x. @local_device_manager.c(1761),INFO" ID="0xd808370d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble set phy ret: %#x @local_device_manager.c(1764),ERROR" ID="0xd8083722" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble set data length node == NULL @local_device_manager.c(1786),ERROR" ID="0xd80837d2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble set data length memcpy fail @local_device_manager.c(1792),ERROR" ID="0xd8083802" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="ble general set len hdl:%x maxoct:%x maxtime:%x @local_device_manager.c(1798),INFO" ID="0xd8083835" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble set len ret: %#x @local_device_manager.c(1801),ERROR" ID="0xd808384a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="bts sert log type levle:%x @local_device_manager.c(1819),INFO" ID="0xd80838dd" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="g_bts_feature_bitmap bt_auto_reconnect_closed:%d. @local_device_manager.c(1840),ERROR" ID="0xd8083982" />
                        </MSG_LOG>
\ No newline at end of file
index 7e1f35e..b7a750e 100644 (file)
@@ -3,20 +3,22 @@
                        <MSG STRUCTURE="diag_log_msg2" NAME="[ACore][Error] write Property fail id:0x%x, ret:0x%x @mpc_trans.c(87),ERROR" ID="0xd86602ba" />
                        <MSG STRUCTURE="diag_log_msg2" NAME="[ACore] write Property id:0x%x,ret:0x%x @mpc_trans.c(96),INFO" ID="0xd8660305" />
                        <MSG STRUCTURE="diag_log_msg2" NAME="[ACore][Error] bt acore task framek write property fail id:%d,ret:%x @mpc_trans.c(101),ERROR" ID="0xd866032a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] property.id = 0x%x @mpc_trans.c(122),INFO" ID="0xd86603d5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] acore task init. @mpc_trans.c(134),INFO" ID="0xd8660435" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore][Warning] acore task property handler ret:%d. @mpc_trans.c(149),INFO" ID="0xd86604ad" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="[ACore] mpc send msg to bth len:%d result:0x%x @mpc_trans.c(153),INFO" ID="0xd86604cd" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore][Error] ipc data from Core:%d payload null @mpc_trans.c(172),ERROR" ID="0xd8660562" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore][Error] bt core Calibration not end @mpc_trans.c(180),ERROR" ID="0xd86605a2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore][Error] ipc data from unknow core, src id %d @mpc_trans.c(184),ERROR" ID="0xd86605c2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore][Error] bt trans, msg get fail ret:%x @mpc_trans.c(211),ERROR" ID="0xd866069a" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="[ACore][Error] rec mcu error data, tid:0x%x, sof:0x%x, len:0x%04x, opcode:0x%04x @mpc_trans.c(232),ERROR" ID="0xd8660742" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="[ACore][Error] rec data malloc fail opcode:0x%04x, length:(0x%04x) @mpc_trans.c(240),ERROR" ID="0xd8660782" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="[ACore][Error] rec data memcpy_s fail opcode:0x%04x, length:(0x%04x) @mpc_trans.c(246),ERROR" ID="0xd86607b2" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="[ACore][Error] rec mcu write property fail,tid:0x%x,sof:0x%x,len:0x%04x,opcode:0x%04x @mpc_trans.c(254),ERROR" ID="0xd86607f2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore][Error] ipc data from Core:%d payload null @mpc_trans.c(268),ERROR" ID="0xd8660862" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore][Error] ipc data from BT Core error = %d @mpc_trans.c(280),ERROR" ID="0xd86608c2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore][Error] ipc data data len err = %d @mpc_trans.c(284),ERROR" ID="0xd86608e2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore][Error] ipc data from unknow core, src id %d @mpc_trans.c(288),ERROR" ID="0xd8660902" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore][Error] write property err times:%u. @mpc_trans.c(105),ERROR" ID="0xd866034a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] property.id = 0x%x @mpc_trans.c(124),INFO" ID="0xd86603e5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] acore task init. @mpc_trans.c(136),INFO" ID="0xd8660445" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore][Warning]ipc data send retry opcode:0x%x. @mpc_trans.c(151),INFO" ID="0xd86604bd" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore][Warning]ipc data send err opcode:0x%x. @mpc_trans.c(156),INFO" ID="0xd86604e5" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[ACore] mpc send msg to bth len:%d result:0x%x @mpc_trans.c(161),INFO" ID="0xd866050d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore][Error] ipc data from Core:%d payload null @mpc_trans.c(181),ERROR" ID="0xd86605aa" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore][Error] bt core Calibration not end @mpc_trans.c(189),ERROR" ID="0xd86605ea" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore][Error] ipc data from unknow core, src id %d @mpc_trans.c(193),ERROR" ID="0xd866060a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore][Error] bt trans, msg get fail ret:%x @mpc_trans.c(220),ERROR" ID="0xd86606e2" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="[ACore][Error] rec mcu error data, tid:0x%x, sof:0x%x, len:0x%04x, opcode:0x%04x @mpc_trans.c(241),ERROR" ID="0xd866078a" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[ACore][Error] rec data malloc fail opcode:0x%04x, length:(0x%04x) @mpc_trans.c(249),ERROR" ID="0xd86607ca" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[ACore][Error] rec data memcpy_s fail opcode:0x%04x, length:(0x%04x) @mpc_trans.c(255),ERROR" ID="0xd86607fa" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="[ACore][Error] rec mcu write property fail,tid:0x%x,sof:0x%x,len:0x%04x,opcode:0x%04x @mpc_trans.c(263),ERROR" ID="0xd866083a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore][Error] ipc data from Core:%d payload null @mpc_trans.c(277),ERROR" ID="0xd86608aa" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore][Error] ipc data from BT Core error = %d @mpc_trans.c(289),ERROR" ID="0xd866090a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore][Error] ipc data data len err = %d @mpc_trans.c(293),ERROR" ID="0xd866092a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore][Error] ipc data from unknow core, src id %d @mpc_trans.c(297),ERROR" ID="0xd866094a" />
                        </MSG_LOG>
\ No newline at end of file
index fee5236..f7d415b 100644 (file)
@@ -1,4 +1,4 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg1" NAME="ACELite version: %s @platform_adapter.cpp(34),DBG" ID="0xe1100116" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ACELite commit: %s @platform_adapter.cpp(35),DBG" ID="0xe110011e" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ACELite build stamp: %s @platform_adapter.cpp(36),DBG" ID="0xe1100126" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg1" NAME="ACELite version: %s @platform_adapter.cpp(34),DBG" ID="0xe1140116" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ACELite commit: %s @platform_adapter.cpp(35),DBG" ID="0xe114011e" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ACELite build stamp: %s @platform_adapter.cpp(36),DBG" ID="0xe1140126" />
                        </MSG_LOG>
\ No newline at end of file
index b4df39f..57174de 100644 (file)
@@ -1,72 +1,81 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="osal_mutex_init in g_btsrv_rmt_dev_list_lock failed @remote_device_manager.c(100),ERROR" ID="0xd80a0322" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="btsrv get remote paired phone node, acquire rmt dev list lock failed. @remote_device_manager.c(137),ERROR" ID="0xd80a044a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc fail @remote_device_manager.c(157),ERROR" ID="0xd80a04ea" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="get paired info fail @remote_device_manager.c(162),WARNING" ID="0xd80a0513" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="get paired real len fail @remote_device_manager.c(167),WARNING" ID="0xd80a053b" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="create node error @remote_device_manager.c(175),ERROR" ID="0xd80a057a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy error! @remote_device_manager.c(179),ERROR" ID="0xd80a059a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s error! @remote_device_manager.c(205),ERROR" ID="0xd80a066a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="paired dev info write error! ret 0x%x @remote_device_manager.c(214),ERROR" ID="0xd80a06b2" />
-                       <MSG STRUCTURE="diag_log_msg10" NAME="addr: ****%02x%02x%02x%02x [little endian: %02x%02x%02x%02x**** ] name: %s hdl: %x @remote_device_manager.c(229),INFO" ID="0xd80a072d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="create node error @remote_device_manager.c(233),ERROR" ID="0xd80a074a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc fail @remote_device_manager.c(259),ERROR" ID="0xd80a081a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy fail @remote_device_manager.c(264),ERROR" ID="0xd80a0842" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc fail @remote_device_manager.c(293),ERROR" ID="0xd80a092a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy fail @remote_device_manager.c(300),ERROR" ID="0xd80a0962" />
-                       <MSG STRUCTURE="diag_log_msg5" NAME="addr: ****%02x%02x%02x%02x hdl: %x @remote_device_manager.c(306),WARNING" ID="0xd80a0993" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="btsrv add remote dev node, acquire rmt dev list lock failed. @remote_device_manager.c(310),ERROR" ID="0xd80a09b2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="btsrv get remote dev node, acquire rmt dev list lock failed. @remote_device_manager.c(323),ERROR" ID="0xd80a0a1a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="btsrv clear remtoe dev list, acquire rmt dev list lock failed. @remote_device_manager.c(369),ERROR" ID="0xd80a0b8a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="btsrv set remote dev status found 2 none, acquire rmt dev list lock failed. @remote_device_manager.c(407),ERROR" ID="0xd80a0cba" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="btsrv dfx show remote dev list, acquire rmt dev list lock failed. @remote_device_manager.c(434),ERROR" ID="0xd80a0d92" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="show remote device list: @remote_device_manager.c(440),INFO" ID="0xd80a0dc5" />
-                       <MSG STRUCTURE="diag_log_msg9" NAME="| %-4s | %-32s | %-12s | %-16s | %-8s | %-8s | %-8s | %-8s | %-48s | @remote_device_manager.c(446),INFO" ID="0xd80a0df5" />
-                       <MSG STRUCTURE="diag_log_msg12" NAME="| %-4d | %-32s | ****%02x%02x%02x%02x | %-16x | %-8d | %-8d | %-8d | %-8d | %-48s | @remote_device_manager.c(462),INFO" ID="0xd80a0e75" />
-                       <MSG STRUCTURE="diag_log_msg6" NAME="| %-4s | %-32s | %-12s | %-16s | %-8s | %-8s | @remote_device_manager.c(469),INFO" ID="0xd80a0ead" />
-                       <MSG STRUCTURE="diag_log_msg9" NAME="| %-4d | %-32s | ****%02x%02x%02x%02x | %-16x | %-8d | %-8d | @remote_device_manager.c(476),INFO" ID="0xd80a0ee5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="show remote device list end! @remote_device_manager.c(484),INFO" ID="0xd80a0f25" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="addr: ****%02X%02X%02X%02X @remote_device_manager.c(492),INFO" ID="0xd80a0f65" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="not in remote list @remote_device_manager.c(501),INFO" ID="0xd80a0fad" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="not have key status: %d have_key: %d @remote_device_manager.c(507),INFO" ID="0xd80a0fdd" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s error @remote_device_manager.c(513),ERROR" ID="0xd80a100a" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="addr: ****%02X%02X%02X%02X  @remote_device_manager.c(538),INFO" ID="0xd80a10d5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="not in remote list @remote_device_manager.c(543),WARNING" ID="0xd80a10fb" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy error @remote_device_manager.c(550),ERROR" ID="0xd80a1132" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc fail @remote_device_manager.c(562),ERROR" ID="0xd80a1192" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy fail @remote_device_manager.c(567),ERROR" ID="0xd80a11ba" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="dev_hdl: %08x result: %02x @remote_device_manager.c(589),INFO" ID="0xd80a126d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="find/add remote device failed @remote_device_manager.c(614),WARNING" ID="0xd80a1333" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="get remote device name fail. ret: %x  @remote_device_manager.c(629),WARNING" ID="0xd80a13ab" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="get remote device name success. name: %s name_len: %d @remote_device_manager.c(634),INFO" ID="0xd80a13d5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc tmp_addr fail @remote_device_manager.c(638),ERROR" ID="0xd80a13f2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc tmp_name fail @remote_device_manager.c(642),ERROR" ID="0xd80a1412" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy fail @remote_device_manager.c(648),ERROR" ID="0xd80a1442" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="send msg fail. %x @remote_device_manager.c(655),ERROR" ID="0xd80a147a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="dev_hdl: %x @remote_device_manager.c(663),INFO" ID="0xd80a14bd" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="acl disconnected. dev_hdl: %x @remote_device_manager.c(665),INFO" ID="0xd80a14cd" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="dev not found @remote_device_manager.c(678),INFO" ID="0xd80a1535" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="find node fail @remote_device_manager.c(689),WARNING" ID="0xd80a158b" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="memcpy error! last_len: %d cur_len: %d cpy_len: %d ret: %x @remote_device_manager.c(700),ERROR" ID="0xd80a15e2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc fail @remote_device_manager.c(707),ERROR" ID="0xd80a161a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy fail @remote_device_manager.c(712),ERROR" ID="0xd80a1642" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="get pair devices num fail ret = %d @remote_device_manager.c(765),ERROR" ID="0xd80a17ea" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="get pair devices fail ret = %d @remote_device_manager.c(780),ERROR" ID="0xd80a1862" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="gap get paired devices list, acquire rmt dev list lock failed. @remote_device_manager.c(801),ERROR" ID="0xd80a190a" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="num error! i: %d *number: %d @remote_device_manager.c(830),ERROR" ID="0xd80a19f2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="get pair devices num fail ret = %d @remote_device_manager.c(869),ERROR" ID="0xd80a1b2a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="btsdk_disconnect_acl_by_handle ret: %x @remote_device_manager.c(888),INFO" ID="0xd80a1bc5" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="btsdk_un_pair_device ret: %x @remote_device_manager.c(891),INFO" ID="0xd80a1bdd" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc fail @remote_device_manager.c(895),ERROR" ID="0xd80a1bfa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy fail @remote_device_manager.c(899),ERROR" ID="0xd80a1c1a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="acquire rmt dev list lock failed. @remote_device_manager.c(927),ERROR" ID="0xd80a1cfa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="gap remove all pairs, acquire rmt dev list lock failed. @remote_device_manager.c(955),ERROR" ID="0xd80a1dda" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="remove pair device fail @remote_device_manager.c(987),ERROR" ID="0xd80a1eda" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="remove pair all devices key fail @remote_device_manager.c(997),ERROR" ID="0xd80a1f2a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="disconnect all devices fail @remote_device_manager.c(1001),ERROR" ID="0xd80a1f4a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc fail @remote_device_manager.c(1032),ERROR" ID="0xd80a2042" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy fail @remote_device_manager.c(1037),ERROR" ID="0xd80a206a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="dev not found @remote_device_manager.c(1046),INFO" ID="0xd80a20b5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="dev not found @remote_device_manager.c(1069),INFO" ID="0xd80a216d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy fail @remote_device_manager.c(1088),INFO" ID="0xd80a2205" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="dev not found @remote_device_manager.c(1112),INFO" ID="0xd80a22c5" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="osal_mutex_init in g_btsrv_rmt_dev_list_lock failed @remote_device_manager.c(124),ERROR" ID="0xd80a03e2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="btsrv get remote paired phone node, acquire rmt dev list lock failed. @remote_device_manager.c(161),ERROR" ID="0xd80a050a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc fail @remote_device_manager.c(181),ERROR" ID="0xd80a05aa" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="get paired info fail @remote_device_manager.c(186),WARNING" ID="0xd80a05d3" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="get paired real len fail @remote_device_manager.c(191),WARNING" ID="0xd80a05fb" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="create node error @remote_device_manager.c(199),ERROR" ID="0xd80a063a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy error! @remote_device_manager.c(203),ERROR" ID="0xd80a065a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s error! @remote_device_manager.c(229),ERROR" ID="0xd80a072a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="paired dev info write error! ret 0x%x @remote_device_manager.c(238),ERROR" ID="0xd80a0772" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="node is null @remote_device_manager.c(245),ERROR" ID="0xd80a07aa" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc fail @remote_device_manager.c(250),ERROR" ID="0xd80a07d2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy fail @remote_device_manager.c(254),ERROR" ID="0xd80a07f2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="node is null @remote_device_manager.c(266),ERROR" ID="0xd80a0852" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc fail @remote_device_manager.c(271),ERROR" ID="0xd80a087a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy fail @remote_device_manager.c(275),ERROR" ID="0xd80a089a" />
+                       <MSG STRUCTURE="diag_log_msg10" NAME="addr: ****%02x%02x%02x%02x [little endian: %02x%02x%02x%02x**** ] name: %s hdl: %x @remote_device_manager.c(296),INFO" ID="0xd80a0945" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="create node error @remote_device_manager.c(300),ERROR" ID="0xd80a0962" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc fail @remote_device_manager.c(343),ERROR" ID="0xd80a0aba" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy fail @remote_device_manager.c(350),ERROR" ID="0xd80a0af2" />
+                       <MSG STRUCTURE="diag_log_msg5" NAME="addr: ****%02x%02x%02x%02x hdl: %x @remote_device_manager.c(356),WARNING" ID="0xd80a0b23" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="btsrv add remote dev node, acquire rmt dev list lock failed. @remote_device_manager.c(360),ERROR" ID="0xd80a0b42" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="btsrv get remote dev node, acquire rmt dev list lock failed. @remote_device_manager.c(373),ERROR" ID="0xd80a0baa" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="btsrv clear remtoe dev list, acquire rmt dev list lock failed. @remote_device_manager.c(419),ERROR" ID="0xd80a0d1a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="btsrv set remote dev status found 2 none, acquire rmt dev list lock failed. @remote_device_manager.c(457),ERROR" ID="0xd80a0e4a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="btsrv dfx show remote dev list, acquire rmt dev list lock failed. @remote_device_manager.c(484),ERROR" ID="0xd80a0f22" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="show remote device list: @remote_device_manager.c(490),INFO" ID="0xd80a0f55" />
+                       <MSG STRUCTURE="diag_log_msg9" NAME="| %-4s | %-32s | %-12s | %-16s | %-8s | %-8s | %-8s | %-8s | %-48s | @remote_device_manager.c(496),INFO" ID="0xd80a0f85" />
+                       <MSG STRUCTURE="diag_log_msg12" NAME="| %-4d | %-32s | ****%02x%02x%02x%02x | %-16x | %-8d | %-8d | %-8d | %-8d | %-48s | @remote_device_manager.c(512),INFO" ID="0xd80a1005" />
+                       <MSG STRUCTURE="diag_log_msg6" NAME="| %-4s | %-32s | %-12s | %-16s | %-8s | %-8s | @remote_device_manager.c(519),INFO" ID="0xd80a103d" />
+                       <MSG STRUCTURE="diag_log_msg9" NAME="| %-4d | %-32s | ****%02x%02x%02x%02x | %-16x | %-8d | %-8d | @remote_device_manager.c(526),INFO" ID="0xd80a1075" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="show remote device list end! @remote_device_manager.c(534),INFO" ID="0xd80a10b5" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="addr: ****%02X%02X%02X%02X @remote_device_manager.c(542),INFO" ID="0xd80a10f5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="not in remote list @remote_device_manager.c(551),INFO" ID="0xd80a113d" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="not have key status: %d have_key: %d @remote_device_manager.c(557),INFO" ID="0xd80a116d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s error @remote_device_manager.c(563),ERROR" ID="0xd80a119a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc fail @remote_device_manager.c(586),ERROR" ID="0xd80a1252" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy fail @remote_device_manager.c(591),ERROR" ID="0xd80a127a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="send msg fail. %x @remote_device_manager.c(598),ERROR" ID="0xd80a12b2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="send br msg connecting success! @remote_device_manager.c(602),INFO" ID="0xd80a12d5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc fail @remote_device_manager.c(609),ERROR" ID="0xd80a130a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy fail @remote_device_manager.c(613),ERROR" ID="0xd80a132a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="exist same type conn_node, disconnect. @remote_device_manager.c(634),INFO" ID="0xd80a13d5" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="addr: ****%02X%02X%02X%02X  @remote_device_manager.c(655),INFO" ID="0xd80a147d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="not in remote list @remote_device_manager.c(661),WARNING" ID="0xd80a14ab" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy error @remote_device_manager.c(668),ERROR" ID="0xd80a14e2" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="dev_hdl: %08x result: %02x @remote_device_manager.c(703),INFO" ID="0xd80a15fd" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="find/add remote device failed @remote_device_manager.c(728),WARNING" ID="0xd80a16c3" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="get remote device name fail. ret: %x  @remote_device_manager.c(743),WARNING" ID="0xd80a173b" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="get remote device name success. name: %s name_len: %d @remote_device_manager.c(748),INFO" ID="0xd80a1765" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc tmp_addr fail @remote_device_manager.c(752),ERROR" ID="0xd80a1782" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc tmp_name fail @remote_device_manager.c(756),ERROR" ID="0xd80a17a2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy fail @remote_device_manager.c(762),ERROR" ID="0xd80a17d2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="send msg fail. %x @remote_device_manager.c(769),ERROR" ID="0xd80a180a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="dev_hdl: %x @remote_device_manager.c(777),INFO" ID="0xd80a184d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="acl disconnected. dev_hdl: %x @remote_device_manager.c(779),INFO" ID="0xd80a185d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="dev not found @remote_device_manager.c(792),INFO" ID="0xd80a18c5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="find node fail @remote_device_manager.c(803),WARNING" ID="0xd80a191b" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="memcpy error! last_len: %d cur_len: %d cpy_len: %d ret: %x @remote_device_manager.c(814),ERROR" ID="0xd80a1972" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc fail @remote_device_manager.c(821),ERROR" ID="0xd80a19aa" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy fail @remote_device_manager.c(826),ERROR" ID="0xd80a19d2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="get pair devices num fail ret = %d @remote_device_manager.c(879),ERROR" ID="0xd80a1b7a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="get pair devices fail ret = %d @remote_device_manager.c(894),ERROR" ID="0xd80a1bf2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="gap get paired devices list, acquire rmt dev list lock failed. @remote_device_manager.c(915),ERROR" ID="0xd80a1c9a" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="num error! i: %d *number: %d @remote_device_manager.c(944),ERROR" ID="0xd80a1d82" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="get pair devices num fail ret = %d @remote_device_manager.c(983),ERROR" ID="0xd80a1eba" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="btsdk_disconnect_acl_by_handle ret: %x @remote_device_manager.c(1002),INFO" ID="0xd80a1f55" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="btsdk_un_pair_device ret: %x @remote_device_manager.c(1005),INFO" ID="0xd80a1f6d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc fail @remote_device_manager.c(1009),ERROR" ID="0xd80a1f8a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy fail @remote_device_manager.c(1013),ERROR" ID="0xd80a1faa" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="acquire rmt dev list lock failed. @remote_device_manager.c(1041),ERROR" ID="0xd80a208a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="gap remove all pairs, acquire rmt dev list lock failed. @remote_device_manager.c(1069),ERROR" ID="0xd80a216a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="remove pair device fail @remote_device_manager.c(1101),ERROR" ID="0xd80a226a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="remove pair all devices key fail @remote_device_manager.c(1111),ERROR" ID="0xd80a22ba" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="disconnect all devices fail @remote_device_manager.c(1115),ERROR" ID="0xd80a22da" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc fail @remote_device_manager.c(1146),ERROR" ID="0xd80a23d2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy fail @remote_device_manager.c(1151),ERROR" ID="0xd80a23fa" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="dev not found @remote_device_manager.c(1160),INFO" ID="0xd80a2445" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="dev not found @remote_device_manager.c(1183),INFO" ID="0xd80a24fd" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy fail @remote_device_manager.c(1202),INFO" ID="0xd80a2595" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="dev not found @remote_device_manager.c(1226),INFO" ID="0xd80a2655" />
                        </MSG_LOG>
\ No newline at end of file
index 7061ef0..df39006 100644 (file)
@@ -1,41 +1,44 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="[Core] ble general: mc ble conn state. @sdk_general_gap.c(226),INFO" ID="0xd86c0715" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] ble general: mc ble conn state fail. len = %u @sdk_general_gap.c(229),ERROR" ID="0xd86c072a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] ble general: mc ble conn state memcpy fail: %d @sdk_general_gap.c(235),ERROR" ID="0xd86c075a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[Core] ble general: gap general interface. @sdk_general_gap.c(246),INFO" ID="0xd86c07b5" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] ble general: gap general interface fail. len = %u @sdk_general_gap.c(249),ERROR" ID="0xd86c07ca" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] ble general: gap general interface fail. len = %u @sdk_general_gap.c(255),ERROR" ID="0xd86c07fa" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="[ACore] ble general: gap ext adv report. addr_type:0x%x addr:0x%02x:**:**:**:**:%02x data_len:0x%02x @sdk_general_gap.c(260),INFO" ID="0xd86c0825" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] ble general: gap adv set terminated fail. len = %u @sdk_general_gap.c(270),ERROR" ID="0xd86c0872" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] ble general: gap adv set terminated status: %u @sdk_general_gap.c(275),INFO" ID="0xd86c089d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] ble general: mc ble smp passkey req bta fail. len = %u @sdk_general_gap.c(286),ERROR" ID="0xd86c08f2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] ble general: mc ble smp passkey req bta. rmt_dev_handle = 0x%x @sdk_general_gap.c(292),INFO" ID="0xd86c0925" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] ble general: mc ble smp passkey notify bta fail. len = %u @sdk_general_gap.c(306),ERROR" ID="0xd86c0992" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="[ACore] ble general: mc ble smp passkey notify bta. rmt_dev_handle = 0x%x, number = %u @sdk_general_gap.c(313),INFO" ID="0xd86c09cd" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] ble general: mc ble smp pair keys bta fail. len = %u @sdk_general_gap.c(325),ERROR" ID="0xd86c0a2a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] ble general: mc ble smp pair keys addr memcpy fail. @sdk_general_gap.c(332),ERROR" ID="0xd86c0a62" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] ble general: mc ble smp pair keys memcpy fail. @sdk_general_gap.c(338),ERROR" ID="0xd86c0a92" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[ACore] ble general: mc ble smp pair keys bta. addr:%02x:**:**:**:%02x:%02x @sdk_general_gap.c(342),INFO" ID="0xd86c0ab5" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] ble general: mc ble smp pair complete bta fail. len = %u @sdk_general_gap.c(353),ERROR" ID="0xd86c0b0a" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="[ACore] ble general: mc ble smp pair complete bta. rmt_dev_handle = 0x%x, result = 0x%x @sdk_general_gap.c(360),INFO" ID="0xd86c0b45" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] ble general: mc ble gap get apperance fail. len = %u @sdk_general_gap.c(370),ERROR" ID="0xd86c0b92" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] ble general: mc ble gap get apperance apperance = %u @sdk_general_gap.c(375),ERROR" ID="0xd86c0bba" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="[Core] ble general: mc ble gap get white list pkt_len = %d, sizeof(bth_gap_white_addr_list) = %d @sdk_general_gap.c(385),INFO" ID="0xd86c0c0d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="mc ble gap get white list: count = %d. @sdk_general_gap.c(388),INFO" ID="0xd86c0c25" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="mc ble gap get white list addr:0x%x:**:**:**:0x%x:0x%x. @sdk_general_gap.c(392),INFO" ID="0xd86c0c45" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="[ACore] ble conn general gap proc:cmdid:0x%02X pay_len:%d. @sdk_general_gap.c(414),INFO" ID="0xd86c0cf5" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] ble conn general gap proc no handle for command id:0x%02x. @sdk_general_gap.c(429),INFO" ID="0xd86c0d6d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] mc ble smp pair remote device atb. @sdk_general_gap.c(508),INFO" ID="0xd86c0fe5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] mc ble smp passkey number atb. @sdk_general_gap.c(516),INFO" ID="0xd86c1025" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] mc ble smp send passkey number did not receive passkey req. @sdk_general_gap.c(528),INFO" ID="0xd86c1085" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] mc ble smp remove pair info atb. @sdk_general_gap.c(541),INFO" ID="0xd86c10ed" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] mc ble smp remove pair device atb. @sdk_general_gap.c(553),INFO" ID="0xd86c114d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] mc ble disc all links atb. @sdk_general_gap.c(562),INFO" ID="0xd86c1195" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] mc ble smp set key from btc atb. @sdk_general_gap.c(598),INFO" ID="0xd86c12b5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] mc ble remove adv by handle atb. @sdk_general_gap.c(608),INFO" ID="0xd86c1305" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] mc ble disable adv by handle atb. @sdk_general_gap.c(615),INFO" ID="0xd86c133d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[warning] uapi disconnect ble link conn_node not found disc all. @sdk_general_gap.c(738),INFO" ID="0xd86c1715" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[error] uapi disconnect ble link addr memcpy fail. @sdk_general_gap.c(744),INFO" ID="0xd86c1745" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[INFO] uapi disconnect ble link ret:%u. @sdk_general_gap.c(749),INFO" ID="0xd86c176d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] ble general: set ble sec param comes. @sdk_general_gap.c(761),INFO" ID="0xd86c17cd" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[Error] bt at cmd set ble sec param fail, value is null! @sdk_general_gap.c(764),ERROR" ID="0xd86c17e2" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="list node create fail! @sdk_general_gap.c(128),ERROR" ID="0xd86c0402" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="list node create fail! @sdk_general_gap.c(139),ERROR" ID="0xd86c045a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="list node create fail! @sdk_general_gap.c(213),ERROR" ID="0xd86c06aa" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[Core] ble general: mc ble conn state. @sdk_general_gap.c(239),INFO" ID="0xd86c077d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] ble general: mc ble conn state fail. len = %u @sdk_general_gap.c(242),ERROR" ID="0xd86c0792" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] ble general: mc ble conn state memcpy fail: %d @sdk_general_gap.c(248),ERROR" ID="0xd86c07c2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[Core] ble general: gap general interface. @sdk_general_gap.c(259),INFO" ID="0xd86c081d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] ble general: gap general interface fail. len = %u @sdk_general_gap.c(262),ERROR" ID="0xd86c0832" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] ble general: gap general interface fail. len = %u @sdk_general_gap.c(268),ERROR" ID="0xd86c0862" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="[ACore] ble general: gap ext adv report. addr_type:0x%x addr:0x%02x:**:**:**:**:%02x data_len:0x%02x @sdk_general_gap.c(273),INFO" ID="0xd86c088d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] ble general: gap adv set terminated fail. len = %u @sdk_general_gap.c(283),ERROR" ID="0xd86c08da" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] ble general: gap adv set terminated status: %u @sdk_general_gap.c(288),INFO" ID="0xd86c0905" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] ble general: mc ble smp passkey req bta fail. len = %u @sdk_general_gap.c(299),ERROR" ID="0xd86c095a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] ble general: mc ble smp passkey req bta. rmt_dev_handle = 0x%x @sdk_general_gap.c(305),INFO" ID="0xd86c098d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] ble general: mc ble smp passkey notify bta fail. len = %u @sdk_general_gap.c(319),ERROR" ID="0xd86c09fa" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[ACore] ble general: mc ble smp passkey notify bta. rmt_dev_handle = 0x%x, number = %u @sdk_general_gap.c(326),INFO" ID="0xd86c0a35" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] ble general: mc ble smp pair keys bta fail. len = %u @sdk_general_gap.c(338),ERROR" ID="0xd86c0a92" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] ble general: mc ble smp pair keys addr memcpy fail. @sdk_general_gap.c(345),ERROR" ID="0xd86c0aca" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] ble general: mc ble smp pair keys memcpy fail. @sdk_general_gap.c(351),ERROR" ID="0xd86c0afa" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[ACore] ble general: mc ble smp pair keys bta. addr:%02x:**:**:**:%02x:%02x @sdk_general_gap.c(355),INFO" ID="0xd86c0b1d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] ble general: mc ble smp pair complete bta fail. len = %u @sdk_general_gap.c(366),ERROR" ID="0xd86c0b72" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[ACore] ble general: mc ble smp pair complete bta. rmt_dev_handle = 0x%x, result = 0x%x @sdk_general_gap.c(373),INFO" ID="0xd86c0bad" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] ble general: mc ble gap get apperance fail. len = %u @sdk_general_gap.c(383),ERROR" ID="0xd86c0bfa" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] ble general: mc ble gap get apperance apperance = %u @sdk_general_gap.c(388),ERROR" ID="0xd86c0c22" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[Core] ble general: mc ble gap get white list pkt_len = %d, sizeof(bth_gap_white_addr_list) = %d @sdk_general_gap.c(398),INFO" ID="0xd86c0c75" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="mc ble gap get white list: count = %d. @sdk_general_gap.c(401),INFO" ID="0xd86c0c8d" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="mc ble gap get white list addr:0x%x:**:**:**:0x%x:0x%x. @sdk_general_gap.c(405),INFO" ID="0xd86c0cad" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[ACore] ble conn general gap proc:cmdid:0x%02X pay_len:%d. @sdk_general_gap.c(427),INFO" ID="0xd86c0d5d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] ble conn general gap proc no handle for command id:0x%02x. @sdk_general_gap.c(442),INFO" ID="0xd86c0dd5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] mc ble smp pair remote device atb. @sdk_general_gap.c(521),INFO" ID="0xd86c104d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] mc ble smp passkey number atb. @sdk_general_gap.c(529),INFO" ID="0xd86c108d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] mc ble smp send passkey number did not receive passkey req. @sdk_general_gap.c(541),INFO" ID="0xd86c10ed" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] mc ble smp remove pair info atb. @sdk_general_gap.c(554),INFO" ID="0xd86c1155" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] mc ble smp remove pair device atb. @sdk_general_gap.c(566),INFO" ID="0xd86c11b5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] mc ble disc all links atb. @sdk_general_gap.c(575),INFO" ID="0xd86c11fd" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] mc ble smp set key from btc atb. @sdk_general_gap.c(611),INFO" ID="0xd86c131d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] mc ble remove adv by handle atb. @sdk_general_gap.c(621),INFO" ID="0xd86c136d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] mc ble disable adv by handle atb. @sdk_general_gap.c(628),INFO" ID="0xd86c13a5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[warning] uapi disconnect ble link conn_node not found disc all. @sdk_general_gap.c(751),INFO" ID="0xd86c177d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[error] uapi disconnect ble link addr memcpy fail. @sdk_general_gap.c(757),INFO" ID="0xd86c17ad" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[INFO] uapi disconnect ble link ret:%u. @sdk_general_gap.c(762),INFO" ID="0xd86c17d5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] ble general: set ble sec param comes. @sdk_general_gap.c(774),INFO" ID="0xd86c1835" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[Error] bt at cmd set ble sec param fail, value is null! @sdk_general_gap.c(777),ERROR" ID="0xd86c184a" />
                        </MSG_LOG>
\ No newline at end of file
index f4d0e89..4ec4765 100644 (file)
@@ -1,67 +1,70 @@
 <MSG_LOG><MSG STRUCTURE="diag_log_msg2" NAME="[ACore] ble gatt upper callback register add on module_id:%02x, event:%02x @sdk_general_gatt.c(113),INFO" ID="0xd86e038d" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="[ACore] ble gatt upper callback register new on module_id:%02x, event:%02x @sdk_general_gatt.c(126),INFO" ID="0xd86e03f5" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[ACore] ble gatt client event handle tl not found on addr:%02x:**:**:**:%02x:%02x @sdk_general_gatt.c(225),INFO" ID="0xd86e070d" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[ACore] ble gatt client event handle task not found on addr:%02x:**:**:**:%02x:%02x @sdk_general_gatt.c(233),INFO" ID="0xd86e074d" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[ACore] ble gatt client event handle table not found on addr:%02x:**:**:**:%02x:%02x @sdk_general_gatt.c(240),INFO" ID="0xd86e0785" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[ACore] ble gatt client event handle table not found task on addr:%02x:**:**:**:%02x:%02x @sdk_general_gatt.c(249),INFO" ID="0xd86e07cd" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[Connected]  @sdk_general_gatt.c(395),INFO" ID="0xd86e0c5d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[Disconnected]  @sdk_general_gatt.c(397),INFO" ID="0xd86e0c6d" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="addr:%02x:**:**:**:%02x:%02x, handle:%02x @sdk_general_gatt.c(403),INFO" ID="0xd86e0c9d" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[ACore] ble gatt le conn event cbk already connected on addr:%02x:**:**:**:%02x:%02x @sdk_general_gatt.c(418),INFO" ID="0xd86e0d15" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] ble gatt le conn event cbk memcpy addr error @sdk_general_gatt.c(428),ERROR" ID="0xd86e0d62" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[ACore] ble gatt le conn event cbk tl not found on addr:%02x:**:**:**:%02x:%02x @sdk_general_gatt.c(439),INFO" ID="0xd86e0dbd" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[ACore] ble gatt le conn event cbk tl remove on addr:%02x:**:**:**:%02x:%02x @sdk_general_gatt.c(445),INFO" ID="0xd86e0ded" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt create server result bta len error, len = %u @sdk_general_gatt.c(461),ERROR" ID="0xd86e0e6a" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="[ACore] mc ble gatt create server result bta memcpy fail:%d,len:%d @sdk_general_gatt.c(469),ERROR" ID="0xd86e0eaa" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt create service result bta len error. len = %u @sdk_general_gatt.c(482),ERROR" ID="0xd86e0f12" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt create service result bta memcpy fail: %d @sdk_general_gatt.c(489),ERROR" ID="0xd86e0f4a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt start service result bta len error. len = %u @sdk_general_gatt.c(503),ERROR" ID="0xd86e0fba" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt start service result bta memcpy faile error: %d @sdk_general_gatt.c(510),ERROR" ID="0xd86e0ff2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt get gap ui attributes result bta len error. len = %u @sdk_general_gatt.c(523),ERROR" ID="0xd86e105a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt get gap ui attributes result bta memcpy faile error: %d @sdk_general_gatt.c(530),ERROR" ID="0xd86e1092" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt discovery service rsp bta len error. len = %u @sdk_general_gatt.c(543),ERROR" ID="0xd86e10fa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] mc ble gatt discovery service rsp bta discovery_service error @sdk_general_gatt.c(551),ERROR" ID="0xd86e113a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt discovery service complete bta len error. len = %u @sdk_general_gatt.c(564),ERROR" ID="0xd86e11a2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] mc ble gatt discovery service complete bta discovery_service error @sdk_general_gatt.c(572),ERROR" ID="0xd86e11e2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt add characteristic result bta len error, len = %u @sdk_general_gatt.c(585),ERROR" ID="0xd86e124a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt add characteristic result bta memcpy fail error: %d @sdk_general_gatt.c(591),ERROR" ID="0xd86e127a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt discovery include service rsp bta len error. len = %u @sdk_general_gatt.c(604),ERROR" ID="0xd86e12e2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] mc ble gatt discovery include service rsp bta discovery_service error @sdk_general_gatt.c(612),ERROR" ID="0xd86e1322" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt discovery characteristics response bta len error. len = %u @sdk_general_gatt.c(625),ERROR" ID="0xd86e138a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore]mc ble gatt discovery characteristics response bta discovery_service error @sdk_general_gatt.c(633),ERROR" ID="0xd86e13ca" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt discovery characteristics complete bta len error. len = %u @sdk_general_gatt.c(646),ERROR" ID="0xd86e1432" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore]mc ble gatt discovery characteristics complete bta discovery_service error @sdk_general_gatt.c(654),ERROR" ID="0xd86e1472" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt discovery descriptor response bta len error. len = %u @sdk_general_gatt.c(667),ERROR" ID="0xd86e14da" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] mc ble gatt discovery descriptor response bta discovery_service error @sdk_general_gatt.c(675),ERROR" ID="0xd86e151a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt discovery descriptor complete bta len error. len = %u @sdk_general_gatt.c(688),ERROR" ID="0xd86e1582" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] mc ble gatt discovery descriptor complete bta discovery_service error @sdk_general_gatt.c(695),ERROR" ID="0xd86e15ba" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt get hid report map response bta finish. result code = %x @sdk_general_gatt.c(707),INFO" ID="0xd86e161d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt get hid report map response bta len error. len = %u @sdk_general_gatt.c(713),INFO" ID="0xd86e164d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt read character complete bta len error. len = %u @sdk_general_gatt.c(728),ERROR" ID="0xd86e16c2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] mc ble gatt read characterr complete bta read character error @sdk_general_gatt.c(735),ERROR" ID="0xd86e16fa" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] read service value finish. error code = %x @sdk_general_gatt.c(747),INFO" ID="0xd86e175d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] read service value response len error. len = %u @sdk_general_gatt.c(753),INFO" ID="0xd86e178d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] write service value finish. error code = %x @sdk_general_gatt.c(767),INFO" ID="0xd86e17fd" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] write service value response len error. len = %u @sdk_general_gatt.c(773),INFO" ID="0xd86e182d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt read descriptor response bta len error. len = %u @sdk_general_gatt.c(788),INFO" ID="0xd86e18a5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] mc ble gatt read descriptor response bta error @sdk_general_gatt.c(795),ERROR" ID="0xd86e18da" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt character value notification bta len error. len = %u @sdk_general_gatt.c(808),INFO" ID="0xd86e1945" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="mc ble gatt character value notification bta new fail @sdk_general_gatt.c(816),ERROR" ID="0xd86e1982" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="mc ble gatt character value notification bta memset fail @sdk_general_gatt.c(823),ERROR" ID="0xd86e19ba" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] mc ble gatt character value notification bta error @sdk_general_gatt.c(831),ERROR" ID="0xd86e19fa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] mc ble gatt read descriptor response bta error @sdk_general_gatt.c(839),ERROR" ID="0xd86e1a3a" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="mc ble gatt character value notification bta handle:0x%x, len:%d @sdk_general_gatt.c(849),INFO" ID="0xd86e1a8d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt exchange mtu ind len error. len = %u @sdk_general_gatt.c(861),INFO" ID="0xd86e1aed" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] mc ble gatt exchange mtu ind error @sdk_general_gatt.c(865),ERROR" ID="0xd86e1b0a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt handle service evt bta len error. len = %u @sdk_general_gatt.c(877),INFO" ID="0xd86e1b6d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="mc ble gatt handle service evt bta new fail @sdk_general_gatt.c(884),ERROR" ID="0xd86e1ba2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="mc ble gatt handle service evt bta memset fail @sdk_general_gatt.c(891),ERROR" ID="0xd86e1bda" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] mc ble gatt handle service evt bta addr error @sdk_general_gatt.c(899),ERROR" ID="0xd86e1c1a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt server read evt bta len error len = %u @sdk_general_gatt.c(912),INFO" ID="0xd86e1c85" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="mc ble gatt server read evt bta new fail @sdk_general_gatt.c(918),ERROR" ID="0xd86e1cb2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="mc ble gatt server read evt bta memset fai @sdk_general_gatt.c(923),ERROR" ID="0xd86e1cda" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] mc ble gatt server read evt bta addr error @sdk_general_gatt.c(929),ERROR" ID="0xd86e1d0a" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="[ACore] ble conn general gatt proc:cmdid:0x%02X pay_len:%d. @sdk_general_gatt.c(948),INFO" ID="0xd86e1da5" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] ble conn general gatt proc no handle for command id:0x%02x. @sdk_general_gatt.c(963),INFO" ID="0xd86e1e1d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[Error] bt at cmd set le att mtu param fail, mtu param is null! @sdk_general_gatt.c(993),ERROR" ID="0xd86e1f0a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="list node create fail! @sdk_general_gatt.c(116),ERROR" ID="0xd86e03a2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="list node create fail! @sdk_general_gatt.c(128),ERROR" ID="0xd86e0402" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[ACore] ble gatt upper callback register new on module_id:%02x, event:%02x @sdk_general_gatt.c(134),INFO" ID="0xd86e0435" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[ACore] ble gatt client event handle tl not found on addr:%02x:**:**:**:%02x:%02x @sdk_general_gatt.c(233),INFO" ID="0xd86e074d" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[ACore] ble gatt client event handle task not found on addr:%02x:**:**:**:%02x:%02x @sdk_general_gatt.c(241),INFO" ID="0xd86e078d" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[ACore] ble gatt client event handle table not found on addr:%02x:**:**:**:%02x:%02x @sdk_general_gatt.c(248),INFO" ID="0xd86e07c5" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[ACore] ble gatt client event handle table not found task on addr:%02x:**:**:**:%02x:%02x @sdk_general_gatt.c(257),INFO" ID="0xd86e080d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[Connected]  @sdk_general_gatt.c(403),INFO" ID="0xd86e0c9d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[Disconnected]  @sdk_general_gatt.c(405),INFO" ID="0xd86e0cad" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="addr:%02x:**:**:**:%02x:%02x, handle:%02x @sdk_general_gatt.c(411),INFO" ID="0xd86e0cdd" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[ACore] ble gatt le conn event cbk already connected on addr:%02x:**:**:**:%02x:%02x @sdk_general_gatt.c(426),INFO" ID="0xd86e0d55" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="list node create fail! @sdk_general_gatt.c(432),ERROR" ID="0xd86e0d82" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] ble gatt le conn event cbk memcpy addr error @sdk_general_gatt.c(440),ERROR" ID="0xd86e0dc2" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[ACore] ble gatt le conn event cbk tl not found on addr:%02x:**:**:**:%02x:%02x @sdk_general_gatt.c(451),INFO" ID="0xd86e0e1d" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[ACore] ble gatt le conn event cbk tl remove on addr:%02x:**:**:**:%02x:%02x @sdk_general_gatt.c(457),INFO" ID="0xd86e0e4d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt create server result bta len error, len = %u @sdk_general_gatt.c(473),ERROR" ID="0xd86e0eca" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[ACore] mc ble gatt create server result bta memcpy fail:%d,len:%d @sdk_general_gatt.c(481),ERROR" ID="0xd86e0f0a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt create service result bta len error. len = %u @sdk_general_gatt.c(494),ERROR" ID="0xd86e0f72" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt create service result bta memcpy fail: %d @sdk_general_gatt.c(501),ERROR" ID="0xd86e0faa" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt start service result bta len error. len = %u @sdk_general_gatt.c(515),ERROR" ID="0xd86e101a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt start service result bta memcpy faile error: %d @sdk_general_gatt.c(522),ERROR" ID="0xd86e1052" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt get gap ui attributes result bta len error. len = %u @sdk_general_gatt.c(535),ERROR" ID="0xd86e10ba" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt get gap ui attributes result bta memcpy faile error: %d @sdk_general_gatt.c(542),ERROR" ID="0xd86e10f2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt discovery service rsp bta len error. len = %u @sdk_general_gatt.c(555),ERROR" ID="0xd86e115a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] mc ble gatt discovery service rsp bta discovery_service error @sdk_general_gatt.c(563),ERROR" ID="0xd86e119a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt discovery service complete bta len error. len = %u @sdk_general_gatt.c(576),ERROR" ID="0xd86e1202" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] mc ble gatt discovery service complete bta discovery_service error @sdk_general_gatt.c(584),ERROR" ID="0xd86e1242" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt add characteristic result bta len error, len = %u @sdk_general_gatt.c(597),ERROR" ID="0xd86e12aa" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt add characteristic result bta memcpy fail error: %d @sdk_general_gatt.c(603),ERROR" ID="0xd86e12da" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt discovery include service rsp bta len error. len = %u @sdk_general_gatt.c(616),ERROR" ID="0xd86e1342" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] mc ble gatt discovery include service rsp bta discovery_service error @sdk_general_gatt.c(624),ERROR" ID="0xd86e1382" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt discovery characteristics response bta len error. len = %u @sdk_general_gatt.c(637),ERROR" ID="0xd86e13ea" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore]mc ble gatt discovery characteristics response bta discovery_service error @sdk_general_gatt.c(645),ERROR" ID="0xd86e142a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt discovery characteristics complete bta len error. len = %u @sdk_general_gatt.c(658),ERROR" ID="0xd86e1492" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore]mc ble gatt discovery characteristics complete bta discovery_service error @sdk_general_gatt.c(666),ERROR" ID="0xd86e14d2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt discovery descriptor response bta len error. len = %u @sdk_general_gatt.c(679),ERROR" ID="0xd86e153a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] mc ble gatt discovery descriptor response bta discovery_service error @sdk_general_gatt.c(687),ERROR" ID="0xd86e157a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt discovery descriptor complete bta len error. len = %u @sdk_general_gatt.c(700),ERROR" ID="0xd86e15e2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] mc ble gatt discovery descriptor complete bta discovery_service error @sdk_general_gatt.c(707),ERROR" ID="0xd86e161a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt get hid report map response bta finish. result code = %x @sdk_general_gatt.c(719),INFO" ID="0xd86e167d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt get hid report map response bta len error. len = %u @sdk_general_gatt.c(725),INFO" ID="0xd86e16ad" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt read character complete bta len error. len = %u @sdk_general_gatt.c(740),ERROR" ID="0xd86e1722" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] mc ble gatt read characterr complete bta read character error @sdk_general_gatt.c(747),ERROR" ID="0xd86e175a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] read service value finish. error code = %x @sdk_general_gatt.c(759),INFO" ID="0xd86e17bd" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] read service value response len error. len = %u @sdk_general_gatt.c(765),INFO" ID="0xd86e17ed" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] write service value finish. error code = %x @sdk_general_gatt.c(779),INFO" ID="0xd86e185d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] write service value response len error. len = %u @sdk_general_gatt.c(785),INFO" ID="0xd86e188d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt read descriptor response bta len error. len = %u @sdk_general_gatt.c(800),INFO" ID="0xd86e1905" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] mc ble gatt read descriptor response bta error @sdk_general_gatt.c(807),ERROR" ID="0xd86e193a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt character value notification bta len error. len = %u @sdk_general_gatt.c(820),INFO" ID="0xd86e19a5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="mc ble gatt character value notification bta new fail @sdk_general_gatt.c(828),ERROR" ID="0xd86e19e2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="mc ble gatt character value notification bta memset fail @sdk_general_gatt.c(835),ERROR" ID="0xd86e1a1a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] mc ble gatt character value notification bta error @sdk_general_gatt.c(843),ERROR" ID="0xd86e1a5a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] mc ble gatt read descriptor response bta error @sdk_general_gatt.c(851),ERROR" ID="0xd86e1a9a" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="mc ble gatt character value notification bta handle:0x%x, len:%d @sdk_general_gatt.c(861),INFO" ID="0xd86e1aed" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt exchange mtu ind len error. len = %u @sdk_general_gatt.c(873),INFO" ID="0xd86e1b4d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] mc ble gatt exchange mtu ind error @sdk_general_gatt.c(877),ERROR" ID="0xd86e1b6a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt handle service evt bta len error. len = %u @sdk_general_gatt.c(889),INFO" ID="0xd86e1bcd" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="mc ble gatt handle service evt bta new fail @sdk_general_gatt.c(896),ERROR" ID="0xd86e1c02" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="mc ble gatt handle service evt bta memset fail @sdk_general_gatt.c(903),ERROR" ID="0xd86e1c3a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] mc ble gatt handle service evt bta addr error @sdk_general_gatt.c(911),ERROR" ID="0xd86e1c7a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt server read evt bta len error len = %u @sdk_general_gatt.c(924),INFO" ID="0xd86e1ce5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="mc ble gatt server read evt bta new fail @sdk_general_gatt.c(930),ERROR" ID="0xd86e1d12" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="mc ble gatt server read evt bta memset fai @sdk_general_gatt.c(935),ERROR" ID="0xd86e1d3a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] mc ble gatt server read evt bta addr error @sdk_general_gatt.c(941),ERROR" ID="0xd86e1d6a" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[ACore] ble conn general gatt proc:cmdid:0x%02X pay_len:%d. @sdk_general_gatt.c(960),INFO" ID="0xd86e1e05" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] ble conn general gatt proc no handle for command id:0x%02x. @sdk_general_gatt.c(975),INFO" ID="0xd86e1e7d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[Error] bt at cmd set le att mtu param fail, mtu param is null! @sdk_general_gatt.c(1005),ERROR" ID="0xd86e1f6a" />
                        </MSG_LOG>
\ No newline at end of file
index 7a8e6c6..ff86239 100644 (file)
                        <MSG STRUCTURE="diag_log_msg1" NAME="connect spp fail. ret: %x @spp_service.c(572),INFO" ID="0xd82a11e5" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="BTSDK_DisconnectConnection fail retCode: %x @spp_service.c(597),ERROR" ID="0xd82a12aa" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="spp read data failed @spp_service.c(683),ERROR" ID="0xd82a155a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="client is null. client id %d @spp_service.c(701),ERROR" ID="0xd82a15ea" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="client not connected. client id %d @spp_service.c(705),ERROR" ID="0xd82a160a" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="connHdl: %x dataLen: %d writeRet: %d writeLen: %d @spp_service.c(720),WARNING" ID="0xd82a1683" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="hdl 0x%x not exist @spp_service.c(734),WARNING" ID="0xd82a16f3" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="no recieve function registered @spp_service.c(741),INFO" ID="0xd82a172d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="hdl 0x%x not exist @spp_service.c(752),WARNING" ID="0xd82a1783" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="no match client id for hdl 0x%x, try %d times @spp_service.c(756),INFO" ID="0xd82a17a5" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="BTSDK_SPP_EVT_CONNECTED hdl=0x%x @spp_service.c(772),INFO" ID="0xd82a1825" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="BTSDK_SPP_EVT_DISCONNECTED hdl=0x%x @spp_service.c(776),INFO" ID="0xd82a1845" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="BTSDK_SPP_EVT_FC_ON hdl=0x%x @spp_service.c(783),INFO" ID="0xd82a187d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="unknown msg hdl=0x%x @spp_service.c(786),WARNING" ID="0xd82a1893" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="client is null. client id %d @spp_service.c(707),ERROR" ID="0xd82a161a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="client not connected. client id %d @spp_service.c(711),ERROR" ID="0xd82a163a" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="connHdl: %x dataLen: %d writeRet: %d writeLen: %d @spp_service.c(726),WARNING" ID="0xd82a16b3" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="hdl 0x%x not exist @spp_service.c(740),WARNING" ID="0xd82a1723" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="no recieve function registered @spp_service.c(747),INFO" ID="0xd82a175d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="hdl 0x%x not exist @spp_service.c(758),WARNING" ID="0xd82a17b3" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="no match client id for hdl 0x%x, try %d times @spp_service.c(762),INFO" ID="0xd82a17d5" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="BTSDK_SPP_EVT_CONNECTED hdl=0x%x @spp_service.c(778),INFO" ID="0xd82a1855" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="BTSDK_SPP_EVT_DISCONNECTED hdl=0x%x @spp_service.c(782),INFO" ID="0xd82a1875" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="BTSDK_SPP_EVT_FC_ON hdl=0x%x @spp_service.c(789),INFO" ID="0xd82a18ad" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="unknown msg hdl=0x%x @spp_service.c(792),WARNING" ID="0xd82a18c3" />
                        </MSG_LOG>
\ No newline at end of file
index 138712a..eb6570b 100644 (file)
@@ -1,5 +1,5 @@
 <MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s fail. @stack_av_if.c(62),ERROR" ID="0xd8dc01f2" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s fail. @stack_av_if.c(118),ERROR" ID="0xd8dc03b2" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME=" a2dp rpt stream state %x src %x  @stack_av_if.c(158),INFO" ID="0xd8dc04f5" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME=" a2dp rpt stream config src %x  @stack_av_if.c(174),INFO" ID="0xd8dc0575" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME=" a2dp rpt stream state %x src %x  @stack_av_if.c(163),INFO" ID="0xd8dc051d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME=" a2dp rpt stream config src %x  @stack_av_if.c(179),INFO" ID="0xd8dc059d" />
                        </MSG_LOG>
\ No newline at end of file
index 9cb8a70..0670751 100644 (file)
@@ -1,3 +1,3 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="add faild, Input parameter error. @ui_coverflow_view.cpp(94),ERROR" ID="0xcb3e02f2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="remove faild, Input parameter error. @ui_coverflow_view.cpp(135),ERROR" ID="0xcb3e043a" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="add faild, Input parameter error. @ui_coverflow_view.cpp(96),ERROR" ID="0xcb3e0302" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="remove faild, Input parameter error. @ui_coverflow_view.cpp(137),ERROR" ID="0xcb3e044a" />
                        </MSG_LOG>
\ No newline at end of file
index e4a5ae0..6c6fb96 100644 (file)
@@ -1,2 +1,2 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="A maximum of 20 records can be added. @ui_icosahedron_view.cpp(100),ERROR" ID="0xcb420322" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="A maximum of 20 records can be added. @ui_icosahedron_view.cpp(108),ERROR" ID="0xcb420362" />
                        </MSG_LOG>
\ No newline at end of file
index 6b960ad..1021767 100644 (file)
@@ -1,3 +1,3 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="pois_ malloc fail @ui_map_view.cpp(79),ERROR" ID="0xcb44027a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="roads_ malloc fail @ui_map_view.cpp(130),ERROR" ID="0xcb440412" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="pois_ malloc fail @ui_map_view.cpp(82),ERROR" ID="0xcb440292" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="roads_ malloc fail @ui_map_view.cpp(133),ERROR" ID="0xcb44042a" />
                        </MSG_LOG>
\ No newline at end of file
index 6c53c2d..6a4b694 100644 (file)
@@ -1,12 +1,12 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="RollerItemInfo is nullptr! @ui_roller_view.cpp(177),ERROR" ID="0xcb40058a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Already add an item with the same name. Remove it before adding this. @ui_roller_view.cpp(217),ERROR" ID="0xcb4006ca" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="name is empty! @ui_roller_view.cpp(257),ERROR" ID="0xcb40080a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Should remove an item in DISPLAY mode @ui_roller_view.cpp(262),ERROR" ID="0xcb400832" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="RollerItemInfo is null! @ui_roller_view.cpp(443),ERROR" ID="0xcb400dda" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Cannot set align item when mode is about to change. @ui_roller_view.cpp(495),ERROR" ID="0xcb400f7a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Should SetCurrentItem in DISPLAY mode. @ui_roller_view.cpp(499),ERROR" ID="0xcb400f9a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="Cannot find an item with name: %s @ui_roller_view.cpp(514),ERROR" ID="0xcb401012" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Cannot set mode when AlignAnim is running @ui_roller_view.cpp(609),ERROR" ID="0xcb40130a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="mode is already set. @ui_roller_view.cpp(614),ERROR" ID="0xcb401332" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Cannot Set mode during transition or cannot set TRANSITION mode. @ui_roller_view.cpp(619),ERROR" ID="0xcb40135a" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="RollerItemInfo is nullptr! @ui_roller_view.cpp(180),ERROR" ID="0xcb4005a2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="Already add an item with the same name. Remove it before adding this. @ui_roller_view.cpp(223),ERROR" ID="0xcb4006fa" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="name is empty! @ui_roller_view.cpp(264),ERROR" ID="0xcb400842" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="Should remove an item in DISPLAY mode @ui_roller_view.cpp(269),ERROR" ID="0xcb40086a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="RollerItemInfo is null! @ui_roller_view.cpp(450),ERROR" ID="0xcb400e12" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="Cannot set align item when mode is about to change. @ui_roller_view.cpp(503),ERROR" ID="0xcb400fba" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="Should SetCurrentItem in DISPLAY mode. @ui_roller_view.cpp(507),ERROR" ID="0xcb400fda" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="Cannot find an item with name: %s @ui_roller_view.cpp(522),ERROR" ID="0xcb401052" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="Cannot set mode when AlignAnim is running @ui_roller_view.cpp(617),ERROR" ID="0xcb40134a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="mode is already set. @ui_roller_view.cpp(622),ERROR" ID="0xcb401372" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="Cannot Set mode during transition or cannot set TRANSITION mode. @ui_roller_view.cpp(627),ERROR" ID="0xcb40139a" />
                        </MSG_LOG>
\ No newline at end of file
index d473a38..2541a89 100644 (file)
@@ -1,88 +1,88 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call connector_list_output_event_callback Failed, Error Code: [0x%08X] @core_sea.c(161),ERROR" ID="0x9860050a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]event = %d @core_sea.c(177),INFO" ID="0x9860058d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]mode = %u @core_sea.c(236),ERROR" ID="0x98600762" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]eng_ind.type = 0x%08X @core_sea.c(248),ERROR" ID="0x986007c2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]eng_ind.lib_id = %u @core_sea.c(253),ERROR" ID="0x986007ea" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]eng_ind.type = 0x%08X @core_sea.c(268),ERROR" ID="0x98600862" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]eng_ind.lib_id = %u @core_sea.c(273),ERROR" ID="0x9860088a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]All lib_id of afe and aai are null. @core_sea.c(304),ERROR" ID="0x98600982" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]in_pcm-&gt;samples_per_frame = %u @core_sea.c(332),ERROR" ID="0x98600a62" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]in_pcm-&gt;sample_rate = %u @core_sea.c(333),ERROR" ID="0x98600a6a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]entry = %p,  Null Pointer! @core_sea.c(368),ERROR" ID="0x98600b82" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call create Failed, Error Code: [0x%08X] @core_sea.c(381),ERROR" ID="0x98600bea" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call get_eng_attr Failed, Error Code: [0x%08X] @core_sea.c(393),WARNING" ID="0x98600c4b" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call core_mod_get_module Failed, Error Code: [0x%08X] @core_sea.c(555),ERROR" ID="0x9860115a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]sea = 0x%08X @core_sea.c(556),INFO" ID="0x98601165" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call core_mod_init Failed, Error Code: [0x%08X] @core_sea.c(653),ERROR" ID="0x9860146a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call core_mod_deinit Failed, Error Code: [0x%08X] @core_sea.c(675),ERROR" ID="0x9860151a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(697),INFO" ID="0x986015cd" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Error Code: [0x%08X] @core_sea.c(708),ERROR" ID="0x98601622" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call get_eng_caps Failed, Error Code: [0x%08X] @core_sea.c(716),ERROR" ID="0x98601662" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(721),INFO" ID="0x9860168d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(730),INFO" ID="0x986016d5" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call get_def_pcm_attr Failed, Error Code: [0x%08X] @core_sea.c(742),ERROR" ID="0x98601732" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(746),INFO" ID="0x98601755" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(756),INFO" ID="0x986017a5" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call core_mod_alloc Failed, Error Code: [0x%08X] @core_sea.c(768),ERROR" ID="0x98601802" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call sea_entry_create Failed, Error Code: [0x%08X] @core_sea.c(776),ERROR" ID="0x98601842" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call sea_set_input_stream Failed, Error Code: [0x%08X] @core_sea.c(785),ERROR" ID="0x9860188a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(805),INFO" ID="0x9860192d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(816),INFO" ID="0x98601985" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]ret = %d @core_sea.c(821),ERROR" ID="0x986019aa" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call sea_entry_destroy Failed, Error Code: [0x%08X] @core_sea.c(828),ERROR" ID="0x986019e2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(840),INFO" ID="0x98601a45" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(849),INFO" ID="0x98601a8d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(854),INFO" ID="0x98601ab5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(864),INFO" ID="0x98601b05" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call sea_entry_set_enable Failed, Error Code: [0x%08X] @core_sea.c(868),ERROR" ID="0x98601b22" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(874),INFO" ID="0x98601b55" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(884),INFO" ID="0x98601ba5" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call sea_entry_set_enable Failed, Error Code: [0x%08X] @core_sea.c(888),ERROR" ID="0x98601bc2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(894),INFO" ID="0x98601bf5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(903),INFO" ID="0x98601c3d" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call connector_list_output_event_callback Failed, Error Code: [0x%08X] @core_sea.c(164),ERROR" ID="0x98600522" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]event = %d @core_sea.c(180),INFO" ID="0x986005a5" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]mode = %u @core_sea.c(239),ERROR" ID="0x9860077a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]eng_ind.type = 0x%08X @core_sea.c(251),ERROR" ID="0x986007da" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]eng_ind.lib_id = %u @core_sea.c(256),ERROR" ID="0x98600802" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]eng_ind.type = 0x%08X @core_sea.c(271),ERROR" ID="0x9860087a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]eng_ind.lib_id = %u @core_sea.c(276),ERROR" ID="0x986008a2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]All lib_id of afe and aai are null. @core_sea.c(307),ERROR" ID="0x9860099a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]in_pcm-&gt;samples_per_frame = %u @core_sea.c(335),ERROR" ID="0x98600a7a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]in_pcm-&gt;sample_rate = %u @core_sea.c(336),ERROR" ID="0x98600a82" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]entry = %p,  Null Pointer! @core_sea.c(371),ERROR" ID="0x98600b9a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call create Failed, Error Code: [0x%08X] @core_sea.c(384),ERROR" ID="0x98600c02" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call get_eng_attr Failed, Error Code: [0x%08X] @core_sea.c(396),WARNING" ID="0x98600c63" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call core_mod_get_module Failed, Error Code: [0x%08X] @core_sea.c(586),ERROR" ID="0x98601252" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]sea = 0x%08X @core_sea.c(587),INFO" ID="0x9860125d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call core_mod_init Failed, Error Code: [0x%08X] @core_sea.c(684),ERROR" ID="0x98601562" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call core_mod_deinit Failed, Error Code: [0x%08X] @core_sea.c(706),ERROR" ID="0x98601612" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(728),INFO" ID="0x986016c5" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Error Code: [0x%08X] @core_sea.c(739),ERROR" ID="0x9860171a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call get_eng_caps Failed, Error Code: [0x%08X] @core_sea.c(747),ERROR" ID="0x9860175a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(752),INFO" ID="0x98601785" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(761),INFO" ID="0x986017cd" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call get_def_pcm_attr Failed, Error Code: [0x%08X] @core_sea.c(773),ERROR" ID="0x9860182a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(777),INFO" ID="0x9860184d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(787),INFO" ID="0x9860189d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call core_mod_alloc Failed, Error Code: [0x%08X] @core_sea.c(799),ERROR" ID="0x986018fa" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call sea_entry_create Failed, Error Code: [0x%08X] @core_sea.c(807),ERROR" ID="0x9860193a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call sea_set_input_stream Failed, Error Code: [0x%08X] @core_sea.c(816),ERROR" ID="0x98601982" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(836),INFO" ID="0x98601a25" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(847),INFO" ID="0x98601a7d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]ret = %d @core_sea.c(852),ERROR" ID="0x98601aa2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call sea_entry_destroy Failed, Error Code: [0x%08X] @core_sea.c(859),ERROR" ID="0x98601ada" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(871),INFO" ID="0x98601b3d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(880),INFO" ID="0x98601b85" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(885),INFO" ID="0x98601bad" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(895),INFO" ID="0x98601bfd" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call sea_entry_set_enable Failed, Error Code: [0x%08X] @core_sea.c(899),ERROR" ID="0x98601c1a" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(905),INFO" ID="0x98601c4d" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(915),INFO" ID="0x98601c9d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(929),INFO" ID="0x98601d0d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(940),INFO" ID="0x98601d65" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call sea_entry_set_attr Failed, Error Code: [0x%08X] @core_sea.c(960),ERROR" ID="0x98601e02" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(965),INFO" ID="0x98601e2d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(974),INFO" ID="0x98601e75" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(977),INFO" ID="0x98601e8d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(989),INFO" ID="0x98601eed" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call sea_entry_set_enable Failed, Error Code: [0x%08X] @core_sea.c(919),ERROR" ID="0x98601cba" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(925),INFO" ID="0x98601ced" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(934),INFO" ID="0x98601d35" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(936),INFO" ID="0x98601d45" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(946),INFO" ID="0x98601d95" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(960),INFO" ID="0x98601e05" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(971),INFO" ID="0x98601e5d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call sea_entry_set_attr Failed, Error Code: [0x%08X] @core_sea.c(991),ERROR" ID="0x98601efa" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(996),INFO" ID="0x98601f25" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(1005),INFO" ID="0x98601f6d" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(1008),INFO" ID="0x98601f85" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(1019),INFO" ID="0x98601fdd" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(1038),INFO" ID="0x98602075" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(1049),INFO" ID="0x986020cd" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Error Code: [0x%08X] @core_sea.c(1053),ERROR" ID="0x986020ea" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call sea_set_input_stream Failed, Error Code: [0x%08X] @core_sea.c(1064),ERROR" ID="0x98602142" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call sea_entry_set_input_pcm Failed, Error Code: [0x%08X] @core_sea.c(1071),ERROR" ID="0x9860217a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(1082),INFO" ID="0x986021d5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(1092),INFO" ID="0x98602225" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(1100),INFO" ID="0x98602265" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(1113),INFO" ID="0x986022cd" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call sea_set_input_stream Failed, Error Code: [0x%08X] @core_sea.c(1129),ERROR" ID="0x9860234a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call sea_entry_set_input_pcm Failed, Error Code: [0x%08X] @core_sea.c(1135),ERROR" ID="0x9860237a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(1139),INFO" ID="0x9860239d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(1149),INFO" ID="0x986023ed" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]data_port_id = %u @core_sea.c(1153),ERROR" ID="0x9860240a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(1163),INFO" ID="0x9860245d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(1174),INFO" ID="0x986024b5" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call sea_entry_get_items Failed, Error Code: [0x%08X] @core_sea.c(1180),ERROR" ID="0x986024e2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(1185),INFO" ID="0x9860250d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(1195),INFO" ID="0x9860255d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call sea_entry_get_items Failed, Error Code: [0x%08X] @core_sea.c(1200),ERROR" ID="0x98602582" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(1204),INFO" ID="0x986025a5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(1213),INFO" ID="0x986025ed" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(1020),INFO" ID="0x98601fe5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(1039),INFO" ID="0x9860207d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(1050),INFO" ID="0x986020d5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(1069),INFO" ID="0x9860216d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(1080),INFO" ID="0x986021c5" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Error Code: [0x%08X] @core_sea.c(1084),ERROR" ID="0x986021e2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call sea_set_input_stream Failed, Error Code: [0x%08X] @core_sea.c(1095),ERROR" ID="0x9860223a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call sea_entry_set_input_pcm Failed, Error Code: [0x%08X] @core_sea.c(1102),ERROR" ID="0x98602272" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(1113),INFO" ID="0x986022cd" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(1123),INFO" ID="0x9860231d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(1131),INFO" ID="0x9860235d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(1144),INFO" ID="0x986023c5" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call sea_set_input_stream Failed, Error Code: [0x%08X] @core_sea.c(1160),ERROR" ID="0x98602442" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call sea_entry_set_input_pcm Failed, Error Code: [0x%08X] @core_sea.c(1166),ERROR" ID="0x98602472" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(1170),INFO" ID="0x98602495" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(1180),INFO" ID="0x986024e5" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]data_port_id = %u @core_sea.c(1184),ERROR" ID="0x98602502" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(1194),INFO" ID="0x98602555" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(1205),INFO" ID="0x986025ad" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call sea_entry_get_items Failed, Error Code: [0x%08X] @core_sea.c(1211),ERROR" ID="0x986025da" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(1216),INFO" ID="0x98602605" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(1225),INFO" ID="0x9860264d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(1228),INFO" ID="0x98602665" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(1237),INFO" ID="0x986026ad" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(1239),INFO" ID="0x986026bd" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(1249),INFO" ID="0x9860270d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(1257),INFO" ID="0x9860274d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Error Code: [0x%08X] @core_sea.c(1271),ERROR" ID="0x986027ba" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call connector_get_buffer_info Failed, Error Code: [0x%08X] @core_sea.c(1302),ERROR" ID="0x986028b2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call sea_get_proc_info Failed, Error Code: [0x%08X] @core_sea.c(1349),ERROR" ID="0x98602a2a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]load_type = %u @core_sea.c(1363),ERROR" ID="0x98602a9a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]load_type = %u @core_sea.c(1375),ERROR" ID="0x98602afa" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(1226),INFO" ID="0x98602655" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call sea_entry_get_items Failed, Error Code: [0x%08X] @core_sea.c(1231),ERROR" ID="0x9860267a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(1235),INFO" ID="0x9860269d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(1244),INFO" ID="0x986026e5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(1247),INFO" ID="0x986026fd" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(1256),INFO" ID="0x98602745" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(1259),INFO" ID="0x9860275d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(1268),INFO" ID="0x986027a5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(1270),INFO" ID="0x986027b5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(1280),INFO" ID="0x98602805" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(1288),INFO" ID="0x98602845" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Error Code: [0x%08X] @core_sea.c(1302),ERROR" ID="0x986028b2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call connector_get_buffer_info Failed, Error Code: [0x%08X] @core_sea.c(1333),ERROR" ID="0x986029aa" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call sea_get_proc_info Failed, Error Code: [0x%08X] @core_sea.c(1380),ERROR" ID="0x98602b22" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]load_type = %u @core_sea.c(1394),ERROR" ID="0x98602b92" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]load_type = %u @core_sea.c(1406),ERROR" ID="0x98602bf2" />
                        </MSG_LOG>
\ No newline at end of file
index 27334a5..d8c9c79 100644 (file)
@@ -1,29 +1,30 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg1" NAME="[hifi]heartbeat count : %d @dsp_main.c(53),INFO" ID="0x980001ad" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @dsp_main.c(80),INFO" ID="0x98000285" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call core_shrb_init Failed, Error Code: [0x%08X] @dsp_main.c(86),ERROR" ID="0x980002b2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call core_msg_init Failed, Error Code: [0x%08X] @dsp_main.c(92),ERROR" ID="0x980002e2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call core_msg_init Failed, Error Code: [0x%08X] @dsp_main.c(99),ERROR" ID="0x9800031a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @dsp_main.c(106),INFO" ID="0x98000355" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @dsp_main.c(113),INFO" ID="0x9800038d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call core_msg_deinit Failed, Error Code: [0x%08X] @dsp_main.c(117),ERROR" ID="0x980003aa" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call core_msg_deinit Failed, Error Code: [0x%08X] @dsp_main.c(122),ERROR" ID="0x980003d2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call core_shrb_deinit Failed, Error Code: [0x%08X] @dsp_main.c(127),ERROR" ID="0x980003fa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @dsp_main.c(130),INFO" ID="0x98000415" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @dsp_main.c(135),INFO" ID="0x9800043d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @dsp_main.c(138),INFO" ID="0x98000455" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]state = %d @dsp_main.c(147),ERROR" ID="0x9800049a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @dsp_main.c(157),INFO" ID="0x980004ed" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @dsp_main.c(163),INFO" ID="0x9800051d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @dsp_main.c(166),INFO" ID="0x98000535" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]state = %d @dsp_main.c(171),ERROR" ID="0x9800055a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]active standby @dsp_main.c(176),ERROR" ID="0x98000582" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @dsp_main.c(179),INFO" ID="0x9800059d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @dsp_main.c(185),INFO" ID="0x980005cd" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]state = %d @dsp_main.c(188),ERROR" ID="0x980005e2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @dsp_main.c(193),INFO" ID="0x9800060d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]state = %d @dsp_main.c(205),ERROR" ID="0x9800066a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]deep standby @dsp_main.c(210),ERROR" ID="0x98000692" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg1" NAME="[hifi]heartbeat count : %d @dsp_main.c(54),INFO" ID="0x980001b5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]dsp_retrigger_msg_int success @dsp_main.c(92),ERROR" ID="0x980002e2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @dsp_main.c(103),INFO" ID="0x9800033d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call core_shrb_init Failed, Error Code: [0x%08X] @dsp_main.c(109),ERROR" ID="0x9800036a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call core_msg_init Failed, Error Code: [0x%08X] @dsp_main.c(115),ERROR" ID="0x9800039a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call core_msg_init Failed, Error Code: [0x%08X] @dsp_main.c(122),ERROR" ID="0x980003d2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @dsp_main.c(129),INFO" ID="0x9800040d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @dsp_main.c(136),INFO" ID="0x98000445" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call core_msg_deinit Failed, Error Code: [0x%08X] @dsp_main.c(140),ERROR" ID="0x98000462" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call core_msg_deinit Failed, Error Code: [0x%08X] @dsp_main.c(145),ERROR" ID="0x9800048a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call core_shrb_deinit Failed, Error Code: [0x%08X] @dsp_main.c(150),ERROR" ID="0x980004b2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @dsp_main.c(153),INFO" ID="0x980004cd" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @dsp_main.c(158),INFO" ID="0x980004f5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @dsp_main.c(161),INFO" ID="0x9800050d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]state = %d @dsp_main.c(170),ERROR" ID="0x98000552" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @dsp_main.c(180),INFO" ID="0x980005a5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @dsp_main.c(186),INFO" ID="0x980005d5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @dsp_main.c(189),INFO" ID="0x980005ed" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]state = %d @dsp_main.c(194),ERROR" ID="0x98000612" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]active standby @dsp_main.c(199),ERROR" ID="0x9800063a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @dsp_main.c(202),INFO" ID="0x98000655" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @dsp_main.c(208),INFO" ID="0x98000685" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]state = %d @dsp_main.c(211),ERROR" ID="0x9800069a" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @dsp_main.c(216),INFO" ID="0x980006c5" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call probe_status_init Failed, Error Code: [0x%08X] @dsp_main.c(327),ERROR" ID="0x98000a3a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call sys_cmd_init Failed, Error Code: [0x%08X] @dsp_main.c(336),ERROR" ID="0x98000a82" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]state = %d @dsp_main.c(228),ERROR" ID="0x98000722" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]deep standby @dsp_main.c(233),ERROR" ID="0x9800074a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @dsp_main.c(239),INFO" ID="0x9800077d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call probe_status_init Failed, Error Code: [0x%08X] @dsp_main.c(351),ERROR" ID="0x98000afa" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call sys_cmd_init Failed, Error Code: [0x%08X] @dsp_main.c(360),ERROR" ID="0x98000b42" />
                        </MSG_LOG>
\ No newline at end of file
index 3ab2f0f..27025eb 100644 (file)
                        <MSG STRUCTURE="diag_log_msg1" NAME="BypassMode = 0x%x @bt_transparent_bypass.c(35),INFO" ID="0x8de4011d" />
                        <MSG STRUCTURE="diag_log_msg4" NAME="[BLE_TEST] private test mode, chmap---0x%x:0x%x:0x%x,0x%x @llc_ch_asses.c(237),INFO" ID="0x8834076d" />
                        <MSG STRUCTURE="diag_log_msg2" NAME="btsdk_is_device_connected hdl:0x%x status:%d @sdk_gap_conn_management.c(608),INFO" ID="0x8b821305" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[GAP][LOGN_STACK_GAP_DIS_REGISTER] RegisterDIService success. @gap_hlp_br.c(1528),INFO" ID="0x8b8a2fc5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[GAP][LOGN_STACK_GAP_DIS_REGISTER] RegisterDIService failed. @gap_hlp_br.c(1532),WARNING" ID="0x8b8a2fe3" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[GAP] inquiry result cbk i:%d eir[i]:%d @gap_hlp_br.c(116),ERROR" ID="0x8b8a03a2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[GAP][LOGN_STACK_GAP_DIS_REGISTER] RegisterDIService success. @gap_hlp_br.c(1534),INFO" ID="0x8b8a2ff5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[GAP][LOGN_STACK_GAP_DIS_REGISTER] RegisterDIService failed. @gap_hlp_br.c(1538),WARNING" ID="0x8b8a3013" />
                        <MSG STRUCTURE="diag_log_msg3" NAME="[HCI][LK_REQUEST] REMOTE_BD_ADDR=%02x:%02x:*:*:*:%02x @hci_secu.c(877),INFO" ID="0x8ad81b6d" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="[HCI][LK_REQUEST] Remote Data Not Found, Remote Addr may be error = %x @hci_secu.c(911),INFO" ID="0x8ad81c7d" />
                        <MSG STRUCTURE="diag_log_msg3" NAME="[HCI][CHANGE_ENCRYPTION_MODE] STATUS=0x%x, HANDLE=0x%x, RESULT=0x%x @hci_secu.c(978),INFO" ID="0x8ad81e95" />
                        <MSG STRUCTURE="diag_log_msg2" NAME="[LLCP]llc_llcp_priv_uhd_req_pdu_send:param-&gt;tx_phys%d,param-&gt;tx_uhd_capability%d @llc_uhd_llcp.c(675),INFO" ID="0x894e151d" />
                        <MSG STRUCTURE="diag_log_msg3" NAME="llc_llcp_priv_uhd_up_ind_pdu_send:tx_phys%d,tx_uhd_capability%d, tx_polar%d @llc_uhd_llcp.c(713),INFO" ID="0x894e164d" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="[LLC]uhd_up_ind:pdu.instant %d @llc_uhd_llcp.c(727),INFO" ID="0x894e16bd" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="a2dp_audio: start @bt_ahi_av.c(52),WARNING" ID="0x8c9e01a3" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="a2dp_audio: suspend @bt_ahi_av.c(68),WARNING" ID="0x8c9e0223" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="a2dp_audio: set audio param stream_hdl 0x%x shmid 0x%x enable %d result 0x%x @bt_ahi_av.c(106),WARNING" ID="0x8c9e0353" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="a2dp_audio: send stream qos flag %d @bt_ahi_av.c(118),WARNING" ID="0x8c9e03b3" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="a2dp_audio: first frame @bt_ahi_av.c(162),WARNING" ID="0x8c9e0513" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="a2dp_audio: start @bt_ahi_av.c(52),ERROR" ID="0x8c9e01a2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="a2dp_audio: suspend @bt_ahi_av.c(68),ERROR" ID="0x8c9e0222" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="a2dp_audio: set audio param stream_hdl 0x%x shmid 0x%x enable %d result 0x%x @bt_ahi_av.c(106),ERROR" ID="0x8c9e0352" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="a2dp_audio: send stream qos flag %d @bt_ahi_av.c(118),ERROR" ID="0x8c9e03b2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="a2dp_audio: first frame @bt_ahi_av.c(162),ERROR" ID="0x8c9e0512" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="a2dp_audio: send stream packet too much %d @bt_ahi_av.c(198),ERROR" ID="0x8c9e0632" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="a2dp_audio: alloc buffer fail @bt_ahi_av.c(216),ERROR" ID="0x8c9e06c2" />
                        <MSG STRUCTURE="diag_log_msg3" NAME="a2dp_audio: send stream error 0x%x enable %d sta %d @bt_ahi_av.c(229),ERROR" ID="0x8c9e072a" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="a2dp_audio: send stream seq %d enable %d sta %d @bt_ahi_av.c(238),WARNING" ID="0x8c9e0773" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="a2dp_audio: send stream seq %d enable %d sta %d @bt_ahi_av.c(238),ERROR" ID="0x8c9e0772" />
                        <MSG STRUCTURE="diag_log_msg2" NAME="a2dp_audio: acquire stream error 0x%x shmid 0x%x @bt_ahi_av.c(249),ERROR" ID="0x8c9e07ca" />
                        <MSG STRUCTURE="diag_log_msg4" NAME="a2dp_audio: acquire frame empty cnt %d eos %d size %d pkt_len %d @bt_ahi_av.c(260),ERROR" ID="0x8c9e0822" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="a2dp_audio: play state enable %d sta %d @bt_ahi_av.c(265),WARNING" ID="0x8c9e084b" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="a2dp_audio: play state enable %d sta %d @bt_ahi_av.c(265),ERROR" ID="0x8c9e084a" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="a2dp_audio: release stream error 0x%x @bt_ahi_av.c(273),ERROR" ID="0x8c9e088a" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="a2dp_audio: no stream. enable %d sta %d @bt_ahi_av.c(284),WARNING" ID="0x8c9e08e3" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="a2dp_audio: no stream. enable %d sta %d @bt_ahi_av.c(284),ERROR" ID="0x8c9e08e2" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="a2dp_audio: a2dp service audio task handler @bt_ahi_av.c(294),INFO" ID="0x8c9e0935" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="a2dp_audio: start accept @bt_ahi_av.c(324),WARNING" ID="0x8c9e0a23" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="a2dp_audio: start accept @bt_ahi_av.c(324),ERROR" ID="0x8c9e0a22" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="[INFO][HOP]scst_hop_chk_en=%x @ld_acl_hop.c(138),INFO" ID="0x88c80455" />
                        <MSG STRUCTURE="diag_log_msg3" NAME="[INFO][HOP]scst_hop_chk_en=%x, nb_good_ch_thr=%d, bw=%d @ld_acl_hop.c(160),INFO" ID="0x88c80505" />
                        <MSG STRUCTURE="diag_log_msg4" NAME="[INFO][HOP]hop_check hop_info_buf[%d]=%d, hop_out=%d, diff=%d  @ld_acl_hop.c(329),INFO" ID="0x88c80a4d" />
                        <MSG STRUCTURE="diag_log_msg5" NAME="[L2CAP]SDU Reassemble memcpy_s Error, ret=%u, dest=%p, destSize=%u, src=%p, srcSize=%u @l2cap_ert.c(193),ERROR" ID="0x8adc060a" />
                        <MSG STRUCTURE="diag_log_msg5" NAME="[L2CAP]SDU Reassemble memcpy_s Error, ret=%u, dest=%p, destSize=%u, src=%p, srcSize=%u @l2cap_ert.c(209),ERROR" ID="0x8adc068a" />
                        <MSG STRUCTURE="diag_log_msg4" NAME="ap =&gt; bt ipc error, get cpu trace ret=%d, bt pc=0x%x, lr=0x%x, sp=0x%x,  @ipc.c(417),ERROR" ID="0xa02a0d0a" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="ipc error core %d =&gt; %d action=%d, called=0x%X @ipc.c(705),ERROR" ID="0xa02a160a" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="ipc error, core=%d current pc=0x%x, lr=0x%x, sp=0x%x @ipc.c(707),ERROR" ID="0xa02a161a" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="ipc error core %d =&gt; %d action=%d, called=0x%X @ipc.c(707),ERROR" ID="0xa02a161a" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="ipc error, core=%d current pc=0x%x, lr=0x%x, sp=0x%x @ipc.c(709),ERROR" ID="0xa02a162a" />
                        <MSG STRUCTURE="diag_log_msg2" NAME="[ERROR]bt_ssi_read_reg BT_CFG_FAIL[0x%x]=0x%x ... @reg_access_ram.c(146),ERROR" ID="0x8a4c0492" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="[ERR]error_handler:NULL PTR: err_id = 0x%x @bt_priv_ram.c(351),ERROR" ID="0x88da0afa" />
                        <MSG STRUCTURE="diag_log_msg2" NAME="[ERR]error_handler:ERR PARAM: err_id = 0x%x , err_code = 0x%x @bt_priv_ram.c(357),ERROR" ID="0x88da0b2a" />
                        <MSG STRUCTURE="diag_log_msg2" NAME="[ACL][END]sync_env=%d, linkid=%d @lc_tog.c(697),INFO" ID="0x89f015cd" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="[WARNING]lc_audio_sync_start invalid tog mode:%d @lc_tog.c(767),WARNING" ID="0x89f017fb" />
                        <MSG STRUCTURE="diag_log_msg2" NAME="[INFO][LLD]lld_evt_per_adv_sync_schedule:llc_env[%d]=0x%x @lld_per_evt.c(56),INFO" ID="0x897801c5" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="BT run time:%d, BT deep sleep time:%d, light sleep time:%d, BT sleep flag:%d @security_main.c(283),INFO" ID="0xa00008dd" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="BT deepsleep cnt:%d, BT light sleep cnt:%d, last veto id:%d, last veto count:%d @security_main.c(286),INFO" ID="0xa00008f5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="enter sec_main fuction @security_main.c(381),INFO" ID="0xa0000bed" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="The chip needs to be replaced. @security_main.c(555),INFO" ID="0xa000115d" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="BT year:0x%x, month:0x%x, day:0x%x, No verification is required. @security_main.c(562),INFO" ID="0xa0001195" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="The chip does not need to be verified. @security_main.c(589),INFO" ID="0xa000126d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="The chip verification failed.  @security_main.c(597),INFO" ID="0xa00012ad" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Security enhancement verification succeeded. @security_main.c(602),INFO" ID="0xa00012d5" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="BT run time:%d, BT deep sleep time:%d, light sleep time:%d, BT sleep flag:%d @security_main.c(287),INFO" ID="0xa00008fd" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="BT deepsleep cnt:%d, BT light sleep cnt:%d, last veto id:%d, last veto count:%d @security_main.c(290),INFO" ID="0xa0000915" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="PLT 32K freq is %d, cnt is %d, kick cnt is %d. @security_main.c(292),INFO" ID="0xa0000925" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="enter sec_main fuction @security_main.c(387),INFO" ID="0xa0000c1d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="The chip needs to be replaced. @security_main.c(562),INFO" ID="0xa0001195" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="BT year:0x%x, month:0x%x, day:0x%x, No verification is required. @security_main.c(569),INFO" ID="0xa00011cd" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="The chip does not need to be verified. @security_main.c(596),INFO" ID="0xa00012a5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="The chip verification failed.  @security_main.c(604),INFO" ID="0xa00012e5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="Security enhancement verification succeeded. @security_main.c(609),INFO" ID="0xa000130d" />
                        <MSG STRUCTURE="diag_log_msg2" NAME="[L2CAP][CONFIG_IND]ACTION=INVALID_CID STATUS, PSM=%d, STATUS=%d @l2cap_core_br.c(705),WARNING" ID="0x8bba160b" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="[L2CAP][ECHO_REQ] mem exhaust, data_len=%u @l2cap_core_br.c(775),WARNING" ID="0x8bba183b" />
                        <MSG STRUCTURE="diag_log_msg3" NAME="[L2CAP][ECHO_REQ] ACTION=NOT_FOUND_ACL_LINK, REMOTE_ADDR=%02x:%02x:**:**:**:%02x @l2cap_core_br.c(807),WARNING" ID="0x8bba193b" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="ahib mpc table route op_code = 0x%x not found @ahib_mpc.c(62),ERROR" ID="0x8dfa01f2" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="ahib mpc tx mcu packet NO memory. @ahib_mpc.c(76),ERROR" ID="0x8dfa0262" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="ahib mpc tx mcu packet memcpy failed @ahib_mpc.c(82),ERROR" ID="0x8dfa0292" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="MPC:data send retry opcode: %x @ahib_mpc.c(86),WARNING" ID="0x8dfa02b3" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="MPC:data send retry opcode: %x @ahib_mpc.c(86),ERROR" ID="0x8dfa02b2" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="MPC:data send err opcode: %x @ahib_mpc.c(95),ERROR" ID="0x8dfa02fa" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="ahib mpc bt process packet tid= 0x%x not table route @ahib_mpc.c(137),DBG" ID="0x8dfa044e" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="ahib mpc route packet param is error! @ahib_mpc.c(150),ERROR" ID="0x8dfa04b2" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[PMU][ERROR]bt cali start pmu state change fail @bt_cali_main.c(336),ERROR" ID="0x893c0a82" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[PMU][ERROR]bt cali end pmu state change fail @bt_cali_main.c(344),ERROR" ID="0x893c0ac2" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="interrupt times account for more than the high percent is %d @ld_fm_ram.c(178),INFO" ID="0x88b20595" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="clkn(0x%x) intstat(0x%x), abort(%d)errCode(0x%x) @ld_fm_ram.c(245),WARNING" ID="0x88b207ab" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="[ERROR]ld_fm_frame_isr:ts=0x%x, sw_id=%d, etptr=0x%x, hw_id=%d @ld_fm_ram.c(277),ERROR" ID="0x88b208aa" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="[WARNING]ld_fm_frame_isr:ts=0x%x, cs_idx=%d @ld_fm_ram.c(280),WARNING" ID="0x88b208c3" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="ld_fm_frame_isr clk(0x%x)intstat(0x%x)etptr(0x%x)lr(0x%x) @ld_fm_ram.c(297),ERROR" ID="0x88b2094a" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[WARNING]ld_fm_frame_isr:ET%d:extab0=0x%x, extab1=0x%x @ld_fm_ram.c(325),WARNING" ID="0x88b20a2b" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="[WARNING][LD]ld_fm_sket_isr:elt=NULL, sket_clkn=0x%x, clock=0x%x, finecnt=0x%x, etptr=0x%x @ld_fm_ram.c(349),WARNING" ID="0x88b20aeb" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="[WARNING][LD]ld_fm_sket_isr:timestamp=0x%x, cs_idx=%d @ld_fm_ram.c(353),WARNING" ID="0x88b20b0b" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[WARNING][LD]ld_fm_sket_isr:hw_id=%d @ld_fm_ram.c(358),WARNING" ID="0x88b20b33" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[ERROR]ld_fm_sket_isr:ET%d:extab0=0x%x, extab1=0x%x @ld_fm_ram.c(382),ERROR" ID="0x88b20bf2" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="ld_fm_sket_isr:clkn=0x%x, timestamp=0x%x, sket_clkn=0x%x, etptr=0x%x @ld_fm_ram.c(508),WARNING" ID="0x88b20fe3" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="ld_fm_sket_isr:cs_idx=%d, hw_id=%d @ld_fm_ram.c(509),WARNING" ID="0x88b20feb" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="ld_fm_sket_isr:timestamp=0x%x, cs_idx=%d @ld_fm_ram.c(513),WARNING" ID="0x88b2100b" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="[INFO][EA]ld_fm_sket_isr cur time=0%x , frm_cbk=0%x, sket_clkn=0%x, timestamp=0%x @ld_fm_ram.c(522),INFO" ID="0x88b21055" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="[WARNING][LD]ld_fm_process:fifo_last_ts=0x%x,frm_cbk=0x%x,cs_idx=%d,insert_ts=0x%x @ld_fm_ram.c(587),WARNING" ID="0x88b2125b" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[WARNING][LD]ld_fm_process:sket clk=0x0%x, frm_cbk=0x0%x, cs_idx=%d @ld_fm_ram.c(594),WARNING" ID="0x88b21293" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="[ERROR][LD]ld_fm_process:err et mode=0x%x, elt=0x%x, clk=0x%x, LR=0x%x @ld_fm_ram.c(615),ERROR" ID="0x88b2133a" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="[ERROR][param]ld_fm_process ld_fm_env.free=NULL, timestamp=0x%x, fifo cnt=%d  @ld_fm_ram.c(623),ERROR" ID="0x88b2137a" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="[WARNING][LD]ld_fm_prog_push:timestamp=0x%x, clock=0x%x, LR=0x%x, format=0x%x @ld_fm_ram.c(653),WARNING" ID="0x88b2146b" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[WARN][LD]ld_fm_prog_push:err timestamp=0x%x, clock=0x%x, LR=0x%x @ld_fm_ram.c(655),WARNING" ID="0x88b2147b" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[WARNING]ld_fm_frame_isr: clear again, irq_stat(0x%x) @ld_fm_ram.c(242),WARNING" ID="0x88b20793" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="clkn(0x%x) intstat(0x%x), abort(%d)errCode(0x%x) @ld_fm_ram.c(247),WARNING" ID="0x88b207bb" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="errint(0x%x) @ld_fm_ram.c(248),WARNING" ID="0x88b207c3" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="[ERROR]ld_fm_frame_isr:ts=0x%x, sw_id=%d, etptr=0x%x, hw_id=%d @ld_fm_ram.c(280),ERROR" ID="0x88b208c2" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[WARNING]ld_fm_frame_isr:ts=0x%x, cs_idx=%d @ld_fm_ram.c(283),WARNING" ID="0x88b208db" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="ld_fm_frame_isr clk(0x%x)intstat(0x%x)etptr(0x%x)lr(0x%x) @ld_fm_ram.c(300),ERROR" ID="0x88b20962" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[WARNING]ld_fm_frame_isr:ET%d:extab0=0x%x, extab1=0x%x @ld_fm_ram.c(328),WARNING" ID="0x88b20a43" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="[WARNING][LD]ld_fm_sket_isr:elt=NULL, sket_clkn=0x%x, clock=0x%x, finecnt=0x%x, etptr=0x%x @ld_fm_ram.c(352),WARNING" ID="0x88b20b03" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[WARNING][LD]ld_fm_sket_isr:timestamp=0x%x, cs_idx=%d @ld_fm_ram.c(356),WARNING" ID="0x88b20b23" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[WARNING][LD]ld_fm_sket_isr:hw_id=%d @ld_fm_ram.c(361),WARNING" ID="0x88b20b4b" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[ERROR]ld_fm_sket_isr:ET%d:extab0=0x%x, extab1=0x%x @ld_fm_ram.c(385),ERROR" ID="0x88b20c0a" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="ld_fm_sket_isr:clkn=0x%x, timestamp=0x%x, sket_clkn=0x%x, etptr=0x%x @ld_fm_ram.c(511),WARNING" ID="0x88b20ffb" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="ld_fm_sket_isr:cs_idx=%d, hw_id=%d @ld_fm_ram.c(512),WARNING" ID="0x88b21003" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="ld_fm_sket_isr:timestamp=0x%x, cs_idx=%d @ld_fm_ram.c(516),WARNING" ID="0x88b21023" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="[INFO][EA]ld_fm_sket_isr cur time=0%x , frm_cbk=0%x, sket_clkn=0%x, timestamp=0%x @ld_fm_ram.c(525),INFO" ID="0x88b2106d" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="[WARNING][LD]ld_fm_process:fifo_last_ts=0x%x,frm_cbk=0x%x,cs_idx=%d,insert_ts=0x%x @ld_fm_ram.c(590),WARNING" ID="0x88b21273" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[WARNING][LD]ld_fm_process:sket clk=0x0%x, frm_cbk=0x0%x, cs_idx=%d @ld_fm_ram.c(597),WARNING" ID="0x88b212ab" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="[ERROR][LD]ld_fm_process:err et mode=0x%x, elt=0x%x, clk=0x%x, LR=0x%x @ld_fm_ram.c(618),ERROR" ID="0x88b21352" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[ERROR][param]ld_fm_process ld_fm_env.free=NULL, timestamp=0x%x, fifo cnt=%d  @ld_fm_ram.c(626),ERROR" ID="0x88b21392" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="[WARNING][LD]ld_fm_prog_push:timestamp=0x%x, clock=0x%x, LR=0x%x, format=0x%x @ld_fm_ram.c(656),WARNING" ID="0x88b21483" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[WARN][LD]ld_fm_prog_push:err timestamp=0x%x, clock=0x%x, LR=0x%x @ld_fm_ram.c(658),WARNING" ID="0x88b21493" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[WARNING][PAST]llc_llcp_per_sync_pdu_tree_device_pack can't get sync info @llc_past_llcp.c(130),WARNING" ID="0x89b60413" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[WARNING][PAST]llc_llcp_per_sync_pdu_two_device_check ACL disconnect or adv not enable @llc_past_llcp.c(183),WARNING" ID="0x89b605bb" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="[WARNING][PAST]llc_llcp_per_sync_pdu_two_device_check periodic not enable or aux has released auxcs = 0x%x @llc_past_llcp.c(191),WARNING" ID="0x89b605fb" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="ble core: App Start Ble Adv get localname or mac err @bt_dft.c(744),ERROR" ID="0x8d0a1742" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="MPC: ResponseNameRead Response:0x%x @bt_dft.c(759),INFO" ID="0x8d0a17bd" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="MPC: bt dft write name:0x%x success @bt_dft.c(769),INFO" ID="0x8d0a180d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="MPC: bt adpt set br edr scan ble only not support Br Scan! @bt_dft.c(775),INFO" ID="0x8d0a183d" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="MPC: BtSetScan %d, return:%d @bt_dft.c(786),INFO" ID="0x8d0a1895" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="MPC: adpt gap set page scan window %d, return:%d @bt_dft.c(791),INFO" ID="0x8d0a18bd" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="MPC: bt clear scan mode:0x%x, success @bt_dft.c(809),INFO" ID="0x8d0a194d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="MPC: bt set scan start:0x%x, success @bt_dft.c(822),INFO" ID="0x8d0a19b5" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="MPC: bt disconnect link:pkt_len = %d, entry @bt_dft.c(834),INFO" ID="0x8d0a1a15" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="MPC:remote_addr 0x%02x:%02x:**:**:**:%02x @bt_dft.c(840),INFO" ID="0x8d0a1a45" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="MPC: No device connected @bt_dft.c(849),INFO" ID="0x8d0a1a8d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="MPC: memcpy error @bt_dft.c(856),INFO" ID="0x8d0a1ac5" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="MPC: adpt gap disconnect link return:%d @bt_dft.c(866),INFO" ID="0x8d0a1b15" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="MPC: bt disconnect link:0x%x, success @bt_dft.c(874),INFO" ID="0x8d0a1b55" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="MPC: bt get ble con devinfo br: 0x%x:0x%x:**:**:**:0x%x:0x%x @bt_dft.c(902),INFO" ID="0x8d0a1c35" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="MPC: bt get ble con devinfo ble:0x%x:0x%x:**:**:**:0x%x:0x%x @bt_dft.c(904),INFO" ID="0x8d0a1c45" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="MPC: bt get ble con devinfo: Get device name fail @bt_dft.c(912),INFO" ID="0x8d0a1c85" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="MPC: bt get ble con devinfo formate info error @bt_dft.c(925),INFO" ID="0x8d0a1ced" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="bt get ble con devinfo ble connect state:%u @bt_dft.c(929),INFO" ID="0x8d0a1d0d" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="MPC: bt get ble con devinfo ble:0x%x:0x%x:**:**:**:0x%x @bt_dft.c(946),INFO" ID="0x8d0a1d95" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="MPC: bt get ble con devinfo: formate info error @bt_dft.c(953),INFO" ID="0x8d0a1dcd" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="bt get ble con devinfo ble connect state:%u @bt_dft.c(958),INFO" ID="0x8d0a1df5" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="MPC: bt change adv addr type:pkt_len = %d, entry @bt_dft.c(966),INFO" ID="0x8d0a1e35" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="MPC: bt change adv addr type:addr_type = %d, use_private_addr = %d @bt_dft.c(975),INFO" ID="0x8d0a1e7d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="MPC: bt change adv addr type:0x%x, success @bt_dft.c(978),INFO" ID="0x8d0a1e95" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="MPC: bt reg default gatt services success @bt_dft.c(985),INFO" ID="0x8d0a1ecd" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Exit for pointer is NULL @bt_dft.c(1078),ERROR" ID="0x8d0a21b2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="bt dft recieve cmd opcode= 0x%X @bt_dft.c(1101),INFO" ID="0x8d0a226d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="bt dft proc dongle cmds tarns_id= 0x%X @bt_dft.c(1152),INFO" ID="0x8d0a2405" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="bt dft proc dongle cmds opcode = 0x%X @bt_dft.c(1153),INFO" ID="0x8d0a240d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="bt dft proc dongle cmds control= 0x%X @bt_dft.c(1154),INFO" ID="0x8d0a2415" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="bt dft proc dongle cmds sequence= 0x%X @bt_dft.c(1155),INFO" ID="0x8d0a241d" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="bt dft proc dongle cmds param[%d] = 0x%X @bt_dft.c(1158),INFO" ID="0x8d0a2435" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="dft not idle @bt_dft.c(1168),INFO" ID="0x8d0a2485" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="dft dongle param pass @bt_dft.c(1182),INFO" ID="0x8d0a24f5" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="BT_DFT: bt dft is in rf test %d @bt_dft.c(1196),INFO" ID="0x8d0a2565" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="BT_DFT: bt dft dongle rf test start @bt_dft.c(1202),INFO" ID="0x8d0a2595" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="BT_DFT: bt dft rf aging start @bt_dft.c(1225),INFO" ID="0x8d0a264d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="BT_DFT: bt dft rf aging stop @bt_dft.c(1247),INFO" ID="0x8d0a26fd" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="BT_DFT: bt dft aging test control param is NULL @bt_dft.c(1266),INFO" ID="0x8d0a2795" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="BT_DFT: bt dft aging test control param-&gt;pkt_ptr is NULL @bt_dft.c(1271),INFO" ID="0x8d0a27bd" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="BT_DFT: bt dft aging test control %d @bt_dft.c(1280),INFO" ID="0x8d0a2805" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="MPC: bt adpt set br edr scan ble only not support Br Scan! @bt_dft.c(776),INFO" ID="0x8d0a1845" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="MPC: BtSetScan %d, return:%d @bt_dft.c(787),INFO" ID="0x8d0a189d" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="MPC: adpt gap set page scan window %d, return:%d @bt_dft.c(792),INFO" ID="0x8d0a18c5" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="MPC: bt clear scan mode:0x%x, success @bt_dft.c(810),INFO" ID="0x8d0a1955" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="MPC: bt set scan start:0x%x, success @bt_dft.c(823),INFO" ID="0x8d0a19bd" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="MPC: bt disconnect link:pkt_len = %d, entry @bt_dft.c(835),INFO" ID="0x8d0a1a1d" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="MPC:remote_addr 0x%02x:%02x:**:**:**:%02x @bt_dft.c(841),INFO" ID="0x8d0a1a4d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="MPC: No device connected @bt_dft.c(850),INFO" ID="0x8d0a1a95" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="MPC: memcpy error @bt_dft.c(857),INFO" ID="0x8d0a1acd" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="MPC: adpt gap disconnect link return:%d @bt_dft.c(867),INFO" ID="0x8d0a1b1d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="MPC: bt disconnect link:0x%x, success @bt_dft.c(875),INFO" ID="0x8d0a1b5d" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="MPC: bt get ble con devinfo br: 0x%x:0x%x:**:**:**:0x%x:0x%x @bt_dft.c(903),INFO" ID="0x8d0a1c3d" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="MPC: bt get ble con devinfo ble:0x%x:0x%x:**:**:**:0x%x:0x%x @bt_dft.c(905),INFO" ID="0x8d0a1c4d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="MPC: bt get ble con devinfo: Get device name fail @bt_dft.c(913),INFO" ID="0x8d0a1c8d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="MPC: bt get ble con devinfo formate info error @bt_dft.c(926),INFO" ID="0x8d0a1cf5" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="bt get ble con devinfo ble connect state:%u @bt_dft.c(930),INFO" ID="0x8d0a1d15" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="MPC: bt get ble con devinfo ble:0x%x:0x%x:**:**:**:0x%x @bt_dft.c(947),INFO" ID="0x8d0a1d9d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="MPC: bt get ble con devinfo: formate info error @bt_dft.c(954),INFO" ID="0x8d0a1dd5" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="bt get ble con devinfo ble connect state:%u @bt_dft.c(959),INFO" ID="0x8d0a1dfd" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="MPC: bt change adv addr type:pkt_len = %d, entry @bt_dft.c(967),INFO" ID="0x8d0a1e3d" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="MPC: bt change adv addr type:addr_type = %d, use_private_addr = %d @bt_dft.c(976),INFO" ID="0x8d0a1e85" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="MPC: bt change adv addr type:0x%x, success @bt_dft.c(979),INFO" ID="0x8d0a1e9d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="MPC: bt reg default gatt services success @bt_dft.c(986),INFO" ID="0x8d0a1ed5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="Exit for pointer is NULL @bt_dft.c(1079),ERROR" ID="0x8d0a21ba" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="bt dft recieve cmd opcode= 0x%X @bt_dft.c(1102),INFO" ID="0x8d0a2275" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="bt dft proc dongle cmds tarns_id= 0x%X @bt_dft.c(1153),INFO" ID="0x8d0a240d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="bt dft proc dongle cmds opcode = 0x%X @bt_dft.c(1154),INFO" ID="0x8d0a2415" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="bt dft proc dongle cmds control= 0x%X @bt_dft.c(1155),INFO" ID="0x8d0a241d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="bt dft proc dongle cmds sequence= 0x%X @bt_dft.c(1156),INFO" ID="0x8d0a2425" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="bt dft proc dongle cmds param[%d] = 0x%X @bt_dft.c(1159),INFO" ID="0x8d0a243d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="dft not idle @bt_dft.c(1169),INFO" ID="0x8d0a248d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="dft dongle param pass @bt_dft.c(1183),INFO" ID="0x8d0a24fd" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="BT_DFT: bt dft is in rf test %d @bt_dft.c(1197),INFO" ID="0x8d0a256d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="BT_DFT: bt dft dongle rf test start @bt_dft.c(1203),INFO" ID="0x8d0a259d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="BT_DFT: bt dft rf aging start @bt_dft.c(1226),INFO" ID="0x8d0a2655" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="BT_DFT: bt dft rf aging stop @bt_dft.c(1248),INFO" ID="0x8d0a2705" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="BT_DFT: bt dft aging test control param is NULL @bt_dft.c(1267),INFO" ID="0x8d0a279d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="BT_DFT: bt dft aging test control param-&gt;pkt_ptr is NULL @bt_dft.c(1272),INFO" ID="0x8d0a27c5" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="BT_DFT: bt dft aging test control %d @bt_dft.c(1281),INFO" ID="0x8d0a280d" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="sco disconnect complete sco_hdl=0x%x @tladapter.c(159),ERROR" ID="0x8b9c04fa" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="GET NV ERR, NV Buf is NULL, err_line = %d @bt_mdmrfabb_global.c(1017),ERROR" ID="0x89381fca" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="GET NV ERR, err_line = %d @bt_mdmrfabb_global.c(1027),ERROR" ID="0x8938201a" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="ble core: App connect fail: %d @ble_core.c(648),ERROR" ID="0x8cc01442" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="ble core: App Set Ble Sec Params err! pkt_len = %u @ble_core.c(658),ERROR" ID="0x8cc01492" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="ble core: App Set Ble Sec Params fail: %d @ble_core.c(664),ERROR" ID="0x8cc014c2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: app get ble core connect status, param NULL @ble_core.c(673),ERROR" ID="0x8cc0150a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: app get ble core connect status, pkt_ptr NULL @ble_core.c(678),ERROR" ID="0x8cc01532" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: app get ble core connect status, the link does not exist @ble_core.c(689),ERROR" ID="0x8cc0158a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: The link does not exist @ble_core.c(794),INFO" ID="0x8cc018d5" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble core: ConnModeUpdate ignore = %d @ble_core.c(801),INFO" ID="0x8cc0190d" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="ble core: update conn param ignore, mode:%d, cur int:%d @ble_core.c(813),INFO" ID="0x8cc0196d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble core: ble update connection start fail: %d @ble_core.c(827),ERROR" ID="0x8cc019da" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: app update conn params param null @ble_core.c(838),ERROR" ID="0x8cc01a32" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: update param err @ble_core.c(844),ERROR" ID="0x8cc01a62" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: link is not connected when update connect params @ble_core.c(852),ERROR" ID="0x8cc01aa2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble core: conn params type error = %d @ble_core.c(866),ERROR" ID="0x8cc01b12" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble core: sais notify data monitor memcpy rmt_bd fail: %d @ble_core.c(889),ERROR" ID="0x8cc01bca" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: app notify ble baterry level NULL @ble_core.c(905),ERROR" ID="0x8cc01c4a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble core: app notify ble baterry level fail: %d @ble_core.c(911),ERROR" ID="0x8cc01c7a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: ble notify data para is NULL @ble_core.c(921),ERROR" ID="0x8cc01cca" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble core: ble notify data fail ret: %x @ble_core.c(932),ERROR" ID="0x8cc01d22" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble core: ble disconnect error, the link does not exist. handle = %x @ble_core.c(950),ERROR" ID="0x8cc01db2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: The number of links has reached the maximum. @ble_core.c(1002),INFO" ID="0x8cc01f55" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: ble state ind handle message is NULL @ble_core.c(1026),ERROR" ID="0x8cc02012" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: The number of links has reached the maximum. @ble_core.c(1035),ERROR" ID="0x8cc0205a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: ble state ind rmt is NULL @ble_core.c(1081),ERROR" ID="0x8cc021ca" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble core: ble state ind memcpy rmt fail: %d @ble_core.c(1088),ERROR" ID="0x8cc02202" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: app ble smp key handle message is NULL @ble_core.c(1102),ERROR" ID="0x8cc02272" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble core: ble state ind memcpy rmt fail: %d @ble_core.c(1147),ERROR" ID="0x8cc023da" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble log: AppBleConnResult msg_data is NULL @ble_core.c(1174),ERROR" ID="0x8cc024b2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble log: AppBleConnResult link does not exist on handle:%x @ble_core.c(1181),ERROR" ID="0x8cc024ea" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble core: conn update result fail = %d @ble_core.c(1209),WARNING" ID="0x8cc025cb" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: Had Active Disconn,not to retry @ble_core.c(1334),INFO" ID="0x8cc029b5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ANCS]500ms comes! @ble_core.c(1366),INFO" ID="0x8cc02ab5" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble core: unsupported msg_id: 0x%x @ble_core.c(1386),INFO" ID="0x8cc02b55" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble core: app ble init fail ret:%x @ble_core.c(1482),ERROR" ID="0x8cc02e52" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: ble core connect proc cmds param NULL @ble_core.c(1516),ERROR" ID="0x8cc02f62" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: ble core connect proc cmds pkt_ptr NULL @ble_core.c(1521),ERROR" ID="0x8cc02f8a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: mpc param is null! @ble_core.c(673),ERROR" ID="0x8cc0150a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: mpc pkt_ptr is null! @ble_core.c(678),ERROR" ID="0x8cc01532" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[AHI]set ctkd param ctkd=%d @ble_core.c(685),ERROR" ID="0x8cc0156a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: app get ble core connect status, param NULL @ble_core.c(693),ERROR" ID="0x8cc015aa" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: app get ble core connect status, pkt_ptr NULL @ble_core.c(698),ERROR" ID="0x8cc015d2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: app get ble core connect status, the link does not exist @ble_core.c(709),ERROR" ID="0x8cc0162a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: The link does not exist @ble_core.c(814),INFO" ID="0x8cc01975" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble core: ConnModeUpdate ignore = %d @ble_core.c(821),INFO" ID="0x8cc019ad" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="ble core: update conn param ignore, mode:%d, cur int:%d @ble_core.c(833),INFO" ID="0x8cc01a0d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble core: ble update connection start fail: %d @ble_core.c(847),ERROR" ID="0x8cc01a7a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: app update conn params param null @ble_core.c(858),ERROR" ID="0x8cc01ad2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: update param err @ble_core.c(864),ERROR" ID="0x8cc01b02" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: link is not connected when update connect params @ble_core.c(872),ERROR" ID="0x8cc01b42" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble core: conn params type error = %d @ble_core.c(886),ERROR" ID="0x8cc01bb2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble core: sais notify data monitor memcpy rmt_bd fail: %d @ble_core.c(909),ERROR" ID="0x8cc01c6a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: app notify ble baterry level NULL @ble_core.c(925),ERROR" ID="0x8cc01cea" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble core: app notify ble baterry level fail: %d @ble_core.c(931),ERROR" ID="0x8cc01d1a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: ble notify data para is NULL @ble_core.c(941),ERROR" ID="0x8cc01d6a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble core: ble notify data fail ret: %x @ble_core.c(952),ERROR" ID="0x8cc01dc2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble core: ble disconnect error, the link does not exist. handle = %x @ble_core.c(970),ERROR" ID="0x8cc01e52" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: The number of links has reached the maximum. @ble_core.c(1022),INFO" ID="0x8cc01ff5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: ble state ind handle message is NULL @ble_core.c(1046),ERROR" ID="0x8cc020b2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: The number of links has reached the maximum. @ble_core.c(1055),ERROR" ID="0x8cc020fa" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: ble state ind rmt is NULL @ble_core.c(1101),ERROR" ID="0x8cc0226a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble core: ble state ind memcpy rmt fail: %d @ble_core.c(1108),ERROR" ID="0x8cc022a2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: app ble smp key handle message is NULL @ble_core.c(1122),ERROR" ID="0x8cc02312" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: key miss param is null! @ble_core.c(1158),ERROR" ID="0x8cc02432" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble core: ble state ind memcpy rmt fail: %d @ble_core.c(1169),ERROR" ID="0x8cc0248a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble log: AppBleConnResult msg_data is NULL @ble_core.c(1196),ERROR" ID="0x8cc02562" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble log: AppBleConnResult link does not exist on handle:%x @ble_core.c(1203),ERROR" ID="0x8cc0259a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble core: conn update result fail = %d @ble_core.c(1231),WARNING" ID="0x8cc0267b" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: Had Active Disconn,not to retry @ble_core.c(1356),INFO" ID="0x8cc02a65" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[ANCS]500ms comes! @ble_core.c(1388),INFO" ID="0x8cc02b65" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble core: unsupported msg_id: 0x%x @ble_core.c(1408),INFO" ID="0x8cc02c05" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble core: app ble init fail ret:%x @ble_core.c(1504),ERROR" ID="0x8cc02f02" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: ble core connect proc cmds param NULL @ble_core.c(1538),ERROR" ID="0x8cc03012" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: ble core connect proc cmds pkt_ptr NULL @ble_core.c(1543),ERROR" ID="0x8cc0303a" />
                        <MSG STRUCTURE="diag_log_msg2" NAME="[ICO]accept status = %d, conhdl = %d @llc_iso_ico_hci.c(132),INFO" ID="0x89fa0425" />
                        <MSG STRUCTURE="diag_log_msg2" NAME="[iso_debug]remove ico 0x%x, %d @llc_iso_ico_hci.c(383),INFO" ID="0x89fa0bfd" />
                        <MSG STRUCTURE="diag_log_msg3" NAME="[ICO_debug]channel_num = %d, event_counter1 = %d, event_count2 = %d @llc_iso_ico_hci.c(441),INFO" ID="0x89fa0dcd" />
                        <MSG STRUCTURE="diag_log_msg2" NAME="[WARNING] llcp_channel_map_req_handler, INSTANT_PASSED, instant=%d, counter=%d @llc_llcp.c(3624),WARNING" ID="0x88387143" />
                        <MSG STRUCTURE="diag_log_msg2" NAME="[INFO][LLC]llc_channel_map_instant_exec:dummy=%d,opcode=%d @llc_llcp.c(3663),INFO" ID="0x8838727d" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[WARNING][LLC]llcp_channel_map_req_handler:llc_env_ptr is null @llc_llcp.c(3693),WARNING" ID="0x8838736b" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="smp_pair_new_patch @patch_bth.c(43),INFO" ID="0x8d54015d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[AVDTP][GET_SEP_FAIL] Can not get sep info @patch_bth.c(147),WARNING" ID="0x8d54049b" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[STACK][RECV_RING_STOP] @patch_bth.c(235),INFO" ID="0x8d54075d" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[ATT_GATT] att error rsp opcode:0x%x handle:%d error:0x%x @patch_bth.c(315),ERROR" ID="0x8d5409da" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="smp_pair_new_patch @patch_bth.c(52),INFO" ID="0x8d5401a5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[AVDTP][GET_SEP_FAIL] Can not get sep info @patch_bth.c(156),WARNING" ID="0x8d5404e3" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[STACK][RECV_RING_STOP] @patch_bth.c(244),INFO" ID="0x8d5407a5" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[ATT_GATT] att error rsp opcode:0x%x handle:%d error:0x%x @patch_bth.c(324),ERROR" ID="0x8d540a22" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[SMP]PAIRING_REQ_RECV @patch_bth.c(501),ERROR" ID="0x8d540faa" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="ble add ble white list fail: %d @bt_mpc_adpt_gap.c(52),ERROR" ID="0x8dd401a2" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="ble add ble white list params err! len = %d @bt_mpc_adpt_gap.c(56),ERROR" ID="0x8dd401c2" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="ble remove all ble white list fail: %d @bt_mpc_adpt_gap.c(71),ERROR" ID="0x8dd4023a" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="bt mpc read remote rssi: %d @bt_mpc_adpt_gap.c(522),ERROR" ID="0x8dd41052" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="bt mpc read remote rssi err! len = %d @bt_mpc_adpt_gap.c(525),ERROR" ID="0x8dd4106a" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[ECC]release semaphore fail @ecc_p256.c(1857),INFO" ID="0x89463a0d" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="[HCI] remove remote exceed upper limit %d addr:%02x:%02x:xx:xx:xx:%02x! @hci_hlp_ram.c(522),ERROR" ID="0x8ba81052" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[HCI]memcpy_s&#160;error @hci_hlp_ram.c(542),ERROR" ID="0x8ba810f2" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="[HCI] remove remote exceed upper limit %d addr:%02x:%02x:xx:xx:xx:%02x! @hci_hlp_ram.c(524),ERROR" ID="0x8ba81062" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[HCI]memcpy_s&#160;error @hci_hlp_ram.c(544),ERROR" ID="0x8ba81102" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="rx_phy is %d @patch_llc.c(19),INFO" ID="0x8a5e009d" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[ATT]memcpy_s&#160;error @att_reserve.c(141),ERROR" ID="0x8dee046a" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="[productline cali]productline_cali_start_tx, freq=%d, @bt_productline.c(41),INFO" ID="0x88fc014d" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="bt mpc adapter gatt mtu config req interface fail, ret%d @bt_mpc_adpt_gatt.c(677),WARNING" ID="0x8dd6152b" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="bt mpc adapter gatt get hid report map req param len error, len = %u @bt_mpc_adpt_gatt.c(689),ERROR" ID="0x8dd6158a" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="bt mpc adapter gatt get hid report map req interface fail, ret%d @bt_mpc_adpt_gatt.c(696),WARNING" ID="0x8dd615c3" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="bt mpc adapter gatt read descriptor req param len error, len = %u @bt_mpc_adpt_gatt.c(753),WARNING" ID="0x8dd6178b" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="bt mpc adapter gatt read descriptor req param fail, ret%d @bt_mpc_adpt_gatt.c(759),WARNING" ID="0x8dd617bb" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="bt mpc adapter gatt mtu set req param len error, len = %u @bt_mpc_adpt_gatt.c(771),ERROR" ID="0x8dd6181a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="bt mpc adapter gatt mtu set req interface fail, ret%d @bt_mpc_adpt_gatt.c(778),WARNING" ID="0x8dd61853" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="bt mpc adapter gatt read character req. @bt_mpc_adpt_gatt.c(706),INFO" ID="0x8dd61615" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="bt mpc adapter gatt read character req param len error, len = %u @bt_mpc_adpt_gatt.c(709),WARNING" ID="0x8dd6162b" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="bt mpc adapter gatt read character req param fail, ret%d @bt_mpc_adpt_gatt.c(716),WARNING" ID="0x8dd61663" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="bt mpc adapter gatt read descriptor req param len error, len = %u @bt_mpc_adpt_gatt.c(728),WARNING" ID="0x8dd616c3" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="bt mpc adapter gatt read descriptor req param fail, ret%d @bt_mpc_adpt_gatt.c(734),WARNING" ID="0x8dd616f3" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="bt mpc adapter gatt mtu set req param len error, len = %u @bt_mpc_adpt_gatt.c(746),ERROR" ID="0x8dd61752" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="bt mpc adapter gatt mtu set req interface fail, ret%d @bt_mpc_adpt_gatt.c(753),WARNING" ID="0x8dd6178b" />
                        <MSG STRUCTURE="diag_log_msg3" NAME="[BIS]rxmaxtime=%d,sub_intv=%d,bis_spacing=%d @lld_bis.c(279),INFO" ID="0x895c08bd" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[ERROR][BIS]bis tx desc alloc fail @lld_bis.c(455),ERROR" ID="0x895c0e3a" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[WARNING][BIS]create elt fail @lld_bis.c(521),WARNING" ID="0x895c104b" />
                        <MSG STRUCTURE="diag_log_msg2" NAME="[INFO][LLC][AOA]lld_cte_conn_rx_hw_set:phyrate=%d, slot_duration=%d @lld_cte.c(504),INFO" ID="0x88620fc5" />
                        <MSG STRUCTURE="diag_log_msg4" NAME="[INFO][BT][CTE]lld_cte_iq_process:slot_dur = 0x%x, cte_time = %d, cte_type = %d, samp_cnt = %d @lld_cte.c(684),INFO" ID="0x88621565" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[INFO][CTE]lld_cte_save_iq_samp: suppflag DO NOT exist! @lld_cte.c(730),INFO" ID="0x886216d5" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="[HCI][SEND_ACL_DATA] SLOT=%u, LEN=%u, Remaining Packet NUM=%u, HANDLE=0x%x @hci_data_proc.c(134),INFO" ID="0x8bda0435" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[HCI]memcpy error @hci_data_proc.c(394),ERROR" ID="0x8bda0c52" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[HCI]memcpy error @hci_data_proc.c(400),ERROR" ID="0x8bda0c82" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[HCI][RECV_ACL_DATA] CONN_HANDLE=0x%x, link not found @hci_data_proc.c(489),INFO" ID="0x8bda0f4d" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[HCI][H--&gt;C] OPCODE=0x%x, HANDLE=0x%x, LEN=%u @hci_data_proc.c(697),INFO" ID="0x8bda15cd" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="[HCI][H--&gt;C] OPCODE=0x%x, OGF=0x%x, disc_reason=0x%x, LEN=%u @hci_data_proc.c(707),INFO" ID="0x8bda161d" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="[HCI][H--&gt;C] OPCODE=0x%x, OGF=0x%x, OCF=0x%x, LEN=%u @hci_data_proc.c(713),WARNING" ID="0x8bda164b" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[HCI][H--&gt;C] OPCODE=0x%x, HANDLE=0x%x, LEN=%u @hci_data_proc.c(734),DBG" ID="0x8bda16f6" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="[HCI][H--&gt;C] OPCODE=0x%x, OGF=0x%x, OCF=0x%x, LEN=%u @hci_data_proc.c(739),DBG" ID="0x8bda171e" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[HCI][H--&gt;C] LEN=%u @hci_data_proc.c(754),DBG" ID="0x8bda1796" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="[HCI][H--&gt;C] %02x %02x %02x %02x @hci_data_proc.c(760),DBG" ID="0x8bda17c6" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[HCI][H--&gt;C] %02x %02x %02x @hci_data_proc.c(765),DBG" ID="0x8bda17ee" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="[HCI][H--&gt;C] %02x %02x @hci_data_proc.c(768),DBG" ID="0x8bda1806" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[HCI][H--&gt;C] %02x @hci_data_proc.c(770),DBG" ID="0x8bda1816" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[A2DP][HCI] a2dp_audio:first frame to btc, only for a2dp service. @hci_data_proc.c(789),INFO" ID="0x8bda18ad" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="[HCI][SEND_ACL_DATA] SLOT=%u, LEN=%u, Remaining Packet NUM=%u, HANDLE=0x%x @hci_data_proc.c(146),INFO" ID="0x8bda0495" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[HCI]memcpy error @hci_data_proc.c(406),ERROR" ID="0x8bda0cb2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[HCI]memcpy error @hci_data_proc.c(412),ERROR" ID="0x8bda0ce2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[HCI][RECV_ACL_DATA] CONN_HANDLE=0x%x, link not found @hci_data_proc.c(501),INFO" ID="0x8bda0fad" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[HCI][H--&gt;C] OPCODE=0x%x, HANDLE=0x%x, LEN=%u @hci_data_proc.c(709),INFO" ID="0x8bda162d" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="[HCI][H--&gt;C] OPCODE=0x%x, OGF=0x%x, disc_reason=0x%x, LEN=%u @hci_data_proc.c(719),INFO" ID="0x8bda167d" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="[HCI][H--&gt;C] OPCODE=0x%x, OGF=0x%x, OCF=0x%x, LEN=%u @hci_data_proc.c(725),WARNING" ID="0x8bda16ab" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[HCI][H--&gt;C] OPCODE=0x%x, HANDLE=0x%x, LEN=%u @hci_data_proc.c(746),DBG" ID="0x8bda1756" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="[HCI][H--&gt;C] OPCODE=0x%x, OGF=0x%x, OCF=0x%x, LEN=%u @hci_data_proc.c(751),DBG" ID="0x8bda177e" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[HCI][H--&gt;C] LEN=%u @hci_data_proc.c(766),DBG" ID="0x8bda17f6" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="[HCI][H--&gt;C] %02x %02x %02x %02x @hci_data_proc.c(772),DBG" ID="0x8bda1826" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[HCI][H--&gt;C] %02x %02x %02x @hci_data_proc.c(777),DBG" ID="0x8bda184e" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[HCI][H--&gt;C] %02x %02x @hci_data_proc.c(780),DBG" ID="0x8bda1866" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[HCI][H--&gt;C] %02x @hci_data_proc.c(782),DBG" ID="0x8bda1876" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[A2DP][HCI] a2dp_audio:first frame to btc, only for a2dp service. @hci_data_proc.c(801),INFO" ID="0x8bda190d" />
                        <MSG STRUCTURE="diag_log_msg4" NAME="[BTH MIPS][TRANS_TASK][%ld]MS,[RECV TASK][%ld]MS, [SCHEDULE TASK][%ld]MS, [ISR][%ld]MS @bt_dfx.c(108),INFO" ID="0x8df80365" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="[INFO][HCI]hci_rd_phy_cmd_handler Enter! conhdl=%d @lc_hci_uhd.c(56),INFO" ID="0x89a401c5" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[INFO][HCI]hci_rd_phy_cmd_handler:lc_env_ptr is NULL @lc_hci_uhd.c(62),WARNING" ID="0x89a401f3" />
                        <MSG STRUCTURE="diag_log_msg2" NAME="audio_debug ipc_send dsp begin,sequence_number = 0x%x,length = 0x%x. @a2dp_hlp_ram.c(93),INFO" ID="0x8ba002ed" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="audio_debug ready to go =======ipc_send dsp end===ret = %d. @a2dp_hlp_ram.c(100),INFO" ID="0x8ba00325" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[ERROR]audio_debug ipc2dsp_msg_str fail @a2dp_hlp_ram.c(102),WARNING" ID="0x8ba00333" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="a2dp_audio: save active device addr 0x%02x:0x%02x:**:**:**:0x%02x @a2dp_hlp_ram.c(521),ERROR" ID="0x8ba0104a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="a2dp_audio: memcpy_s failed @a2dp_hlp_ram.c(523),ERROR" ID="0x8ba0105a" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[param]unpack:format = NULL @bt_util_lmp.c(148),ERROR" ID="0x888204a2" />
                        <MSG STRUCTURE="diag_log_msg4" NAME="subrate:%d,new_sub_rate:%d, new_reference_event_count:%d, reference_event_count:%d @lld_enhan_con_up.c(199),INFO" ID="0x880c063d" />
                        <MSG STRUCTURE="diag_log_msg4" NAME="ts:%d, evt-&gt;high_counter:%d,continue_restart_temp:%d, evt-&gt;counter:%d @lld_enhan_con_up.c(201),INFO" ID="0x880c064d" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="GdkTimer Create TimerId:%d @gdk_cmsis.c(79),INFO" ID="0x8cb0027d" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="GdkTimer Start TimerId:%d @gdk_cmsis.c(99),DBG" ID="0x8cb0031e" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="GdkTimer Stop TimerId:%d @gdk_cmsis.c(111),DBG" ID="0x8cb0037e" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="gdk os malloc size 0 @gdk_cmsis.c(146),ERROR" ID="0x8cb00492" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="gdk os malloc FAIL size:%d @gdk_cmsis.c(153),ERROR" ID="0x8cb004ca" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="gdk os malloc size 0 @gdk_cmsis.c(152),ERROR" ID="0x8cb004c2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="gdk os malloc FAIL size:%d @gdk_cmsis.c(159),ERROR" ID="0x8cb004fa" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="ld_acl_sniff_evt_start_cbk start @ld_acl_sniff_ram.c(41),WARNING" ID="0x8a0a014b" />
                        <MSG STRUCTURE="diag_log_msg4" NAME="[diff_sched_prog illegal] diff_sched_prog=%d timestamp=%d, rx_win_size=%d, last_sync=%d @ld_acl_sniff_ram.c(102),WARNING" ID="0x8a0a0333" />
                        <MSG STRUCTURE="diag_log_msg2" NAME="[ERROR]ld_acl_sniff_evt_start_cbk:cs_idx = %d, att_nb = %d @ld_acl_sniff_ram.c(152),ERROR" ID="0x8a0a04c2" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[WARNING][BIS]current role is master @llc_bis_hci.c(497),WARNING" ID="0x89560f8b" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[WARNING][BIS]big trigger is false @llc_bis_hci.c(503),WARNING" ID="0x89560fbb" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[BTOS][MEM_INTEGRITY_CHECK]Not support! @osdep.c(680),INFO" ID="0x8b981545" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[BTOS][MEM_NEW]ALLOC_SIZE=%u alloc fail! @osdep.c(712),ERROR" ID="0x8b981642" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="[BTOS][MEM_NEW]fsm_count=%u fsm_limit=%u fsm_limit_max=%u hci_slice_rx=%u! @osdep.c(716),ERROR" ID="0x8b981662" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[MEM_FREE][%d][0x%p], caller:0x%x  @osdep.c(753),INFO" ID="0x8b98178d" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[BTOS][MEM_FREE]ERROR_CODE=%u, addr:0x%p, caller:0x%x free fail! @osdep.c(761),WARNING" ID="0x8b9817cb" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[BTOS][MEM_NEW]ALLOC_SIZE=%u, alloc fail! @osdep.c(774),WARNING" ID="0x8b981833" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[BTOS][MEM_FREE]ERROR_CODE=%u, addr:0x%p, caller:0x%x, free fail! @osdep.c(789),WARNING" ID="0x8b9818ab" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[BTOS][MEM_NEW_S]AVAILABLE_MEMORY=%u, alloc fail because under secure threshold size! @osdep.c(820),WARNING" ID="0x8b9819a3" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[BTOS][MEM_NEW]ALLOC_SIZE=%u alloc fail! @osdep.c(725),ERROR" ID="0x8b9816aa" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="[BTOS][MEM_NEW]fsm_count=%u fsm_limit=%u fsm_limit_max=%u hci_slice_rx=%u! @osdep.c(729),ERROR" ID="0x8b9816ca" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[MEM_FREE][%d][0x%p], caller:0x%x  @osdep.c(766),INFO" ID="0x8b9817f5" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[BTOS][MEM_FREE]ERROR_CODE=%u, addr:0x%p, caller:0x%x free fail! @osdep.c(774),WARNING" ID="0x8b981833" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[BTOS][MEM_NEW]ALLOC_SIZE=%u, alloc fail! @osdep.c(787),WARNING" ID="0x8b98189b" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[BTOS][MEM_FREE]ERROR_CODE=%u, addr:0x%p, caller:0x%x, free fail! @osdep.c(802),WARNING" ID="0x8b981913" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[BTOS][MEM_NEW_S]AVAILABLE_MEMORY=%u, alloc fail because under secure threshold size! @osdep.c(833),WARNING" ID="0x8b981a0b" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="[FRONTEND]bt_tx_power_get param level is %d, OUT OF RANGE @bt_mdmrfabb_config.c(97),ERROR" ID="0x88f8030a" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="memory alloc failed @sdk_spp.c(176),ERROR" ID="0x8b6c0582" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="[sdk][spp]read_stream failed ret=0x%x @sdk_spp.c(181),INFO" ID="0x8b6c05ad" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[ERROR][CTE]llcp_cte_req_handler: LLCP_CTE_REQ Received! But current version software DO NOT support this feature. @llc_llcp_ram.c(636),ERROR" ID="0x896613e2" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[ERROR][CTE]llcp_cte_rsp_handler: LLCP_SUPP_RSP Received! But current version software DO NOT support this feature. @llc_llcp_ram.c(700),ERROR" ID="0x896615e2" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[GAP][to_expire] wait_handle2 to_expire @hdlmgnt.c(428),INFO" ID="0x8ac80d65" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[HCI]CURRENT_LINK_MODE=0x%x, ACL Data Will be pend! @hci_link_br.c(217),INFO" ID="0x8bdc06cd" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[HCI] create connection addr:%02x******%02x%02x @hci_link_br.c(257),ERROR" ID="0x8bdc080a" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[HCI][CONN_COMPLETE] LINK_STATUS=0x%x, EVENT_STATUS=0x%x, CONN_HDL=0x%x @hci_link_br.c(494),ERROR" ID="0x8bdc0f72" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="[HCI][CONN_REQUEST] LINK_TYPE=0x%x, REMOTE_ADDR=%02x:%02x:**:**:**:%02x @hci_link_br.c(569),ERROR" ID="0x8bdc11ca" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="[HCI][REMOVE_LINK] REF_COUNT=%u, STATUS=%u @hci_link_br.c(653),ERROR" ID="0x8bdc146a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[HCI]CURRENT_LINK_MODE=0x%x, ACL Data Will be pend! @hci_link_br.c(220),INFO" ID="0x8bdc06e5" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[HCI] create connection addr:%02x******%02x%02x @hci_link_br.c(260),ERROR" ID="0x8bdc0822" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[HCI][CONN_COMPLETE] LINK_STATUS=0x%x, EVENT_STATUS=0x%x, CONN_HDL=0x%x @hci_link_br.c(497),ERROR" ID="0x8bdc0f8a" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="[HCI][CONN_REQUEST] LINK_TYPE=0x%x, REMOTE_ADDR=%02x:%02x:**:**:**:%02x @hci_link_br.c(572),ERROR" ID="0x8bdc11e2" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[HCI][REMOVE_LINK] REF_COUNT=%u, STATUS=%u @hci_link_br.c(656),ERROR" ID="0x8bdc1482" />
                        <MSG STRUCTURE="diag_log_msg3" NAME="[ERROR][CFG]rf ctl reg wr type err 0x%x, us_reg=0x%x, usval=0x%x @reg_access.c(58),ERROR" ID="0x893001d2" />
                        <MSG STRUCTURE="diag_log_msg3" NAME="[ERROR][CFG]rf ctl reg wr type err 0x%x, us_reg=0x%x, usval=0x%x @reg_access.c(100),ERROR" ID="0x89300322" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[ble_general_gatt] find upper cbk fail @ble_general_gatt.c(91),ERROR" ID="0x8de002da" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[ble_general_gatt] find upper cbk fail @ble_general_gatt.c(116),ERROR" ID="0x8de003a2" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="[ble_general_gatt] read ind mpc tx fail tx_cnt:%d @ble_general_gatt.c(126),ERROR" ID="0x8de003f2" />
                        <MSG STRUCTURE="diag_log_msg2" NAME="gatt server call back func unknown request_id:%d, event_type:0x%x. @ble_general_gatt.c(147),INFO" ID="0x8de0049d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt start service error:0x%x. @ble_general_gatt.c(186),ERROR" ID="0x8de005d2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt add server add service error:0x%x. @ble_general_gatt.c(198),ERROR" ID="0x8de00632" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt add server add service error:0x%x. @ble_general_gatt.c(211),ERROR" ID="0x8de0069a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt add include service add include error:0x%x. @ble_general_gatt.c(224),ERROR" ID="0x8de00702" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt add characteristic new fail @ble_general_gatt.c(255),ERROR" ID="0x8de007fa" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt add characteristic len:0x%x. @ble_general_gatt.c(262),ERROR" ID="0x8de00832" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt add characteristic error:0x%x. @ble_general_gatt.c(273),ERROR" ID="0x8de0088a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt add descriptor new fail @ble_general_gatt.c(290),ERROR" ID="0x8de00912" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt add descriptor memcpy fail: %d @ble_general_gatt.c(299),ERROR" ID="0x8de0095a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt add descriptor error:0x%x. @ble_general_gatt.c(305),ERROR" ID="0x8de0098a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt send response new fail @ble_general_gatt.c(321),ERROR" ID="0x8de00a0a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt send response memcpy fail: %d @ble_general_gatt.c(328),ERROR" ID="0x8de00a42" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt send response addr error:0x%x. @ble_general_gatt.c(334),ERROR" ID="0x8de00a72" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt send response error:0x%x. @ble_general_gatt.c(343),ERROR" ID="0x8de00aba" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt update descriptor value new fail @ble_general_gatt.c(359),ERROR" ID="0x8de00b3a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt update descriptor value memcpy fail: %d @ble_general_gatt.c(366),ERROR" ID="0x8de00b72" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt update descriptor value error:0x%x. @ble_general_gatt.c(373),ERROR" ID="0x8de00baa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt notify characteristic changed new NULL @ble_general_gatt.c(390),ERROR" ID="0x8de00c32" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt notify characteristic changed fail when notify @ble_general_gatt.c(398),ERROR" ID="0x8de00c72" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt notify characteristic changed when notify @ble_general_gatt.c(409),ERROR" ID="0x8de00cca" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble gatt start service error:0x%x. @ble_general_gatt.c(186),ERROR" ID="0x8de005d2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble gatt add server add service error:0x%x. @ble_general_gatt.c(198),ERROR" ID="0x8de00632" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble gatt add server add service error:0x%x. @ble_general_gatt.c(211),ERROR" ID="0x8de0069a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble gatt add include service add include error:0x%x. @ble_general_gatt.c(224),ERROR" ID="0x8de00702" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble gatt add characteristic new fail @ble_general_gatt.c(255),ERROR" ID="0x8de007fa" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble gatt add characteristic len:0x%x. @ble_general_gatt.c(262),ERROR" ID="0x8de00832" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble gatt add characteristic error:0x%x. @ble_general_gatt.c(273),ERROR" ID="0x8de0088a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble gatt add descriptor new fail @ble_general_gatt.c(290),ERROR" ID="0x8de00912" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble gatt add descriptor memcpy fail: %d @ble_general_gatt.c(299),ERROR" ID="0x8de0095a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble gatt add descriptor error:0x%x. @ble_general_gatt.c(305),ERROR" ID="0x8de0098a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble gatt send response new fail @ble_general_gatt.c(321),ERROR" ID="0x8de00a0a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble gatt send response memcpy fail: %d @ble_general_gatt.c(328),ERROR" ID="0x8de00a42" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble gatt send response addr error:0x%x. @ble_general_gatt.c(334),ERROR" ID="0x8de00a72" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble gatt send response error:0x%x. @ble_general_gatt.c(343),ERROR" ID="0x8de00aba" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble gatt update descriptor value new fail @ble_general_gatt.c(359),ERROR" ID="0x8de00b3a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble gatt update descriptor value memcpy fail: %d @ble_general_gatt.c(366),ERROR" ID="0x8de00b72" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble gatt update descriptor value error:0x%x. @ble_general_gatt.c(373),ERROR" ID="0x8de00baa" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble gatt notify characteristic changed new NULL @ble_general_gatt.c(390),ERROR" ID="0x8de00c32" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble gatt notify characteristic changed fail when notify @ble_general_gatt.c(398),ERROR" ID="0x8de00c72" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble gatt notify characteristic changed when notify @ble_general_gatt.c(409),ERROR" ID="0x8de00cca" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="character changed by uuid data is NULL @ble_general_gatt.c(424),ERROR" ID="0x8de00d42" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="character changed by uuid can not find hdl, ret = %d @ble_general_gatt.c(431),ERROR" ID="0x8de00d7a" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="character changed by uuid in is NULL @ble_general_gatt.c(436),ERROR" ID="0x8de00da2" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="ble gatt client characteristic value callback memcpy fail: %d @ble_general_gatt.c(673),ERROR" ID="0x8de0150a" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[BCore] gatt client write result can't find upper cbk. @ble_general_gatt.c(708),ERROR" ID="0x8de01622" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="ble gatt client call back func type=%d @ble_general_gatt.c(771),INFO" ID="0x8de0181d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt discovery service not found:0x%x. @ble_general_gatt.c(802),WARNING" ID="0x8de01913" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt discovery include service not found:0x%x. @ble_general_gatt.c(825),WARNING" ID="0x8de019cb" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt discovery characteristic new fail. @ble_general_gatt.c(841),ERROR" ID="0x8de01a4a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt discovery characteristic memset fail. @ble_general_gatt.c(846),ERROR" ID="0x8de01a72" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt discovery characteristic not found:0x%x. @ble_general_gatt.c(863),WARNING" ID="0x8de01afb" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt discovery characteristic by uuid new fail. @ble_general_gatt.c(881),ERROR" ID="0x8de01b8a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt discovery characteristic by uuid memset fail. @ble_general_gatt.c(887),ERROR" ID="0x8de01bba" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt discovery characteristic by uuid memcpy fail. @ble_general_gatt.c(901),ERROR" ID="0x8de01c2a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt discovery characteristic by uuid not found:0x%x. @ble_general_gatt.c(912),WARNING" ID="0x8de01c83" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt discovery descriptor by handle new fail. @ble_general_gatt.c(928),ERROR" ID="0x8de01d02" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt discovery descriptor by handle not found:0x%x. @ble_general_gatt.c(942),WARNING" ID="0x8de01d73" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt discovery descriptor new fail. @ble_general_gatt.c(962),ERROR" ID="0x8de01e12" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt discovery descriptor memset fail. @ble_general_gatt.c(967),ERROR" ID="0x8de01e3a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt discovery descriptor memcpy fail. @ble_general_gatt.c(973),ERROR" ID="0x8de01e6a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt discovery descriptor not found:0x%x. @ble_general_gatt.c(984),WARNING" ID="0x8de01ec3" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble gatt read characteristic value respon new fail. @ble_general_gatt.c(1005),ERROR" ID="0x8de01f6a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[BCore] ble gatt read characteristic value respon memcpy fail: %d @ble_general_gatt.c(1012),ERROR" ID="0x8de01fa2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[BCore] ble gatt read characteristic value respon memcpy fail: %d @ble_general_gatt.c(1022),ERROR" ID="0x8de01ff2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt read characteristic value new fail. @ble_general_gatt.c(1045),ERROR" ID="0x8de020aa" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt read descriptor value error:0x%x. @ble_general_gatt.c(1059),ERROR" ID="0x8de0211a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt read characteristic by uuid new fail. @ble_general_gatt.c(1077),ERROR" ID="0x8de021aa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt read characteristic by uuid memcpy fail. @ble_general_gatt.c(1090),ERROR" ID="0x8de02212" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt read characteristic by uuid memcpy fail. @ble_general_gatt.c(1097),ERROR" ID="0x8de0224a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt read characteristic by uuid error:0x%x. @ble_general_gatt.c(1104),WARNING" ID="0x8de02283" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt read multiple characteristic new fail. @ble_general_gatt.c(1122),ERROR" ID="0x8de02312" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt read multiple characteristic memset fail. @ble_general_gatt.c(1129),ERROR" ID="0x8de0234a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt read multiple characteristic error:0x%x. @ble_general_gatt.c(1145),WARNING" ID="0x8de023cb" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt read multiple characteristic error:0x%x. @ble_general_gatt.c(1175),WARNING" ID="0x8de024bb" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt write characteristic value memcpy failed @ble_general_gatt.c(1227),ERROR" ID="0x8de0265a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt write characteristic value param is NULL @ble_general_gatt.c(1250),ERROR" ID="0x8de02712" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt write characteristic value malloc fail, size:0x%x. @ble_general_gatt.c(1263),ERROR" ID="0x8de0277a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[BCore] ble general gatt write characteristic value memcpy fail: %d @ble_general_gatt.c(1273),ERROR" ID="0x8de027ca" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt write characteristic value fail:0x%x. @ble_general_gatt.c(1287),WARNING" ID="0x8de0283b" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt reliable write characteristic value param is NULL @ble_general_gatt.c(1306),ERROR" ID="0x8de028d2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt reliable write characteristic value malloc fail @ble_general_gatt.c(1313),ERROR" ID="0x8de0290a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[BCore] ble general gatt reliable write characteristic value memcpy fail @ble_general_gatt.c(1322),ERROR" ID="0x8de02952" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt reliable write characteristic value fail:0x%x. @ble_general_gatt.c(1341),WARNING" ID="0x8de029eb" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt write descriptor value malloc faile, size:0x%x. @ble_general_gatt.c(1358),ERROR" ID="0x8de02a72" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[BCore] ble general gatt write descriptor value memcpy fail: %d @ble_general_gatt.c(1367),ERROR" ID="0x8de02aba" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt discovery descriptor error:0x%x. @ble_general_gatt.c(1377),ERROR" ID="0x8de02b0a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[BCore] ble gatt read descriptor value response memcpy fail: %d @ble_general_gatt.c(1399),ERROR" ID="0x8de02bba" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[BCore] ble gatt read descriptor value response memcpy fail: %d @ble_general_gatt.c(1407),ERROR" ID="0x8de02bfa" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt read descriptor value error:0x%x. @ble_general_gatt.c(1436),ERROR" ID="0x8de02ce2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt mtu config error:0x%x. @ble_general_gatt.c(1451),ERROR" ID="0x8de02d5a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt set gap ui attributes error:0x%x. @ble_general_gatt.c(1464),ERROR" ID="0x8de02dc2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt get gap ui attributes error:0x%x. @ble_general_gatt.c(1483),ERROR" ID="0x8de02e5a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="bt mpc adapter gatt get hid report callback new fail @ble_general_gatt.c(1513),ERROR" ID="0x8de02f4a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="bt mpc adapter gatt get hid report callback error_code = %x @ble_general_gatt.c(1524),INFO" ID="0x8de02fa5" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble gatt discovery service not found:0x%x. @ble_general_gatt.c(802),WARNING" ID="0x8de01913" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble gatt discovery include service not found:0x%x. @ble_general_gatt.c(825),WARNING" ID="0x8de019cb" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble gatt discovery characteristic new fail. @ble_general_gatt.c(841),ERROR" ID="0x8de01a4a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble gatt discovery characteristic memset fail. @ble_general_gatt.c(846),ERROR" ID="0x8de01a72" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble gatt discovery characteristic not found:0x%x. @ble_general_gatt.c(863),WARNING" ID="0x8de01afb" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble gatt discovery characteristic by uuid new fail. @ble_general_gatt.c(881),ERROR" ID="0x8de01b8a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble gatt discovery characteristic by uuid memset fail. @ble_general_gatt.c(887),ERROR" ID="0x8de01bba" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble att discovery characteristic by uuid memcpy fail. @ble_general_gatt.c(901),ERROR" ID="0x8de01c2a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble att discovery characteristic by uuid not found:0x%x. @ble_general_gatt.c(912),WARNING" ID="0x8de01c83" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble att discovery descriptor by handle new fail. @ble_general_gatt.c(928),ERROR" ID="0x8de01d02" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble att discovery descriptor by handle not found:0x%x. @ble_general_gatt.c(942),WARNING" ID="0x8de01d73" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble att discovery descriptor new fail. @ble_general_gatt.c(962),ERROR" ID="0x8de01e12" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble att discovery descriptor memset fail. @ble_general_gatt.c(967),ERROR" ID="0x8de01e3a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble att discovery descriptor memcpy fail. @ble_general_gatt.c(973),ERROR" ID="0x8de01e6a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble att discovery descriptor not found:0x%x. @ble_general_gatt.c(984),WARNING" ID="0x8de01ec3" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble att read value in. @ble_general_gatt.c(998),INFO" ID="0x8de01f35" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble att read value param new fail. @ble_general_gatt.c(1001),ERROR" ID="0x8de01f4a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble att read value param memset fail. @ble_general_gatt.c(1006),ERROR" ID="0x8de01f72" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble att read value handle:%d. @ble_general_gatt.c(1011),INFO" ID="0x8de01f9d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble att read value error:0x%x. @ble_general_gatt.c(1014),ERROR" ID="0x8de01fb2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble att read characteristic by uuid new fail. @ble_general_gatt.c(1031),ERROR" ID="0x8de0203a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble att read characteristic by uuid memcpy fail. @ble_general_gatt.c(1044),ERROR" ID="0x8de020a2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble att read characteristic by uuid memcpy fail. @ble_general_gatt.c(1051),ERROR" ID="0x8de020da" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble att read characteristic by uuid error:0x%x. @ble_general_gatt.c(1058),WARNING" ID="0x8de02113" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble att read multiple characteristic new fail. @ble_general_gatt.c(1076),ERROR" ID="0x8de021a2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble att read multiple characteristic memset fail. @ble_general_gatt.c(1083),ERROR" ID="0x8de021da" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble att read multiple characteristic error:0x%x. @ble_general_gatt.c(1099),WARNING" ID="0x8de0225b" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble att read multiple characteristic error:0x%x. @ble_general_gatt.c(1129),WARNING" ID="0x8de0234b" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble att write characteristic value memcpy failed @ble_general_gatt.c(1181),ERROR" ID="0x8de024ea" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble att write characteristic value param is NULL @ble_general_gatt.c(1204),ERROR" ID="0x8de025a2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble att write characteristic value malloc fail, size:0x%x. @ble_general_gatt.c(1217),ERROR" ID="0x8de0260a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[BCore] ble att write characteristic value memcpy fail: %d @ble_general_gatt.c(1227),ERROR" ID="0x8de0265a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble att write characteristic value fail:0x%x. @ble_general_gatt.c(1241),WARNING" ID="0x8de026cb" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble att reliable write characteristic value param is NULL @ble_general_gatt.c(1260),ERROR" ID="0x8de02762" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble att reliable write characteristic value malloc fail @ble_general_gatt.c(1267),ERROR" ID="0x8de0279a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[BCore] ble att reliable write characteristic value memcpy fail @ble_general_gatt.c(1276),ERROR" ID="0x8de027e2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble att reliable write characteristic value fail:0x%x. @ble_general_gatt.c(1295),WARNING" ID="0x8de0287b" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble att write descriptor value malloc faile, size:0x%x. @ble_general_gatt.c(1312),ERROR" ID="0x8de02902" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[BCore] ble att write descriptor value memcpy fail: %d @ble_general_gatt.c(1321),ERROR" ID="0x8de0294a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble att discovery descriptor error:0x%x. @ble_general_gatt.c(1331),ERROR" ID="0x8de0299a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[BCore] ble gatt read descriptor value response memcpy fail: %d @ble_general_gatt.c(1353),ERROR" ID="0x8de02a4a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[BCore] ble gatt read descriptor value response memcpy fail: %d @ble_general_gatt.c(1361),ERROR" ID="0x8de02a8a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble att read descriptor value error:0x%x. @ble_general_gatt.c(1390),ERROR" ID="0x8de02b72" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble att mtu config error:0x%x. @ble_general_gatt.c(1405),ERROR" ID="0x8de02bea" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble att set gap ui attributes error:0x%x. @ble_general_gatt.c(1418),ERROR" ID="0x8de02c52" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble att get gap ui attributes error:0x%x. @ble_general_gatt.c(1437),ERROR" ID="0x8de02cea" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="bt mpc adapter gatt get hid report callback new fail @ble_general_gatt.c(1467),ERROR" ID="0x8de02dda" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="bt mpc adapter gatt get hid report callback error_code = %x @ble_general_gatt.c(1478),INFO" ID="0x8de02e35" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="llc_test_set_cis_param : alloc fail! @llc_cis_ram.c(30),INFO" ID="0x8a2a00f5" />
                        <MSG STRUCTURE="diag_log_msg4" NAME="llc_test_set_cis_param :cig_id=%d, cis_id=%d, cis_conhdl=%d, struct_size=%d @llc_cis_ram.c(60),INFO" ID="0x8a2a01e5" />
                        <MSG STRUCTURE="diag_log_msg4" NAME="llc_test_set_cis_param :cig_id=%d, cis_id=%d, sdu_intv_m2s=%d, sdu_intv_s2m=%d @llc_cis_ram.c(62),INFO" ID="0x8a2a01f5" />
                        <MSG STRUCTURE="diag_log_msg3" NAME="[INFO][SLEEP]extern wakeup btc clk(%d)slp_dur_slot(%d)glbcnt(%d) @bt_sleep.c(398),INFO" ID="0x88f00c75" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="g_dfx_time:%d @bt_sleep.c(418),INFO" ID="0x88f00d15" />
                        <MSG STRUCTURE="diag_log_msg3" NAME="[INFO][LLD]lld_periodic_adv_start:sync_dur=%d, intv_min=%d, intv_max=%d @lld_per_ram.c(53),INFO" ID="0x8a6201ad" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[SMP][LongTermKeyRequest]key-&gt;fea = 0x%x @smp_ui.c(426),INFO" ID="0x8dac0d55" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[SMP][LongTermKeyRequest]key == NULL @smp_ui.c(430),INFO" ID="0x8dac0d75" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[SMP][LongTermKeyRequest]link-&gt;hcihdl = %u, link-&gt;remote = 0x%x, key = 0x%x @smp_ui.c(457),INFO" ID="0x8dac0e4d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[SMP][LongTermKeyRequest][No LESC LTK SEND] @smp_ui.c(470),INFO" ID="0x8dac0eb5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[SMP][LongTermKeyRequest][DIV mismatch, Unpaired] @smp_ui.c(494),INFO" ID="0x8dac0f75" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[SMP][LongTermKeyRequest][ECDH LTK unavailable, pair!=NULL] @smp_ui.c(507),INFO" ID="0x8dac0fdd" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[SMP][LongTermKeyRequest][LTK unavailable, pair=NULL] @smp_ui.c(520),INFO" ID="0x8dac1045" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="[SMP][LongTermKeyRequest]LKT:0x%02x%02x%02x%02x @smp_ui.c(527),ERROR" ID="0x8dac107a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[SMP][LongTermKeyRequest][Send Negative Reply!] @smp_ui.c(542),INFO" ID="0x8dac10f5" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[SMP][LongTermKeyRequest]key-&gt;fea = 0x%x @smp_ui.c(430),INFO" ID="0x8dac0d75" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[SMP][LongTermKeyRequest]key == NULL @smp_ui.c(434),INFO" ID="0x8dac0d95" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[SMP][LongTermKeyRequest]link-&gt;hcihdl = %u, link-&gt;remote = 0x%x, key = 0x%x @smp_ui.c(461),INFO" ID="0x8dac0e6d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[SMP][LongTermKeyRequest][No LESC LTK SEND] @smp_ui.c(474),INFO" ID="0x8dac0ed5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[SMP][LongTermKeyRequest][DIV mismatch, Unpaired] @smp_ui.c(498),INFO" ID="0x8dac0f95" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[SMP][LongTermKeyRequest][ECDH LTK unavailable, pair!=NULL] @smp_ui.c(511),INFO" ID="0x8dac0ffd" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[SMP][LongTermKeyRequest][LTK unavailable, pair=NULL] @smp_ui.c(524),INFO" ID="0x8dac1065" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="[SMP][LongTermKeyRequest]LKT:0x%02x%02x%02x%02x @smp_ui.c(531),ERROR" ID="0x8dac109a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[SMP][LongTermKeyRequest][Send Negative Reply!] @smp_ui.c(546),INFO" ID="0x8dac1115" />
                        <MSG STRUCTURE="diag_log_msg4" NAME="[INFO][high power] enable on linkid:%d, last_rx_err_pkt:%d, rssi_delta:%d, time:0x%x @lc_task_ram.c(1392),INFO" ID="0x8a482b85" />
                        <MSG STRUCTURE="diag_log_msg4" NAME="[INFO][high power] disable on linkid:%d, last_rx_err_pkt:%d, rssi_delta:%d, time:0x%x @lc_task_ram.c(1402),INFO" ID="0x8a482bd5" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[INFO][LC]lmp_encaps_payl_handler:sp fail in LC_WAIT_PUB_KEY_PAYLOAD_RSP_PEER @lc_task_ram.c(1703),INFO" ID="0x8a48353d" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="[INFO][LC]lc_sp_update_key:btstate = %d @lc_task_ram.c(1826),INFO" ID="0x8a483915" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="[INFO][LC]lc_sp_update_key:lm_ecc_gen_new_key return = %d @lc_task_ram.c(1837),INFO" ID="0x8a48396d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="set_hci_log_status: [%d] @ble_conf.c(230),INFO" ID="0x8de80735" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="set_le_resolution_enable:[%d] @ble_conf.c(237),INFO" ID="0x8de8076d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="get_le_resolution_enable:[%d] @ble_conf.c(245),INFO" ID="0x8de807ad" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="[MEM_TOTAL_USED_MAX][%d][MEM_TOTAL_USED][%d][MALLOC_TRACE][%d][FREE_TRACE][%d]  @ble_conf.c(275),INFO" ID="0x8de8089d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="set_hci_log_status: [%d] @ble_conf.c(233),INFO" ID="0x8de8074d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="set_le_resolution_enable:[%d] @ble_conf.c(240),INFO" ID="0x8de80785" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="get_le_resolution_enable:[%d] @ble_conf.c(248),INFO" ID="0x8de807c5" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="[MEM_TOTAL_USED_MAX][%d][MEM_TOTAL_USED][%d][MALLOC_TRACE][%d][FREE_TRACE][%d]  @ble_conf.c(278),INFO" ID="0x8de808b5" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[WARNING][PAST]lld_evt_past_adv_tx_time_compute: per adv has stoped! @lld_past_evt.c(190),WARNING" ID="0x89bc05f3" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[SMP]PAIRING_REQ_RECV @smp_fsm.c(1091),INFO" ID="0x8c46221d" />
                        <MSG STRUCTURE="diag_log_msg3" NAME="[SMP][smp_key_base_new]link-&gt;hcihdl = %u, remote = 0x%x, key = 0x%x @smp_fsm.c(1990),INFO" ID="0x8c463e35" />
                        <MSG STRUCTURE="diag_log_msg2" NAME="[WARNING][HCI]hci_sco_local_loopback_received:len=%d, max_len=%d @h4tl_ram.c(136),WARNING" ID="0x88ea0443" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="[INFO]hci_sco_local_loopback_send:curr_payl_buff = 0x%x. @h4tl_ram.c(147),INFO" ID="0x88ea049d" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="pce_update_status null returned @sdk_pbap.c(168),WARNING" ID="0x8b740543" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="pbap_pull_phone_book conn_hdl=0x%x @sdk_pbap.c(669),INFO" ID="0x8b7414ed" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="pbap_pull_phone_book err ret=0x%x @sdk_pbap.c(682),WARNING" ID="0x8b741553" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="pbap_pull_phone_book conn_hdl=0x%x @sdk_pbap.c(670),INFO" ID="0x8b7414f5" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="pbap_pull_phone_book err ret=0x%x @sdk_pbap.c(683),WARNING" ID="0x8b74155b" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s failed @sdk_pbap.c(696),ERROR" ID="0x8b7415c2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s failed @sdk_pbap.c(843),ERROR" ID="0x8b741a5a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s failed @sdk_pbap.c(943),ERROR" ID="0x8b741d7a" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="lld_evt_defered_elt_handler,  test end @patch_lld_evt.c(141),WARNING" ID="0x8a60046b" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[INFO][LLD]lld_evt_flush_common:elt is null @patch_lld_evt.c(212),INFO" ID="0x8a6006a5" />
                        <MSG STRUCTURE="diag_log_msg4" NAME="c_evt-&gt;mode=%d, next_elt-&gt;mode=%d, cur-&gt;conhdl=%d, n_evt-&gt;conhdl=%d @patch_lld_evt.c(269),INFO" ID="0x8a60086d" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[WARNING][LD]ld_evt_start_rx_cbk:evt is null @dbg_bt_test_tx_rx.c(601),WARNING" ID="0x899c12cb" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[sdk]gatt_get_descriptor_value memcpy failed @sdk_gatt.c(387),ERROR" ID="0x8b800c1a" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatt_get_descriptor_value&#160;memcpy_s&#160;error @sdk_gatt.c(571),ERROR" ID="0x8b8011da" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt write characteristic mem_new failed @sdk_gatt.c(793),ERROR" ID="0x8b8018ca" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt write characteristic memcpy failed @sdk_gatt.c(798),ERROR" ID="0x8b8018f2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt write characteristic memcpy failed @sdk_gatt.c(807),ERROR" ID="0x8b80193a" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="btsdk gatt get characteristics by uuid start_handle:0x%x end_handle:0x%x, uuid:0x%x @sdk_gatt.c(830),INFO" ID="0x8b8019f5" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="btsdk gatt get characteristic value by uuid start_handle:0x%x end_handle:0x%x @sdk_gatt.c(878),INFO" ID="0x8b801b75" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="[sdk]gatt_get_descriptor_by_handle start_handle:0x%x end_handle:0x%x @sdk_gatt.c(901),INFO" ID="0x8b801c2d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[sdk]gatt_get_multiple_characteristics_by_handle handle_count:0x%x @sdk_gatt.c(922),INFO" ID="0x8b801cd5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatt_set_gap_ui_attributes&#160;memcpy_s&#160;error @sdk_gatt.c(1200),ERROR" ID="0x8b802582" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatt_set_gap_ui_attributes&#160;memcpy_s&#160;error @sdk_gatt.c(1213),ERROR" ID="0x8b8025ea" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatt_get_gap_ui_attributes&#160;memcpy_s&#160;error @sdk_gatt.c(1285),ERROR" ID="0x8b80282a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatt_send_response&#160;memcpy_s&#160;error @sdk_gatt.c(1883),ERROR" ID="0x8b803ada" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatt_change_descriptor_value&#160;memcpy_s&#160;error @sdk_gatt.c(1964),ERROR" ID="0x8b803d62" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatt_notify_characteristic_changed&#160;memcpy_s&#160;error @sdk_gatt.c(2009),ERROR" ID="0x8b803eca" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt write characteristic mem_new failed @sdk_gatt.c(794),ERROR" ID="0x8b8018d2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt write characteristic memcpy failed @sdk_gatt.c(799),ERROR" ID="0x8b8018fa" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt write characteristic memcpy failed @sdk_gatt.c(808),ERROR" ID="0x8b801942" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="btsdk gatt get characteristics by uuid start_handle:0x%x end_handle:0x%x, uuid:0x%x @sdk_gatt.c(837),INFO" ID="0x8b801a2d" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="btsdk gatt get characteristic value by uuid start_handle:0x%x end_handle:0x%x @sdk_gatt.c(885),INFO" ID="0x8b801bad" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[sdk]gatt_get_descriptor_by_handle start_handle:0x%x end_handle:0x%x @sdk_gatt.c(908),INFO" ID="0x8b801c65" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[sdk]gatt_get_multiple_characteristics_by_handle handle_count:0x%x @sdk_gatt.c(929),INFO" ID="0x8b801d0d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatt_set_gap_ui_attributes&#160;memcpy_s&#160;error @sdk_gatt.c(1207),ERROR" ID="0x8b8025ba" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatt_set_gap_ui_attributes&#160;memcpy_s&#160;error @sdk_gatt.c(1220),ERROR" ID="0x8b802622" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatt_get_gap_ui_attributes&#160;memcpy_s&#160;error @sdk_gatt.c(1292),ERROR" ID="0x8b802862" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatt_send_response&#160;memcpy_s&#160;error @sdk_gatt.c(1890),ERROR" ID="0x8b803b12" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatt_change_descriptor_value&#160;memcpy_s&#160;error @sdk_gatt.c(1971),ERROR" ID="0x8b803d9a" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatt_notify_characteristic_changed&#160;memcpy_s&#160;error @sdk_gatt.c(2016),ERROR" ID="0x8b803f02" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]can't find hdl by uuid @sdk_gatt.c(2207),ERROR" ID="0x8b8044fa" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatt_notify_characteristic_changed&#160;memcpy_s&#160;error @sdk_gatt.c(2023),ERROR" ID="0x8b803f3a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]can't find hdl by uuid @sdk_gatt.c(2214),ERROR" ID="0x8b804532" />
                        <MSG STRUCTURE="diag_log_msg2" NAME="[bt_debug]BT rfpll addr:0x%x = %04x @bt_dbg.c(72),INFO" ID="0x89320245" />
                        <MSG STRUCTURE="diag_log_msg2" NAME="[bt_debug]BT rf    addr:0x%x = %04x @bt_dbg.c(78),INFO" ID="0x89320275" />
                        <MSG STRUCTURE="diag_log_msg2" NAME="[bt_debug]BT mdm    addr:0x%x = %04x @bt_dbg.c(92),INFO" ID="0x893202e5" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[ATT]memcpy_s&#160;error @att_gatt.c(1145),ERROR" ID="0x8c4c23ca" />
                        <MSG STRUCTURE="diag_log_msg3" NAME="[ATT]UUID[0x%04x], hdl[0x%x], len[0x%x] @att_gatt.c(1154),INFO" ID="0x8c4c2415" />
                        <MSG STRUCTURE="diag_log_msg5" NAME="GATT_Server_Create_UpdateCCC_Item, add item[hdl:%d] ccc onaddr:0x%02x:%02x:xx:xx:%02x:%02x @att_gatt.c(1368),INFO" ID="0x8c4c2ac5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ATT]memcpy_s&#160;error @att_gatt.c(1492),ERROR" ID="0x8c4c2ea2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ATT_GATT] create le connect mask:%d @att_gatt.c(1810),ERROR" ID="0x8c4c3892" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ATT_GATT] create br connect mask:%d @att_gatt.c(1819),ERROR" ID="0x8c4c38da" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[ATT_GATT] smp cfm mask:%d task_index:%d result:%d @att_gatt.c(1938),ERROR" ID="0x8c4c3c92" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[ATT_GATT] smp request mask:%d task_index:%d sec_mode:%d @att_gatt.c(1973),ERROR" ID="0x8c4c3daa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ATT]memcpy_s error @att_gatt.c(2356),ERROR" ID="0x8c4c49a2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ATT]memcpy_s&#160;error @att_gatt.c(2602),ERROR" ID="0x8c4c5152" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ATT]memcpy_s&#160;error @att_gatt.c(2630),ERROR" ID="0x8c4c5232" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ATT]memcpy_s&#160;error @att_gatt.c(2635),ERROR" ID="0x8c4c525a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memory alloc failed @bt_ahi_hfp.c(279),WARNING" ID="0x8c9e08bb" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memory set failed. @bt_ahi_hfp.c(284),WARNING" ID="0x8c9e08e3" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memory copy failed. @bt_ahi_hfp.c(293),WARNING" ID="0x8c9e092b" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memory alloc failed @bt_ahi_hfp.c(518),WARNING" ID="0x8c9e1033" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memory set failed. @bt_ahi_hfp.c(523),WARNING" ID="0x8c9e105b" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memory copy failed. @bt_ahi_hfp.c(532),WARNING" ID="0x8c9e10a3" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[ATT]memcpy_s&#160;error @att_gatt.c(1491),ERROR" ID="0x8c4c2e9a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[ATT_GATT] create le connect mask:%d @att_gatt.c(1809),ERROR" ID="0x8c4c388a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[ATT_GATT] create br connect mask:%d @att_gatt.c(1818),ERROR" ID="0x8c4c38d2" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[ATT_GATT] smp cfm mask:%d task_index:%d result:%d @att_gatt.c(1937),ERROR" ID="0x8c4c3c8a" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[ATT_GATT] smp request mask:%d task_index:%d sec_mode:%d @att_gatt.c(1972),ERROR" ID="0x8c4c3da2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[ATT]memcpy_s error @att_gatt.c(2355),ERROR" ID="0x8c4c499a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[ATT]memcpy_s&#160;error @att_gatt.c(2601),ERROR" ID="0x8c4c514a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[ATT]memcpy_s&#160;error @att_gatt.c(2629),ERROR" ID="0x8c4c522a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[ATT]memcpy_s&#160;error @att_gatt.c(2634),ERROR" ID="0x8c4c5252" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="HFP:sco config flow limit line_high=%u line_low=%u @bt_ahi_hfp.c(278),ERROR" ID="0x8c9e08b2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memory alloc failed @bt_ahi_hfp.c(296),WARNING" ID="0x8c9e0943" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memory set failed. @bt_ahi_hfp.c(301),WARNING" ID="0x8c9e096b" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memory copy failed. @bt_ahi_hfp.c(310),WARNING" ID="0x8c9e09b3" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memory alloc failed @bt_ahi_hfp.c(535),WARNING" ID="0x8c9e10bb" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memory set failed. @bt_ahi_hfp.c(540),WARNING" ID="0x8c9e10e3" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memory copy failed. @bt_ahi_hfp.c(549),WARNING" ID="0x8c9e112b" />
                        <MSG STRUCTURE="diag_log_msg4" NAME="[INFO][LLD]lld_evt_check_state_flag:to delete elt=0x%x, elt_ts=0x%x, mode=%d, conhdl=%d @lld_evt.c(160),INFO" ID="0x88600505" />
                        <MSG STRUCTURE="diag_log_msg4" NAME="[ERROR][LLD]BLE ERROR TXDESC is NULL conhdl=%d, conflict=%d, finetimecnt=%d, ts=%d @lld_evt.c(185),ERROR" ID="0x886005ca" />
                        <MSG STRUCTURE="diag_log_msg4" NAME="[ERROR][LLD]AE TXDESC is NULL conhdl=0x%x, conflict=%d, finetimecnt=0x%x, ts=0x%x @lld_evt.c(198),ERROR" ID="0x88600632" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[WARNING][LLC][PHY]hci_le_set_phy_cmd_handler:llc is in disconnected state @llc_hci.c(1500),WARNING" ID="0x88322ee3" />
                        <MSG STRUCTURE="diag_log_msg4" NAME="[INFO][LLC][PHY]hci_le_set_phy_cmd_handler:current_txphy=%d, current_rxphy=%d, txphyoption=%d, rxphyoption=%d @llc_hci.c(1545),INFO" ID="0x8832304d" />
                        <MSG STRUCTURE="diag_log_msg2" NAME="[CHR]handle %d action %d  @llc_hci.c(2463),INFO" ID="0x88324cfd" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="stack gap set discovery mode result = 0x%x, mode = 0x%x  @bt_ahi_gap.c(82),INFO" ID="0x8c9e0295" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="stack gap get discovery mode result = 0x%x, mode = 0x%x  @bt_ahi_gap.c(96),INFO" ID="0x8c9e0305" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="stack gap stop discovery result = 0x%x, mode = 0x%x  @bt_ahi_gap.c(106),INFO" ID="0x8c9e0355" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="stack gap create acl result = 0x%x, dev_hdl = 0x%x, link type = %d  @bt_ahi_gap.c(120),INFO" ID="0x8c9e03c5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memory copy failed @bt_ahi_gap.c(133),ERROR" ID="0x8c9e042a" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="stack gap create acl cfm cbk result = 0x%x, acl_hdl = 0x%x, link type = %d  @bt_ahi_gap.c(138),INFO" ID="0x8c9e0455" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="stack gap create acla result = 0x%x @bt_ahi_gap.c(147),INFO" ID="0x8c9e049d" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="stack gap reconnect phone result = 0x%x, dev_hdl = 0x%x  @bt_ahi_gap.c(158),INFO" ID="0x8c9e04f5" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="stack gap get rmt dev handle result = 0x%x @bt_ahi_gap.c(170),INFO" ID="0x8c9e0555" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="stack gap device is connected result = 0x%x, dev_hdl = 0x%x  @bt_ahi_gap.c(182),INFO" ID="0x8c9e05b5" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="btsdk disconnect acl by handle result = 0x%x @bt_ahi_gap.c(193),INFO" ID="0x8c9e060d" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="stack gap pair device result = 0x%x, dev_hdl = 0x%x  @bt_ahi_gap.c(205),INFO" ID="0x8c9e066d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="stack gap add rmt device rsp.result = %x @bt_ahi_gap.c(222),INFO" ID="0x8c9e06f5" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="stack gap update rmt device name result = 0x%x, name = %s  @bt_ahi_gap.c(242),INFO" ID="0x8c9e0795" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memory copy failed @bt_ahi_gap.c(256),ERROR" ID="0x8c9e0802" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="stack gap update rmt device name cfm cbk result = 0x%x, opindex = 0x%x, size = %d  @bt_ahi_gap.c(264),INFO" ID="0x8c9e0845" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="stack gap update rmt device name async result = 0x%x @bt_ahi_gap.c(274),INFO" ID="0x8c9e0895" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="stack gap get local name result = 0x%x, length = %d, name = %s  @bt_ahi_gap.c(310),INFO" ID="0x8c9e09b5" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="stack gap get rmt dev addr result = 0x%x, addr[%02x:**:**:**:%02x:%02x] @bt_ahi_gap.c(335),INFO" ID="0x8c9e0a7d" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="stack gap browse rmt service overflow, max_count = %d, svc_count = %d @bt_ahi_gap.c(357),ERROR" ID="0x8c9e0b2a" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="stack gap browse rmt service result = 0x%x, svc_count = %d, svc_hdl[0] = 0x%x @bt_ahi_gap.c(363),INFO" ID="0x8c9e0b5d" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="hfp enable sco:scohdl=0x%x inid=0x%x outid=0x%x @bt_ahi_gap.c(384),INFO" ID="0x8c9e0c05" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="hfp disable sco:scohdl=0x%x @bt_ahi_gap.c(388),INFO" ID="0x8c9e0c25" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="result = 0x%x, handle = 0x%x, service_class = %02x  @bt_ahi_gap.c(421),INFO" ID="0x8c9e0d2d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="stack gap init, res = 0x%x  @bt_ahi_gap.c(432),INFO" ID="0x8c9e0d85" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="set bt tx power, hdl=0x%x, power=%d, ret=0x%x @bt_ahi_gap.c(445),INFO" ID="0x8c9e0ded" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="br gap read rssi, hdl=0x%x, rssi=%d, ret=0x%x @bt_ahi_gap.c(453),INFO" ID="0x8c9e0e2d" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="set active scene scene = %d, bitrate = %d, delay = %d, ret=0x%x @bt_ahi_gap.c(469),INFO" ID="0x8c9e0ead" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="set inquiry scan param interval = %d, window = %d @bt_ahi_gap.c(477),INFO" ID="0x8c9e0eed" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memory copy failed @bt_ahi_gap.c(488),ERROR" ID="0x8c9e0f42" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="stack gap restore rmt device rsp.result = %x @bt_ahi_gap.c(492),INFO" ID="0x8c9e0f65" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="br gap get link mode, hdl=0x%x, mode=%d, ret=0x%x @bt_ahi_gap.c(501),INFO" ID="0x8c9e0fad" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="stack gap set discovery mode result = 0x%x, mode = 0x%x  @bt_ahi_gap.c(84),INFO" ID="0x8c9e02a5" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="stack gap get discovery mode result = 0x%x, mode = 0x%x  @bt_ahi_gap.c(98),INFO" ID="0x8c9e0315" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="stack gap stop discovery result = 0x%x, mode = 0x%x  @bt_ahi_gap.c(108),INFO" ID="0x8c9e0365" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="stack gap create acl result = 0x%x, dev_hdl = 0x%x, link type = %d  @bt_ahi_gap.c(122),INFO" ID="0x8c9e03d5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memory copy failed @bt_ahi_gap.c(135),ERROR" ID="0x8c9e043a" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="stack gap create acl cfm cbk result = 0x%x, acl_hdl = 0x%x, link type = %d  @bt_ahi_gap.c(140),INFO" ID="0x8c9e0465" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="stack gap create acla result = 0x%x @bt_ahi_gap.c(149),INFO" ID="0x8c9e04ad" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="stack gap reconnect phone result = 0x%x, dev_hdl = 0x%x  @bt_ahi_gap.c(160),INFO" ID="0x8c9e0505" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="stack gap get rmt dev handle result = 0x%x @bt_ahi_gap.c(172),INFO" ID="0x8c9e0565" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="stack gap device is connected result = 0x%x, dev_hdl = 0x%x  @bt_ahi_gap.c(184),INFO" ID="0x8c9e05c5" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="btsdk disconnect acl by handle result = 0x%x @bt_ahi_gap.c(195),INFO" ID="0x8c9e061d" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="stack gap pair device result = 0x%x, dev_hdl = 0x%x  @bt_ahi_gap.c(207),INFO" ID="0x8c9e067d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="stack gap add rmt device rsp.result = %x @bt_ahi_gap.c(224),INFO" ID="0x8c9e0705" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="stack gap update rmt device name result = 0x%x, name = %s  @bt_ahi_gap.c(244),INFO" ID="0x8c9e07a5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memory copy failed @bt_ahi_gap.c(258),ERROR" ID="0x8c9e0812" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="stack gap update rmt device name cfm cbk result = 0x%x, opindex = 0x%x, size = %d  @bt_ahi_gap.c(266),INFO" ID="0x8c9e0855" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="stack gap update rmt device name async result = 0x%x @bt_ahi_gap.c(276),INFO" ID="0x8c9e08a5" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="stack gap get local name result = 0x%x, length = %d, name = %s  @bt_ahi_gap.c(312),INFO" ID="0x8c9e09c5" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="stack gap get rmt dev addr result = 0x%x, addr[%02x:**:**:**:%02x:%02x] @bt_ahi_gap.c(337),INFO" ID="0x8c9e0a8d" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="stack gap browse rmt service overflow, max_count = %d, svc_count = %d @bt_ahi_gap.c(359),ERROR" ID="0x8c9e0b3a" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="stack gap browse rmt service result = 0x%x, svc_count = %d, svc_hdl[0] = 0x%x @bt_ahi_gap.c(365),INFO" ID="0x8c9e0b6d" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="hfp enable sco:scohdl=0x%x inid=0x%x outid=0x%x @bt_ahi_gap.c(386),INFO" ID="0x8c9e0c15" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="hfp disable sco:scohdl=0x%x @bt_ahi_gap.c(390),INFO" ID="0x8c9e0c35" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="result = 0x%x, handle = 0x%x, service_class = %02x  @bt_ahi_gap.c(423),INFO" ID="0x8c9e0d3d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="stack gap init, res = 0x%x  @bt_ahi_gap.c(435),INFO" ID="0x8c9e0d9d" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="set bt tx power, hdl=0x%x, power=%d, ret=0x%x @bt_ahi_gap.c(448),INFO" ID="0x8c9e0e05" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="br gap read rssi, hdl=0x%x, rssi=%d, ret=0x%x @bt_ahi_gap.c(456),INFO" ID="0x8c9e0e45" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="set active scene scene = %d, bitrate = %d, delay = %d, ret=0x%x @bt_ahi_gap.c(472),INFO" ID="0x8c9e0ec5" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="set inquiry scan param interval = %d, window = %d @bt_ahi_gap.c(480),INFO" ID="0x8c9e0f05" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memory copy failed @bt_ahi_gap.c(491),ERROR" ID="0x8c9e0f5a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="stack gap restore rmt device rsp.result = %x @bt_ahi_gap.c(495),INFO" ID="0x8c9e0f7d" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="br gap get link mode, hdl=0x%x, mode=%d, ret=0x%x @bt_ahi_gap.c(504),INFO" ID="0x8c9e0fc5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="mpc param null! @bt_ahi_gap.c(520),ERROR" ID="0x8c9e1042" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="mpc pkt_ptr is null! @bt_ahi_gap.c(525),ERROR" ID="0x8c9e106a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[AHI]set br secure param secure=%d. @bt_ahi_gap.c(529),ERROR" ID="0x8c9e108a" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[GAP]memset failed @gap_ui.c(1251),ERROR" ID="0x8b5c271a" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[GAP]memcpy failed @gap_ui.c(1255),ERROR" ID="0x8b5c273a" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[GAP]memcpy failed @gap_ui.c(1259),ERROR" ID="0x8b5c275a" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[GAP] create_connection_whitelist start @gap_ui.c(2349),INFO" ID="0x8b5c496d" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[GAP]memcpy failed @gap_ui.c(2457),ERROR" ID="0x8b5c4cca" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="[SADP][GAP] set_local_addr_cbk result is %u @gap_ui.c(2933),INFO" ID="0x8b5c5bad" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[GAP]set br sc cmd error result=0x%x @gap_ui.c(2959),ERROR" ID="0x8b5c5c7a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[GAP]set br sc status=0x%x @gap_ui.c(2964),ERROR" ID="0x8b5c5ca2" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="bt dft response malloc err @bt_dft_bdi.c(37),INFO" ID="0x8d0c012d" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="bt dft response len = 0x%x @bt_dft_bdi.c(41),INFO" ID="0x8d0c014d" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="bt dft response memcpy ok, res_len: %d @bt_dft_bdi.c(46),INFO" ID="0x8d0c0175" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="%02x @bt_dft_bdi.c(957),WARNING" ID="0x8d0c1deb" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="bt dft get bdi @bt_dft_bdi.c(964),INFO" ID="0x8d0c1e25" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="bt dft get bdi err @bt_dft_bdi.c(966),INFO" ID="0x8d0c1e35" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="hlp_link_key_req_cbk no source addr:0x%x @sdk_hlp.c(898),INFO" ID="0x8b7a1c15" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="hlp_connection_ev_cbk_dis_conn hdl:0x%x status:%d @sdk_hlp.c(2053),INFO" ID="0x8b7a402d" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[SDK] connect event cbk connected: %d, reason: %d link_type:%d! @sdk_hlp.c(2074),ERROR" ID="0x8b7a40d2" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="[SDK] connect event cbk cap:%d addr:%02x******%02x%02x @sdk_hlp.c(2089),ERROR" ID="0x8b7a414a" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="[SDK] connect event cbk status:%d dev_hdl:0x%x @sdk_hlp.c(2092),ERROR" ID="0x8b7a4162" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[BTH][QOS]default flow limit max=%u line_high=%u line_low=%u @sdk_hlp.c(71),ERROR" ID="0x8b7a023a" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[BTH][QOS]overflow ipc:%u fsm_tx:%u. @sdk_hlp.c(93),ERROR" ID="0x8b7a02ea" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[BTH][QOS]overflow hci_rx:%u hci_qos:%u. @sdk_hlp.c(94),ERROR" ID="0x8b7a02f2" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[BTH][QOS]warning ipc:%u fsm_tx:%u. @sdk_hlp.c(106),ERROR" ID="0x8b7a0352" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[BTH][QOS]warning hci_rx:%u hci_qos:%u. @sdk_hlp.c(107),ERROR" ID="0x8b7a035a" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[BTH][QOS]release ipc:%u fsm_tx:%u. @sdk_hlp.c(118),ERROR" ID="0x8b7a03b2" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[BTH][QOS]release hci_rx:%u hci_qos:%u. @sdk_hlp.c(119),ERROR" ID="0x8b7a03ba" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[SDK][GAP] CTKD BR link key report, addr=0x%02x:**:**:**:0x%02x:0x%02x @sdk_hlp.c(895),WARNING" ID="0x8b7a1bfb" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[SDK][GAP] paired phone exist, dev_handle=0x%x @sdk_hlp.c(901),WARNING" ID="0x8b7a1c2b" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="hlp_link_key_req_cbk no source addr:0x%x @sdk_hlp.c(996),INFO" ID="0x8b7a1f25" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="hlp_connection_ev_cbk_dis_conn hdl:0x%x status:%d @sdk_hlp.c(2151),INFO" ID="0x8b7a433d" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[SDK] connect event cbk connected: %d, reason: %d link_type:%d! @sdk_hlp.c(2173),ERROR" ID="0x8b7a43ea" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="[SDK] connect event cbk cap:%d addr:%02x******%02x%02x @sdk_hlp.c(2188),ERROR" ID="0x8b7a4462" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[SDK] connect event cbk status:%d dev_hdl:0x%x @sdk_hlp.c(2191),ERROR" ID="0x8b7a447a" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="gdk message post, failed retry later. @gdk_msg.c(46),ERROR" ID="0x8cb40172" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="gdk message timer cback @gdk_msg.c(74),DBG" ID="0x8cb40256" />
                        <MSG STRUCTURE="diag_log_msg2" NAME="gdk message add itor_msgid:0x%x, itor_ts:0x%lld @gdk_msg.c(107),DBG" ID="0x8cb4035e" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="BTH_VENDOR: bt vendor init start @bt_vendor.c(52),INFO" ID="0x8c9601a5" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="BTH_VENDOR: bt vendor init start-317 @bt_vendor.c(57),INFO" ID="0x8c9601cd" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="BTH_VENDOR: bt vendor init start @bt_vendor.c(97),INFO" ID="0x8c96030d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[SPP][AddEntry] vport=%d @sppui.c(157),INFO" ID="0x8b6604ed" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[SPP][DelEntry] vport=%d @sppui.c(233),INFO" ID="0x8b66074d" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="[SPP][WRITE_DATA] CONGEST=%d, CREDITIN=%d @sppui.c(542),INFO" ID="0x8b6610f5" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="[SPP][WRITE_DATA] CONGEST=%d, CREDITIN=%d @sppui.c(654),INFO" ID="0x8b661475" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[SPP][AddEntry] vport=%d @sppui.c(158),INFO" ID="0x8b6604f5" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[SPP][DelEntry] vport=%d @sppui.c(234),INFO" ID="0x8b660755" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[SPP][WRITE_DATA] CONGEST=%d, CREDITIN=%d @sppui.c(543),INFO" ID="0x8b6610fd" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[SPP][WRITE_DATA] CONGEST=%d, CREDITIN=%d @sppui.c(656),INFO" ID="0x8b661485" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[HID]Service cb arg is NULL! @ble_general_hid.c(61),ERROR" ID="0x8cbc01ea" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[HID]Get Service Tree! @ble_general_hid.c(70),INFO" ID="0x8cbc0235" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[HID]Get Service error! @ble_general_hid.c(73),ERROR" ID="0x8cbc024a" />
                        <MSG STRUCTURE="diag_log_msg2" NAME="[SPP][START_CLIENT] ACTION=SPP_OPEN_SUCCESS, SVR_CHANNEL=%d, V_PORT=%d @spp_client.c(151),INFO" ID="0x8bae04bd" />
                        <MSG STRUCTURE="diag_log_msg2" NAME="[SPP][START_CLIENT] ACTION=SPP_OPEN_FAIL, SVR_CHANNEL=%d, V_PORT=%d @spp_client.c(155),WARNING" ID="0x8bae04db" />
                        <MSG STRUCTURE="diag_log_msg4" NAME="[LIM] : log_domain:%d, log_module:%d, sub_module:%d, log_code:%d. @log_printf.c(355),INFO" ID="0xa05e0b1d" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="a2dp_audio: send audio data enable = %x seq %d  len %d. @packet_dl.c(39),WARNING" ID="0x8c28013b" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="a2dp_audio: uapi_adp_get_buffer ret = %x seq %d len %d size %d. @packet_dl.c(47),WARNING" ID="0x8c28017b" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="a2dp_audio: Memory cpy fail! @packet_dl.c(51),WARNING" ID="0x8c28019b" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="a2dp_audio: uapi_adp_put_buffer ret = %x seq %d len %d size %d. @packet_dl.c(61),WARNING" ID="0x8c2801eb" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="a2dp_audio: send audio data enable = %x seq %d  len %d. @packet_dl.c(39),ERROR" ID="0x8c28013a" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="a2dp_audio: adp get buffer ret = %x seq %d len %d size %d. @packet_dl.c(47),ERROR" ID="0x8c28017a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="a2dp_audio: Memory cpy fail! @packet_dl.c(51),ERROR" ID="0x8c28019a" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="a2dp_audio: adp put buffer ret = %x seq %d len %d size %d. @packet_dl.c(61),ERROR" ID="0x8c2801ea" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[DADP][BT-&gt;AUDIO] Memory is not enough! @packet_dl.c(103),WARNING" ID="0x8c28033b" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[DADP][BT-&gt;AUDIO]ipc send audio data fail @packet_dl.c(128),WARNING" ID="0x8c280403" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[DADP][BT-&gt;AUDIO]ipc send audio data fail @packet_dl.c(160),WARNING" ID="0x8c280503" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="a2dp_audio: dadp_freeman_send_audio_data_dl @packet_dl.c(270),WARNING" ID="0x8c280873" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[DADP][SetActiveConnectHandle]HANDLE=0x%x @packet_dl.c(311),INFO" ID="0x8c2809bd" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[DADP]get_mobile_connection_handle fail, can't find link @packet_dl.c(334),INFO" ID="0x8c280a75" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[DADP]HANDLE=0x%x @packet_dl.c(338),INFO" ID="0x8c280a95" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[DADP][get_active_device_handle] REMOTE_ADDR=%02x:%02x:**:**:**:%02x @packet_dl.c(381),INFO" ID="0x8c280bed" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[DADP][SetActiveConnectHandle]HANDLE=0x%x @packet_dl.c(310),INFO" ID="0x8c2809b5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[DADP]get_mobile_connection_handle fail, can't find link @packet_dl.c(333),INFO" ID="0x8c280a6d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[DADP]HANDLE=0x%x @packet_dl.c(337),INFO" ID="0x8c280a8d" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[DADP][get_active_device_handle] REMOTE_ADDR=%02x:%02x:**:**:**:%02x @packet_dl.c(380),INFO" ID="0x8c280be5" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[ERROR][param]ke_msg_alloc:msg = NULL @ke_msg.c(73),ERROR" ID="0x891a024a" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[ERROR]the MSG is not in heap @ke_msg.c(183),ERROR" ID="0x891a05ba" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[FSM][QOS]producer %u @fsm.c(83),ERROR" ID="0x8b58029a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[FSM][QOS]consumer %u @fsm.c(97),ERROR" ID="0x8b58030a" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="[TIMRE_ADD][STACK_TIMER] TIMER=0x%x, TIME=%u @fsm.c(725),INFO" ID="0x8b5816ad" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[TIMER_EXPIR]timeout timer err! @fsm.c(823),ERROR" ID="0x8b5819ba" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[TIMER_EXPIR]timeout but no right timer! @fsm.c(853),WARNING" ID="0x8b581aab" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[timer_expire_in_sch_lite]timer has been free; not need free! @fsm.c(869),WARNING" ID="0x8b581b2b" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[TIMER_DEL][STACK_TIMER] in_ft is NULL! @fsm.c(994),INFO" ID="0x8b581f15" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[TIMRE_ADD][STACK_TIMER] TIMER=0x%x, TIME=%u @fsm.c(720),INFO" ID="0x8b581685" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[TIMER_EXPIR]timeout timer err! @fsm.c(818),ERROR" ID="0x8b581992" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[TIMER_EXPIR]timeout but no right timer! @fsm.c(848),WARNING" ID="0x8b581a83" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[timer_expire_in_sch_lite]timer has been free; not need free! @fsm.c(864),WARNING" ID="0x8b581b03" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[TIMER_DEL][STACK_TIMER] in_ft is NULL! @fsm.c(989),INFO" ID="0x8b581eed" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="llc_ico_update_finished unknown ico_conhdl @llc_ico.c(203),WARNING" ID="0x883e065b" />
                        <MSG STRUCTURE="diag_log_msg2" NAME="[ICO]conhdl unknown conhdl role, conhdl = %d, role = %d @llc_ico.c(216),ERROR" ID="0x883e06c2" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="llc_cis_update_finished unknown cis_conhdl @llc_ico.c(235),WARNING" ID="0x883e075b" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[ATT]memcpy_s&#160;error @att_table.c(1011),ERROR" ID="0x8d661f9a" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[ATT]memcpy_s&#160;error @att_table.c(1184),ERROR" ID="0x8d662502" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[ATT]memcpy_s&#160;error @att_table.c(1273),ERROR" ID="0x8d6627ca" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ERROR]p_data is null @bt_tran_task.c(85),ERROR" ID="0x8c9402aa" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="BT_TRAN:route data:TID&amp;SOF&amp;SID&amp;CID, LEN = 0x%04X%04X, %d @bt_tran_task.c(115),ERROR" ID="0x8c94039a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Error route_id! @bt_tran_task.c(127),ERROR" ID="0x8c9403fa" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="BT_TRAN:route data:TID&amp;SOF&amp;SID&amp;CID, LEN = 0x%04X%04X, %d @bt_tran_task.c(147),ERROR" ID="0x8c94049a" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="BT_TRAN:data:TID&amp;SOF&amp;SID&amp;CID:0x%04X%04X,LEN:%d @bt_tran_task.c(150),ERROR" ID="0x8c9404b2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="INVALID DATA! @bt_tran_task.c(186),ERROR" ID="0x8c9405d2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="BT_TRAN: TXMCU:ipc send data = %d @bt_tran_task.c(214),ERROR" ID="0x8c9406b2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="UNKNOW CORE! @bt_tran_task.c(224),ERROR" ID="0x8c940702" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="bt tran task framek free property allow_free= %d @bt_tran_task.c(264),INFO" ID="0x8c940845" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="pst_property-&gt;en_id = 0x%x @bt_tran_task.c(282),INFO" ID="0x8c9408d5" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="ipc buf release number:%u %u. @bt_tran_task.c(330),ERROR" ID="0x8c940a52" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="hci qos buf overflow. @bt_tran_task.c(356),ERROR" ID="0x8c940b22" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble fsm buf overflow. @bt_tran_task.c(362),ERROR" ID="0x8c940b52" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="ipc buf warning number:%u %u. @bt_tran_task.c(370),ERROR" ID="0x8c940b92" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="BT_TRAN: data ERROR data_len:%d @bt_tran_task.c(389),WARNING" ID="0x8c940c2b" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="BT_TRAN: data ERROR data:0x%08x, 0x%08x @bt_tran_task.c(393),WARNING" ID="0x8c940c4b" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="rec mcu error data,tid:0x%x,sof:0x%x,len:0x%04x,opcode:0x%04x @bt_tran_task.c(402),ERROR" ID="0x8c940c92" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="rec data malloc fail opcode:0x%04x,length:(0x%04x) @bt_tran_task.c(420),ERROR" ID="0x8c940d22" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="rec data memcpy fail opcode:0x%04x,length:(0x%04x) @bt_tran_task.c(426),ERROR" ID="0x8c940d52" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="rec mcu write property fail,tid:0x%x,sof:0x%x,len:0x%04x,opcode:0x%04x @bt_tran_task.c(436),ERROR" ID="0x8c940da2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ipc data data len err = %d @bt_tran_task.c(473),ERROR" ID="0x8c940eca" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ipc data data len err = %d @bt_tran_task.c(483),ERROR" ID="0x8c940f1a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ipc data from M7 error = %d @bt_tran_task.c(487),ERROR" ID="0x8c940f3a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ipc data from unknow core @bt_tran_task.c(499),ERROR" ID="0x8c940f9a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="bt tran task handler osMessageQueueGet fail ret:(%x) @bt_tran_task.c(525),ERROR" ID="0x8c94106a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="bt tran task framek write property en_id = 0x%x @bt_tran_task.c(549),INFO" ID="0x8c94112d" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="write Property fail id:0x%x, ret:0x%x @bt_tran_task.c(557),ERROR" ID="0x8c94116a" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="bt tran task framek write property fail en_id:%d,ret:%x @bt_tran_task.c(566),ERROR" ID="0x8c9411b2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="hci qos buf overflow. @bt_tran_task.c(107),ERROR" ID="0x8c94035a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="bth ipc fsm rx tx buf overflow. @bt_tran_task.c(112),ERROR" ID="0x8c940382" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[ERROR]p_data is null @bt_tran_task.c(125),ERROR" ID="0x8c9403ea" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="BT_TRAN:route data:TID&amp;SOF&amp;SID&amp;CID, LEN = 0x%04X%04X, %d @bt_tran_task.c(155),ERROR" ID="0x8c9404da" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="Error route_id! @bt_tran_task.c(167),ERROR" ID="0x8c94053a" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="BT_TRAN:route data:TID&amp;SOF&amp;SID&amp;CID, LEN = 0x%04X%04X, %d @bt_tran_task.c(187),ERROR" ID="0x8c9405da" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="BT_TRAN:data:TID&amp;SOF&amp;SID&amp;CID:0x%04X%04X,LEN:%d @bt_tran_task.c(190),ERROR" ID="0x8c9405f2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="INVALID DATA! @bt_tran_task.c(226),ERROR" ID="0x8c940712" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="BT_TRAN: TXMCU:ipc send data fail, ret=%d opcode=0x%x @bt_tran_task.c(255),ERROR" ID="0x8c9407fa" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="UNKNOW CORE! @bt_tran_task.c(264),ERROR" ID="0x8c940842" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="bt tran task framek free property allow_free= %d @bt_tran_task.c(304),INFO" ID="0x8c940985" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="pst_property-&gt;en_id = 0x%x @bt_tran_task.c(322),INFO" ID="0x8c940a15" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="BT_TRAN: data ERROR data_len:%d @bt_tran_task.c(395),WARNING" ID="0x8c940c5b" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="BT_TRAN: data ERROR data:0x%08x, 0x%08x @bt_tran_task.c(399),WARNING" ID="0x8c940c7b" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="rec mcu error data,tid:0x%x,sof:0x%x,len:0x%04x,opcode:0x%04x @bt_tran_task.c(408),ERROR" ID="0x8c940cc2" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="rec data malloc fail opcode:0x%04x,length:(0x%04x) @bt_tran_task.c(426),ERROR" ID="0x8c940d52" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="rec data memcpy fail opcode:0x%04x,length:(0x%04x) @bt_tran_task.c(432),ERROR" ID="0x8c940d82" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="rec mcu write property fail,tid:0x%x,sof:0x%x,len:0x%04x,opcode:0x%04x @bt_tran_task.c(442),ERROR" ID="0x8c940dd2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ipc data data len err = %d @bt_tran_task.c(479),ERROR" ID="0x8c940efa" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ipc data data len err = %d @bt_tran_task.c(489),ERROR" ID="0x8c940f4a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ipc data from M7 error = %d @bt_tran_task.c(493),ERROR" ID="0x8c940f6a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ipc data from unknow core @bt_tran_task.c(505),ERROR" ID="0x8c940fca" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="bt tran task handler osMessageQueueGet fail ret:(%x) @bt_tran_task.c(531),ERROR" ID="0x8c94109a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="bt tran task framek write property en_id = 0x%x @bt_tran_task.c(555),INFO" ID="0x8c94115d" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="write Property fail id:0x%x, ret:0x%x @bt_tran_task.c(563),ERROR" ID="0x8c94119a" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="bt tran task framek write property fail en_id:%d,ret:%x @bt_tran_task.c(572),ERROR" ID="0x8c9411e2" />
                        <MSG STRUCTURE="diag_log_msg3" NAME="[lc_sc_lmp_msg_conflict_check] policy=%d, state=%d, current_state=%d @lc_sc.c(763),INFO" ID="0x887c17dd" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="lc_sc_hci_command_reject no found opcode in tab, opcode=%d @lc_sc.c(1226),ERROR" ID="0x887c2652" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="[INFO][LC_SC]:in role switch or enc state, to save message id=%d @lc_sc.c(1374),INFO" ID="0x887c2af5" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]convert uuid to stack memcpy_s error @sdk_gatt_hlp.c(125),ERROR" ID="0x8da603ea" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att exchange mtu addr memcpy fail @sdk_gatt_hlp.c(581),ERROR" ID="0x8da6122a" />
                        <MSG STRUCTURE="diag_log_msg2" NAME="[gatth_get_multiple_characteristics_value] rmt:0x%x mtu:0x%x @sdk_gatt_hlp.c(887),INFO" ID="0x8da61bbd" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="[gatth_get_characteristics_by_uuid] start_handle:0x%x end_handle:0x%x @sdk_gatt_hlp.c(1020),INFO" ID="0x8da61fe5" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="btsdk gatth get descriptor by handle arg-&gt;start_handle:0x%x arg-&gt;end_handle:0x%x @sdk_gatt_hlp.c(1063),INFO" ID="0x8da6213d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="gatth_set_reliable_characteristic_value in @sdk_gatt_hlp.c(1108),INFO" ID="0x8da622a5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[gatth_set_characteristic_value] memcpy failed @sdk_gatt_hlp.c(1145),ERROR" ID="0x8da623ca" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt write characteristic rmt is NULL @sdk_gatt_hlp.c(1178),ERROR" ID="0x8da624d2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt write characteristic memcpy failed @sdk_gatt_hlp.c(1186),ERROR" ID="0x8da62512" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt write characteristic tl is NULL @sdk_gatt_hlp.c(1201),ERROR" ID="0x8da6258a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[SDK_GATT_HLP] HCI QOS state:%u @sdk_gatt_hlp.c(1550),ERROR" ID="0x8da63072" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[gatth_check_and_save_value] memcpy failed @sdk_gatt_hlp.c(1667),ERROR" ID="0x8da6341a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatth_server_execute_write_complete&#160;memcpy_s&#160;error @sdk_gatt_hlp.c(1764),ERROR" ID="0x8da63722" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatth_server_write_ind&#160;memcpy_s&#160;error @sdk_gatt_hlp.c(1908),ERROR" ID="0x8da63ba2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatth_server_write_ind&#160;memcpy_s&#160;error @sdk_gatt_hlp.c(1930),ERROR" ID="0x8da63c52" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatth_send_response&#160;memcpy_s&#160;error @sdk_gatt_hlp.c(2283),ERROR" ID="0x8da6475a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatth_notify_multiple_characteristic_changed&#160;memcpy_s&#160;error @sdk_gatt_hlp.c(2516),ERROR" ID="0x8da64ea2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att write ind data info mem new fail @sdk_gatt_hlp.c(2568),ERROR" ID="0x8da65042" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att write ind data info service uuid memcpy fail @sdk_gatt_hlp.c(2578),ERROR" ID="0x8da65092" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att write ind data info attribute uuid memcpy fail @sdk_gatt_hlp.c(2583),ERROR" ID="0x8da650ba" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att write ind data info addr memcpy fail @sdk_gatt_hlp.c(2588),ERROR" ID="0x8da650e2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att write ind data info val memcpy fail @sdk_gatt_hlp.c(2593),ERROR" ID="0x8da6510a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att write ind can't find service by service hdl @sdk_gatt_hlp.c(2639),ERROR" ID="0x8da6527a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att write pkt null @sdk_gatt_hlp.c(2645),ERROR" ID="0x8da652aa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att write ind can't find server cbk by server hdl @sdk_gatt_hlp.c(2652),ERROR" ID="0x8da652e2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att read ind data info mem new fail @sdk_gatt_hlp.c(2684),ERROR" ID="0x8da653e2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att read ind data info service uuid memcpy fail @sdk_gatt_hlp.c(2695),ERROR" ID="0x8da6543a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att read ind data info attribute uuid memcpy fail @sdk_gatt_hlp.c(2700),ERROR" ID="0x8da65462" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att read ind data info addr memcpy fail @sdk_gatt_hlp.c(2705),ERROR" ID="0x8da6548a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att read ind data info val memcpy fail @sdk_gatt_hlp.c(2711),ERROR" ID="0x8da654ba" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att read ind can't find service by service hdl @sdk_gatt_hlp.c(2731),ERROR" ID="0x8da6555a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att read pkt null @sdk_gatt_hlp.c(2737),ERROR" ID="0x8da6558a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att read ind can't find server cbk by server hdl @sdk_gatt_hlp.c(2744),ERROR" ID="0x8da655c2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]write element @sdk_gatt_hlp.c(2781),INFO" ID="0x8da656ed" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]read element @sdk_gatt_hlp.c(2785),INFO" ID="0x8da6570d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]write element free @sdk_gatt_hlp.c(2791),INFO" ID="0x8da6573d" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="bt sdk gatt read value handle:%d, offset:%d. @sdk_gatt_hlp.c(1018),INFO" ID="0x8da61fd5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="bt sdk gatt read value can't find remote device. @sdk_gatt_hlp.c(1022),ERROR" ID="0x8da61ff2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="bt sdk gatt read value addr memcpy fail. @sdk_gatt_hlp.c(1027),ERROR" ID="0x8da6201a" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[gatth_get_characteristics_by_uuid] start_handle:0x%x end_handle:0x%x @sdk_gatt_hlp.c(1051),INFO" ID="0x8da620dd" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="btsdk gatth get descriptor by handle arg-&gt;start_handle:0x%x arg-&gt;end_handle:0x%x @sdk_gatt_hlp.c(1094),INFO" ID="0x8da62235" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="gatth_set_reliable_characteristic_value in @sdk_gatt_hlp.c(1139),INFO" ID="0x8da6239d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[gatth_set_characteristic_value] memcpy failed @sdk_gatt_hlp.c(1176),ERROR" ID="0x8da624c2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt write characteristic rmt is NULL @sdk_gatt_hlp.c(1210),ERROR" ID="0x8da625d2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt write characteristic memcpy failed @sdk_gatt_hlp.c(1218),ERROR" ID="0x8da62612" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt write characteristic tl is NULL @sdk_gatt_hlp.c(1233),ERROR" ID="0x8da6268a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[SDK_GATT_HLP] HCI QOS state:%u @sdk_gatt_hlp.c(1582),ERROR" ID="0x8da63172" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[gatth_check_and_save_value] memcpy failed @sdk_gatt_hlp.c(1699),ERROR" ID="0x8da6351a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatth_server_execute_write_complete&#160;memcpy_s&#160;error @sdk_gatt_hlp.c(1796),ERROR" ID="0x8da63822" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatth_server_write_ind&#160;memcpy_s&#160;error @sdk_gatt_hlp.c(1940),ERROR" ID="0x8da63ca2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatth_server_write_ind&#160;memcpy_s&#160;error @sdk_gatt_hlp.c(1962),ERROR" ID="0x8da63d52" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatth_send_response&#160;memcpy_s&#160;error @sdk_gatt_hlp.c(2315),ERROR" ID="0x8da6485a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatth_notify_multiple_characteristic_changed&#160;memcpy_s&#160;error @sdk_gatt_hlp.c(2548),ERROR" ID="0x8da64fa2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att write ind data info mem new fail @sdk_gatt_hlp.c(2600),ERROR" ID="0x8da65142" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att write ind data info service uuid memcpy fail @sdk_gatt_hlp.c(2610),ERROR" ID="0x8da65192" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att write ind data info attribute uuid memcpy fail @sdk_gatt_hlp.c(2615),ERROR" ID="0x8da651ba" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att write ind data info addr memcpy fail @sdk_gatt_hlp.c(2620),ERROR" ID="0x8da651e2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att write ind data info val memcpy fail @sdk_gatt_hlp.c(2625),ERROR" ID="0x8da6520a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att write ind can't find service by service hdl @sdk_gatt_hlp.c(2671),ERROR" ID="0x8da6537a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att write pkt null @sdk_gatt_hlp.c(2677),ERROR" ID="0x8da653aa" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att write ind can't find server cbk by server hdl @sdk_gatt_hlp.c(2684),ERROR" ID="0x8da653e2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att read ind data info mem new fail @sdk_gatt_hlp.c(2716),ERROR" ID="0x8da654e2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att read ind data info service uuid memcpy fail @sdk_gatt_hlp.c(2727),ERROR" ID="0x8da6553a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att read ind data info attribute uuid memcpy fail @sdk_gatt_hlp.c(2732),ERROR" ID="0x8da65562" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att read ind data info addr memcpy fail @sdk_gatt_hlp.c(2737),ERROR" ID="0x8da6558a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att read ind data info val memcpy fail @sdk_gatt_hlp.c(2743),ERROR" ID="0x8da655ba" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att read ind can't find service by service hdl @sdk_gatt_hlp.c(2763),ERROR" ID="0x8da6565a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att read pkt null @sdk_gatt_hlp.c(2769),ERROR" ID="0x8da6568a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att read ind can't find server cbk by server hdl @sdk_gatt_hlp.c(2776),ERROR" ID="0x8da656c2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]write element @sdk_gatt_hlp.c(2813),INFO" ID="0x8da657ed" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]read element @sdk_gatt_hlp.c(2817),INFO" ID="0x8da6580d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]write element free @sdk_gatt_hlp.c(2823),INFO" ID="0x8da6583d" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="[AVDTP][EVENT_CALLBACK] EVENT=%u @a2dp_ui_ram.c(199),INFO" ID="0x8ba2063d" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[WARNING][CIS]cig_param is null @llc_cis.c(115),WARNING" ID="0x89d0039b" />
                        <MSG STRUCTURE="diag_log_msg2" NAME="[CIS]calc tx_latency result, tx_latency_m2s:%d, tx_latency_s2m:%d @llc_cis.c(179),INFO" ID="0x89d0059d" />
index c35c5ac..5929291 100644 (file)
@@ -1,4 +1,6 @@
 <MSG_LOG><MSG STRUCTURE="diag_log_msg2" NAME="audio_debug ipc_send dsp begin,sequence_number = 0x%x,length = 0x%x. @a2dp_hlp_ram.c(93),INFO" ID="0x8ba002ed" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="audio_debug ready to go =======ipc_send dsp end===ret = %d. @a2dp_hlp_ram.c(100),INFO" ID="0x8ba00325" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[ERROR]audio_debug ipc2dsp_msg_str fail @a2dp_hlp_ram.c(102),WARNING" ID="0x8ba00333" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="a2dp_audio: save active device addr 0x%02x:0x%02x:**:**:**:0x%02x @a2dp_hlp_ram.c(521),ERROR" ID="0x8ba0104a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="a2dp_audio: memcpy_s failed @a2dp_hlp_ram.c(523),ERROR" ID="0x8ba0105a" />
                        </MSG_LOG>
\ No newline at end of file
index 1b8860b..0b04414 100644 (file)
@@ -2,7 +2,7 @@
                        <MSG STRUCTURE="diag_log_msg1" NAME="ahib mpc table route op_code = 0x%x not found @ahib_mpc.c(62),ERROR" ID="0x8dfa01f2" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="ahib mpc tx mcu packet NO memory. @ahib_mpc.c(76),ERROR" ID="0x8dfa0262" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="ahib mpc tx mcu packet memcpy failed @ahib_mpc.c(82),ERROR" ID="0x8dfa0292" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="MPC:data send retry opcode: %x @ahib_mpc.c(86),WARNING" ID="0x8dfa02b3" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="MPC:data send retry opcode: %x @ahib_mpc.c(86),ERROR" ID="0x8dfa02b2" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="MPC:data send err opcode: %x @ahib_mpc.c(95),ERROR" ID="0x8dfa02fa" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="ahib mpc bt process packet tid= 0x%x not table route @ahib_mpc.c(137),DBG" ID="0x8dfa044e" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="ahib mpc route packet param is error! @ahib_mpc.c(150),ERROR" ID="0x8dfa04b2" />
index a75cd46..e1beb21 100644 (file)
                        <MSG STRUCTURE="diag_log_msg0" NAME="[ATT]memcpy_s&#160;error @att_gatt.c(1145),ERROR" ID="0x8c4c23ca" />
                        <MSG STRUCTURE="diag_log_msg3" NAME="[ATT]UUID[0x%04x], hdl[0x%x], len[0x%x] @att_gatt.c(1154),INFO" ID="0x8c4c2415" />
                        <MSG STRUCTURE="diag_log_msg5" NAME="GATT_Server_Create_UpdateCCC_Item, add item[hdl:%d] ccc onaddr:0x%02x:%02x:xx:xx:%02x:%02x @att_gatt.c(1368),INFO" ID="0x8c4c2ac5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ATT]memcpy_s&#160;error @att_gatt.c(1492),ERROR" ID="0x8c4c2ea2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ATT_GATT] create le connect mask:%d @att_gatt.c(1810),ERROR" ID="0x8c4c3892" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ATT_GATT] create br connect mask:%d @att_gatt.c(1819),ERROR" ID="0x8c4c38da" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[ATT_GATT] smp cfm mask:%d task_index:%d result:%d @att_gatt.c(1938),ERROR" ID="0x8c4c3c92" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[ATT_GATT] smp request mask:%d task_index:%d sec_mode:%d @att_gatt.c(1973),ERROR" ID="0x8c4c3daa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ATT]memcpy_s error @att_gatt.c(2356),ERROR" ID="0x8c4c49a2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ATT]memcpy_s&#160;error @att_gatt.c(2602),ERROR" ID="0x8c4c5152" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ATT]memcpy_s&#160;error @att_gatt.c(2630),ERROR" ID="0x8c4c5232" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ATT]memcpy_s&#160;error @att_gatt.c(2635),ERROR" ID="0x8c4c525a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[ATT]memcpy_s&#160;error @att_gatt.c(1491),ERROR" ID="0x8c4c2e9a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[ATT_GATT] create le connect mask:%d @att_gatt.c(1809),ERROR" ID="0x8c4c388a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[ATT_GATT] create br connect mask:%d @att_gatt.c(1818),ERROR" ID="0x8c4c38d2" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[ATT_GATT] smp cfm mask:%d task_index:%d result:%d @att_gatt.c(1937),ERROR" ID="0x8c4c3c8a" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[ATT_GATT] smp request mask:%d task_index:%d sec_mode:%d @att_gatt.c(1972),ERROR" ID="0x8c4c3da2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[ATT]memcpy_s error @att_gatt.c(2355),ERROR" ID="0x8c4c499a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[ATT]memcpy_s&#160;error @att_gatt.c(2601),ERROR" ID="0x8c4c514a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[ATT]memcpy_s&#160;error @att_gatt.c(2629),ERROR" ID="0x8c4c522a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[ATT]memcpy_s&#160;error @att_gatt.c(2634),ERROR" ID="0x8c4c5252" />
                        </MSG_LOG>
\ No newline at end of file
index 041bb78..edd5dec 100644 (file)
@@ -1,5 +1,5 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg1" NAME="set_hci_log_status: [%d] @ble_conf.c(230),INFO" ID="0x8de80735" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="set_le_resolution_enable:[%d] @ble_conf.c(237),INFO" ID="0x8de8076d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="get_le_resolution_enable:[%d] @ble_conf.c(245),INFO" ID="0x8de807ad" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="[MEM_TOTAL_USED_MAX][%d][MEM_TOTAL_USED][%d][MALLOC_TRACE][%d][FREE_TRACE][%d]  @ble_conf.c(275),INFO" ID="0x8de8089d" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg1" NAME="set_hci_log_status: [%d] @ble_conf.c(233),INFO" ID="0x8de8074d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="set_le_resolution_enable:[%d] @ble_conf.c(240),INFO" ID="0x8de80785" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="get_le_resolution_enable:[%d] @ble_conf.c(248),INFO" ID="0x8de807c5" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="[MEM_TOTAL_USED_MAX][%d][MEM_TOTAL_USED][%d][MALLOC_TRACE][%d][FREE_TRACE][%d]  @ble_conf.c(278),INFO" ID="0x8de808b5" />
                        </MSG_LOG>
\ No newline at end of file
index 0c2bfe4..5e05148 100644 (file)
                        <MSG STRUCTURE="diag_log_msg1" NAME="ble core: App connect fail: %d @ble_core.c(648),ERROR" ID="0x8cc01442" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="ble core: App Set Ble Sec Params err! pkt_len = %u @ble_core.c(658),ERROR" ID="0x8cc01492" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="ble core: App Set Ble Sec Params fail: %d @ble_core.c(664),ERROR" ID="0x8cc014c2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: app get ble core connect status, param NULL @ble_core.c(673),ERROR" ID="0x8cc0150a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: app get ble core connect status, pkt_ptr NULL @ble_core.c(678),ERROR" ID="0x8cc01532" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: app get ble core connect status, the link does not exist @ble_core.c(689),ERROR" ID="0x8cc0158a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: The link does not exist @ble_core.c(794),INFO" ID="0x8cc018d5" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble core: ConnModeUpdate ignore = %d @ble_core.c(801),INFO" ID="0x8cc0190d" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="ble core: update conn param ignore, mode:%d, cur int:%d @ble_core.c(813),INFO" ID="0x8cc0196d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble core: ble update connection start fail: %d @ble_core.c(827),ERROR" ID="0x8cc019da" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: app update conn params param null @ble_core.c(838),ERROR" ID="0x8cc01a32" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: update param err @ble_core.c(844),ERROR" ID="0x8cc01a62" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: link is not connected when update connect params @ble_core.c(852),ERROR" ID="0x8cc01aa2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble core: conn params type error = %d @ble_core.c(866),ERROR" ID="0x8cc01b12" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble core: sais notify data monitor memcpy rmt_bd fail: %d @ble_core.c(889),ERROR" ID="0x8cc01bca" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: app notify ble baterry level NULL @ble_core.c(905),ERROR" ID="0x8cc01c4a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble core: app notify ble baterry level fail: %d @ble_core.c(911),ERROR" ID="0x8cc01c7a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: ble notify data para is NULL @ble_core.c(921),ERROR" ID="0x8cc01cca" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble core: ble notify data fail ret: %x @ble_core.c(932),ERROR" ID="0x8cc01d22" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble core: ble disconnect error, the link does not exist. handle = %x @ble_core.c(950),ERROR" ID="0x8cc01db2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: The number of links has reached the maximum. @ble_core.c(1002),INFO" ID="0x8cc01f55" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: ble state ind handle message is NULL @ble_core.c(1026),ERROR" ID="0x8cc02012" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: The number of links has reached the maximum. @ble_core.c(1035),ERROR" ID="0x8cc0205a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: ble state ind rmt is NULL @ble_core.c(1081),ERROR" ID="0x8cc021ca" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble core: ble state ind memcpy rmt fail: %d @ble_core.c(1088),ERROR" ID="0x8cc02202" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: app ble smp key handle message is NULL @ble_core.c(1102),ERROR" ID="0x8cc02272" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble core: ble state ind memcpy rmt fail: %d @ble_core.c(1147),ERROR" ID="0x8cc023da" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble log: AppBleConnResult msg_data is NULL @ble_core.c(1174),ERROR" ID="0x8cc024b2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble log: AppBleConnResult link does not exist on handle:%x @ble_core.c(1181),ERROR" ID="0x8cc024ea" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble core: conn update result fail = %d @ble_core.c(1209),WARNING" ID="0x8cc025cb" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: Had Active Disconn,not to retry @ble_core.c(1334),INFO" ID="0x8cc029b5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ANCS]500ms comes! @ble_core.c(1366),INFO" ID="0x8cc02ab5" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble core: unsupported msg_id: 0x%x @ble_core.c(1386),INFO" ID="0x8cc02b55" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble core: app ble init fail ret:%x @ble_core.c(1482),ERROR" ID="0x8cc02e52" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: ble core connect proc cmds param NULL @ble_core.c(1516),ERROR" ID="0x8cc02f62" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: ble core connect proc cmds pkt_ptr NULL @ble_core.c(1521),ERROR" ID="0x8cc02f8a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: mpc param is null! @ble_core.c(673),ERROR" ID="0x8cc0150a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: mpc pkt_ptr is null! @ble_core.c(678),ERROR" ID="0x8cc01532" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[AHI]set ctkd param ctkd=%d @ble_core.c(685),ERROR" ID="0x8cc0156a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: app get ble core connect status, param NULL @ble_core.c(693),ERROR" ID="0x8cc015aa" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: app get ble core connect status, pkt_ptr NULL @ble_core.c(698),ERROR" ID="0x8cc015d2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: app get ble core connect status, the link does not exist @ble_core.c(709),ERROR" ID="0x8cc0162a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: The link does not exist @ble_core.c(814),INFO" ID="0x8cc01975" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble core: ConnModeUpdate ignore = %d @ble_core.c(821),INFO" ID="0x8cc019ad" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="ble core: update conn param ignore, mode:%d, cur int:%d @ble_core.c(833),INFO" ID="0x8cc01a0d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble core: ble update connection start fail: %d @ble_core.c(847),ERROR" ID="0x8cc01a7a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: app update conn params param null @ble_core.c(858),ERROR" ID="0x8cc01ad2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: update param err @ble_core.c(864),ERROR" ID="0x8cc01b02" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: link is not connected when update connect params @ble_core.c(872),ERROR" ID="0x8cc01b42" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble core: conn params type error = %d @ble_core.c(886),ERROR" ID="0x8cc01bb2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble core: sais notify data monitor memcpy rmt_bd fail: %d @ble_core.c(909),ERROR" ID="0x8cc01c6a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: app notify ble baterry level NULL @ble_core.c(925),ERROR" ID="0x8cc01cea" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble core: app notify ble baterry level fail: %d @ble_core.c(931),ERROR" ID="0x8cc01d1a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: ble notify data para is NULL @ble_core.c(941),ERROR" ID="0x8cc01d6a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble core: ble notify data fail ret: %x @ble_core.c(952),ERROR" ID="0x8cc01dc2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble core: ble disconnect error, the link does not exist. handle = %x @ble_core.c(970),ERROR" ID="0x8cc01e52" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: The number of links has reached the maximum. @ble_core.c(1022),INFO" ID="0x8cc01ff5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: ble state ind handle message is NULL @ble_core.c(1046),ERROR" ID="0x8cc020b2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: The number of links has reached the maximum. @ble_core.c(1055),ERROR" ID="0x8cc020fa" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: ble state ind rmt is NULL @ble_core.c(1101),ERROR" ID="0x8cc0226a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble core: ble state ind memcpy rmt fail: %d @ble_core.c(1108),ERROR" ID="0x8cc022a2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: app ble smp key handle message is NULL @ble_core.c(1122),ERROR" ID="0x8cc02312" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: key miss param is null! @ble_core.c(1158),ERROR" ID="0x8cc02432" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble core: ble state ind memcpy rmt fail: %d @ble_core.c(1169),ERROR" ID="0x8cc0248a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble log: AppBleConnResult msg_data is NULL @ble_core.c(1196),ERROR" ID="0x8cc02562" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble log: AppBleConnResult link does not exist on handle:%x @ble_core.c(1203),ERROR" ID="0x8cc0259a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble core: conn update result fail = %d @ble_core.c(1231),WARNING" ID="0x8cc0267b" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: Had Active Disconn,not to retry @ble_core.c(1356),INFO" ID="0x8cc02a65" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[ANCS]500ms comes! @ble_core.c(1388),INFO" ID="0x8cc02b65" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble core: unsupported msg_id: 0x%x @ble_core.c(1408),INFO" ID="0x8cc02c05" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble core: app ble init fail ret:%x @ble_core.c(1504),ERROR" ID="0x8cc02f02" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: ble core connect proc cmds param NULL @ble_core.c(1538),ERROR" ID="0x8cc03012" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: ble core connect proc cmds pkt_ptr NULL @ble_core.c(1543),ERROR" ID="0x8cc0303a" />
                        </MSG_LOG>
\ No newline at end of file
index a9b35a4..e6e159d 100644 (file)
@@ -3,26 +3,26 @@
                        <MSG STRUCTURE="diag_log_msg0" NAME="[ble_general_gatt] find upper cbk fail @ble_general_gatt.c(116),ERROR" ID="0x8de003a2" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="[ble_general_gatt] read ind mpc tx fail tx_cnt:%d @ble_general_gatt.c(126),ERROR" ID="0x8de003f2" />
                        <MSG STRUCTURE="diag_log_msg2" NAME="gatt server call back func unknown request_id:%d, event_type:0x%x. @ble_general_gatt.c(147),INFO" ID="0x8de0049d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt start service error:0x%x. @ble_general_gatt.c(186),ERROR" ID="0x8de005d2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt add server add service error:0x%x. @ble_general_gatt.c(198),ERROR" ID="0x8de00632" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt add server add service error:0x%x. @ble_general_gatt.c(211),ERROR" ID="0x8de0069a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt add include service add include error:0x%x. @ble_general_gatt.c(224),ERROR" ID="0x8de00702" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt add characteristic new fail @ble_general_gatt.c(255),ERROR" ID="0x8de007fa" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt add characteristic len:0x%x. @ble_general_gatt.c(262),ERROR" ID="0x8de00832" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt add characteristic error:0x%x. @ble_general_gatt.c(273),ERROR" ID="0x8de0088a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt add descriptor new fail @ble_general_gatt.c(290),ERROR" ID="0x8de00912" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt add descriptor memcpy fail: %d @ble_general_gatt.c(299),ERROR" ID="0x8de0095a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt add descriptor error:0x%x. @ble_general_gatt.c(305),ERROR" ID="0x8de0098a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt send response new fail @ble_general_gatt.c(321),ERROR" ID="0x8de00a0a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt send response memcpy fail: %d @ble_general_gatt.c(328),ERROR" ID="0x8de00a42" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt send response addr error:0x%x. @ble_general_gatt.c(334),ERROR" ID="0x8de00a72" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt send response error:0x%x. @ble_general_gatt.c(343),ERROR" ID="0x8de00aba" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt update descriptor value new fail @ble_general_gatt.c(359),ERROR" ID="0x8de00b3a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt update descriptor value memcpy fail: %d @ble_general_gatt.c(366),ERROR" ID="0x8de00b72" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt update descriptor value error:0x%x. @ble_general_gatt.c(373),ERROR" ID="0x8de00baa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt notify characteristic changed new NULL @ble_general_gatt.c(390),ERROR" ID="0x8de00c32" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt notify characteristic changed fail when notify @ble_general_gatt.c(398),ERROR" ID="0x8de00c72" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt notify characteristic changed when notify @ble_general_gatt.c(409),ERROR" ID="0x8de00cca" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble gatt start service error:0x%x. @ble_general_gatt.c(186),ERROR" ID="0x8de005d2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble gatt add server add service error:0x%x. @ble_general_gatt.c(198),ERROR" ID="0x8de00632" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble gatt add server add service error:0x%x. @ble_general_gatt.c(211),ERROR" ID="0x8de0069a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble gatt add include service add include error:0x%x. @ble_general_gatt.c(224),ERROR" ID="0x8de00702" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble gatt add characteristic new fail @ble_general_gatt.c(255),ERROR" ID="0x8de007fa" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble gatt add characteristic len:0x%x. @ble_general_gatt.c(262),ERROR" ID="0x8de00832" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble gatt add characteristic error:0x%x. @ble_general_gatt.c(273),ERROR" ID="0x8de0088a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble gatt add descriptor new fail @ble_general_gatt.c(290),ERROR" ID="0x8de00912" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble gatt add descriptor memcpy fail: %d @ble_general_gatt.c(299),ERROR" ID="0x8de0095a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble gatt add descriptor error:0x%x. @ble_general_gatt.c(305),ERROR" ID="0x8de0098a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble gatt send response new fail @ble_general_gatt.c(321),ERROR" ID="0x8de00a0a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble gatt send response memcpy fail: %d @ble_general_gatt.c(328),ERROR" ID="0x8de00a42" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble gatt send response addr error:0x%x. @ble_general_gatt.c(334),ERROR" ID="0x8de00a72" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble gatt send response error:0x%x. @ble_general_gatt.c(343),ERROR" ID="0x8de00aba" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble gatt update descriptor value new fail @ble_general_gatt.c(359),ERROR" ID="0x8de00b3a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble gatt update descriptor value memcpy fail: %d @ble_general_gatt.c(366),ERROR" ID="0x8de00b72" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble gatt update descriptor value error:0x%x. @ble_general_gatt.c(373),ERROR" ID="0x8de00baa" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble gatt notify characteristic changed new NULL @ble_general_gatt.c(390),ERROR" ID="0x8de00c32" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble gatt notify characteristic changed fail when notify @ble_general_gatt.c(398),ERROR" ID="0x8de00c72" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble gatt notify characteristic changed when notify @ble_general_gatt.c(409),ERROR" ID="0x8de00cca" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="character changed by uuid data is NULL @ble_general_gatt.c(424),ERROR" ID="0x8de00d42" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="character changed by uuid can not find hdl, ret = %d @ble_general_gatt.c(431),ERROR" ID="0x8de00d7a" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="character changed by uuid in is NULL @ble_general_gatt.c(436),ERROR" ID="0x8de00da2" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="ble gatt client characteristic value callback memcpy fail: %d @ble_general_gatt.c(673),ERROR" ID="0x8de0150a" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[BCore] gatt client write result can't find upper cbk. @ble_general_gatt.c(708),ERROR" ID="0x8de01622" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="ble gatt client call back func type=%d @ble_general_gatt.c(771),INFO" ID="0x8de0181d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt discovery service not found:0x%x. @ble_general_gatt.c(802),WARNING" ID="0x8de01913" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt discovery include service not found:0x%x. @ble_general_gatt.c(825),WARNING" ID="0x8de019cb" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt discovery characteristic new fail. @ble_general_gatt.c(841),ERROR" ID="0x8de01a4a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt discovery characteristic memset fail. @ble_general_gatt.c(846),ERROR" ID="0x8de01a72" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt discovery characteristic not found:0x%x. @ble_general_gatt.c(863),WARNING" ID="0x8de01afb" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt discovery characteristic by uuid new fail. @ble_general_gatt.c(881),ERROR" ID="0x8de01b8a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt discovery characteristic by uuid memset fail. @ble_general_gatt.c(887),ERROR" ID="0x8de01bba" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt discovery characteristic by uuid memcpy fail. @ble_general_gatt.c(901),ERROR" ID="0x8de01c2a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt discovery characteristic by uuid not found:0x%x. @ble_general_gatt.c(912),WARNING" ID="0x8de01c83" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt discovery descriptor by handle new fail. @ble_general_gatt.c(928),ERROR" ID="0x8de01d02" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt discovery descriptor by handle not found:0x%x. @ble_general_gatt.c(942),WARNING" ID="0x8de01d73" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt discovery descriptor new fail. @ble_general_gatt.c(962),ERROR" ID="0x8de01e12" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt discovery descriptor memset fail. @ble_general_gatt.c(967),ERROR" ID="0x8de01e3a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt discovery descriptor memcpy fail. @ble_general_gatt.c(973),ERROR" ID="0x8de01e6a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt discovery descriptor not found:0x%x. @ble_general_gatt.c(984),WARNING" ID="0x8de01ec3" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble gatt read characteristic value respon new fail. @ble_general_gatt.c(1005),ERROR" ID="0x8de01f6a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[BCore] ble gatt read characteristic value respon memcpy fail: %d @ble_general_gatt.c(1012),ERROR" ID="0x8de01fa2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[BCore] ble gatt read characteristic value respon memcpy fail: %d @ble_general_gatt.c(1022),ERROR" ID="0x8de01ff2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt read characteristic value new fail. @ble_general_gatt.c(1045),ERROR" ID="0x8de020aa" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt read descriptor value error:0x%x. @ble_general_gatt.c(1059),ERROR" ID="0x8de0211a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt read characteristic by uuid new fail. @ble_general_gatt.c(1077),ERROR" ID="0x8de021aa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt read characteristic by uuid memcpy fail. @ble_general_gatt.c(1090),ERROR" ID="0x8de02212" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt read characteristic by uuid memcpy fail. @ble_general_gatt.c(1097),ERROR" ID="0x8de0224a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt read characteristic by uuid error:0x%x. @ble_general_gatt.c(1104),WARNING" ID="0x8de02283" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt read multiple characteristic new fail. @ble_general_gatt.c(1122),ERROR" ID="0x8de02312" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt read multiple characteristic memset fail. @ble_general_gatt.c(1129),ERROR" ID="0x8de0234a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt read multiple characteristic error:0x%x. @ble_general_gatt.c(1145),WARNING" ID="0x8de023cb" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt read multiple characteristic error:0x%x. @ble_general_gatt.c(1175),WARNING" ID="0x8de024bb" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt write characteristic value memcpy failed @ble_general_gatt.c(1227),ERROR" ID="0x8de0265a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt write characteristic value param is NULL @ble_general_gatt.c(1250),ERROR" ID="0x8de02712" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt write characteristic value malloc fail, size:0x%x. @ble_general_gatt.c(1263),ERROR" ID="0x8de0277a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[BCore] ble general gatt write characteristic value memcpy fail: %d @ble_general_gatt.c(1273),ERROR" ID="0x8de027ca" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt write characteristic value fail:0x%x. @ble_general_gatt.c(1287),WARNING" ID="0x8de0283b" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt reliable write characteristic value param is NULL @ble_general_gatt.c(1306),ERROR" ID="0x8de028d2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt reliable write characteristic value malloc fail @ble_general_gatt.c(1313),ERROR" ID="0x8de0290a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[BCore] ble general gatt reliable write characteristic value memcpy fail @ble_general_gatt.c(1322),ERROR" ID="0x8de02952" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt reliable write characteristic value fail:0x%x. @ble_general_gatt.c(1341),WARNING" ID="0x8de029eb" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt write descriptor value malloc faile, size:0x%x. @ble_general_gatt.c(1358),ERROR" ID="0x8de02a72" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[BCore] ble general gatt write descriptor value memcpy fail: %d @ble_general_gatt.c(1367),ERROR" ID="0x8de02aba" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt discovery descriptor error:0x%x. @ble_general_gatt.c(1377),ERROR" ID="0x8de02b0a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[BCore] ble gatt read descriptor value response memcpy fail: %d @ble_general_gatt.c(1399),ERROR" ID="0x8de02bba" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[BCore] ble gatt read descriptor value response memcpy fail: %d @ble_general_gatt.c(1407),ERROR" ID="0x8de02bfa" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt read descriptor value error:0x%x. @ble_general_gatt.c(1436),ERROR" ID="0x8de02ce2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt mtu config error:0x%x. @ble_general_gatt.c(1451),ERROR" ID="0x8de02d5a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt set gap ui attributes error:0x%x. @ble_general_gatt.c(1464),ERROR" ID="0x8de02dc2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt get gap ui attributes error:0x%x. @ble_general_gatt.c(1483),ERROR" ID="0x8de02e5a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="bt mpc adapter gatt get hid report callback new fail @ble_general_gatt.c(1513),ERROR" ID="0x8de02f4a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="bt mpc adapter gatt get hid report callback error_code = %x @ble_general_gatt.c(1524),INFO" ID="0x8de02fa5" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble gatt discovery service not found:0x%x. @ble_general_gatt.c(802),WARNING" ID="0x8de01913" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble gatt discovery include service not found:0x%x. @ble_general_gatt.c(825),WARNING" ID="0x8de019cb" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble gatt discovery characteristic new fail. @ble_general_gatt.c(841),ERROR" ID="0x8de01a4a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble gatt discovery characteristic memset fail. @ble_general_gatt.c(846),ERROR" ID="0x8de01a72" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble gatt discovery characteristic not found:0x%x. @ble_general_gatt.c(863),WARNING" ID="0x8de01afb" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble gatt discovery characteristic by uuid new fail. @ble_general_gatt.c(881),ERROR" ID="0x8de01b8a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble gatt discovery characteristic by uuid memset fail. @ble_general_gatt.c(887),ERROR" ID="0x8de01bba" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble att discovery characteristic by uuid memcpy fail. @ble_general_gatt.c(901),ERROR" ID="0x8de01c2a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble att discovery characteristic by uuid not found:0x%x. @ble_general_gatt.c(912),WARNING" ID="0x8de01c83" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble att discovery descriptor by handle new fail. @ble_general_gatt.c(928),ERROR" ID="0x8de01d02" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble att discovery descriptor by handle not found:0x%x. @ble_general_gatt.c(942),WARNING" ID="0x8de01d73" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble att discovery descriptor new fail. @ble_general_gatt.c(962),ERROR" ID="0x8de01e12" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble att discovery descriptor memset fail. @ble_general_gatt.c(967),ERROR" ID="0x8de01e3a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble att discovery descriptor memcpy fail. @ble_general_gatt.c(973),ERROR" ID="0x8de01e6a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble att discovery descriptor not found:0x%x. @ble_general_gatt.c(984),WARNING" ID="0x8de01ec3" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble att read value in. @ble_general_gatt.c(998),INFO" ID="0x8de01f35" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble att read value param new fail. @ble_general_gatt.c(1001),ERROR" ID="0x8de01f4a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble att read value param memset fail. @ble_general_gatt.c(1006),ERROR" ID="0x8de01f72" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble att read value handle:%d. @ble_general_gatt.c(1011),INFO" ID="0x8de01f9d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble att read value error:0x%x. @ble_general_gatt.c(1014),ERROR" ID="0x8de01fb2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble att read characteristic by uuid new fail. @ble_general_gatt.c(1031),ERROR" ID="0x8de0203a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble att read characteristic by uuid memcpy fail. @ble_general_gatt.c(1044),ERROR" ID="0x8de020a2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble att read characteristic by uuid memcpy fail. @ble_general_gatt.c(1051),ERROR" ID="0x8de020da" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble att read characteristic by uuid error:0x%x. @ble_general_gatt.c(1058),WARNING" ID="0x8de02113" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble att read multiple characteristic new fail. @ble_general_gatt.c(1076),ERROR" ID="0x8de021a2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble att read multiple characteristic memset fail. @ble_general_gatt.c(1083),ERROR" ID="0x8de021da" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble att read multiple characteristic error:0x%x. @ble_general_gatt.c(1099),WARNING" ID="0x8de0225b" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble att read multiple characteristic error:0x%x. @ble_general_gatt.c(1129),WARNING" ID="0x8de0234b" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble att write characteristic value memcpy failed @ble_general_gatt.c(1181),ERROR" ID="0x8de024ea" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble att write characteristic value param is NULL @ble_general_gatt.c(1204),ERROR" ID="0x8de025a2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble att write characteristic value malloc fail, size:0x%x. @ble_general_gatt.c(1217),ERROR" ID="0x8de0260a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[BCore] ble att write characteristic value memcpy fail: %d @ble_general_gatt.c(1227),ERROR" ID="0x8de0265a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble att write characteristic value fail:0x%x. @ble_general_gatt.c(1241),WARNING" ID="0x8de026cb" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble att reliable write characteristic value param is NULL @ble_general_gatt.c(1260),ERROR" ID="0x8de02762" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble att reliable write characteristic value malloc fail @ble_general_gatt.c(1267),ERROR" ID="0x8de0279a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[BCore] ble att reliable write characteristic value memcpy fail @ble_general_gatt.c(1276),ERROR" ID="0x8de027e2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble att reliable write characteristic value fail:0x%x. @ble_general_gatt.c(1295),WARNING" ID="0x8de0287b" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble att write descriptor value malloc faile, size:0x%x. @ble_general_gatt.c(1312),ERROR" ID="0x8de02902" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[BCore] ble att write descriptor value memcpy fail: %d @ble_general_gatt.c(1321),ERROR" ID="0x8de0294a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble att discovery descriptor error:0x%x. @ble_general_gatt.c(1331),ERROR" ID="0x8de0299a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[BCore] ble gatt read descriptor value response memcpy fail: %d @ble_general_gatt.c(1353),ERROR" ID="0x8de02a4a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[BCore] ble gatt read descriptor value response memcpy fail: %d @ble_general_gatt.c(1361),ERROR" ID="0x8de02a8a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble att read descriptor value error:0x%x. @ble_general_gatt.c(1390),ERROR" ID="0x8de02b72" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble att mtu config error:0x%x. @ble_general_gatt.c(1405),ERROR" ID="0x8de02bea" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble att set gap ui attributes error:0x%x. @ble_general_gatt.c(1418),ERROR" ID="0x8de02c52" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble att get gap ui attributes error:0x%x. @ble_general_gatt.c(1437),ERROR" ID="0x8de02cea" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="bt mpc adapter gatt get hid report callback new fail @ble_general_gatt.c(1467),ERROR" ID="0x8de02dda" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="bt mpc adapter gatt get hid report callback error_code = %x @ble_general_gatt.c(1478),INFO" ID="0x8de02e35" />
                        </MSG_LOG>
\ No newline at end of file
index 27cb7a1..4a907ae 100644 (file)
@@ -1,17 +1,17 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="a2dp_audio: start @bt_ahi_av.c(52),WARNING" ID="0x8c9e01a3" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="a2dp_audio: suspend @bt_ahi_av.c(68),WARNING" ID="0x8c9e0223" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="a2dp_audio: set audio param stream_hdl 0x%x shmid 0x%x enable %d result 0x%x @bt_ahi_av.c(106),WARNING" ID="0x8c9e0353" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="a2dp_audio: send stream qos flag %d @bt_ahi_av.c(118),WARNING" ID="0x8c9e03b3" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="a2dp_audio: first frame @bt_ahi_av.c(162),WARNING" ID="0x8c9e0513" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="a2dp_audio: start @bt_ahi_av.c(52),ERROR" ID="0x8c9e01a2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="a2dp_audio: suspend @bt_ahi_av.c(68),ERROR" ID="0x8c9e0222" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="a2dp_audio: set audio param stream_hdl 0x%x shmid 0x%x enable %d result 0x%x @bt_ahi_av.c(106),ERROR" ID="0x8c9e0352" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="a2dp_audio: send stream qos flag %d @bt_ahi_av.c(118),ERROR" ID="0x8c9e03b2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="a2dp_audio: first frame @bt_ahi_av.c(162),ERROR" ID="0x8c9e0512" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="a2dp_audio: send stream packet too much %d @bt_ahi_av.c(198),ERROR" ID="0x8c9e0632" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="a2dp_audio: alloc buffer fail @bt_ahi_av.c(216),ERROR" ID="0x8c9e06c2" />
                        <MSG STRUCTURE="diag_log_msg3" NAME="a2dp_audio: send stream error 0x%x enable %d sta %d @bt_ahi_av.c(229),ERROR" ID="0x8c9e072a" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="a2dp_audio: send stream seq %d enable %d sta %d @bt_ahi_av.c(238),WARNING" ID="0x8c9e0773" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="a2dp_audio: send stream seq %d enable %d sta %d @bt_ahi_av.c(238),ERROR" ID="0x8c9e0772" />
                        <MSG STRUCTURE="diag_log_msg2" NAME="a2dp_audio: acquire stream error 0x%x shmid 0x%x @bt_ahi_av.c(249),ERROR" ID="0x8c9e07ca" />
                        <MSG STRUCTURE="diag_log_msg4" NAME="a2dp_audio: acquire frame empty cnt %d eos %d size %d pkt_len %d @bt_ahi_av.c(260),ERROR" ID="0x8c9e0822" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="a2dp_audio: play state enable %d sta %d @bt_ahi_av.c(265),WARNING" ID="0x8c9e084b" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="a2dp_audio: play state enable %d sta %d @bt_ahi_av.c(265),ERROR" ID="0x8c9e084a" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="a2dp_audio: release stream error 0x%x @bt_ahi_av.c(273),ERROR" ID="0x8c9e088a" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="a2dp_audio: no stream. enable %d sta %d @bt_ahi_av.c(284),WARNING" ID="0x8c9e08e3" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="a2dp_audio: no stream. enable %d sta %d @bt_ahi_av.c(284),ERROR" ID="0x8c9e08e2" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="a2dp_audio: a2dp service audio task handler @bt_ahi_av.c(294),INFO" ID="0x8c9e0935" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="a2dp_audio: start accept @bt_ahi_av.c(324),WARNING" ID="0x8c9e0a23" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="a2dp_audio: start accept @bt_ahi_av.c(324),ERROR" ID="0x8c9e0a22" />
                        </MSG_LOG>
\ No newline at end of file
index 6c194ad..80a7f15 100644 (file)
@@ -1,33 +1,36 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg2" NAME="stack gap set discovery mode result = 0x%x, mode = 0x%x  @bt_ahi_gap.c(82),INFO" ID="0x8c9e0295" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="stack gap get discovery mode result = 0x%x, mode = 0x%x  @bt_ahi_gap.c(96),INFO" ID="0x8c9e0305" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="stack gap stop discovery result = 0x%x, mode = 0x%x  @bt_ahi_gap.c(106),INFO" ID="0x8c9e0355" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="stack gap create acl result = 0x%x, dev_hdl = 0x%x, link type = %d  @bt_ahi_gap.c(120),INFO" ID="0x8c9e03c5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memory copy failed @bt_ahi_gap.c(133),ERROR" ID="0x8c9e042a" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="stack gap create acl cfm cbk result = 0x%x, acl_hdl = 0x%x, link type = %d  @bt_ahi_gap.c(138),INFO" ID="0x8c9e0455" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="stack gap create acla result = 0x%x @bt_ahi_gap.c(147),INFO" ID="0x8c9e049d" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="stack gap reconnect phone result = 0x%x, dev_hdl = 0x%x  @bt_ahi_gap.c(158),INFO" ID="0x8c9e04f5" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="stack gap get rmt dev handle result = 0x%x @bt_ahi_gap.c(170),INFO" ID="0x8c9e0555" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="stack gap device is connected result = 0x%x, dev_hdl = 0x%x  @bt_ahi_gap.c(182),INFO" ID="0x8c9e05b5" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="btsdk disconnect acl by handle result = 0x%x @bt_ahi_gap.c(193),INFO" ID="0x8c9e060d" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="stack gap pair device result = 0x%x, dev_hdl = 0x%x  @bt_ahi_gap.c(205),INFO" ID="0x8c9e066d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="stack gap add rmt device rsp.result = %x @bt_ahi_gap.c(222),INFO" ID="0x8c9e06f5" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="stack gap update rmt device name result = 0x%x, name = %s  @bt_ahi_gap.c(242),INFO" ID="0x8c9e0795" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memory copy failed @bt_ahi_gap.c(256),ERROR" ID="0x8c9e0802" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="stack gap update rmt device name cfm cbk result = 0x%x, opindex = 0x%x, size = %d  @bt_ahi_gap.c(264),INFO" ID="0x8c9e0845" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="stack gap update rmt device name async result = 0x%x @bt_ahi_gap.c(274),INFO" ID="0x8c9e0895" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="stack gap get local name result = 0x%x, length = %d, name = %s  @bt_ahi_gap.c(310),INFO" ID="0x8c9e09b5" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="stack gap get rmt dev addr result = 0x%x, addr[%02x:**:**:**:%02x:%02x] @bt_ahi_gap.c(335),INFO" ID="0x8c9e0a7d" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="stack gap browse rmt service overflow, max_count = %d, svc_count = %d @bt_ahi_gap.c(357),ERROR" ID="0x8c9e0b2a" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="stack gap browse rmt service result = 0x%x, svc_count = %d, svc_hdl[0] = 0x%x @bt_ahi_gap.c(363),INFO" ID="0x8c9e0b5d" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="hfp enable sco:scohdl=0x%x inid=0x%x outid=0x%x @bt_ahi_gap.c(384),INFO" ID="0x8c9e0c05" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="hfp disable sco:scohdl=0x%x @bt_ahi_gap.c(388),INFO" ID="0x8c9e0c25" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="result = 0x%x, handle = 0x%x, service_class = %02x  @bt_ahi_gap.c(421),INFO" ID="0x8c9e0d2d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="stack gap init, res = 0x%x  @bt_ahi_gap.c(432),INFO" ID="0x8c9e0d85" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="set bt tx power, hdl=0x%x, power=%d, ret=0x%x @bt_ahi_gap.c(445),INFO" ID="0x8c9e0ded" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="br gap read rssi, hdl=0x%x, rssi=%d, ret=0x%x @bt_ahi_gap.c(453),INFO" ID="0x8c9e0e2d" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="set active scene scene = %d, bitrate = %d, delay = %d, ret=0x%x @bt_ahi_gap.c(469),INFO" ID="0x8c9e0ead" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="set inquiry scan param interval = %d, window = %d @bt_ahi_gap.c(477),INFO" ID="0x8c9e0eed" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memory copy failed @bt_ahi_gap.c(488),ERROR" ID="0x8c9e0f42" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="stack gap restore rmt device rsp.result = %x @bt_ahi_gap.c(492),INFO" ID="0x8c9e0f65" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="br gap get link mode, hdl=0x%x, mode=%d, ret=0x%x @bt_ahi_gap.c(501),INFO" ID="0x8c9e0fad" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg2" NAME="stack gap set discovery mode result = 0x%x, mode = 0x%x  @bt_ahi_gap.c(84),INFO" ID="0x8c9e02a5" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="stack gap get discovery mode result = 0x%x, mode = 0x%x  @bt_ahi_gap.c(98),INFO" ID="0x8c9e0315" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="stack gap stop discovery result = 0x%x, mode = 0x%x  @bt_ahi_gap.c(108),INFO" ID="0x8c9e0365" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="stack gap create acl result = 0x%x, dev_hdl = 0x%x, link type = %d  @bt_ahi_gap.c(122),INFO" ID="0x8c9e03d5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memory copy failed @bt_ahi_gap.c(135),ERROR" ID="0x8c9e043a" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="stack gap create acl cfm cbk result = 0x%x, acl_hdl = 0x%x, link type = %d  @bt_ahi_gap.c(140),INFO" ID="0x8c9e0465" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="stack gap create acla result = 0x%x @bt_ahi_gap.c(149),INFO" ID="0x8c9e04ad" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="stack gap reconnect phone result = 0x%x, dev_hdl = 0x%x  @bt_ahi_gap.c(160),INFO" ID="0x8c9e0505" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="stack gap get rmt dev handle result = 0x%x @bt_ahi_gap.c(172),INFO" ID="0x8c9e0565" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="stack gap device is connected result = 0x%x, dev_hdl = 0x%x  @bt_ahi_gap.c(184),INFO" ID="0x8c9e05c5" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="btsdk disconnect acl by handle result = 0x%x @bt_ahi_gap.c(195),INFO" ID="0x8c9e061d" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="stack gap pair device result = 0x%x, dev_hdl = 0x%x  @bt_ahi_gap.c(207),INFO" ID="0x8c9e067d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="stack gap add rmt device rsp.result = %x @bt_ahi_gap.c(224),INFO" ID="0x8c9e0705" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="stack gap update rmt device name result = 0x%x, name = %s  @bt_ahi_gap.c(244),INFO" ID="0x8c9e07a5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memory copy failed @bt_ahi_gap.c(258),ERROR" ID="0x8c9e0812" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="stack gap update rmt device name cfm cbk result = 0x%x, opindex = 0x%x, size = %d  @bt_ahi_gap.c(266),INFO" ID="0x8c9e0855" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="stack gap update rmt device name async result = 0x%x @bt_ahi_gap.c(276),INFO" ID="0x8c9e08a5" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="stack gap get local name result = 0x%x, length = %d, name = %s  @bt_ahi_gap.c(312),INFO" ID="0x8c9e09c5" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="stack gap get rmt dev addr result = 0x%x, addr[%02x:**:**:**:%02x:%02x] @bt_ahi_gap.c(337),INFO" ID="0x8c9e0a8d" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="stack gap browse rmt service overflow, max_count = %d, svc_count = %d @bt_ahi_gap.c(359),ERROR" ID="0x8c9e0b3a" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="stack gap browse rmt service result = 0x%x, svc_count = %d, svc_hdl[0] = 0x%x @bt_ahi_gap.c(365),INFO" ID="0x8c9e0b6d" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="hfp enable sco:scohdl=0x%x inid=0x%x outid=0x%x @bt_ahi_gap.c(386),INFO" ID="0x8c9e0c15" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="hfp disable sco:scohdl=0x%x @bt_ahi_gap.c(390),INFO" ID="0x8c9e0c35" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="result = 0x%x, handle = 0x%x, service_class = %02x  @bt_ahi_gap.c(423),INFO" ID="0x8c9e0d3d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="stack gap init, res = 0x%x  @bt_ahi_gap.c(435),INFO" ID="0x8c9e0d9d" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="set bt tx power, hdl=0x%x, power=%d, ret=0x%x @bt_ahi_gap.c(448),INFO" ID="0x8c9e0e05" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="br gap read rssi, hdl=0x%x, rssi=%d, ret=0x%x @bt_ahi_gap.c(456),INFO" ID="0x8c9e0e45" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="set active scene scene = %d, bitrate = %d, delay = %d, ret=0x%x @bt_ahi_gap.c(472),INFO" ID="0x8c9e0ec5" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="set inquiry scan param interval = %d, window = %d @bt_ahi_gap.c(480),INFO" ID="0x8c9e0f05" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memory copy failed @bt_ahi_gap.c(491),ERROR" ID="0x8c9e0f5a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="stack gap restore rmt device rsp.result = %x @bt_ahi_gap.c(495),INFO" ID="0x8c9e0f7d" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="br gap get link mode, hdl=0x%x, mode=%d, ret=0x%x @bt_ahi_gap.c(504),INFO" ID="0x8c9e0fc5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="mpc param null! @bt_ahi_gap.c(520),ERROR" ID="0x8c9e1042" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="mpc pkt_ptr is null! @bt_ahi_gap.c(525),ERROR" ID="0x8c9e106a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[AHI]set br secure param secure=%d. @bt_ahi_gap.c(529),ERROR" ID="0x8c9e108a" />
                        </MSG_LOG>
\ No newline at end of file
index d924aa4..d0a5a05 100644 (file)
@@ -1,7 +1,8 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="memory alloc failed @bt_ahi_hfp.c(279),WARNING" ID="0x8c9e08bb" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memory set failed. @bt_ahi_hfp.c(284),WARNING" ID="0x8c9e08e3" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memory copy failed. @bt_ahi_hfp.c(293),WARNING" ID="0x8c9e092b" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memory alloc failed @bt_ahi_hfp.c(518),WARNING" ID="0x8c9e1033" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memory set failed. @bt_ahi_hfp.c(523),WARNING" ID="0x8c9e105b" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memory copy failed. @bt_ahi_hfp.c(532),WARNING" ID="0x8c9e10a3" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg2" NAME="HFP:sco config flow limit line_high=%u line_low=%u @bt_ahi_hfp.c(278),ERROR" ID="0x8c9e08b2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memory alloc failed @bt_ahi_hfp.c(296),WARNING" ID="0x8c9e0943" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memory set failed. @bt_ahi_hfp.c(301),WARNING" ID="0x8c9e096b" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memory copy failed. @bt_ahi_hfp.c(310),WARNING" ID="0x8c9e09b3" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memory alloc failed @bt_ahi_hfp.c(535),WARNING" ID="0x8c9e10bb" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memory set failed. @bt_ahi_hfp.c(540),WARNING" ID="0x8c9e10e3" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memory copy failed. @bt_ahi_hfp.c(549),WARNING" ID="0x8c9e112b" />
                        </MSG_LOG>
\ No newline at end of file
index ca08936..e9c3af7 100644 (file)
                        <MSG STRUCTURE="diag_log_msg0" NAME="ble core: App Start Ble Adv get localname or mac err @bt_dft.c(744),ERROR" ID="0x8d0a1742" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="MPC: ResponseNameRead Response:0x%x @bt_dft.c(759),INFO" ID="0x8d0a17bd" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="MPC: bt dft write name:0x%x success @bt_dft.c(769),INFO" ID="0x8d0a180d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="MPC: bt adpt set br edr scan ble only not support Br Scan! @bt_dft.c(775),INFO" ID="0x8d0a183d" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="MPC: BtSetScan %d, return:%d @bt_dft.c(786),INFO" ID="0x8d0a1895" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="MPC: adpt gap set page scan window %d, return:%d @bt_dft.c(791),INFO" ID="0x8d0a18bd" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="MPC: bt clear scan mode:0x%x, success @bt_dft.c(809),INFO" ID="0x8d0a194d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="MPC: bt set scan start:0x%x, success @bt_dft.c(822),INFO" ID="0x8d0a19b5" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="MPC: bt disconnect link:pkt_len = %d, entry @bt_dft.c(834),INFO" ID="0x8d0a1a15" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="MPC:remote_addr 0x%02x:%02x:**:**:**:%02x @bt_dft.c(840),INFO" ID="0x8d0a1a45" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="MPC: No device connected @bt_dft.c(849),INFO" ID="0x8d0a1a8d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="MPC: memcpy error @bt_dft.c(856),INFO" ID="0x8d0a1ac5" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="MPC: adpt gap disconnect link return:%d @bt_dft.c(866),INFO" ID="0x8d0a1b15" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="MPC: bt disconnect link:0x%x, success @bt_dft.c(874),INFO" ID="0x8d0a1b55" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="MPC: bt get ble con devinfo br: 0x%x:0x%x:**:**:**:0x%x:0x%x @bt_dft.c(902),INFO" ID="0x8d0a1c35" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="MPC: bt get ble con devinfo ble:0x%x:0x%x:**:**:**:0x%x:0x%x @bt_dft.c(904),INFO" ID="0x8d0a1c45" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="MPC: bt get ble con devinfo: Get device name fail @bt_dft.c(912),INFO" ID="0x8d0a1c85" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="MPC: bt get ble con devinfo formate info error @bt_dft.c(925),INFO" ID="0x8d0a1ced" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="bt get ble con devinfo ble connect state:%u @bt_dft.c(929),INFO" ID="0x8d0a1d0d" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="MPC: bt get ble con devinfo ble:0x%x:0x%x:**:**:**:0x%x @bt_dft.c(946),INFO" ID="0x8d0a1d95" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="MPC: bt get ble con devinfo: formate info error @bt_dft.c(953),INFO" ID="0x8d0a1dcd" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="bt get ble con devinfo ble connect state:%u @bt_dft.c(958),INFO" ID="0x8d0a1df5" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="MPC: bt change adv addr type:pkt_len = %d, entry @bt_dft.c(966),INFO" ID="0x8d0a1e35" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="MPC: bt change adv addr type:addr_type = %d, use_private_addr = %d @bt_dft.c(975),INFO" ID="0x8d0a1e7d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="MPC: bt change adv addr type:0x%x, success @bt_dft.c(978),INFO" ID="0x8d0a1e95" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="MPC: bt reg default gatt services success @bt_dft.c(985),INFO" ID="0x8d0a1ecd" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Exit for pointer is NULL @bt_dft.c(1078),ERROR" ID="0x8d0a21b2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="bt dft recieve cmd opcode= 0x%X @bt_dft.c(1101),INFO" ID="0x8d0a226d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="bt dft proc dongle cmds tarns_id= 0x%X @bt_dft.c(1152),INFO" ID="0x8d0a2405" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="bt dft proc dongle cmds opcode = 0x%X @bt_dft.c(1153),INFO" ID="0x8d0a240d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="bt dft proc dongle cmds control= 0x%X @bt_dft.c(1154),INFO" ID="0x8d0a2415" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="bt dft proc dongle cmds sequence= 0x%X @bt_dft.c(1155),INFO" ID="0x8d0a241d" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="bt dft proc dongle cmds param[%d] = 0x%X @bt_dft.c(1158),INFO" ID="0x8d0a2435" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="dft not idle @bt_dft.c(1168),INFO" ID="0x8d0a2485" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="dft dongle param pass @bt_dft.c(1182),INFO" ID="0x8d0a24f5" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="BT_DFT: bt dft is in rf test %d @bt_dft.c(1196),INFO" ID="0x8d0a2565" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="BT_DFT: bt dft dongle rf test start @bt_dft.c(1202),INFO" ID="0x8d0a2595" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="BT_DFT: bt dft rf aging start @bt_dft.c(1225),INFO" ID="0x8d0a264d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="BT_DFT: bt dft rf aging stop @bt_dft.c(1247),INFO" ID="0x8d0a26fd" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="BT_DFT: bt dft aging test control param is NULL @bt_dft.c(1266),INFO" ID="0x8d0a2795" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="BT_DFT: bt dft aging test control param-&gt;pkt_ptr is NULL @bt_dft.c(1271),INFO" ID="0x8d0a27bd" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="BT_DFT: bt dft aging test control %d @bt_dft.c(1280),INFO" ID="0x8d0a2805" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="MPC: bt adpt set br edr scan ble only not support Br Scan! @bt_dft.c(776),INFO" ID="0x8d0a1845" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="MPC: BtSetScan %d, return:%d @bt_dft.c(787),INFO" ID="0x8d0a189d" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="MPC: adpt gap set page scan window %d, return:%d @bt_dft.c(792),INFO" ID="0x8d0a18c5" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="MPC: bt clear scan mode:0x%x, success @bt_dft.c(810),INFO" ID="0x8d0a1955" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="MPC: bt set scan start:0x%x, success @bt_dft.c(823),INFO" ID="0x8d0a19bd" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="MPC: bt disconnect link:pkt_len = %d, entry @bt_dft.c(835),INFO" ID="0x8d0a1a1d" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="MPC:remote_addr 0x%02x:%02x:**:**:**:%02x @bt_dft.c(841),INFO" ID="0x8d0a1a4d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="MPC: No device connected @bt_dft.c(850),INFO" ID="0x8d0a1a95" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="MPC: memcpy error @bt_dft.c(857),INFO" ID="0x8d0a1acd" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="MPC: adpt gap disconnect link return:%d @bt_dft.c(867),INFO" ID="0x8d0a1b1d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="MPC: bt disconnect link:0x%x, success @bt_dft.c(875),INFO" ID="0x8d0a1b5d" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="MPC: bt get ble con devinfo br: 0x%x:0x%x:**:**:**:0x%x:0x%x @bt_dft.c(903),INFO" ID="0x8d0a1c3d" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="MPC: bt get ble con devinfo ble:0x%x:0x%x:**:**:**:0x%x:0x%x @bt_dft.c(905),INFO" ID="0x8d0a1c4d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="MPC: bt get ble con devinfo: Get device name fail @bt_dft.c(913),INFO" ID="0x8d0a1c8d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="MPC: bt get ble con devinfo formate info error @bt_dft.c(926),INFO" ID="0x8d0a1cf5" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="bt get ble con devinfo ble connect state:%u @bt_dft.c(930),INFO" ID="0x8d0a1d15" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="MPC: bt get ble con devinfo ble:0x%x:0x%x:**:**:**:0x%x @bt_dft.c(947),INFO" ID="0x8d0a1d9d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="MPC: bt get ble con devinfo: formate info error @bt_dft.c(954),INFO" ID="0x8d0a1dd5" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="bt get ble con devinfo ble connect state:%u @bt_dft.c(959),INFO" ID="0x8d0a1dfd" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="MPC: bt change adv addr type:pkt_len = %d, entry @bt_dft.c(967),INFO" ID="0x8d0a1e3d" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="MPC: bt change adv addr type:addr_type = %d, use_private_addr = %d @bt_dft.c(976),INFO" ID="0x8d0a1e85" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="MPC: bt change adv addr type:0x%x, success @bt_dft.c(979),INFO" ID="0x8d0a1e9d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="MPC: bt reg default gatt services success @bt_dft.c(986),INFO" ID="0x8d0a1ed5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="Exit for pointer is NULL @bt_dft.c(1079),ERROR" ID="0x8d0a21ba" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="bt dft recieve cmd opcode= 0x%X @bt_dft.c(1102),INFO" ID="0x8d0a2275" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="bt dft proc dongle cmds tarns_id= 0x%X @bt_dft.c(1153),INFO" ID="0x8d0a240d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="bt dft proc dongle cmds opcode = 0x%X @bt_dft.c(1154),INFO" ID="0x8d0a2415" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="bt dft proc dongle cmds control= 0x%X @bt_dft.c(1155),INFO" ID="0x8d0a241d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="bt dft proc dongle cmds sequence= 0x%X @bt_dft.c(1156),INFO" ID="0x8d0a2425" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="bt dft proc dongle cmds param[%d] = 0x%X @bt_dft.c(1159),INFO" ID="0x8d0a243d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="dft not idle @bt_dft.c(1169),INFO" ID="0x8d0a248d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="dft dongle param pass @bt_dft.c(1183),INFO" ID="0x8d0a24fd" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="BT_DFT: bt dft is in rf test %d @bt_dft.c(1197),INFO" ID="0x8d0a256d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="BT_DFT: bt dft dongle rf test start @bt_dft.c(1203),INFO" ID="0x8d0a259d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="BT_DFT: bt dft rf aging start @bt_dft.c(1226),INFO" ID="0x8d0a2655" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="BT_DFT: bt dft rf aging stop @bt_dft.c(1248),INFO" ID="0x8d0a2705" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="BT_DFT: bt dft aging test control param is NULL @bt_dft.c(1267),INFO" ID="0x8d0a279d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="BT_DFT: bt dft aging test control param-&gt;pkt_ptr is NULL @bt_dft.c(1272),INFO" ID="0x8d0a27c5" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="BT_DFT: bt dft aging test control %d @bt_dft.c(1281),INFO" ID="0x8d0a280d" />
                        </MSG_LOG>
\ No newline at end of file
index b4a447d..d6cbbc2 100644 (file)
                        <MSG STRUCTURE="diag_log_msg1" NAME="bt mpc adapter gatt mtu config req interface fail, ret%d @bt_mpc_adpt_gatt.c(677),WARNING" ID="0x8dd6152b" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="bt mpc adapter gatt get hid report map req param len error, len = %u @bt_mpc_adpt_gatt.c(689),ERROR" ID="0x8dd6158a" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="bt mpc adapter gatt get hid report map req interface fail, ret%d @bt_mpc_adpt_gatt.c(696),WARNING" ID="0x8dd615c3" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="bt mpc adapter gatt read descriptor req param len error, len = %u @bt_mpc_adpt_gatt.c(753),WARNING" ID="0x8dd6178b" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="bt mpc adapter gatt read descriptor req param fail, ret%d @bt_mpc_adpt_gatt.c(759),WARNING" ID="0x8dd617bb" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="bt mpc adapter gatt mtu set req param len error, len = %u @bt_mpc_adpt_gatt.c(771),ERROR" ID="0x8dd6181a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="bt mpc adapter gatt mtu set req interface fail, ret%d @bt_mpc_adpt_gatt.c(778),WARNING" ID="0x8dd61853" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="bt mpc adapter gatt read character req. @bt_mpc_adpt_gatt.c(706),INFO" ID="0x8dd61615" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="bt mpc adapter gatt read character req param len error, len = %u @bt_mpc_adpt_gatt.c(709),WARNING" ID="0x8dd6162b" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="bt mpc adapter gatt read character req param fail, ret%d @bt_mpc_adpt_gatt.c(716),WARNING" ID="0x8dd61663" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="bt mpc adapter gatt read descriptor req param len error, len = %u @bt_mpc_adpt_gatt.c(728),WARNING" ID="0x8dd616c3" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="bt mpc adapter gatt read descriptor req param fail, ret%d @bt_mpc_adpt_gatt.c(734),WARNING" ID="0x8dd616f3" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="bt mpc adapter gatt mtu set req param len error, len = %u @bt_mpc_adpt_gatt.c(746),ERROR" ID="0x8dd61752" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="bt mpc adapter gatt mtu set req interface fail, ret%d @bt_mpc_adpt_gatt.c(753),WARNING" ID="0x8dd6178b" />
                        </MSG_LOG>
\ No newline at end of file
index 45cfe4c..27e258d 100644 (file)
@@ -1,29 +1,27 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="[ERROR]p_data is null @bt_tran_task.c(85),ERROR" ID="0x8c9402aa" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="BT_TRAN:route data:TID&amp;SOF&amp;SID&amp;CID, LEN = 0x%04X%04X, %d @bt_tran_task.c(115),ERROR" ID="0x8c94039a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Error route_id! @bt_tran_task.c(127),ERROR" ID="0x8c9403fa" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="BT_TRAN:route data:TID&amp;SOF&amp;SID&amp;CID, LEN = 0x%04X%04X, %d @bt_tran_task.c(147),ERROR" ID="0x8c94049a" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="BT_TRAN:data:TID&amp;SOF&amp;SID&amp;CID:0x%04X%04X,LEN:%d @bt_tran_task.c(150),ERROR" ID="0x8c9404b2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="INVALID DATA! @bt_tran_task.c(186),ERROR" ID="0x8c9405d2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="BT_TRAN: TXMCU:ipc send data = %d @bt_tran_task.c(214),ERROR" ID="0x8c9406b2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="UNKNOW CORE! @bt_tran_task.c(224),ERROR" ID="0x8c940702" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="bt tran task framek free property allow_free= %d @bt_tran_task.c(264),INFO" ID="0x8c940845" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="pst_property-&gt;en_id = 0x%x @bt_tran_task.c(282),INFO" ID="0x8c9408d5" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="ipc buf release number:%u %u. @bt_tran_task.c(330),ERROR" ID="0x8c940a52" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="hci qos buf overflow. @bt_tran_task.c(356),ERROR" ID="0x8c940b22" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble fsm buf overflow. @bt_tran_task.c(362),ERROR" ID="0x8c940b52" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="ipc buf warning number:%u %u. @bt_tran_task.c(370),ERROR" ID="0x8c940b92" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="BT_TRAN: data ERROR data_len:%d @bt_tran_task.c(389),WARNING" ID="0x8c940c2b" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="BT_TRAN: data ERROR data:0x%08x, 0x%08x @bt_tran_task.c(393),WARNING" ID="0x8c940c4b" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="rec mcu error data,tid:0x%x,sof:0x%x,len:0x%04x,opcode:0x%04x @bt_tran_task.c(402),ERROR" ID="0x8c940c92" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="rec data malloc fail opcode:0x%04x,length:(0x%04x) @bt_tran_task.c(420),ERROR" ID="0x8c940d22" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="rec data memcpy fail opcode:0x%04x,length:(0x%04x) @bt_tran_task.c(426),ERROR" ID="0x8c940d52" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="rec mcu write property fail,tid:0x%x,sof:0x%x,len:0x%04x,opcode:0x%04x @bt_tran_task.c(436),ERROR" ID="0x8c940da2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ipc data data len err = %d @bt_tran_task.c(473),ERROR" ID="0x8c940eca" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ipc data data len err = %d @bt_tran_task.c(483),ERROR" ID="0x8c940f1a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ipc data from M7 error = %d @bt_tran_task.c(487),ERROR" ID="0x8c940f3a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ipc data from unknow core @bt_tran_task.c(499),ERROR" ID="0x8c940f9a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="bt tran task handler osMessageQueueGet fail ret:(%x) @bt_tran_task.c(525),ERROR" ID="0x8c94106a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="bt tran task framek write property en_id = 0x%x @bt_tran_task.c(549),INFO" ID="0x8c94112d" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="write Property fail id:0x%x, ret:0x%x @bt_tran_task.c(557),ERROR" ID="0x8c94116a" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="bt tran task framek write property fail en_id:%d,ret:%x @bt_tran_task.c(566),ERROR" ID="0x8c9411b2" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="hci qos buf overflow. @bt_tran_task.c(107),ERROR" ID="0x8c94035a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="bth ipc fsm rx tx buf overflow. @bt_tran_task.c(112),ERROR" ID="0x8c940382" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[ERROR]p_data is null @bt_tran_task.c(125),ERROR" ID="0x8c9403ea" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="BT_TRAN:route data:TID&amp;SOF&amp;SID&amp;CID, LEN = 0x%04X%04X, %d @bt_tran_task.c(155),ERROR" ID="0x8c9404da" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="Error route_id! @bt_tran_task.c(167),ERROR" ID="0x8c94053a" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="BT_TRAN:route data:TID&amp;SOF&amp;SID&amp;CID, LEN = 0x%04X%04X, %d @bt_tran_task.c(187),ERROR" ID="0x8c9405da" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="BT_TRAN:data:TID&amp;SOF&amp;SID&amp;CID:0x%04X%04X,LEN:%d @bt_tran_task.c(190),ERROR" ID="0x8c9405f2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="INVALID DATA! @bt_tran_task.c(226),ERROR" ID="0x8c940712" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="BT_TRAN: TXMCU:ipc send data fail, ret=%d opcode=0x%x @bt_tran_task.c(255),ERROR" ID="0x8c9407fa" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="UNKNOW CORE! @bt_tran_task.c(264),ERROR" ID="0x8c940842" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="bt tran task framek free property allow_free= %d @bt_tran_task.c(304),INFO" ID="0x8c940985" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="pst_property-&gt;en_id = 0x%x @bt_tran_task.c(322),INFO" ID="0x8c940a15" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="BT_TRAN: data ERROR data_len:%d @bt_tran_task.c(395),WARNING" ID="0x8c940c5b" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="BT_TRAN: data ERROR data:0x%08x, 0x%08x @bt_tran_task.c(399),WARNING" ID="0x8c940c7b" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="rec mcu error data,tid:0x%x,sof:0x%x,len:0x%04x,opcode:0x%04x @bt_tran_task.c(408),ERROR" ID="0x8c940cc2" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="rec data malloc fail opcode:0x%04x,length:(0x%04x) @bt_tran_task.c(426),ERROR" ID="0x8c940d52" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="rec data memcpy fail opcode:0x%04x,length:(0x%04x) @bt_tran_task.c(432),ERROR" ID="0x8c940d82" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="rec mcu write property fail,tid:0x%x,sof:0x%x,len:0x%04x,opcode:0x%04x @bt_tran_task.c(442),ERROR" ID="0x8c940dd2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ipc data data len err = %d @bt_tran_task.c(479),ERROR" ID="0x8c940efa" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ipc data data len err = %d @bt_tran_task.c(489),ERROR" ID="0x8c940f4a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ipc data from M7 error = %d @bt_tran_task.c(493),ERROR" ID="0x8c940f6a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ipc data from unknow core @bt_tran_task.c(505),ERROR" ID="0x8c940fca" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="bt tran task handler osMessageQueueGet fail ret:(%x) @bt_tran_task.c(531),ERROR" ID="0x8c94109a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="bt tran task framek write property en_id = 0x%x @bt_tran_task.c(555),INFO" ID="0x8c94115d" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="write Property fail id:0x%x, ret:0x%x @bt_tran_task.c(563),ERROR" ID="0x8c94119a" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="bt tran task framek write property fail en_id:%d,ret:%x @bt_tran_task.c(572),ERROR" ID="0x8c9411e2" />
                        </MSG_LOG>
\ No newline at end of file
index 62c052b..5bd18d4 100644 (file)
@@ -1,8 +1,6 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg1" NAME="[FSM][QOS]producer %u @fsm.c(83),ERROR" ID="0x8b58029a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[FSM][QOS]consumer %u @fsm.c(97),ERROR" ID="0x8b58030a" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="[TIMRE_ADD][STACK_TIMER] TIMER=0x%x, TIME=%u @fsm.c(725),INFO" ID="0x8b5816ad" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[TIMER_EXPIR]timeout timer err! @fsm.c(823),ERROR" ID="0x8b5819ba" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[TIMER_EXPIR]timeout but no right timer! @fsm.c(853),WARNING" ID="0x8b581aab" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[timer_expire_in_sch_lite]timer has been free; not need free! @fsm.c(869),WARNING" ID="0x8b581b2b" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[TIMER_DEL][STACK_TIMER] in_ft is NULL! @fsm.c(994),INFO" ID="0x8b581f15" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg2" NAME="[TIMRE_ADD][STACK_TIMER] TIMER=0x%x, TIME=%u @fsm.c(720),INFO" ID="0x8b581685" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[TIMER_EXPIR]timeout timer err! @fsm.c(818),ERROR" ID="0x8b581992" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[TIMER_EXPIR]timeout but no right timer! @fsm.c(848),WARNING" ID="0x8b581a83" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[timer_expire_in_sch_lite]timer has been free; not need free! @fsm.c(864),WARNING" ID="0x8b581b03" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[TIMER_DEL][STACK_TIMER] in_ft is NULL! @fsm.c(989),INFO" ID="0x8b581eed" />
                        </MSG_LOG>
\ No newline at end of file
index f65b5d6..3e75d5b 100644 (file)
@@ -1,3 +1,4 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="[GAP][LOGN_STACK_GAP_DIS_REGISTER] RegisterDIService success. @gap_hlp_br.c(1528),INFO" ID="0x8b8a2fc5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[GAP][LOGN_STACK_GAP_DIS_REGISTER] RegisterDIService failed. @gap_hlp_br.c(1532),WARNING" ID="0x8b8a2fe3" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg2" NAME="[GAP] inquiry result cbk i:%d eir[i]:%d @gap_hlp_br.c(116),ERROR" ID="0x8b8a03a2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[GAP][LOGN_STACK_GAP_DIS_REGISTER] RegisterDIService success. @gap_hlp_br.c(1534),INFO" ID="0x8b8a2ff5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[GAP][LOGN_STACK_GAP_DIS_REGISTER] RegisterDIService failed. @gap_hlp_br.c(1538),WARNING" ID="0x8b8a3013" />
                        </MSG_LOG>
\ No newline at end of file
index e051899..5b2413f 100644 (file)
@@ -5,4 +5,6 @@
                        <MSG STRUCTURE="diag_log_msg0" NAME="[GAP] create_connection_whitelist start @gap_ui.c(2349),INFO" ID="0x8b5c496d" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[GAP]memcpy failed @gap_ui.c(2457),ERROR" ID="0x8b5c4cca" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="[SADP][GAP] set_local_addr_cbk result is %u @gap_ui.c(2933),INFO" ID="0x8b5c5bad" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[GAP]set br sc cmd error result=0x%x @gap_ui.c(2959),ERROR" ID="0x8b5c5c7a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[GAP]set br sc status=0x%x @gap_ui.c(2964),ERROR" ID="0x8b5c5ca2" />
                        </MSG_LOG>
\ No newline at end of file
index 728ac59..be49d57 100644 (file)
@@ -4,6 +4,6 @@
                        <MSG STRUCTURE="diag_log_msg1" NAME="GdkTimer Create TimerId:%d @gdk_cmsis.c(79),INFO" ID="0x8cb0027d" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="GdkTimer Start TimerId:%d @gdk_cmsis.c(99),DBG" ID="0x8cb0031e" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="GdkTimer Stop TimerId:%d @gdk_cmsis.c(111),DBG" ID="0x8cb0037e" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="gdk os malloc size 0 @gdk_cmsis.c(146),ERROR" ID="0x8cb00492" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="gdk os malloc FAIL size:%d @gdk_cmsis.c(153),ERROR" ID="0x8cb004ca" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="gdk os malloc size 0 @gdk_cmsis.c(152),ERROR" ID="0x8cb004c2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="gdk os malloc FAIL size:%d @gdk_cmsis.c(159),ERROR" ID="0x8cb004fa" />
                        </MSG_LOG>
\ No newline at end of file
index e9bfbf6..ebca41a 100644 (file)
@@ -1,16 +1,16 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg4" NAME="[HCI][SEND_ACL_DATA] SLOT=%u, LEN=%u, Remaining Packet NUM=%u, HANDLE=0x%x @hci_data_proc.c(134),INFO" ID="0x8bda0435" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[HCI]memcpy error @hci_data_proc.c(394),ERROR" ID="0x8bda0c52" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[HCI]memcpy error @hci_data_proc.c(400),ERROR" ID="0x8bda0c82" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[HCI][RECV_ACL_DATA] CONN_HANDLE=0x%x, link not found @hci_data_proc.c(489),INFO" ID="0x8bda0f4d" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[HCI][H--&gt;C] OPCODE=0x%x, HANDLE=0x%x, LEN=%u @hci_data_proc.c(697),INFO" ID="0x8bda15cd" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="[HCI][H--&gt;C] OPCODE=0x%x, OGF=0x%x, disc_reason=0x%x, LEN=%u @hci_data_proc.c(707),INFO" ID="0x8bda161d" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="[HCI][H--&gt;C] OPCODE=0x%x, OGF=0x%x, OCF=0x%x, LEN=%u @hci_data_proc.c(713),WARNING" ID="0x8bda164b" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[HCI][H--&gt;C] OPCODE=0x%x, HANDLE=0x%x, LEN=%u @hci_data_proc.c(734),DBG" ID="0x8bda16f6" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="[HCI][H--&gt;C] OPCODE=0x%x, OGF=0x%x, OCF=0x%x, LEN=%u @hci_data_proc.c(739),DBG" ID="0x8bda171e" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[HCI][H--&gt;C] LEN=%u @hci_data_proc.c(754),DBG" ID="0x8bda1796" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="[HCI][H--&gt;C] %02x %02x %02x %02x @hci_data_proc.c(760),DBG" ID="0x8bda17c6" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[HCI][H--&gt;C] %02x %02x %02x @hci_data_proc.c(765),DBG" ID="0x8bda17ee" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="[HCI][H--&gt;C] %02x %02x @hci_data_proc.c(768),DBG" ID="0x8bda1806" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[HCI][H--&gt;C] %02x @hci_data_proc.c(770),DBG" ID="0x8bda1816" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[A2DP][HCI] a2dp_audio:first frame to btc, only for a2dp service. @hci_data_proc.c(789),INFO" ID="0x8bda18ad" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg4" NAME="[HCI][SEND_ACL_DATA] SLOT=%u, LEN=%u, Remaining Packet NUM=%u, HANDLE=0x%x @hci_data_proc.c(146),INFO" ID="0x8bda0495" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[HCI]memcpy error @hci_data_proc.c(406),ERROR" ID="0x8bda0cb2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[HCI]memcpy error @hci_data_proc.c(412),ERROR" ID="0x8bda0ce2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[HCI][RECV_ACL_DATA] CONN_HANDLE=0x%x, link not found @hci_data_proc.c(501),INFO" ID="0x8bda0fad" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[HCI][H--&gt;C] OPCODE=0x%x, HANDLE=0x%x, LEN=%u @hci_data_proc.c(709),INFO" ID="0x8bda162d" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="[HCI][H--&gt;C] OPCODE=0x%x, OGF=0x%x, disc_reason=0x%x, LEN=%u @hci_data_proc.c(719),INFO" ID="0x8bda167d" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="[HCI][H--&gt;C] OPCODE=0x%x, OGF=0x%x, OCF=0x%x, LEN=%u @hci_data_proc.c(725),WARNING" ID="0x8bda16ab" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[HCI][H--&gt;C] OPCODE=0x%x, HANDLE=0x%x, LEN=%u @hci_data_proc.c(746),DBG" ID="0x8bda1756" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="[HCI][H--&gt;C] OPCODE=0x%x, OGF=0x%x, OCF=0x%x, LEN=%u @hci_data_proc.c(751),DBG" ID="0x8bda177e" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[HCI][H--&gt;C] LEN=%u @hci_data_proc.c(766),DBG" ID="0x8bda17f6" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="[HCI][H--&gt;C] %02x %02x %02x %02x @hci_data_proc.c(772),DBG" ID="0x8bda1826" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[HCI][H--&gt;C] %02x %02x %02x @hci_data_proc.c(777),DBG" ID="0x8bda184e" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[HCI][H--&gt;C] %02x %02x @hci_data_proc.c(780),DBG" ID="0x8bda1866" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[HCI][H--&gt;C] %02x @hci_data_proc.c(782),DBG" ID="0x8bda1876" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[A2DP][HCI] a2dp_audio:first frame to btc, only for a2dp service. @hci_data_proc.c(801),INFO" ID="0x8bda190d" />
                        </MSG_LOG>
\ No newline at end of file
index 720dfbc..fb8a3f0 100644 (file)
@@ -1,3 +1,3 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg4" NAME="[HCI] remove remote exceed upper limit %d addr:%02x:%02x:xx:xx:xx:%02x! @hci_hlp_ram.c(522),ERROR" ID="0x8ba81052" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[HCI]memcpy_s&#160;error @hci_hlp_ram.c(542),ERROR" ID="0x8ba810f2" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg4" NAME="[HCI] remove remote exceed upper limit %d addr:%02x:%02x:xx:xx:xx:%02x! @hci_hlp_ram.c(524),ERROR" ID="0x8ba81062" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[HCI]memcpy_s&#160;error @hci_hlp_ram.c(544),ERROR" ID="0x8ba81102" />
                        </MSG_LOG>
\ No newline at end of file
index 043c21b..f6281d3 100644 (file)
@@ -1,6 +1,6 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg1" NAME="[HCI]CURRENT_LINK_MODE=0x%x, ACL Data Will be pend! @hci_link_br.c(217),INFO" ID="0x8bdc06cd" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[HCI] create connection addr:%02x******%02x%02x @hci_link_br.c(257),ERROR" ID="0x8bdc080a" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[HCI][CONN_COMPLETE] LINK_STATUS=0x%x, EVENT_STATUS=0x%x, CONN_HDL=0x%x @hci_link_br.c(494),ERROR" ID="0x8bdc0f72" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="[HCI][CONN_REQUEST] LINK_TYPE=0x%x, REMOTE_ADDR=%02x:%02x:**:**:**:%02x @hci_link_br.c(569),ERROR" ID="0x8bdc11ca" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="[HCI][REMOVE_LINK] REF_COUNT=%u, STATUS=%u @hci_link_br.c(653),ERROR" ID="0x8bdc146a" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg1" NAME="[HCI]CURRENT_LINK_MODE=0x%x, ACL Data Will be pend! @hci_link_br.c(220),INFO" ID="0x8bdc06e5" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[HCI] create connection addr:%02x******%02x%02x @hci_link_br.c(260),ERROR" ID="0x8bdc0822" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[HCI][CONN_COMPLETE] LINK_STATUS=0x%x, EVENT_STATUS=0x%x, CONN_HDL=0x%x @hci_link_br.c(497),ERROR" ID="0x8bdc0f8a" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="[HCI][CONN_REQUEST] LINK_TYPE=0x%x, REMOTE_ADDR=%02x:%02x:**:**:**:%02x @hci_link_br.c(572),ERROR" ID="0x8bdc11e2" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[HCI][REMOVE_LINK] REF_COUNT=%u, STATUS=%u @hci_link_br.c(656),ERROR" ID="0x8bdc1482" />
                        </MSG_LOG>
\ No newline at end of file
index d4fc447..ea655be 100644 (file)
@@ -1,4 +1,4 @@
 <MSG_LOG><MSG STRUCTURE="diag_log_msg4" NAME="ap =&gt; bt ipc error, get cpu trace ret=%d, bt pc=0x%x, lr=0x%x, sp=0x%x,  @ipc.c(417),ERROR" ID="0xa02a0d0a" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="ipc error core %d =&gt; %d action=%d, called=0x%X @ipc.c(705),ERROR" ID="0xa02a160a" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="ipc error, core=%d current pc=0x%x, lr=0x%x, sp=0x%x @ipc.c(707),ERROR" ID="0xa02a161a" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="ipc error core %d =&gt; %d action=%d, called=0x%X @ipc.c(707),ERROR" ID="0xa02a161a" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="ipc error, core=%d current pc=0x%x, lr=0x%x, sp=0x%x @ipc.c(709),ERROR" ID="0xa02a162a" />
                        </MSG_LOG>
\ No newline at end of file
index d799f54..d1b295c 100644 (file)
@@ -1,21 +1,23 @@
 <MSG_LOG><MSG STRUCTURE="diag_log_msg1" NAME="interrupt times account for more than the high percent is %d @ld_fm_ram.c(178),INFO" ID="0x88b20595" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="clkn(0x%x) intstat(0x%x), abort(%d)errCode(0x%x) @ld_fm_ram.c(245),WARNING" ID="0x88b207ab" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="[ERROR]ld_fm_frame_isr:ts=0x%x, sw_id=%d, etptr=0x%x, hw_id=%d @ld_fm_ram.c(277),ERROR" ID="0x88b208aa" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="[WARNING]ld_fm_frame_isr:ts=0x%x, cs_idx=%d @ld_fm_ram.c(280),WARNING" ID="0x88b208c3" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="ld_fm_frame_isr clk(0x%x)intstat(0x%x)etptr(0x%x)lr(0x%x) @ld_fm_ram.c(297),ERROR" ID="0x88b2094a" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[WARNING]ld_fm_frame_isr:ET%d:extab0=0x%x, extab1=0x%x @ld_fm_ram.c(325),WARNING" ID="0x88b20a2b" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="[WARNING][LD]ld_fm_sket_isr:elt=NULL, sket_clkn=0x%x, clock=0x%x, finecnt=0x%x, etptr=0x%x @ld_fm_ram.c(349),WARNING" ID="0x88b20aeb" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="[WARNING][LD]ld_fm_sket_isr:timestamp=0x%x, cs_idx=%d @ld_fm_ram.c(353),WARNING" ID="0x88b20b0b" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[WARNING][LD]ld_fm_sket_isr:hw_id=%d @ld_fm_ram.c(358),WARNING" ID="0x88b20b33" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[ERROR]ld_fm_sket_isr:ET%d:extab0=0x%x, extab1=0x%x @ld_fm_ram.c(382),ERROR" ID="0x88b20bf2" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="ld_fm_sket_isr:clkn=0x%x, timestamp=0x%x, sket_clkn=0x%x, etptr=0x%x @ld_fm_ram.c(508),WARNING" ID="0x88b20fe3" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="ld_fm_sket_isr:cs_idx=%d, hw_id=%d @ld_fm_ram.c(509),WARNING" ID="0x88b20feb" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="ld_fm_sket_isr:timestamp=0x%x, cs_idx=%d @ld_fm_ram.c(513),WARNING" ID="0x88b2100b" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="[INFO][EA]ld_fm_sket_isr cur time=0%x , frm_cbk=0%x, sket_clkn=0%x, timestamp=0%x @ld_fm_ram.c(522),INFO" ID="0x88b21055" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="[WARNING][LD]ld_fm_process:fifo_last_ts=0x%x,frm_cbk=0x%x,cs_idx=%d,insert_ts=0x%x @ld_fm_ram.c(587),WARNING" ID="0x88b2125b" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[WARNING][LD]ld_fm_process:sket clk=0x0%x, frm_cbk=0x0%x, cs_idx=%d @ld_fm_ram.c(594),WARNING" ID="0x88b21293" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="[ERROR][LD]ld_fm_process:err et mode=0x%x, elt=0x%x, clk=0x%x, LR=0x%x @ld_fm_ram.c(615),ERROR" ID="0x88b2133a" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="[ERROR][param]ld_fm_process ld_fm_env.free=NULL, timestamp=0x%x, fifo cnt=%d  @ld_fm_ram.c(623),ERROR" ID="0x88b2137a" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="[WARNING][LD]ld_fm_prog_push:timestamp=0x%x, clock=0x%x, LR=0x%x, format=0x%x @ld_fm_ram.c(653),WARNING" ID="0x88b2146b" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[WARN][LD]ld_fm_prog_push:err timestamp=0x%x, clock=0x%x, LR=0x%x @ld_fm_ram.c(655),WARNING" ID="0x88b2147b" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[WARNING]ld_fm_frame_isr: clear again, irq_stat(0x%x) @ld_fm_ram.c(242),WARNING" ID="0x88b20793" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="clkn(0x%x) intstat(0x%x), abort(%d)errCode(0x%x) @ld_fm_ram.c(247),WARNING" ID="0x88b207bb" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="errint(0x%x) @ld_fm_ram.c(248),WARNING" ID="0x88b207c3" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="[ERROR]ld_fm_frame_isr:ts=0x%x, sw_id=%d, etptr=0x%x, hw_id=%d @ld_fm_ram.c(280),ERROR" ID="0x88b208c2" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[WARNING]ld_fm_frame_isr:ts=0x%x, cs_idx=%d @ld_fm_ram.c(283),WARNING" ID="0x88b208db" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="ld_fm_frame_isr clk(0x%x)intstat(0x%x)etptr(0x%x)lr(0x%x) @ld_fm_ram.c(300),ERROR" ID="0x88b20962" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[WARNING]ld_fm_frame_isr:ET%d:extab0=0x%x, extab1=0x%x @ld_fm_ram.c(328),WARNING" ID="0x88b20a43" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="[WARNING][LD]ld_fm_sket_isr:elt=NULL, sket_clkn=0x%x, clock=0x%x, finecnt=0x%x, etptr=0x%x @ld_fm_ram.c(352),WARNING" ID="0x88b20b03" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[WARNING][LD]ld_fm_sket_isr:timestamp=0x%x, cs_idx=%d @ld_fm_ram.c(356),WARNING" ID="0x88b20b23" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[WARNING][LD]ld_fm_sket_isr:hw_id=%d @ld_fm_ram.c(361),WARNING" ID="0x88b20b4b" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[ERROR]ld_fm_sket_isr:ET%d:extab0=0x%x, extab1=0x%x @ld_fm_ram.c(385),ERROR" ID="0x88b20c0a" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="ld_fm_sket_isr:clkn=0x%x, timestamp=0x%x, sket_clkn=0x%x, etptr=0x%x @ld_fm_ram.c(511),WARNING" ID="0x88b20ffb" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="ld_fm_sket_isr:cs_idx=%d, hw_id=%d @ld_fm_ram.c(512),WARNING" ID="0x88b21003" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="ld_fm_sket_isr:timestamp=0x%x, cs_idx=%d @ld_fm_ram.c(516),WARNING" ID="0x88b21023" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="[INFO][EA]ld_fm_sket_isr cur time=0%x , frm_cbk=0%x, sket_clkn=0%x, timestamp=0%x @ld_fm_ram.c(525),INFO" ID="0x88b2106d" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="[WARNING][LD]ld_fm_process:fifo_last_ts=0x%x,frm_cbk=0x%x,cs_idx=%d,insert_ts=0x%x @ld_fm_ram.c(590),WARNING" ID="0x88b21273" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[WARNING][LD]ld_fm_process:sket clk=0x0%x, frm_cbk=0x0%x, cs_idx=%d @ld_fm_ram.c(597),WARNING" ID="0x88b212ab" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="[ERROR][LD]ld_fm_process:err et mode=0x%x, elt=0x%x, clk=0x%x, LR=0x%x @ld_fm_ram.c(618),ERROR" ID="0x88b21352" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[ERROR][param]ld_fm_process ld_fm_env.free=NULL, timestamp=0x%x, fifo cnt=%d  @ld_fm_ram.c(626),ERROR" ID="0x88b21392" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="[WARNING][LD]ld_fm_prog_push:timestamp=0x%x, clock=0x%x, LR=0x%x, format=0x%x @ld_fm_ram.c(656),WARNING" ID="0x88b21483" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[WARN][LD]ld_fm_prog_push:err timestamp=0x%x, clock=0x%x, LR=0x%x @ld_fm_ram.c(658),WARNING" ID="0x88b21493" />
                        </MSG_LOG>
\ No newline at end of file
index abaece3..b4ba418 100644 (file)
@@ -1,9 +1,9 @@
 <MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="[BTOS][MEM_INTEGRITY_CHECK]Not support! @osdep.c(680),INFO" ID="0x8b981545" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[BTOS][MEM_NEW]ALLOC_SIZE=%u alloc fail! @osdep.c(712),ERROR" ID="0x8b981642" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="[BTOS][MEM_NEW]fsm_count=%u fsm_limit=%u fsm_limit_max=%u hci_slice_rx=%u! @osdep.c(716),ERROR" ID="0x8b981662" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[MEM_FREE][%d][0x%p], caller:0x%x  @osdep.c(753),INFO" ID="0x8b98178d" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[BTOS][MEM_FREE]ERROR_CODE=%u, addr:0x%p, caller:0x%x free fail! @osdep.c(761),WARNING" ID="0x8b9817cb" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[BTOS][MEM_NEW]ALLOC_SIZE=%u, alloc fail! @osdep.c(774),WARNING" ID="0x8b981833" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[BTOS][MEM_FREE]ERROR_CODE=%u, addr:0x%p, caller:0x%x, free fail! @osdep.c(789),WARNING" ID="0x8b9818ab" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[BTOS][MEM_NEW_S]AVAILABLE_MEMORY=%u, alloc fail because under secure threshold size! @osdep.c(820),WARNING" ID="0x8b9819a3" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[BTOS][MEM_NEW]ALLOC_SIZE=%u alloc fail! @osdep.c(725),ERROR" ID="0x8b9816aa" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="[BTOS][MEM_NEW]fsm_count=%u fsm_limit=%u fsm_limit_max=%u hci_slice_rx=%u! @osdep.c(729),ERROR" ID="0x8b9816ca" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[MEM_FREE][%d][0x%p], caller:0x%x  @osdep.c(766),INFO" ID="0x8b9817f5" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[BTOS][MEM_FREE]ERROR_CODE=%u, addr:0x%p, caller:0x%x free fail! @osdep.c(774),WARNING" ID="0x8b981833" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[BTOS][MEM_NEW]ALLOC_SIZE=%u, alloc fail! @osdep.c(787),WARNING" ID="0x8b98189b" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[BTOS][MEM_FREE]ERROR_CODE=%u, addr:0x%p, caller:0x%x, free fail! @osdep.c(802),WARNING" ID="0x8b981913" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[BTOS][MEM_NEW_S]AVAILABLE_MEMORY=%u, alloc fail because under secure threshold size! @osdep.c(833),WARNING" ID="0x8b981a0b" />
                        </MSG_LOG>
\ No newline at end of file
index 51d637b..cc30b27 100644 (file)
@@ -1,13 +1,12 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg3" NAME="a2dp_audio: send audio data enable = %x seq %d  len %d. @packet_dl.c(39),WARNING" ID="0x8c28013b" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="a2dp_audio: uapi_adp_get_buffer ret = %x seq %d len %d size %d. @packet_dl.c(47),WARNING" ID="0x8c28017b" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="a2dp_audio: Memory cpy fail! @packet_dl.c(51),WARNING" ID="0x8c28019b" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="a2dp_audio: uapi_adp_put_buffer ret = %x seq %d len %d size %d. @packet_dl.c(61),WARNING" ID="0x8c2801eb" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg3" NAME="a2dp_audio: send audio data enable = %x seq %d  len %d. @packet_dl.c(39),ERROR" ID="0x8c28013a" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="a2dp_audio: adp get buffer ret = %x seq %d len %d size %d. @packet_dl.c(47),ERROR" ID="0x8c28017a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="a2dp_audio: Memory cpy fail! @packet_dl.c(51),ERROR" ID="0x8c28019a" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="a2dp_audio: adp put buffer ret = %x seq %d len %d size %d. @packet_dl.c(61),ERROR" ID="0x8c2801ea" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[DADP][BT-&gt;AUDIO] Memory is not enough! @packet_dl.c(103),WARNING" ID="0x8c28033b" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[DADP][BT-&gt;AUDIO]ipc send audio data fail @packet_dl.c(128),WARNING" ID="0x8c280403" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[DADP][BT-&gt;AUDIO]ipc send audio data fail @packet_dl.c(160),WARNING" ID="0x8c280503" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="a2dp_audio: dadp_freeman_send_audio_data_dl @packet_dl.c(270),WARNING" ID="0x8c280873" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[DADP][SetActiveConnectHandle]HANDLE=0x%x @packet_dl.c(311),INFO" ID="0x8c2809bd" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[DADP]get_mobile_connection_handle fail, can't find link @packet_dl.c(334),INFO" ID="0x8c280a75" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[DADP]HANDLE=0x%x @packet_dl.c(338),INFO" ID="0x8c280a95" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[DADP][get_active_device_handle] REMOTE_ADDR=%02x:%02x:**:**:**:%02x @packet_dl.c(381),INFO" ID="0x8c280bed" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[DADP][SetActiveConnectHandle]HANDLE=0x%x @packet_dl.c(310),INFO" ID="0x8c2809b5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[DADP]get_mobile_connection_handle fail, can't find link @packet_dl.c(333),INFO" ID="0x8c280a6d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[DADP]HANDLE=0x%x @packet_dl.c(337),INFO" ID="0x8c280a8d" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[DADP][get_active_device_handle] REMOTE_ADDR=%02x:%02x:**:**:**:%02x @packet_dl.c(380),INFO" ID="0x8c280be5" />
                        </MSG_LOG>
\ No newline at end of file
index 85e002a..1b4dd88 100644 (file)
@@ -1,5 +1,6 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="smp_pair_new_patch @patch_bth.c(43),INFO" ID="0x8d54015d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[AVDTP][GET_SEP_FAIL] Can not get sep info @patch_bth.c(147),WARNING" ID="0x8d54049b" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[STACK][RECV_RING_STOP] @patch_bth.c(235),INFO" ID="0x8d54075d" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[ATT_GATT] att error rsp opcode:0x%x handle:%d error:0x%x @patch_bth.c(315),ERROR" ID="0x8d5409da" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="smp_pair_new_patch @patch_bth.c(52),INFO" ID="0x8d5401a5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[AVDTP][GET_SEP_FAIL] Can not get sep info @patch_bth.c(156),WARNING" ID="0x8d5404e3" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[STACK][RECV_RING_STOP] @patch_bth.c(244),INFO" ID="0x8d5407a5" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[ATT_GATT] att error rsp opcode:0x%x handle:%d error:0x%x @patch_bth.c(324),ERROR" ID="0x8d540a22" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[SMP]PAIRING_REQ_RECV @patch_bth.c(501),ERROR" ID="0x8d540faa" />
                        </MSG_LOG>
\ No newline at end of file
index 5b560d1..9d3d3bf 100644 (file)
@@ -1,18 +1,18 @@
 <MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="[sdk]gatt_get_descriptor_value memcpy failed @sdk_gatt.c(387),ERROR" ID="0x8b800c1a" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatt_get_descriptor_value&#160;memcpy_s&#160;error @sdk_gatt.c(571),ERROR" ID="0x8b8011da" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt write characteristic mem_new failed @sdk_gatt.c(793),ERROR" ID="0x8b8018ca" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt write characteristic memcpy failed @sdk_gatt.c(798),ERROR" ID="0x8b8018f2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt write characteristic memcpy failed @sdk_gatt.c(807),ERROR" ID="0x8b80193a" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="btsdk gatt get characteristics by uuid start_handle:0x%x end_handle:0x%x, uuid:0x%x @sdk_gatt.c(830),INFO" ID="0x8b8019f5" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="btsdk gatt get characteristic value by uuid start_handle:0x%x end_handle:0x%x @sdk_gatt.c(878),INFO" ID="0x8b801b75" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="[sdk]gatt_get_descriptor_by_handle start_handle:0x%x end_handle:0x%x @sdk_gatt.c(901),INFO" ID="0x8b801c2d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[sdk]gatt_get_multiple_characteristics_by_handle handle_count:0x%x @sdk_gatt.c(922),INFO" ID="0x8b801cd5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatt_set_gap_ui_attributes&#160;memcpy_s&#160;error @sdk_gatt.c(1200),ERROR" ID="0x8b802582" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatt_set_gap_ui_attributes&#160;memcpy_s&#160;error @sdk_gatt.c(1213),ERROR" ID="0x8b8025ea" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatt_get_gap_ui_attributes&#160;memcpy_s&#160;error @sdk_gatt.c(1285),ERROR" ID="0x8b80282a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatt_send_response&#160;memcpy_s&#160;error @sdk_gatt.c(1883),ERROR" ID="0x8b803ada" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatt_change_descriptor_value&#160;memcpy_s&#160;error @sdk_gatt.c(1964),ERROR" ID="0x8b803d62" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatt_notify_characteristic_changed&#160;memcpy_s&#160;error @sdk_gatt.c(2009),ERROR" ID="0x8b803eca" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt write characteristic mem_new failed @sdk_gatt.c(794),ERROR" ID="0x8b8018d2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt write characteristic memcpy failed @sdk_gatt.c(799),ERROR" ID="0x8b8018fa" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt write characteristic memcpy failed @sdk_gatt.c(808),ERROR" ID="0x8b801942" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="btsdk gatt get characteristics by uuid start_handle:0x%x end_handle:0x%x, uuid:0x%x @sdk_gatt.c(837),INFO" ID="0x8b801a2d" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="btsdk gatt get characteristic value by uuid start_handle:0x%x end_handle:0x%x @sdk_gatt.c(885),INFO" ID="0x8b801bad" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[sdk]gatt_get_descriptor_by_handle start_handle:0x%x end_handle:0x%x @sdk_gatt.c(908),INFO" ID="0x8b801c65" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[sdk]gatt_get_multiple_characteristics_by_handle handle_count:0x%x @sdk_gatt.c(929),INFO" ID="0x8b801d0d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatt_set_gap_ui_attributes&#160;memcpy_s&#160;error @sdk_gatt.c(1207),ERROR" ID="0x8b8025ba" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatt_set_gap_ui_attributes&#160;memcpy_s&#160;error @sdk_gatt.c(1220),ERROR" ID="0x8b802622" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatt_get_gap_ui_attributes&#160;memcpy_s&#160;error @sdk_gatt.c(1292),ERROR" ID="0x8b802862" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatt_send_response&#160;memcpy_s&#160;error @sdk_gatt.c(1890),ERROR" ID="0x8b803b12" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatt_change_descriptor_value&#160;memcpy_s&#160;error @sdk_gatt.c(1971),ERROR" ID="0x8b803d9a" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatt_notify_characteristic_changed&#160;memcpy_s&#160;error @sdk_gatt.c(2016),ERROR" ID="0x8b803f02" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]can't find hdl by uuid @sdk_gatt.c(2207),ERROR" ID="0x8b8044fa" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatt_notify_characteristic_changed&#160;memcpy_s&#160;error @sdk_gatt.c(2023),ERROR" ID="0x8b803f3a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]can't find hdl by uuid @sdk_gatt.c(2214),ERROR" ID="0x8b804532" />
                        </MSG_LOG>
\ No newline at end of file
index 481ab07..8722fa0 100644 (file)
@@ -2,37 +2,40 @@
                        <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]convert uuid to stack memcpy_s error @sdk_gatt_hlp.c(125),ERROR" ID="0x8da603ea" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att exchange mtu addr memcpy fail @sdk_gatt_hlp.c(581),ERROR" ID="0x8da6122a" />
                        <MSG STRUCTURE="diag_log_msg2" NAME="[gatth_get_multiple_characteristics_value] rmt:0x%x mtu:0x%x @sdk_gatt_hlp.c(887),INFO" ID="0x8da61bbd" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="[gatth_get_characteristics_by_uuid] start_handle:0x%x end_handle:0x%x @sdk_gatt_hlp.c(1020),INFO" ID="0x8da61fe5" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="btsdk gatth get descriptor by handle arg-&gt;start_handle:0x%x arg-&gt;end_handle:0x%x @sdk_gatt_hlp.c(1063),INFO" ID="0x8da6213d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="gatth_set_reliable_characteristic_value in @sdk_gatt_hlp.c(1108),INFO" ID="0x8da622a5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[gatth_set_characteristic_value] memcpy failed @sdk_gatt_hlp.c(1145),ERROR" ID="0x8da623ca" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt write characteristic rmt is NULL @sdk_gatt_hlp.c(1178),ERROR" ID="0x8da624d2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt write characteristic memcpy failed @sdk_gatt_hlp.c(1186),ERROR" ID="0x8da62512" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt write characteristic tl is NULL @sdk_gatt_hlp.c(1201),ERROR" ID="0x8da6258a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[SDK_GATT_HLP] HCI QOS state:%u @sdk_gatt_hlp.c(1550),ERROR" ID="0x8da63072" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[gatth_check_and_save_value] memcpy failed @sdk_gatt_hlp.c(1667),ERROR" ID="0x8da6341a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatth_server_execute_write_complete&#160;memcpy_s&#160;error @sdk_gatt_hlp.c(1764),ERROR" ID="0x8da63722" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatth_server_write_ind&#160;memcpy_s&#160;error @sdk_gatt_hlp.c(1908),ERROR" ID="0x8da63ba2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatth_server_write_ind&#160;memcpy_s&#160;error @sdk_gatt_hlp.c(1930),ERROR" ID="0x8da63c52" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatth_send_response&#160;memcpy_s&#160;error @sdk_gatt_hlp.c(2283),ERROR" ID="0x8da6475a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatth_notify_multiple_characteristic_changed&#160;memcpy_s&#160;error @sdk_gatt_hlp.c(2516),ERROR" ID="0x8da64ea2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att write ind data info mem new fail @sdk_gatt_hlp.c(2568),ERROR" ID="0x8da65042" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att write ind data info service uuid memcpy fail @sdk_gatt_hlp.c(2578),ERROR" ID="0x8da65092" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att write ind data info attribute uuid memcpy fail @sdk_gatt_hlp.c(2583),ERROR" ID="0x8da650ba" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att write ind data info addr memcpy fail @sdk_gatt_hlp.c(2588),ERROR" ID="0x8da650e2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att write ind data info val memcpy fail @sdk_gatt_hlp.c(2593),ERROR" ID="0x8da6510a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att write ind can't find service by service hdl @sdk_gatt_hlp.c(2639),ERROR" ID="0x8da6527a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att write pkt null @sdk_gatt_hlp.c(2645),ERROR" ID="0x8da652aa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att write ind can't find server cbk by server hdl @sdk_gatt_hlp.c(2652),ERROR" ID="0x8da652e2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att read ind data info mem new fail @sdk_gatt_hlp.c(2684),ERROR" ID="0x8da653e2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att read ind data info service uuid memcpy fail @sdk_gatt_hlp.c(2695),ERROR" ID="0x8da6543a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att read ind data info attribute uuid memcpy fail @sdk_gatt_hlp.c(2700),ERROR" ID="0x8da65462" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att read ind data info addr memcpy fail @sdk_gatt_hlp.c(2705),ERROR" ID="0x8da6548a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att read ind data info val memcpy fail @sdk_gatt_hlp.c(2711),ERROR" ID="0x8da654ba" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att read ind can't find service by service hdl @sdk_gatt_hlp.c(2731),ERROR" ID="0x8da6555a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att read pkt null @sdk_gatt_hlp.c(2737),ERROR" ID="0x8da6558a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att read ind can't find server cbk by server hdl @sdk_gatt_hlp.c(2744),ERROR" ID="0x8da655c2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]write element @sdk_gatt_hlp.c(2781),INFO" ID="0x8da656ed" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]read element @sdk_gatt_hlp.c(2785),INFO" ID="0x8da6570d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]write element free @sdk_gatt_hlp.c(2791),INFO" ID="0x8da6573d" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="bt sdk gatt read value handle:%d, offset:%d. @sdk_gatt_hlp.c(1018),INFO" ID="0x8da61fd5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="bt sdk gatt read value can't find remote device. @sdk_gatt_hlp.c(1022),ERROR" ID="0x8da61ff2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="bt sdk gatt read value addr memcpy fail. @sdk_gatt_hlp.c(1027),ERROR" ID="0x8da6201a" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[gatth_get_characteristics_by_uuid] start_handle:0x%x end_handle:0x%x @sdk_gatt_hlp.c(1051),INFO" ID="0x8da620dd" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="btsdk gatth get descriptor by handle arg-&gt;start_handle:0x%x arg-&gt;end_handle:0x%x @sdk_gatt_hlp.c(1094),INFO" ID="0x8da62235" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="gatth_set_reliable_characteristic_value in @sdk_gatt_hlp.c(1139),INFO" ID="0x8da6239d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[gatth_set_characteristic_value] memcpy failed @sdk_gatt_hlp.c(1176),ERROR" ID="0x8da624c2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt write characteristic rmt is NULL @sdk_gatt_hlp.c(1210),ERROR" ID="0x8da625d2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt write characteristic memcpy failed @sdk_gatt_hlp.c(1218),ERROR" ID="0x8da62612" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt write characteristic tl is NULL @sdk_gatt_hlp.c(1233),ERROR" ID="0x8da6268a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[SDK_GATT_HLP] HCI QOS state:%u @sdk_gatt_hlp.c(1582),ERROR" ID="0x8da63172" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[gatth_check_and_save_value] memcpy failed @sdk_gatt_hlp.c(1699),ERROR" ID="0x8da6351a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatth_server_execute_write_complete&#160;memcpy_s&#160;error @sdk_gatt_hlp.c(1796),ERROR" ID="0x8da63822" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatth_server_write_ind&#160;memcpy_s&#160;error @sdk_gatt_hlp.c(1940),ERROR" ID="0x8da63ca2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatth_server_write_ind&#160;memcpy_s&#160;error @sdk_gatt_hlp.c(1962),ERROR" ID="0x8da63d52" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatth_send_response&#160;memcpy_s&#160;error @sdk_gatt_hlp.c(2315),ERROR" ID="0x8da6485a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatth_notify_multiple_characteristic_changed&#160;memcpy_s&#160;error @sdk_gatt_hlp.c(2548),ERROR" ID="0x8da64fa2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att write ind data info mem new fail @sdk_gatt_hlp.c(2600),ERROR" ID="0x8da65142" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att write ind data info service uuid memcpy fail @sdk_gatt_hlp.c(2610),ERROR" ID="0x8da65192" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att write ind data info attribute uuid memcpy fail @sdk_gatt_hlp.c(2615),ERROR" ID="0x8da651ba" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att write ind data info addr memcpy fail @sdk_gatt_hlp.c(2620),ERROR" ID="0x8da651e2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att write ind data info val memcpy fail @sdk_gatt_hlp.c(2625),ERROR" ID="0x8da6520a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att write ind can't find service by service hdl @sdk_gatt_hlp.c(2671),ERROR" ID="0x8da6537a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att write pkt null @sdk_gatt_hlp.c(2677),ERROR" ID="0x8da653aa" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att write ind can't find server cbk by server hdl @sdk_gatt_hlp.c(2684),ERROR" ID="0x8da653e2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att read ind data info mem new fail @sdk_gatt_hlp.c(2716),ERROR" ID="0x8da654e2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att read ind data info service uuid memcpy fail @sdk_gatt_hlp.c(2727),ERROR" ID="0x8da6553a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att read ind data info attribute uuid memcpy fail @sdk_gatt_hlp.c(2732),ERROR" ID="0x8da65562" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att read ind data info addr memcpy fail @sdk_gatt_hlp.c(2737),ERROR" ID="0x8da6558a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att read ind data info val memcpy fail @sdk_gatt_hlp.c(2743),ERROR" ID="0x8da655ba" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att read ind can't find service by service hdl @sdk_gatt_hlp.c(2763),ERROR" ID="0x8da6565a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att read pkt null @sdk_gatt_hlp.c(2769),ERROR" ID="0x8da6568a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att read ind can't find server cbk by server hdl @sdk_gatt_hlp.c(2776),ERROR" ID="0x8da656c2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]write element @sdk_gatt_hlp.c(2813),INFO" ID="0x8da657ed" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]read element @sdk_gatt_hlp.c(2817),INFO" ID="0x8da6580d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]write element free @sdk_gatt_hlp.c(2823),INFO" ID="0x8da6583d" />
                        </MSG_LOG>
\ No newline at end of file
index af8daa1..f883b78 100644 (file)
@@ -1,6 +1,15 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg1" NAME="hlp_link_key_req_cbk no source addr:0x%x @sdk_hlp.c(898),INFO" ID="0x8b7a1c15" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="hlp_connection_ev_cbk_dis_conn hdl:0x%x status:%d @sdk_hlp.c(2053),INFO" ID="0x8b7a402d" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[SDK] connect event cbk connected: %d, reason: %d link_type:%d! @sdk_hlp.c(2074),ERROR" ID="0x8b7a40d2" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="[SDK] connect event cbk cap:%d addr:%02x******%02x%02x @sdk_hlp.c(2089),ERROR" ID="0x8b7a414a" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="[SDK] connect event cbk status:%d dev_hdl:0x%x @sdk_hlp.c(2092),ERROR" ID="0x8b7a4162" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg3" NAME="[BTH][QOS]default flow limit max=%u line_high=%u line_low=%u @sdk_hlp.c(71),ERROR" ID="0x8b7a023a" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[BTH][QOS]overflow ipc:%u fsm_tx:%u. @sdk_hlp.c(93),ERROR" ID="0x8b7a02ea" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[BTH][QOS]overflow hci_rx:%u hci_qos:%u. @sdk_hlp.c(94),ERROR" ID="0x8b7a02f2" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[BTH][QOS]warning ipc:%u fsm_tx:%u. @sdk_hlp.c(106),ERROR" ID="0x8b7a0352" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[BTH][QOS]warning hci_rx:%u hci_qos:%u. @sdk_hlp.c(107),ERROR" ID="0x8b7a035a" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[BTH][QOS]release ipc:%u fsm_tx:%u. @sdk_hlp.c(118),ERROR" ID="0x8b7a03b2" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[BTH][QOS]release hci_rx:%u hci_qos:%u. @sdk_hlp.c(119),ERROR" ID="0x8b7a03ba" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[SDK][GAP] CTKD BR link key report, addr=0x%02x:**:**:**:0x%02x:0x%02x @sdk_hlp.c(895),WARNING" ID="0x8b7a1bfb" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[SDK][GAP] paired phone exist, dev_handle=0x%x @sdk_hlp.c(901),WARNING" ID="0x8b7a1c2b" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="hlp_link_key_req_cbk no source addr:0x%x @sdk_hlp.c(996),INFO" ID="0x8b7a1f25" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="hlp_connection_ev_cbk_dis_conn hdl:0x%x status:%d @sdk_hlp.c(2151),INFO" ID="0x8b7a433d" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[SDK] connect event cbk connected: %d, reason: %d link_type:%d! @sdk_hlp.c(2173),ERROR" ID="0x8b7a43ea" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="[SDK] connect event cbk cap:%d addr:%02x******%02x%02x @sdk_hlp.c(2188),ERROR" ID="0x8b7a4462" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[SDK] connect event cbk status:%d dev_hdl:0x%x @sdk_hlp.c(2191),ERROR" ID="0x8b7a447a" />
                        </MSG_LOG>
\ No newline at end of file
index 7e8c527..5e461ba 100644 (file)
@@ -1,4 +1,7 @@
 <MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="pce_update_status null returned @sdk_pbap.c(168),WARNING" ID="0x8b740543" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="pbap_pull_phone_book conn_hdl=0x%x @sdk_pbap.c(669),INFO" ID="0x8b7414ed" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="pbap_pull_phone_book err ret=0x%x @sdk_pbap.c(682),WARNING" ID="0x8b741553" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="pbap_pull_phone_book conn_hdl=0x%x @sdk_pbap.c(670),INFO" ID="0x8b7414f5" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="pbap_pull_phone_book err ret=0x%x @sdk_pbap.c(683),WARNING" ID="0x8b74155b" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s failed @sdk_pbap.c(696),ERROR" ID="0x8b7415c2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s failed @sdk_pbap.c(843),ERROR" ID="0x8b741a5a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s failed @sdk_pbap.c(943),ERROR" ID="0x8b741d7a" />
                        </MSG_LOG>
\ No newline at end of file
index bdd6eda..b67bee1 100644 (file)
@@ -1,9 +1,10 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg4" NAME="BT run time:%d, BT deep sleep time:%d, light sleep time:%d, BT sleep flag:%d @security_main.c(283),INFO" ID="0xa00008dd" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="BT deepsleep cnt:%d, BT light sleep cnt:%d, last veto id:%d, last veto count:%d @security_main.c(286),INFO" ID="0xa00008f5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="enter sec_main fuction @security_main.c(381),INFO" ID="0xa0000bed" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="The chip needs to be replaced. @security_main.c(555),INFO" ID="0xa000115d" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="BT year:0x%x, month:0x%x, day:0x%x, No verification is required. @security_main.c(562),INFO" ID="0xa0001195" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="The chip does not need to be verified. @security_main.c(589),INFO" ID="0xa000126d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="The chip verification failed.  @security_main.c(597),INFO" ID="0xa00012ad" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Security enhancement verification succeeded. @security_main.c(602),INFO" ID="0xa00012d5" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg4" NAME="BT run time:%d, BT deep sleep time:%d, light sleep time:%d, BT sleep flag:%d @security_main.c(287),INFO" ID="0xa00008fd" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="BT deepsleep cnt:%d, BT light sleep cnt:%d, last veto id:%d, last veto count:%d @security_main.c(290),INFO" ID="0xa0000915" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="PLT 32K freq is %d, cnt is %d, kick cnt is %d. @security_main.c(292),INFO" ID="0xa0000925" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="enter sec_main fuction @security_main.c(387),INFO" ID="0xa0000c1d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="The chip needs to be replaced. @security_main.c(562),INFO" ID="0xa0001195" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="BT year:0x%x, month:0x%x, day:0x%x, No verification is required. @security_main.c(569),INFO" ID="0xa00011cd" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="The chip does not need to be verified. @security_main.c(596),INFO" ID="0xa00012a5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="The chip verification failed.  @security_main.c(604),INFO" ID="0xa00012e5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="Security enhancement verification succeeded. @security_main.c(609),INFO" ID="0xa000130d" />
                        </MSG_LOG>
\ No newline at end of file
index 8c7cf10..b83b5b2 100644 (file)
@@ -1,10 +1,10 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg1" NAME="[SMP][LongTermKeyRequest]key-&gt;fea = 0x%x @smp_ui.c(426),INFO" ID="0x8dac0d55" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[SMP][LongTermKeyRequest]key == NULL @smp_ui.c(430),INFO" ID="0x8dac0d75" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[SMP][LongTermKeyRequest]link-&gt;hcihdl = %u, link-&gt;remote = 0x%x, key = 0x%x @smp_ui.c(457),INFO" ID="0x8dac0e4d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[SMP][LongTermKeyRequest][No LESC LTK SEND] @smp_ui.c(470),INFO" ID="0x8dac0eb5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[SMP][LongTermKeyRequest][DIV mismatch, Unpaired] @smp_ui.c(494),INFO" ID="0x8dac0f75" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[SMP][LongTermKeyRequest][ECDH LTK unavailable, pair!=NULL] @smp_ui.c(507),INFO" ID="0x8dac0fdd" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[SMP][LongTermKeyRequest][LTK unavailable, pair=NULL] @smp_ui.c(520),INFO" ID="0x8dac1045" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="[SMP][LongTermKeyRequest]LKT:0x%02x%02x%02x%02x @smp_ui.c(527),ERROR" ID="0x8dac107a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[SMP][LongTermKeyRequest][Send Negative Reply!] @smp_ui.c(542),INFO" ID="0x8dac10f5" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg1" NAME="[SMP][LongTermKeyRequest]key-&gt;fea = 0x%x @smp_ui.c(430),INFO" ID="0x8dac0d75" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[SMP][LongTermKeyRequest]key == NULL @smp_ui.c(434),INFO" ID="0x8dac0d95" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[SMP][LongTermKeyRequest]link-&gt;hcihdl = %u, link-&gt;remote = 0x%x, key = 0x%x @smp_ui.c(461),INFO" ID="0x8dac0e6d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[SMP][LongTermKeyRequest][No LESC LTK SEND] @smp_ui.c(474),INFO" ID="0x8dac0ed5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[SMP][LongTermKeyRequest][DIV mismatch, Unpaired] @smp_ui.c(498),INFO" ID="0x8dac0f95" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[SMP][LongTermKeyRequest][ECDH LTK unavailable, pair!=NULL] @smp_ui.c(511),INFO" ID="0x8dac0ffd" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[SMP][LongTermKeyRequest][LTK unavailable, pair=NULL] @smp_ui.c(524),INFO" ID="0x8dac1065" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="[SMP][LongTermKeyRequest]LKT:0x%02x%02x%02x%02x @smp_ui.c(531),ERROR" ID="0x8dac109a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[SMP][LongTermKeyRequest][Send Negative Reply!] @smp_ui.c(546),INFO" ID="0x8dac1115" />
                        </MSG_LOG>
\ No newline at end of file
index 7259bd0..8392f14 100644 (file)
@@ -1,5 +1,5 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg1" NAME="[SPP][AddEntry] vport=%d @sppui.c(157),INFO" ID="0x8b6604ed" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[SPP][DelEntry] vport=%d @sppui.c(233),INFO" ID="0x8b66074d" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="[SPP][WRITE_DATA] CONGEST=%d, CREDITIN=%d @sppui.c(542),INFO" ID="0x8b6610f5" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="[SPP][WRITE_DATA] CONGEST=%d, CREDITIN=%d @sppui.c(654),INFO" ID="0x8b661475" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg1" NAME="[SPP][AddEntry] vport=%d @sppui.c(158),INFO" ID="0x8b6604f5" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[SPP][DelEntry] vport=%d @sppui.c(234),INFO" ID="0x8b660755" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[SPP][WRITE_DATA] CONGEST=%d, CREDITIN=%d @sppui.c(543),INFO" ID="0x8b6610fd" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[SPP][WRITE_DATA] CONGEST=%d, CREDITIN=%d @sppui.c(656),INFO" ID="0x8b661485" />
                        </MSG_LOG>
\ No newline at end of file
index 1557c5e..d674673 100644 (file)
Binary files a/code/sdk/interim_binary/brandy/libs/bt/evb_standard/freertos/br/libbt_host_audio_manager_wrapper.a and b/code/sdk/interim_binary/brandy/libs/bt/evb_standard/freertos/br/libbt_host_audio_manager_wrapper.a differ
index 61b8bb2..4ce35cb 100644 (file)
Binary files a/code/sdk/interim_binary/brandy/libs/bt/evb_standard/freertos/br/libbt_host_brandy_service.a and b/code/sdk/interim_binary/brandy/libs/bt/evb_standard/freertos/br/libbt_host_brandy_service.a differ
index 3f240ee..22fdbfa 100644 (file)
Binary files a/code/sdk/interim_binary/brandy/libs/bt/evb_standard/freertos/br/libbt_host_sdk.a and b/code/sdk/interim_binary/brandy/libs/bt/evb_standard/freertos/br/libbt_host_sdk.a differ
index 1a804b7..420cba0 100644 (file)
Binary files a/code/sdk/interim_binary/brandy/libs/bt/evb_standard/liteos/br/libbt_host_audio_manager_wrapper.a and b/code/sdk/interim_binary/brandy/libs/bt/evb_standard/liteos/br/libbt_host_audio_manager_wrapper.a differ
index f219767..b96a938 100644 (file)
Binary files a/code/sdk/interim_binary/brandy/libs/bt/evb_standard/liteos/br/libbt_host_brandy_service.a and b/code/sdk/interim_binary/brandy/libs/bt/evb_standard/liteos/br/libbt_host_brandy_service.a differ
index b164a1f..fe618d2 100644 (file)
Binary files a/code/sdk/interim_binary/brandy/libs/bt/evb_standard/liteos/br/libbt_host_sdk.a and b/code/sdk/interim_binary/brandy/libs/bt/evb_standard/liteos/br/libbt_host_sdk.a differ
index 1799e16..7895184 100644 (file)
Binary files a/code/sdk/interim_binary/brandy/libs/bt/evb_standard/liteos/mini/br/libbt_host_brandy_service.a and b/code/sdk/interim_binary/brandy/libs/bt/evb_standard/liteos/mini/br/libbt_host_brandy_service.a differ
index 6fdd668..fb9a2bd 100644 (file)
Binary files a/code/sdk/interim_binary/brandy/libs/bt/evb_standard/liteos/mini/br/libbt_host_sdk.a and b/code/sdk/interim_binary/brandy/libs/bt/evb_standard/liteos/mini/br/libbt_host_sdk.a differ
diff --git a/code/sdk/interim_binary/brandy/libs/media/evb_standard/libjs_audio_capturer.a b/code/sdk/interim_binary/brandy/libs/media/evb_standard/libjs_audio_capturer.a
new file mode 100644 (file)
index 0000000..be36033
Binary files /dev/null and b/code/sdk/interim_binary/brandy/libs/media/evb_standard/libjs_audio_capturer.a differ
index 4b5183c..245ab42 100644 (file)
@@ -6,6 +6,7 @@ set(COMPONENT_NAME "dfx_port_brandy")
 
 set(SOURCES
     ${CMAKE_CURRENT_SOURCE_DIR}/dfx_channel.c
+    ${CMAKE_CURRENT_SOURCE_DIR}/diag_audio.c
     ${CMAKE_CURRENT_SOURCE_DIR}/dfx_system_init.c
     ${CMAKE_CURRENT_SOURCE_DIR}/diag_adapt_cmd_mem.c
     ${CMAKE_CURRENT_SOURCE_DIR}/last_dump_adapt.c
index 4f65673..6742732 100644 (file)
@@ -25,8 +25,8 @@
 #endif\r
 #include "bts_gatt_server.h"\r
 \r
-\r
 #define DIAG_SER_DATA_MFS        990\r
+#define DIAG_SER_GATT_DATA_MFS   500\r
 #ifdef SUPPORT_ALIPAY_SEC\r
 #define DIAG_SER_DATA_MAX_LEN    0x3000\r
 #else\r
@@ -112,7 +112,7 @@ static errcode_t diag_channel_bt_gatt_output(void *fd, dfx_data_type_t data_type
     return ret;\r
 }\r
 \r
-static void diag_gatt_write_req_cbk(uint8_t server_id, uint16_t conn_id, gatts_req_write_cb_t *write_cb_para,\r
+void diag_gatt_write_req_cbk(uint8_t server_id, uint16_t conn_id, gatts_req_write_cb_t *write_cb_para,\r
     errcode_t status)\r
 {\r
     g_diag_gatt_hdl = write_cb_para->handle;\r
@@ -123,9 +123,11 @@ static void diag_gatt_write_req_cbk(uint8_t server_id, uint16_t conn_id, gatts_r
 \r
 static void diag_channel_register_bt_gatt_callback(void)\r
 {\r
+#ifndef SUPPORT_AT_OHOSFWK\r
     gatts_callbacks_t cb = {0};\r
     cb.write_request_cb = diag_gatt_write_req_cbk;\r
     (void)gatts_register_callbacks(&cb);\r
+#endif\r
 }\r
 \r
 errcode_t diag_cmd_uart_config(uint16_t cmd_id, void *cmd_param, uint16_t cmd_param_size, diag_option_t *option)\r
@@ -273,7 +275,13 @@ errcode_t diag_register_channel(void)
     if (uapi_diag_channel_set_tx_hook(DIAG_CHANNEL_ID_2, diag_channel_bt_gatt_output) != ERRCODE_SUCC) {\r
         return ERRCODE_FAIL;\r
     }\r
+\r
+    if (uapi_diag_channel_set_mfs(DIAG_CHANNEL_ID_2, DIAG_SER_GATT_DATA_MFS, DIAG_SER_DATA_MAX_LEN) != ERRCODE_SUCC) {\r
+        return ERRCODE_FAIL;\r
+    }\r
+\r
     diag_channel_register_bt_gatt_callback();\r
+\r
 #endif /* CONFIG_DFX_SUPPORT_DIAG_CONNECT_BLE */\r
     return ERRCODE_SUCC;\r
 }
\ No newline at end of file
index ccf14e3..001e135 100644 (file)
@@ -8,9 +8,24 @@
 #include <stdint.h>\r
 #include "errcode.h"\r
 #include "diag.h"\r
+#include "bts_gatt_server.h"\r
+\r
+#ifdef __cplusplus\r
+#if __cplusplus\r
+extern "C" {\r
+#endif /* __cplusplus */\r
+#endif /* __cplusplus */\r
 \r
 void diag_uart_rx_proc(uint8_t *buffer, uint16_t length);\r
 errcode_t diag_register_channel(void);\r
 errcode_t diag_cmd_uart_config(uint16_t cmd_id, void *cmd_param, uint16_t cmd_param_size, diag_option_t *option);\r
 errcode_t diag_cmd_set_offline_log(uint16_t cmd_id, void *cmd_param, uint16_t cmd_param_size, diag_option_t *option);\r
+void diag_gatt_write_req_cbk(uint8_t server_id, uint16_t conn_id, gatts_req_write_cb_t *write_cb_para,\r
+    errcode_t status);\r
+\r
+#ifdef __cplusplus\r
+#if __cplusplus\r
+}\r
+#endif /* __cplusplus */\r
+#endif /* __cplusplus */\r
 #endif
\ No newline at end of file
index f7a112a..b395d94 100644 (file)
@@ -40,6 +40,7 @@
 #include "soc_log_uart_instance.h"
 #include "sample_data_adapt.h"
 #include "dfx_channel.h"
+#include "diag_audio.h"
 #include "transmit.h"
 #include "log_file.h"
 #include "soc_log_strategy.h"
@@ -108,6 +109,10 @@ const diag_cmd_reg_obj_t g_diag_default_cmd_tbl[] = {
     { DIAG_CMD_SET_OFFLINE_LOG, DIAG_CMD_SET_OFFLINE_LOG, diag_cmd_set_offline_log },
     { DIAG_CMD_ID_DIAG_DFX_REQ, DIAG_CMD_ID_DIAG_DFX_END, diag_dfx_cmd },
     { DIAG_CMD_ID_DBG_STAT_QUERY, DIAG_CMD_ID_DBG_STAT_QUERY, diag_cmd_stat_query },
+#ifdef SUPPORT_MEDIA_AUDIO_MANAGER
+    { DIAG_CMD_AUDIO_SEE_EFFECT_REQ, DIAG_CMD_AUDIO_SEE_EFFECT_REQ, diag_see_param_trans },
+    { DIAG_CMD_AUDIO_SAVE_SEE_EFFECT_REQ, DIAG_CMD_AUDIO_SAVE_SEE_EFFECT_REQ, diag_see_param_save },
+#endif
 };
 
 static unsigned long g_dfx_osal_queue_id = DFX_INVALID_QUEUE_ID;
diff --git a/code/sdk/middleware/chips/brandy/dfx/diag_audio.c b/code/sdk/middleware/chips/brandy/dfx/diag_audio.c
new file mode 100644 (file)
index 0000000..d916334
--- /dev/null
@@ -0,0 +1,112 @@
+/*\r
+ * Copyright (c) @CompanyNameMagicTag 2024-2024. All rights reserved.\r
+ * Description: audio diag\r
+ * Author: audio\r
+ * Create: 2024-06-06\r
+ */\r
+\r
+#include "diag.h"\r
+#ifdef CONFIG_NV_FEATURE_SUPPORT\r
+#include "nv.h"\r
+#endif\r
+#ifdef SUPPORT_MEDIA_AUDIO_MANAGER\r
+#include "audio_manager_c_wrapper.h"\r
+#endif\r
+#include "debug_print.h"\r
+#include "soc_diag_cmd_id.h"\r
+#include "diag_audio.h"\r
+\r
+#define GET_SEE_PARAM_FIRST_POS 0\r
+#define DEBUGKITS_READ_PARAM_TAG 0xff\r
+#define PARSE_EFFECT_PARAM_FLAG_POS 0\r
+\r
+#define audio_unused(var) (void)(var)\r
+\r
+/*\r
+ * Debugkit menu点击通知 读取/配置 3A算法参数\r
+ *\r
+ * 当点击Read时,读取当前3A算法参数\r
+ * 当点击Write时,将界面中的3A算法参数配置下去,并使能到算法中\r
+ */\r
+#ifdef SUPPORT_MEDIA_AUDIO_MANAGER\r
+errcode_t diag_see_param_trans(uint16_t cmd_id, void *cmd_param, uint16_t cmd_param_size, diag_option_t *option)\r
+{\r
+    errcode_t ret;\r
+    uint8_t *param = (uint8_t *)cmd_param;\r
+\r
+    if (cmd_param_size != NV_AUDIO_VQE_PARAM_SIZE * sizeof(uint32_t)) {\r
+        PRINT("[audio][diag] cmd_param_size invalid\r\n");\r
+        return ERRCODE_FAIL;\r
+    }\r
+\r
+    if (param[GET_SEE_PARAM_FIRST_POS] != DEBUGKITS_READ_PARAM_TAG) {\r
+        /* set param , this func return 0 when success */\r
+        ret = AudioManagerSetSeaParam((uint8_t *)param, cmd_param_size);\r
+        if (ret != ERRCODE_SUCC) {\r
+            PRINT("[audio][diag] set param fail\r\n");\r
+            return ERRCODE_FAIL;\r
+        }\r
+    } else {\r
+        /* get param , this func return 0 when success */\r
+        ret = AudioManagerGetSeaParam((uint8_t *)param, cmd_param_size);\r
+        if (ret != ERRCODE_SUCC) {\r
+            PRINT("[audio][diag] get param fail\r\n");\r
+            return ERRCODE_FAIL;\r
+        }\r
+    }\r
+\r
+    return uapi_diag_report_packet(cmd_id, option, (uint8_t *)cmd_param, (uint16_t)cmd_param_size, true);\r
+}\r
+\r
+static errcode_t audio_manager_save_sea_param(uint8_t *sea_param, uint16_t len)\r
+{\r
+    if (sea_param == NULL || len != sizeof(audio_vqe_param_t)) {\r
+        PRINT("[audio_manager_save_sea_param]sea_param null or len invalid");\r
+        return ERRCODE_INVALID_PARAM;\r
+    }\r
+\r
+#ifdef CONFIG_NV_FEATURE_SUPPORT\r
+    errcode_t nv_op = uapi_nv_write((uint16_t)NV_ID_AUDIO_VQE_PARAM, sea_param, len);\r
+    if (nv_op != ERRCODE_SUCC) {\r
+        return ERRCODE_FAIL;\r
+    }\r
+#endif\r
+    return ERRCODE_SUCC;\r
+}\r
+\r
+/* debugkit menu点击Save保存所有3A参数 */\r
+errcode_t diag_see_param_save(uint16_t cmd_id, void *cmd_param, uint16_t cmd_param_size, diag_option_t *option)\r
+{\r
+    audio_vqe_param_t *nv_data = (audio_vqe_param_t *)malloc(sizeof(audio_vqe_param_t));\r
+    if (nv_data == NULL) {\r
+        PRINT("[audio][diag] malloc fail\r\n");\r
+        return ERRCODE_MALLOC;\r
+    }\r
+    (void)memset_s(nv_data, sizeof(audio_vqe_param_t), 0, sizeof(audio_vqe_param_t));\r
+\r
+    nv_data->size = NV_AUDIO_VQE_PARAM_SIZE;\r
+    errcode_t ret = AudioManagerGetSeaParam((uint8_t *)nv_data->data, NV_AUDIO_VQE_PARAM_SIZE * sizeof(uint32_t));\r
+    if (ret != ERRCODE_SUCC) {\r
+        free(nv_data);\r
+        PRINT("[audio][diag] get param fail\r\n");\r
+        return ERRCODE_FAIL;\r
+    }\r
+\r
+    errcode_t nv_op = audio_manager_save_sea_param((uint8_t *)nv_data, (uint16_t)sizeof(audio_vqe_param_t));\r
+    if (nv_op != ERRCODE_SUCC) {\r
+        free(nv_data);\r
+        PRINT("[audio][diag] save param nv fail\r\n");\r
+        return ERRCODE_FAIL;\r
+    }\r
+    free(nv_data);\r
+\r
+    errcode_t op = uapi_diag_report_packet(cmd_id, option, &ret, sizeof(uint8_t), true);\r
+    if (op != ERRCODE_SUCC) {\r
+        PRINT("[audio][diag] read rpt fail %u\r\n", op);\r
+    }\r
+\r
+    audio_unused(cmd_param);\r
+    audio_unused(cmd_param_size);\r
+    return op;\r
+}\r
+#endif /* SUPPORT_MEDIA_AUDIO_MANAGER */
\ No newline at end of file
diff --git a/code/sdk/middleware/chips/brandy/dfx/diag_audio.h b/code/sdk/middleware/chips/brandy/dfx/diag_audio.h
new file mode 100644 (file)
index 0000000..f703ca6
--- /dev/null
@@ -0,0 +1,24 @@
+/*\r
+ * Copyright (c) @CompanyNameMagicTag 2024-2024. All rights reserved.\r
+ * Description: adapt sdt\r
+ * This file should be changed only infrequently and with great care.\r
+ * Author: audio\r
+ * Create: 2024-06-06\r
+ */\r
+\r
+#ifndef DIAG_AUDIO_H\r
+#define DIAG_AUDIO_H\r
+#include <stdint.h>\r
+#include "errcode.h"\r
+#include "diag.h"\r
+\r
+#define NV_AUDIO_VQE_PARAM_SIZE 48\r
+\r
+typedef struct {\r
+    uint32_t size;\r
+    uint32_t data[NV_AUDIO_VQE_PARAM_SIZE];\r
+} audio_vqe_param_t;\r
+\r
+errcode_t diag_see_param_save(uint16_t cmd_id, void *cmd_param, uint16_t cmd_param_size, diag_option_t *option);\r
+errcode_t diag_see_param_trans(uint16_t cmd_id, void *cmd_param, uint16_t cmd_param_size, diag_option_t *option);\r
+#endif
\ No newline at end of file
index 8fed177..ac157e7 100644 (file)
@@ -185,6 +185,7 @@ typedef enum {
     JSI_UTILS_CPP,
     MSG_CENTER_CMD_CPP,
     MSG_CENTER_CPP,
+    MSG_CENTER_OTA_CPP,
     MSG_CENTER_CUSTOMER_CPP,
     MSG_CENTER_PROTOCOL_CPP,
     ALARM_NOTIFICATION_CPP,
index bda3e38..13d1422 100644 (file)
@@ -87,6 +87,7 @@ typedef enum {
     IMAGE_COMPONENT_CPP,
     INPUT_BUTTON_COMPONENT_CPP,
     INPUT_CHECKBOX_COMPONENT_CPP,
+    INPUT_EDITTEXT_COMPONENT_CPP,
     INPUT_RADIO_COMPONENT_CPP,
     LIST_ADAPTER_CPP,
     LIST_COMPONENT_CPP,
@@ -118,6 +119,7 @@ typedef enum {
     DIRECTIVE_WATCHER_CALLBACK_CPP,
     JSI_CPP,
     APP_MODULE_CPP,
+    DEVICE_MODULE_CPP,
     DFX_MODULE_CPP,
     DIALOG_MODULE_CPP,
     LOCALE_MODULE_CPP,
index b14d14b..9af7894 100644 (file)
 #define DIAG_CMD_SET_TIME               diag_cmd_id_comb(0x23)\r
 \r
 /* PQUI cmd [0x24, 0x2F] */\r
-#define DIAG_CMD_AUDIO_HAID_REQ         diag_cmd_id_comb(0x24)\r
-#define DIAG_CMD_AUDIO_SWS_EFFECT_REQ   diag_cmd_id_comb(0x25)\r
-#define DIAG_CMD_AUDIO_SEE_EFFECT_REQ   diag_cmd_id_comb(0x26)\r
+#define DIAG_CMD_AUDIO_HAID_REQ                 diag_cmd_id_comb(0x24)\r
+#define DIAG_CMD_AUDIO_SWS_EFFECT_REQ           diag_cmd_id_comb(0x25)\r
+#define DIAG_CMD_AUDIO_SEE_EFFECT_REQ           diag_cmd_id_comb(0x26)\r
+#define DIAG_CMD_AUDIO_SAVE_SEE_EFFECT_REQ      diag_cmd_id_comb(0x2f)\r
 \r
 /* NV read and write commands [0x30, 0x33] */\r
 #define DIAG_CMD_NV_RD                  diag_cmd_id_comb(0x30)\r
index 36c2131..28531fe 100644 (file)
@@ -90,7 +90,6 @@ void get_current_time(struct timeval *tv, struct tm *tm)
 
 void restore_time(void)
 {
-    uapi_ulp_systick_soc_calibration();
     calendar_t date;
     uapi_calendar_get_datetime(&date);
     print_time(&date);
index 0a0e6d1..819b816 100644 (file)
@@ -465,6 +465,7 @@ static void show_system_panic_info(const exc_context_t *exc_buf_addr)
 \r
 static void disable_watchdog(void)\r
 {\r
+#ifndef BUILD_APPLICATION_SSB\r
 #ifdef SUPPORT_WATCHDOG\r
 #if MASTER_BY_BRANDY_ONLY\r
     /* If the clock of the watchdog is not enabled, the next operation register triggers an exception. */\r
@@ -474,8 +475,7 @@ static void disable_watchdog(void)
 #if MASTER_BY_BRANDY_ONLY\r
     watchdog_turnoff_clk();\r
 #endif\r
-#else\r
-    return;\r
+#endif\r
 #endif\r
 }\r
 \r
diff --git a/code/sdk/middleware/chips/brandy/nv/nv_config/cfg/acore/app.json b/code/sdk/middleware/chips/brandy/nv/nv_config/cfg/acore/app.json
deleted file mode 100644 (file)
index e71b832..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-{
-    "common":{
-        "module_id": "0x0", 
-        "secure_conn":{
-            "key_id": "0x2001",
-            "key_status": "alive",
-            "structure_type": "ext_nv_secure_conn_t",
-            "attributions": 1,
-            "value": [[
-                       243, 241, 252, 189, 233, 154, 35, 34, 155, 96, 183, 133, 229, 196, 190, 222, 180, 146, 211, 63,
-                       59, 38, 229, 100, 24, 165, 216, 53, 120, 133, 104, 166, 31, 6, 220, 125, 87, 47, 131, 42, 74,
-                       240, 107, 111, 146, 239, 251, 229, 146, 99, 46, 4, 38, 183, 99, 2, 47, 215, 88, 151, 178, 198,
-                       148, 222, 135, 2, 156, 203, 192, 138, 178, 118, 6, 110, 40, 38, 235, 31, 220, 118, 53, 75, 152,
-                       32, 246, 4, 225, 131, 242, 96, 176, 20, 131, 184, 39, 88, 96, 7, 205, 231, 158, 10, 136, 178,
-                       32, 19, 156, 88, 133, 93, 18, 251, 35, 146, 58, 83, 25, 188, 84, 151, 99, 38, 102, 48, 240, 214,
-                       157, 197, 88, 160, 224, 71, 174, 4, 216, 234, 117, 87, 53, 132, 204, 99, 62, 201, 61, 116, 186,
-                       29, 201, 172, 140, 176, 226, 123, 55, 95, 18, 197, 30, 244, 19, 143, 112, 12, 29, 162, 188, 208,
-                       48, 242, 108, 76, 170, 139, 140, 198, 177, 233, 251, 57, 91, 10, 70, 117, 231, 226, 67, 26, 55,
-                       249, 144, 165, 75, 125, 215, 220, 190, 199, 116, 40, 221, 0, 17, 90, 25, 11, 47, 177, 255, 218,
-                       153, 254, 127, 237, 211, 170, 174, 104, 76, 47, 136, 193, 0, 147, 157, 74, 213, 180, 143, 240,
-                       173, 98, 90, 27, 30, 213, 217, 247, 50, 147, 202, 224, 54, 147, 34, 19, 177, 128, 27, 123, 101,
-                       242, 36, 68, 71, 184, 62, 166, 134, 86, 98, 216, 120, 123, 191, 49, 135, 105, 187, 38, 241, 125,
-                       26, 80, 141, 151, 222, 240, 253, 115, 102, 86, 118, 153, 214, 4, 209, 186, 110, 50, 105, 194,
-                       100, 125, 242, 51, 117, 118, 107, 164, 133, 229, 157, 221, 114, 121, 152, 204, 57, 119, 176,
-                       167, 75, 208, 156, 243, 138, 176, 50, 102, 121, 69, 22, 21, 225, 41, 216, 247, 133, 47, 129, 74,
-                       20, 79, 236, 42, 38, 134, 68, 224, 200, 42, 223, 23, 191, 88, 221, 31, 133, 145, 171, 46, 98, 4,
-                       202, 160, 0, 89, 222, 92, 67, 160, 163, 185, 52, 70, 129, 62, 112, 1, 223, 187, 218, 241, 25,
-                       215, 129, 196, 249, 32, 201, 96, 249, 165
-                      ],
-                      [15,238,119,231,29,44,120,58,55,14,80,125,220,227,124,8,39,0,104,162],20]
-        },
-        "offline_enable_flag":{
-            "key_id": "0x2002",
-            "key_status": "alive",
-            "structure_type": "uint8_t",
-            "attributions": 1,
-            "value": 0
-        },
-        "btsrv_local_device_info":{
-            "key_id": "0x2101",
-            "key_status": "alive",
-            "structure_type": "btsrv_local_device_info_t",
-            "attributions": 1,
-            "value": [[40,17,6,133,105, 89],0,0,["W","a","t","c","h","D","e","m","o",0]]
-        },
-        "btsrv_paired_device_info":{
-            "key_id": "0x2102",
-            "key_status": "alive",
-            "structure_type": "btsrv_paired_device_info_t",
-            "attributions": 1,
-            "value": [0]
-        },
-        "btsrv_tx_power_info":{
-            "key_id": "0x2103",
-            "key_status": "",
-            "structure_type": "btsrv_calibration_config_t",
-            "attributions": 1,
-            "value": [8,[75,75,75,75,55,55,95,95],[2,15,27,31,41,51,66,77],[-28,1818,-6745],0,14,14,14,12,0,0,0,0]
-        },
-        "bth_host_config": {
-            "key_id": "0x2104",
-            "key_status": "alive",
-            "structure_type": "bth_product_data_config_t",
-            "attributions": 1,
-            "value": [0]
-        },
-        "audio_vqe_param":{
-            "key_id": "0x320C",
-            "key_status": "alive",
-            "structure_type": "audio_vqe_param_t",
-            "attributions": 1,
-            "value": [48, [0, 0, 0, 0, 16843009, 33620225, 16000, 16000,
-                1024, 100, 0, 0, 16842753, 257, 257, 256,
-                16778116, 16844032, 4, 0, 458824, 11796580, 327946, 1310720005,
-                65576964, 1000, 21499085, 67108874, 327680, 655367, 2126009683, 654734439,
-                1, 0, 0, 0, 0, 0, 5308380, 655336,
-                4286447619, 64536, 500, 16384, 3277, 0, 66049, 0]]
-        },
-        "audio_vqe_kws_param":{
-            "key_id": "0x320D",
-            "key_status": "alive",
-            "structure_type": "audio_vqe_param_t",
-            "attributions": 1,
-            "value": [48, [0, 0, 0, 0, 16843009, 33554689, 16000, 16000,
-                1024, 100, 1985229328, 1985229328, 16843009, 257, 257, 256,
-                16778116, 1280, 4, 0, 458824, 11796580, 327690, 13107205,
-                65576964, 1000, 679102459, 67108874, 327680, 655367, 2126009683,
-                654734439, 1, 0, 0, 0, 0, 0, 10551272, 655336, 4286447619, 64536,
-                500, 16384, 3277, 0, 66049, 0]]
-        }
-    }
-}
index e71b832..f9947f2 100644 (file)
             "key_id": "0x2101",
             "key_status": "alive",
             "structure_type": "btsrv_local_device_info_t",
-            "attributions": 1,
+            "attributions": 4,
             "value": [[40,17,6,133,105, 89],0,0,["W","a","t","c","h","D","e","m","o",0]]
         },
         "btsrv_paired_device_info":{
             "key_id": "0x2102",
             "key_status": "alive",
             "structure_type": "btsrv_paired_device_info_t",
-            "attributions": 1,
+            "attributions": 4,
             "value": [0]
         },
         "btsrv_tx_power_info":{
@@ -61,7 +61,7 @@
             "key_id": "0x2104",
             "key_status": "alive",
             "structure_type": "bth_product_data_config_t",
-            "attributions": 1,
+            "attributions": 4,
             "value": [0]
         },
         "audio_vqe_param":{
index 11a5df8..c577233 100644 (file)
             "key_id": "0x2101",
             "key_status": "alive",
             "structure_type": "btsrv_local_device_info_t",
-            "attributions": 1,
+            "attributions": 4,
             "value": [[40,17,6,133,105, 89],0,0,["W","a","t","c","h","D","e","m","o",0]]
         },
         "btsrv_paired_device_info":{
             "key_id": "0x2102",
             "key_status": "alive",
             "structure_type": "btsrv_paired_device_info_t",
-            "attributions": 1,
+            "attributions": 4,
             "value": [0]
         },
         "btsrv_tx_power_info":{
@@ -61,7 +61,7 @@
             "key_id": "0x2104",
             "key_status": "alive",
             "structure_type": "bth_product_data_config_t",
-            "attributions": 1,
+            "attributions": 4,
             "value": [0]
         },
         "audio_vqe_param":{
index 7343313..05e3182 100644 (file)
@@ -41,6 +41,9 @@ typedef enum {
     PM_ID_JPEG,
     PM_ID_JS,
     PM_ID_MSGCENTER,
+    PM_ID_SPI_DMA,
+    PM_ID_I2C_DMA,
+    PM_ID_UART_DMA,
     PM_ID_MAX,
 } pm_id_t;
 
index 3f2f50a..ad8fe59 100644 (file)
@@ -15,7 +15,7 @@ extern "C" {
 #endif
 #endif
 
-#if MEMORY_MINI
+#if defined (MEMORY_MINI) || defined (SUPPORT_AUTO_OTA_SERVER)
 #define UPG_FILE_PATH                   "/user/"
 #define UPG_RES_INDEX_PATH              "/user/res_index.bin"
 #define UPG_FILE_NAME                   "/user/update.fwpkg"
index 4f3fb54..56a7a09 100644 (file)
@@ -449,6 +449,7 @@ static td_s32 vau_draw_hardware(td_handle handle, const ext_vau_surface_list *su
         vau_err("vau_draw_make_paint failed");
         return ret;
     }
+
     vau_draw_make_matrix(m, &sw_node->hw_node);
     vau_draw_make_src1(src1, &sw_node->hw_node);
     vau_draw_make_dst(surface_list->dst_surface, &sw_node->hw_node);
index a4dd914..47a3a54 100644 (file)
@@ -15,6 +15,7 @@
 #ifdef CONFIG_VAU_DRAW_DIRECTLY
 #include "vau_draw.h"
 #endif
+#include "vau_hal_apb.h"
 
 #define VAU_SRC_SURFACE_CNT_MAX  20
 #define VAU_GRADIENT_RATIO       128
@@ -943,3 +944,16 @@ td_s32 uapi_vau_wait_for_done(td_handle handle)
 
     return EXT_SUCCESS;
 }
+
+td_s32 uapi_vau_set_cubic_threshold(td_float cubic_threshold)
+{
+    // cubic_threshold Range: 1.0/0.5/0.25/0.125
+    if ((cubic_threshold != 0.125) && (cubic_threshold != 0.25) && (cubic_threshold != 0.5) &&
+        (cubic_threshold != 1.0)) {
+        vau_err("input val [%f] is wrong, need equal 0.125 or 0.25 or 0.5 or 1.0", cubic_threshold);
+        return EXT_FAILURE;
+    }
+
+    vau_hal_apb_set_cubic_threshold(cubic_threshold);
+    return EXT_SUCCESS;
+}
index 2b10d0c..63889bd 100644 (file)
@@ -227,7 +227,7 @@ td_void vau_hal_apb_vector_draw_init(td_void)
     u_vau_draw_cvrg_weight1 weight1;\r
 \r
     quad.bits.threshold_quad = 0.125; /* 0.125 : default threshold for quad split */\r
-    cubic.bits.threshold_cubic = 1.0f; /* 0.125 : default threshold for cubic split */\r
+    cubic.bits.threshold_cubic = 0.125; /* 0.125 : default threshold for cubic split */\r
 \r
     weight0.bits.weight0 = 32; /* 32 default weithg for 8x */\r
     weight0.bits.weight1 = 32; /* 32 default weithg for 8x */\r
@@ -247,6 +247,19 @@ td_void vau_hal_apb_vector_draw_init(td_void)
     vau_hal_apb_vector_draw_init_sample();\r
 }\r
 \r
+td_void vau_hal_apb_set_cubic_threshold(td_float cubic_threshold)\r
+{\r
+    u_vau_draw_threshold_cubic cubic;\r
+\r
+    if (cubic_threshold != 0) {\r
+        cubic.bits.threshold_cubic = cubic_threshold;\r
+        uapi_reg_write(HAL_VAU_DRAW_THRESHOLD_CUBIC, cubic.u32);\r
+    } else {\r
+        cubic.bits.threshold_cubic = 0.125; /* 0.125 : default threshold for cubic split */\r
+        uapi_reg_write(HAL_VAU_DRAW_THRESHOLD_CUBIC, cubic.u32);\r
+    }\r
+}\r
+\r
 td_void vau_hal_apb_vector_cmddata_range(td_u32 type, td_u32 start, td_u32 end)\r
 {\r
     if (type == VAU_VECTOR_RANGE_CMD) {\r
index 5688975..4f50646 100644 (file)
@@ -32,7 +32,7 @@ td_void vau_hal_apb_print_reg(td_u32 base, td_u32 start, td_u32 end);
 td_void vau_hal_apb_print_all_reg(td_void);\r
 td_void vau_hal_apb_vector_cmddata_range(td_u32 type, td_u32 start, td_u32 end);\r
 td_void vau_hal_apb_sram_ctrl(td_bool lp_en);\r
-\r
+td_void vau_hal_apb_set_cubic_threshold(td_float cubic_threshold);\r
 #ifdef __cplusplus\r
 #if __cplusplus\r
 }\r
index 1a95670..ebde731 100644 (file)
@@ -17,7 +17,6 @@
 #define GRAPHIC_HARDWARE_CONFIG_H
 
 #include "memory_config_common.h"
-#include "product.h"
 #ifdef CONFIG_PSRAM_SUPPORT
 #include "psram.h"
 #endif
 #else
 #define MEM_POOL_UI_POOL_SIZE  PSRAM_GUI_MEM_POOL_SIZE
 #define MEM_POOL_UI_FONT       PSRAM_GUI_MEM_POOL_ADDR
-#define MEM_POOL_UI_FONT_SIZE  0x100000
+#define MEM_POOL_UI_FONT_SIZE  0x132000
 
 #ifdef SUPPORT_GPU_GMMU // FB(sram) is virtual addr, FB0:0x61240000 FB1:0x61a40000
 #define MEM_POOL_UI_OTHER      (MEM_POOL_UI_FONT + MEM_POOL_UI_FONT_SIZE)
index 8eb8684..821e28a 100644 (file)
Binary files a/code/sdk/middleware/services/gui/hal/display/brandy-native-js/libdisplay_gfx.a and b/code/sdk/middleware/services/gui/hal/display/brandy-native-js/libdisplay_gfx.a differ
index 9ad11a0..e2d1e49 100644 (file)
Binary files a/code/sdk/middleware/services/gui/hal/display/brandy-target1/libdisplay_gfx.a and b/code/sdk/middleware/services/gui/hal/display/brandy-target1/libdisplay_gfx.a differ
index 9c32117..1f6453e 100644 (file)
Binary files a/code/sdk/middleware/services/gui/hal/display/brandy-target3/libdisplay_gfx.a and b/code/sdk/middleware/services/gui/hal/display/brandy-target3/libdisplay_gfx.a differ
index dde8b6f..048b824 100644 (file)
Binary files a/code/sdk/middleware/services/gui/hal/display/brandy-target5/libdisplay_gfx.a and b/code/sdk/middleware/services/gui/hal/display/brandy-target5/libdisplay_gfx.a differ
index a8b77c9..904c630 100644 (file)
Binary files a/code/sdk/middleware/services/gui/hal/display/brandy-xts/libdisplay_gfx.a and b/code/sdk/middleware/services/gui/hal/display/brandy-xts/libdisplay_gfx.a differ
index c150837..8afdc3f 100644 (file)
@@ -226,7 +226,8 @@ static int32_t AllocMem(const AllocInfo *info, BufferHandle **handle)
     }
 
     uint8_t *pool = g_poolId;
-    if ((info->usage & HBM_USE_MEM_FONT) == HBM_USE_MEM_FONT) {
+    if (((info->usage & HBM_USE_MEM_FONT) == HBM_USE_MEM_FONT) ||
+        ((info->usage & HBM_USE_MEM_PATH) == HBM_USE_MEM_PATH)){
         pool = g_fontPoolId;
     }
 
@@ -268,7 +269,8 @@ static void FreeMem(BufferHandle *handle)
             }
 #endif
         }
-    } else if ((handle->usage & HBM_USE_MEM_FONT) == HBM_USE_MEM_FONT) {
+    } else if (((handle->usage & HBM_USE_MEM_FONT) == HBM_USE_MEM_FONT) ||
+        ((handle->usage & HBM_USE_MEM_PATH) == HBM_USE_MEM_PATH)){
         LosFreeMem(g_fontPoolId, handle->virAddr);
     } else {
         LosFreeMem(g_poolId, handle->virAddr);
index d629f41..213b424 100644 (file)
Binary files a/code/sdk/middleware/services/gui/uikit/brandy-native-js/libuikit_ext.a and b/code/sdk/middleware/services/gui/uikit/brandy-native-js/libuikit_ext.a differ
index 8ec26e3..fbd2d95 100644 (file)
Binary files a/code/sdk/middleware/services/gui/uikit/brandy-target3/libuikit_ext.a and b/code/sdk/middleware/services/gui/uikit/brandy-target3/libuikit_ext.a differ
index 3349124..66d9bc2 100644 (file)
Binary files a/code/sdk/middleware/services/gui/uikit/brandy-xts/libuikit_ext.a and b/code/sdk/middleware/services/gui/uikit/brandy-xts/libuikit_ext.a differ
index c94aa72..b637602 100644 (file)
@@ -64,6 +64,18 @@ public:
      */\r
     void SetRotateAngle(float angle);\r
 \r
+    /**\r
+     * @brief Obtains the component type.\r
+     *\r
+     * @return Returns the component type, as defined in {@link UIViewType}.\r
+     * @since 1.0\r
+     * @version 1.0\r
+     */\r
+    UIViewType GetViewType() const override\r
+    {\r
+        return UI_COVER_FLOW;\r
+    }\r
+\r
     /**\r
      * @brief Represents a listener for swipe of the coverflow view.\r
      */\r
index 37229c7..128e271 100644 (file)
@@ -208,7 +208,17 @@ public:
         return UI_CROSS_VIEW;
     }
 
+    /**
+     * @brief Set background blur radius. Default value is 10.
+     * @since 1.0
+     * @version 1.0
+     */
+    void SetBlurRadius(uint16_t radius) {
+        blurRadius_ = radius;
+    }
+
 private:
+    uint16_t blurRadius_ = 10;
     void UpdateCardPageIndex();
     static constexpr uint16_t INVALID_VIEW_INDEX = 0xff;
     bool loop_ = false;
index e483fa4..552f8ba 100644 (file)
@@ -25,6 +25,17 @@ public:
     UIIcosahedronView();\r
     virtual ~UIIcosahedronView();\r
 \r
+    /**\r
+     * @brief Obtains the view type.\r
+     * @return Returns the view type.\r
+     * @since 1.0\r
+     * @version 1.0\r
+     */\r
+    UIViewType GetViewType() const override\r
+    {\r
+        return UI_ICOSAHEDRON_VIEW;\r
+    }\r
+\r
     /**\r
      * @brief Set the edge length of the icosahedron.\r
      *\r
@@ -53,11 +64,34 @@ public:
      */\r
     bool RotatePlanes(int16_t angle, const Vector3<float>& pivotStart, const Vector3<float>& pivotEnd);\r
 \r
-    UIViewType GetViewType() const override\r
+    /**\r
+     * @brief Set default Image,the default picture will be used if less than 20 faces are set\r
+     * @param src Pointer to a ImageInfo struct, which is the source img for kaleidoscope img.\r
+     *  the size of img must match the size of screen.\r
+     */\r
+    void SetDefaultImage(ImageInfo* src)\r
     {\r
-        return UI_ICOSAHEDRON_VIEW;\r
+        defaultSrc_ = src;\r
     }\r
 \r
+    /**\r
+     * @brief set luminance compensation factor, adjust brightness.\r
+     *\r
+     * @param value Indicates luminance compensation factor.\r
+     *  Multiple of the original base compensation setting.\r
+     */\r
+    void SetLuminanceFactor(float value)\r
+    {\r
+        luminanceFactor_ = value;\r
+    }\r
+    /**\r
+     * @brief Draws this image view.\r
+     *\r
+     * @param invalidatedArea Indicates the area to draw.\r
+     * @since 1.0\r
+     * @version 1.0\r
+     */\r
+    void OnDraw(BufferInfo& gfxDstBuffer, const Rect& invalidatedArea) override;\r
 protected:\r
     bool OnDragStartEvent(const DragEvent& event);\r
     bool OnDragEvent(const DragEvent& event);\r
@@ -108,6 +142,10 @@ private:
         Vector3<float> rotateEnd_;\r
     };\r
     Matrix4<float> CalculateRotateMatrix(TriangularPlane dst);\r
+    uint8_t GetCurrentPlaneOpt(Vector4<float> normal);\r
+\r
+    void AdjustScaleAndTranslate(Vector3<float>& scale,\r
+        Vector3<int16_t>& translate, int16_t widgetWidth, int16_t widgetHeight);\r
     Point startPoint_;\r
     uint16_t sideLen_;\r
 \r
@@ -120,6 +158,8 @@ private:
     Animator inertiaAnimator_;\r
     inertiaAnimatorCallback inertiaCallback_;\r
     float lastAngle_;\r
+    ImageInfo* defaultSrc_;\r
+    float luminanceFactor_;\r
 };\r
 } // namespace OHOS\r
 #endif  // UI_ICOSAHEDRON_H
\ No newline at end of file
index 0e6b10e..4fdf21b 100644 (file)
@@ -54,6 +54,7 @@ public:
      * @version 1.0
      */
     UILabelButtonExt() {}
+
     /**
      * @brief A destructor used to delete the <b>UILabelButtonExt</b> instance.
      *
@@ -61,7 +62,18 @@ public:
      * @version 1.0
      */
     ~UILabelButtonExt() override {}
-
+ 
+     /**
+     * @brief Obtains the view type.
+     * @return Returns the view type.
+     * @since 1.0
+     * @version 1.0
+     */
+    UIViewType GetViewType() const override
+    {
+        return UI_LABEL_BUTTON_EXT;
+    }
+ 
     /**
      * @brief Set the text id
      *
index 9d9d242..12a4b7e 100644 (file)
@@ -62,6 +62,16 @@ public:
      */
     ~UILabelExt() override {}
 
+    /**
+     * @brief Obtains the view type.
+     * @return Returns the view type.
+     * @since 1.0
+     * @version 1.0
+     */
+    UIViewType GetViewType() const override
+    {
+        return UI_LABEL_EXT;
+    }
     /**
      * @brief Set the text id
      *
@@ -74,6 +84,7 @@ public:
      */
     void ForceResetText() override;
 
+    void SetTextTransformMap(TransformMap& transMap);
 protected:
     void InitLabelText() override;
 };
index b347818..d4279de 100644 (file)
@@ -185,7 +185,7 @@ private:
     bool isStopped_ = true;
     bool isLayerInit_ : 1;
     uint8_t flushCount_;
-    LiteSurface* surface_ = nullptr;
+    std::shared_ptr<LiteSurface> surface_ = nullptr;
     SurfaceBuffer* lastFlushedBuffer_ = nullptr;
     SurfaceBuffer* currentBuffer_ = nullptr;
     GraphicMutex lock_;
index 5ab2c07..9fc8377 100644 (file)
@@ -35,9 +35,9 @@
 #ifndef GRAPHIC_LITE_UI_MENU_ITEM_H\r
 #define GRAPHIC_LITE_UI_MENU_ITEM_H\r
 #include "graphic_config.h"\r
-#include "components/ui_button.h"\r
+#include "components/ui_view_group.h"\r
+#include "components/ui_label_ext.h"\r
 #include "components/ui_image_view.h"\r
-#include "common/text.h"\r
 \r
 namespace OHOS {\r
 /**\r
@@ -46,7 +46,7 @@ namespace OHOS {
  * @since 1.0\r
  * @version 1.0\r
  */\r
-class UIMenuItem : public UIButton {\r
+class UIMenuItem : public UIViewGroup {\r
 public:\r
     UIMenuItem(const UIMenuItem &) = delete;\r
     UIMenuItem &operator=(const UIMenuItem &) = delete;\r
@@ -113,8 +113,9 @@ public:
      */\r
     void SetText(const char* text)\r
     {\r
-        InitText();\r
-        text_->SetText(text);\r
+        InitUILabelExt();\r
+        label_->SetText(text);\r
+        ReMeasure();\r
     }\r
     /**\r
      * @brief Sets the alignment mode for this text.\r
@@ -125,8 +126,8 @@ public:
      */\r
     void SetAlign(UITextLanguageAlignment align)\r
     {\r
-        InitText();\r
-        text_->SetAlign(align, TEXT_ALIGNMENT_CENTER);\r
+        InitUILabelExt();\r
+        label_->SetAlign(align, TEXT_ALIGNMENT_CENTER);\r
     }\r
 \r
     /**\r
@@ -138,8 +139,8 @@ public:
      */\r
     void SetDirect(UITextLanguageDirect direct)\r
     {\r
-        InitText();\r
-        text_->SetDirect(direct);\r
+        InitUILabelExt();\r
+        label_->SetDirect(direct);\r
     }\r
 \r
     /**\r
@@ -151,7 +152,8 @@ public:
      */\r
     void SetLabelStyle(Style& labelStyle)\r
     {\r
-        textStyle_ = labelStyle;\r
+        InitUILabelExt();\r
+        label_->SetStyle(labelStyle);\r
     }\r
 \r
     /**\r
@@ -164,7 +166,8 @@ public:
      */\r
     void SetLabelStyle(uint8_t key, int64_t value)\r
     {\r
-        textStyle_.SetStyle(key, value);\r
+        InitUILabelExt();\r
+        label_->SetStyle(key, value);\r
     }\r
 \r
     /**\r
@@ -176,7 +179,8 @@ public:
      */\r
     void SetTextColor(ColorType color)\r
     {\r
-        textStyle_.textColor_ = color;\r
+        InitUILabelExt();\r
+        label_->SetTextColor(color);\r
     }\r
 \r
     /**\r
@@ -189,8 +193,8 @@ public:
      */\r
     void SetFont(const char* name, uint8_t size)\r
     {\r
-        InitText();\r
-        text_->SetFont(name, size);\r
+        InitUILabelExt();\r
+        label_->SetFont(name, size);\r
     }\r
 \r
     /**\r
@@ -202,27 +206,35 @@ public:
      */\r
     void SetFontId(uint8_t fontId)\r
     {\r
-        InitText();\r
-        text_->SetFontId(fontId);\r
+        InitUILabelExt();\r
+        label_->SetFontId(fontId);\r
     }\r
 \r
     /**\r
-     * @brief Init text.\r
+     * @brief Sets the line break mode for this text.\r
      *\r
+     * @param lineBreakMode Indicates the line break mode to set.\r
      * @since 1.0\r
      * @version 1.0\r
      */\r
-    void InitText()\r
+    void SetLineBreakMode(const uint8_t lineBreakMode)\r
     {\r
-        if (text_ == nullptr) {\r
-            text_ = new Text();\r
-            if (text_ == nullptr) {\r
-                return;\r
-            }\r
-            text_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
-            UpdateRect();\r
-            SetScaleCenter();\r
-        }\r
+        labelLineBreakMode_ = lineBreakMode;\r
+        needRefresh_ = true;\r
+    }\r
+\r
+    /**\r
+     * @brief Set the text id.\r
+     *\r
+     * @param textId Indicates text id.\r
+     * @since 1.0\r
+     * @version 1.0\r
+     */\r
+    void SetTextId(uint16_t textId)\r
+    {\r
+        InitUILabelExt();\r
+        label_->SetTextId(textId);\r
+        ReMeasure();\r
     }\r
 \r
     /**\r
@@ -248,8 +260,7 @@ public:
     void SetImgOffset(int16_t offset)\r
     {\r
         imgOffset_ = offset;\r
-        UpdateRect();\r
-        SetScaleCenter();\r
+        needRefresh_ = true;\r
     }\r
 \r
     /**\r
@@ -262,8 +273,7 @@ public:
     void SetTextOffset(int16_t offset)\r
     {\r
         textOffset_ = offset;\r
-        UpdateRect();\r
-        SetScaleCenter();\r
+        needRefresh_ = true;\r
     }\r
 \r
     /**\r
@@ -275,6 +285,7 @@ public:
     void SetScaleAlignMode(ScaleAlignMode mode)\r
     {\r
         transAlignMode_ = mode;\r
+        needRefresh_ = true;\r
     }\r
 \r
     /**\r
@@ -290,25 +301,26 @@ public:
 \r
     void ReMeasure() override;\r
     void OnDraw(BufferInfo& gfxDstBuffer, const Rect& invalidatedArea) override;\r
-\r
     void DumpImgInfo() override;\r
 \r
 private:\r
-    UIImageView* image_ = nullptr;\r
-    Style textStyle_;\r
-    Rect textRect_;\r
-    Rect imgRect_;\r
+    void InitUILabelExt();\r
+    void InitUIImageView();\r
+    void SetScaleCenter();\r
+\r
+    UIImageView* image_;\r
+    UILabelExt* label_;\r
+    Rect textOrigRect_;\r
+    Rect imgOrigRect_;\r
+    uint8_t labelLineBreakMode_;\r
+    bool needRefresh_;\r
     int16_t imgOffset_ = 0;\r
     int16_t textOffset_ = 20; // 20: default text offset.\r
-    Text* text_ = nullptr;\r
     Vector2<float> textScaleCenter_ = {0.0, 0.0};\r
     Vector2<float> imgScaleCenter_ = {0.0, 0.0};\r
     Vector2<float> itemScaleCenter_ = {0.0, 0.0};\r
     ScaleAlignMode transAlignMode_ = ScaleAlignMode::ALIGN_ITEM_CENTER;\r
     UIImageView::ImageResizeMode resizeMode_ = UIImageView::CONTAIN;\r
-    void UpdateRect();\r
-    void SetScaleCenter();\r
-    void UpdateTransformMap();\r
 };\r
 }\r
 #endif // GRAPHIC_LITE_UI_MENU_ITEM_H\r
index 24465f6..f5b6c08 100644 (file)
@@ -32,108 +32,133 @@ public:
     virtual ~UIRollerView() override;
 
     /**
-    * @brief  Set item size, which is the size of image in DisplayMode.
-    */
+     * @brief  Set item size, which is the size of image in DisplayMode.
+     */
     void SetItemSize(uint16_t width, uint16_t height);
 
     /**
-    * @brief  Set item padding.
-    */
+     * @brief  Set item padding.
+     */
     void SetItemPadding(uint16_t padding);
 
     /**
-    * @brief  Set mirror img opacity.
-    */
+     * @brief  Set mirror img opacity.
+     */
     void SetMirrorOpacity(uint8_t opa);
 
     /**
-    * @brief  Set sensitivity factor.
-    *         Drag distance will be converted to angle, and will multiply by this factor.
-    */
+     * @brief  Set sensitivity factor.
+     *         Drag distance will be converted to angle, and will multiply by this factor.
+     */
     void SetSensitivityFactor(float sensitivity);
 
     /**
-    * @brief  Get sensitivity factor. Default value is 1.0.
-    */
+     * @brief  Get sensitivity factor. Default value is 1.0.
+     */
     float GetSensitivityFactor();
 
     /**
-    * @brief  Add an item.
-    */
-    void AddItem(std::string name, const ImageInfo* src);
+     * @brief  Add an item.
+     */
+    bool AddItem(std::string name, const ImageInfo* src);
 
     /**
-    * @brief  Remove an item.
-    */
+     * @brief  Remove an item.
+     */
     void RemoveItem(std::string name);
 
     /**
-    * @brief  Clear all items.
-    */
+     * @brief  Clear all items.
+     */
     void ClearAll();
 
     /**
-    * @brief  Get current item name.
-    */
+     * @brief  Get current item name.
+     */
     std::string GetCurrentItemName();
 
     /**
-    * @brief  Get current item, which contains 2 imgs.
-    */
+     * @brief  Get current item, which contains 2 imgs.
+     */
     UIViewGroup* GetCurrentItem();
 
     /**
-    * @brief  Set current item.
-    */
+     * @brief  Set current item.
+     */
     void SetCurrentItem(std::string name, bool enableAnimator = false);
 
     /**
-    * @brief  Set current mode, choose from [DISPLAY, COVER].
-    */
+     * @brief  Set current mode, choose from [DISPLAY, COVER].
+     */
     void SetMode(RollerViewMode mode, bool enableAnimator = false);
 
     /**
-    * @brief  Mode change listener.
-    */
+     * @brief  Mode change listener.
+     */
     class OnModeChangeListener : public HeapBase {
     public:
         /**
-        * @brief  Called when RollerViewMode is changed.
-        */
+         * @brief  Called when RollerViewMode is changed.
+         */
         virtual void OnModeChange(UIRollerView* view, RollerViewMode targetMode) = 0;
         virtual ~OnModeChangeListener() {}
     };
 
     /**
-    * @brief  Get OnModeChangeListener.
-    */
+     * @brief  Get OnModeChangeListener.
+     */
     OnModeChangeListener*& GetOnModeChangeListener()
     {
         return onModeChangeListener_;
     }
 
     /**
-    * @brief  Set OnModeChangeListener.
-    */
+     * @brief  Set OnModeChangeListener.
+     */
     void SetOnModeChangeListener(OnModeChangeListener* onModeChangeListener)
     {
         onModeChangeListener_ = onModeChangeListener;
     }
 
     /**
-    * @brief  Get current mode.
-    */
+     * @brief  Scroll listener.
+     */
+    class OnScrollListener : public HeapBase {
+    public:
+        virtual void OnScroll(UIRollerView* roller, std::string currentItemName, float currentItemAngle) = 0;
+        virtual ~OnScrollListener() {}
+    };
+
+    /**
+     * @brief  Set OnScrollListener.
+     */
+    void SetOnScrollListener(OnScrollListener* onScrollListener)
+    {
+        onScrollListener_ = onScrollListener;
+    }
+
+    /**
+     * @brief  Get GetOnScrollListener.
+     */
+    OnScrollListener*& GetOnScrollListener()
+    {
+        return onScrollListener_;
+    }
+
+    /**
+     * @brief  Get current mode.
+     */
     RollerViewMode GetMode();
 
     /**
-    * @brief  Set camera distance. If not set, default distance is 1000.
-    */
+     * @brief  Set camera distance. If not set, default distance is 1000.
+     */
     void SetCamDistance(int16_t distance);
 
     /**
-    * @brief  Set absolute y coordinate of camera.
-              Default value is GetY() - GetHeight() / 3.
-    */
+     * @brief  Set absolute y coordinate of camera.
+     *         Default value is GetY() - GetHeight() / 3.
+     */
     void SetCamY(int16_t y);
 
     UIViewType GetViewType() const override
@@ -254,7 +279,8 @@ private:
     static constexpr uint8_t MIN_TRANSITION_TIMES = 5;
     /* calculate mode transition animator period: scale offset / TRANSITION_COEFFICIENT. */
     static constexpr float TRANSITION_COEFFICIENT = 0.2;
-    OnModeChangeListener* onModeChangeListener_;
+    OnModeChangeListener* onModeChangeListener_ = nullptr;
+    OnScrollListener* onScrollListener_ = nullptr;
     float ConvertDistanceToAngle(int16_t distance);
     bool IsInCurrentItemRange(float angle);
     void InitImg(UIView* img);
index eaaf481..ae77eda 100644 (file)
@@ -74,6 +74,7 @@ struct MemRecord {
 struct MemAllocInfo {
     uintptr_t address;
     int32_t size;
+    int16_t count;
     struct MemAllocInfo* next;
 };
 
@@ -129,6 +130,14 @@ public:
      */
     void MemCheckInit();
 
+    void EnableLeakCheck(bool enable);
+
+    void Crash(int16_t cnt, int32_t sz)
+    {
+        crashCnt_ = cnt;
+        leakSize_ = sz;
+    }
+
 #ifndef VERSION_IOT
     void CollectMemory(uint32_t delayTime);
     void SaveRecordInfo();
@@ -155,6 +164,11 @@ private:
     int32_t delayTime_ = 0;
     ThreadId recordThreadId = nullptr;
     int32_t totalSize = 0;
+    bool enableLeakCheck_ = false;
+    MemAllocInfo *leakHead_ = nullptr;
+    int16_t crashCnt_ = -1;
+    int16_t leakCount_ = 0;
+    int32_t leakSize_ = 0;
 };
 } // namespace OHOS
 
index f6da293..99d7182 100644 (file)
@@ -138,6 +138,7 @@ void UIInputMethod::Input(UI_KEYCODE key)
     } else {
         DealNormalKey(key);
     }
+    RefreshUi();
 }
 
 void UIInputMethod::InputPinyin(UI_KEYCODE key)
@@ -176,6 +177,7 @@ void UIInputMethod::InputPinyin(UI_KEYCODE key)
             }
             break;
     }
+    RefreshUi();
 }
 
 void UIInputMethod::ShowHanziPageList()
@@ -186,6 +188,7 @@ void UIInputMethod::ShowHanziPageList()
     if (pinyinPreview_->GetText() != nullptr && strlen(pinyinPreview_->GetText()) != 0) {
         hanziList_->SetVisible(true);
     }
+    RefreshUi();
 }
 
 void UIInputMethod::HideHanziPageList()
@@ -237,6 +240,7 @@ bool UIInputMethod::OnClick(UIView& view, const ClickEvent& event)
     previeBox_->InsertHanzi(u8hanzi);
     HideHanziPageList();
     HidePinyinPreview();
+    RefreshUi();
     return true;
 }
 
@@ -336,6 +340,7 @@ void UIInputMethod::SetupHanziCandidate()
     hanziList_->SetIntercept(false);
     hanziList_->SetAdapter(hanziAdapter_);
     hanziList_->SetScrollStateListener(this);
+    hanziList_->SetOnDragListener(this);
     hanziList_->SetVisible(false);
     inputMethod_->Add(hanziList_);
 }
index fcee553..e353722 100644 (file)
@@ -35,7 +35,7 @@ namespace OHOS {
 static constexpr int16_t YUV_WIDTH_ALIGNMENT = 128;\r
 UILiteSurfaceView::UILiteSurfaceView() : isLayerInit_(false), flushCount_(0)\r
 {\r
-    surface_ = new LiteSurface();\r
+    surface_ = std::make_shared<LiteSurface>();\r
     if (surface_ == nullptr) {\r
         GRAPHIC_LOGE("new LiteSurface failed\n");\r
         return;\r
@@ -65,15 +65,15 @@ UILiteSurfaceView::~UILiteSurfaceView()
         LowPowerManager::GetInstance()->PowerUnLock();\r
         });\r
 \r
-    if (surface_ != nullptr) {\r
-        delete surface_;\r
-        surface_ = nullptr;\r
+    if (preView_ != nullptr) {\r
+        delete preView_;\r
+        preView_ = nullptr;\r
     }\r
 }\r
 \r
 Surface* UILiteSurfaceView::GetSurface() const\r
 {\r
-    return surface_;\r
+    return surface_.get();\r
 }\r
 \r
 void UILiteSurfaceView::SetPosition(int16_t x, int16_t y, int16_t width, int16_t height)\r
@@ -161,11 +161,6 @@ void UILiteSurfaceView::SetSurfaceColorkey(ColorType color)
 \r
 void UILiteSurfaceView::InitLayer()\r
 {\r
-    if (surface_ == nullptr) {\r
-        GRAPHIC_LOGE("surface_ is null!\n");\r
-        return;\r
-    }\r
-\r
     Rect rect(GetRect());\r
     int16_t width = rect.GetWidth();\r
     int16_t height = rect.GetHeight();\r
@@ -191,7 +186,7 @@ void UILiteSurfaceView::InitLayer()
 #ifdef VERSION_IOT\r
 bool UILiteSurfaceView::GetBitmap(ImageInfo& bitmap)\r
 {\r
-    if (lastFlushedBuffer_ == nullptr) {\r
+    if (lastFlushedBuffer_ == nullptr || isStopped_) {\r
         UIView::GetBitmap(bitmap);\r
     } else {\r
         CscYuvBuf yuv = {0};\r
@@ -230,7 +225,7 @@ bool UILiteSurfaceView::GetBitmap(ImageInfo& bitmap)
             GRAPHIC_LOGE("UILiteSurfaceView::GetBitmap img alloc failed! size: 0x%x\n", bitmap.dataSize);\r
         }\r
     }\r
-    return true;
+    return true;\r
 }\r
 \r
 void UILiteSurfaceView::BlitBitmapToFb(BufferInfo& gfxDstBuffer, const Rect& invalidatedArea, ImageInfo& bitmap)\r
@@ -330,12 +325,12 @@ void UILiteSurfaceView::OnBufferAvailable()
         ++flushCount_;\r
     }\r
     lock_.Unlock();\r
-\r
+    std::weak_ptr<LiteSurface> ws = surface_;\r
     if (isLastFrame) {\r
         isStopped_ = true;\r
         GraphicService::GetInstance()->PostGraphicEvent(\r
-            [&] {\r
-                if (surface_ != nullptr) {\r
+            [&, ws] {\r
+                if (!ws.expired()) {\r
                     DisplayDev::GetInstance()->SetLayerColorKey(LAYER_0, false, 0);\r
                     LiteMGfxEngine::GetInstance()->ClearHardwareLayer();\r
                     LiteMGfxEngine::GetInstance()->EnableAsyncMode(true);\r
@@ -347,11 +342,13 @@ void UILiteSurfaceView::OnBufferAvailable()
     } else if (isStopped_) {\r
         isStopped_ = false;\r
         GraphicService::GetInstance()->PostGraphicEvent(\r
-            [&] {\r
-                LiteMGfxEngine::GetInstance()->EnableAsyncMode(false);\r
-                LiteMGfxEngine::GetInstance()->AddHardwareLayer(this);\r
-                DisplayDev::GetInstance()->SetLayerColorKey(LAYER_0, true, colorKey_.full);\r
-                InitLayer();\r
+            [&, ws] {\r
+                if (!ws.expired()) {\r
+                    LiteMGfxEngine::GetInstance()->EnableAsyncMode(false);\r
+                    LiteMGfxEngine::GetInstance()->AddHardwareLayer(this);\r
+                    DisplayDev::GetInstance()->SetLayerColorKey(LAYER_0, true, colorKey_.full);\r
+                    InitLayer();\r
+                }\r
             });\r
     }\r
 \r
index 37a8fc7..77679c6 100644 (file)
  */\r
 \r
 #include "components/ui_menu_item.h"\r
+#include "components/root_view.h"\r
 namespace OHOS {\r
 constexpr uint32_t IMG_TO_TEXT_GAP = 20; // 20: the gap between img and text\r
 \r
-UIMenuItem::UIMenuItem()\r
+UIMenuItem::UIMenuItem() : image_(nullptr), label_(nullptr),\r
+    labelLineBreakMode_(UILabel::LineBreakMode::LINE_BREAK_ELLIPSIS), needRefresh_(false)\r
 {\r
-    SetStyleForState(STYLE_BORDER_RADIUS, 0, UIButton::RELEASED);\r
-    SetStyleForState(STYLE_BORDER_RADIUS, 0, UIButton::PRESSED);\r
-    SetStyleForState(STYLE_BORDER_RADIUS, 0, UIButton::INACTIVE);\r
-    SetStyleForState(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT, UIButton::RELEASED);\r
-    SetStyleForState(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT, UIButton::PRESSED);\r
-    SetStyleForState(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT, UIButton::INACTIVE);\r
-    textStyle_ = StyleDefault::GetDefaultStyle();\r
 }\r
 \r
 UIMenuItem::~UIMenuItem()\r
 {\r
     if (image_ != nullptr) {\r
+        Remove(image_);\r
         delete image_;\r
         image_ = nullptr;\r
     }\r
 \r
-    if (text_ != nullptr) {\r
-        delete text_;\r
-        text_ = nullptr;\r
+    if (label_ != nullptr) {\r
+        Remove(label_);\r
+        delete label_;\r
+        label_ = nullptr;\r
     }\r
 }\r
 \r
 void UIMenuItem::SetScaleCenter()\r
 {\r
+    int16_t itemOrigX = GetContentRect().GetX();\r
     if (transAlignMode_ == ScaleAlignMode::ALIGN_TEXT_LEFT) {\r
-        textScaleCenter_ = Vector2<float>{0.0, textRect_.GetHeight() / 2.0f};\r
-        imgScaleCenter_ = Vector2<float>{textRect_.GetLeft() - imgRect_.GetLeft(), textRect_.GetHeight() / 2.0f};\r
-        itemScaleCenter_ = Vector2<float>{textRect_.GetLeft(), textRect_.GetHeight() / 2.0f};\r
+        textScaleCenter_ = Vector2<float>{0.0, textOrigRect_.GetHeight() / 2.0f};\r
+        imgScaleCenter_ = Vector2<float>{textOrigRect_.GetLeft() - imgOrigRect_.GetLeft(), textScaleCenter_.y_};\r
+        itemScaleCenter_ = Vector2<float>{textOrigRect_.GetLeft() - itemOrigX, textScaleCenter_.y_};\r
     } else if (transAlignMode_ == ScaleAlignMode::ALIGN_IMAGE_LEFT) {\r
-        textScaleCenter_ = Vector2<float>{imgRect_.GetLeft() - textRect_.GetLeft(), imgRect_.GetHeight() / 2.0f};\r
-        imgScaleCenter_ = Vector2<float>{0.0, imgRect_.GetHeight() / 2.0f};\r
-        itemScaleCenter_ = Vector2<float>{imgRect_.GetLeft(), imgRect_.GetHeight() / 2.0f};\r
+        imgScaleCenter_ = Vector2<float>{0.0, imgOrigRect_.GetHeight() / 2.0f};\r
+        textScaleCenter_ = Vector2<float>{imgOrigRect_.GetLeft() - textOrigRect_.GetLeft(), imgScaleCenter_.y_};\r
+        itemScaleCenter_ = Vector2<float>{imgOrigRect_.GetLeft() - itemOrigX, imgScaleCenter_.y_};\r
     } else if (transAlignMode_ == ScaleAlignMode::ALIGN_ITEM_CENTER) {\r
-        Rect rect = GetOrigRect();\r
-        itemScaleCenter_ = Vector2<float>{rect.GetX() + rect.GetWidth() / 2.0f, rect.GetHeight() / 2.0f};\r
-        textScaleCenter_ = Vector2<float>{itemScaleCenter_.x_ - textRect_.GetLeft(), rect.GetHeight() / 2.0f};\r
-        imgScaleCenter_ = Vector2<float>{itemScaleCenter_.x_ - imgRect_.GetLeft(), rect.GetHeight() / 2.0f};\r
+        itemScaleCenter_ = Vector2<float>{GetWidth() / 2.0f, GetHeight() / 2.0f};\r
+        textScaleCenter_ = Vector2<float>{itemOrigX + itemScaleCenter_.x_ - textOrigRect_.GetLeft(),\r
+            itemScaleCenter_.y_};\r
+        imgScaleCenter_ = Vector2<float>{itemOrigX + itemScaleCenter_.x_ - imgOrigRect_.GetLeft(),\r
+            itemScaleCenter_.y_};\r
     }\r
 }\r
 \r
-void UIMenuItem::UpdateRect()\r
+void UIMenuItem::ReMeasure()\r
 {\r
-    Rect rect = GetOrigRect();\r
+    Rect contentRect = GetContentRect();\r
+    if (needRefresh_) {\r
+        if (image_ != nullptr) {\r
+            image_->SetPosition(imgOffset_, 0, GetHeight(), GetHeight());\r
+        }\r
+        if (label_ != nullptr) {\r
+            if (image_ != nullptr) {\r
+                label_->SetPosition(image_->GetX() + image_->GetWidth() + textOffset_, 0,\r
+                    GetWidth() - image_->GetWidth(), GetHeight());\r
+            } else {\r
+                label_->SetPosition(textOffset_, 0, GetWidth(), GetHeight());\r
+            }\r
+            label_->SetLineBreakMode(labelLineBreakMode_);\r
+        }\r
+    }\r
+    needRefresh_ = false;\r
     if (image_ != nullptr) {\r
-        imgRect_ = Rect(rect.GetX(), rect.GetY(), rect.GetX() + rect.GetHeight(), rect.GetY() + rect.GetHeight());\r
-        imgRect_.SetX(rect.GetX() + imgOffset_);\r
-        image_->SetPosition(imgRect_.GetX(), imgRect_.GetY(), rect.GetHeight(), rect.GetHeight());\r
+        imgOrigRect_ = contentRect;\r
+        imgOrigRect_.SetX(contentRect.GetX() + imgOffset_);\r
+        imgOrigRect_.SetWidth(GetHeight());\r
     }\r
 \r
-    if (text_ != nullptr) {\r
-        textRect_ = rect;\r
-        textRect_.SetLeft(imgRect_.GetRight() + textOffset_);\r
-        text_->ReMeasureTextSize(textRect_, textStyle_);\r
+    if (label_ != nullptr) {\r
+        textOrigRect_ = contentRect;\r
+        textOrigRect_.SetLeft(imgOrigRect_.GetRight() + textOffset_);\r
     }\r
-}\r
 \r
-void UIMenuItem::UpdateTransformMap()\r
-{\r
+    SetScaleCenter();\r
+\r
     TransformMap transMap = GetTransformMap();\r
     if (image_ != nullptr) {\r
-        transMap.SetTransMapRect(imgRect_);\r
+        transMap.SetTransMapRect(imgOrigRect_);\r
         transMap.Scale(transMap.GetScaleCoef(), Vector3<float>{imgScaleCenter_.x_, imgScaleCenter_.y_, 0.0});\r
         image_->SetTransformMap(transMap);\r
     }\r
 \r
-    if (text_ != nullptr) {\r
+    if (label_ != nullptr) {\r
+        transMap.SetTransMapRect(textOrigRect_);\r
         transMap.Scale(transMap.GetScaleCoef(), Vector3<float>{textScaleCenter_.x_, textScaleCenter_.y_, 0.0});\r
-        transMap.SetCameraPosition(Vector2<float>{-textRect_.GetX(), -textRect_.GetY()});\r
-        transMap.SetTransMapRect(textRect_);\r
-        text_->SetTransformMap(transMap);\r
+        label_->SetTextTransformMap(transMap);\r
     }\r
 }\r
 \r
-void UIMenuItem::ReMeasure()\r
+void UIMenuItem::SetImageSrc(const char* imgSrc)\r
 {\r
-    UpdateRect();\r
-    UpdateTransformMap();\r
+    InitUIImageView();\r
+    image_->SetSrc(imgSrc);\r
+    ReMeasure();\r
 }\r
 \r
-void UIMenuItem::SetImageSrc(const char* imgSrc)\r
+void UIMenuItem::SetImageSrc(const ImageInfo* imgSrc)\r
 {\r
-    if (image_ == nullptr) {\r
-        image_ = new UIImageView();\r
-        if (image_ == nullptr) {\r
-            GRAPHIC_LOGE("new image_ failed");\r
-            return;\r
-        }\r
-        image_->SetResizeMode(resizeMode_);\r
-        image_->SetAutoEnable(false);\r
-    }\r
+    InitUIImageView();\r
     image_->SetSrc(imgSrc);\r
-    UpdateRect();\r
-    SetScaleCenter();\r
+    ReMeasure();\r
 }\r
 \r
-void UIMenuItem::SetImageSrc(const ImageInfo* imgSrc)\r
+void UIMenuItem::OnDraw(BufferInfo& gfxDstBuffer, const Rect& invalidatedArea)\r
+{\r
+    BaseGfxEngine::GetInstance()->DrawRect(gfxDstBuffer, GetRect(), invalidatedArea, *style_, opaScale_);\r
+}\r
+\r
+void UIMenuItem::InitUIImageView()\r
 {\r
     if (image_ == nullptr) {\r
         image_ = new UIImageView();\r
         if (image_ == nullptr) {\r
-            GRAPHIC_LOGE("new image_ failed");\r
+            GRAPHIC_LOGE("new UIImageView failed");\r
             return;\r
         }\r
         image_->SetResizeMode(resizeMode_);\r
         image_->SetAutoEnable(false);\r
+        Add(image_);\r
+        needRefresh_ = true;\r
     }\r
-    image_->SetSrc(imgSrc);\r
-    UpdateRect();\r
-    SetScaleCenter();\r
 }\r
 \r
-void UIMenuItem::OnDraw(BufferInfo& gfxDstBuffer, const Rect& invalidatedArea)\r
+void UIMenuItem::InitUILabelExt()\r
 {\r
-    BaseGfxEngine::GetInstance()->DrawRect(gfxDstBuffer, GetRect(), invalidatedArea, *style_, opaScale_);\r
-    if (text_ != nullptr) {\r
-        Rect rect;\r
-        rect.Intersect(invalidatedArea, textRect_);\r
-        if (rect.GetLeft() < 0) {\r
-            rect.SetLeft(0);\r
-        }\r
-        if (rect.GetTop() < 0) {\r
-            rect.SetTop(0);\r
+    if (label_ == nullptr) {\r
+        label_ = new UILabelExt();\r
+        if (label_ == nullptr) {\r
+            GRAPHIC_LOGE("new UILabelExt failed");\r
+            return;\r
         }\r
-\r
-        OpacityType opa = GetMixOpaScale();\r
-        uint16_t ellipsisIndex = text_->GetEllipsisIndex(textRect_, textStyle_);\r
-        text_->OnDraw(gfxDstBuffer, rect, rect, textRect_, 0, textStyle_, ellipsisIndex, opa);\r
-    }\r
-\r
-    if (image_ != nullptr) {\r
-        image_->OnDraw(gfxDstBuffer, invalidatedArea);\r
+        Add(label_);\r
+        needRefresh_ = true;\r
     }\r
 }\r
 \r
@@ -162,5 +159,4 @@ void UIMenuItem::DumpImgInfo()
     const ImageInfo* info = image_->GetImageInfo();\r
     PrintImgInfo(info);\r
 }\r
-\r
 } // namespace OHOS\r
index b2771f1..babd2f7 100644 (file)
@@ -77,6 +77,28 @@ void DumpMemoryCmd(int argc, char *argv[])
     MemCheck::GetInstance()->DumpMemInfo();
 }
 
+void LeakPanic(int argc, char *argv[])
+{
+    if (argc != 2) { // 2: param num
+        GRAPHIC_LOGE("param err.");
+        return;
+    }
+    int16_t cnt = 0;
+    int32_t sz = 0;
+    char* end = nullptr;
+    cnt = strtol(argv[0], &end, 0);
+    if (end == argv[0]) {
+        GRAPHIC_LOGE("first para is not a number.");
+        return;
+    }
+    sz = strtol(argv[1], &end, 0);
+    if (end == argv[1]) {
+        GRAPHIC_LOGE("second para is not a number.");
+        return;
+    }
+    MemCheck::GetInstance()->Crash(cnt, sz);
+}
+
 void DumpImgCmd(int argc, char *argv[])
 {
     ImageCacheManager::GetInstance().Dump();
@@ -499,6 +521,7 @@ struct DfxCmd g_dfxCmdList[] = {
     {"dumpmem", OHOS::DumpMemoryCmd},
     {"mem_monitor", OHOS::SetMemMonitorCmd},
     {"dumpimg", OHOS::DumpImgCmd},
+    {"leak_panic", OHOS::LeakPanic},
 #endif
 #if ENABLE_DEBUG
     {"inject_rotate", OHOS::InjectRotateEvent},
index 3cf98c7..fc79dc3 100644 (file)
@@ -33,7 +33,8 @@ namespace OHOS {
  * @brief Provides the functions related to UIInputMethod.
  */
 class UIInputMethod : public InputMethodManager::InputMethodListener,
-    public UIView::OnClickListener, public ListScrollListener {
+    public UIView::OnClickListener, public ListScrollListener,
+    public UIView::OnDragListener {
     class HanziAdapter : public AbstractAdapter {
     public:
         ~HanziAdapter() override {};
@@ -119,6 +120,19 @@ private:
     void DealDelKey();
     void DealPinyinDelKey();
 
+    bool OnDrag(UIView& view, const DragEvent& event) override
+    {
+        RefreshUi();
+        return false;
+    }
+
+    void RefreshUi()
+    {
+        if (inputMethod_ != nullptr) {
+            inputMethod_->Invalidate();
+        }
+    }
+
     UIViewGroup* inputMethod_ = nullptr;
     UITextPreviewBox* previeBox_ = nullptr;  // soft keyboard edit box
     UIEditText* edit_ = nullptr;         // user creat edit box
index 1bb58c9..87ba200 100644 (file)
@@ -60,10 +60,18 @@ void LiteInputDistributer::GetEventData(DeviceData& data, InputDevType type)
         if (IsShowPoint() && (deviceData_.timestamp != g_lastData.timestamp)) {
             DfxTPGetEvent();
         }
-        data.point.x = deviceData_.point.x;
-        data.point.y = deviceData_.point.y;
-        data.state = deviceData_.state;
-        data.timestamp = deviceData_.timestamp;
+        DeviceData curData;
+        if (!dataBuf_.IsEmpty()) {
+            curData = dataBuf_.Front();
+            dataBuf_.PopFront();
+        } else {
+            curData = deviceData_;
+        }
+        data.point.x = curData.point.x;
+        data.point.y = curData.point.y;
+        data.state = curData.state;
+        data.timestamp = curData.timestamp;
+
         eventLock_.Unlock();
         return;
     }
@@ -97,6 +105,10 @@ void LiteInputDistributer::SetEventData(const RawEvent& event)
         deviceData_.point.y = event.y;
         deviceData_.state = event.state;
         deviceData_.timestamp = event.timestamp;
+        dataBuf_.PushBack(deviceData_);
+        while (dataBuf_.Size() > BUFLEN) {
+            dataBuf_.PopFront();
+        }
         eventLock_.Unlock();
         return;
     }
index 6408577..cb1c434 100644 (file)
@@ -32,6 +32,9 @@
 #include "hal_tick.h"
 #include "securec.h"
 #include "hals/gralloc_engines.h"
+#ifdef __LITEOS__
+#include "los_exc.h"
+#endif
 
 namespace OHOS {
 using std::string;
@@ -93,11 +96,28 @@ void MemCheck::MemCheckInit()
     return;
 }
 
+void MemCheck::EnableLeakCheck(bool enable)
+{
+    enableLeakCheck_ = enable;
+    if (enableLeakCheck_) {
+        leakCount_ = 0;
+        leakHead_ = nullptr;
+    } else {
+        MemAllocInfo *info = leakHead_;
+        for (; info != nullptr; info = info->next) {
+            GRAPHIC_LOGE("leakcheck: [%d] addr %p size %d", info->count, info->address, info->size);
+        }
+        crashCnt_ = -1;
+        leakSize_ = 0;
+    }
+}
+
 int MemCheck::MemAdd(int size, uintptr_t address)
 {
     if (!initSuc) {
         return -1;
     }
+
     MemAllocInfo* allocNote = (MemAllocInfo*)malloc(sizeof(MemAllocInfo));
     if (allocNote == nullptr) {
         GRAPHIC_LOGE("MemAdd malloc failed\n");
@@ -106,9 +126,25 @@ int MemCheck::MemAdd(int size, uintptr_t address)
     allocNote->address = address;
     allocNote->size = size;
     allocNote->next = nullptr;
+    allocNote->count = -1;
     allocTail->next = allocNote;
     allocTail = allocNote;
     totalSize += allocNote->size;
+    if (enableLeakCheck_) {
+        leakCount_++;
+        allocNote->count = leakCount_;
+        if (leakHead_ == nullptr) {
+            leakHead_ = allocNote;
+        }
+        if (leakCount_ == crashCnt_) {
+            if (leakSize_ != allocNote->size) {
+                GRAPHIC_LOGE("size not right!");
+            }
+#ifdef __LITEOS__
+            LOS_Panic("mem leak here!\n");
+#endif
+        }
+    }
 
 #ifndef VERSION_IOT
     if (!isBeyondTime()) {
@@ -129,10 +165,13 @@ int MemCheck::MemDelete(uintptr_t address)
     if (!initSuc) {
         return -1;
     }
+
     int32_t currNodeSize = 0;
     MemAllocInfo* allocPtr = allocHead;
     while (allocPtr->next != nullptr) {
         if (allocPtr->next->address == address) {
+            MemAllocInfo *cur = allocPtr->next;
+            leakHead_ = (enableLeakCheck_ && (leakHead_ == cur)) ? cur->next : leakHead_;
             currNodeSize = allocPtr->next->size;
             totalSize -= currNodeSize;
             MemAllocInfo* tmpInfo = allocPtr->next;
index 2291781..e21c511 100644 (file)
@@ -147,8 +147,6 @@ void UITestCoverflow::UITestCoverflowView001()
         coverflow_->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());\r
         coverflow_->SetIntercept(true);\r
         coverflow_->SetThrowDrag(true);\r
-        coverflow_->SetSwipeACCLevel(150); // 150: set drag compensation distance\r
-        coverflow_->SetDragACCLevel(16); // 16: set drag time duration level\r
         for (uint8_t i = 0; i < COVERFLOW_PRELOAD_PAGE_NUM; i++) {\r
             ImageInfo* src = ImageCacheManager::GetInstance().LoadSingleRes(std::string(g_faceInfo[i].path));\r
             coverflow_->Add(g_faceInfo[i].name, src);\r
diff --git a/code/sdk/middleware/services/gui/uikit/sample/uitest/components/ui_test_list_ext/menu_item_adapter.cpp b/code/sdk/middleware/services/gui/uikit/sample/uitest/components/ui_test_list_ext/menu_item_adapter.cpp
new file mode 100644 (file)
index 0000000..f8eb0d9
--- /dev/null
@@ -0,0 +1,165 @@
+/*
+ * Copyright (c) 2022 CompanyNameMagicTag.
+ * 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 "menu_item_adapter.h"
+#include "components/ui_menu_item.h"
+#include "common/image_cache_manager.h"
+#include "graphic_config.h"
+#include "ui_test_list_ext.h"
+#include "securec.h"
+#include "ui_test_list_fps/ui_list_fps_res.h"
+
+namespace OHOS {
+uint16_t MenuItemAdapter::GetCount()
+{
+    return nodeList_.Size();
+}
+
+void MenuItemAdapter::ClearText()
+{
+    ListNode<ItemNode*>* node = nodeList_.Begin();
+    while (node != nodeList_.End()) {
+        if (node->data_) {
+            if (node->data_->txt) {
+                UIFree(reinterpret_cast<void*>(node->data_->txt));
+                node->data_->txt = nullptr;
+            }
+            UIFree(reinterpret_cast<void*>(node->data_));
+            node->data_ = nullptr;
+        }
+        node = node->next_;
+    }
+    nodeList_.Clear();
+    ImageCacheManager::GetInstance().UnloadAllInMultiRes(LIST_FPS);
+}
+
+void MenuItemAdapter::SetFont(const char* name, uint8_t size)
+{
+    if (name == nullptr) {
+        return;
+    }
+
+    if (fontName_ != nullptr) {
+        if (strcmp(fontName_, name) == 0) {
+            fontSize_ = size;
+            return;
+        } else {
+            UIFree(fontName_);
+            fontName_ = nullptr;
+        }
+    }
+
+    uint32_t nameLen = static_cast<uint32_t>(strlen(name));
+    if ((nameLen == 0) || (nameLen > MAX_TEXT_LENGTH)) {
+        return;
+    }
+
+    fontName_ = static_cast<char*>(UIMalloc(nameLen + 1));
+    if (fontName_ == nullptr) {
+        return;
+    }
+    if (memcpy_s(fontName_, nameLen, name, nameLen) != EOK) {
+        UIFree(fontName_);
+        fontName_ = nullptr;
+        return;
+    }
+    fontName_[nameLen] = '\0';
+    fontSize_ = size;
+}
+
+void MenuItemAdapter::FreeNode(ItemNode* node)
+{
+    if (node != nullptr) {
+        if (node->txt) {
+            UIFree(reinterpret_cast<void*>(node->txt));
+            node->txt = nullptr;
+        }
+        UIFree(reinterpret_cast<void*>(node));
+        node = nullptr;
+    }
+}
+
+void MenuItemAdapter::SetData(const List<ItemNode*>* data)
+{
+    if (data == nullptr) {
+        return;
+    }
+    if (!nodeList_.IsEmpty()) {
+        ClearText();
+    }
+    ListNode<ItemNode*>* node = data->Begin();
+    while (node != data->End()) {
+        ItemNode* tmpNode = static_cast<ItemNode *>(UIMalloc(sizeof(ItemNode)));
+        if (tmpNode == nullptr) {
+            return;
+        }
+
+        tmpNode->resId = node->data_->resId;
+        uint32_t len =  strlen(node->data_->txt);
+        tmpNode->txt = static_cast<char*>(UIMalloc(len + 1));
+        if (tmpNode->txt == nullptr) {
+            FreeNode(tmpNode);
+            return;
+        }
+        if (memcpy_s(tmpNode->txt, len + 1, node->data_->txt, len) != EOK) {
+            FreeNode(tmpNode);
+            return;
+        }
+        tmpNode->txt[len] = '\0';
+        tmpNode->imgInfo = nullptr;
+
+        nodeList_.PushBack(tmpNode);
+        node = node->next_;
+    }
+}
+
+UIView* MenuItemAdapter::GetView(UIView* inView, int16_t index)
+{
+    if (nodeList_.IsEmpty() || index > nodeList_.Size() - 1 || index < 0) {
+        return nullptr;
+    }
+
+    ListNode<ItemNode*>* node = nodeList_.Begin();
+    for (uint16_t i = 0; i < index; i++) {
+        node = node->next_;
+    }
+    UIMenuItem* item = nullptr;
+    if (inView == nullptr) {
+        item = new UIMenuItem();
+        if (item == nullptr) {
+            return nullptr;
+        }
+        item->Resize(width_, height_);
+        item->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);
+        item->SetImgResizeMode(UIImageView::ImageResizeMode::CENTER);
+        item->SetFont(fontName_, fontSize_);
+        item->SetAlign(TEXT_ALIGNMENT_CENTER);
+        item->SetScaleAlignMode(UIMenuItem::ScaleAlignMode::ALIGN_ITEM_CENTER);
+        item->SetLineBreakMode(UILabel::LineBreakMode::LINE_BREAK_MARQUEE);
+    } else {
+        item = static_cast<UIMenuItem*>(inView);
+    }
+
+    if (item != nullptr) {
+        if (node->data_->imgInfo == nullptr) {
+            node->data_->imgInfo = ImageCacheManager::GetInstance().LoadOneInMultiRes(node->data_->resId, LIST_FPS);
+        }
+        item->SetImageSrc(node->data_->imgInfo);
+        item->SetText(node->data_->txt);
+        item->SetViewIndex(index);
+    }
+    return item;
+}
+} // namespace OHOS
diff --git a/code/sdk/middleware/services/gui/uikit/sample/uitest/components/ui_test_list_ext/menu_item_adapter.h b/code/sdk/middleware/services/gui/uikit/sample/uitest/components/ui_test_list_ext/menu_item_adapter.h
new file mode 100644 (file)
index 0000000..f80c5cb
--- /dev/null
@@ -0,0 +1,75 @@
+/*
+ * Copyright (c) 2022 CompanyNameMagicTag.
+ * 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 MENU_ITEM_ADAPTER_H
+#define MENU_ITEM_ADAPTER_H
+#include "menu_item_adapter.h"
+#include "components/abstract_adapter.h"
+#include "components/ui_image_view.h"
+#include "gfx_utils/list.h"
+#include "ui_test_list_fps/image_text_adapter.h"
+
+namespace OHOS {
+class MenuItemAdapter : public AbstractAdapter {
+public:
+    MenuItemAdapter() : imageWidth_(0), imageHeight_(0), width_(0), height_(0), fontName_(nullptr), fontSize_(0) {}
+
+    ~MenuItemAdapter() override
+    {
+        if (fontName_ != nullptr) {
+            UIFree(fontName_);
+            fontName_ = nullptr;
+        }
+        ClearText();
+    }
+
+    void SetWidth(int16_t width)
+    {
+        width_ = width;
+    }
+
+    void SetHeight(int16_t height)
+    {
+        height_ = height;
+    }
+
+    void SetImageWidth(int16_t width)
+    {
+        imageWidth_ = width;
+    }
+
+    void SetImageHeight(int16_t height)
+    {
+        imageHeight_ = height;
+    }
+
+    UIView* GetView(UIView* inView, int16_t index) override;
+    uint16_t GetCount() override;
+    void SetData(const List<ItemNode*>* data);
+    void SetFont(const char* name, uint8_t size);
+
+private:
+    void ClearText(void);
+    void FreeNode(ItemNode* node);
+    List<ItemNode*> nodeList_;
+    uint16_t imageWidth_;
+    uint16_t imageHeight_;
+    uint16_t width_;
+    uint16_t height_;
+    char* fontName_;
+    uint8_t fontSize_;
+};
+} // namespace OHOS
+#endif // IMAGE_TEXT_ADAPTER_H
diff --git a/code/sdk/middleware/services/gui/uikit/sample/uitest/components/ui_test_list_ext/ui_test_list_ext.cpp b/code/sdk/middleware/services/gui/uikit/sample/uitest/components/ui_test_list_ext/ui_test_list_ext.cpp
new file mode 100644 (file)
index 0000000..873dae3
--- /dev/null
@@ -0,0 +1,171 @@
+/*
+ * Copyright (c) 2022 CompanyNameMagicTag.
+ * 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 "ui_test_list_ext.h"
+#include "animator/animator_manager.h"
+#include "common/screen.h"
+#include "components/ui_label.h"
+#include "components/ui_label_button.h"
+#include "components/ui_image_view.h"
+#include "core/render_manager.h"
+#include "graphic_config.h"
+#include "securec.h"
+#include "ui_test_list_fps/ui_list_fps_res.h"
+
+namespace OHOS {
+static const int16_t LIST_WIDTH = 454;
+static const int16_t LIST_HEIGHT = 454;
+static const int16_t SCROLL_STEP = 10;
+static const uint16_t ITEM_WIDTH = 400;
+static const uint16_t ITEM_HEIGHT = 100;
+static const uint16_t IMAGE_WIDTH = 100;
+static const uint16_t LIST_FONT_SIZE = 40;
+static int16_t g_scrollStep = 10;
+static int16_t g_scrollDistance = 0;
+static int16_t g_scrollMax = 0;
+
+static ItemNode g_itemNode[] = {
+    {APPLIST_ALARM, "闹钟"},
+    {BLUETOOTH_TITLE, "蓝牙"},
+    {APPLIST_CALLER_IMAGE, "通话记录"},
+    {APPLIST_COMPASS_IMAGE, "指南针"},
+    {APPLIST_SETTING, "设置"},
+    {APPLIST_SPO2, "血氧饱和度"},
+    {APPLIST_VOCASSIST_IMAGE, "语音助手"},
+    {APPLIST_ALARM, "长文本滚动测试ABCD"},
+    {BLUETOOTH_TITLE, "蓝牙"},
+    {APPLIST_CALLER_IMAGE, "通话记录"},
+    {APPLIST_COMPASS_IMAGE, "指南针"},
+    {APPLIST_SETTING, "设置"},
+    {APPLIST_SPO2, "血氧饱和度"},
+    {APPLIST_VOCASSIST_IMAGE, "语音助手"}
+};
+
+void UITestListExt::SetUp()
+{
+    if (data_ == nullptr) {
+        data_ = new List<ItemNode*>();
+        if (data_ == nullptr) {
+            return;
+        }
+        for (uint8_t i = 0; i < (sizeof(g_itemNode) / sizeof(ItemNode)); ++i) {
+            data_->PushBack(&g_itemNode[i]);
+        }
+    }
+}
+
+void UITestListExt::TearDown()
+{
+    if (animator_ != nullptr) {
+        animator_->Stop();
+        delete animator_;
+        animator_ = nullptr;
+    }
+
+    if (list_ != nullptr) {
+        list_->SetLoopState(false);
+        list_->SetAdapter(nullptr);
+        list_->RefreshList();
+        delete list_;
+        list_ = nullptr;
+    }
+
+    if (data_ != nullptr) {
+        data_->Clear();
+        delete data_;
+        data_ = nullptr;
+    }
+
+    if (adapter_ != nullptr) {
+        delete adapter_;
+        adapter_ = nullptr;
+    }
+}
+
+
+bool UITestListExt::TestList::OnPressEvent(const PressEvent& event)
+{
+    if (animator_ != nullptr) {
+        animator_->Stop();
+    }
+    return UIList::OnPressEvent(event);
+}
+
+bool UITestListExt::TestList::OnLongPressEvent(const LongPressEvent& event)
+{
+    if (animator_ != nullptr) {
+        animator_->Start();
+    }
+    return true;
+}
+
+void UITestListExt::TestList::SetAnimator(Animator* animator)
+{
+    animator_ = animator;
+}
+
+void UITestListExt::ListExtFpsCallback::Callback(UIView* view)
+{
+    UIList* list = static_cast<UIList*>(view);
+    if (list != nullptr) {
+        if (g_scrollDistance <= 0) {
+            g_scrollStep = -1 * g_scrollStep;
+            g_scrollDistance = g_scrollMax;
+        }
+        list->ScrollBy(g_scrollStep);
+        g_scrollDistance -= abs(g_scrollStep);
+    }
+}
+
+UIView* UITestListExt::GetTestView()
+{
+    UIListScrollTestFPS();
+    return list_;
+}
+
+void UITestListExt::UIListScrollTestFPS()
+{
+    g_scrollMax = (sizeof(g_itemNode) / sizeof(ItemNode)) * ITEM_HEIGHT - LIST_HEIGHT;
+    g_scrollDistance = g_scrollMax;
+
+    adapter_ = new MenuItemAdapter();
+    if (adapter_ == nullptr) {
+        TearDown();
+        return;
+    }
+    adapter_->SetWidth(ITEM_WIDTH);
+    adapter_->SetHeight(ITEM_HEIGHT);
+    adapter_->SetImageWidth(IMAGE_WIDTH);
+    adapter_->SetImageHeight(ITEM_HEIGHT);
+    adapter_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, LIST_FONT_SIZE);
+    adapter_->SetData(data_);
+    if (list_ == nullptr) {
+        list_ = new TestList();
+    }
+    list_->SetPosition(0, 0, LIST_WIDTH, LIST_HEIGHT);
+    list_->SetAdapter(adapter_);
+    list_->SetScrollStateListener(this);
+    list_->SetThrowDrag(true);
+    list_->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);
+    list_->SetMaxScrollDistance(1000); // 1000: max scroll distance
+    list_->SetSwipeACCLevel(800); // 800: compensation distance
+    list_->SetDragACCLevel(5); // 5: drag acceleration
+    list_->SetYScrollBarVisible(true);
+    if (animator_ == nullptr) {
+        animator_ = new Animator(&callback_, list_, DEFAULT_TASK_PERIOD, true);
+    }
+    list_->SetAnimator(animator_);
+}
+} // namespace OHOS
diff --git a/code/sdk/middleware/services/gui/uikit/sample/uitest/components/ui_test_list_ext/ui_test_list_ext.h b/code/sdk/middleware/services/gui/uikit/sample/uitest/components/ui_test_list_ext/ui_test_list_ext.h
new file mode 100644 (file)
index 0000000..9ff2ec3
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+ * Copyright (c) 2022 CompanyNameMagicTag.
+ * 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 UI_TEST_LIST_EXT_H
+#define UI_TEST_LIST_EXT_H
+
+#include "ui_test_list_ext.h"
+#include "components/ui_list_ext.h"
+#include "menu_item_adapter.h"
+#include "ui_test.h"
+#include "gfx_utils/sys_info.h"
+
+namespace OHOS {
+class UITestListExt : public UITest, UIView::OnClickListener, ListScrollListener {
+public:
+    UITestListExt() : data_(nullptr), animator_(nullptr), list_(nullptr), adapter_(nullptr) {}
+    ~UITestListExt() override {}
+    void SetUp() override;
+    void TearDown() override;
+    UIView* GetTestView() override;
+    void UIListScrollTestFPS();
+
+protected:
+    class ListExtFpsCallback : public AnimatorCallback {
+    public:
+        ListExtFpsCallback() {}
+
+        ~ListExtFpsCallback() override {}
+
+        void Callback(UIView* view) override;
+    };
+    class TestList : public UIListExt {
+    public:
+        void SetAnimator(Animator* animator);
+        bool OnPressEvent(const PressEvent& event) override;
+        bool OnLongPressEvent(const LongPressEvent& event) override;
+    private:
+        Animator* animator_ = nullptr;
+    };
+    Animator* animator_;
+    ListExtFpsCallback callback_;
+    TestList* list_;
+
+private:
+    List<ItemNode*>* data_;
+    MenuItemAdapter* adapter_;
+};
+} // namespace OHOS
+#endif // UI_TEST_LIST_FPS_H
diff --git a/code/sdk/middleware/services/gui/uikit/sample/uitest/components/ui_test_roller_view/ui_test_roller_view.cpp b/code/sdk/middleware/services/gui/uikit/sample/uitest/components/ui_test_roller_view/ui_test_roller_view.cpp
new file mode 100644 (file)
index 0000000..c05ad0b
--- /dev/null
@@ -0,0 +1,145 @@
+/*
+ * Copyright (c) @CompanyNameMagicTag. 2024. All rights reserved.
+ */
+
+#include "ui_test_roller_view.h"
+#include "components/ui_roller_view.h"
+#include "common/image_cache_manager.h"
+#include "gfx_utils/image_info.h"
+
+namespace OHOS {
+
+struct RollerItemStruct {
+    const char* name;
+    const char* path;
+    ImageInfo* info;
+};
+
+static constexpr uint8_t ITEM_CNT = 6;
+static RollerItemStruct g_rollerItems[ITEM_CNT] = {
+    {"planet", RES_PATH"/planet.bin", nullptr},
+    {"kaleidoscope", RES_PATH"/kaleidoscope.bin", nullptr},
+    {"rainbow", RES_PATH"/rainbow.bin", nullptr},
+    {"kaleidoscope1", RES_PATH"/kaleidoscope.bin", nullptr},
+    {"planet1", RES_PATH"/planet.bin", nullptr},
+    {"rainbow1", RES_PATH"/rainbow.bin", nullptr},
+};
+
+void UITestRollerView::CreateButton(UILabelButton*& button, const char* text, int16_t x, int16_t y)
+{
+    button = new UILabelButton();
+    button->SetPosition(x, y, 100, 40); // 100: width, 40: height
+    button->SetText(text);
+    button->SetOnClickListener(this);
+    button->SetVisible(isBtnVisible_);
+    container_->Add(button);
+}
+
+void UITestRollerView::SetUp()
+{
+    container_ = new UIViewGroup();
+    container_->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());
+    container_->SetStyle(STYLE_BACKGROUND_OPA, OPA_OPAQUE);
+    container_->SetStyle(STYLE_BACKGROUND_COLOR, Color::Black().full);
+
+    rollerView_ = new UIRollerView();
+    rollerView_->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());
+    rollerView_->SetItemSize(150, 150); // 150: item size
+    rollerView_->SetThrowDrag(true);
+    rollerView_->SetItemPadding(80); // 80: item padding
+    container_->Add(rollerView_);
+
+    for (uint8_t i = 0; i < ITEM_CNT; i++) {
+        if (g_rollerItems[i].info == nullptr) {
+            g_rollerItems[i].info = ImageCacheManager::GetInstance().LoadSingleRes(g_rollerItems[i].path);
+        }
+        rollerView_->AddItem(g_rollerItems[i].name, g_rollerItems[i].info);
+    }
+
+    rollerView_->SetCurrentItem("rainbow1", false);
+    rollerView_->SetOnClickListener(this);
+    rollerView_->SetOnModeChangeListener(this);
+
+    CreateButton(removeCurrentBtn_, "remove", 60, 320); // 60, 320: x y
+    CreateButton(addBackBtn_, "add", 180, 320); // 180, 320: x y
+    CreateButton(clearBtn_, "clear", 300, 320); // 300, 320: x y
+    CreateButton(alignBtn_, "align", 60, 370); // 60, 370: x y
+    CreateButton(switchAnimBtn_, "switchAnim", 180, 370); // 180, 370: x y
+    CreateButton(switchBtn_, "switch", 300, 370); // 300, 370: x y
+}
+
+void UITestRollerView::HideOrShowBtn()
+{
+    bool isVisible = (isBtnVisible_) ? false : true;
+    removeCurrentBtn_->SetVisible(isVisible);
+    addBackBtn_->SetVisible(isVisible);
+    clearBtn_->SetVisible(isVisible);
+    alignBtn_->SetVisible(isVisible);
+    switchAnimBtn_->SetVisible(isVisible);
+    switchBtn_->SetVisible(isVisible);
+    isBtnVisible_ = isVisible;
+}
+void UITestRollerView::OnModeChange(UIRollerView* view, RollerViewMode targetMode)
+{
+    printf("RollerView Change Mode to %d!\n", targetMode);
+}
+
+bool UITestRollerView::OnClick(UIView& view, const ClickEvent& event)
+{
+    if (&view == rollerView_) {
+        if (event.GetCurrentPos().y > (view.GetY()+ view.GetHeight() - 50)) { // 50: offset
+            HideOrShowBtn();
+        } else {
+            RollerViewMode mode = rollerView_->GetMode();
+            RollerViewMode setMode = (mode == DISPLAY) ? COVER : DISPLAY;
+            rollerView_->SetMode(setMode, true);
+        }
+    } else if (&view == removeCurrentBtn_) {
+        rollerView_->RemoveItem(rollerView_->GetCurrentItemName());
+    } else if (&view == addBackBtn_) {
+        for (uint8_t i = 0; i < ITEM_CNT; i++) {
+            if (g_rollerItems[i].info == nullptr) {
+                g_rollerItems[i].info = ImageCacheManager::GetInstance().LoadSingleRes(g_rollerItems[i].path);
+            }
+            rollerView_->AddItem(g_rollerItems[i].name, g_rollerItems[i].info);
+        }
+    } else if (&view == clearBtn_) {
+        rollerView_->ClearAll();
+    } else if (&view == alignBtn_) {
+        printf("Align kaleidoscope.");
+        rollerView_->SetCurrentItem("kaleidoscope", true);
+    } else if (&view == switchBtn_) {
+        RollerViewMode mode = rollerView_->GetMode();
+        RollerViewMode setMode = (mode == DISPLAY) ? COVER : DISPLAY;
+        rollerView_->SetMode(setMode, false);
+    } else if (&view == switchAnimBtn_) {
+        RollerViewMode mode = rollerView_->GetMode();
+        RollerViewMode setMode = (mode == DISPLAY) ? COVER : DISPLAY;
+        rollerView_->SetMode(setMode, true);
+    }
+    return true;
+}
+
+void UITestRollerView::TearDown()
+{
+    container_->Remove(rollerView_);
+    delete rollerView_;
+    rollerView_ = nullptr;
+
+    DeleteChildren(container_);
+    removeCurrentBtn_ = nullptr;
+    addBackBtn_ = nullptr;
+    clearBtn_ = nullptr;
+    alignBtn_ = nullptr;
+    switchAnimBtn_ = nullptr;
+    switchBtn_ = nullptr;
+    container_ = nullptr;
+
+    isBtnVisible_ = false;
+}
+
+const UIView* UITestRollerView::GetTestView()
+{
+    return container_;
+}
+}
diff --git a/code/sdk/middleware/services/gui/uikit/sample/uitest/components/ui_test_roller_view/ui_test_roller_view.h b/code/sdk/middleware/services/gui/uikit/sample/uitest/components/ui_test_roller_view/ui_test_roller_view.h
new file mode 100644 (file)
index 0000000..cfcbf33
--- /dev/null
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) @CompanyNameMagicTag. 2024. All rights reserved.
+ */
+
+#ifndef UI_TEST_ROLLER_VIEW_H
+#define UI_TEST_ROLLER_VIEW_H
+
+#include "ui_test.h"
+#include "components/ui_roller_view.h"
+#include "components/ui_image_view.h"
+#include "components/ui_label_button.h"
+
+namespace OHOS {
+class UITestRollerView : public UITest, public UIView::OnClickListener, UIRollerView::OnModeChangeListener {
+public:
+    UITestRollerView() {}
+    ~UITestRollerView() override {}
+    void SetUp() override;
+    void TearDown() override;;
+    const UIView* GetTestView() override;
+    bool OnClick(UIView& view, const ClickEvent& event) override;
+    void OnModeChange(UIRollerView* view, RollerViewMode targetMode) override;
+private:
+    void CreateButton(UILabelButton*& button, const char* text, int16_t x, int16_t y);
+    void HideOrShowBtn();
+
+    UIViewGroup* container_ = nullptr;
+    UIRollerView* rollerView_ = nullptr;
+
+    UILabelButton* removeCurrentBtn_ = nullptr;
+    UILabelButton* addBackBtn_ = nullptr;
+    UILabelButton* clearBtn_ = nullptr;
+    UILabelButton* alignBtn_ = nullptr;
+    UILabelButton* switchAnimBtn_ = nullptr;
+    UILabelButton* switchBtn_ = nullptr;
+
+    bool isBtnVisible_ = false;
+};
+}
+#endif
\ No newline at end of file
index 0e6bce6..8491893 100644 (file)
@@ -25,6 +25,7 @@
 #include "ui_test_image_fps/ui_test_image_fps.h"
 #include "ui_test_key/ui_test_key.h"
 #include "ui_test_list/ui_test_list.h"
+#include "ui_test_list_ext/ui_test_list_ext.h"
 #include "ui_test_qrcode/ui_test_qrcode.h"
 #if ENABLE_DEBUG && ENABLE_ROTATE_INPUT
 #include "ui_test_rotate_injector/ui_test_rotate_injector.h"
@@ -78,6 +79,7 @@
 #include "ui_test_map/ui_test_map.h"
 #include "ui_test_coverflow/ui_test_coverflow.h"
 #include "ui_test_kaleidoscope/ui_test_kaleidoscope.h"
+#include "ui_test_roller_view/ui_test_roller_view.h"
 
 namespace OHOS {
 void UITestGroup::AddTestCase(TestCaseInfo testCaseInfo)
@@ -100,6 +102,7 @@ void UITestGroup::SetUpTestCase()
     testCaseList_->PushBack(TestCaseInfo{"蜂窝表盘", new UITestHexagonsList()});
 #endif
     testCaseList_->PushBack(TestCaseInfo{"滑动列表", new UITestListFPS()});
+    testCaseList_->PushBack(TestCaseInfo{"缩放型滑动列表", new UITestListExt()});
     testCaseList_->PushBack(TestCaseInfo{"扫秒", new UITestSweepClock()});
     testCaseList_->PushBack(TestCaseInfo{"指南针", new UITestCompass()});
     testCaseList_->PushBack(TestCaseInfo{"界面切换", new UITestClockDial()});
@@ -119,6 +122,7 @@ void UITestGroup::SetUpTestCase()
 #endif
     testCaseList_->PushBack(TestCaseInfo{"覆盖流", new UITestCoverflow()});
 #endif
+    testCaseList_->PushBack(TestCaseInfo{"滚筒", new UITestRollerView()});
 #if ENABLE_VGU_ENGINE && CAPABILITY_HWDRAW_PATH
     testCaseList_->PushBack(TestCaseInfo{"倒计时", new UITestCountdown()});
     testCaseList_->PushBack(TestCaseInfo{"动画曲线", new UITestRunningBall()});
index b87f636..da9e2d9 100644 (file)
@@ -19,6 +19,7 @@
 #include "engines/gfx/gfx_engine_manager.h"
 #include "font/ui_font.h"
 #include "themes/theme_manager.h"
+#include <cmath>
 
 namespace OHOS {
 UIArcLabel::UIArcLabel()
@@ -183,7 +184,7 @@ void UIArcLabel::MeasureArcTextInfo()
         return;
     }
 
-    uint16_t arcAngle;
+    float arcAngle;
     if (startAngle_ < endAngle_) {
         arcAngle = endAngle_ - startAngle_;
         arcTextInfo_.direct = TEXT_DIRECT_LTR;  // Clockwise
@@ -197,7 +198,12 @@ void UIArcLabel::MeasureArcTextInfo()
     float maxLength = static_cast<float>((UI_PI * radius_ * arcAngle) / SEMICIRCLE_IN_DEGREE);
     arcTextInfo_.lineStart = 0;
     arcTextInfo_.lineEnd = TypedText::GetNextLine(&text[arcTextInfo_.lineStart], style_->letterSpace_, maxLength);
-    arcTextInfo_.startAngle = startAngle_ % CIRCLE_IN_DEGREE;
+    arcTextInfo_.startAngle = startAngle_;
+    if (arcTextInfo_.startAngle >= 360.0f) {
+        arcTextInfo_.startAngle -= floor(startAngle_ / 360.0f) * 360.0f;
+    } else if (arcTextInfo_.startAngle < 0.0f) {
+        arcTextInfo_.startAngle += ceil(-startAngle_ / 360.0f) * 360.0f;
+    }
     int16_t actLength = TypedText::GetTextWidth(&text[arcTextInfo_.lineStart],
         arcTextInfo_.lineEnd - arcTextInfo_.lineStart, style_->letterSpace_);
     if ((arcLabelText_->GetHorAlign() != TEXT_ALIGNMENT_LEFT) && (actLength < maxLength)) {
index 7979d50..b332f58 100644 (file)
@@ -92,6 +92,9 @@ void UIArcScrollBar::ClearPath()
 void UIArcScrollBar::DrawArcByHWPath(BufferInfo &dst, ArcInfo arc, uint8_t barLayer, const Rect &mask,
     uint16_t opa)
 {
+    if (!mask.IsValid() || mask.GetWidth() <= 0 || mask.GetHeight() <= 0) {
+        return;
+    }
     uint32_t cmdNum;
     uint32_t dataNum;
     Style *style;
index 18af043..d64c954 100644 (file)
@@ -13,6 +13,7 @@
  * limitations under the License.
  */
 
+#include "hal_tick.h"
 #include "components/ui_label.h"
 #include "font/ui_font.h"
 #include "gfx_utils/graphic_log.h"
@@ -24,8 +25,8 @@ public:
     LabelAnimator(uint16_t textX, uint16_t labelX, int16_t startPos, UIView* view)
         : Animator(this, view, 0, true),
           startPos_(startPos),
-          textX_(textX),
-          labelX_(labelX),
+          textWidth_(textX),
+          labelWidth_(labelX),
           offsetX_(startPos),
           waitCount_(ANIM_WAIT_COUNT),
           speed_(0),
@@ -48,8 +49,8 @@ public:
 
     void UpdateWidth(uint16_t textWidth, uint16_t labelWidth)
     {
-        textX_ = textWidth;
-        labelX_ = labelWidth;
+        textWidth_ = textWidth;
+        labelWidth_ = labelWidth;
         waitCount_ = ANIM_WAIT_COUNT;
         preRunTime_ = 0;
         decimal_ = 0;
@@ -59,6 +60,33 @@ public:
     }
 
     void Callback(UIView* view) override
+    {
+        switch (animatorMode_) {
+            case UILabel::LINE_BREAK_MARQUEE:
+                MarqueeCallback(view);
+                break;
+            case UILabel::LINE_BREAK_OSCILLATION:
+                OscillationCallback(view);
+                break;
+            default:
+                GRAPHIC_LOGE("erorr animation!");
+                break;
+        }
+    }
+
+    void SetAnimatorSpeed(uint16_t animSpeed)
+    {
+        speed_ = animSpeed;
+        decimal_ = 0;
+    }
+
+    void SetAnimatorMode(UILabel::LineBreakMode mode)
+    {
+        animatorMode_ = mode;
+    }
+
+private:
+    void MarqueeCallback(UIView* view)
     {
         if (view == nullptr) {
             return;
@@ -86,27 +114,64 @@ public:
             offsetX_ -= 1; // At lest move one pixel
             decimal_ = 0;
         }
-        offsetX_ = ((offsetX_ - labelX_) % (textX_ + labelX_)) + labelX_;
+        offsetX_ = ((offsetX_ - labelWidth_) % (textWidth_ + labelWidth_)) + labelWidth_;
         static_cast<UILabel*>(view)->offsetX_ = offsetX_;
         view->Invalidate();
     }
 
-    void SetAnimatorSpeed(uint16_t animSpeed)
+    void OscillationCallback(UIView* view)
     {
-        speed_ = animSpeed;
-        decimal_ = 0;
+        if (view == nullptr) {
+            return;
+        }
+        if (waitCount_ > 0) {
+            waitCount_--;
+            return;
+        }
+        if (startFlag_) {
+            startTime_ = HALTick::GetInstance().GetTime();
+            startFlag_ = false;
+        }
+
+        uint32_t time = HALTick::GetInstance().GetElapseTime(startTime_);
+        float x0 = startPos_;
+        float x1 = 1.0 * labelWidth_ - textWidth_;
+        float factor = 200000; // slow down the speed
+        float t = time * speed_ / factor;
+        float t1 = 1.0;
+        float period = 2.0;
+        while (t < 0) {
+            t += period;
+        }
+        while (t > period) {
+            t -= period;
+        }
+        float x = 0;
+        if (t >=0 && t < t1) {
+            x = (x1 - x0) * t / t1 + x0;
+        } else {
+            x = (x0 - x1) * (t - t1) / t1 + x1;
+        }
+
+        UILabel *label = dynamic_cast<UILabel*>(view);
+        if (label != nullptr) {
+            label->offsetX_ = MATH_ROUND(x);
+            label->Invalidate();
+        }
     }
 
-private:
     static constexpr uint8_t ANIM_WAIT_COUNT = 50;
     int16_t startPos_;
-    uint16_t textX_;
-    uint16_t labelX_;
+    uint16_t textWidth_;
+    uint16_t labelWidth_;
     int16_t offsetX_;
     uint16_t waitCount_;
     uint16_t speed_;
     uint32_t preRunTime_;
+    bool startFlag_ = true;
+    uint32_t startTime_ = 0;
     float decimal_;
+    UILabel::LineBreakMode animatorMode_ = UILabel::LINE_BREAK_MARQUEE;
 };
 
 UILabel::UILabel()
@@ -187,7 +252,7 @@ void UILabel::SetLineBreakMode(const uint8_t lineBreakMode)
     }
     lineBreakMode_ = lineBreakMode;
     if ((lineBreakMode_ == LINE_BREAK_ADAPT) || (lineBreakMode_ == LINE_BREAK_STRETCH) ||
-        (lineBreakMode_ == LINE_BREAK_MARQUEE)) {
+        (lineBreakMode_ == LINE_BREAK_MARQUEE) || (lineBreakMode_ == LINE_BREAK_OSCILLATION)) {
         labelText_->SetExpandWidth(true);
     } else {
         labelText_->SetExpandWidth(false);
@@ -197,7 +262,7 @@ void UILabel::SetLineBreakMode(const uint8_t lineBreakMode)
     } else {
         labelText_->SetExpandHeight(false);
     }
-    if (lineBreakMode_ != LINE_BREAK_MARQUEE) {
+    if (lineBreakMode_ != LINE_BREAK_MARQUEE && lineBreakMode_ != LINE_BREAK_OSCILLATION) {
         offsetX_ = 0;
         if (hasAnimator_) {
             animator_.animator->Stop();
@@ -309,7 +374,10 @@ void UILabel::ReMeasure()
             labelText_->ReMeasureTextWidthInEllipsisMode(GetContentRect(), style, ellipsisIndex_);
             break;
         case LINE_BREAK_MARQUEE:
-            RemeasureForMarquee(textSize.x);
+            RemeasureForAnimation(textSize.x, LINE_BREAK_MARQUEE);
+            break;
+        case LINE_BREAK_OSCILLATION:
+            RemeasureForAnimation(textSize.x, LINE_BREAK_OSCILLATION);
             break;
         default:
             break;
@@ -319,7 +387,7 @@ void UILabel::ReMeasure()
     }
 }
 
-void UILabel::RemeasureForMarquee(int16_t textWidth)
+void UILabel::RemeasureForAnimation(int16_t textWidth, LineBreakMode mode)
 {
     int16_t rectWidth = GetWidth();
     if (textWidth > rectWidth) {
@@ -337,6 +405,7 @@ void UILabel::RemeasureForMarquee(int16_t textWidth)
                 GRAPHIC_LOGE("new LabelAnimator fail");
                 return;
             }
+            animator->SetAnimatorMode(mode);
             animator->SetAnimatorSpeed(animator_.speed);
             animator_.animator = animator;
             hasAnimator_ = true;
index b743280..35b3350 100644 (file)
@@ -71,6 +71,10 @@ void UISwipeView::Remove(UIView* view)
 
 void UISwipeView::MoveHeadOrTailChild()
 {
+    if (childrenTail_ == childrenHead_) {
+        return;
+    }
+
     if (loop_) {
         if (direction_ == HORIZONTAL) {
             while (childrenHead_->GetX() >= 0) {
index 23a1ee2..5fd45f1 100644 (file)
@@ -160,6 +160,47 @@ void UIViewGroup::RemoveAll()
     OnChildChanged();
 }
 
+void UIViewGroup::RemoveAndDeleteAllRecursively(UIViewGroup*& group)
+{
+    if (group == nullptr) {
+        GRAPHIC_LOGE("param group is nullptr !!");
+        return;
+    }
+ 
+    UIViewType type = group->GetViewType();
+    if ((type == UI_DIGITAL_CLOCK) || (type == UI_PICKER) || (type == UI_TIME_PICKER) || (type == UI_MENU_ITEM) ||
+        (type == UI_IMAGE_PICKER) || (type == UI_ROLLER_VIEW) || (type == UI_COVER_FLOW)) {
+        delete group;
+        group = nullptr;
+        return;
+    }
+ 
+    if (type == UI_CROSS_VIEW) {
+        GRAPHIC_LOGE("Need to remove UICardPage in UICrossView manully !!");
+        delete group;
+        group = nullptr;
+        return;
+    }
+ 
+    UIView* node = group->GetChildrenHead();
+    UIView* tmp = nullptr;
+    while (node != nullptr) {
+        tmp = node;
+        node = node->GetNextSibling();
+#if LOCAL_RENDER
+        RootView::GetInstance()->RemoveViewFromInvalidMap(tmp);
+#endif
+        if (tmp->IsViewGroup()) {
+            UIViewGroup* tmpGroup = dynamic_cast<UIViewGroup*>(tmp);
+            RemoveAndDeleteAllRecursively(tmpGroup);
+        } else {
+            delete tmp;
+        }
+    }
+    delete group;
+    group = nullptr;
+}
+
 void UIViewGroup::GetTargetView(const Point& point, UIView** last)
 {
     if (last == nullptr) {
index 9bdfdf8..888f92f 100644 (file)
@@ -125,8 +125,8 @@ void DrawLabel::DrawArcText(BufferInfo& gfxDstBuffer,
 
 #if CAPABILITY_HWDRAW_LETTER_VECTOR
         LabelLetterInfo letterInfo{Point { MATH_ROUND(posX), MATH_ROUND(posY) }, mask, style.textColor_, opaScale,
-            0, 0, letter, arcTextInfo.direct, fontId, 0, 0, nullptr};
-        DrawUtils::GetInstance()->DrawArcLablePath(gfxDstBuffer, letterInfo, static_cast<int16_t>(rotateAngle));
+            0, 0, letter, arcTextInfo.direct, fontId, 0, 0, nullptr, posX, posY };
+        DrawUtils::GetInstance()->DrawArcLablePath(gfxDstBuffer, letterInfo, rotateAngle);
 #else
         DrawLetterWithRotate(gfxDstBuffer, mask, fontId, letter, Point { MATH_ROUND(posX), MATH_ROUND(posY) },
                              static_cast<int16_t>(rotateAngle), style.textColor_, opaScale);
index d56e28b..943688d 100644 (file)
@@ -348,7 +348,7 @@ void DrawUtils::DrawLetterVectorPath(BufferInfo& gfxDstBuffer, const LabelLetter
 }
 
 void DrawUtils::DrawArcLablePath(BufferInfo& gfxDstBuffer, const LabelLetterInfo& letterInfo,
-    const int16_t& rotateAngle) const
+    const float& rotateAngle) const
 {
     UIFont* fontEngine = UIFont::GetInstance();
     GlyphPathData path;
@@ -366,17 +366,25 @@ void DrawUtils::DrawArcLablePath(BufferInfo& gfxDstBuffer, const LabelLetterInfo
         return;
     }
 
-    Rect rectLetter;
-    rectLetter.SetPosition(letterInfo.pos.x, letterInfo.pos.y + head.ascender);
-    rectLetter.Resize(path.width, path.height);
-    TransformMap transMap(rectLetter);
-    Vector2<float> pivot = {0, 0};
-    Vector2<float> scale = {path.scale, path.scale};
-    transMap.Scale(scale, pivot);
-    pivot.y_ = - head.ascender;
-    transMap.Rotate(rotateAngle, pivot);
+    float x = letterInfo.x;
+    float y = letterInfo.y + head.ascender;
 
-    const float* srcMat = transMap.GetTransformMatrix().GetData();
+    Matrix4<float> mat;
+    Matrix4<float> rotate = Matrix4<float>::Rotate(rotateAngle,
+            Vector3<float>(x, y - head.ascender, 0), Vector3<float>(x, y - head.ascender, 1));
+    Matrix4<float> scale = Matrix4<float>::Scale(Vector3<float>(path.scale, path.scale, 1), Vector3<float>(x, y, 0));
+    mat = rotate * scale;
+    Matrix4<float> translateFromCamera = Matrix4<float>::Translate(Vector3<float>(-x, -y, 0));
+    Matrix4<float> translateToCamera = Matrix4<float>::Translate(Vector3<float>(x, y, 0));
+    Matrix4<float> perspectiveMatrix;
+    perspectiveMatrix[2][2] = 0.0f;
+    perspectiveMatrix[2][3] = -1.0f / 1000; // 1000: default camera distance
+    perspectiveMatrix = translateToCamera * (perspectiveMatrix * translateFromCamera);
+
+    mat = perspectiveMatrix * mat;
+    mat = mat * translateToCamera;
+
+    const float* srcMat = mat.GetData();
     VGUMatrix3 matrix;
     if (memset_s(&matrix, sizeof(VGUMatrix3), 0, sizeof(VGUMatrix3)) != EOK) {
         GRAPHIC_LOGE("DrawLetter memset_s error\n");
index d3175ab..b548afe 100644 (file)
@@ -91,6 +91,9 @@ struct LabelLetterInfo {
     uint8_t shapingId;
     uint8_t fontSize;
     TransformMap* transMap;
+
+    float x;
+    float y;
 };
 
 struct TransformInitState {
@@ -304,7 +307,7 @@ public:
                               const OpacityType& opa) const;
 #if CAPABILITY_HWDRAW_LETTER_VECTOR
     void DrawArcLablePath(BufferInfo& gfxDstBuffer, const LabelLetterInfo& letterInfo,
-        const int16_t& rotateAngle) const;
+        const float& rotateAngle) const;
 #endif
 private:
     using DrawTriangleTransformFuc = void (*)(const TriangleScanInfo& triangle, const ColorMode bufferMode);
index 3219560..87fcdeb 100644 (file)
@@ -201,6 +201,17 @@ public:
         onKeyActListener_ = nullptr;
     }
 
+    /**
+     * @brief Get the listener for monitoring physical key events.
+     *
+     * @since 1.0
+     * @version 1.0
+     */
+    OnKeyActListener* GetOnKeyActListener()
+    {
+        return onKeyActListener_;
+    }
+
     /**
      * @brief Listens for the input events triggered by a virtual device other than
      *        human touching or physical pressing.
index 2a8e671..eb095a4 100644 (file)
@@ -277,7 +277,7 @@ public:
      * @since 1.0
      * @version 1.0
      */
-    void SetArcTextAngle(int16_t startAngle, int16_t endAngle)
+    void SetArcTextAngle(float startAngle, float endAngle)
     {
         if ((startAngle_ != startAngle) || (endAngle_ != endAngle)) {
             startAngle_ = startAngle;
@@ -293,7 +293,7 @@ public:
      * @since 1.0
      * @version 1.0
      */
-    int16_t GetArcTextStartAngle() const
+    float GetArcTextStartAngle() const
     {
         return startAngle_;
     }
@@ -305,7 +305,7 @@ public:
      * @since 1.0
      * @version 1.0
      */
-    int16_t GetArcTextEndAngle() const
+    float GetArcTextEndAngle() const
     {
         return endAngle_;
     }
@@ -383,8 +383,8 @@ private:
     bool needRefresh_;
     Point textSize_;
     uint16_t radius_;
-    int16_t startAngle_;
-    int16_t endAngle_;
+    float startAngle_;
+    float endAngle_;
     Point arcCenter_;
     TextOrientation orientation_;
 
index 30f0223..59dac9d 100644 (file)
@@ -76,6 +76,11 @@ public:
          * If this text is too long, it will be rolled to display.
          */
         LINE_BREAK_MARQUEE,
+        /**
+         * The width and height of this label remain unchanged.
+         * If this text is too long, it will be scrolled back and forth to display.
+         */
+        LINE_BREAK_OSCILLATION,
         /**
          * The width and height of this label remain unchanged.
          * If this text is too long, it will be cropped to display.
@@ -419,7 +424,7 @@ protected:
 private:
     friend class LabelAnimator;
 
-    void RemeasureForMarquee(int16_t textWidth);
+    void RemeasureForAnimation(int16_t textWidth, LineBreakMode mode = LINE_BREAK_MARQUEE);
 
     bool needRefresh_ : 1;
     bool useTextColor_ : 1;
index bffed44..c97493d 100644 (file)
@@ -111,12 +111,14 @@ enum UIViewType : uint8_t {
 #endif
     UI_MENU_ITEM,
     UI_CARD_PAGE,
+    UI_COVER_FLOW,
     UI_CROSS_VIEW,
     UI_BARCODE,
     UI_MAP_VIEW,
     UI_KALEIDOSCOPE_VIEW,
     UI_ROLLER_VIEW,
     UI_HEXAGONS_LIST,
+    UI_IMAGE_PICKER,
     UI_ICOSAHEDRON_VIEW,
     UI_NUMBER_MAX
 };
index ea5c8e9..c05695b 100644 (file)
@@ -114,6 +114,18 @@ public:
      */
     virtual void RemoveAll();
 
+    /**
+     * @brief Removes and delete all child views recursively. this method have some limitation:
+     *        1. Some UI group views delete children in their destructor function, don't delete them repeatly in this
+     *        function in this situation. some special treatment has already been done for below basic UI group views:
+     *            UIPicker UITimePicker UIImagePicker UIDigitalClock UIRollerView UICoverFlow UIMenuItem
+     *        However, the custom UI group views was ignored in this function, so be carefully when using this method.
+     *        2. Not all children in UICrossView are deleted in this method, you should remove UICardPages in addtion.
+     * @since 1.0
+     * @version 1.0
+     */
+    static void RemoveAndDeleteAllRecursively(UIViewGroup*& group);
+
     /**
      * @brief Obtains the target child view that is visible and can respond to touch events based on given coordinates.
      *
index 46f9fd3..defcbd9 100644 (file)
@@ -50,6 +50,9 @@ struct RawEvent {
 #endif
         };
         uint16_t keyId; /* key type device use this param for touched key id */
+#if ENABLE_ROTATE_INPUT
+        int16_t rotate;
+#endif
     };
 #ifdef VERSION_IOT
     uint16_t state;
index 2d9104a..9721eda 100644 (file)
@@ -14,4 +14,4 @@
 ]]
 
 add_subdirectory(frameworks f)
-add_subdirectory(interfaces/kits/audio_captuer_lite js_buildin)
+add_subdirectory(interfaces/kits/audio_capturer_lite js_buildin)
@@ -328,7 +328,7 @@ static int32_t ActivateAudioInterrupt(AudioSession &sessionId)
     }\r
     MEDIA_INFO_LOG("sessionId:%d", sessionId);\r
     g_captureInterruptListener = std::make_shared<CaptureInterruptListener>();\r
-    g_sample.interrupt = { AUDIO_STREAM_VOICE_RECORD, sessionId, g_captureInterruptListener };\r
+    g_sample.interrupt = { AUDIO_STREAM_VOICE_ASSISTANT, sessionId, g_captureInterruptListener };\r
 \r
     if (g_amInstance.ActivateAudioInterrupt(g_sample.interrupt) == INTERRUPT_FAILED) {\r
         MEDIA_ERR_LOG("ActivateAudioInterrupt failed");\r
@@ -419,7 +419,7 @@ int32_t AudioCaptureStart_sample(int32_t argc, const char **argv)
 \r
     audioCapturerInfo.sessionID = sessionId;\r
     audioCapturerInfo.inputSource = AUDIO_MIC;\r
-    audioCapturerInfo.streamType = AUDIO_STREAM_VOICE_RECORD;\r
+    audioCapturerInfo.streamType = AUDIO_STREAM_VOICE_ASSISTANT;\r
     ret = AudioCaptureSetInfo(audioCapturerInfo);\r
     if (ret != 0) {\r
         g_audioCap.reset();\r
@@ -456,22 +456,22 @@ int32_t AudioCaptureStart_sample(int32_t argc, const char **argv)
 namespace OHOS {\r
 namespace ACELite {\r
 \r
-JSIValue AudioCaptuerModule::Start(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize)\r
+JSIValue AudioCapturerModule::Start(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize)\r
 {\r
     const char *pars[6] = {"","","16000","1","16","/user/log/xiaodu/xiaodu.pcm"};\r
     return JSI::CreateBoolean(AudioCaptureStart_sample(6,pars));\r
 }\r
 \r
-JSIValue AudioCaptuerModule::Stop(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize)\r
+JSIValue AudioCapturerModule::Stop(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize)\r
 {\r
     g_sample.needStop = true;\r
     return JSI::CreateBoolean(0);\r
 }\r
 \r
-void InitAudioCaptuerModule(JSIValue exports)\r
+void InitAudioCapturerModule(JSIValue exports)\r
 {\r
-    JSI::SetModuleAPI(exports, "Start", AudioCaptuerModule::Start);\r
-    JSI::SetModuleAPI(exports, "Stop", AudioCaptuerModule::Stop);\r
+    JSI::SetModuleAPI(exports, "Start", AudioCapturerModule::Start);\r
+    JSI::SetModuleAPI(exports, "Stop", AudioCapturerModule::Stop);\r
 }\r
 \r
 }\r
@@ -25,17 +25,17 @@ int32_t AudioCaptureSample(int32_t argc, const char *argv[]);
 \r
 namespace OHOS {\r
 namespace ACELite {\r
-class AudioCaptuerModule final : public MemoryHeap {\r
+class AudioCapturerModule final : public MemoryHeap {\r
 public:\r
     /**\r
      * constructor\r
      */\r
-    AudioCaptuerModule() = default;\r
+    AudioCapturerModule() = default;\r
 \r
     /**\r
      * desconstructor\r
      */\r
-    ~AudioCaptuerModule() = default;\r
+    ~AudioCapturerModule() = default;\r
     /**\r
      * Start\r
      */\r
@@ -47,7 +47,7 @@ public:
     static JSIValue Stop(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize);\r
 };\r
 \r
-void InitAudioCaptuerModule(JSIValue exports);\r
+void InitAudioCapturerModule(JSIValue exports);\r
 }\r
 }\r
 \r
index 38247a8..749c459 100644 (file)
@@ -158,4 +158,16 @@ int32_t AudioManager::DumpInfo(AudioManagerDebugInfo &audioManagerInfo)
     CHK_NULL_RETURN(impl_, AUDIO_ERROR, "impl_ is nullptr");
     return impl_->DumpInfo(audioManagerInfo);
 }
+
+int32_t AudioManager::SetParam(AudioLinkDirection direction, const char *param, uint32_t len)
+{
+    CHK_NULL_RETURN(impl_, AUDIO_ERROR, "impl_ is nullptr");
+    return impl_->SetParam(direction, param, len);
+}
+
+int32_t AudioManager::GetParam(AudioLinkDirection direction, char *param, uint32_t len)
+{
+    CHK_NULL_RETURN(impl_, AUDIO_ERROR, "impl_ is nullptr");
+    return impl_->GetParam(direction, param, len);
+}
 }  // namespace Audio
index bcf6fa4..ac5f336 100644 (file)
@@ -248,4 +248,14 @@ int32_t AudioManager::AudioManagerImpl::DumpInfo(AudioManagerDebugInfo &audioMan
     }
     return AUDIO_SUCCESS;
 }
+
+int32_t AudioManager::AudioManagerImpl::SetParam(AudioLinkDirection direction, const char *param, uint32_t len)
+{
+    return AudioServiceSetParam(direction, param, len);
+}
+
+int32_t AudioManager::AudioManagerImpl::GetParam(AudioLinkDirection direction, char *param, uint32_t len)
+{
+    return AudioServiceGetParam(direction, param, len);
+}
 }  // namespace Audio
index edeb3e6..2a6dc4c 100644 (file)
@@ -38,7 +38,8 @@ public:
     int32_t ActivateAudioInterrupt(AudioInterrupt &interrupt);\r
     int32_t DeactivateAudioInterrupt(AudioInterrupt &interrupt);\r
     int32_t DumpInfo(AudioManagerDebugInfo &audioManagerInfo);\r
-\r
+    int32_t SetParam(AudioLinkDirection direction, const char *param, uint32_t len);\r
+    int32_t GetParam(AudioLinkDirection direction, char *param, uint32_t len);\r
 private:\r
     static void InterruptListenerImpl(uintptr_t owner, uintptr_t userData, int32_t type, int32_t hint);\r
     int32_t ConvertIAudioInterrupt(AudioInterrupt &interrupt, AudioInterruptProxy &interruptInternal);\r
index b432a76..a6b987a 100644 (file)
@@ -319,6 +319,10 @@ typedef int32_t (*AudioServiceHaidEventCallback)(int32_t eventType, void *param,
 
 int32_t AudioServiceRegCallBack(AudioServiceHaidEventCallback callBack, void *context);
 
+int32_t AudioServiceSetParam(AudioLinkDirection direction, const char *param, uint32_t len);
+
+int32_t AudioServiceGetParam(AudioLinkDirection direction, char *param, uint32_t len);
+
 #ifdef __cplusplus
 #if __cplusplus
 }
index 154a2c4..4afc7de 100644 (file)
@@ -357,6 +357,28 @@ int32_t AudioServiceRegCallBack(AudioServiceHaidEventCallback callBack, void *co
     return ret;
 }
 
+int32_t AudioServiceSetParam(AudioLinkDirection direction, const char *param, uint32_t len)
+{
+    CHK_FAILED_RETURN(g_audioSVCInited, true, AUDIO_NO_INIT, "Audio Service not init");
+    CHK_NULL_RETURN(param, AUDIO_INVALID_PARAMS, "param is NULL");
+    int32_t ret = StreamManagerSetParam(direction, param, len);
+    if (ret != AUDIO_SUCCESS) {
+        ALOGE("Audio Service set param failed!");
+    }
+    return ret;
+}
+
+int32_t AudioServiceGetParam(AudioLinkDirection direction, char *param, uint32_t len)
+{
+    CHK_FAILED_RETURN(g_audioSVCInited, true, AUDIO_NO_INIT, "Audio Service not init");
+    CHK_NULL_RETURN(param, AUDIO_INVALID_PARAMS, "param is NULL");
+    int32_t ret = StreamManagerGetParam(direction, param, len);
+    if (ret != AUDIO_SUCCESS) {
+        ALOGE("Audio Service get param failed!");
+    }
+    return ret;
+}
+
 #ifdef __cplusplus
 #if __cplusplus
 }
index 577a242..af22a8c 100644 (file)
@@ -43,6 +43,7 @@ typedef struct {
 static StreamTypeMap g_mapStreamType[] = {\r
     { AUDIO_STREAM_MUSIC, AUDIO_IN_MEDIA },\r
     { AUDIO_STREAM_NOTIFICATION, AUDIO_IN_MEDIA },\r
+    { AUDIO_STREAM_VOICE_ASSISTANT, AUDIO_IN_MEDIA },\r
     { AUDIO_STREAM_VOICE_RECORD, AUDIO_IN_MEDIA },\r
     { AUDIO_STREAM_A2DP_MUSIC, AUDIO_IN_MEDIA },\r
     { AUDIO_STREAM_VOICE_CALL, AUDIO_IN_COMMUNICATION },\r
index d825cbe..e3ea34f 100644 (file)
@@ -241,12 +241,12 @@ static AudioStrategy g_defaultPriorityToStrategies[][OUTPUT_STRATEGY_MAP_COLUMN_
     {STRATEGY_EXCLUSIVE,    STRATEGY_EXCLUSIVE, STRATEGY_EXCLUSIVE, STRATEGY_NONE,      STRATEGY_REJECT,
         STRATEGY_MIX,       STRATEGY_REJECT,    STRATEGY_MIX,       STRATEGY_MIX,       STRATEGY_DELAY, STRATEGY_DELAY},
     {STRATEGY_EXCLUSIVE,    STRATEGY_EXCLUSIVE, STRATEGY_EXCLUSIVE, STRATEGY_EXCLUSIVE, STRATEGY_NONE,
-        STRATEGY_MIX,       STRATEGY_REJECT,    STRATEGY_MIX,       STRATEGY_MIX,       STRATEGY_DELAY, STRATEGY_DELAY},
+        STRATEGY_MIX,       STRATEGY_REJECT,    STRATEGY_MIX,       STRATEGY_MIX,       STRATEGY_MIX, STRATEGY_MIX},
     {STRATEGY_EXCLUSIVE,    STRATEGY_EXCLUSIVE, STRATEGY_EXCLUSIVE, STRATEGY_EXCLUSIVE, STRATEGY_EXCLUSIVE,
         STRATEGY_NONE,      STRATEGY_REJECT,    STRATEGY_MIX,       STRATEGY_MIX,      STRATEGY_REJECT, STRATEGY_DELAY},
     {STRATEGY_EXCLUSIVE,    STRATEGY_EXCLUSIVE, STRATEGY_EXCLUSIVE, STRATEGY_EXCLUSIVE, STRATEGY_EXCLUSIVE,
         STRATEGY_EXCLUSIVE, STRATEGY_NONE,      STRATEGY_MIX,       STRATEGY_MIX,      STRATEGY_REJECT, STRATEGY_DELAY},
-    {STRATEGY_EXCLUSIVE,    STRATEGY_EXCLUSIVE, STRATEGY_EXCLUSIVE, STRATEGY_EXCLUSIVE, STRATEGY_EXCLUSIVE,
+    {STRATEGY_EXCLUSIVE,    STRATEGY_MIX, STRATEGY_EXCLUSIVE, STRATEGY_EXCLUSIVE, STRATEGY_EXCLUSIVE,
         STRATEGY_EXCLUSIVE, STRATEGY_MIX,       STRATEGY_NONE,      STRATEGY_MIX,       STRATEGY_MIX,   STRATEGY_MIX},
     {STRATEGY_EXCLUSIVE,    STRATEGY_EXCLUSIVE, STRATEGY_EXCLUSIVE, STRATEGY_EXCLUSIVE, STRATEGY_EXCLUSIVE,
         STRATEGY_EXCLUSIVE, STRATEGY_MIX,       STRATEGY_MIX,       STRATEGY_NONE,      STRATEGY_MIX,   STRATEGY_MIX},
index 889f755..7483845 100644 (file)
@@ -159,6 +159,11 @@ static HifiClockFreqContext  g_hifiClockFreqList[] = {
         .deviceType = IN_BUILTIN_MIC,\r
         .hifiMode = HIFI_LPM_CLK_LEVEL1,\r
     },\r
+    {\r
+        .streamType = AUDIO_STREAM_VOICE_ASSISTANT,\r
+        .deviceType = IN_BUILTIN_MIC,\r
+        .hifiMode = HIFI_LPM_CLK_LEVEL2,\r
+    },\r
     {\r
         .streamType = AUDIO_STREAM_A2DP_MUSIC,\r
         .deviceType = OUT_BUILTIN_SPEAKER,\r
index ca3c282..0f5f1fe 100644 (file)
@@ -181,6 +181,10 @@ int32_t StreamMgrDumpInfo(AudioStreamDebugInfo *audioStreamInfo);
 
 int32_t StreamManagerDeactivateCorrespondingStream(AudioSession sessionID, AudioStreamType streamType);
 
+int32_t StreamManagerSetParam(AudioLinkDirection direction, const char *param, uint32_t len);
+
+int32_t StreamManagerGetParam(AudioLinkDirection direction, char *param, uint32_t len);
+
 #ifdef __cplusplus
 #if __cplusplus
 }
index 854c5ca..d3d24f2 100644 (file)
@@ -228,6 +228,8 @@ StreamDebugInfo DumpTrackInfo(uintptr_t handle);
 
 int32_t SetTrackParam(uintptr_t handle, const char *keyValueList, size_t len);
 
+int32_t GetTrackParam(uintptr_t handle, char *keyValueList, size_t len);
+
 int32_t DeactivateCorrespondingTrack(uintptr_t handle);
 
 #ifdef __cplusplus
index 109c3a1..4d5b0bf 100644 (file)
@@ -429,3 +429,20 @@ int32_t SetSourceParam(uintptr_t handle, const char *keyValueList, size_t len)
     }
     return AUDIO_SUCCESS;
 }
+
+int32_t GetSourceParam(uintptr_t handle, char *keyValueList, size_t len)
+{
+    SourceHandleContext *context = (SourceHandleContext *)handle;
+    CHK_NULL_RETURN(context, AUDIO_ERROR, "source handle is NULL");
+    CHK_NULL_RETURN(keyValueList, AUDIO_ERROR, "keyValueList is NULL");
+    if (context->capture == NULL) {
+        ALOGE("not create capture");
+        return AUDIO_ERROR;
+    }
+    int32_t ret = context->capture->attr.GetExtraParams((AudioHandle)context->capture, keyValueList, (int32_t)len);
+    if (ret != AUDIO_SUCCESS) {
+        ALOGE("call get extra params failed ");
+        return AUDIO_ERROR;
+    }
+    return AUDIO_SUCCESS;
+}
\ No newline at end of file
index 88f9624..5ce62d5 100644 (file)
@@ -1187,6 +1187,150 @@ int32_t StreamManagerDeactivateCorrespondingStream(AudioSession sessionID, Audio
     return ret;
 }
 
+static int32_t GetStreamOutParamValue(char *param, uint32_t len)
+{
+    bool isFound = false;
+    for (uint32_t i = 0; i < CONCURRENT_ACTIVE_STREAM_MAX_NUM; i++) {
+        if (!IsValidStream(g_streamMgrContext.simpleInfos[i].streamId,
+            g_streamMgrContext.simpleInfos[i].active)) {
+            continue;
+        }
+        uint32_t deviceId = GetStreamDeviceId(g_streamMgrContext.simpleInfos[i].streamHandle);
+        if (deviceId == OUT_BLUETOOTH_SCO) {
+            continue;
+        }
+        isFound = true;
+        uintptr_t streamHandle = g_streamMgrContext.simpleInfos[i].streamHandle;
+        int32_t ret = GetTrackParam(streamHandle, param, len);
+        if (ret != AUDIO_SUCCESS) {
+            ALOGE("get track param failed, ret:%d.", ret);
+            return AUDIO_ERROR;
+        }
+    }
+    if (!isFound) {
+        ALOGI("not find match out stream!");
+        return AUDIO_ERROR;
+    }
+    return AUDIO_SUCCESS;
+}
+
+static int32_t SetStreamOutParamValue(const char *param, uint32_t len)
+{
+    bool isFound = false;
+    for (uint32_t i = 0; i < CONCURRENT_ACTIVE_STREAM_MAX_NUM; i++) {
+        if (!IsValidStream(g_streamMgrContext.simpleInfos[i].streamId,
+            g_streamMgrContext.simpleInfos[i].active)) {
+            continue;
+        }
+        uint32_t deviceId = GetStreamDeviceId(g_streamMgrContext.simpleInfos[i].streamHandle);
+        if (deviceId == OUT_BLUETOOTH_SCO) {
+            continue;
+        }
+        isFound = true;
+        uintptr_t streamHandle = g_streamMgrContext.simpleInfos[i].streamHandle;
+        int32_t ret = SetTrackParam(streamHandle, param, len);
+        if (ret != AUDIO_SUCCESS) {
+            ALOGE("set track param failed, ret:%d.", ret);
+            return AUDIO_ERROR;
+        }
+    }
+    if (!isFound) {
+        ALOGE("not find match out stream!");
+        return AUDIO_ERROR;
+    }
+    return AUDIO_SUCCESS;
+}
+
+static int32_t GetStreamInParamValue(char *param, uint32_t len)
+{
+    bool isFound = false;
+    for (uint32_t i = 0; i < MAX_STREAM_IN_NUM; i++) {
+        StreamSimpleInfo curStreamInfo = g_streamMgrContext.curInputStreamInfo[i];
+        if (!IsValidStream(curStreamInfo.streamId, curStreamInfo.active)) {
+            continue;
+        }
+        uint32_t deviceId = GetSourceDeviceId(curStreamInfo.streamHandle);
+        if (deviceId == IN_BLUETOOTH_SCO) {
+            continue;
+        }
+        isFound = true;
+        int32_t ret = GetSourceParam(curStreamInfo.streamHandle, param, len);
+        if (ret != AUDIO_SUCCESS) {
+            ALOGE("get source param failed, ret:%d.", ret);
+            return AUDIO_ERROR;
+        }
+    }
+    if (!isFound) {
+        ALOGE("not find match in stream!");
+        return AUDIO_ERROR;
+    }
+    return AUDIO_SUCCESS;
+}
+
+static int32_t SetStreamInParamValue(const char *param, uint32_t len)
+{
+    bool isFound = false;
+    for (uint32_t i = 0; i < MAX_STREAM_IN_NUM; i++) {
+        StreamSimpleInfo curStreamInfo = g_streamMgrContext.curInputStreamInfo[i];
+        if (!IsValidStream(curStreamInfo.streamId, curStreamInfo.active)) {
+            continue;
+        }
+        uint32_t deviceId = GetSourceDeviceId(curStreamInfo.streamHandle);
+        if (deviceId == IN_BLUETOOTH_SCO) {
+            continue;
+        }
+        isFound = true;
+        int32_t ret = SetSourceParam(curStreamInfo.streamHandle, param, len);
+        if (ret != AUDIO_SUCCESS) {
+            ALOGE("set source param failed, ret:%d.", ret);
+            return AUDIO_ERROR;
+        }
+    }
+    if (!isFound) {
+        ALOGE("not find match in stream!");
+        return AUDIO_ERROR;
+    }
+    return AUDIO_SUCCESS;
+}
+
+int32_t StreamManagerSetParam(AudioLinkDirection direction, const char *param, uint32_t len)
+{
+    int32_t ret = AUDIO_SUCCESS;
+    MediaMutexLock(g_mutex);
+    switch (direction) {
+        case AUDIO_DOWN_LINK:
+            ret = SetStreamOutParamValue(param, len);
+            break;
+        case AUDIO_UP_LINK:
+            ret = SetStreamInParamValue(param, len);
+            break;
+        default:
+            ALOGI("not find match direction!");
+            return AUDIO_ERROR;
+    }
+    MediaMutexUnLock(g_mutex);
+    return ret;
+}
+
+int32_t StreamManagerGetParam(AudioLinkDirection direction, char *param, uint32_t len)
+{
+    int32_t ret = AUDIO_SUCCESS;
+    MediaMutexLock(g_mutex);
+    switch (direction) {
+        case AUDIO_DOWN_LINK:
+            ret = GetStreamOutParamValue(param, len);
+            break;
+        case AUDIO_UP_LINK:
+            ret = GetStreamInParamValue(param, len);
+            break;
+        default:
+            ALOGE("not find match direction!");
+            return AUDIO_ERROR;
+    }
+    MediaMutexUnLock(g_mutex);
+    return ret;
+}
+
 #ifdef __cplusplus
 #if __cplusplus
 }
index 8347520..8f07294 100644 (file)
@@ -135,6 +135,7 @@ static bool CheckRenderValid(const struct AudioRender *render)
 
     CHK_NULL_RETURN(render->attr.GetCurrentChannelId, false, "render attr GetCurrentChannelId is NULL");
     CHK_NULL_RETURN(render->attr.SetExtraParams, false, "render attr SetExtraParams is NULL");
+    CHK_NULL_RETURN(render->attr.GetExtraParams, false, "render attr GetExtraParams is NULL");
 
     CHK_NULL_RETURN(render->scene.SelectScene, false, "render scene SelectScene is NULL");
 
@@ -946,6 +947,25 @@ int32_t SetTrackParam(uintptr_t handle, const char *keyValueList, size_t len)
     return AUDIO_SUCCESS;
 }
 
+int32_t GetTrackParam(uintptr_t handle, char *keyValueList, size_t len)
+{
+    TrackHandleContext *context = (TrackHandleContext *)handle;
+    CHK_NULL_RETURN(context, AUDIO_ERROR, "TrackHandleContext *context is NULL");
+    CHK_NULL_RETURN(keyValueList, AUDIO_ERROR, "TrackHandleContext *keyValueList is NULL");
+    if (len == 0) {
+        ALOGE("len invalid ");
+        return AUDIO_ERROR;
+    }
+    if (context->render != NULL) {
+        int32_t ret = context->render->attr.GetExtraParams((AudioHandle)context->render, keyValueList, (int32_t)len);
+        if (ret != AUDIO_SUCCESS) {
+            ALOGE("get extra data failed! ret = %d", ret);
+            return ret;
+        }
+    }
+    return AUDIO_SUCCESS;
+}
+
 int32_t DeactivateCorrespondingTrack(uintptr_t handle)
 {
     TrackHandleContext *context = (TrackHandleContext *)handle;
index f588c33..8565658 100644 (file)
@@ -35,7 +35,8 @@ public:
     int32_t SetInputDevice(int32_t deviceId, AudioRendererConfig &renderConfig) const;
     int32_t ObtainBuffer(CapturerBuffer &buffer, bool isBlocking) const;
     int32_t Release() const;
-
+    int32_t SetParam(const char *keyValueList, int32_t len) const;
+    int32_t GetParam(char *keyValueList, int32_t len);
 private:
     uintptr_t streamHandle_;
     void *mutex;
index 8fe7964..9cf4c4b 100644 (file)
@@ -39,8 +39,8 @@ public:
     int32_t GetBufferFrameSize() const;
     int32_t GetBufferUnderflowTimes() const; // del DFX
     StreamDebugInfo DumpInfo() const;
-    int32_t SetParam(std::string &keyValueList) const;
-
+    int32_t SetParam(const char *keyValueList, int32_t len) const;
+    int32_t GetParam(char *keyValueList, int32_t len);
 private:
     uintptr_t streamHandle_;
     void *mutex;
index 874d15c..02cee7f 100644 (file)
@@ -161,4 +161,30 @@ int32_t AudioStreamIn::Release() const
     MediaMutexUnLock(mutex);
     return AUDIO_SUCCESS;
 }
+
+int32_t AudioStreamIn::SetParam(const char *keyValueList, int32_t len) const
+{
+    MediaMutexLock(mutex);
+    int32_t ret = SetSourceParam(streamHandle_, keyValueList, len);
+    if (ret != AUDIO_SUCCESS) {
+        ALOGE("AudioStreamIn::SetParam call SetSourceParam failed, ret:%d.", ret);
+        MediaMutexUnLock(mutex);
+        return AUDIO_ERROR;
+    }
+    MediaMutexUnLock(mutex);
+    return AUDIO_SUCCESS;
+}
+
+int32_t AudioStreamIn::GetParam(char *keyValueList, int32_t len)
+{
+    MediaMutexLock(mutex);
+    int32_t ret = GetSourceParam(streamHandle_, keyValueList, len);
+    if (ret != AUDIO_SUCCESS) {
+        ALOGE("AudioStreamIn::GetParam call GetSourceParam failed, ret:%d.", ret);
+        MediaMutexUnLock(mutex);
+        return AUDIO_ERROR;
+    }
+    MediaMutexUnLock(mutex);
+    return AUDIO_SUCCESS;
+}
 }
index 21b0904..4593183 100644 (file)
@@ -281,12 +281,10 @@ StreamDebugInfo AudioStreamOut::DumpInfo() const
     return info;
 }
 
-int32_t AudioStreamOut::SetParam(std::string &keyValueList) const
+int32_t AudioStreamOut::SetParam(const char *keyValueList, int32_t len) const
 {
     MediaMutexLock(mutex);
-    size_t len = keyValueList.size();
-    const char *keyValueStr = keyValueList.c_str();
-    int32_t ret = SetTrackParam(streamHandle_, keyValueStr, len);
+    int32_t ret = SetTrackParam(streamHandle_, keyValueList, len);
     if (ret != AUDIO_SUCCESS) {
         ALOGE("AudioStreamOut::SetParam call SetTrackParam failed, ret:%d.", ret);
         MediaMutexUnLock(mutex);
@@ -295,4 +293,17 @@ int32_t AudioStreamOut::SetParam(std::string &keyValueList) const
     MediaMutexUnLock(mutex);
     return AUDIO_SUCCESS;
 }
+
+int32_t AudioStreamOut::GetParam(char *keyValueList, int32_t len)
+{
+    MediaMutexLock(mutex);
+    int32_t ret = GetTrackParam(streamHandle_, keyValueList, len);
+    if (ret != AUDIO_SUCCESS) {
+        ALOGE("AudioStreamOut::GetParam call GetTrackParam failed, ret:%d.", ret);
+        MediaMutexUnLock(mutex);
+        return AUDIO_ERROR;
+    }
+    MediaMutexUnLock(mutex);
+    return AUDIO_SUCCESS;
+}
 }
index 46654fc..0219c66 100644 (file)
@@ -331,6 +331,10 @@ public:
 \r
     int32_t DumpInfo(AudioManagerDebugInfo &audioManagerInfo);\r
 \r
+    int32_t SetParam(AudioLinkDirection direction, const char *param, uint32_t len);\r
+\r
+    int32_t GetParam(AudioLinkDirection direction, char *param, uint32_t len);\r
+\r
 private:\r
     AudioManager() noexcept;\r
     class AudioManagerImpl;\r
index 69568fd..971752c 100644 (file)
@@ -695,8 +695,7 @@ int32_t AudioSink::SetParam(std::string &key, const DataType type, const void *v
         free(buf);
         return SINK_INVALID_OP;
     }
-    std::string keyValueList(buf);
-    ret = outStream_->SetParam(keyValueList);
+    ret = outStream_->SetParam(buf, bufLen);
     if (buf != nullptr) {
         free(buf);
         buf = nullptr;
index 7cb3310..1740728 100644 (file)
@@ -10,6 +10,7 @@
 #include <iostream>
 #include <memory>
 #include <stdlib.h>
+#include "securec.h"
 #include "audio_utils.h"
 #include "audio_errors.h"
 #include "audio_manager.h"
@@ -27,13 +28,23 @@ using Audio::AudioStreamOut;
 using Audio::InterruptListener;
 using Audio::AudioInterrupt;
 
-#define LOG_MODULE_NAME "AudioManagerCWrapper"
-#define BUFFER_SIZE            20
-
 #ifdef __cplusplus
 extern "C" {
 #endif
 
+#define LOG_MODULE_NAME "AudioManagerCWrapper"
+#define BUFFER_SIZE            120
+#define VQE_PREFIX_LEN         18
+#define PEQ_PREFIX_LEN         50
+#define NV_AUDIO_PEQ_PARAM_SIZE 41
+#define NV_AUDIO_VQE_PARAM_SIZE 53
+#define PEQ_PARAM_SIZE         (NV_AUDIO_PEQ_PARAM_SIZE * sizeof(uint32_t))
+#define VQE_PARAM_SIZE         (NV_AUDIO_VQE_PARAM_SIZE * sizeof(uint32_t))
+#define SEA_BUFFER_SIZE        (VQE_PARAM_SIZE + VQE_PREFIX_LEN)
+#define AEF_BUFFER_SIZE        (PEQ_PARAM_SIZE + PEQ_PREFIX_LEN)
+#define PEQ_PREFIX_LEN         50
+
+
 static AudioManager& g_amInstance = AudioManager::GetInstance();
 static std::shared_ptr<AudioStreamIn> g_streamIn = nullptr;
 static std::shared_ptr<AudioStreamOut> g_streamOut = nullptr;
@@ -252,14 +263,8 @@ int32_t AudioStreamOutSetMute(bool mute)
 
 int32_t AudioManagerSetSeaEnable(bool enable)
 {
-    char buf[BUFFER_SIZE] = { 0 };
-    int32_t ret = snprintf(buf, BUFFER_SIZE, "%s = %d", "seaenable", enable);
-    if (ret < 0) {
-        ALOGE("sprintf_s failed");
-        return AUDIO_ERROR;
-    }
-    std::string str(buf);
-    ret = g_streamOut->SetParam(str);
+    std::string str("seaenable = " + std::to_string(enable));
+    int32_t ret = g_streamOut->SetParam(str.c_str(), str.size());
     if (ret != AUDIO_SUCCESS) {
         ALOGE("set sea enable failed");
         return AUDIO_ERROR;
@@ -391,6 +396,82 @@ int32_t AudioManagerA2dpSinkSetParam(AudioFormatConfig config)
     return AUDIO_SUCCESS;
 }
 
+int32_t AudioManagerSetSeaParam(const uint8_t *seaParam, uint16_t len)
+{
+    if (seaParam == NULL) {
+        ALOGE("sea_param null");
+        return AUDIO_INVALID_PARAMS;
+    }
+    char *seaBuf = (char *)malloc(SEA_BUFFER_SIZE);
+    if (seaBuf == NULL) {
+        ALOGE("malloc fail");
+        return AUDIO_NO_MEM;
+    }
+    if (memset_s(seaBuf, SEA_BUFFER_SIZE, 0, SEA_BUFFER_SIZE) != EOK) {
+        ALOGE("memset_s fail");
+        free(seaBuf);
+        return AUDIO_NO_MEM;
+    }
+    int32_t prefixLen = sprintf_s(seaBuf, SEA_BUFFER_SIZE, "%s = %u:", "setseaparam", len);
+    if (prefixLen < 0) {
+        ALOGE("sprintf_s failed");
+        free(seaBuf);
+        return AUDIO_ERROR;
+    }
+    if (memcpy_s(seaBuf + prefixLen, SEA_BUFFER_SIZE - prefixLen, seaParam, len) != EOK) {
+        ALOGE("memcpy_s failed");
+        free(seaBuf);
+        return AUDIO_ERROR;
+    }
+    int32_t ret = g_amInstance.SetParam(AUDIO_UP_LINK, seaBuf, BUFFER_SIZE);
+    if (ret != AUDIO_SUCCESS) {
+        ALOGE("set param failed");
+        free(seaBuf);
+        return AUDIO_ERROR;
+    }
+    free(seaBuf);
+    ALOGE("set param success!");
+    return AUDIO_SUCCESS;
+}
+
+int32_t AudioManagerGetSeaParam(uint8_t *seaParam, uint16_t len)
+{
+    if (seaParam == NULL) {
+        ALOGE("sea_param null");
+        return AUDIO_INVALID_PARAMS;
+    }
+    char *seaBuf = (char *)malloc(SEA_BUFFER_SIZE);
+    if (seaBuf == NULL) {
+        ALOGE("malloc fail");
+        return AUDIO_NO_MEM;
+    }
+    if (memset_s(seaBuf, SEA_BUFFER_SIZE, 0, SEA_BUFFER_SIZE) != EOK) {
+        ALOGE("memset_s fail");
+        free(seaBuf);
+        return AUDIO_NO_MEM;
+    }
+    int32_t prefixLen = sprintf_s(seaBuf, SEA_BUFFER_SIZE, "%s = %u", "getseaparam", len);
+    if (prefixLen < 0) {
+        ALOGE("sprintf_s failed");
+        free(seaBuf);
+        return AUDIO_ERROR;
+    }
+    int32_t ret = g_amInstance.GetParam(AUDIO_UP_LINK, seaBuf, SEA_BUFFER_SIZE);
+    if (ret != AUDIO_SUCCESS) {
+        ALOGE("get param failed");
+        free(seaBuf);
+        return AUDIO_ERROR;
+    }
+    if (memcpy_s(seaParam, SEA_BUFFER_SIZE, seaBuf, len) != EOK) {
+        ALOGE("memcpy_s failed");
+        free(seaBuf);
+        return AUDIO_ERROR;
+    }
+    free(seaBuf);
+    ALOGE("get param success!");
+    return AUDIO_SUCCESS;
+}
+
 static void WaitA2dpStartWhenDelay(AudioManagerA2dpContext *a2dpContext)
 {
     while (true) {
@@ -404,7 +485,7 @@ static void WaitA2dpStartWhenDelay(AudioManagerA2dpContext *a2dpContext)
     }
 }
 
-static int32_t DisConnectBluetoothA2dpDevice(AudioManagerA2dpContext *a2dpContext)
+static int32_t DisConnectBluetoothA2dpDevice(void)
 {
     if (CheckA2dpSourceConnectState()) {
         int32_t ret = g_amInstance.SetDeviceConnectionState(OUT_BLUETOOTH_A2DP,
@@ -417,7 +498,7 @@ static int32_t DisConnectBluetoothA2dpDevice(AudioManagerA2dpContext *a2dpContex
     return AUDIO_SUCCESS;
 }
 
-static int32_t ConnectBluetoothA2dpDevice(AudioManagerA2dpContext *a2dpContext)
+static int32_t ConnectBluetoothA2dpDevice(void)
 {
     if (CheckA2dpSourceConnectState()) {
         int32_t ret = g_amInstance.SetDeviceConnectionState(OUT_BLUETOOTH_A2DP,
@@ -430,6 +511,25 @@ static int32_t ConnectBluetoothA2dpDevice(AudioManagerA2dpContext *a2dpContext)
     return AUDIO_SUCCESS;
 }
 
+static int32_t AudioManagerA2dpSessionInitInner(AudioManagerA2dpContext *a2dpContext)
+{
+    AudioSession sessionID = g_amInstance.MakeSessionId();
+    if (sessionID == AUDIO_SESSION_ID_NONE) {
+        ALOGE("get sessionid fail.\n");
+        return AUDIO_ERROR;
+    }
+    g_a2dpInputConfig.sessionID = sessionID;
+    g_a2dpRenderConfig.sessionID = sessionID;
+    std::shared_ptr<AudioManagerA2dpInterruptListener> listener =
+        std::make_shared<AudioManagerA2dpInterruptListener>(a2dpContext);
+    if (listener == nullptr || listener.get() == nullptr) {
+        ALOGE("listener is nullptr");
+        return AUDIO_ERROR;
+    }
+    a2dpContext->interrupt = { AUDIO_STREAM_A2DP_MUSIC, sessionID, listener };
+    return AUDIO_SUCCESS;
+}
+
 static int32_t AudioManagerA2dpSessionInit(AudioManagerA2dpContext *a2dpContext)
 {
     bool success = g_amInstance.Initialize();
@@ -437,23 +537,14 @@ static int32_t AudioManagerA2dpSessionInit(AudioManagerA2dpContext *a2dpContext)
         ALOGE("audio manager init failed");
         return AUDIO_ERROR;
     }
+    int32_t ret = 0;
     while (true) {
-        AudioSession sessionID = g_amInstance.MakeSessionId();
-        if (sessionID == AUDIO_SESSION_ID_NONE) {
-            ALOGE("get sessionid fail.\n");
-            return AUDIO_ERROR;
-        }
-        g_a2dpInputConfig.sessionID = sessionID;
-        g_a2dpRenderConfig.sessionID = sessionID;
-        std::shared_ptr<AudioManagerA2dpInterruptListener> listener =
-            std::make_shared<AudioManagerA2dpInterruptListener>(a2dpContext);
-        if (listener == nullptr || listener.get() == nullptr) {
-            ALOGE("listener is nullptr");
+        ret = AudioManagerA2dpSessionInitInner(a2dpContext);
+        if (ret != AUDIO_SUCCESS) {
             return AUDIO_ERROR;
         }
-        a2dpContext->interrupt = { AUDIO_STREAM_A2DP_MUSIC, sessionID, listener };
         /* After the delayed stream is woken up, the focus needs to be applied for again
-       because the focus may be outdated and the policy needs to be obtained again.*/
+       because the focus may be outdated and the policy needs to be obtained again. */
         int32_t strategy = g_amInstance.ActivateAudioInterrupt(a2dpContext->interrupt);
         if (strategy == INTERRUPT_FAILED) {
             ALOGE("activate audio interrupt faild");
@@ -462,8 +553,7 @@ static int32_t AudioManagerA2dpSessionInit(AudioManagerA2dpContext *a2dpContext)
         if (strategy == INTERRUPT_DELAYED) {
             WaitA2dpStartWhenDelay(a2dpContext);
             if (a2dpContext->isA2dpSinkStopped) {
-                g_amInstance.DeactivateAudioInterrupt(a2dpContext->interrupt);
-                return AUDIO_ERROR;
+                goto EXIT;
             }
             continue;
         }
@@ -471,14 +561,14 @@ static int32_t AudioManagerA2dpSessionInit(AudioManagerA2dpContext *a2dpContext)
     }
     a2dpContext->isA2dpSinkResumed = false;
     a2dpContext->isA2dpSinkPause = false;
-    int32_t ret = DisConnectBluetoothA2dpDevice(a2dpContext);
+    ret = DisConnectBluetoothA2dpDevice();
     if (ret != AUDIO_SUCCESS) {
         goto EXIT;
     }
     ret = g_amInstance.SetDeviceConnectionState(IN_BLUETOOTH_A2DP,
         AUDIO_DEVICE_CONNECTED);
     if (ret != AUDIO_SUCCESS) {
-        ConnectBluetoothA2dpDevice(a2dpContext);
+        ConnectBluetoothA2dpDevice();
         goto EXIT;
     }
     return AUDIO_SUCCESS;
@@ -619,7 +709,7 @@ static int32_t AudioManagerA2dpDeinit(AudioManagerA2dpContext *a2dpContext, bool
         if (ret != AUDIO_SUCCESS) {
             ALOGE("AudioManagerSetDeviceConnectionState fail.\n");
         }
-        ConnectBluetoothA2dpDevice(a2dpContext);
+        ConnectBluetoothA2dpDevice();
         ret = g_amInstance.DeactivateAudioInterrupt(a2dpContext->interrupt);
         if (ret != AUDIO_SUCCESS) {
             return ret;
index b53b7cf..11ae9e0 100644 (file)
@@ -54,6 +54,10 @@ int32_t AudioStreamOutStop(void);
 
 int32_t AudioStreamOutDeinit(void);
 
+int32_t AudioManagerSetSeaParam(const uint8_t *seaParam, uint16_t len);
+
+int32_t AudioManagerGetSeaParam(uint8_t *seaParam, uint16_t len);
+
 int32_t AudioManagerA2dpSinkSetParam(AudioFormatConfig config);
 
 int32_t AudioManagerA2dpSinkCreate(void);
index 556dd2b..22b1dea 100644 (file)
@@ -19,6 +19,7 @@
 #include <sys/types.h>\r
 #include <sys/stat.h>\r
 #include <fcntl.h>\r
+#include <atomic>\r
 #ifdef SUPPORT_SYS_PRCTL\r
 #include <sys/prctl.h>\r
 #endif\r
@@ -52,7 +53,7 @@ const uint32_t STREAM_FLAG_EOS = 4;
 const uint32_t STREAM_FLAG_PARTIAL_FRAME = 8;\r
 const uint32_t MAX_ARGC = 5;\r
 #define MEDIA_PATH_MAX 260\r
-\r
+#define MEDIA_MAX_PLAYER_TASK 6\r
 #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]))\r
 \r
 #define IS_OK(ret) \\r
@@ -108,7 +109,7 @@ typedef struct {
     AudioInterrupt interrupt;\r
     MediaThreadIdHandle playTask;\r
     bool isSingleLoop;\r
-    bool taskAlive;\r
+    std::atomic<bool> taskAlive;\r
     std::shared_ptr<Player> player;\r
     AudioStreamType streamType;\r
 } SampleParam;\r
@@ -119,6 +120,22 @@ typedef struct TagIdleBuffer {
     size_t size;\r
 } IdleBuffer;\r
 \r
+typedef struct {\r
+    MediaThreadIdHandle playTask;\r
+    AudioStreamType streamType;\r
+} PlayerTaskContext;\r
+\r
+static PlayerTaskContext g_playerTask[MEDIA_MAX_PLAYER_TASK] = {\r
+    {nullptr, AUDIO_STREAM_INVALID},\r
+    {nullptr, AUDIO_STREAM_INVALID},\r
+    {nullptr, AUDIO_STREAM_INVALID},\r
+    {nullptr, AUDIO_STREAM_INVALID},\r
+    {nullptr, AUDIO_STREAM_INVALID},\r
+    {nullptr, AUDIO_STREAM_INVALID},\r
+};\r
+\r
+static MediaMutexHandle g_playerTaskMutex = NULL;\r
+\r
 static const char *g_songList[] = {\r
     "/user/test/cai.mp3",\r
     "/user/test/guyongzhe_8k_2ch_8k_0x20000.mp3"\r
@@ -133,6 +150,9 @@ static AudioManager& g_amInstance = AudioManager::GetInstance();
 static TestSample  g_sample;\r
 static TestSample  g_tonePlayersample;\r
 \r
+static void WaitPlayerTaskEnd(SampleParam *sampleParam);\r
+static void StorePlayerTaskInfo(SampleParam *sampleParam);\r
+\r
 typedef enum {\r
     MEDIA_AUDIO_PLAY_START,             // 00\r
     MEDIA_AUDIO_PLAY_PAUSE,             // 01\r
@@ -595,13 +615,11 @@ static int32_t PlayerTaskInitInfo(SampleParam *sampleParam, AudioSession &sessio
     sampleParam->testSample.mutex = MediaMutexCreate(nullptr);\r
     if (sampleParam->testSample.mutex == nullptr) {\r
         MEDIA_ERR_LOG("create mutex failed");\r
-        sampleParam->taskAlive = false;\r
         return -1;\r
     }\r
     sampleParam->testSample.cond = MediaThreadCondCreate();\r
     if (sampleParam->testSample.cond == nullptr) {\r
         MEDIA_ERR_LOG("create cond failed");\r
-        sampleParam->taskAlive = false;\r
         (void)MediaMutexDestroy(&sampleParam->testSample.mutex);\r
         return -1;\r
     }\r
@@ -615,13 +633,12 @@ static int32_t PlayerTaskInitInfo(SampleParam *sampleParam, AudioSession &sessio
             std::make_shared<PlayerInterruptListener>(sampleParam->testSample);\r
         sampleParam->interrupt = { sampleParam->streamType, sessionId, playerInterruptListener };\r
         /* After the delayed stream is woken up, the focus needs to be applied for again\r
-        because the focus may be outdated and the policy needs to be obtained again.*/\r
+        because the focus may be outdated and the policy needs to be obtained again. */\r
         int32_t strategy = g_amInstance.ActivateAudioInterrupt(sampleParam->interrupt);\r
         if (strategy == INTERRUPT_FAILED) {\r
             MEDIA_ERR_LOG("ActivateAudioInterrupt failed");\r
             (void)MediaMutexDestroy(&sampleParam->testSample.mutex);\r
             (void)MediaThreadCondDestroy(&sampleParam->testSample.cond);\r
-            sampleParam->taskAlive = false;\r
             return -1;\r
         }\r
         if (strategy == INTERRUPT_DELAYED) {\r
@@ -630,7 +647,6 @@ static int32_t PlayerTaskInitInfo(SampleParam *sampleParam, AudioSession &sessio
                 (void)MediaMutexDestroy(&sampleParam->testSample.mutex);\r
                 (void)MediaThreadCondDestroy(&sampleParam->testSample.cond);\r
                 g_amInstance.DeactivateAudioInterrupt(sampleParam->interrupt);\r
-                sampleParam->taskAlive = false;\r
                 return -1;\r
             }\r
             continue;\r
@@ -666,8 +682,7 @@ static void PlayerStreamExit(SampleParam *sampleParam)
 \r
     MediaMutexDestroy(&sampleParam->testSample.mutex);\r
     MediaThreadCondDestroy(&sampleParam->testSample.cond);\r
-    sampleParam->taskAlive = false;\r
-    MEDIA_INFO_LOG("PlayerTaskEntry exit");\r
+    sampleParam->taskAlive.store(false);\r
 }\r
 \r
 void WaitPlayCompletedOrStop(SampleParam *sampleParam)\r
@@ -693,6 +708,7 @@ static void *PlayerTaskEntry(void *priv)
     std::shared_ptr<Player> player = sampleParam->player;\r
     int32_t ret = PlayerTaskInitInfo(sampleParam, sessionId);\r
     if (ret != 0) {\r
+        sampleParam->taskAlive.store(false);\r
         return nullptr;\r
     }\r
     MediaMutexLock(sampleParam->testSample.mutex);\r
@@ -718,10 +734,7 @@ static void *PlayerTaskEntry(void *priv)
     ret = player->Play();\r
     if (ret != 0) {\r
         MediaMutexUnLock(sampleParam->testSample.mutex);\r
-        PlayerRunExit(sampleParam);\r
-        PlayerStreamExit(sampleParam);\r
-        MEDIA_INFO_LOG("PlayerTaskEntry exit");\r
-        return nullptr;\r
+        goto EXIT;\r
     }\r
     if (sampleParam->isSingleLoop) {\r
         // enable loop\r
@@ -729,16 +742,12 @@ static void *PlayerTaskEntry(void *priv)
         if (ret != 0) {\r
             MEDIA_ERR_LOG("EnableSingleLooping failed:%d", ret);\r
         }\r
-        sampleParam->isSingleLoop = player->IsSingleLooping();\r
-        if (!sampleParam->isSingleLoop) {\r
-            MEDIA_ERR_LOG("IsSingleLooping failed IsSingleLooping:%d", sampleParam->isSingleLoop);\r
-        }\r
-        MEDIA_INFO_LOG("IsSingleLooping:%d", sampleParam->isSingleLoop);\r
     }\r
-    sampleParam->taskAlive = true;\r
     WaitPlayCompletedOrStop(sampleParam);\r
+EXIT:\r
     PlayerRunExit(sampleParam);\r
     PlayerStreamExit(sampleParam);\r
+    MEDIA_INFO_LOG("PlayerTaskEntry exit");\r
     return nullptr;\r
 }\r
 \r
@@ -814,7 +823,7 @@ static int32_t PlaySampleStop(SampleParam *sampleParam)
     sampleParam->testSample.isStop = true;\r
     MediaThreadCondSignal(sampleParam->testSample.cond);\r
     MediaMutexUnLock(sampleParam->testSample.mutex);\r
-\r
+    WaitPlayerTaskEnd(sampleParam);\r
     MEDIA_ERR_LOG("success");\r
     return 0;\r
 }\r
@@ -951,13 +960,7 @@ static int32_t PlaySampleSwitchSong(SampleParam *sampleParam)
     sampleParam->testSample.isStop = true;\r
     MediaThreadCondSignal(sampleParam->testSample.cond);\r
     MediaMutexUnLock(sampleParam->testSample.mutex);\r
-\r
-    while (sampleParam->taskAlive) {\r
-        // loop sleep 100ms for the previous music exits\r
-        // the previous playerTask thread have detached therefore can't use MediaThreadJoin\r
-        usleep(LOOP_WAIT_PLAY_EXIT_SLEEP_TIME_US);\r
-    }\r
-\r
+    WaitPlayerTaskEnd(sampleParam);\r
     if (strncmp(sampleParam->control, "prevsong", strlen("prevsong")) == 0) {\r
         if (g_currentSongIndex == 0) {\r
             g_currentSongIndex = g_totalSongEntries - 1;\r
@@ -988,14 +991,14 @@ static int32_t PlaySampleSwitchSong(SampleParam *sampleParam)
         return -1;\r
     }\r
 \r
-    MediaThreadattr attr = { "playerTask", 0x1800, THREAD_SCHED_INVALID, 80, true };\r
+    MediaThreadattr attr = { "playerTask", 0x1800, THREAD_SCHED_INVALID, 80, false };\r
     MediaThreadIdHandle taskHandle = MediaThreadCreate(PlayerTaskEntry, sampleParam, &attr);\r
     if (taskHandle == nullptr) {\r
         MEDIA_ERR_LOG("thread create failed");\r
         return -1;\r
     }\r
     sampleParam->playTask = taskHandle;\r
-\r
+    StorePlayerTaskInfo(sampleParam);\r
     MEDIA_INFO_LOG("next/previous end");\r
     return 0;\r
 }\r
@@ -1097,7 +1100,7 @@ static int32_t PlayerSampleInit(SampleParam **sampleParam, int32_t argc, const c
             MEDIA_ERR_LOG("malloc failed");\r
             return -1;\r
         }\r
-        (*sampleParam)->taskAlive = false;\r
+        (*sampleParam)->taskAlive.store(false);\r
         if (memset_s(*sampleParam, sizeof(SampleParam), 0, sizeof(SampleParam)) != EOK) {\r
             MEDIA_ERR_LOG("memset_s failed");\r
         }\r
@@ -1157,6 +1160,60 @@ static int32_t HandlePlayerSampleCmd(SampleParam *sampleParam, const char** argv
     }\r
 }\r
 \r
+static void WaitPlayerTaskEnd(SampleParam *sampleParam)\r
+{\r
+    MediaInitStaticMutexLock(&g_playerTaskMutex);\r
+    MediaMutexLock(g_playerTaskMutex);\r
+    for (size_t i = 0; i < MEDIA_MAX_PLAYER_TASK; i++) {\r
+        if (g_playerTask[i].playTask == nullptr ||\r
+            g_playerTask[i].streamType == AUDIO_STREAM_INVALID) {\r
+            continue;\r
+        }\r
+        if (sampleParam->playTask == g_playerTask[i].playTask &&\r
+            sampleParam->streamType == g_playerTask[i].streamType) {\r
+            MediaMutexUnLock(g_playerTaskMutex);\r
+            MediaThreadJoin(&sampleParam->playTask);\r
+            MediaMutexLock(g_playerTaskMutex);\r
+            g_playerTask[i].streamType = AUDIO_STREAM_INVALID;\r
+            g_playerTask[i].playTask = nullptr;\r
+            break;\r
+        }\r
+    }\r
+    MediaMutexUnLock(g_playerTaskMutex);\r
+}\r
+\r
+static bool FindAndUpdateplayerTask(SampleParam *sampleParam)\r
+{\r
+    for (size_t i = 0; i < MEDIA_MAX_PLAYER_TASK; i++) {\r
+        if (g_playerTask[i].playTask == sampleParam->playTask ||\r
+            g_playerTask[i].streamType == sampleParam->streamType) {\r
+            g_playerTask[i].streamType = sampleParam->streamType;\r
+            g_playerTask[i].playTask = sampleParam->playTask;\r
+            return true;\r
+        }\r
+    }\r
+    return false;\r
+}\r
+\r
+static void StorePlayerTaskInfo(SampleParam *sampleParam)\r
+{\r
+    MediaInitStaticMutexLock(&g_playerTaskMutex);\r
+    MediaMutexLock(g_playerTaskMutex);\r
+    if (FindAndUpdateplayerTask(sampleParam)) {\r
+        MediaMutexUnLock(g_playerTaskMutex);\r
+        return;\r
+    }\r
+    for (size_t i = 0; i < MEDIA_MAX_PLAYER_TASK; i++) {\r
+        if (g_playerTask[i].playTask == nullptr &&\r
+            g_playerTask[i].streamType == AUDIO_STREAM_INVALID) {\r
+            g_playerTask[i].streamType = sampleParam->streamType;\r
+            g_playerTask[i].playTask = sampleParam->playTask;\r
+            break;\r
+        }\r
+    }\r
+    MediaMutexUnLock(g_playerTaskMutex);\r
+}\r
+\r
 int32_t PlayerSample(int32_t argc, const char** argv)\r
 {\r
     SourceType sourceType = SourceType::SOURCE_TYPE_FD;\r
@@ -1170,8 +1227,12 @@ int32_t PlayerSample(int32_t argc, const char** argv)
     }\r
     MEDIA_INFO_LOG("argv[0]:%s", argv[0]);\r
     /* todo :Modifying playback keywords */\r
-    if (!g_sampleParam->taskAlive && strncmp(g_sampleParam->control, "xx", strlen("xx")) == 0) {\r
-        g_sampleParam->taskAlive = true;\r
+    if (strncmp(g_sampleParam->control, "xx", strlen("xx")) == 0) {\r
+        if (g_sampleParam->taskAlive.load()) {\r
+            MEDIA_ERR_LOG("playerTask exists, Enter the stop command first");\r
+            return -1;\r
+        }\r
+        g_sampleParam->taskAlive.store(true);\r
         if (argc < 4) { /* 4: invalid argc */\r
             goto FREE;\r
         }\r
@@ -1192,18 +1253,18 @@ int32_t PlayerSample(int32_t argc, const char** argv)
             MEDIA_ERR_LOG("input path too long");\r
             goto FREE;\r
         }\r
-        MediaThreadattr attr = { "playerTask", 0x1800, THREAD_SCHED_INVALID, 80, true };\r
+        WaitPlayerTaskEnd(g_sampleParam);\r
+        MediaThreadattr attr = { "playerTask", 0x1800, THREAD_SCHED_INVALID, 80, false };\r
         MediaThreadIdHandle taskHandle = MediaThreadCreate(PlayerTaskEntry, g_sampleParam, &attr);\r
         if (taskHandle == nullptr) {\r
             MEDIA_ERR_LOG("thread create failed");\r
             goto FREE;\r
         }\r
         g_sampleParam->playTask = taskHandle;\r
-    } else if (g_sampleParam->taskAlive && strncmp(g_sampleParam->control, "xx", strlen("xx")) == 0) { /* 2: xx */\r
-        MEDIA_ERR_LOG("playerTask exists, Enter the stop command first");\r
+        StorePlayerTaskInfo(g_sampleParam);\r
+    } else {\r
+        ret = HandlePlayerSampleCmd(g_sampleParam, argv);\r
     }\r
-    // will free g_sampleParam when play exit\r
-    ret = HandlePlayerSampleCmd(g_sampleParam, argv);\r
     MEDIA_INFO_LOG("PlayerSample end");\r
     return ret;\r
 \r
@@ -1226,8 +1287,12 @@ int32_t TonePlayerSampleTest(int32_t argc, const char *argv[])
     }\r
     MEDIA_INFO_LOG("argv[0]:%s", argv[0]);\r
     /* todo :Modifying playback keywords */\r
-    if (!g_tonePlayersampleParam->taskAlive && strncmp(g_tonePlayersampleParam->control, "xx", strlen("xx")) == 0) {\r
-        g_tonePlayersampleParam->taskAlive = true;\r
+    if (strncmp(g_tonePlayersampleParam->control, "xx", strlen("xx")) == 0) {\r
+        if (g_tonePlayersampleParam->taskAlive.load()) {\r
+            MEDIA_ERR_LOG("playerTask exists, Enter the stop command first");\r
+            return -1;\r
+        }\r
+        g_tonePlayersampleParam->taskAlive.store(true);\r
         if (argc < 4) { /* 4: invalid argc */\r
             goto FREE;\r
         }\r
@@ -1248,16 +1313,17 @@ int32_t TonePlayerSampleTest(int32_t argc, const char *argv[])
             MEDIA_ERR_LOG("input path too long");\r
             goto FREE;\r
         }\r
-        MediaThreadattr attr = { "tonePlayerTask", 0x1800, THREAD_SCHED_INVALID, 80, true };\r
+        WaitPlayerTaskEnd(g_tonePlayersampleParam);\r
+        MediaThreadattr attr = { "tonePlayerTask", 0x1800, THREAD_SCHED_INVALID, 80, false };\r
         MediaThreadIdHandle taskHandle = MediaThreadCreate(PlayerTaskEntry, g_tonePlayersampleParam, &attr);\r
         if (taskHandle == nullptr) {\r
             MEDIA_ERR_LOG("thread create failed");\r
             goto FREE;\r
         }\r
         g_tonePlayersampleParam->playTask = taskHandle;\r
-    } else if (g_tonePlayersampleParam->taskAlive &&\r
-        strncmp(g_tonePlayersampleParam->control, "xx", strlen("xx")) == 0) { /* 2: xx */\r
-        MEDIA_ERR_LOG("tonePlayerTask exists, Enter the stop command first");\r
+        StorePlayerTaskInfo(g_tonePlayersampleParam);\r
+    } else {\r
+        ret = HandlePlayerSampleCmd(g_tonePlayersampleParam, argv);\r
     }\r
     MEDIA_INFO_LOG("tonePlayerSample end");\r
     return ret;\r
index 42ef36b..207d0af 100644 (file)
@@ -266,7 +266,12 @@ static void SendBackgroundFrame(MediaVideoPlay *videoPlay)
             MEDIA_ERR_LOG("request the last buffer failed");\r
             break;\r
         }\r
-        usleep(WAIT_SURFACE_DEINIT_SUCCESS_US);\r
+        LiteSurface *liteSurface = dynamic_cast<LiteSurface *>(videoPlay->surface_);\r
+        if (liteSurface == nullptr) {\r
+            MEDIA_ERR_LOG("liteSurface is null!");\r
+            break;\r
+        }\r
+        videoPlay->surface_->CancelBuffer(liteSurface->GetBackBuf());\r
     }\r
     if (buf != nullptr) {\r
         buf->format = PIXEL_FMT_BUTT;\r
@@ -375,7 +380,7 @@ void *MediaVideoPlay::VideoPlayThread(void *arg)
         MEDIA_ERR_LOG("release audio focus failed\n");\r
         return nullptr;\r
     }\r
-    MEDIA_INFO_LOG("exit all!\n");\r
+    MEDIA_ERR_LOG("exit all!\n");\r
     return nullptr;\r
 }\r
 \r
@@ -491,6 +496,7 @@ int32_t MediaVideoPlay::GetDumpInfo(PlayerDebugInfo *playerInfo)
 \r
 int32_t MediaVideoPlay::StopVideoPlay(void)\r
 {\r
+    MEDIA_ERR_LOG("StopVideoPlay start!");\r
     MediaMutexLock(mutex_);\r
     if (!isPlayed_) {\r
         MEDIA_INFO_LOG("video play is not start,can not stop!");\r
@@ -516,6 +522,7 @@ int32_t MediaVideoPlay::StopVideoPlay(void)
     MediaMutexUnLock(mutex_);\r
     if (isSyncExitMode_) {\r
         MediaThreadJoin(&threadHandle_);\r
+        dynamic_cast<LiteSurface*>(surface_)->ClearBuffers(); // clear buffers safely in sync mode to reduce peak memory\r
     }\r
     play = nullptr;\r
     return MEDIA_OK;\r
index 7d260a4..2643ad4 100644 (file)
@@ -62,7 +62,7 @@ public:
     bool isPureVideo_ = false;\r
     static MediaVideoPlay *play;\r
 private:\r
-    bool isSyncExitMode_ = false;\r
+    bool isSyncExitMode_ = true;\r
     static void *VideoPlayThread(void *arg);\r
     void DestroyVideoPlaySource(void);\r
 };\r
index eb135f0..3ede935 100644 (file)
@@ -41,6 +41,13 @@ typedef enum {
     AUDIO_MOD_SOUND
 } AudioSDKModuleType;
 
+#ifdef AUDIO_SDK_SUPPORT
+typedef struct {
+    enum AudioFormat audioFormat;
+    uapi_acodec_id codecId;
+} AudioFormatMapping;
+#endif
+
 #define INVALID_ID (-1)
 
 // convert sample rate to number of samples per frame
@@ -49,7 +56,7 @@ typedef enum {
 
 #define VOLUME_MIN 0.0f
 #define VOLUME_MAX 1.0f
-#define MAX_KEY_STR_SIZE 12
+#define MAX_KEY_STR_SIZE 30
 #define MAX_KEY_VALUE_SIZE 512
 
 #define GET_AUDIO_POSITION_INTERVAL_US 10000
@@ -89,6 +96,9 @@ int32_t AudioSDKDetach(AudioSDKModuleType modType, td_handle srcHandle, td_handl
 
 int32_t SaveToggleConfig(uapi_audio_toggle_config *toggleConfig, const char *value, uint32_t valueLen);
 
+int32_t GetParamByValue(uint8_t *param, uint32_t paramLen, const char *value,
+    uint32_t valueLen, uint32_t configLen);
+
 int32_t SetSeaEnable(td_handle seaHandle, const char *value, uint32_t valueLen);
 #endif
 
index 6c71537..8bceeda 100644 (file)
@@ -7,7 +7,7 @@
 #include "plugin_common.h"
 #include <unistd.h>
 #include <string.h>
-
+#include <math.h>
 #include "media_hal_common.h"
 #include "audio_types.h"
 
@@ -72,57 +72,41 @@ bool IsRawFormat(enum AudioFormat audioFormat)
 }
 
 #ifdef AUDIO_SDK_SUPPORT
+static AudioFormatMapping g_audioFormatMap[] = {
+    {AUDIO_FORMAT_PCM_8_BIT, UAPI_ACODEC_ID_PCM},
+    {AUDIO_FORMAT_PCM_16_BIT, UAPI_ACODEC_ID_PCM},
+    {AUDIO_FORMAT_PCM_24_BIT, UAPI_ACODEC_ID_PCM},
+    {AUDIO_FORMAT_PCM_32_BIT, UAPI_ACODEC_ID_PCM},
+    {AUDIO_FORMAT_AAC_MAIN, UAPI_ACODEC_ID_AAC},
+    {AUDIO_FORMAT_AAC_LC, UAPI_ACODEC_ID_AAC},
+    {AUDIO_FORMAT_AAC_LD, UAPI_ACODEC_ID_AAC},
+    {AUDIO_FORMAT_AAC_ELD, UAPI_ACODEC_ID_AAC},
+    {AUDIO_FORMAT_AAC_HE_V1, UAPI_ACODEC_ID_AAC},
+    {AUDIO_FORMAT_AAC_HE_V2, UAPI_ACODEC_ID_AAC},
+    {AUDIO_FORMAT_SBC, UAPI_ACODEC_ID_SBC},
+    {AUDIO_FORMAT_MP3, UAPI_ACODEC_ID_MP3},
+    {AUDIO_FORMAT_mSBC, UAPI_ACODEC_ID_MSBC},
+    {AUDIO_FORMAT_FLAC, UAPI_ACODEC_ID_FLAC},
+    {AUDIO_FORMAT_OPUS, UAPI_ACODEC_ID_OPUS},
+    {AUDIO_FORMAT_VORBIS, UAPI_ACODEC_ID_VORBIS},
+    {AUDIO_FORMAT_APE, UAPI_ACODEC_ID_APE},
+    {AUDIO_FORMAT_SILK, UAPI_ACODEC_ID_SILK},
+    {AUDIO_FORMAT_L2HC, UAPI_ACODEC_ID_L2HC},
+};
+
 bool AudioConvertAudioFormatToCodecId(enum AudioFormat audioFormat, uapi_acodec_id *codecId)
 {
     if (codecId == NULL) {
         return false;
     }
-
-    switch (audioFormat) {
-        case AUDIO_FORMAT_PCM_8_BIT:
-        case AUDIO_FORMAT_PCM_16_BIT:
-        case AUDIO_FORMAT_PCM_24_BIT:
-        case AUDIO_FORMAT_PCM_32_BIT:
-            *codecId = UAPI_ACODEC_ID_PCM;
-            break;
-        case AUDIO_FORMAT_AAC_MAIN:
-        case AUDIO_FORMAT_AAC_LC:
-        case AUDIO_FORMAT_AAC_LD:
-        case AUDIO_FORMAT_AAC_ELD:
-        case AUDIO_FORMAT_AAC_HE_V1:
-        case AUDIO_FORMAT_AAC_HE_V2:
-            *codecId = UAPI_ACODEC_ID_AAC;
-            break;
-        case AUDIO_FORMAT_SBC:
-            *codecId = UAPI_ACODEC_ID_SBC;
-            break;
-        case AUDIO_FORMAT_MP3:
-            *codecId = UAPI_ACODEC_ID_MP3;
-            break;
-        case AUDIO_FORMAT_mSBC:
-            *codecId = UAPI_ACODEC_ID_MSBC;
-            break;
-        case AUDIO_FORMAT_FLAC:
-            *codecId = UAPI_ACODEC_ID_FLAC;
-            break;
-        case AUDIO_FORMAT_OPUS:
-            *codecId = UAPI_ACODEC_ID_OPUS;
-            break;
-        case AUDIO_FORMAT_VORBIS:
-            *codecId = UAPI_ACODEC_ID_VORBIS;
-            break;
-        case AUDIO_FORMAT_APE:
-            *codecId = UAPI_ACODEC_ID_APE;
-            break;
-        case AUDIO_FORMAT_SILK:
-            *codecId = UAPI_ACODEC_ID_SILK;
-            break;
-        default:
-            MEDIA_HAL_LOGW(MODULE_NAME, "Invalid audioFormat: 0x%x", audioFormat);
-            return false;
+    for (uint32_t i = 0; i < sizeof(g_audioFormatMap) / sizeof(AudioFormatMapping); i++) {
+        if (g_audioFormatMap[i].audioFormat == audioFormat) {
+            *codecId = g_audioFormatMap[i].codecId;
+            return true;
+        }
     }
-
-    return true;
+    MEDIA_HAL_LOGW(MODULE_NAME, "Invalid audioFormat: 0x%x", audioFormat);
+    return false;
 }
 
 static int32_t AudioSDKInputInit(void)
@@ -743,6 +727,27 @@ int32_t UpdateCurrentPosition(td_handle trackHandle, struct AudioTimeStamp *time
     return MEDIA_HAL_OK;
 }
 
+int32_t GetParamByValue(uint8_t *param, uint32_t paramLen, const char *value,
+    uint32_t valueLen, uint32_t configLen)
+{
+    uint32_t prefixlen = 0;
+    for (uint32_t i = 0; i < valueLen; i++) {
+        if (value[i] == ':') {
+            prefixlen = i + 1;
+            break;
+        }
+    }
+    if (prefixlen == 0) {
+        MEDIA_HAL_LOGE(MODULE_NAME, "prefix is not found.");
+        return MEDIA_HAL_ERR;
+    }
+    if (memcpy_s(param, paramLen, value + prefixlen, configLen) != EOK) {
+        MEDIA_HAL_LOGE(MODULE_NAME, "set spk cali coef memcpy_s failed!");
+        return MEDIA_HAL_ERR;
+    }
+    return MEDIA_HAL_OK;
+}
+
 int32_t SetSeaEnable(td_handle seaHandle, const char *value, uint32_t valueLen)
 {
     int32_t seaStatus = 0;
index da27f82..d560c86 100644 (file)
@@ -34,12 +34,17 @@ extern "C" {
 #endif
 
 #define MODULE_NAME "AudioPrimarySubPortIn"
-#define SEA_ENABLE   "seaenable"
 
 /* need fix: used for external buffer allocation, internal means samples per frame */
 #define AUDIO_HAL_FRAME_COUNT 1024
 
 #define VOLUME_UNIT 100
+#define MIC_VOLUME   "micvolume"
+#define MIC_TYPE     "mictype"
+#define SEA_ENABLE   "seaenable"
+#define GET_SEA_PARAM "getseaparam"
+#define SET_SEA_PARAM "setseaparam"
+#define SEA_PARAM_LEN 256
 
 static enum AudioFormat g_supportFormats[] = {
     AUDIO_FORMAT_PCM_16_BIT,
@@ -637,15 +642,68 @@ int32_t AudioPrimarySubPortInGetVolume(AudioHandle trackHandle, float *volume)
     return MEDIA_HAL_OK;
 }
 #ifdef AUDIO_SDK_SUPPORT
-static int32_t PrimarySetSeaEnable(AudioHandle trackHandle, const char *value, uint32_t valueLen)
+static int32_t PrimarySetSeaEnable(AudioHandle trackHandle, char *value, uint32_t valueLen)
 {
     SubPortTrackInContext *portTrackInCtx = (SubPortTrackInContext *)trackHandle;
     CHK_NULL_RETURN(value, MEDIA_HAL_INVALID_PARAM, "input param value is null");
+#ifdef MELODY_AUDIO_SUPPORT
+    if (!portTrackInCtx->isNeedOpenSea) {
+        MEDIA_HAL_LOGE(MODULE_NAME, "the sea is not open. can not set sea options!");
+        return MEDIA_HAL_ERR;
+    }
+#endif
     return SetSeaEnable(portTrackInCtx->seaHandle, value, valueLen);
 }
 
+static int32_t SetSeaParam(AudioHandle trackHandle, char *value, uint32_t valueLen)
+{
+    MEDIA_HAL_UNUSED(valueLen);
+    SubPortTrackInContext *portTrackInCtx = (SubPortTrackInContext *)trackHandle;
+    CHK_NULL_RETURN(value, MEDIA_HAL_INVALID_PARAM, "input param value is null");
+    uint32_t paramLen = 0;
+    uint8_t configFlag[MAX_KEY_STR_SIZE] = { 0 };
+    int32_t ret = sscanf_s(value, "%s = %u:", configFlag, MAX_KEY_STR_SIZE, &paramLen);
+    if (ret == -1) {
+        MEDIA_HAL_LOGE(MODULE_NAME, "set aef param sscanf_s failed!");
+        return MEDIA_HAL_ERR;
+    }
+    uint8_t param[SEA_PARAM_LEN] = { 0 };
+    ret = GetParamByValue(param, SEA_PARAM_LEN, value, valueLen, paramLen);
+    if (ret != MEDIA_HAL_OK) {
+        return ret;
+    }
+    ret = uapi_sea_set_param(portTrackInCtx->seaHandle, UAPI_SEA_AFE_SEE, (const td_void *)param, paramLen);
+    if (ret != MEDIA_HAL_OK) {
+        MEDIA_HAL_LOGE(MODULE_NAME, "set aef param failed! ret = %d", ret);
+        return ret;
+    }
+    return MEDIA_HAL_OK;
+}
+
+static int32_t GetSeaParam(AudioHandle trackHandle, char *value, uint32_t valueLen)
+{
+    MEDIA_HAL_UNUSED(valueLen);
+    SubPortTrackInContext *portTrackInCtx = (SubPortTrackInContext *)trackHandle;
+    CHK_NULL_RETURN(value, MEDIA_HAL_INVALID_PARAM, "input param value is null");
+    uint8_t configFlag[MAX_KEY_STR_SIZE] = { 0 };
+    uint32_t paramLen = 0;
+    int32_t ret = sscanf_s((const char *)value, "%s = %u", configFlag, MAX_KEY_STR_SIZE, &paramLen);
+    if (ret == -1) {
+        MEDIA_HAL_LOGE(MODULE_NAME, "set aef param sscanf_s failed!");
+        return MEDIA_HAL_ERR;
+    }
+    ret = uapi_sea_get_param(portTrackInCtx->seaHandle, UAPI_SEA_AFE_SEE, (td_void *)value, paramLen);
+    if (ret != MEDIA_HAL_OK) {
+        MEDIA_HAL_LOGE(MODULE_NAME, "get aef param failed! ret = %d", ret);
+        return ret;
+    }
+    return MEDIA_HAL_OK;
+}
+
 static struct AudioPortInvoke g_primaryInInvokeFuncList[] = {
     {SEA_ENABLE, PrimarySetSeaEnable, true},
+    {SET_SEA_PARAM, SetSeaParam, false},
+    {GET_SEA_PARAM, GetSeaParam, false},
 };
 #endif
 
@@ -663,6 +721,7 @@ int32_t AudioPrimarySubPortInInvoke(AudioHandle trackHandle, enum InvokeID invok
             break;
         }
         case INVOKE_ID_SET_EXTRA_PARAMS:
+        case INVOKE_ID_GET_EXTRA_PARAMS:
         {
             size_t size = sizeof(g_primaryInInvokeFuncList) / sizeof(struct AudioPortInvoke);
             ret = ExtraParamsInvoke(trackHandle, invokeAttr, g_primaryInInvokeFuncList, (uint32_t)size);
index c94fdd1..36dc84e 100644 (file)
 #include "securec.h"
 
 #ifdef AUDIO_SDK_SUPPORT
-
 #include "soc_uapi_adp.h"
 #include "soc_uapi_adec.h"
 #include "soc_uapi_sound.h"
-
 #endif
-
+#if defined(BRANDY_PRODUCT_EVB)
+#include "product_evb_standard.h"
+#elif defined(BRANDY_PRODUCT_EVB4)
+#include "product_evb4_standard.h"
+#endif
 #include "plugin_common.h"
 #include "media_hal_common.h"
 
@@ -29,6 +31,15 @@ extern "C" {
 
 #define MODULE_NAME "AudioPrimarySubPortOut"
 #define EXTRA_DATA "extradata"
+#define VOLUME_TOGGLE_DATA "vtoggle"
+#define NOTIFY_TOGGLE_DATA "ntoggle"
+#define SPEAKER_CALI_COEF_CONFIG_DATA "spkcali"
+#define AEF_ENABLE "aefenable"
+#define SET_DB_VOLUME "setdbvol"
+#define GET_AEF_PARAM "getaefparam"
+#define SET_AEF_PARAM "setaefparam"
+#define SPEAKER_CALI_COEF_CONFIG_LEN 96
+#define AEF_PARAM_LEN 256
 
 #ifdef AUDIO_SDK_SUPPORT
 #define AO_DEV_MAX_NUM UAPI_SND_MAX
@@ -1011,33 +1022,93 @@ int32_t AudioPrimarySubPortOutTrackGetVolume(AudioHandle trackHandle, float *vol
     return MEDIA_HAL_OK;
 }
 
+#ifdef AUDIO_SDK_SUPPORT
+static int32_t SetExtraParam(AudioHandle trackHandle, char *value, uint32_t valueLen)
+{
+    MEDIA_HAL_UNUSED(valueLen);
+    SubPortTrackOutContext *portTrackOutCtx = (SubPortTrackOutContext *)trackHandle;
+    int32_t ret = SetExtraData(&portTrackOutCtx->inputAttr, value, (uint32_t)(strlen(value) + 1));
+    CHK_FAILED_RETURN(ret, MEDIA_HAL_OK, ret, "set Extra data failed");
+    return MEDIA_HAL_OK;
+}
+
+static int32_t SetAefParam(AudioHandle trackHandle, char *value, uint32_t valueLen)
+{
+    MEDIA_HAL_UNUSED(valueLen);
+    SubPortTrackOutContext *portTrackOutCtx = (SubPortTrackOutContext *)trackHandle;
+    CHK_NULL_RETURN(value, MEDIA_HAL_INVALID_PARAM, "input param value is null");
+    uint32_t paramLen = 0;
+    uint8_t configFlag[MAX_KEY_STR_SIZE] = { 0 };
+    uint32_t cmd = 0;
+    int32_t ret = sscanf_s(value, "%s = %u#%u:", configFlag, MAX_KEY_STR_SIZE, &cmd, &paramLen);
+    if (ret == -1) {
+        MEDIA_HAL_LOGE(MODULE_NAME, "set aef param sscanf_s failed!");
+        return MEDIA_HAL_ERR;
+    }
+    uint8_t param[AEF_PARAM_LEN] = { 0 };
+    ret = GetParamByValue(param, AEF_PARAM_LEN, value, valueLen, paramLen);
+    if (ret != MEDIA_HAL_OK) {
+        return ret;
+    }
+    ret = uapi_snd_set_aef_param(portTrackOutCtx->subPortCtx->sndHandle, BUILTIN_SND_OUT_PORT, cmd,
+        (const td_void *)param, paramLen);
+    if (ret != MEDIA_HAL_OK) {
+        MEDIA_HAL_LOGE(MODULE_NAME, "set aef param failed! ret = %d", ret);
+        return ret;
+    }
+    return MEDIA_HAL_OK;
+}
+
+static int32_t GetAefParam(AudioHandle trackHandle, char *value, uint32_t valueLen)
+{
+    MEDIA_HAL_UNUSED(valueLen);
+    SubPortTrackOutContext *portTrackOutCtx = (SubPortTrackOutContext *)trackHandle;
+    CHK_NULL_RETURN(value, MEDIA_HAL_INVALID_PARAM, "input param value is null");
+    uint8_t configFlag[MAX_KEY_STR_SIZE] = { 0 };
+    uint32_t cmd = 0;
+    uint32_t paramLen = 0;
+    int32_t ret = sscanf_s((const char *)value, "%s = %u#%u", configFlag, MAX_KEY_STR_SIZE, &cmd, &paramLen);
+    if (ret == -1) {
+        MEDIA_HAL_LOGE(MODULE_NAME, "get aef param sscanf_s failed!");
+        return MEDIA_HAL_ERR;
+    }
+    ret = uapi_snd_get_aef_param(portTrackOutCtx->subPortCtx->sndHandle, BUILTIN_SND_OUT_PORT, cmd,
+        (td_void *)value, paramLen);
+    if (ret != MEDIA_HAL_OK) {
+        MEDIA_HAL_LOGE(MODULE_NAME, "get aef param failed! ret = %d", ret);
+        return ret;
+    }
+    return MEDIA_HAL_OK;
+}
+
+static struct AudioPortInvoke g_primaryOutInvokeFuncList[] = {
+    {EXTRA_DATA, SetExtraParam, true},
+    {SET_AEF_PARAM, SetAefParam, false},
+    {GET_AEF_PARAM, GetAefParam, false},
+};
+#endif
+
 int32_t AudioPrimarySubPortOutInvoke(AudioHandle trackHandle, enum InvokeID invokeID, struct InvokeAttr *invokeAttr)
 {
 #ifdef AUDIO_SDK_SUPPORT
-    SubPortTrackOutContext *portTrackOutCtx = (SubPortTrackOutContext *)trackHandle;
-    char keyFlag[MAX_KEY_STR_SIZE] = { 0 };
-    char value[MAX_KEY_VALUE_SIZE] = { 0 };
     int32_t ret = 0;
     switch (invokeID) {
         case INVOKE_ID_GET_CHANNEL_ID:
+        {
+            SubPortTrackOutContext *portTrackOutCtx = (SubPortTrackOutContext *)trackHandle;
             *((uint32_t *)invokeAttr->request) = portTrackOutCtx->inputAdpHandle;
             invokeAttr->replyBytes = (uint64_t)sizeof(uint32_t);
             MEDIA_HAL_LOGI(MODULE_NAME, "data channel id: 0x%x", *((uint32_t *)invokeAttr->request));
             break;
+        }
         case INVOKE_ID_SET_EXTRA_PARAMS:
-            ret = ParseKeyValueForExtra(invokeAttr, keyFlag, MAX_KEY_STR_SIZE, value, MAX_KEY_VALUE_SIZE);
-            CHK_FAILED_RETURN(ret, MEDIA_HAL_OK, ret, "ParseKeyValueForExtra failed");
-            if (strcmp(keyFlag, EXTRA_DATA) == 0) {
-                ret = SetExtraData(&portTrackOutCtx->inputAttr, value, (uint32_t)(strlen(value) + 1));
-                CHK_FAILED_RETURN(ret, MEDIA_HAL_OK, ret, "set Extra data failed");
-            } else if (strcmp(keyFlag, "vtoggle") == 0) {
-                ret = SaveToggleConfig(&portTrackOutCtx->volumeToggleConfig, value, (uint32_t)(strlen(value) + 1));
-                CHK_FAILED_RETURN(ret, MEDIA_HAL_OK, ret, "save volume toggle config failed");
-            } else if (strcmp(keyFlag, "ntoggle") == 0) {
-                ret = SaveToggleConfig(&portTrackOutCtx->notifyToggleConfig, value, (uint32_t)(strlen(value) + 1));
-                CHK_FAILED_RETURN(ret, MEDIA_HAL_OK, ret, "save notify toggle config failed");
-            }
+        case INVOKE_ID_GET_EXTRA_PARAMS:
+        {
+            size_t size = sizeof(g_primaryOutInvokeFuncList) / sizeof(struct AudioPortInvoke);
+            ret = ExtraParamsInvoke(trackHandle, invokeAttr, g_primaryOutInvokeFuncList, (uint32_t)size);
+            CHK_FAILED_RETURN(ret, MEDIA_HAL_OK, ret, "extra param invoke failed!");
             break;
+        }
         default:
             MEDIA_HAL_LOGW(MODULE_NAME, "invalid invoke id: %d", invokeID);
             return MEDIA_HAL_INVALID_PARAM;
index 631fdd7..fc75a81 100644 (file)
@@ -56,6 +56,7 @@ enum InvokeID {
     INVOKE_ID_GET_CHANNEL_ID    = 0, /* CurrentChannelId. The value type is <b>uint32_t</b>. */
     INVOKE_ID_CONFIG_VQE        = 1, /* Config vqe for usage scenes see {@link VqeScene} */
     INVOKE_ID_SET_EXTRA_PARAMS = 2, /* Set extra params. The format is <i>key=value</i>. Separate by semicolons (;) */
+    INVOKE_ID_GET_EXTRA_PARAMS = 3, /* Get extra params. */
 };
 
 enum PluginInvokeId {
index a5601d8..272cc61 100644 (file)
@@ -239,6 +239,7 @@ static int32_t HwRenderInit(const struct AudioHwAdapter *hwAdapter, struct Audio
     hwRender->common.attr.GetSampleAttributes = AudioRenderGetSampleAttributes;
     hwRender->common.attr.GetCurrentChannelId = AudioRenderGetCurrentChannelId;
     hwRender->common.attr.SetExtraParams = AudioRenderSetExtraParams;
+    hwRender->common.attr.GetExtraParams = AudioRenderGetExtraParams;
     hwRender->common.scene.CheckSceneCapability = AudioRenderCheckSceneCapability;
     hwRender->common.scene.SelectScene = AudioRenderSelectScene;
     hwRender->common.volume.SetMute = AudioRenderSetMute;
@@ -374,6 +375,7 @@ static int32_t HwCaptureInit(const struct AudioHwAdapter *hwAdapter,
     hwCapture->common.attr.GetSampleAttributes = AudioCaptureGetSampleAttributes;
     hwCapture->common.attr.GetCurrentChannelId = AudioCaptureGetCurrentChannelId;
     hwCapture->common.attr.SetExtraParams = AudioCaptureSetExtraParams;
+    hwCapture->common.attr.GetExtraParams = AudioCaptureGetExtraParams;
     hwCapture->common.scene.CheckSceneCapability = AudioCaptureCheckSceneCapability;
     hwCapture->common.scene.SelectScene = AudioCaptureSelectScene;
     hwCapture->common.volume.SetMute = AudioCaptureSetMute;
index 87a6802..a21a5b8 100644 (file)
@@ -196,6 +196,28 @@ int32_t AudioCaptureSetExtraParams(AudioHandle handle, const char *keyValueList)
     return MEDIA_HAL_OK;
 }
 
+int32_t AudioCaptureGetExtraParams(AudioHandle handle, char *keyValueList, int32_t listLenth)
+{
+    CHK_NULL_RETURN(handle, MEDIA_HAL_INVALID_PARAM, "input param handle null");
+    CHK_NULL_RETURN(keyValueList, MEDIA_HAL_INVALID_PARAM, "input param keyValueList null");
+
+    struct AudioHwCapture *hwCapture = (struct AudioHwCapture *)handle;
+    MediaHalMutexLock(hwCapture->mutex);
+    struct InvokeAttr invokeAttr = {};
+    invokeAttr.request = (void *)keyValueList;
+    invokeAttr.replyBytes = (uint64_t)listLenth;
+    int32_t ret = hwCapture->trackHandle->Invoke(hwCapture->trackHandle, INVOKE_ID_GET_EXTRA_PARAMS, &invokeAttr);
+    if (ret != MEDIA_HAL_OK) {
+        MediaHalMutexUnLock(hwCapture->mutex);
+        MEDIA_HAL_LOGE(MODULE_NAME, "AudioPortTrack Invoke INVOKE_ID_GET_EXTRA_PARAMS failed: 0x%x", ret);
+        return ret;
+    }
+    MediaHalMutexUnLock(hwCapture->mutex);
+
+    MEDIA_HAL_LOGI(MODULE_NAME, "success");
+    return MEDIA_HAL_OK;
+}
+
 int32_t AudioCaptureCheckSceneCapability(AudioHandle handle, const struct AudioSceneDescriptor *scene,
                                          bool *supported)
 {
index 2e0c784..7968dbc 100644 (file)
@@ -135,6 +135,7 @@ int32_t AudioRenderSetSampleAttributes(AudioHandle handle, const struct AudioSam
 int32_t AudioRenderGetSampleAttributes(AudioHandle handle, struct AudioSampleAttributes *attrs);
 int32_t AudioRenderGetCurrentChannelId(AudioHandle handle, uint32_t *channelId);
 int32_t AudioRenderSetExtraParams(AudioHandle handle, const char *keyValueList);
+int32_t AudioRenderGetExtraParams(AudioHandle handle, char *keyValueList, int32_t listLenth);
 int32_t AudioRenderCheckSceneCapability(AudioHandle handle, const struct AudioSceneDescriptor *scene,
     bool *supported);
 int32_t AudioRenderSelectScene(AudioHandle handle, const struct AudioSceneDescriptor *scene);
@@ -165,6 +166,7 @@ int32_t AudioCaptureSetSampleAttributes(AudioHandle handle, const struct AudioSa
 int32_t AudioCaptureGetSampleAttributes(AudioHandle handle, struct AudioSampleAttributes *attrs);
 int32_t AudioCaptureGetCurrentChannelId(AudioHandle handle, uint32_t *channelId);
 int32_t AudioCaptureSetExtraParams(AudioHandle handle, const char *keyValueList);
+int32_t AudioCaptureGetExtraParams(AudioHandle handle, char *keyValueList, int32_t listLenth);
 int32_t AudioCaptureCheckSceneCapability(AudioHandle handle, const struct AudioSceneDescriptor *scene,
     bool *supported);
 int32_t AudioCaptureSelectScene(AudioHandle handle, const struct AudioSceneDescriptor *scene);
index 6b78c64..38250d0 100644 (file)
@@ -266,6 +266,28 @@ int32_t AudioRenderSetExtraParams(AudioHandle handle, const char *keyValueList)
     return MEDIA_HAL_OK;
 }
 
+int32_t AudioRenderGetExtraParams(AudioHandle handle, char *keyValueList, int32_t listLenth)
+{
+    CHK_NULL_RETURN(handle, MEDIA_HAL_INVALID_PARAM, "input param handle null");
+    CHK_NULL_RETURN(keyValueList, MEDIA_HAL_INVALID_PARAM, "input param keyValueList null");
+
+    struct AudioHwRender *hwRender = (struct AudioHwRender *)handle;
+    MediaHalMutexLock(hwRender->mutex);
+    struct InvokeAttr invokeAttr = {};
+    invokeAttr.request = (void *)keyValueList;
+    invokeAttr.requestBytes = (uint64_t)listLenth;
+    int32_t ret = hwRender->trackHandle->Invoke(hwRender->trackHandle, INVOKE_ID_GET_EXTRA_PARAMS, &invokeAttr);
+    if (ret != MEDIA_HAL_OK) {
+        MediaHalMutexUnLock(hwRender->mutex);
+        MEDIA_HAL_LOGE(MODULE_NAME, "AudioPortTrack Invoke INVOKE_ID_GET_EXTRA_PARAMS failed: 0x%x", ret);
+        return ret;
+    }
+    MediaHalMutexUnLock(hwRender->mutex);
+
+    MEDIA_HAL_LOGI(MODULE_NAME, "success");
+    return MEDIA_HAL_OK;
+}
+
 
 int32_t AudioRenderCheckSceneCapability(AudioHandle handle, const struct AudioSceneDescriptor *scene,
     bool *supported)
index 15291ae..47ec95a 100644 (file)
@@ -169,6 +169,21 @@ td_s32 uapi_vau_parse_cmp_header(td_u8 *head, td_u32 size, ext_vau_cmp_header *i
  */
 td_s32 uapi_vau_wait_for_done(td_handle handle);
 
+/**
+ * @if Eng
+ * @brief  set_cubic_threshold.
+ * @param  [in]  td_float cubic_threshold.
+ * @retval EXT_SUCCESS   Success.
+ * @retval Other         Failure.
+ * @else
+ * @brief  设置三次贝塞尔阈值
+ * @param  [in]  cubic_threshold 阈值
+ * @retval EXT_SUCCESS   成功
+ * @retval Other         失败
+ * @endif
+ */
+td_s32 uapi_vau_set_cubic_threshold(td_float cubic_threshold);
+
 /**
  * @}
  */
index d5a904b..d7b1eab 100644 (file)
@@ -127,6 +127,7 @@ else()
         ${CMAKE_CURRENT_SOURCE_DIR}/diag/diag_cmd_router/include
         ${CMAKE_CURRENT_SOURCE_DIR}/diag_transmit/include
         ${CMAKE_CURRENT_SOURCE_DIR}/diag_transmit/dfx_include
+        ${CMAKE_CURRENT_SOURCE_DIR}/diag_transmit/
     )
 endif()
 
index 3f3f77c..4a139cd 100644 (file)
@@ -57,6 +57,10 @@ typedef struct {
     uint32_t msg_ack_timeout;
     uint32_t msg_underflow;
     uint32_t msg_crc_fail;
+
+    /* msg int status */
+    uint32_t msg_int_fail;
+    uint32_t msg_int_retrigger;
 } probe_status_info;
 
 typedef struct {
@@ -194,6 +198,9 @@ static void core_probe_output(uint32_t core_id, const probe_status_info *status)
         "msg_success = %u, illegal_param = %u, ack_timeout = %u, underflow = %u, crc_fail = %u.\n",
         status->msg_success, status->msg_illegal_param, status->msg_ack_timeout,
         status->msg_underflow, status->msg_crc_fail);
+
+    /* msg int status */
+    DIAG_PROBE_REPORT("msg_int_fail = %u, msg_int_retrigger = %u.\n", status->msg_int_fail, status->msg_int_retrigger);
 }
 
 static void audio_probe_output(void)
index e2e5aee..7d9771f 100644 (file)
@@ -8,6 +8,12 @@
 \r
 #include <stdint.h>\r
 \r
+#ifdef __cplusplus\r
+#if __cplusplus\r
+extern "C" {\r
+#endif /* __cplusplus */\r
+#endif /* __cplusplus */\r
+\r
 typedef enum {\r
     TRANSMIT_STATE_NOTIFY_INVALID_ID = 10,\r
     TRANSMIT_STATE_NOTIFY_FINISH,\r
@@ -112,4 +118,10 @@ typedef struct {
     uint32_t reason;\r
 } transmit_stop_pkt_t;\r
 \r
+#ifdef __cplusplus\r
+#if __cplusplus\r
+}\r
+#endif /* __cplusplus */\r
+#endif /* __cplusplus */\r
+\r
 #endif\r
index d837631..5355320 100644 (file)
@@ -9,6 +9,12 @@
 #include "transmit_st.h"\r
 #include "diag.h"\r
 \r
+#ifdef __cplusplus\r
+#if __cplusplus\r
+extern "C" {\r
+#endif /* __cplusplus */\r
+#endif /* __cplusplus */\r
+\r
 #define TRANSMIT_OUT_TIME           30\r
 #define TRANSMIT_RETRY_TIME         1\r
 \r
@@ -130,4 +136,10 @@ errcode_t transmit_item_module_init(void);
 \r
 errcode_t transmit_msg_proc_hook_register(uint32_t msg_id_start, uint32_t msg_id_end, transmit_register_hook hook);\r
 errcode_t transmit_msg_proc_hook_unregister(transmit_register_hook hook);\r
+\r
+#ifdef __cplusplus\r
+#if __cplusplus\r
+}\r
+#endif /* __cplusplus */\r
+#endif /* __cplusplus */\r
 #endif /* TRANSMIT_ITEM_H */\r
index 9f0b670..74de551 100644 (file)
@@ -8,9 +8,20 @@
 \r
 #include "transmit_item.h"\r
 \r
+#ifdef __cplusplus\r
+#if __cplusplus\r
+extern "C" {\r
+#endif /* __cplusplus */\r
+#endif /* __cplusplus */\r
+\r
 int32_t bus_read_data(uintptr_t usr_data, uint32_t offset, uint8_t *buf, uint32_t len);\r
 int32_t buf_write_data(uintptr_t usr_data, uint32_t offset, uint8_t *buf, uint32_t len);\r
 int32_t file_read_data(uintptr_t usr_data, uint32_t offset, uint8_t *buf, uint32_t len);\r
 int32_t file_write_data(uintptr_t usr_data, uint32_t offset, uint8_t *buf, uint32_t len);\r
 \r
+#ifdef __cplusplus\r
+#if __cplusplus\r
+}\r
+#endif /* __cplusplus */\r
+#endif /* __cplusplus */\r
 #endif
\ No newline at end of file
index 4ef6250..d556b97 100644 (file)
 #include "dfx_feature_config.h"\r
 #include "common_def.h"\r
 \r
+#ifdef __cplusplus\r
+#if __cplusplus\r
+extern "C" {\r
+#endif /* __cplusplus */\r
+#endif /* __cplusplus */\r
+\r
 typedef struct {\r
     bool is_dir;\r
     const char *name;\r
@@ -129,4 +135,10 @@ static inline void dfx_file_close(int32_t fd)
 }\r
 \r
 #endif /* CONFIG_DFX_SUPPORT_FILE_SYSTEM == DFX_YES */\r
+\r
+#ifdef __cplusplus\r
+#if __cplusplus\r
+}\r
+#endif /* __cplusplus */\r
+#endif /* __cplusplus */\r
 #endif /* __TRANSMIT_FILE_OPERATION_H__ */\r
index 0c5c45c..169751c 100644 (file)
Binary files a/code/sdk/middleware/utils/fs/yaffs2/brandy-native-js-r/libfs_yaffs2.a and b/code/sdk/middleware/utils/fs/yaffs2/brandy-native-js-r/libfs_yaffs2.a differ
index 99a52e2..5732c59 100644 (file)
Binary files a/code/sdk/middleware/utils/fs/yaffs2/brandy-native-js/libfs_yaffs2.a and b/code/sdk/middleware/utils/fs/yaffs2/brandy-native-js/libfs_yaffs2.a differ
index 5d0e5db..2afb70e 100644 (file)
Binary files a/code/sdk/middleware/utils/fs/yaffs2/brandy-target1-r/libfs_yaffs2.a and b/code/sdk/middleware/utils/fs/yaffs2/brandy-target1-r/libfs_yaffs2.a differ
index dca4325..29623ed 100644 (file)
Binary files a/code/sdk/middleware/utils/fs/yaffs2/brandy-target1/libfs_yaffs2.a and b/code/sdk/middleware/utils/fs/yaffs2/brandy-target1/libfs_yaffs2.a differ
index 915e1d4..f58886c 100644 (file)
Binary files a/code/sdk/middleware/utils/fs/yaffs2/brandy-target3-r/libfs_yaffs2.a and b/code/sdk/middleware/utils/fs/yaffs2/brandy-target3-r/libfs_yaffs2.a differ
index 243b694..96e28c7 100644 (file)
Binary files a/code/sdk/middleware/utils/fs/yaffs2/brandy-target3/libfs_yaffs2.a and b/code/sdk/middleware/utils/fs/yaffs2/brandy-target3/libfs_yaffs2.a differ
index e8453ac..a9a009e 100644 (file)
Binary files a/code/sdk/middleware/utils/fs/yaffs2/brandy-target4-r/libfs_yaffs2.a and b/code/sdk/middleware/utils/fs/yaffs2/brandy-target4-r/libfs_yaffs2.a differ
index 7234e45..da5ece7 100644 (file)
Binary files a/code/sdk/middleware/utils/fs/yaffs2/brandy-target4/libfs_yaffs2.a and b/code/sdk/middleware/utils/fs/yaffs2/brandy-target4/libfs_yaffs2.a differ
index f2c25f1..93b6760 100644 (file)
Binary files a/code/sdk/middleware/utils/fs/yaffs2/brandy-target5-r/libfs_yaffs2.a and b/code/sdk/middleware/utils/fs/yaffs2/brandy-target5-r/libfs_yaffs2.a differ
index 5befd2c..d16d305 100644 (file)
Binary files a/code/sdk/middleware/utils/fs/yaffs2/brandy-target5/libfs_yaffs2.a and b/code/sdk/middleware/utils/fs/yaffs2/brandy-target5/libfs_yaffs2.a differ
index 69efcc6..40599e6 100644 (file)
Binary files a/code/sdk/middleware/utils/fs/yaffs2/brandy-xts-r/libfs_yaffs2.a and b/code/sdk/middleware/utils/fs/yaffs2/brandy-xts-r/libfs_yaffs2.a differ
index 152755a..9a542dd 100644 (file)
Binary files a/code/sdk/middleware/utils/fs/yaffs2/brandy-xts/libfs_yaffs2.a and b/code/sdk/middleware/utils/fs/yaffs2/brandy-xts/libfs_yaffs2.a differ
index dfd6ca3..1c31928 100644 (file)
Binary files a/code/sdk/middleware/utils/fs/yaffs2/testsuite-brandy-sdk/libfs_yaffs2.a and b/code/sdk/middleware/utils/fs/yaffs2/testsuite-brandy-sdk/libfs_yaffs2.a differ
index 3b7f731..8d2956e 100644 (file)
@@ -175,14 +175,15 @@ int yaffs_unmount2(const YCHAR *path, int force);
  * yaffs_sync() does a full sync, including checkpoint.
  */
 int yaffs_sync(const YCHAR *path);
-#ifdef YAFFS_EXTEND_SUPPORT
-int yaffs_remount(const YCHAR *path, int force, int read_only);
 
 int yaffs_format(const YCHAR *path,
                int unmount_flag,
                int force_unmount_flag,
                int remount_flag);
 
+#ifdef YAFFS_EXTEND_SUPPORT
+int yaffs_remount(const YCHAR *path, int force, int read_only);
+
 /*
  * yaffs_sync() does a full sync, including checkpoint.
  * yaffs_sync_files() just flushes the cache and does not write a checkpoint.
index 0a9a1f8..7d68968 100644 (file)
@@ -112,16 +112,8 @@ static void OnInitTimeout(void* args)
         return;
     }
 
-    Request *request = SAMGR_AllocRequestMsg(0, PLATFORM_CORE, BOOTSTRAP_SVR_ID, 0);
-    if (request == NULL) {
-        return;
-    }
-    request->msgId = BOOT_INIT_TIMEOUT;
-    request->msgValue = 0;
+    Request request = {.msgId = BOOT_INIT_TIMEOUT, .msgValue = 0};
 
-    int ret = SAMGR_SendRequest(&bootstrap->identity, request, NULL);
-    if (ret != EC_SUCCESS) {
-        SAMGR_FreeRequestMsg(request);
-    }
+    SAMGR_SendRequest(&bootstrap->identity, &request, NULL);
 }
 
index 6bc252d..b7c150a 100644 (file)
@@ -20,6 +20,8 @@ set(PUBLIC_HEADER
 
 set(PRIVATE_HEADER
     ${ROOT_DIR}/open_source/openharmony/foundation/ace/ace_engine_lite/interfaces/base
+    ${ROOT_DIR}/open_source/openharmony/foundation/ace/ace_engine_lite/context
+    ${ROOT_DIR}/open_source/openharmony/foundation/ace/ace_engine_lite/base
     ${ROOT_DIR}/application/wearable/ohos_deps
 
     ${ROOT_DIR}/middleware/services/gui/uikit/proprietary/src/utils/innerkits
index 379ea99..3189430 100644 (file)
Binary files a/code/sdk/open_source/openharmony/foundation/aafwk/aafwk_lite/brandy-native-js/libams.a and b/code/sdk/open_source/openharmony/foundation/aafwk/aafwk_lite/brandy-native-js/libams.a differ
index 65707de..26e3fed 100644 (file)
Binary files a/code/sdk/open_source/openharmony/foundation/aafwk/aafwk_lite/brandy-xts/libams.a and b/code/sdk/open_source/openharmony/foundation/aafwk/aafwk_lite/brandy-xts/libams.a differ
index f548b94..91489b6 100644 (file)
@@ -208,6 +208,7 @@ set(PRIVATE_HEADER
     ${ROOT_DIR}/middleware/services/gui/uikit/ui/interfaces/innerkits/common
     ${ROOT_DIR}/middleware/services/gui/uikit/ui/interfaces/kits/font
     ${ROOT_DIR}/middleware/services/gui/uikit/ui/interfaces/kits/dfx
+    ${ROOT_DIR}/middleware/services/gui/uikit/ui/interfaces/kits/common
     ${ROOT_DIR}/open_source/openharmony/drivers/peripheral/display/interfaces/include
     ${ROOT_DIR}/application/wearable/ohos_deps
     ${ROOT_DIR}/open_source/openharmony/third_party/cJSON
@@ -235,6 +236,7 @@ set(SOURCES
     ${CMAKE_CURRENT_SOURCE_DIR}/components/input_button_component.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/components/input_checkbox_component.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/components/input_radio_component.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/components/input_edittext_component.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/components/list_adapter.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/components/list_component.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/components/marquee_component.cpp
@@ -251,6 +253,7 @@ set(SOURCES
     ${CMAKE_CURRENT_SOURCE_DIR}/components/text_component.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/components/baidu_map_component.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/modules/app_module.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/modules/device_module.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/modules/dfx_module.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/modules/module_manager.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/modules/locale_module.cpp
index a259750..2dd037a 100644 (file)
@@ -111,6 +111,7 @@ constexpr char COMMON_STYLE_OPACITY[] = "opacity";
 constexpr char COMMON_STYLE_COLOR[] = "color";
 #endif // FEATURE_COMPONENT_ANALOG_CLOCK
 constexpr uint8_t DEFAULT_FONT_SIZE = 30;
+constexpr uint8_t FONT_FAMILY_FILE_NAME_SIZE = 128;
 #ifdef FEATURE_COMPONENT_CANVAS
 constexpr uint8_t DEFAULT_FONT_LETTERSPACE = 2;
 #endif // FEATURE_COMPONENT_CANVAS
index 0e36c59..f047f4e 100644 (file)
@@ -109,6 +109,9 @@ enum {
     KEYWORD(EASE_IN_OUT, ease-in-out) // animation time function value
     KEYWORD(EASE_OUT, ease-out) // animation time function value
     KEYWORD(ELLIPSIS, ellipsis) // text overflow type
+#if (FEATURE_COMPONENT_EDITTEXT == 1)
+    KEYWORD(EDITTEXTTYPE, editTextType) // text overflow type
+#endif // FEATURE_COMPONENT_EDITTEXT
 #ifdef FEATURE_COMPONENT_DATE_PICKER
     KEYWORD(END, end) // date picker-view attr
 #endif // FEATURE_COMPONENT_DATE_PICKER
@@ -173,6 +176,9 @@ enum {
     KEYWORD(MARGIN_TOP, marginTop) // common style margin top
     KEYWORD(MARQUEE, marquee) // marquee tag name
     KEYWORD(MAX, max) // common attributes
+#if (FEATURE_COMPONENT_EDITTEXT == 1)
+    KEYWORD(MAX_LENGTH, maxlength) // maxlength of input
+#endif // FEATURE_COMPONENT_EDITTEXT
     KEYWORD(MIN, min) // common attributes, analog-clock minute
     KEYWORD(MINI, mini) // text font size type
 #ifdef FEATURE_DATE_FORMAT
@@ -195,6 +201,9 @@ enum {
     KEYWORD(PADDING_LEFT, paddingLeft)
     KEYWORD(PADDING_RIGHT, paddingRight)
     KEYWORD(PADDING_TOP, paddingTop)
+#if (FEATURE_COMPONENT_EDITTEXT == 1)
+    KEYWORD(PASSWORD, password) // type of input component
+#endif // FEATURE_COMPONENT_EDITTEXT
     KEYWORD(PERCENT, percent)
     KEYWORD(PICKER_VIEW, picker-view) // tag name
     KEYWORD(REF, ref) // common attribute
@@ -205,6 +214,10 @@ enum {
     KEYWORD(PIVOT_X, pivotX) // clock-hand pivot-x
     KEYWORD(PIVOT_Y, pivotY) // clock-hand pivot-y
 #endif // FEATURE_COMPONENT_ANALOG_CLOCK
+#if (FEATURE_COMPONENT_EDITTEXT == 1)
+    KEYWORD(PLACEHOLDER, placeholder) // placeholder of edittext
+    KEYWORD(PLACEHOLDER_COLOR, placeholderColor) // placeholder-color of edittext
+#endif // FEATURE_COMPONENT_EDITTEXT
     KEYWORD(PROGRESS, progress) // progress tag name
 #ifdef FEATURE_COMPONENT_QRCODE
     KEYWORD(QRCODE, qrcode) // qrcode tag name
@@ -284,9 +297,9 @@ enum {
     KEYWORD(TRANSLATE_X, translateX) // animation transform x
     KEYWORD(TRANSLATE_Y, translateY) // animation transform y
     KEYWORD(TRUE, true) // common attributes
-#ifdef FEATURE_COMPONENT_ANALOG_CLOCK
+#if ((FEATURE_COMPONENT_ANALOG_CLOCK == 1) || (FEATURE_COMPONENT_EDITTEXT == 1))
     KEYWORD(TYPE, type) // clock-hand type
-#endif // FEATURE_COMPONENT_ANALOG_CLOCK
+#endif // (FEATURE_COMPONENT_ANALOG_CLOCK == 1) || (FEATURE_COMPONENT_EDITTEXT == 1)
     KEYWORD(VALUE, value) // common attributes
     KEYWORD(VERTICAL, vertical) // swiper attr vertical
 #ifdef FEATURE_COMPONENT_VIDEO
index 76ea6a4..fff3f6f 100644 (file)
Binary files a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/brandy-native-js/libace.a and b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/brandy-native-js/libace.a differ
index f294d80..97280be 100644 (file)
Binary files a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/brandy-xts/libace.a and b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/brandy-xts/libace.a differ
index 7e0cf9e..3d00979 100644 (file)
@@ -233,6 +233,15 @@ public:
     void AlignDimensions(const ConstrainedParameter &param);
     void EnableTransmitSwipe();
 
+    int16_t GetHeight() const
+    {
+        return (height_.type == TYPE_PIXEL) ? height_.value.pixel : INVALID_PIXEL_VALUE;
+    }
+    int16_t GetWidth() const
+    {
+        return (width_.type == TYPE_PIXEL) ? width_.value.pixel : INVALID_PIXEL_VALUE;
+    }
+
 protected:
     void SetComponentName(uint16_t name)
     {
@@ -430,15 +439,6 @@ protected:
     {
         return styleItem->GetValueType() == STYLE_PROP_VALUE_TYPE_STRING;
     }
-    int16_t GetHeight() const
-    {
-        return (height_.type == TYPE_PIXEL) ? height_.value.pixel : INVALID_PIXEL_VALUE;
-    }
-    int16_t GetWidth() const
-    {
-        return (width_.type == TYPE_PIXEL) ? width_.value.pixel : INVALID_PIXEL_VALUE;
-    }
-
     jerry_value_t *GetDomElementPointer()
     {
         return &nativeElement_;
index 7e5c68f..a53e555 100644 (file)
@@ -38,6 +38,9 @@
 #include "input_button_component.h"
 #include "input_checkbox_component.h"
 #include "input_radio_component.h"
+#if (FEATURE_COMPONENT_EDITTEXT == 1)
+#include "input_edittext_component.h"
+#endif // FEATURE_COMPONENT_EDITTEXT
 #include "js_fwk_common.h"
 #include "key_parser.h"
 #include "keys.h"
@@ -158,7 +161,13 @@ public:
                     component = new InputCheckboxComponent(options, children, styleManager);
                 } else if (id == K_RADIO) {
                     component = new InputRadioComponent(options, children, styleManager);
-                } else {
+                }
+#if (FEATURE_COMPONENT_EDITTEXT == 1)
+                else if (id == K_TEXT || id == K_PASSWORD) {
+                    component = new InputEditTextComponent(options, children, styleManager);
+                }
+#endif // FEATURE_COMPONENT_EDITTEXT
+                else {
                     // default type is input button
                     component = new InputButtonComponent(options, children, styleManager);
                 }
index fb8b080..8f63c5f 100644 (file)
@@ -150,5 +150,20 @@ bool ViewOnSwipeListener::OnDragEnd(UIView& view, const DragEvent &event)
 
     return isStopPropagation_;
 }
+
+void ValueChangeListener::OnChange(UIView &view, const char *value)
+{
+    if (IS_UNDEFINED(fn_)) {
+        return;
+    }
+ 
+    jerry_value_t textValue = jerry_create_string(reinterpret_cast<const jerry_char_t *>(value));
+    jerry_value_t args[1] = {textValue};
+    if (jerry_value_is_function(fn_)) {
+        CallJSFunctionAutoRelease(fn_, UNDEFINED, args, 1);
+    }
+    ReleaseJerryValue(textValue, VA_ARG_END_FLAG);
+    return;
+}
 } // namespace ACELite
 } // namespace OHOS
index 124b8f7..375f867 100644 (file)
@@ -27,6 +27,7 @@
 #include "ui_scroll_view.h"
 #include "ui_slider.h"
 #include "ui_toggle_button.h"
+#include "ui_edit_text.h"
 
 namespace OHOS {
 namespace ACELite {
@@ -82,6 +83,22 @@ private:
     bool isChanging_; // the flag to avoid change event cycle execute
 };
 
+class ValueChangeListener final : public OHOS::UIEditText::OnChangeListener {
+public:
+    ACE_DISALLOW_COPY_AND_MOVE(ValueChangeListener);
+    explicit ValueChangeListener(jerry_value_t fn)
+        : fn_(jerry_acquire_value(fn)) {}
+ 
+    ~ValueChangeListener()
+    {
+        jerry_release_value(fn_);
+    }
+ 
+    void OnChange(UIView& view, const char* value) override;
+private:
+    jerry_value_t fn_;
+};
+ 
 class ViewOnClickListener final : public UIView::OnClickListener {
 public:
     ACE_DISALLOW_COPY_AND_MOVE(ViewOnClickListener);
diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/components/input_edittext_component.cpp b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/components/input_edittext_component.cpp
new file mode 100644 (file)
index 0000000..fa0e81b
--- /dev/null
@@ -0,0 +1,207 @@
+/*
+ * Copyright (c) 2020-2022 Huawei Device Co., 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 "acelite_config.h"
+#if (FEATURE_COMPONENT_EDITTEXT == 1)
+#include "input_edittext_component.h"
+#include "ace_log.h"
+#include "key_parser.h"
+#include "keys.h"
+#include "product_adapter.h"
+ 
+namespace OHOS {
+namespace ACELite {
+bool InputEditTextComponent::CreateNativeViews()
+{
+    fontSize_ = ProductAdapter::GetDefaultFontSize();
+    // set font family
+    if (!CopyFontFamily(fontFamily_, ProductAdapter::GetDefaultFontFamilyName())) {
+        return false;
+    }
+    return true;
+}
+ 
+void InputEditTextComponent::ReleaseNativeViews()
+{
+    if (onValueChangeListener_ != nullptr) {
+        delete onValueChangeListener_;
+        onValueChangeListener_ = nullptr;
+    }
+    ACE_FREE(fontFamily_);
+}
+ 
+bool InputEditTextComponent::SetPrivateAttribute(uint16_t attrKeyId, jerry_value_t attrValue)
+{
+    switch (attrKeyId) {
+        case K_TYPE:
+            if (jerry_value_is_string(attrValue)) {
+                char *type = MallocStringOf(attrValue);
+                if (type == nullptr) {
+                    HILOG_ERROR(HILOG_MODULE_ACE, "type is nullptr");
+                    return false;
+                }
+                if (strcmp(type, "password")) {
+                    edittext_.SetInputType(InputType::TEXT_TYPE);
+                } else {
+                    edittext_.SetInputType(InputType::PASSWORD_TYPE);
+                }
+                ACE_FREE(type);
+                return true;
+            }
+            HILOG_ERROR(HILOG_MODULE_ACE, "the edittext type is error value");
+            break;
+        case K_VALUE:
+            if (jerry_value_is_string(attrValue)) {
+                char *value = MallocStringOf(attrValue);
+                if (value == nullptr) {
+                    HILOG_ERROR(HILOG_MODULE_ACE, "value is nullptr");
+                    return false;
+                }
+                edittext_.SetText(value);
+                ACE_FREE(value);
+                return true;
+            }
+            HILOG_ERROR(HILOG_MODULE_ACE, "the edittext value is error value");
+            break;
+        case K_PLACEHOLDER:
+            if (jerry_value_is_string(attrValue)) {
+                char *placeholder = MallocStringOf(attrValue);
+                if (placeholder == nullptr) {
+                    HILOG_ERROR(HILOG_MODULE_ACE, "placeholder is nullptr");
+                    return false;
+                }
+                edittext_.SetPlaceholder(placeholder);
+                ACE_FREE(placeholder);
+                return true;
+            }
+            HILOG_ERROR(HILOG_MODULE_ACE, "the edittext placeholder is error value");
+            break;
+        case K_MAX_LENGTH:
+            if (jerry_value_is_number(attrValue)) {
+                uint16_t maxLenth = IntegerOf(attrValue);
+                edittext_.SetMaxLength(maxLenth);
+                return true;
+            }
+            HILOG_ERROR(HILOG_MODULE_ACE, "the edittext maxLenth is error value");
+            break;
+        default:
+            return false;
+    }
+    return false;
+}
+ 
+bool InputEditTextComponent::RegisterPrivateEventListener(uint16_t eventTypeId,
+                                                          jerry_value_t funcValue,
+                                                          bool isStopPropagation)
+{
+    if (eventTypeId == K_CHANGE) {
+        if (onValueChangeListener_) {
+            HILOG_ERROR(HILOG_MODULE_ACE, "valueChange listener existed");
+            return false;
+        }
+        onValueChangeListener_ = new ValueChangeListener(funcValue);
+        if (onValueChangeListener_ == nullptr) {
+            HILOG_ERROR(HILOG_MODULE_ACE, "create valueChange listener failed");
+            return false;
+        }
+        edittext_.SetOnChangeListener(onValueChangeListener_);
+        return true;
+    }
+    return false;
+}
+ 
+bool InputEditTextComponent::ApplyPrivateStyle(const AppStyleItem *style)
+{
+    bool result = true;
+    uint16_t styleKey = GetStylePropNameId(style);
+    if (!KeyParser::IsKeyValid(styleKey)) {
+        return false;
+    }
+    switch (styleKey) {
+        case K_FONT_SIZE:
+            result = SetFontSize(style);
+            break;
+        case K_COLOR:
+            result = SetColor(*style);
+            break;
+        case K_PLACEHOLDER_COLOR:
+            result = SetPlaceholderColor(*style);
+            break;
+        default:
+            result = false;
+            break;
+    }
+    return result;
+}
+ 
+void InputEditTextComponent::PostUpdate(uint16_t attrKeyId)
+{
+    if (!KeyParser::IsKeyValid(attrKeyId)) {
+        HILOG_ERROR(HILOG_MODULE_ACE, "input component post update check args failed");
+        return;
+    }
+    switch (attrKeyId) {
+        case K_VALUE:
+            break;
+        case K_FONT_SIZE:
+        case K_FONT_FAMILY:
+            if (fontFamily_ != nullptr) {
+                edittext_.SetFont(fontFamily_, fontSize_);
+            }
+            break;
+        default:
+            break;
+    }
+}
+ 
+uint8_t InputEditTextComponent::GetFontSize()
+{
+    return fontSize_;
+}
+ 
+ 
+bool InputEditTextComponent::SetFontSize(const AppStyleItem *style)
+{
+    fontSize_ = GetStylePixelValue(style);
+    return true;
+}
+ 
+bool InputEditTextComponent::SetColor(const AppStyleItem &style)
+{
+    uint32_t color = 0;
+    uint8_t alpha = OPA_OPAQUE;
+    if (GetStyleColorValue(&style, color, alpha)) {
+        edittext_.SetStyle(STYLE_TEXT_COLOR, GetRGBColor(color).full);
+        edittext_.SetStyle(STYLE_TEXT_OPA, alpha);
+        return true;
+    }
+    return false;
+}
+ 
+bool InputEditTextComponent::SetPlaceholderColor(const AppStyleItem &style)
+{
+    uint32_t color = 0;
+    OHOS::ColorType color32;
+    uint8_t alpha = OPA_OPAQUE;
+    if (GetStyleColorValue(&style, color, alpha)) {
+        color32.full = (alpha << 24) | color; // 24:alpha bit offset in color32
+        edittext_.SetPlaceholderColor(color32);
+        return true;
+    }
+    return false;
+}
+} // namespace ACELite
+} // namespace OHOS
+#endif // FEATURE_COMPONENT_VIDEO
\ No newline at end of file
diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/components/input_edittext_component.h b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/components/input_edittext_component.h
new file mode 100644 (file)
index 0000000..c345c24
--- /dev/null
@@ -0,0 +1,67 @@
+/*
+ * Copyright (c) 2020-2021 Huawei Device Co., 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 OHOS_ACELITE_INPUT_EDIT_TEXT_COMPONENT_H
+#define OHOS_ACELITE_INPUT_EDIT_TEXT_COMPONENT_H
+#include "acelite_config.h"
+#if (FEATURE_COMPONENT_EDITTEXT == 1)
+#include "component.h"
+#include "flex_layout.h"
+#include "non_copyable.h"
+#include "key_parser.h"
+#include "ui_edit_text.h"
+ 
+namespace OHOS {
+namespace ACELite {
+class InputEditTextComponent final : public Component {
+public:
+ 
+    ACE_DISALLOW_COPY_AND_MOVE(InputEditTextComponent);
+    InputEditTextComponent() = delete;
+    InputEditTextComponent(jerry_value_t options, jerry_value_t children, AppStyleManager *manager)
+        : Component(options, children, manager),
+          onValueChangeListener_(nullptr),
+          fontFamily_(nullptr),
+          fontSize_(DEFAULT_FONT_SIZE)
+    {
+        SetComponentName(K_INPUT);
+    }
+    ~InputEditTextComponent() override {};
+    bool CreateNativeViews() override;
+    void ReleaseNativeViews() override;
+    bool SetPrivateAttribute(uint16_t attrKeyId, jerry_value_t attrValue) override;
+    bool RegisterPrivateEventListener(uint16_t eventTypeId, jerry_value_t funcValue, bool isStopPropagation) override;
+    bool ApplyPrivateStyle(const AppStyleItem *style) override;
+    void PostUpdate(uint16_t attrKeyId) override;
+    uint8_t GetFontSize();
+protected:
+    UIView *GetComponentRootView() const override
+    {
+        return const_cast<UIEditText *>(&edittext_);
+    }
+ 
+private:
+    bool SetFontSize(const AppStyleItem *style);
+    bool SetColor(const AppStyleItem &style);
+    bool SetPlaceholderColor(const AppStyleItem &style);
+    UIEditText edittext_;
+    ValueChangeListener* onValueChangeListener_;
+    char *fontFamily_;
+    uint8_t fontSize_;
+};
+} // namespace ACELite
+} // namespace OHOS
+#endif // FEATURE_COMPONENT_EDITTEXT
+#endif // OHOS_ACELITE_INPUT_EDIT_TEXT_COMPONENT_H
\ No newline at end of file
index 765686e..abf9cec 100644 (file)
@@ -23,6 +23,7 @@
 #include "directive/descriptor_utils.h"
 #include "fatal_handler.h"
 #include "securec.h"
+#include "text_component.h"
 
 namespace OHOS {
 namespace ACELite {
@@ -296,6 +297,61 @@ void ListAdapter::BuildItemViewTree(const JSValue element) const
         }
     }
     Component::BuildViewTree(component, nullptr, parentParam);
+
+    //text componet adapts to height and width in list-item
+
+    int16_t allh = 0;
+    int16_t allw = 0;
+
+    if (direction_ == UIList::VERTICAL) {
+        if (component->GetDimension(K_HEIGHT).type == DimensionType::TYPE_UNKNOWN) {
+            JSValue children = component->GetChildren();
+            uint16_t length = JSArray::Length(children);
+
+            for (uint16_t idx = 0; idx < length; ++idx) {
+                JSValue key = JSArray::Get(children, idx);
+
+                Component *chidrenComponent = ComponentUtils::GetComponentFromBindingObject(key);
+
+                if (chidrenComponent->GetComponentName() == K_TEXT){
+                    TextComponent* textComponent = reinterpret_cast<TextComponent *>(chidrenComponent);
+                    UILabel *uiLabel = textComponent->GetUILabelView();
+                    int16_t chidrenComponentHeight = uiLabel->GetHeight();
+                    allh += chidrenComponentHeight;
+                }else{
+                    int16_t chidrenComponentHeight = chidrenComponent->GetHeight();
+                    allh += chidrenComponentHeight;
+                }
+            }
+
+            component->SetHeight(allh);
+            Component::BuildViewTree(component, nullptr, parentParam);
+        }
+    } else {
+        if (component->GetDimension(K_WIDTH).type == DimensionType::TYPE_UNKNOWN) {
+            JSValue children = component->GetChildren();
+            uint16_t length = JSArray::Length(children);
+
+            for (uint16_t idx = 0; idx < length; ++idx) {
+                JSValue key = JSArray::Get(children, idx);
+
+                Component *chidrenComponent = ComponentUtils::GetComponentFromBindingObject(key);
+
+                if (chidrenComponent->GetComponentName() == K_TEXT){
+                    TextComponent* textComponent = reinterpret_cast<TextComponent *>(chidrenComponent);
+                    UILabel *uiLabel = textComponent->GetUILabelView();
+                    int16_t chidrenComponentWidth = uiLabel->GetWidth();
+                    allw += chidrenComponentWidth;
+                }else{
+                    int16_t chidrenComponentWidth = chidrenComponent->GetWidth();
+                    allw += chidrenComponentWidth;
+                }
+            }
+
+            component->SetWidth(allw);
+            Component::BuildViewTree(component, nullptr, parentParam);
+        }
+    }
     component->OnViewAttached();
 }
 
index 64778ea..11f151a 100644 (file)
@@ -30,6 +30,7 @@ public:
     TextComponent() = delete;
     TextComponent(jerry_value_t options, jerry_value_t children, AppStyleManager* styleManager);
     ~TextComponent() override {}
+    UILabel* GetUILabelView() const;
 
 protected:
     bool CreateNativeViews() override;
@@ -37,7 +38,6 @@ protected:
     UIView *GetComponentRootView() const override;
     bool SetPrivateAttribute(uint16_t attrKeyId, jerry_value_t attrValue) override;
     bool ApplyPrivateStyle(const AppStyleItem* styleItem) override;
-    UILabel* GetUILabelView() const;
     void OnViewAttached() override;
     void PostUpdate(uint16_t attrKeyId) override;
 
index 2b332f1..9fef1e2 100644 (file)
  */
 #define FEATURE_COMPONENT_CANVAS
 
+/**
+ * enable edittext component Feature
+ */
+#ifndef FEATURE_COMPONENT_EDITTEXT
+#define FEATURE_COMPONENT_EDITTEXT 1
+#endif
+
 /**
  * enable QRcode component
  */
 /**
  * support device module
  */
-//xx00  #define FEATURE_MODULE_DEVICE
+#define FEATURE_MODULE_DEVICE
 
 /**
  * date time module
diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/device_module.cpp b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/device_module.cpp
new file mode 100644 (file)
index 0000000..6598ea0
--- /dev/null
@@ -0,0 +1,246 @@
+/*\r
+ * Copyright (c) 2020 Huawei Device Co., Ltd.\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *     http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+#include <new>\r
+#include "ace_log.h"\r
+#include "js_app_context.h"\r
+#include "js_async_work.h"\r
+#include "product_adapter.h"\r
+#include <securec.h>\r
+#include "device_module.h"\r
+#include "media_log.h"\r
+#include "global.h"\r
+#include "screen.h"\r
+\r
+namespace OHOS {\r
+namespace ACELite {\r
+\r
+const char * const DeviceModule::DEVICE_BRAND = "brand";\r
+const char * const DeviceModule::DEVICE_MANUFACTURER = "manufacturer";\r
+const char * const DeviceModule::DEVICE_MODEL = "model";\r
+const char * const DeviceModule::DEVICE_PRODUCT = "product";\r
+const char * const DeviceModule::DEVICE_LANGUAGE = "language";\r
+const char * const DeviceModule::DEVICE_REGION = "region";\r
+const char * const DeviceModule::DEVICE_WINDOW_WIDTH_NAME = "windowWidth";\r
+const char * const DeviceModule::DEVICE_WINDOW_HEIGHT_NAME = "windowHeight";\r
+const char * const DeviceModule::DEVICE_SCREEN_DENSITY_NAME = "screenDensity";\r
+const char * const DeviceModule::DEVICE_SCREEN_SHAPE = "screenShape";\r
+const uint32_t DeviceModule::DEVICE_SCREEN_DENSITY = 326;\r
+const uint8_t DeviceModule::DEVICE_API_VERSION = 4;\r
+const char * const DeviceModule::DEVICE_TYPE = "deviceType";\r
+const char * const DeviceModule::DEVICE_API_VERSION_NAME = "apiVersion";\r
+\r
+bool DeviceModule::GetBrand(JSIValue result)\r
+{   bool ret = true;\r
+    const char *brand = DEVICE_BRAND;\r
+    if (brand == nullptr) {\r
+        ret = false;\r
+    } else {\r
+        JSI::SetStringProperty(result, DEVICE_BRAND, brand);\r
+    }\r
+    return ret;\r
+}\r
+\r
+bool DeviceModule::GetManufacturer(JSIValue result)\r
+{\r
+    bool ret = true;\r
+    const char *manufacturer = DEVICE_MANUFACTURER;\r
+    if (manufacturer == nullptr) {\r
+        ret = false;\r
+    } else {\r
+        JSI::SetStringProperty(result, DEVICE_MANUFACTURER, manufacturer);\r
+    }\r
+    return ret;\r
+}\r
+\r
+bool DeviceModule::GetModel(JSIValue result)\r
+{\r
+    bool ret = true;\r
+    const char *mode = DEVICE_MODEL;\r
+    if (mode == nullptr) {\r
+        ret = false;\r
+    } else {\r
+        JSI::SetStringProperty(result, DEVICE_MODEL, mode);\r
+    }\r
+    return ret;\r
+}\r
+\r
+bool DeviceModule::GetProduct(JSIValue result)\r
+{\r
+    bool ret = true;\r
+    const char *product = DEVICE_PRODUCT;\r
+    if (product == nullptr) {\r
+        ret = false;\r
+    } else {\r
+        JSI::SetStringProperty(result, DEVICE_PRODUCT, product);\r
+    }\r
+    return ret;\r
+}\r
+\r
+const char* DeviceModule::translateText(char* input) \r
+{\r
+    if (strcmp(input, "zh") == 0) {\r
+        return "Chinese";\r
+    } else if (strcmp(input, "en") == 0) {\r
+        return "English";\r
+    } else {\r
+        return "Chinese";\r
+    }\r
+}\r
+\r
+bool DeviceModule::GetLanguage(JSIValue result)\r
+{\r
+    bool ret = true;\r
+    char language[MAX_LANGUAGE_LENGTH + 1] = { 0 };\r
+    uint8_t res = GLOBAL_GetLanguage(language, MAX_LANGUAGE_LENGTH);\r
+    JSI::SetStringProperty(result, DEVICE_LANGUAGE, translateText(language));\r
+    return ret;\r
+}\r
+\r
+bool DeviceModule::GetRegion(JSIValue result)\r
+{\r
+    bool ret = true;\r
+    const char *region = DEVICE_REGION;\r
+    if (region == nullptr) {\r
+        ret = false;\r
+    } else {\r
+        JSI::SetStringProperty(result, DEVICE_REGION, region);\r
+    }\r
+    return ret;\r
+}\r
+\r
+bool DeviceModule::GetScreenInfo(JSIValue result)\r
+{\r
+    Screen &screen = Screen::GetInstance();\r
+    ScreenShape screenShapetmp = screen.GetScreenShape();\r
+    uint32_t windowHeight = screen.GetHeight();\r
+    uint32_t windowWidth = screen.GetWidth();\r
+    uint32_t screenDensity = DEVICE_SCREEN_DENSITY;\r
+    const char* screenShape = screenShapetmp ? "circle" : "rect";\r
+\r
+    JSI::SetStringProperty(result, DEVICE_SCREEN_SHAPE, screenShape);\r
+    JSI::SetNumberProperty(result, DEVICE_WINDOW_WIDTH_NAME, static_cast<double>(windowWidth));\r
+    JSI::SetNumberProperty(result, DEVICE_WINDOW_HEIGHT_NAME, static_cast<double>(windowHeight));\r
+    JSI::SetNumberProperty(result, DEVICE_SCREEN_DENSITY_NAME, static_cast<double>(screenDensity));\r
+    return true;\r
+}\r
+\r
+bool DeviceModule::GetDeviceType(JSIValue result)\r
+{\r
+    bool ret = true;\r
+    const char *deviceType = DEVICE_TYPE;\r
+    if (deviceType == nullptr) {\r
+        ret = false;\r
+    } else {\r
+        JSI::SetStringProperty(result, DEVICE_TYPE, deviceType);\r
+    }\r
+    return ret;\r
+}\r
+\r
+bool DeviceModule::GetApiVersion(JSIValue result)\r
+{\r
+    bool ret = true;\r
+    uint8_t apiVersion = DEVICE_API_VERSION;\r
+    JSI::SetNumberProperty(result, DEVICE_API_VERSION_NAME, apiVersion);\r
+    return ret;\r
+}\r
+\r
+JSIValue DeviceModule::GetInfo(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum)\r
+{\r
+    return ExecuteAsyncWork(thisVal, args, argsNum, ExecuteGetDeviceInfo);\r
+}\r
+\r
+JSIValue DeviceModule::ExecuteAsyncWork(const JSIValue thisVal, const JSIValue* args, uint8_t argsNum, AsyncWorkHandler ExecuteFunc)\r
+{\r
+    JSIValue undefValue = JSI::CreateUndefined();\r
+    if ((args == nullptr) || (argsNum == 0) || (JSI::ValueIsUndefined(args[0]))) {\r
+        HILOG_ERROR(HILOG_MODULE_ACE, "Error in obtaining device information parameters");\r
+        return undefValue;\r
+    }\r
+    DeviceParams* params = new(std::nothrow) DeviceParams();\r
+    if (params == nullptr) {\r
+        return undefValue;\r
+    }\r
+    params->thisVal = JSI::AcquireValue(thisVal);\r
+    params->args = JSI::AcquireValue(args[0]);\r
+    JsAsyncWork::DispatchAsyncWork(ExecuteFunc, reinterpret_cast<void *>(params));\r
+    return undefValue;\r
+}\r
+\r
+void DeviceModule::ExecuteGetDeviceInfo(void* data)\r
+{\r
+    DeviceParams* params = reinterpret_cast<DeviceParams *>(data);\r
+    if (params == nullptr) {\r
+        return;\r
+    }\r
+    JSIValue args = params->args;\r
+    JSIValue thisVal = params->thisVal;\r
+    JSIValue result = JSI::CreateObject();\r
+\r
+    if (GetBrand(result) && GetManufacturer(result) && GetModel(result) && GetProduct(result)\r
+        && GetLanguage(result) && GetRegion(result) && GetScreenInfo(result) &&\r
+        GetApiVersion(result) && GetDeviceType(result)) \r
+    {\r
+        SuccessCallBack(thisVal, args, result);\r
+    } else {\r
+        FailCallBack(thisVal, args, -1);\r
+    }\r
+\r
+    JSI::ReleaseValueList(args, thisVal, result, ARGS_END);\r
+    delete params;\r
+}\r
+\r
+void DeviceModule::SuccessCallBack(const JSIValue thisVal, const JSIValue args, JSIValue jsiValue)\r
+{\r
+    if (JSI::ValueIsUndefined(args)) {\r
+        return;\r
+    }\r
+    JSIValue success = JSI::GetNamedProperty(args, CB_SUCCESS);\r
+    JSIValue complete = JSI::GetNamedProperty(args, CB_COMPLETE);\r
+    if (!JSI::ValueIsUndefined(success)) {\r
+        if (JSI::ValueIsUndefined(jsiValue)) {\r
+            JSI::CallFunction(success, thisVal, nullptr, 0);\r
+        } else {\r
+            JSI::CallFunction(success, thisVal, &jsiValue, ARGC_ONE);\r
+        }\r
+    }\r
+    if (!JSI::ValueIsUndefined(complete)) {\r
+        JSI::CallFunction(complete, thisVal, nullptr, 0);\r
+    }\r
+    JSI::ReleaseValueList(success, complete, ARGS_END);\r
+}\r
+\r
+void DeviceModule::FailCallBack(const JSIValue thisVal, const JSIValue args, int ret)\r
+{\r
+    if (JSI::ValueIsUndefined(args)) {\r
+        return;\r
+    }\r
+    JSIValue errInfo;\r
+    errInfo = JSI::CreateString("GetDeviceInfo faild");\r
+    JSIValue errCode = JSI::CreateNumber(ret);\r
+    JSIValue fail = JSI::GetNamedProperty(args, CB_FAIL);\r
+    JSIValue complete = JSI::GetNamedProperty(args, CB_COMPLETE);\r
+    JSIValue argv[ARGC_TWO] = {errInfo, errCode};\r
+    if (!JSI::ValueIsUndefined(fail)) {\r
+        JSI::CallFunction(fail, thisVal, argv, ARGC_TWO);\r
+    }\r
+    if (!JSI::ValueIsUndefined(complete)) {\r
+        JSI::CallFunction(complete, thisVal, nullptr, 0);\r
+    }\r
+    JSI::ReleaseValueList(fail, complete, errInfo, errCode, ARGS_END);\r
+}\r
+\r
+} // namespace ACELite\r
+} // namespace OHOS\r
diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/device_module.h b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/device_module.h
new file mode 100644 (file)
index 0000000..775edc0
--- /dev/null
@@ -0,0 +1,81 @@
+/*\r
+ * Copyright (c) 2020 Huawei Device Co., Ltd.\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *     http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+#ifndef OHOS_ACELITE_DEVICE_MODULE_H\r
+#define OHOS_ACELITE_DEVICE_MODULE_H\r
+\r
+#include <cJSON.h>\r
+#include "acelite_config.h"\r
+#include "jsi.h"\r
+#include "js_async_work.h"\r
+#include "non_copyable.h"\r
+#include "product_adapter.h"\r
+#include "abilityms_slite_client.h"\r
+\r
+namespace OHOS {\r
+namespace ACELite {\r
+\r
+struct DeviceParams {\r
+    JSIValue args = JSI::CreateUndefined();\r
+    JSIValue thisVal = JSI::CreateUndefined();\r
+};\r
+\r
+class DeviceModule final : public MemoryHeap {\r
+public:\r
+    ACE_DISALLOW_COPY_AND_MOVE(DeviceModule);\r
+    DeviceModule() = default;\r
+    ~DeviceModule() = default;\r
+    static const char * const DEVICE_BRAND;\r
+    static const char * const DEVICE_MANUFACTURER;\r
+    static const char * const DEVICE_MODEL;\r
+    static const char * const DEVICE_PRODUCT;\r
+    static const char * const DEVICE_LANGUAGE;\r
+    static const char * const DEVICE_REGION;\r
+    static const char * const DEVICE_WINDOW_WIDTH_NAME;\r
+    static const char * const DEVICE_WINDOW_HEIGHT_NAME;\r
+    static const char * const DEVICE_SCREEN_DENSITY_NAME;\r
+    static const char * const DEVICE_SCREEN_SHAPE;\r
+    static const uint32_t DEVICE_SCREEN_DENSITY;\r
+    static const uint8_t DEVICE_API_VERSION;\r
+    static const char * const DEVICE_TYPE;\r
+    static const char * const DEVICE_API_VERSION_NAME;\r
+    static JSIValue GetInfo(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum);\r
+    static bool GetBrand(JSIValue result);\r
+    static bool GetManufacturer(JSIValue result);\r
+    static bool GetModel(JSIValue result);\r
+    static bool GetProduct(JSIValue result);\r
+    static bool GetLanguage(JSIValue result);\r
+    static bool GetRegion(JSIValue result);\r
+    static bool GetScreenInfo(JSIValue result);\r
+    static bool GetDeviceType(JSIValue result);\r
+    static bool GetApiVersion(JSIValue result);\r
+    static const char* translateText(char* input);\r
+\r
+private:\r
+    static JSIValue ExecuteAsyncWork(const JSIValue thisVal, const JSIValue* args, uint8_t argsNum, AsyncWorkHandler ExecuteFunc);\r
+    static void SuccessCallBack(const JSIValue thisVal, const JSIValue args, JSIValue jsiValue);\r
+    static void FailCallBack(const JSIValue thisVal, const JSIValue args, int ret);\r
+    static void ExecuteGetDeviceInfo(void *data);\r
+\r
+};\r
+\r
+void InitDeviceModule(JSIValue exports)\r
+{\r
+    JSI::SetModuleAPI(exports, "getInfo", DeviceModule::GetInfo);\r
+}\r
+\r
+} // namespace ACELite\r
+} // namespace OHOS\r
+#endif // OHOS_ACELITE_APP_MODULE_H\r
index e6f4df9..731ee5b 100644 (file)
@@ -32,7 +32,7 @@ extern void InitRouterModule(JSIValue exports);
 extern void InitAppModule(JSIValue exports);
 #ifdef FEATURE_MODULE_AUDIO
 extern void InitAudioModule(JSIValue exports);
-extern void InitAudioCaptuerModule(JSIValue exports);
+extern void InitAudioCapturerModule(JSIValue exports);
 extern void InitBaiduMapComponentModule(JSIValue exports);
 #endif // FEATURE_MODULE_AUDIO
 #ifdef FEATURE_ACELITE_DFX_MODULE
@@ -50,9 +50,9 @@ extern void InitNativeApiFs(JSIValue exports);
 extern void InitNativeApiKv(JSIValue exports);
 #endif
 
-// #ifdef FEATURE_MODULE_DEVICE
-// extern void InitDeviceModule(JSIValue exports);
-// #endif
+#ifdef FEATURE_MODULE_DEVICE
+extern void InitDeviceModule(JSIValue exports);
+#endif
 
 // #ifdef FEATURE_MODULE_GEO
 // extern void InitLocationModule(JSIValue exports);
@@ -87,7 +87,7 @@ const Module OHOS_MODULES[] = {
     {"app", InitAppModule},
 #ifdef FEATURE_MODULE_AUDIO
     {"audio", InitAudioModule},
-    {"audiocaptuer", InitAudioCaptuerModule},
+    {"audiocapturer", InitAudioCapturerModule},
 #endif
 #ifdef FEATURE_MODULE_BAIDU
     {"baidumapcomponent",InitBaiduMapComponentModule},
@@ -110,9 +110,9 @@ const Module OHOS_MODULES[] = {
      {"file", InitNativeApiFs},
      {"storage", InitNativeApiKv},
 #endif
-// #ifdef FEATURE_MODULE_DEVICE
-//     {"device", InitDeviceModule},
-// #endif
+#ifdef FEATURE_MODULE_DEVICE
+    {"device", InitDeviceModule},
+#endif
 // #ifdef FEATURE_MODULE_GEO
 //     {"geolocation", InitLocationModule},
 // #endif
index e49a9a0..d39cac6 100644 (file)
Binary files a/code/sdk/open_source/openharmony/foundation/appexecfwk/appexecfwk_lite/brandy-native-js/libbms.a and b/code/sdk/open_source/openharmony/foundation/appexecfwk/appexecfwk_lite/brandy-native-js/libbms.a differ
index fd2e760..b813892 100644 (file)
Binary files a/code/sdk/open_source/openharmony/foundation/appexecfwk/appexecfwk_lite/brandy-xts/libbms.a and b/code/sdk/open_source/openharmony/foundation/appexecfwk/appexecfwk_lite/brandy-xts/libbms.a differ
@@ -25,17 +25,17 @@ int32_t AudioCaptureSample(int32_t argc, const char *argv[]);
 \r
 namespace OHOS {\r
 namespace ACELite {\r
-class AudioCaptuerModule final : public MemoryHeap {\r
+class AudioCapturerModule final : public MemoryHeap {\r
 public:\r
     /**\r
      * constructor\r
      */\r
-    AudioCaptuerModule() = default;\r
+    AudioCapturerModule() = default;\r
 \r
     /**\r
      * desconstructor\r
      */\r
-    ~AudioCaptuerModule() = default;\r
+    ~AudioCapturerModule() = default;\r
     /**\r
      * Start\r
      */\r
@@ -47,7 +47,7 @@ public:
     static JSIValue Stop(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize);\r
 };\r
 \r
-void InitAudioCaptuerModule(JSIValue exports);\r
+void InitAudioCapturerModule(JSIValue exports);\r
 }\r
 }\r
 \r
index bd57de7..b193b68 100644 (file)
@@ -17,7 +17,7 @@
 extern "C" {
 #endif
 #endif
-
+#define ACORE_MAX_PKT_RETRY_CNT  3
 #define WRITE_PROPERTY_ERR_TIMES 100
 #define BT_ACORE_TASK_QUEUE_SIZE 500
 typedef enum {
diff --git a/code/sdk/protocol/bt/host/bt/bts/bg_common/include/ahi_common/mpc_code_def.h b/code/sdk/protocol/bt/host/bt/bts/bg_common/include/ahi_common/mpc_code_def.h
new file mode 100644 (file)
index 0000000..34e7c9c
--- /dev/null
@@ -0,0 +1,580 @@
+/*
+ * Copyright (c) @CompanyNameMagicTag 2022-2023. All rights reserved.
+ * Description: test at cmd proc
+ */
+#ifndef MPC_CODE_DEF_H
+#define MPC_CODE_DEF_H
+#ifdef __cplusplus
+#if __cplusplus
+extern "C" {
+#endif
+#endif
+
+typedef enum {
+    MPC_COMMAND_BLE_BASE = 0x10,
+    MPC_COMMAND_BR_BASE = 0x30,
+    MPC_COMMAND_GLE_BASE = 0x50,
+    MPC_COMMAND_TEST_BASE = 0x70,
+} mc_service_base;
+
+typedef enum {
+    BT_DEVICE_MGR_SVR = MPC_COMMAND_BLE_BASE,
+    BLE_CONNECT_SVR,
+    BT_MANAGER_SVR,
+    BT_DESKTOP_SVR,
+} mc_service_type_ble;
+
+typedef enum {
+    GLE_MANAGER_SVR = MPC_COMMAND_GLE_BASE,
+} mc_service_type_gle;
+
+typedef enum {
+    MC_BT_SRV_A2DP = MPC_COMMAND_BR_BASE,
+    MC_BT_SRV_AVRCP,
+    MC_BT_SRV_HFP,
+    MC_BT_SRV_PBAP,
+    MC_BT_SRV_GAP,
+    MC_BT_SRV_GAP_EVENT,
+    MC_BT_SRV_SPP,
+    MC_BT_SRV_PAN,
+    MC_BT_SVR_BRANDY_MAX,
+} mc_service_type_br;
+
+typedef enum {
+    MC_BT_FACTORY_TEST_SVR = MPC_COMMAND_TEST_BASE,
+    MC_BT_SRV_BRANDY_PTS,
+    MC_BT_SRV_DONGLE_TEST
+} mc_service_type_test;
+
+/* service_id: MC_BT_FACTORY_TEST_SVR */
+typedef enum {
+    MC_BT_DFT_BT_BASE                   = 0x00,
+    MC_BT_DFT_CHECK_EFLASH              = 0x01,
+    MC_BT_DFT_RF_TEST_ON                = 0x02,
+    MC_BT_DFT_RF_TX_ONOFF               = 0x03,
+    MC_BT_DFT_READ_HW_VERSION           = 0x04,
+    MC_BT_DFT_READ_VOLTAGE              = 0x05,
+    MC_BT_DFT_RESERVED_1306             = 0x06,
+    MC_BT_DFT_WRITE_BDADDR              = 0x07,
+    MC_BT_DFT_READ_BDADDR               = 0x08,
+    MC_BT_DFT_NAME_WRITE                = 0x09,
+    MC_BT_DFT_NAME_READ                 = 0x0A,
+    MC_BT_DFT_READ_BT_VERSION           = 0x0B,
+    MC_BT_DFT_READ_MFI_ID               = 0x0C,
+    MC_BT_DFT_SQIF_RW_CHECK             = 0x0D,
+    MC_BT_DFT_MICA_LOOP                 = 0x0E,
+    MC_BT_DFT_MICB_LOOP                 = 0x0F,
+    MC_BT_DFT_MIC_CALIBRATION           = 0x10,
+    MC_BT_DFT_ENTER_DFU_MODE            = 0x11,
+    MC_BT_DFT_FACTORY_MODE              = 0x12,
+    MC_BT_DFT_RESET_PDL                 = 0x13,
+    MC_BT_DFT_READ_USB_PORT             = 0x14,
+    MC_BT_DFT_SET_USB_PORT              = 0x15,
+    MC_BT_DFT_PSKEY_READ                = 0x16,
+    MC_BT_DFT_ENTER_PAIRING             = 0x17,
+    MC_BT_DFT_TEMP_READ                 = 0x18,
+    MC_BT_DFT_RESET                     = 0x19,
+    MC_BT_DFT_ENTER_DUT_MODE            = 0x1A,
+    MC_BT_DFT_POWER_ON                  = 0x1B,
+    MC_BT_DFT_POWER_OFF                 = 0x1C,
+    MC_BT_DFT_SET_SIG_CMD               = 0x1D,
+    MC_BT_DFT_RF_BLE_TX_MODE            = 0x25,
+    MC_BT_DFT_RF_BLE_RX_MODE            = 0x26,
+    MC_BT_DFT_RF_RESET_RX_COUNT         = 0x27,
+    MC_BT_DFT_RF_READ_RX_COUNT          = 0x28,
+    MC_BT_DFT_RF_BREDR_TX_MODE          = 0x2B,
+    MC_BT_DFT_RF_BREDR_RX_MODE          = 0x2C,
+    MC_BT_DFT_CALI_POWER_INIT           = 0x2D,
+    MC_BT_DFT_CALI_POWER_START          = 0x2E,
+    MC_BT_DFT_CALI_POWER_END            = 0x2F,
+    MC_BT_DFT_OPERATION_CALIBRATION     = 0x30,
+    MC_BT_DFT_TRANSPARENT_TRANS         = 0x31,
+    MC_BT_DFT_DISCONNECT_LINK           = 0x32,
+    MC_BT_DFT_QUERY_CON_INFO            = 0x33,
+    MC_BT_DFT_QUERY_PAIRED_DEVICE_INFO  = 0x34,
+    MC_BT_DFT_BLE_DEV_INFO              = 0x37,
+    MC_BT_DFT_ADDR_INFO_SET             = 0x39,
+    MC_BT_DFT_GATT_GAP_REG              = 0x3A,
+    MC_BT_DFT_RF_RX_COUNT_RSP           = 0x3B,
+    MC_BT_DFT_SET_VENDOR_CMD            = 0x3C,
+} mc_bt_dft_command_type;
+
+/* service_id: BT_DEVICE_MGR_SVR */
+typedef enum {
+    MC_BT_DEV_GET_VERSION                           = 0x01,
+    MC_BT_DEV_RESET_FACTORY                         = 0x02,
+    MC_BT_DEV_BAT_VALUE                             = 0x03,
+    MC_BT_DEV_BAT_STATE                             = 0x04,
+    MC_BT_DEV_START_COMP                            = 0x05,
+    MC_BT_DEV_INFO                                  = 0x06,
+    MC_BT_DEV_BT_LOST_REMIND                        = 0x07,
+    MC_BT_MANAGER_RECOVER_CALIBRATION_DATA          = 0x08,
+    MC_BT_MANAGER_RECOVER_SMP_KEYS                  = 0x09,
+    MC_BT_MANAGER_RECOVER_PRODUCT_TYPE              = 0x0a,
+    MC_BT_MANAGER_RECOVER_SYS_CONFIG                = 0x0b,
+    MC_BT_MANAGER_SET_LOCAL_ADDR                    = 0x0c,
+    MC_BT_MANAGER_SET_LOCAL_NAME                    = 0x0d,
+    MC_BT_MANAGER_REPORT_SMP_KEYS                   = 0x0e,
+} mc_bt_dev_manager_command_type;
+
+/* service_id: BLE_CONNECT_SVR */
+typedef enum {
+    MC_BLE_CONN_STATE                               = 0x01,
+    MC_BLE_PAIR_MODE                                = 0x02,
+    MC_BLE_DISCONN                                  = 0x03,
+    MC_BLE_QUERY_CONN_STATE                         = 0x04,
+    MC_BLE_ENTER_HV_MODE                            = 0x05,
+    MC_BLE_BPM_DATA                                 = 0x06,
+    MC_BLE_DEL_PAIR_INFO                            = 0x07, // MCU notify BLE delete pair infomation
+    MC_BLE_RPT_HRS_MODE                             = 0x08, // BLE report hrs mode
+    MC_BLE_RPT_SAIS_MODE                            = 0x09, // BLE report sais mode
+    MC_BLE_ADV_ENABLE                               = 0x0A,
+    MC_BLE_CONNECT_PEER                             = 0x0B,
+    MC_BLE_SET_PRODUCT_TYPE                         = 0x0C,
+    MC_BLE_MTU_INQUERY                              = 0x0D,
+    MC_BLE_CONN_UPDATE                              = 0x0E,
+
+    /* General Interface for Stack */
+    MC_BLE_L2CAP_REG_PSM                            = 0x20,
+    MC_BLE_L2CAP_UNREG_PSM,
+    MC_BLE_L2CAP_CREDIT_CH_REQ,
+    MC_BLE_L2CAP_CREDIT_CH_RSP,
+    MC_BLE_L2CAP_CREDIT_CH_RX,
+    MC_BLE_L2CAP_CH_TX,
+    MC_BLE_L2CAP_CREDIT_FLOW_CTRL,  /* 0x25 */
+    MC_BLE_L2CAP_DISCONNECTION,
+    MC_BLE_L2CAP_SET_CONFIG_PARAMS,
+    MC_BLE_L2CAP_CONNECT,
+
+    /* General Interface for gatt server Stack */
+    MC_BLE_GATT_CREATE_SERVER                       = 0x40,
+    MC_BLE_GATT_CREATE_SERVICE                      = 0x41,
+    MC_BLE_GATT_ADD_INCLUDE_SERVICE                 = 0x42,
+    MC_BLE_GATT_ADD_CHARACTER                       = 0x43,
+    MC_BLE_GATT_ADD_DESC                            = 0x44,
+    MC_BLE_GATT_START_SERVICE                       = 0x45,
+    MC_BLE_GATT_SEND_RESPONSE                       = 0x46,
+    MC_BLE_GATT_UPDATE_CHARACTER_VALUE              = 0x47,
+    MC_BLE_GATT_UPDATE_DESCRIPTOR_VALUE             = 0x48,
+    MC_BLE_GATT_GET_GAP_ATTTIBUTE                   = 0x49,
+    MC_BLE_GATT_SET_GAP_ATTTIBUTE                   = 0x4A,
+    MC_BLE_GATT_MULTIPLE_VALUE_NTF                  = 0x4B,
+    MP_BLE_GATT_MTU_SET_PARAM                       = 0x4C,
+    MC_BLE_GATT_WRITE_IND                           = 0x4D,
+    MC_BLE_GATT_READ_IND                            = 0x4E,
+    MC_BLE_GATT_STOP_SERVICE                        = 0x4F,
+    MC_BLE_GATT_MTU_CHANGED                         = 0x50,
+
+    /* General Interface for gatt client Stack */
+    MC_BLE_GATT_DISCOVERY_SERVICE                   = 0x51,
+    MC_BLE_GATT_DISCOVERY_INCLUDE                   = 0x52,
+    MC_BLE_GATT_DISCOVERY_CHARACTER                 = 0x53,
+    MC_BLE_GATT_DISCOVERY_CHARACTER_BY_UUID         = 0x54,
+    MC_BLE_GATT_DISCOVERY_DESCRIPTOR                = 0x55,
+    MC_BLE_GATT_DISCOVERY_DESCRIPTOR_BY_HANDLE      = 0x56,
+    MC_BLE_GATT_READ_CHARACTER                      = 0x57,
+    MC_BLE_GATT_READ_CHARACTER_BY_UUID              = 0x58,
+    MC_BLE_GATT_READ_MULTIPLE_CHARACTER             = 0x59,
+    MC_BLE_GATT_MULTIPLE_VALUE_READ_CHARACTER       = 0x5A,
+    MC_BLE_GATT_WRITE_CHARACTER                     = 0x5B,
+    MC_BLE_GATT_RELIABLE_WRITE_CHARACTER            = 0x5C,
+    MC_BLE_GATT_READ_DESCRIPTOR                     = 0x5D,
+    MC_BLE_GATT_WRITE_DESCRIPTOR                    = 0x5E,
+    MC_BLE_GATT_MTU_CONFIG                          = 0x5F,
+    MC_BLE_GATT_VALUE_NOTIFICATION                  = 0x60,
+    MC_BLE_GATT_GET_HID_DEVICE_REPORT               = 0x61,
+    MC_BLE_GATT_SET_ATT_MIN_KEY_SIZE                = 0x62,
+    MC_BLE_GATT_SET_ATT_CONFIG_PARAM                = 0x63,
+    MC_BLE_GATT_UPDATE_CHARACTER_VALUE_BY_UUID      = 0x64,
+    MC_BLE_GATT_DISCOVERY_SERVICE_COMPMLETE         = 0x65,
+    MC_BLE_GATT_DISCOVERY_CHARACTER_COMPMLETE       = 0x66,
+    MC_BLE_GATT_DISCOVERY_DESCRIPTOR_COMPMLETE      = 0x67,
+    MC_BLE_GATT_READ_CHARACTER_COMPLETE             = 0x68,
+
+    MC_BLE_GAP_ADV_RPT                              = 0x70,
+    MC_BLE_GAP_UPDATE_CONN_PARAMS                   = 0x71,
+    MC_BLE_GAP_EXT_ADV_ENABLE                       = 0x72,
+    MC_BLE_GAP_ADD_WHITE_LIST                       = 0x73,
+    MC_BLE_GAP_RMV_WHITE_LIST                       = 0x74,
+
+    MC_BLE_GAP_GET_LOCAL_APPEARANCE                 = 0x75,
+    MC_BLE_GAP_SET_LOCAL_APPEARANCE                 = 0x76,
+    MC_BLE_GAP_SET_PERIOD_ADVERTISING               = 0x77,
+    MC_BLE_GAP_DIS_PERIOD_ADVERTISING               = 0x78,
+    MC_BLE_GAP_SET_PERIOD_ADV_LIST                  = 0x79,
+    MC_BLE_GAP_PERIOD_ADV_CREATE_SYNC               = 0x7a,
+    MC_BLE_GAP_PERIOD_ADV_TERMINATE_SYNC            = 0x7b,
+
+    MC_BLE_GAP_DIS_EXTERN_ADV                       = 0x7c,
+    MC_BLE_GAP_SET_EXTERN_ADV                       = 0x7d,
+    MC_BLE_GAP_RMV_EXTERN_ADV                       = 0x7e,
+    MC_BLE_GAP_DIS_EXTERN_SCAN                      = 0x7f,
+    MC_BLE_GAP_SET_EXTERN_SCAN                      = 0x80,
+    MC_BLE_GAP_SET_RANDOM_ADDR                      = 0x81,
+    MC_BLE_GAP_GET_WHITE_LIST                       = 0x82,
+    MC_BLE_GAP_CON_USE_WHITE_LIST                   = 0x83,
+    MC_BLE_GAP_SET_GLOABL_VALUE                     = 0x84,
+    MC_BLE_GAP_SET_CONN_PARAM                       = 0x85,
+    MC_BLE_GAP_SET_HCI_LE_EVENT_MASK                = 0x86,
+    MC_BLE_GAP_SET_ADDR_RESOLVE                     = 0x87,
+    MC_BLE_GAP_ADV_SET_TERMINATED                   = 0x88,
+    MC_BLE_READ_RSSI                                = 0x89,
+    MC_BLE_SET_HCI_LINK_KEY                         = 0x8A,
+    MC_BLE_SET_PHY                                  = 0x8B,
+    MC_BLE_SET_DATA_LENGTH                          = 0x8C,
+
+    MC_BLE_SMP_SET_SEC_PARAM                        = 0xA0,
+    MC_BLE_SMP_PASSKEY_REQ                          = 0xA1,
+    MC_BLE_SMP_PASSKEY_NOTIFY                       = 0xA2,
+    MC_BLE_SMP_PAIR_COMPLETE                        = 0xA3,
+    MC_BLE_SMP_REMOVE_PAIR_INFO                     = 0xA4,
+    MC_BLE_SMP_SET_KEY_FROM_BTC                     = 0xA5,
+    MC_BLE_SMP_REMOVE_PAIR_DEVICE                   = 0xA6,
+    MC_BLE_SMP_REPORT_PAIRED_KEYS                   = 0xA7,
+    MC_BLE_SMP_CTKD_PARAM                           = 0xA8,
+    /* General Interface for Stack */
+} mc_ble_conn_manager_command_type;
+
+/* service_id: BT_DESKTOP_SVR */
+typedef enum {
+    MC_BT_DESKTOP_BASE                              = 0x00,
+    MC_BT_DESKTOP_KEYBOARD_INPUT                    = 0x01,
+    MC_BT_DESKTOP_KEYBOARD_OUTPUT                   = 0x02,
+    MC_BT_DESKTOP_MOUSE_INPUT                       = 0x03,
+} mc_bt_desktop_command_type;
+
+/* service_id: BT_MANAGER_SVR */
+typedef enum {
+    MC_BT_MANAGER_SYNC_REQ                          = 0x01,
+    MC_BT_MANAGER_SYNC_RSP                          = 0x02,
+    MC_BT_MANAGER_CHANGE_REQ                        = 0x03,
+    MC_BT_MANAGER_CHANGE_RSP                        = 0x04,
+    MC_BT_MANAGER_LOCK_STATE_NOTIFY                 = 0x05,
+    MC_BT_MANAGER_FAC_RESET                         = 0x06,
+    MC_BT_MANAGER_DEV_SHUTDOWN                      = 0x07,
+    MC_BT_MANAGER_DEV_HIGHT_POWER                   = 0x08,
+    MC_BT_MANAGER_SELFIND_INFO_NOTIFY               = 0x09, /* Only used to Selfind adv func */
+    MC_BT_MANAGER_TRANSPARENT                       = 0x0A,
+    MC_BT_MANAGER_PDL_OPERATION                     = 0x0B, /* Transmit the storage info of PDL to BT Core */
+    MC_BT_MANAGER_RESET_TYPE                        = 0x0C,
+    MC_BT_MANAGER_PRODUCT_MODE                      = 0x0D,
+    MC_BT_MANAGER_MODE_CHANGE                       = 0x0E,
+} mc_bt_manager_command_type;
+
+/* service_id: MC_BT_SRV_DONGLE_TEST */
+typedef enum {
+    MC_BT_DONGLE_TEST
+} mc_dongle_test_command_type;
+
+typedef enum {
+    MC_GENERAL_CMD_L2CAP1               = 0x2,
+    MC_GENERAL_CMD_L2CAP2               = 0x3,
+    MC_GENERAL_CMD_GATT1                = 0x4,
+    MC_GENERAL_CMD_GATT2                = 0x5,
+    MC_GENERAL_CMD_GATT3                = 0x6,
+    MC_GENERAL_CMD_GAP1                 = 0x7,
+    MC_GENERAL_CMD_GAP2                 = 0x8,
+    MC_GENERAL_CMD_GAP3                 = 0x9,
+    MC_GENERAL_CMD_SMP                  = 0xA,
+    MC_GENERAL_CMD_NUM,
+} mc_general_cmd_t;
+
+/* service_id: MC_BT_SRV_GAP */
+typedef enum {
+    GAP_SDK_INIT              = 0x00,
+    GAP_SDK_DISCONNECT,
+    GAP_SDK_CONNECT_EX,
+    GAP_SDK_START_DEFAULT_BT,
+    GAP_IF_START_DEVICE_DISCOVERY,
+    GAP_IF_SET_DISCOVERY_MODE,
+    GAP_IF_GET_DISCOVERY_MODE,
+    GAP_IF_STOP_DISCOVERY,
+    GAP_IF_CREATE_ACL,
+    GAP_IF_GET_REMOTE_DEV_HANDLE,
+    GAP_IF_IS_DEVICE_CONNECTED,
+    GAP_IF_DISCONNECT_ACL_HANDLE,
+    GAP_IF_PAIR_DEVICE,
+    GAP_IF_UNPAIR_DEVICE,
+    GAP_IF_ADD_RMT_DEVICE,
+    GAP_IF_UPDATE_RMT_DEVICE_NAME,
+    GAP_IF_GET_LOCAL_ADDR,
+    GAP_IF_SET_LOCAL_ADDR,
+    GAP_IF_GET_LOCAL_NAME,
+    GAP_IF_SET_LOCAL_NAME,
+    GAP_IF_GET_RMT_DEV_ADDR,
+    GAP_IF_BROWSE_RMT_SERVICE,
+    GAP_IF_SET_VOICE_SHM_ID,
+    GAP_IF_RECONNECT_PHONE,
+    GAP_IF_SET_TX_POWER,
+    GAP_IF_SDK_DONE,
+    GAP_IF_CREATE_ACL_ASYNC,
+    GAP_IF_UPDATE_RMT_DEVICE_NAME_ASYNC,
+    GAP_IF_READ_RSSI_BR,
+    GAP_IF_SET_ACTIVE_SCENE,
+    GAP_IF_SET_INQUIRY_SCAN_PARAM,
+    GAP_IF_RESTORE_REMOTE_DEVICE,
+    GAP_IF_GET_LINK_MODE,
+    GAP_IF_SET_BR_SECURE_PARAM
+} mpc_bt_stack_gap_opcode;
+
+/* service_id: MC_BT_SRV_A2DP */
+typedef enum {
+    MC_BT_SRV_A2DP_CONNECT,
+    MC_BT_SRV_A2DP_DISCONNECT,
+    MC_BT_SRV_A2DP_STREAM_START,
+    MC_BT_SRV_A2DP_STREAM_SUSPEND,
+    MC_BT_SRV_A2DP_SET_AUDIO_SHMID,
+    MC_BT_SRV_A2DP_SET_STREAM_CODEX,
+    MC_BT_SRV_A2DP_RPT_REMOTE_SEP_CAP,
+    MC_BT_SRV_A2DP_RPT_STREAM_STATE,
+    MC_BT_SRV_A2DP_RPT_STREAM_CONFIG,
+    MC_BT_SRV_A2DP_RPT_STREAM_REJECT,
+    MC_BT_SRV_A2DP_STREAM_START_ACCEPT,
+    MC_BT_SRV_A2DP_SNK_UNREGISTER_SERVICE,
+    MC_BT_SRC_A2DP_MAX,
+} mc_bt_a2dp_command_type;
+
+/* service_id: MC_BT_SRV_HFP */
+typedef enum {
+    MC_BT_SRV_HFP_DAIL,
+    MC_BT_SRV_HFP_CANCEL_CALL,
+    MC_BT_SRV_HFP_3WAY_HANDLE,
+    MC_BT_SRV_HFP_ANSWER_CALL,
+    MC_BT_SRV_HFP_SPK_VOL,
+    MC_BT_SRV_HFP_MIC_VOL,
+    MC_BT_SRV_HFP_AUDIO_CONN_TRANS,
+    MC_BT_SRV_HFP_TX_DTMF,
+    MC_BT_SRV_HFP_GET_CURRENT_CALL,
+    MC_BT_SRV_VOICE_RECOGNITION,
+    MC_BT_SRV_HFP_SCO_ACCEPT,
+    MC_BT_SRV_HFP_HF_CMD_CBK,
+    MC_BT_SRV_HFP_AG_ANSWER_CALL,
+    MC_BT_SRV_HFP_AG_CANCEL_CALL,
+    MC_BT_SRV_HFP_AG_AUDIO_CONN_TRANS,
+    MC_BT_SRV_HFP_AG_SEND_NETWORK_EVENT,
+    MC_BT_SRV_HFP_AG_SEND_CURRENT_CALL,
+    MC_BT_SRV_HFP_AG_SPK_VOL,
+    MC_BT_SRV_HFP_AG_MIC_VOL,
+    MC_BT_SRV_HFP_AG_SEND_SUBSCRIBER_NUMBER,
+    MC_BT_SRV_HFP_AG_SEND_BATTERY_CHARGE,
+    MC_BT_SRV_HFP_AG_SEND_CMEE_ERROR,
+    MC_BT_SRV_HFP_AG_SEND_NETWORK_OPERATOR,
+    MC_BT_SRV_HFP_AG_SET_INDICATOR_VAL,
+    MC_BT_SRV_HFP_AG_SEND_INCOMING_EVENT,
+    MC_BT_SRV_HFP_AG_CHANGE_INBAND_RING_SETTING,
+    MC_BT_SRV_HFP_AG_CMD_CBK,
+    MC_BT_SRV_HFP_AG_ORIGINATE_CALL,
+    MC_BT_SRC_HFP_MAX,
+} mc_bt_hfp_command_type;
+
+/* service_id: MC_BT_SRV_AVRCP */
+typedef enum {
+    MC_BT_SRV_AVRCP_CT_REG_SRV,
+    MC_BT_SRV_AVRCP_CT_REG_NOTIFY,
+    MC_BT_SRV_AVRCP_CT_GET_CAP,
+    MC_BT_SRV_AVRCP_CT_PASS_THROUGH,
+    MC_BT_SRV_AVRCP_CT_GET_ELEMENT_ATTR,
+    MC_BT_SRV_AVRCP_CT_GET_PLAY_STATUS,
+    MC_BT_SRV_AVRCP_CT_SET_ABSOLUTE_VOL_REQ,
+    MC_BT_SRV_AVRCP_TG_SET_ABSOLUTE_VOL_RSP,
+    MC_BT_SRV_AVRCP_TG_EVT_PLAY_STATUS_CHG,
+    MC_BT_SRV_AVRCP_TG_EVT_TRACK_CHG,
+    MC_BT_SRV_AVRCP_TG_EVT_TRACK_REACH_END,
+    MC_BT_SRV_AVRCP_TG_EVT_TRACK_REACH_START,
+    MC_BT_SRV_AVRCP_TG_EVT_PLAY_POS_CHG,
+    MC_BT_SRV_AVRCP_TG_EVT_PLAY_CONTENT_CHG,
+    MC_BT_SRV_AVRCP_TG_EVT_AVAILABLE_PLAYER_CHG,
+    MC_BT_SRV_AVRCP_TG_EVT_ADDR_PLAYER_CHG,
+    MC_BT_SRV_AVRCP_TG_EVT_UIDS_CHG,
+    MC_BT_SRV_AVRCP_TG_EVT_VOL_CHG,
+    MC_BT_SRV_AVRCP_CT_GET_CAPAILITIES_RSP,
+    MC_BT_SRV_AVRCP_TG_CMD_CBK,
+    MC_BT_SRV_AVRCP_CT_EVT_RSP_CBK,
+    MC_BT_SRC_AVRCP_MAX,
+} mc_bt_avrcp_command_type;
+
+/* service_id: MC_BT_SRV_PBAP */
+typedef enum {
+    MC_BT_SRV_PBAP_PULL_PHONEDBOOK,
+    MC_BT_SRV_PBAP_PULL_CARDLIST,
+    MC_BT_SRV_PBAP_PULL_CARDENTRY,
+    MC_BT_SRV_PBAP_SET_PATH,
+    MC_BT_SRV_PBAP_CANCEL_TRANSFER,
+    MC_BT_SRV_PBAP_WRITE_FILE,
+    MC_BT_SRV_PBAP_APP_EVENT,
+} mc_bt_pbap_command_type;
+
+/* service_id: MC_BT_SRV_SPP */
+typedef enum {
+    MC_BT_SRV_SPP_REGISTER,
+    MC_BT_SRV_SPP_READ_STREAM,
+    MC_BT_SRV_SPP_WRITE_STREAM,
+    MC_BT_SRV_SPP_APP_EVENT,
+    MC_BT_SRV_SPP_UNREGISTER,
+    MC_BT_SRC_SPP_MAX,
+} mc_bt_spp_command_type;
+
+typedef enum {
+    MC_BT_SRV_PAN_CONNECT,
+    MC_BT_SRV_PAN_DISCONNECT,
+    MC_BT_SRV_PAN_SETUP_CONN,
+    MC_BT_SRV_PAN_FILTER_PROTOCOL,
+    MC_BT_SRV_PAN_FILTER_MULTIADDR,
+    MC_BT_SRV_PAN_ETHERNET_REQ,
+    MC_BT_SRV_PAN_NET_STATE_CHANGE,
+    MC_BT_SRV_PAN_FILTER_PROTOCOL_RESULT,
+    MC_BT_SRV_PAN_FILTER_MULTIADDR_RESULT,
+    MC_BT_SRV_PAN_RPT_ETHERNET,
+    MC_BT_SRV_PAN_REGISTER_CBK,
+    MC_BT_SRC_PAN_MAX,
+} mc_bt_pan_command_type;
+/* service_id: MC_BT_SRV_BRANDY_PTS */
+typedef enum {
+    /* GAP COMMAND */
+    MC_BT_SRV_PTS_CREAT_ACL,
+    MC_BT_SRV_PTS_SEC_MODE_SET,
+    MC_BT_SRV_PTS_VISUAL_MODE_SET,
+    MC_BT_SRV_PTS_BOND_MODE_SET,
+    MC_BT_SRV_PTS_DISCONNECT_BY_ADDR,
+    MC_BT_SRV_PTS_ENABLE_DISCOVERY,
+    MC_BT_SRV_PTS_PAIR_RMTDEV,
+    MC_BT_SRV_PTS_IO_ABILLITY,
+    MC_BT_SRV_PTS_SET_BT_DEFAULT,
+    MC_BT_SRV_PTS_SET_SECU_LEVEL,
+    MC_BT_SRV_PTS_UNPAIR_RMTDEV,
+    MC_BT_SRV_PTS_ENCRYPTLINK,
+    MC_BT_SRV_PTS_ADD_RMTDEV,
+    /* L2CAP COMMAND */
+    MC_BT_SRV_PTS_L2CAP_CONNECT_RSP,
+    MC_BT_SRV_PTS_L2CAP_DISCONNECT_REQ,
+    MC_BT_SRV_PTS_L2CAP_CONNECT_REQ,
+    /* PBAP COMMAND */
+    MC_BT_SRV_PTS_PBAP_CONNECT_REQ,
+    MC_BT_SRV_PTS_PBAP_DISCONNECT_REQ,
+    /* AVRCP COMMAND */
+    MC_BT_SRV_PTS_AVRCP_CONN,
+    MC_BT_SRV_PTS_AVRCP_SET_ADDRESSED_PLAYER,
+    MC_BT_SRV_PTS_AVRCP_SET_BROWSED_PLAYER,
+    MC_BT_SRV_PTS_AVRCP_FLOADER_ITEMS,
+    MC_BT_SRV_PTS_AVRCP_GET_TOTAL_NUM_OF_ITEMS,
+    MC_BT_SRV_PTS_AVRCP_SEARCH,
+    MC_BT_SRV_PTS_AVRCP_SET_ABSOLUTE_VOLUME,
+    MC_BT_SRV_PTS_AVRCP_REGISTER_NOTIFICATION,
+    MC_BT_SRV_PTS_AVCTP_CONT_BROW_SET,
+    MC_BT_SRV_PTS_AVCTP_CONT_BROW_REL,
+    MC_BT_SRV_PTS_AVRCP_PASS_THROUGT,
+    MC_BT_SRV_PTS_AVRCP_SUB_UNIT_INFO,
+    MC_BT_SRV_PTS_AVRCP_UNIT_INFO,
+    MC_BT_SRV_PTS_AVRCP_REGISTER_SEP,
+    MC_BT_SRV_PTS_AVRCP_PASS_THROUGH_RSP,
+    MC_BT_SRV_PTS_AVRCP_SET_ABSOLUTE_VOL_RSP,
+    MC_BT_SRV_PTS_AVRCP_GET_CAPABILITIES_RSP,
+    MC_BT_SRV_PTS_AVRCP_EVENT_PLAYER_APP_SET_CMD_RSP,
+    MC_BT_SRV_PTS_AVRCP_EVENT_VOL_CHANGED_RSP,
+    MC_BT_SRV_PTS_AVRCP_TG_SET_VOL_CHANGED,
+    MC_BT_SRV_PTS_AVRCP_EVENT_TRACK_CHANGED_RSP,
+    MC_BT_SRV_PTS_AVRCP_CT_EVENT_GET_FOLDER_ITEMS_RSP,
+    MC_BT_SRV_PTS_AVRCP_CHANGE_PATH,
+    MC_BT_SRV_PTS_AVRCP_PLAY_ITEM,
+    MC_BT_SRV_PTS_AVRCP_ADD_TO_NOW_PLAYING,
+    MC_BT_SRV_PTS_AVRCP_SET_BROWSED_PLAYER_RSP,
+    MC_BT_SRV_PTS_AVRCP_SET_ADDRESSED_PLAYER_RSP,
+    MC_BT_SRV_PTS_AVRCP_GET_PLAY_STATUS_RSP,
+    MC_BT_SRV_PTS_AVRCP_GET_ELEMENT_ATTRIBUTES_RSP,
+    MC_BT_SRV_PTS_AVRCP_TG_REJECT_REGISTER_NOTIFICATION,
+    MC_BT_SRV_PTS_AVRCP_EVENT_PLAYER_APP_SET_CHANGED_RSP,
+    MC_BT_SRV_PTS_AVRCP_GET_FOLDER_ITEMS_RSP,
+    MC_BT_SRV_PTS_AVRCP_GET_FOLDER_ITEMS_OTHER_RSP,
+    MC_BT_SRV_PTS_AVRCP_EVENT_ADDR_PLAYER_CHANGED_RSP,
+    MC_BT_SRV_PTS_AVRCP_EVENT_AVAILABLE_PLAYERS_CHANGED_RSP,
+    MC_BT_SRV_PTS_AVRCP_TG_EVENT_UID_CHANGED_RSP,
+    MC_BT_SRV_PTS_AVRCP_GET_FOLDER_ITEMS_ONE_EXTERN_RSP,
+    MC_BT_SRV_PTS_AVRCP_GET_FOLDER_ITEMS_TWO_EXTERN_RSP,
+    MC_BT_SRV_PTS_AVRCP_GET_FOLDER_ITEMS_THREE_EXTERN_RSP,
+    MC_BT_SRV_PTS_AVRCP_STATE_INIT,
+    MC_BT_SRV_PTS_AVRCP_GET_ELEMENT_ATTRIBUTES_FRAGMENT_RSP,
+    /* HFP COMMAND */
+    MC_BT_SRV_PTS_AUDIO_CONN_HFP,
+    MC_BT_SRV_PTS_HF_NETWORK_OP_REQ_HFP,
+    MC_BT_SRV_PTS_HF_SPK_VOL_HFP,
+    MC_BT_SRV_PTS_HF_MIC_VOL_HFP,
+    MC_BT_SRV_PTS_HF_GET_SUB_SCRIBER_NUM,
+    MC_BT_SRV_PTS_HF_GET_CURRENT_CALLS,
+    MC_BT_SRV_PTS_HF_DISABLE_NREC,
+    MC_BT_SRV_PTS_HF_GET_RESPONSE_HOLD_STATUS,
+    MC_BT_SRV_PTS_HF_SET_EXTENDED_ERRORS,
+    MC_BT_SRV_PTS_HF_GET_PHONE_MANU_MODEL,
+    MC_BT_SRV_PTS_HF_GET_HOLD_INCOMING_CALL,
+    MC_BT_SRV_PTS_HF_ACCEPT_HELD_INCOMMING_CALL,
+    MC_BT_SRV_PTS_HF_REJECT_INCOMING_CALL,
+    MC_BT_SRV_PTS_HF_ANSWER_CALL,
+    MC_BT_SRV_PTS_HF_HOLD_INCOMING_CALL,
+    MC_BT_SRV_PTS_HF_CANCEL_INCOMING_CALL,
+    MC_BT_SRV_PTS_HF_CANCEL_CALL,
+    MC_BT_SRV_PTS_HF_TAG_PHONENUM,
+    MC_BT_SRV_PTS_HF_SET_VOICE_RECONITION_REQ,
+    MC_BT_SRV_PTS_HF_TRANSMIT_DTMF_CODE,
+    MC_BT_SRV_PTS_HF_DIAL,
+    MC_BT_SRV_PTS_HF_DIAL_SECOND_CALL,
+    MC_BT_SRV_PTS_HF_LAST_NUM_REDIAL,
+    MC_BT_SRV_PTS_HF_SLC_CONN,
+    MC_BT_SRV_PTS_HF_SLC_DISCONN,
+    MC_BT_SRV_PTS_HF_GET_AG_FEATURES,
+    MC_BT_SRV_PTS_HF_3_WAY_CALLING_CHLD_0,
+    MC_BT_SRV_PTS_HF_3_WAY_CALLING_CHLD_1,
+    MC_BT_SRV_PTS_HF_3_WAY_CALLING_CHLD_2,
+    MC_BT_SRV_PTS_HF_3_WAY_CALLING_CHLD_3,
+    MC_BT_SRV_PTS_HF_3_WAY_CALLING_CHLD_4,
+    MC_BT_SRV_PTS_HF_REPT_CHANGED_CODEC_CAP,
+    /* RFCOMM COMMAND */
+    MC_BT_SRV_PTS_RFCOMM_CONN_REQ,
+    MC_BT_SRV_PTS_RFCOMM_DISCONN_REQ,
+    MC_BT_SRV_PTS_RFCOMM_CONN_RSP,
+    MC_BT_SRV_PTS_RFCOMM_DATA_REQ,
+    MC_BT_SRV_PTS_RFCOMM_RLS_REQ,
+    MC_BT_SRV_PTS_RFCOMM_REG_SERVER,
+    /* SDP COMMAND */
+    MC_BT_SRV_PTS_SDP_SA_ADD_ATTR,
+    MC_BT_SRV_PTS_SDP_SSA_ADD_ATTR,
+    MC_BT_SRV_PTS_SDP_SSA_ADDI_DESC,
+    MC_BT_SRV_PTS_SDP_ADD_RECORD,
+    MC_BT_SRV_PTS_SDP_RM_RECORD,
+    /* AVCTP COMMAND */
+    MC_BT_SRV_PTS_AVCTP_CONN,
+    MC_BT_SRV_PTS_AVCTP_DISCONN,
+    MC_BT_SRV_PTS_AVCTP_CT_NFR,
+    MC_BT_SRV_PTS_AVCTP_CT_FRA,
+    MC_BT_SRV_PTS_AVCTP_TG_FRA,
+    /* A2DP COMMAND */
+    MC_BT_SRV_PTS_A2DP_SRC_CONN,
+    MC_BT_SRV_PTS_A2DP_SRC_DISCONN,
+    MC_BT_SRV_PTS_A2DP_SRC_SEND_STREAM,
+    MC_BT_SRV_PTS_A2DP_SRC_SUSPEND_STREAM,
+    /* AVDTP */
+    MC_BT_SRV_PTS_AVDTP_GET_CONF,
+    MC_BT_SRV_PTS_AVDTP_REGIST_CAP,
+    MC_BT_SRV_PTS_AVDTP_ABORT,
+    /* PBAP COMMAND */
+    MC_BT_SRV_PTS_PBAP_CONNECT,
+    MC_BT_SRV_PTS_PBAP_DISCONNECT,
+    MC_BT_SRV_PTS_PBAP_PULL_PB,
+    MC_BT_SRV_PTS_PBAP_PULL_CARD_LIST,
+    MC_BT_SRV_PTS_PBAP_PULL_PB_ENTRY,
+    MC_BT_SRV_PTS_PBAP_SET_PB_REQ,
+    MC_BT_SRV_PTS_PBPA_ABORT_PULL_ACTION,
+    /* BNEP */
+    MC_BT_SRV_PTS_PAN_CONNECT,
+    MC_BT_SRV_PTS_PAN_DISCONNECT,
+    MC_BT_SRV_PTS_PAN_FILTER_MULTIADDR,
+    MC_BT_SRV_PTS_PAN_ETHERNET_REQ
+} mc_bt_pts_command_type;
+
+#define BT_SHIFT_BITS_8     8
+#define cmd_id_2_opcode(service_id, command_id) (((service_id) << BT_SHIFT_BITS_8) | (command_id))
+
+#ifdef __cplusplus
+#if __cplusplus
+}
+#endif /* __cpluscplus */
+#endif /* __cpluscplus */
+#endif /* end of MPC_CODE_DEF_H */
diff --git a/code/sdk/protocol/bt/host/bt/bts/bg_common/include/hci/hci_hlp.h b/code/sdk/protocol/bt/host/bt/bts/bg_common/include/hci/hci_hlp.h
new file mode 100644 (file)
index 0000000..dc1c062
--- /dev/null
@@ -0,0 +1,966 @@
+
+/*
+ * Copyright (c) @CompanyNameMagicTag 2021-2022. All rights reserved.
+ */
+
+/* ---------------------------------------------------------------------------
+Module Name:
+    hci_hlp.h
+Abstract:
+    This module defines HCI internal structure, macro & functions.
+--------------------------------------------------------------------------- */
+
+#ifndef G_HCI_HLP_H
+#define G_HCI_HLP_H
+
+#include "hci_ui.h"
+
+#pragma pack(1)
+
+#define ATT_UUID128_LEN 16
+#define ATT_UUID32_LEN 4
+#define ATT_UUID16_LEN 2
+
+#define HCI_BTC_INIT_EVENT_MASK_SIZE 0X8 /* WRITE EVENT_MASK_SIZE OF BTC */
+
+#define HCI_OPCODE_BITS_NUM 16
+
+#define DEC_STEP 10
+
+typedef struct {
+    uint8_t length;
+    uint8_t sub_ev_code; /* a1 */
+    /* HCI_OPS_SET_EVENT_MASK */
+    uint8_t event_mask[HCI_BTC_INIT_EVENT_MASK_SIZE];
+    /* HCI_OPS_SET_EVENT_MASK_PAGE_2 */
+    uint8_t event_mask_page2[HCI_BTC_INIT_EVENT_MASK_SIZE];
+    /* HCI_OPS_LE_SET_EVENT_MASK */
+    uint8_t le_event_mask[HCI_BTC_INIT_EVENT_MASK_SIZE];
+    /* HCI_OPS_WRITE_PAGE_SCAN_ACTIVITY */
+    uint16_t page_scan_interval;             /* Interval Time */
+    uint16_t page_scan_window;               /* Scan Window Time */
+    /* HCI_OPS_WRITE_LE_HOST_SUPPORT */
+    uint8_t le_supported_host;
+    uint8_t simultaneous_le_host;
+    /* HCI_OPS_LE_WRITE_SUGGESTED_DEFAULT_DATA_LENGTH */
+    uint16_t suggested_maxtx_octets;
+    uint16_t suggested_maxtx_time;
+    /* HCI_OPS_LE_SET_DEFAULT_PHY */
+    uint8_t all_phys;
+    uint8_t tx_phys;
+    uint8_t rx_phys;
+    /* HCI_OPS_WRITE_PAGE_SCAN_TYPE */
+    uint8_t page_scan_type;
+    /* HCI_OPS_WRITE_AFH_CHANNEL_ASSESSMENT_MODE */
+    uint8_t afh_channel_assessment_mode;
+    /* HCI_OPS_WRITE_INQUIRY_MODE */
+    uint8_t inquiry_mode;
+    /* HCI_OPS_SET_CONTROLLER_TO_HOST_FLOW_CONTROL */
+    uint8_t flow_control_enable;
+    /* HCI_OPS_WRITE_SIMPLE_PAIRING_MODE */
+    uint8_t simple_pairing_mode;
+    /* HCI_OPS_WRITE_CONNECTION_ACCEPT_TIMEOUT */
+    uint16_t conn_accept_timeout;
+    /* HCI_OPS_WRITE_DEFAULT_LINK_POLICY_SETTINGS */
+    uint16_t link_policy_settings;
+
+    void *_rom;
+} fast_reset_write_btc_init_cmd;
+#pragma pack()
+
+typedef struct {
+    uint16_t subrate;
+    uint16_t latency;
+} hci_subrate;
+
+fast_reset_write_btc_init_cmd fast_reset_init_write_cmd(void);
+
+#define HCI_OPC_RESET_FAST_SET_BTC_INIT 0xFC0B
+
+#define HCI_OPS_RESET_FAST_SET_BTC_INIT 0x0d30FC0B /* ((0x0F << 24) 'R'  | (0x30 << 16)  | 0xFC0B | 0x0000) */
+
+#define HCI_INTERNAL_FUNCTION    1 /* Only used by hci_le.h to exclude internal functions for other modules */
+
+extern struct fsm_inst *hci_fsminst;
+extern uint8_t g_is_bth_with_smart_wear;
+/* --------------------------------------------------------------------------- */
+/*                                 HCI Interface Macros                               */
+/* --------------------------------------------------------------------------- */
+enum {
+    /* Ret in hci_command_check_block */
+    HCI_CMD_ALLOW,
+    HCI_CMD_BLOCK_BYNUM, /* Number of hci command packet limited */
+    HCI_CMD_BLOCK_BYOPCODE, /* Same operation is outstanding */
+    HCI_CMD_BLOCK_BYRESET, /* Reset is outstanding, pendding other commands */
+
+    /* Debug Only */
+    HCI_CMD_ADD,
+    HCI_CMD_REMOVE
+};
+
+struct hci_bit_pointer_stru { /* For hci_coding_get_bits */
+    uint8_t *p; /* Current Octet pointer */
+    uint8_t off; /* Keep current octet remaining bits usage offset */
+};
+
+struct hci_x_param_stru {
+    uint8_t len;
+    uint8_t data[1];
+};
+
+struct hci_rtx_timer_stru {
+    uint8_t ampid; /* to find local controller node */
+    uint16_t opcode; /* to find command node in local, only in sent section */
+};
+
+struct hci_local_timer_stru {
+    void *local; /* to find local controller node */
+    uint8_t id; /* etc, HCI_LOCALRTX_ID_ADVSCAN_TIME_LIMITED */
+};
+
+struct hci_acl_link_timer_stru {
+    void *acllink;
+};
+
+/* --------------------------------------------------------------------------- */
+/*                             Local/Remote Object structure                          */
+/* --------------------------------------------------------------------------- */
+enum { /* timeout[x] in struct hci_local_stru */
+    HCI_LINFO_TIMEOUT_PAGE, /* *0.625, include extended page timeout */
+    HCI_LINFO_TIMEOUT_CONN_ACCEPT,
+    HCI_LINFO_TIMEOUT_EXTENDED_INQUIRY_LENGTH, /* *0.625 */
+
+    HCI_LINFO_TIMEOUT_SLOTS /* x counter */
+};
+
+enum { /* packet_length[x] & packet_num[x] in struct hci_local_stru */
+    HCI_LINFO_PACKET_ACL,
+    HCI_LINFO_PACKET_LE, /* Maybe different with ACL, check HCI_LINFO_MASK_LE_SHARE_ACL_BUFFER */
+    HCI_LINFO_PACKET_DATABLOCK,
+    HCI_LINFO_PACKET_CONTROLLER_TO_HOST,
+
+    HCI_LINFO_PACKET_SLOTS /* x counter */
+};
+
+enum { /* mask in struct hci_local_stru */
+    HCI_LINFO_MASK_IN_PERIODIC_INQUIRY_MODE =             0x00000001,
+
+    /* Two methods of data flow control are defined: 'packet-based' flow control and
+    'data-block-based' flow control, known as buffer management */
+    HCI_LINFO_MASK_BLOCK_BASED_DATA_FLOW_CONTROL =         0x00000002,
+    HCI_LINFO_MASK_LOOPBACK_MODE =                         0x00000004, /* Loopback mode, not used now */
+    HCI_LINFO_MASK_SET_EVENT_FILTER_INQUIRY =             0x00000008,
+
+    /* Limited scan/advertise for LE, scan + adv toghter? */
+    HCI_LINFO_MASK_LIMITED =                             0x00000010,
+    /* Static address only generate once when power on, use to control generate only once */
+    HCI_LINFO_MASK_STATIC_ADDRESS =                     0x00000020,
+    HCI_LINFO_MASK_LE_ADV_PARAMETER =                     0x00000040, /* New LE_ADV_Parameter */
+    HCI_LINFO_MASK_BONDABLE =                             0x00000080, /* Local bondable */
+    /* LE Advertise/Scan Fast to Slow automaticly, when it comes slow, bit removed */
+    HCI_LINFO_MASK_FAST_AUTO_SLOW =                     0x00000200,
+    /* State QoS already called stoped, otherwise is data processing */
+    HCI_LINFO_MASK_QOS_STOP =                             0x00000400,
+    HCI_LINFO_MASK_CONTROLLER_TO_HOST_FLOW_CONTROL =     0x00000800,
+    /* LE_Read_Buffer_Size return 0, shared between BR/EDR and LE transports */
+    HCI_LINFO_MASK_LE_SHARE_ACL_BUFFER =                 0x00001000,
+    HCI_LINFO_MASK_SECURE_SIMPLE_PAIRING_ENABLE =         0x00002000,
+    HCI_LINFO_MASK_SECURE_CONNECTION_ENABLE =             0x00004000,
+
+    HCI_LINFO_MASK_ADV_ENABLED =                         0x00008000, /* Mesh test */
+    HCI_LINFO_MASK_SCAN_ENABLED =                         0x00010000,
+    HCI_LINFO_MASK_LE_SCAN_PARAMETER =                    0x00020000,
+    HCI_LINFO_MASK_LE_SCAN_ENABLE_PARAMETER =            0x00040000,
+    HCI_LINFO_MASK_RESOLVABLE_ADDRESS =                 0x00080000, /* Local random address is set to RPA */
+    HCI_LINFO_MASK_NONE_RESOLVABLE_ADDRESS =            0x00100000, /* Local random address is set to None-RPA */
+    /* Local shall be the link master when accept the connection request */
+    HCI_LINFO_MASK_BR_LINK_MASTER =                        0x00200000,
+    HCI_LINFO_MASK_RESET_KEEP_BITS =                     (HCI_LINFO_MASK_BONDABLE | HCI_LINFO_MASK_QOS_STOP)
+};
+
+enum { /* Timer event of struct hci_local_stru */
+    /* Timer[x] */
+    HCI_LOCALRTX_ID_ADVSCAN =                         0,
+    HCI_LOCALRTX_ID_LE_PRIVATE_ADDRESS_CHANGE =        1,
+    HCI_LOCALRTX_ID_UNKNOWN_ACLDATA_FREE =             2,
+    HCI_LOCALRTX_ID_AUTO_SNIFF =                       3, /* ACL link auto-sniff timer, by YDX, 2019.3.20 */
+    HCI_LOCALRTX_ID_TIMER_COUNT, /* Num of Local Timer, 3 */
+
+    /* Events */
+    HCI_LOCALRTX_LE_ADVERTISE_TIME_LIMITED =         1, /* Time Limited, DONOT change sequence, 1 */
+    HCI_LOCALRTX_LE_SCAN_TIME_LIMITED =             2, /* Time Limited, DONOT change sequence, 2 */
+    HCI_LOCALRTX_LE_ADVERTISE_FAST_AUTO_SLOW =         3, /* Fast to slow, DONOT change sequence, 3 */
+    HCI_LOCALRTX_LE_SCAN_FAST_AUTO_SLOW =             4, /* Fast to slow, DONOT change sequence, 4 */
+    HCI_LOCALRTX_LE_RESOLVABLE_ADDRESS_CHANGE =        5, /* Change address */
+    HCI_LOCALRTX_LE_NON_RESOLVABLE_ADDRESS_CHANGE =    6, /* Change address */
+    HCI_LOCALRTX_UNKNOWN_ACLDATA =                    7, /* Cache ACL data before connection handle awares */
+    HCI_LOCALRTX_AUTO_SNIFF =                       8 /* ACL link auto-sniff timer, by YDX, 2019.3.20 */
+};
+
+enum { /* le_status in local controller object struct hci_local_stru */
+    /* Bitmask */
+    HCI_LEISA_IDLE =         0,
+    HCI_LEISA_INITIATE =     1,
+    HCI_LEISA_SCAN =         2,
+    HCI_LEISA_ADV =         3,
+    HCI_LEISA_SA =             4,
+
+    HCI_LEISA_ENABLE =         0x80,
+    HCI_LEISA_DISABLE =     0x40,
+    HCI_LEISA_TRANSIST =     (0x80 | 0x40),
+
+    HCI_LEISA_IDLE2SCAN =     HCI_LEISA_ENABLE | (HCI_LEISA_IDLE << 3) | (HCI_LEISA_SCAN),
+    HCI_LEISA_SCAN2IDLE =     HCI_LEISA_DISABLE | (HCI_LEISA_SCAN << 3) | (HCI_LEISA_IDLE),
+    HCI_LEISA_IDLE2ADV =     HCI_LEISA_ENABLE | (HCI_LEISA_IDLE << 3) | (HCI_LEISA_ADV),
+    HCI_LEISA_ADV2IDLE =     HCI_LEISA_DISABLE | (HCI_LEISA_ADV << 3) | (HCI_LEISA_IDLE),
+    HCI_LEISA_SCAN2SA =     HCI_LEISA_ENABLE | (HCI_LEISA_SCAN << 3) | (HCI_LEISA_SA),
+    HCI_LEISA_SA2SCAN =     HCI_LEISA_DISABLE | (HCI_LEISA_SA << 3) | (HCI_LEISA_SCAN),
+    HCI_LEISA_ADV2SA =         HCI_LEISA_ENABLE | (HCI_LEISA_ADV << 3) | (HCI_LEISA_SA),
+    HCI_LEISA_SA2ADV =         HCI_LEISA_DISABLE | (HCI_LEISA_SA << 3) | (HCI_LEISA_ADV),
+    HCI_LEISA_SA2IDLE =     HCI_LEISA_DISABLE | (HCI_LEISA_SA << 3) | (HCI_LEISA_IDLE),
+};
+
+enum {
+    HCI_LEISA_SCAN_ENABLE =     0x80,
+    HCI_LEISA_ADV_ENABLE =      0x40,
+    HCI_LEISA_SCAN_DISABLE =     0x20,
+    HCI_LEISA_ADV_DISABLE =     0x10
+};
+
+#define HCI_ADVERTISING_TYPE_DISABLED    0xFF
+#define HCI_LE_SCAN_TYPE_DISABLED        0xFF
+
+#define hci_leisa_go(t, s, d)    ((t) | ((s) << 3) | (d))
+#define hci_leisa_from(a)        (((a) >> 3) & 0x07)
+#define hci_leisa_to(a)            ((a) & 0x07)
+
+#define hci_linfo_packet_slotamp(local_) \
+        ((((local_)->mask & HCI_LINFO_MASK_BLOCK_BASED_DATA_FLOW_CONTROL) != 0) \
+        ? HCI_LINFO_PACKET_DATABLOCK \
+        : HCI_LINFO_PACKET_ACL)
+
+#define hci_linfo_packet_slot(local_, link_)        (((link_)->link.type == HCI_LINK_TYPE_LE) \
+        ? (((local_)->mask & HCI_LINFO_MASK_LE_SHARE_ACL_BUFFER) != 0) \
+            ? HCI_LINFO_PACKET_ACL \
+            : HCI_LINFO_PACKET_LE \
+        : (((local_)->mask & HCI_LINFO_MASK_BLOCK_BASED_DATA_FLOW_CONTROL) != 0) \
+            ? HCI_LINFO_PACKET_DATABLOCK \
+            : HCI_LINFO_PACKET_ACL)
+
+enum { /* type of the LE_ControllerAddrNodeList_xxx */
+    HCI_CANODE_MASK_WHITELIST =         0x01,
+    HCI_CANODE_MASK_RESOLVINGLIST =     0x02
+};
+
+#if (defined(CONFIG_LE) && defined(CONFIG_BREDR_HCI))
+/* Dual Mode */
+#define LOCAL_ADDR_NUM        3    /* HCI_ADDR_IDENTITY, HCI_ADDR_PRIVATE, HCI_ADDR_BREDR */
+#define HCI_ADDR_BREDR        2    /* After HCI_ADDR_PRIVATE */
+#else
+#define HCI_ADDR_BREDR        HCI_ADDR_IDENTITY /* LE Only or BREDR Only, Public is IDENTITY */
+#ifdef CONFIG_LE
+/* LE Only */
+#define LOCAL_ADDR_NUM        2    /* HCI_ADDR_IDENTITY/HCI_ADDR_BREDR, HCI_ADDR_PRIVATE */
+#else
+/* BREDR Only */
+#define LOCAL_ADDR_NUM        1    /* HCI_ADDR_IDENTITY/HCI_ADDR_BREDR */
+#endif
+#endif
+
+struct le_set_scan_adv_stru {
+    uint8_t enable;
+    uint8_t type;
+    uint8_t limited;
+    uint8_t speed;
+    uint8_t white;
+};
+
+struct hci_local_stru {                                /* Local controller include BREDR/AMP */
+    HANDLE tl_hdl;                                    /* Transport Layer Handle */
+    transport_layer_stru *func;                        /* Transport Layer Functions */
+    /* Limited advertising or scanning for LE, NOCP delay control */
+    struct fsm_timer *timer[HCI_LOCALRTX_ID_TIMER_COUNT];
+    /* QoS send buffer list, etc, HCI_LINFO_PACKET_DATABLOCK */
+    struct bth_list_stru acldata_list[CONFIG_HCI_LOCAL_ACLDATA_LIST_LEN];
+    /* QoS callback list, data source instance, to control go/stop */
+    struct bth_list_stru qos_cbk;
+    struct bth_list_stru cmd_list;                        /* Level 1, struct hci_command_node_stru */
+    /* Node as struct hci_controller_addr_node_stru, WhiteList and ResolvingList */
+    struct bth_list_stru controller_addr_list;
+    /* Unknown ACLdata before connection handle awares, a patch for driver */
+    struct bth_list_stru unknown_data;
+    /* Pointer to the 1st pendding command in cmd_list, pendcmd is not sent yet */
+    struct hci_command_node_stru *pendcmd;
+    /* etc: HCI_ADDR_IDENTITY, AMP controller does not have BD, cap only vailed in [0 = Public] */
+    struct hci_address_stru addr[LOCAL_ADDR_NUM];
+    /* Saves the public address of the device and assigns a value to addr[HCI_ADDR_IDENTITY] if necessary. */
+    uint8_t  public_addr[BD_ADDR_LEN];
+    /* Saves the static address of the device and assigns a value to addr[HCI_ADDR_IDENTITY] if necessary. */
+    uint8_t  static_addr[BD_ADDR_LEN];
+    hci_mp_int dcounter[2];                            /* etc: HCI_DCOUNTER_SEND */
+
+    uint32_t mask;                                    /* Bitmask etc:HCI_LINFO_MASK_IN_PERIODIC_INQUIRY_MODE */
+    uint32_t timeout[HCI_LINFO_TIMEOUT_SLOTS];        /* [x] as HCI_LINFO_TIMEOUT_PAGE */
+    uint16_t packet_length[HCI_LINFO_PACKET_SLOTS];    /* [x] as HCI_LINFO_PACKET_ACL */
+    uint16_t packet_num[HCI_LINFO_PACKET_SLOTS];        /* [x] as HCI_LINFO_PACKET_ACL */
+    uint8_t hci_version;                                /* HCI_HCI_VERSION_4_0 */
+    uint8_t supported_commands[64];                    /* Supported Command Bit mask table */
+    uint8_t lmp_features[HCI_LMP_FEATURE_MAX_PAGE][8]; /* extended features 8 pages? current allocate 2 page? */
+#ifdef CONFIG_LE
+    uint8_t le_features[8];                            /* LE features */
+    uint8_t le_states[8];                                /* LE supported states */
+    uint8_t white_list_size;                            /* From LE_Read_White_List_Size returns */
+    uint8_t resolving_list_size;                        /* From LE_Read_Resolving_List_Size returns */
+    uint16_t max_adv_data_length;                        /* From LE_Read_Maximum_Advertising_Data_length returns */
+    uint8_t num_adv_sets;                                /* From LE_Read_Number_Of_Supported_Advertising_Sets returns */
+    uint8_t prd_dev_list_size;                        /* From LE_Read_Periodic_Avertiser_List_Size returns */
+
+    uint8_t leisa_tar;                                /* HCI_LEISA_ADV_ENABLE */
+    uint8_t leisa_cur;                                /* HCI_LEISA_ADV */
+    uint8_t is_le_ext_adving;
+    struct le_set_scan_adv_stru adv_set;                /* ADV setting - For compatibility */
+    struct le_set_scan_adv_stru scan_set;                /* SCAN setting - For compatibility */
+    struct hci_le_set_advertising_parameters_stru *adv_par; /* Legacy Advertising parameters */
+    struct hci_le_ext_scan_parameters_stru *scan_par; /* Extended Scan parameters */
+    struct hci_le_ext_scan_enable_stru scan_enable_par; /* Extended Scan Enable parameters */
+#endif
+
+    uint8_t cap;                                        /* etc: HCI_ADDRESS_CAP_LE */
+#ifdef MULTIPLE_TRANSPORT_LAYER_SUPPORT
+    uint8_t ampid;                                    /* HCI allocated local Controller ID */
+#endif
+    /* From Command_Status and Command_Complete num_hci_command_packets */
+    uint8_t cmd_num;
+
+    void *_rom;
+};
+
+/* --------------------------------------------------------------------------- */
+/*                             Root Object structure                             */
+/* --------------------------------------------------------------------------- */
+#define HCI_AFH_MAP_MAX_LEN 11
+struct hci_root_stru {                        /* hci_fsminst->user_data, HCI Root */
+    struct bth_list_stru local;                    /* struct hci_local_stru, Local controllers */
+    struct bth_list_stru remote;                    /* struct hci_remote_stru, Remote devices */
+    struct bth_list_stru link;                    /* struct hci_link_stru, Links, include unestablished */
+    struct bth_list_stru evcbk;                    /* struct HCI_EvCBKStru, HCI user callbacks */
+    struct bth_list_stru evcbk_prime;        /* struct HCI_EvCBKStru, adv report HCI user callbacks */
+    /* struct hci_security_info_stru, security requirement registered by GAP */
+    struct bth_list_stru security;
+    tl_callback_stru *tlbase;                /* Poor transport layer interface.... */
+    uint8_t io_capability;                    /* etc: HCI_IO_CAPABILITY_DISPLAYONLY */
+    uint8_t afhmap[HCI_AFH_MAP_MAX_LEN];                        /* 81bits, AFH RF Channels map for BREDR, LE, WIFI */
+
+    void *_rom;
+};
+
+/* --------------------------------------------------------------------------- */
+/*                             Link Object structures                               */
+/* --------------------------------------------------------------------------- */
+struct hci_link_stru {                        /* Common header of a Link */
+    struct hci_local_stru *local;
+    struct hci_remote_stru *remote;
+    uint16_t connection_handle;                /* ACL/LE/Log Handle */
+    uint8_t type;                                /* HCI_LINK_TYPE_ACL, HCI_LINK_TYPE_LE, HCI_LINK_TYPE_LOG */
+};
+
+enum { /* Timer event */
+    HCI_ACLLINK_TIMER_LAZYRTX = 1,
+    HCI_ACLLINK_TIMER_TRANSRTX /* for L2CAP LE Update parameter */
+};
+
+enum { /* ACL status, status in HCI_ACLHDL level, in L2CAP_ACLLinkStru/hci_le_link_stru */
+    HCI_ACL_DATARECV =                         0x80, /* status Bitmask, Valid status to receive ACL data */
+    /* Connecting or Cancel, LE command has no BD, so only one outstanding command may exist */
+    HCI_ACL_LECONN =                         0x40,
+    /* Disconnecting or Cancel, only local initiated disconnection may lead to reconnect */
+    HCI_ACL_LOCAL_DISCONNECT =                 0x20,
+
+    HCI_ACL_IDLE =                             (0),
+    /* Before connection complete, active or passive or raced */
+    HCI_ACL_CONNECTING =                     (1 | HCI_ACL_LECONN),
+    HCI_ACL_READY =                         (2),
+    HCI_ACL_READY_WITH_REMOTE_INFO =         (3 | HCI_ACL_DATARECV),
+    HCI_ACL_DISCONNECTING =                 (4 | HCI_ACL_DATARECV | HCI_ACL_LOCAL_DISCONNECT),
+    HCI_ACL_CANCEL =                         (5 | HCI_ACL_LECONN | HCI_ACL_LOCAL_DISCONNECT),
+    /* Idle, but waiting for local status changes, etc, local is scaning, disable before initiate connection */
+    HCI_ACL_LECONNECT_WAITLOCAL =             (6)
+};
+
+struct hci_recv_context_stru {
+    struct bth_list_stru recvdata_list;            /* Uncompleted l2cap acl data packets, struct buff_stru ** */
+    uint16_t receive_num;                        /* Controller to host outstanding packet before NoCP */
+};
+
+struct hci_send_context_stru {
+    uint16_t sending_num;                        /* Host to controller outstanding packet before NoCP */
+};
+
+enum {
+    HCI_CURRENT_MODE_EXITING =                 0xFF
+};
+
+struct hci_acl_link_stru { /* Each remote shall have only one ACL-U */
+    struct hci_link_stru link;
+    struct hci_send_context_stru send;
+    struct hci_recv_context_stru recv;
+
+    /* Common part of ACL/LE */
+    struct fsm_timer *timer;             /* ACL lazy idle timer, delay ACL disconnection */
+    /* Delay timer before killing LE Link due to LE Connection Cancel.
+       to prevent from executing another LE Create Connection Command before LE Connection Complete event returned. */
+    struct fsm_timer *cancel_timer;
+    uint8_t ref_count;                    /* + -, How many cid session and echo/info ref this hci_hdl */
+    uint8_t status;                         /* etc: HCI_ACL_CONNECTING */
+    uint8_t mask;                            /* etc: HCI_ACLMASK_INITIATOR */
+    uint8_t response_num;                    /* Waiting for accept/reject the incoming connection upper cbk counter */
+
+    /* Different part with LE */
+    uint8_t link_mode;                    /* etc: HCI_CURRENT_MODE_SNIFF, + HCI_CURRENT_MODE_EXITING */
+    uint8_t link_role;                    /* link role when accept incoming connection request */
+    /* ACL link auto-sniff, by YDX, 2019.3.20 */
+    uint8_t idle_seconds;                     /* current idle duration (*2s) */
+    uint8_t tr_occured;                       /* 0 - No data transfer. 1 - data transfer. */
+    /* Sniff parameters. NULL means auto-sniff is not required for this link */
+    struct hci_auto_sniff_par_stru *sniff_par;
+    uint8_t active_disc_reason; /* For Print Disconnect Reason */
+    hci_subrate subrate_par; /* add for same size with le link */
+
+    void *_rom;
+};
+
+/* Note:  struct hci_acl_link_stru And struct hci_le_link_stru Must be Same Size */
+
+/* Header part shall be equal to struct hci_acl_link_stru, Each remote shall have only one LE-U */
+struct hci_le_link_stru {
+    struct hci_link_stru link;
+    struct hci_send_context_stru send;
+    struct hci_recv_context_stru recv;
+
+    /* Common part of ACL/LE */
+    struct fsm_timer *timer;             /* ACL lazy idle timer, delay ACL disconnection */
+    /* Delay timer before killing LE Link due to LE Connection Cancel.
+       to prevent from executing another LE Create Connection Command before LE Connection Complete event returned. */
+    struct fsm_timer *cancel_timer;
+    uint8_t ref_count;                    /* + -, so signed, How many cid session and echo/info ref this hci_hdl */
+    uint8_t status;                         /* etc: HCI_ACL_CONNECTING */
+    uint8_t mask;                            /* etc: HCI_ACLMASK_INITIATOR */
+    uint8_t response_num;                    /* Waiting for accept/reject the incoming connection upper cbk counter */
+    /* Different part with ACL */
+    uint8_t le_features[8];                /* LE Read Remote used features, ACL is in remote object */
+    uint8_t active_disc_reason; /* For Print Disconnect Reason */
+    hci_subrate subrate_par; /* subrate parameters. NULL means no subrate event for this le link */
+
+    void *_rom;
+};
+
+struct hci_log_link_stru { /* Physical link is removed since handle is allocated by host */
+    struct hci_link_stru link;
+    struct hci_send_context_stru send;
+    uint8_t tx_flow_spec_id;
+};
+
+struct hci_io_capability_req {
+    uint8_t bond;
+    uint8_t init;
+    uint8_t mitm;
+};
+
+struct hci_set_channel_classification_stru {
+    uint32_t c; /* Central Frequency, etc,2412 */
+    uint32_t w; /* Bandwidth, 22,40 */
+    uint8_t mask; /* etc, HCI_SETAFH_OCCUPY */
+};
+
+#define HCI_CMDSTRU         void
+#define hci_cmdpar(arg_)    ((HCI_CMDSTRU *)(arg_))
+#define HCI_CMDNEW             MEM_NEW(sizeof(HCI_CMDSTRU))
+
+/* --------------------------------------------------------------------------- */
+/*                             HCI data/Command Related                             */
+/* --------------------------------------------------------------------------- */
+
+struct hci_tl_recv_stru { /* Arg in hcic_tl_recv_event */
+    HANDLE host_hdl;
+    uint8_t *data; /* Newed by HCI */
+    uint8_t *end; /* end pointer of data, the 0xFD after last octet of valid data */
+};
+
+enum { /* Command RTX timeout */
+    /* Since the maximum response timeout is strongly dependent on the HCI-Transport Layer used,
+    it is recommended to use a default value of one second for this timer */
+    HCI_TIME_CMDRTX =                         CONFIG_HCI_TIME_CMDRTX,    /* Before Command status */
+    HCI_TIME_CMDERTX =                         CONFIG_HCI_TIME_CMDERTX, /* After Command status */
+    HCI_TIME_CMDPINCODE =                     CONFIG_HCI_TIME_PINCODE, /* Both side user PIN Code input time */
+    HCI_TIME_CMDDELTA =                     CONFIG_HCI_TIME_DELTA,    /* Addtional time for calcuated time */
+    /* ACL connection cast time, so when no body use ACLLink, still waiting some seconds */
+    HCI_TIME_ACLLAZY =                         CONFIG_HCI_TIME_ACLLAZY,
+    HCI_TIME_ACCEPT_CONNECTION_TIMEOUT =     CONFIG_HCI_TIME_ACCEPT_CONNECTION, /* 0x0001~0xB540, 0.625~29s */
+    HCI_TIME_LE_CREATE_CONNECTION =         CONFIG_HCI_TIME_LE_CREATE_CONNECTION
+};
+
+enum { /* Flag in hci_local_remove_one */
+    HCI_LOCAL_REMOVE,
+    HCI_LOCAL_RESET
+};
+
+enum { /* addhead in HCI_CommandL2_AddNode */
+    HCI_CMDL2_ADDHEAD,
+    HCI_CMDL2_ADDTAIL
+};
+
+enum { /* return in hci_set_event_filter_inquiry_check */
+    HCI_SET_EVENT_FILTER_ACTION_ADD_INQUIRY,
+    HCI_SET_EVENT_FILTER_ACTION_CLEAR_INQUIRY,
+    HCI_SET_EVENT_FILTER_ACTION_CLEAR_ALL,
+    HCI_SET_EVENT_FILTER_ACTION_OTHER
+};
+
+enum { /* Returning of hci_security_link_key_good */
+    HCI_SECURITY_LINKKEY_GOOD =     0,
+    HCI_SECURITY_LINKKEY_NOTEXIST = 1,
+    HCI_SECURITY_LINKKEY_BAD =         2
+};
+
+/* HCI internal callback function dispatcher */
+typedef void (HCI_CbkTableFunc) (struct hci_local_stru *local, void *par);
+
+#define HCI_ROOT                                ((struct hci_root_stru *)(hci_fsminst->user_data))
+#define HCI_LOCALLIST                            (&(HCI_ROOT->local))
+#define HCI_REMOTELIST                            (&(HCI_ROOT->remote))
+#define HCI_LINKLIST                            (&(HCI_ROOT->link)) /* ACL,LE,Logical Links */
+#define HCI_EVCBKLIST                            (&(HCI_ROOT->evcbk)) /* Callback Tables */
+#define HCI_EVCBKLIST_PRIME                     (&(HCI_ROOT->evcbk_prime)) /* Prime Callback Tables */
+#define HCI_SECURITYLIST                        (&(HCI_ROOT->security))
+#define HCI_SECURITY_LOCALIO                    (HCI_ROOT->io_capability)
+#define HCI_SECURITY_LOCALIO_GET                ((HCI_SECURITY_LOCALIO != \
+    HCI_IO_CAPABILITY_KEYBOARDDISPLAY) ? HCI_SECURITY_LOCALIO : HCI_IO_CAPABILITY_DISPLAYYESNO)
+#define HCI_AFHMAP                                (HCI_ROOT->afhmap)
+#define HCI_SUPCMDGAP_LAST \
+    (&hci_table_supportcmdgap[(sizeof(hci_table_supportcmdgap) / sizeof(struct hci_op_code_gap_stru)) - 1])
+#define HCI_EVGAP_LAST \
+    (&hci_table_evgap[(sizeof(hci_table_evgap) / sizeof(struct hci_index_gap_stru)) - 1])
+#define HCI_EVOP_LAST                             (&g_hci_table_evop[g_hci_table_evop_size - 1])
+#define hci_codingp_event(evi_)                    (&hci_table_coding_event[hci_table_codingoff_event[(evi_)]])
+/* ACL or LE */
+#define hci_linkevo(link_)                        (((link_)->link.type == \
+    HCI_LINK_TYPE_ACL) ? HCI_EVO_ACL_DATA_IND : HCI_EVO_LE_DATA_IND)
+#define hci_cmderr(op_)                            (((op_) << 16) | HCI_EVO_COMMAND_ERROR) /* HCI_OPC_ for hci_cbk */
+#define hci_command_send_internal(local_, par_, link_, opscode_)     hci_command_send_core((local_), \
+    hci_command_create_node((par_), (link_), (opscode_)))
+#define hci_key_unauthenticated(type_)            (((type_) != \
+    HCI_KEY_TYPE_AUTHENTICATED_COMBINATION_KEY_GENERATED_FROM_P192) && \
+    ((type_) != HCI_KEY_TYPE_AUTHENTICATED_COMBINATION_KEY_GENERATED_FROM_P256))
+
+/* Macro components of struinfo */
+#define hci_stru2reqoff(struinfo_)                ((uint8_t)(struinfo_)) /* Req struinfo offset */
+/* Ret struinfo offset, 0xFF for not exist */
+#define hci_stru2retoff(struinfo_)                ((uint8_t)((struinfo_) >> 8))
+
+/* uint32_t op_ev */
+#define hci_opev(o, e)                            (((o) << 16) | (e))
+#define hci_op(s)                                ((uint16_t)((s) >> 16))
+#define hci_ev(s)                                ((uint16_t)(s))
+
+/* HCI is little endian */
+#define HCI_DECODE2BYTE                            decode2byte_little
+#define HCI_DECODE4BYTE                            decode4byte_little
+#define HCI_ENCODE2BYTE                            encode2byte_little
+#define HCI_ENCODE4BYTE                            encode4byte_little
+
+/* --------------------------------------------------------------------------- */
+/*                         HCI Structure < -> BitStream Macros                          */
+/* --------------------------------------------------------------------------- */
+#ifdef CONFIG_ALIGN_FOURBYTES
+#define CONFIG_ALIGN_BTYES                        4
+#elif defined(CONFIG_ALIGN_TWOBYTES)
+#define CONFIG_ALIGN_BTYES                        2
+#else /* defined(CONFIG_ALIGN_ONEBYTE) */
+#define CONFIG_ALIGN_BTYES                        1
+#endif
+#define hci_padstep(s)                            (min(CONFIG_ALIGN_BTYES, (s)))
+#define hci_padding(p, \
+    l)                        ((p) += ((hci_padstep(l) - ((uint32_t)(uintptr_t)(p) % hci_padstep(l))) % hci_padstep(l)))
+
+enum {
+    HCI_CODE_0BITS =                             0x00,
+    HCI_CODE_2BITS =                             0x01,
+    HCI_CODE_4BITS =                             0x02,
+    HCI_CODE_8BITS =                             0x03,
+
+    /* 2Bits Basic type Items */
+    HCI_CODE_N1 =                                 0x00, /* Num */
+    HCI_CODE_U1 =                                 0x01, /* 1Oct - uint8_t */
+    HCI_CODE_U2 =                                 0x02, /* 2Oct - uint16_t */
+    HCI_CODE_U4 =                                 0x03 /* 4Oct - uint32_t */
+};
+
+enum { /* flag in hci_coding_len */
+    HCI_CODING_INSTRU =                         0x01, /* Src input is structure, not air */
+    HCI_CODING_OUTSRC =                         0x02, /* output src length, not dst */
+
+    /* Input stru, Output stru length */
+    HCI_CODING_GETSTRULEN =                     (HCI_CODING_INSTRU | HCI_CODING_OUTSRC),
+    HCI_CODING_GETAIR =                         (HCI_CODING_INSTRU), /* Get PDU or length of PDU to the controller */
+    HCI_CODING_GETSTRU =                         0 /* GET structure or its length to upper layer */
+};
+
+enum { /* event in hcic_security_request */
+    HCI_SECURITY_EVENT_REQUEST =                 1,
+    HCI_SECURITY_EVENT_ABORT =                     2
+};
+
+enum { /* Bitmask in authentication_requirements enum */
+    HCI_AUTHENTICATION_REQUIREMENTS_NOMITM =     0x00,
+    HCI_AUTHENTICATION_REQUIREMENTS_MITM =         0x01
+};
+
+enum {
+    HCI_ACLDATA_MASK_SENTOUT =                     0x01, /* send out succefully or not */
+    HCI_ACLDATA_MASK_ADDTAIL =                     0x02 /* Add head or tail */
+};
+
+enum { /* mask in hci_acl_link_disconnect_deal */
+    HCI_ACLLINK_DISCONNECT_NOW =                 0x01,
+    HCI_ACLLINK_DISCONNECT_EMERGENCY =             0x02
+};
+
+/* Move here since SMP are using this to store SMPD address */
+enum { /* index of addr[x] in struct hci_local_stru / struct hci_remote_stru */
+    /* Public or Static, distinguish by the 49th bit in addr, for BREDR / LE */
+    HCI_ADDR_IDENTITY =                             0,
+    /* Used in Local object, RPA or nRPA, Only for LE, by LESetRandomAddress */
+    HCI_ADDR_PRIVATE =                                 1,
+    /* Used in Remote object, current LE link(or advertising remote using) address */
+    HCI_ADDR_LELINK =                                 1
+};
+
+/* --------------------------------------------------------------------------- */
+/*                             Function Definations                               */
+/* --------------------------------------------------------------------------- */
+/* ---------------------------------------------------------------------------
+Description:
+    This function is called to send a packet into Transport Layer.
+--------------------------------------------------------------------------- */
+void hci_tl_send_data(struct hci_local_stru *local, uint8_t *data, uint32_t len);
+
+uint8_t hci_dt_get_ev_index(uint8_t evcode);
+uint32_t hci_dt_get_sup_cmd_bit_index(uint16_t opcode);
+
+void hci_cbk(struct hci_local_stru *local, void *context, void *arg, uint32_t len, uint32_t op_ev);
+#ifdef CONFIG_BREDR_HCI
+uint8_t hci_cbk_get_num(uint16_t index);
+#endif
+void le_set_scan_parmeters(struct hci_local_stru *local, uint8_t type, uint8_t limited,
+    uint8_t speed);
+void le_set_advertising_parameters(struct hci_local_stru *local, uint8_t type,
+    uint8_t limited, uint8_t speed, uint8_t white);
+void le_set_direct_advertising_parameters(struct hci_local_stru *local,
+    struct hci_address_stru *peer, uint8_t type, uint8_t limited, uint8_t speed, uint8_t white);
+
+void le_isa_check(struct hci_local_stru *local);
+void le_isa_connect_complete(struct hci_local_stru *local);
+void le_isa_target(struct hci_local_stru *local, uint8_t tar);
+void le_isa_enable_result(struct hci_local_stru *local, uint8_t success);
+void le_isa_go_idle(struct hci_local_stru *local);
+void le_isa_set_op_report(const struct hci_local_stru *local, uint8_t op_id, uint8_t op_state);
+struct hci_le_link_stru *le_link_find_on_local(const struct hci_local_stru *local);
+void hci_local_start_timer(struct hci_local_stru *local, uint8_t *prompt,
+    uint32_t timeout, uint8_t restart, uint8_t event, uint8_t id);
+void hci_local_init(struct hci_local_stru *local);
+void hci_local_remove_unknown_acl_data(struct hci_local_stru *local);
+void hci_local_remove(struct hci_local_stru *local);
+void hci_local_remove_one(struct hci_local_stru *local, uint8_t flag);
+void hci_local_changed_notify(struct hci_local_stru *local, HANDLE tl_hdl, uint8_t action);
+struct hci_local_stru *hci_local_find_by_hdl(const HANDLE host_hdl);
+#ifdef NOT_USED_YET
+struct hci_local_stru *hci_local_find_by_addr(struct hci_address_stru *l);
+#endif
+struct hci_local_stru *hci_local_find_by_id(uint8_t ampid);
+struct hci_local_stru *hci_local_find_by_tlhdl(HANDLE tl_hdl);
+
+/* ACL link auto-sniff, by YDX, 2019.3.20 */
+void hci_auto_sniff_stop_timer(struct hci_local_stru *local);
+void hci_auto_sniff_rtx(struct hci_local_stru *local);
+void hcic_auto_sniff_set(const struct fsm_inst *fi, uint8_t event,
+    struct hci_auto_sniff_req_stru *req);
+#ifdef CHIP_BRANDY
+struct hci_remote_stru *hci_remote_find_by_bd(uint8_t *bd);
+#endif
+void hci_remote_remove(struct hci_remote_stru *remote);
+void hci_remote_remove_unuse(struct hci_remote_stru *remote);
+void hci_remote_set_to_die(uint8_t cap);
+struct hci_remote_stru *hci_remote_find_by_addr(struct hci_address_stru *r);
+
+void *hci_link_create(struct hci_local_stru *local, struct hci_remote_stru *remote, uint8_t type);
+void hci_link_remove_by_lr(const void *lr);
+void hci_link_remove_all(void);
+void hci_link_remove(struct hci_acl_link_stru *link, uint8_t reason);
+void *hci_link_find_by_hdl(const struct hci_local_stru *local, uint16_t handle);
+void bth_hci_acl_data_recv(struct hci_acl_link_stru *link, struct buff_stru *in, uint8_t pb);
+uint8_t bth_hci_acl_data_recombination_check(struct buff_stru *fst_pkt, struct buff_stru *next_pkt);
+void hci_acl_link_disconnect_send(struct hci_acl_link_stru *link, uint8_t reason, uint8_t mask);
+uint8_t hci_acl_link_disconnect_deal(struct hci_acl_link_stru *link, uint8_t mask);
+void hci_acl_link_controller2host_fc(struct hci_acl_link_stru *link, uint8_t force);
+
+struct hci_acl_link_stru *hci_acl_link_find_by_bd_type(struct hci_local_stru *local, uint8_t *bd,
+    uint8_t type, uint8_t linktype);
+#define hci_acl_link_find_by_bd(local_, bd_)        hci_acl_link_find_by_bd_type((local_), (bd_), \
+    HCI_OWN_ADDRESS_TYPE_PUBLIC_DEVICE_ADDRESS, HCI_LINK_TYPE_ACL)
+
+void hci_acl_link_cbk(struct hci_acl_link_stru *link, uint16_t reason_job);
+void hci_acl_link_ready(struct hci_acl_link_stru *link);
+void hci_acl_link_create_connection_cancel(struct hci_acl_link_stru *link, uint8_t mask);
+void hcic_acl_link_un_ref(const struct fsm_inst *fi, uint8_t event, struct hci_acl_link_stru *link);
+void hcic_acl_link_kill(const struct fsm_inst *fi, uint8_t event, struct hci_acl_link_stru *link);
+void hci_acl_link_create_connection(struct hci_acl_link_stru *link);
+void hci_acl_link_connection_cancel_delay_start(struct hci_acl_link_stru *link, uint8_t status);
+struct hci_acl_link_stru *hci_acl_link_find_by_lr(const struct hci_local_stru *local,
+    const struct hci_remote_stru *remote, uint8_t linktype);
+struct hci_acl_link_stru *hci_acl_link_find_by_ptr(const void *acl);
+
+void bth_hci_recv_acl_data(const struct fsm_inst *fi, uint8_t type, struct buff_stru *in);
+void hcic_tl_recv_sco_data(const struct fsm_inst *fi, uint8_t event, struct buff_stru *in);
+
+void list_qo_s_remove_all(struct hci_local_stru *local);
+void list_qos_check_cbk(struct hci_local_stru *local);
+
+uint16_t hci_set_packet_type(struct hci_local_stru *local, uint8_t link_type);
+void hci_set_synchronous_param(struct hci_local_stru *local, struct hci_synchronous_connection_stru *in,
+    struct hci_synchronous_connection_stru *esco);
+uint8_t hci_set_event_filter_inquiry_check(struct hci_set_event_filter_stru *par);
+
+uint8_t hci_command_check_support(struct hci_local_stru *local, uint16_t opcode);
+void hci_command_send_core(struct hci_local_stru *local, struct hci_command_node_stru *cmd);
+struct hci_command_node_stru *hci_command_create_node(void *par, void *context, uint32_t opscode);
+uint8_t hci_command_check_block(struct hci_local_stru *local, struct hci_command_node_stru *cmd);
+void hci_struct_to_stream_data(struct hci_command_node_stru *cmd, uint8_t *dst, uint16_t stream_len);
+void hci_command_remove(struct hci_local_stru *local, struct hci_command_node_stru *cmd, void *arg, uint16_t len,
+                        uint16_t status, uint16_t evindex);
+void hci_command_remove_by_local(struct hci_command_node_stru *in);
+#define hci_command_remove_error(local_, cmd_, status_)    hci_command_remove((local_), (cmd_), NULL, 0, (status_), \
+                                                                             HCI_EVO_COMMAND_ERROR)
+
+void hci_command_check_send(struct hci_local_stru *local);
+struct hci_command_error_stru *hci_command_error_new(struct hci_command_node_stru *cmd, uint16_t *lenout,
+    uint16_t status);
+/* Could be NULL */
+void hci_command_remove_by_context(struct hci_local_stru *local, void *context, uint16_t status);
+struct hci_command_node_stru *hci_command_find_by_op_code(struct hci_local_stru *local, uint16_t opcode);
+struct hci_command_node_stru *hci_command_find_by_ev_index(struct hci_local_stru *local,
+    const void *link, uint8_t evindex, uint16_t opcode);
+#ifdef CONFIG_BREDR_HCI
+void hci_command_remove_by_op_code(struct hci_local_stru *local, uint16_t opcode, uint16_t status);
+#endif
+void hci_command_send_emergency(struct hci_local_stru *local, void *par, uint32_t opscode);
+void hci_cmd_send_internal_func(struct hci_local_stru *local, void *par, void *context, uint32_t opscode);
+void hci_cmd_rmv_err_func(struct hci_local_stru *local, struct hci_command_node_stru *cmd, uint16_t status);
+void hci_acl_data_send_pendding(struct hci_local_stru *local, uint8_t slot);
+#ifdef NOT_USED_YET
+int hci_tl_recv_data(HANDLE host_hdl, uint8_t *data, uint32_t len);
+#endif
+int hci_tl_recv_data_buff(HANDLE host_hdl, struct buff_stru *buff);
+void hcic_tl_recv_event(const struct fsm_inst *fi, uint8_t type, struct hci_tl_recv_stru *in);
+
+uint8_t hci_coding_get_bits(struct hci_bit_pointer_stru *bp, uint8_t len);
+uint16_t hci_coding_len(uint8_t *src, uint8_t *end, const uint8_t *p, uint8_t flag);
+void hci_coding(uint8_t *src, uint8_t *end, uint8_t *dst, const uint8_t *p, uint8_t flag);
+void hci_internal_cbk(HANDLE host_hdl, void *context, void *par, uint32_t evindex);
+void hci_internal_cbk_reg(void);
+
+#ifdef CONFIG_HCI_NEW_STREAM_STRUCT_CONVERSION
+uint16_t hci_stream_to_struct(uint8_t event_index, uint8_t *in_stream, void **out_stru);
+uint16_t hci_struct_to_stream(struct hci_command_node_stru *cmd, uint8_t **out_stream);
+uint16_t hci_cmd_cmplete_stream_to_struct(struct hci_command_complete_ev_stru *in, void **out_stru);
+uint16_t hci_le_meta_stream_to_struct(struct hci_le_meta_ev_stru *ev, void **out_stru);
+#endif
+void hci_ev_command_status_restart_ertx(struct hci_local_stru *local, struct hci_command_node_stru *cmd);
+void hci_ev_command_status(struct hci_local_stru *local, struct hci_command_status_ev_stru *in);
+void hci_ev_command_complete(struct hci_local_stru *local, struct hci_command_complete_ev_stru *in);
+void hci_ev_loopback_command(struct hci_local_stru *local, struct hci_loopback_command_ev_stru *ev);
+
+void hci_ev_link_key_request(struct hci_local_stru *local, struct hci_link_key_request_ev_stru *ev);
+void hci_ev_pin_code_request(struct hci_local_stru *local, struct hci_pin_code_request_ev_stru *ev);
+void hci_ev_authentication_complete(struct hci_local_stru *local, struct hci_authentication_complete_ev_stru *ev);
+void hci_ev_encryption_change(struct hci_local_stru *local, struct hci_encryption_change_ev_stru *ev);
+void hci_ev_io_capability_request(struct hci_local_stru *local, struct hci_io_capability_request_ev_stru *ev);
+void hci_ev_io_capability_response(struct hci_local_stru *local, struct hci_io_capability_response_ev_stru *ev);
+void hci_ev_user_confirmation_request(struct hci_local_stru *local, struct hci_user_confirmation_request_ev_stru *ev);
+void hci_ev_remote_oob_data_request(struct hci_local_stru *local, struct hci_remote_oob_data_request_ev_stru *ev);
+void hci_ev_simple_pairing_complete(struct hci_local_stru *local, struct hci_simple_pairing_complete_ev_stru *ev);
+
+void hci_ev_connection_complete(struct hci_local_stru *local, struct hci_connection_complete_ev_stru *ev);
+void hci_ev_connection_request(struct hci_local_stru *local, struct hci_connection_request_ev_stru *ev);
+void hci_ev_synchronous_connection_complete(struct hci_local_stru *local,
+                                            struct hci_synchronous_connection_complete_ev_stru *ev);
+void hci_ev_disconnection_complete(struct hci_local_stru *local, struct hci_disconnection_complete_ev_stru *ev);
+void hci_op_create_connection_cancel(struct hci_local_stru *local, struct hci_create_connection_cancel_comp_stru *ev);
+void hci_ev_number_of_cmp_pkt_rom(struct hci_local_stru *local, struct hci_number_of_completed_packets_ev_stru *ev);
+uint32_t hci_ev_cmd_status_restart_ertx_rom(struct hci_local_stru *local, struct hci_command_node_stru *cmd);
+struct hci_command_node_stru *hci_cmd_find_by_cmd_status_evt_rom(struct hci_local_stru *local, uint16_t opcode);
+void hci_ev_hardware_error_rom(struct hci_local_stru *local,
+    const struct hci_hardware_error_ev_stru *ev);
+#ifdef CONFIG_BREDR_HCI
+void hci_ev_remote_supported_features_cap(const struct hci_local_stru *local,
+    struct hci_remote_stru *remote, uint8_t page);
+#endif
+void hci_op_read_local_supported_cmd_rom(struct hci_local_stru *local,
+                                         struct hci_read_local_supported_commands_comp_stru *ev);
+void hci_op_read_local_feature_page0rom(struct hci_local_stru *local, uint8_t *fea);
+void hci_op_read_local_feature_page0(struct hci_local_stru *local, const uint8_t *fea);
+void hci_op_read_buffer_size_rom(struct hci_local_stru *local, struct hci_read_buffer_size_comp_stru *ev);
+
+void hcic_init(void);
+#ifdef CONFIG_BT_STACK_DONE
+void hcic_done(struct fsm_inst *fi, uint8_t event, const void *arg);
+#endif
+void hcic_cleanup(const struct fsm_inst *fi, uint8_t event, const void *arg);
+void hcic_cbk_reg(const struct fsm_inst *fi, uint8_t event, struct hci_cbk_node_stru *arg);
+void hcic_cbk_prime_reg(const struct fsm_inst *fi, uint8_t event, struct hci_cbk_node_stru *arg);
+void hcic_cbk_un_reg(const struct fsm_inst *fi, uint8_t event, const struct hci_cbk_line_stru *table);
+void hcic_commandl1_input(const struct fsm_inst *fi, uint8_t event, struct hci_command_node_stru *in);
+void hcic_commandl2_input(const struct fsm_inst *fi, uint8_t event, struct hci_command_queue_stru *queue);
+void hcic_command_rtx(const struct fsm_inst *fi, uint8_t event, struct hci_rtx_timer_stru *rts);
+void hcic_tl_reg(const struct fsm_inst *fi, uint8_t event, struct hci_local_stru *local);
+void hcic_tl_un_reg(const struct fsm_inst *fi, uint8_t event, void *tl_hdl);
+void hcic_acl_data_send(const struct fsm_inst *fi, uint8_t event, struct buff_stru *arg);
+#ifdef CONFIG_BREDR_HCI
+void hcic_sco_data_send(const struct fsm_inst *fi, uint8_t event, struct buff_stru *arg);
+#endif
+void hcic_create_sco_connection(const struct fsm_inst *fi, uint8_t event, struct hci_create_scoui_stru *in);
+void hcic_acl_link_disconnect(const struct fsm_inst *fi, uint8_t event, struct hci_disconnect_stru *par);
+void hcic_acl_link_connection_response(struct fsm_inst *fi, uint8_t event,
+    struct hci_acl_connection_response_ui_stru *in);
+void hcic_synchronous_connection_response(const struct fsm_inst *fi, uint8_t event,
+                                          struct hci_synchronous_connection_response_ui_stru *in);
+void hcic_synchronous_enhanced_connection_response(const struct fsm_inst *fi, uint8_t event,
+                                                   struct hci_synchronous_enhanced_connection_response_ui_stru *in);
+#ifdef CONFIG_BREDR_HCI
+void hcic_set_channel_classification(const struct fsm_inst *fi, uint8_t event,
+    struct hci_set_channel_classification_stru *par);
+#endif
+void hcic_set_default_link_role(const struct fsm_inst *fi, uint8_t event, void *arg);
+
+void hci_security_go(struct hci_acl_link_stru *link);
+void hci_security_result_ev(struct hci_local_stru *local, uint16_t hdl, uint16_t mask, uint16_t status);
+void hci_security_clear_remote_by_acl_link(struct hci_acl_link_stru *link);
+void hcic_security_authorized(const struct fsm_inst *fi, uint8_t event, struct hci_security_author_req_stru *in);
+void hcic_security_request(const struct fsm_inst *fi, uint8_t event, struct hci_security_node_stru *in);
+void hcic_security_require_reg(const struct fsm_inst *fi, uint8_t event, struct hci_security_info_stru *info);
+void hcic_security_require_un_reg(const struct fsm_inst *fi, uint8_t event,
+    struct hci_security_info_stru *info);
+void hcic_security_set_local_io(const struct fsm_inst *fi, uint8_t io_capability, void *arg);
+void hcic_security_set_bondable(const struct fsm_inst *fi, uint8_t bondable, void *arg);
+void hcic_security_set_oob(const struct fsm_inst *fi, uint8_t event, struct hci_security_remote_oob_stru *in);
+void hcic_security_read_local_oob_data(const struct fsm_inst *fi, uint8_t event, void *arg);
+void hcic_security_link_key_recover(const struct fsm_inst *fi, uint8_t event,
+    struct hci_security_link_key_recover_stru *in);
+void hcic_security_link_key_remove(const struct fsm_inst *fi, uint8_t event, uint8_t *bd);
+void hcic_security_pin_code_reply(const struct fsm_inst *fi, uint8_t event, struct hci_pin_code_request_reply_stru *in);
+void hcic_security_pairing_confirmation(const struct fsm_inst *fi, uint8_t event, uint8_t *bd);
+
+/* Used in DBG */
+struct hci_security_info_stru *hci_security_object_find(struct hci_security_info_stru *node,
+                                                        struct hci_security_info_stru *in);
+/* Used in DBG */
+uint8_t hci_security_link_key_good(struct hci_local_stru *local, struct hci_remote_stru *remote,
+    struct hci_security_node_stru *node);
+void hcic_security_le_keys_recover(const struct fsm_inst *fi, uint8_t event, struct bth_list_stru *list);
+void hcic_security_le_keys_remove(const struct fsm_inst *fi, uint8_t event, struct hci_address_stru *addr);
+void hci_security_authorization_cbk_rom(struct hci_acl_link_stru *link, struct hci_security_node_stru *node,
+    uint16_t evi);
+uint8_t hci_security_check_support_ssp(struct hci_local_stru *local, struct hci_remote_stru *remote);
+uint8_t hci_security_check_support_sc(struct hci_local_stru *local, struct hci_remote_stru *remote);
+void hci_security_go_rom(struct hci_acl_link_stru *link);
+void hci_security_pendding_cbk(struct hci_security_node_stru *node, uint8_t type);
+void hci_security_authorization_cbk(struct hci_acl_link_stru *link, struct hci_security_node_stru *node, uint16_t evi);
+void hci_security_complete(struct hci_acl_link_stru *link, uint16_t result);
+void hci_secu_result_ev_rom(struct hci_local_stru *local, uint16_t hdl, uint16_t mask, uint16_t status);
+void hci_security_handle_auth_failed(struct hci_acl_link_stru *link, struct hci_remote_stru *remote, uint16_t status);
+void hci_secu_clr_rmt_by_acl_link_rom(struct hci_acl_link_stru *link);
+void hci_security_end(struct hci_security_node_stru *node, uint16_t result);
+void hcic_secu_req_rom(const struct fsm_inst *fi, uint8_t event,
+    struct hci_security_node_stru *in);
+void hcic_secu_le_keys_recover_rom(const struct fsm_inst *fi, uint8_t event, struct bth_list_stru *list);
+void hcic_secu_pin_code_reply_rom(const struct fsm_inst *fi, uint8_t event, struct hci_pin_code_request_reply_stru *in);
+void hcic_secu_pairing_confirm_rom(const struct fsm_inst *fi, uint8_t response, uint8_t *bd);
+void hcic_secu_link_key_recover_rom(const struct fsm_inst *fi, uint8_t event,
+    struct hci_security_link_key_recover_stru *in);
+void hci_ev_link_key_req_rom(struct hci_local_stru *local, struct hci_link_key_request_ev_stru *ev);
+void hci_ev_pin_code_req_rom(struct hci_local_stru *local, struct hci_pin_code_request_ev_stru *ev);
+void hci_ev_encryption_change_rom(struct hci_local_stru *local, struct hci_encryption_change_ev_stru *ev);
+bool hci_ev_io_secu_pair_hdl_rom(struct hci_local_stru *local, struct hci_remote_stru *remote,
+                                 void *reply, struct hci_io_capability_request_ev_stru *ev,
+                                 struct hci_io_capability_req *capaility_req);
+uint8_t hci_security_link_key_good_rom(struct hci_local_stru *local, struct hci_remote_stru *remote,
+    struct hci_security_node_stru *node);
+
+uint8_t le_controller_addr_node_list_count(struct hci_local_stru *local, uint8_t type); /* Used in DBG */
+
+void hcic_iso_data_send(const struct fsm_inst *fi, uint8_t event, struct buff_stru *arg);
+#ifdef CONFIG_BREDR_HCI
+uint8_t hci_get_stream_len_by_filter_type(uint8_t filter_type, uint8_t filter_condition_type);
+#endif
+uint8_t *hci_stream_to_struct_cpy_stream(const uint8_t *stream, uint8_t len);
+void hci_coding_endian(uint8_t **src, uint8_t **dest, uint8_t len);
+uint8_t hci_coding_get_max_ele(struct hci_bit_pointer_stru *bp);
+struct hci_command_node_stru *hci_command_find_by_context(struct hci_local_stru *local, const void *context);
+void list_qos_cbk(struct hci_local_stru *local, uint8_t action);
+struct buff_stru *list_qo_s_get(struct bth_list_stru *list);
+void list_qo_s_free_buf(struct hci_local_stru *local, struct buff_stru *buf);
+uint8_t list_qo_s_add(struct hci_local_stru *local, struct buff_stru *buf, uint8_t mask, uint8_t slot);
+void list_qo_s_remove_hdl(struct hci_local_stru *local, uint16_t hdl);
+void hci_acl_data_mp_add(hci_mp_int *r, uint32_t len);
+bool hci_check_bit(const uint8_t *buf, uint8_t evindex);
+void *hci_cmd_new_auth_req(void);
+void *hci_cmd_new_set_conn_encrypt(void);
+void *hci_cmd_new_pin_code_rply(void);
+void *hci_cmd_new_pin_code_neg_rply(void);
+void *hci_cmd_new_link_key_neg_rply(void);
+void *hci_cmd_new_secu_link_key_ask4(void);
+void *hci_cmd_new_link_key_rply(void);
+uint8_t bth_hci_recv_acl_data_header_proc(const struct hci_local_stru *local,
+    struct buff_stru *in, uint8_t *pb, uint16_t *handle, uint8_t *header_len);
+
+typedef void (HciAclDataSendPenddingCb)(struct hci_local_stru *local, uint8_t slot);
+typedef void (HciCmdSendInternalCb)(struct hci_local_stru *local, void *par, void *context, uint32_t opscode);
+typedef void (HciCmdRmvErrCb)(struct hci_local_stru *local, struct hci_command_node_stru *cmd, uint16_t status);
+typedef void (HciCmdRmvCb)(struct hci_local_stru *local, struct hci_command_node_stru *cmd, void *arg,
+                           uint16_t len, uint16_t status, uint16_t evindex);
+typedef void (HciCbkCb)(struct hci_local_stru *local, void *context, void *arg, uint32_t len, uint32_t op_ev);
+typedef void (HciAutoSniffStopTimerCb)(struct hci_local_stru *local);
+typedef void (HciEvRmtSupportedFeatCapCb)(struct hci_local_stru *local, struct hci_remote_stru *remote, uint8_t page);
+typedef uint8_t (HciCmdCheckSupportCb)(struct hci_local_stru *local, uint16_t opcode);
+typedef void (HciOpReadLocalFeatPage0Cb)(struct hci_local_stru *local, uint8_t *fea);
+typedef void (HciLocalChangedNotifyCb)(struct hci_local_stru *local, HANDLE tl_hdl, uint8_t action);
+typedef void (HciRemoteGetAddrCb)(struct hci_remote_stru *remote, struct hci_address_stru *addr);
+typedef uint8_t (HciSecuChkSupportSSPCb)(struct hci_local_stru *local, struct hci_remote_stru *remote);
+typedef uint8_t (HciSecuChkSupportSCCb)(struct hci_local_stru *local, struct hci_remote_stru *remote);
+typedef void (HciSecurityPenddingCbkCb)(struct hci_security_node_stru *node, uint8_t type);
+typedef void (HciSecuAuthCbkCb)(struct hci_acl_link_stru *link,
+    struct hci_security_node_stru *node, uint16_t evi);
+typedef void (HciSecuCmpCb)(struct hci_acl_link_stru *link, uint16_t result);
+typedef uint8_t (HciSecuLkKeyGoodCb)(struct hci_local_stru *local, struct hci_remote_stru *remote,
+    struct hci_security_node_stru *node);
+typedef void (HciSecuGoCb)(struct hci_acl_link_stru *link);
+typedef void (HciSecuHdlAuthFailedCb)(struct hci_acl_link_stru *link, struct hci_remote_stru *remote, uint16_t status);
+typedef void (HciSecuEndCb)(struct hci_security_node_stru *node, uint16_t result);
+typedef struct hci_local_stru* (HciLocalFindByIDCb)(uint8_t ampid);
+typedef bool (HciCheckBitCb)(uint8_t *buf, uint8_t evindex);
+typedef struct hci_remote_stru* (HciRmtFindCreateCb)(uint8_t *bd, uint8_t atype, uint8_t cap);
+typedef struct hci_remote_stru* (HciRmtFindByBDCb)(uint8_t *bd);
+typedef void (HciSecuResultEvCb)(struct hci_local_stru *local, uint16_t hdl, uint16_t mask, uint16_t status);
+typedef void* (HciCmdNewAuthReqCb)(void);
+typedef void* (HciCmdNewSetConnEncryptCb)(void);
+typedef void* (HciCmdNewPinCodeRplyCb)(void);
+typedef void* (HciCmdNewPinCodeNegRplyCb)(void);
+typedef void* (HciCmdNewLinkKeyNegRplyCb)(void);
+typedef void* (HciCmdNewSecuLinkKeyAsk4Cb)(void);
+typedef void* (HciCmdNewLinkKeyRplyCb)(void);
+typedef void (HciSecuAuthCb)(struct hci_security_author_req_stru *in);
+/* Expend to visit more vars */
+typedef void (HciLinkRmvFun)(struct hci_acl_link_stru *link, uint8_t reason);
+typedef uint8_t (HciCmpAddrCb)(struct hci_address_stru *s, struct hci_address_stru *r);
+
+#endif /* G_HCI_HLP_H */
+
diff --git a/code/sdk/protocol/bt/host/bt/bts/bg_common/include/hci/hci_ui.h b/code/sdk/protocol/bt/host/bt/bts/bg_common/include/hci/hci_ui.h
new file mode 100644 (file)
index 0000000..1a966c9
--- /dev/null
@@ -0,0 +1,1078 @@
+/*
+ * Copyright (c) @CompanyNameMagicTag 1999-2015. All rights reserved.
+ */
+
+/* ---------------------------------------------------------------------------
+Module Name:
+    hci_ui.h
+Abstract:
+    This module defines HCI interface structure, macro & functions.
+--------------------------------------------------------------------------- */
+
+#ifndef G_HCI_UI_H
+#define G_HCI_UI_H
+
+#include "hci_stru.h"
+#include "sysdep.h"
+
+#define HCI_HANDLE_BIT_NUM 16
+#define OCTET_BIT_LEN 8
+
+#ifdef HUAWEI_ADAPT_VENDOR
+#define HCI_TLPKT_COMMAND        0x01
+#define HCI_TLPKT_ACLDATA        0x02
+#define HCI_TLPKT_SCODATA        0x03
+#define HCI_TLPKT_EVENT          0x04
+
+#endif /* HUAWEI_ADAPT_VENDOR */
+
+enum { /* data type use in tl adapter */
+    HCI_DATATYPE_COMMAND = 1,
+    HCI_DATATYPE_ACL = 2,
+    HCI_DATATYPE_SCO = 3,
+    HCI_DATATYPE_EVENT = 4,
+    /* added for iso event */
+    HCI_DATATYPE_ISO = 5,
+    HCI_DATATYPE_GLE_CMD = 0xA1,
+    HCI_DATATYPE_GLE_EVENT = 0xA2,
+    HCI_DATATYPE_GLE_ACB = 0xA3,
+    HCI_DATATYPE_GLE_ICB = 0xA4,
+};
+
+enum { /* data type use for distinguish BLE or GLE */
+    HCI_DATATYPE_BLE = 0,
+    HCI_DATATYPE_GLE = 1,
+};
+/* --------------------------------------------------------------------------- */
+/*                         HCI Transport Layer Interface                              */
+/* --------------------------------------------------------------------------- */
+/* -----------------------------------------------------------------------------
+In the function Func_Startup & Func_StartSco :
+    if return values is 0, means successfully;
+    if return values is not 0, means not successfully;
+In the function Func_Send :
+    return values is the number of bytes you send successfully;
+In the function Func_GetType :
+    return values is the AMP type MACROs;
+----------------------------------------------------------------------------- */
+typedef int (func_receive)                 (HANDLE host_hdl, uint8_t *p_buf, uint32_t len);
+typedef int (func_receive_buff)             (HANDLE host_hdl, struct buff_stru *buff);
+
+typedef struct _tl_callback_stru {
+    func_receive *receive;
+    func_receive_buff *receive_buff;
+} tl_callback_stru;
+
+typedef int (func_startup)                 (HANDLE tl_hdl, tl_callback_stru *p_callback, HANDLE host_hdl);
+typedef void (func_shutdown)             (HANDLE tl_hdl);
+typedef int (func_send)                 (HANDLE tl_hdl, uint8_t *p_buf, uint32_t len);
+typedef int (func_start_sco)             (HANDLE tl_hdl, uint16_t sco_hdl);
+typedef void (func_stop_sco)             (HANDLE tl_hdl, uint16_t sco_hdl);
+typedef unsigned char (func_get_type)     (HANDLE tl_hdl);
+
+typedef struct _transport_layer_stru {
+    func_get_type *get_type;
+    func_startup *startup;
+    func_shutdown *shutdown;
+    func_send *send;
+    func_start_sco *start_sco;
+    func_stop_sco *stop_sco;
+} transport_layer_stru;
+
+/* Range: 0x000-0xEFF (0xF00 - 0xFFF Reserved for future use) */
+#define HCI_INVAILD_HANDLE                        0xFFFF
+#define HCI_AMPID_BREDR                          0 /* type/id in struct hci_local_stru */
+#define hci_opcode(g, c)                        (((g) << 10) | (c))
+#define hci_ogf(o)                                ((uint8_t)((o) >> 10)) /* 6bits */
+#define hci_ocf(o)                                ((o) & ((1 << 10) - 1)) /* 10bits */
+#define HCI_AUTH_FAIL_RETRY_TIMES 3
+
+enum { /* OGF for Command Code, 6 bits */
+    HCI_OGF_LINKCONTROL =                         0x01,
+    HCI_OGF_LINKPOLICY =                         0x02,
+    HCI_OGF_CONTROLLER_BASEBAND =                0x03,
+    HCI_OGF_INFORMATIONAL_PARAM =                 0x04,
+    HCI_OGF_STATUS_PARAM =                         0x05,
+    HCI_OGF_TESTING =                             0x06,
+    HCI_OGF_LE =                                 0x08,
+    HCI_OGF_VENDOR =                             0x3F
+};
+
+/* --------------------------------------------------------------------------- */
+/*                             HCI UI Interface structure                              */
+/* --------------------------------------------------------------------------- */
+enum { /* cap in hci_available_addr_cap */
+    HCI_ADDRESS_CAP_LE =                         0x01, /* and LELink shall exist when this bit set */
+    HCI_ADDRESS_CAP_BREDR =                     0x02,
+    HCI_ADDRESS_CAP_IDENTITY =                     0x04, /* as identity address exist(BREDR or SMPD or LELink) */
+    HCI_ADDRESS_CAP_MAIN =                         (HCI_ADDRESS_CAP_BREDR | HCI_ADDRESS_CAP_LE), /* AMPID = 0 */
+    HCI_ADDRESS_CAP_80211 =                     0x08,
+    HCI_ADDRESS_CAP_UWB =                         0x10,
+    HCI_ADDRESS_CAP_AMP =                         (HCI_ADDRESS_CAP_80211 | HCI_ADDRESS_CAP_UWB), /* AMPID != 0 */
+
+    /* HCI Internal used bitmask to deliver information */
+    /* Internal use when remote is found by identity, need to update it into lelink, not in any object */
+    HCI_ADDRESS_CAP_LELINK_UPDATE =             0x80,
+    /* Do not generate remote change notify since there is another behind this call */
+    HCI_ADDRESS_CAP_DONOT_CHANGE_NOTIFY =         0x40,
+    HCI_ADDRESS_CAP_INFO =
+                                (HCI_ADDRESS_CAP_LELINK_UPDATE | HCI_ADDRESS_CAP_DONOT_CHANGE_NOTIFY)
+};
+
+struct hci_address_stru {
+    uint8_t bd[BD_ADDR_LEN];                        /* 6octets, 48bits */
+    /* etc, HCI_OWN_ADDRESS_TYPE_PUBLIC_DEVICE_ADDRESS = HCI_PEER_ADDRESS_TYPE_PUBLIC_DEVICE_ADDRESS */
+    uint8_t atype;
+    uint8_t cap;                                    /* etc, HCI_ADDRESS_CAP_LE, reserved for compatibility only. */
+};
+
+struct hci_controller_addr_node_stru {
+    struct hci_address_stru addr;
+    uint8_t mask; /* etc, HCI_CANODE_MASK_WHITELIST */
+};
+
+#define HCI_ROLE_DEFAULT                        (HCI_ROLE_SLAVE+1)    /* Default role setting */
+struct hci_acl_connection_response_ui_stru {        /* UI Input in hci_acl_connection_response */
+    struct hci_connection_request_ev_stru *ev;
+    uint8_t  link_role;                            /* HCI_ROLE_SLAVE, HCI_ROLE_MASTER or HCI_ROLE_DEFAULT */
+    /* etc: HCI_OPS_REJECT_CONNECTION_REQUEST, HCI_OPS_ACCEPT_CONNECTION_REQUEST */
+    uint32_t opscode;
+};
+
+struct hci_synchronous_connection_stru {            /* Common part for hci_set_synchronous_param */
+    uint32_t transmit_bandwidth;
+    uint32_t receive_bandwidth;
+    uint16_t max_latency;
+    uint16_t voice_setting;
+    uint8_t retransmission_effort;
+    uint16_t packet_type;
+};
+
+struct hci_synchronous_connection_response_ui_stru { /* UI Input in hci_synchronous_connection_response */
+    struct hci_connection_request_ev_stru *ev;    /* event received */
+    struct hci_synchronous_connection_stru par;    /* eSCO Parameters */
+    /* etc: HCI_OPS_REJECT_SYNCHRONOUS_CONNECTION_REQUEST, HCI_OPS_ACCEPT_SYNCHRONOUS_CONNECTION_REQUEST */
+    uint32_t opscode;
+};
+
+struct hci_synchronous_enhanced_connection_response_ui_stru {
+    struct hci_enhanced_accept_synchronous_connection_request_stru par;
+    uint32_t opscode;
+};
+
+struct hci_create_scoui_stru {                    /* UI Input in hci_synchronous_connection_response */
+    struct hci_address_stru addr;                /* Remote addr */
+    struct hci_synchronous_connection_stru par;    /* eSCO Parameters */
+};
+
+/* -----------------------------------------------------------------------------
+Description:
+    Upper protocol callback function for HCI.
+    hdl:         (arg length(2octets) << 16) | ampid(1octet).
+    context:     upper defined address.
+    arg:         parameter for this op_ev.
+    op_ev:        (opcode(passive is 0x0000) << 16) | evindex(include HCI_EVO_ or HCI_EVI)
+----------------------------------------------------------------------------- */
+typedef void (HCI_CbkFunc)(HANDLE hdl, void *context, void *arg, uint32_t op_ev);
+
+struct hci_cbk_line_stru { /* UI cbk func jump martix */
+    uint16_t id;                /* HCI_OPC_ or HCI_EVI_(EVO) */
+    void *func;                /* HCI_CbkFunc for external, HCI_CbkTableFunc for internal */
+};
+
+enum {
+    HCI_CBK_TYPE_INTERNAL = 1,
+    HCI_CBK_TYPE_EXTERNAL = 2,
+};
+
+struct hci_cbk_node_stru {
+    const struct hci_cbk_line_stru *table;
+    uint32_t size;
+    uint8_t type;
+};
+
+enum { /* action in struct hci_qo_s_cbk_node_stru *f */
+    HCI_QOS_ACTION_GO = 0,
+    HCI_QOS_ACTION_STOP = 1
+};
+
+struct hci_qo_s_cbk_node_stru { /* for hci_qos_reg */
+    void (*f)(uint8_t action); /* etc, HCI_QOS_ACTION_GO */
+    uint8_t idx; /* to match Unreg with Reg */
+};
+
+/* cbk arg for HCI_EVO_COMMAND_ERROR, also for L2 command finish/cancel */
+struct hci_command_error_stru {
+    uint16_t status;                                /* Extended by HCI_STATUS_RTX, include COMMAND_STATUS failed */
+    uint16_t opcode;                                /* HCI_OPC_ */
+    uint8_t req[1];                                /* Varable length, visit as void *, check platform CPU */
+};
+
+/* -----------------------------------------------------------------------------
+Description:
+    Level 2 Command Node Queue finished callback.
+----------------------------------------------------------------------------- */
+typedef void (hci_l2queue_cbk_func)(HANDLE hdl, void *context, struct hci_command_error_stru *arg, uint16_t len);
+
+#define HCI_COMMAND_MASK_TRANSPARENT        0x01    /* The input command parameter is in the PDU format */
+
+struct hci_command_node_stru { /* Level 1 command node */
+    struct fsm_timer *timer; /* RTX/ERTX Timer */
+    void *par; /* raw structure for context. */
+    void *context; /* application context pointer */
+    hci_l2queue_cbk_func *qcbk; /* Level 2 queue, when this command finished for any reason, cbk */
+    uint16_t opcode; /* etc: HCI_OPC_INQUIRY */
+#ifndef CONFIG_HCI_NEW_STREAM_STRUCT_CONVERSION
+    uint16_t struinfo; /* Command & Return structure convert info */
+#endif
+    /* Waiting for this event for complete, if command op may wait more than 1 event, check table for patch */
+    uint8_t evindex;
+    uint8_t mask; /* HCI_COMMAND_MASK_TRANSPARENT */
+#ifdef CONFIG_HCI_NEW_STREAM_STRUCT_CONVERSION
+    uint8_t par_stru_len; /* length of par, which is a struct */
+    uint8_t recv_cmd_status_evt; /* FALSE: Hasn't received cmd_status_evt, TRUE: Has received cmd_status_evt */
+#endif
+    uint8_t ampid;
+    void *_rom;
+};
+
+struct hci_command_queue_stru {                    /* Level 2 command queue node */
+    struct bth_list_stru list;                        /* node is struct hci_command_node_stru */
+    hci_l2queue_cbk_func *qcbk;                    /* Use to cbk when queue finished */
+    /* cbk arg by caller, this shall be a unique memory address used as a marker of this l2 queue */
+    void *context;
+    uint8_t ampid;                                /* target controller id */
+};
+
+union hci_set_event_filter_condition_in_union {
+    struct hci_set_event_filter_condition_in_stru {
+        uint8_t class_of_device[3];
+        uint8_t class_of_device_mask[3];
+    } c;
+    uint8_t bd[6];
+};
+
+struct hci_set_event_filter_in_stru {                /* UI Interface for hci_set_event_filter */
+    uint8_t filter_type;
+    uint8_t filter_condition_type;                /* optional */
+    union hci_set_event_filter_condition_in_union condition;
+    uint8_t auto_accept_flag;                        /* optional */
+};
+
+enum { /* flag in struct hci_inquiry_in_stru */
+    HCI_INQUIRY_FLAG_ENTER_PERIOIDIC_MODE =     0,
+    HCI_INQUIRY_FLAG_EXIT_PERIOIDIC_MODE =         1,
+    HCI_INQUIRY_FLAG_INQUIRY =                     2,
+    HCI_INQUIRY_FLAG_INQUIRY_CANCEL =             3,
+
+    HCI_INQUIRY_FLAG_CLASS_OF_DEVICE =             0x80, /* Set_Event_Filter */
+    HCI_INQUIRY_FLAG_BD =                         0x40, /* Set_Event_Filter */
+    HCI_INQUIRY_FLAG_SET_EVENT_FILTER =         (HCI_INQUIRY_FLAG_CLASS_OF_DEVICE | HCI_INQUIRY_FLAG_BD)
+};
+
+struct hci_inquiry_in_stru {                        /* input arg for hci_inquiry */
+    hci_l2queue_cbk_func *cbk;
+    void *context;
+    uint16_t max_period_len;
+    uint16_t min_period_len;
+    uint8_t lap[3];
+    uint8_t inquiry_len;
+    uint8_t num_responses;
+    uint8_t flag;                                    /* HCI_INQUIRY_FLAG_xxx */
+    union hci_set_event_filter_condition_in_union condition;
+};
+
+struct hci_eir_data_node_stru { /* Node in hci_extended_inquiry_response_decode */
+#ifdef CONFIG_SUB_STRUCTURE_ALIGNED_FIXED
+    uint8_t padding[2];        /* For ARM Linux GCC, substru is algined by 4 octets */
+#endif
+    uint8_t len;                /* 1 type + x length */
+    uint8_t eir_data_type;    /* etc:HCI_EIR_DATATYPE_FLAGS */
+    union {
+        /* General data pointer */
+        uint8_t p[1];
+
+        /* HCI_EIR_DATATYPE_SHORTENED_LOCAL_NAME,
+        HCI_EIR_DATATYPE_COMPLETE_LOCAL_NAME */
+        struct hci_eir_data_name_stru {
+            uint8_t data[1]; /* len - 1 octets */
+        } name;
+
+        /* HCI_EIR_DATATYPE_FLAGS */
+        uint8_t flags; /* etc, HCI_EIR_FLAGS_BREDR_NOT_SUPPORTED */
+
+        /* HCI_EIR_DATATYPE_MANUFACTURER_SPECIFIC_DATA */
+        struct hci_eir_data_manufacturer_data_stru {
+            uint8_t company_identifier_code[2];
+            uint8_t data[1]; /* len - 1 - 2 octets */
+        } manufacturer_data;
+#ifdef ENABLE_CHANGE_DEVICE_NAME
+        /* HCI_EIR_DATATYPE_MANUFACTURER_SPECIFIC_DATA */
+        struct hci_eir_data_device_id_stru {
+            uint8_t vendor_id_src[2]; // two bytes in device id profile
+            uint8_t vendor_id[2]; // two bytes in device id profile
+            uint8_t product_id[2]; // two bytes in device id profile
+            uint8_t version[2]; // two bytes in device id profile
+        } device_id_data;
+#endif
+        /* HCI_EIR_DATATYPE_TX_POWER_LEVEL */
+        uint8_t tx_power_level; /* -127 to + 127dBm, pathloss = Tx Power Level - RSSI */
+
+        /* HCI_EIR_DATATYPE_SLAVE_CONNECTION_INTERVAL_RANGE, only for LE AD */
+        struct hci_eir_data_slave_connection_interval_range_stru {
+            uint8_t conn_interval_min[2];
+            uint8_t conn_interval_max[2];
+        /* The first 2 octets defines the minimum value for the connection interval, the second 2oct for maximum */
+        } slave_connection_interval_range;
+
+        /* HCI_EIR_DATATYPE_INCOMPLETE_LIST_OF_16BIT_SERVICE_CLASS_UUIDS,
+        HCI_EIR_DATATYPE_COMPLETE_LIST_OF_16BIT_SERVICE_CLASS_UUIDS,
+        HCI_EIR_DATATYPE_LIST_OF_16BIT_SERVICE_SOLICITATION_UUIDS,
+        HCI_EIR_DATATYPE_INCOMPLETE_LIST_OF_32BIT_SERVICE_CLASS_UUIDS,
+        HCI_EIR_DATATYPE_COMPLETE_LIST_OF_32BIT_SERVICE_CLASS_UUIDS,
+        HCI_EIR_DATATYPE_LIST_OF_32BIT_SERVICE_SOLICITATION_UUIDS,
+        HCI_EIR_DATATYPE_INCOMPLETE_LIST_OF_128BIT_SERVICE_CLASS_UUIDS,
+        HCI_EIR_DATATYPE_COMPLETE_LIST_OF_128BIT_SERVICE_CLASS_UUIDS,
+        HCI_EIR_DATATYPE_LIST_OF_128BIT_SERVICE_SOLICITATION_UUIDS */
+        uint8_t uuid[1]; /* 2,4,or 16 octets */
+
+        /* HCI_EIR_DATATYPE_SERVICE_DATA_16BIT_UUID */
+        struct hci_eir_data_service_data16stru {
+            uint8_t uuid16[2];
+            uint8_t data[1]; /* len - 1 - 2 octets */
+        } service_data16;
+
+        /* HCI_EIR_DATATYPE_SERVICE_DATA_32BIT_UUID */
+        struct hci_eir_data_service_data32stru {
+            uint8_t uuid32[4];
+            uint8_t data[1]; /* len - 1 - 4 octets */
+        } service_data32;
+
+        /* HCI_EIR_DATATYPE_SERVICE_DATA_128BIT_UUID */
+        struct hci_eir_data_service_data128stru {
+            uint8_t uuid128[16];
+            uint8_t data[1]; /* len - 1 - 16 octets */
+        } service_data128;
+
+        /* HCI_EIR_DATATYPE_APPEARANCE, only for LE AD */
+        uint8_t appearance[2];
+
+        /* HCI_EIR_DATATYPE_PUBLIC_TARGET_ADDRESS,
+        HCI_EIR_DATATYPE_RANDOM_TARGET_ADDRESS, only for LE AD */
+        uint8_t addr[6]; /* Multiples of 6 octets */
+
+        /* HCI_EIR_DATATYPE_LE_BLUETOOTH_DEVICE_ADDRESS, only for LE AD */
+        /* The least significant bit of the most significant octet defines if the Device Address is a
+        Public Address or a Random Address. LSB = 1 Then Random Device Address.
+        LSB = 0 Then Public Device Address. Bits 1 to 7 in the most significant octet are reserved for future use */
+        uint8_t leaddr[7]; /* 7 octets */
+
+        /* HCI_EIR_DATATYPE_LE_ROLE */
+        uint8_t le_role; /* etc, HCI_LE_ROLE_ONLY_PERIPHERAL_ROLE_SUPPORTED */
+
+        /* HCI_EIR_DATATYPE_ADVERTISING_INTERVAL, only for LE AD */
+        uint8_t advertising_interval[2]; /* Units: 0.625 msec */
+
+        /* Following only for Vol3, Part C, 5.2.2.7 OOB data Block format */
+        /* HCI_EIR_DATATYPE_CLASS_OF_DEVICE */
+        uint8_t class_of_device[3];
+
+        /* HCI_EIR_DATATYPE_SIMPLE_PAIRING_HASH_C192 */
+        /* HCI_EIR_DATATYPE_SIMPLE_PAIRING_HASH_C256 */
+        uint8_t simple_pairing_hash_c[16]; /* 16 octets */
+
+        /* HCI_EIR_DATATYPE_SIMPLE_PAIRING_RANDOMIZER_R192 */
+        /* HCI_EIR_DATATYPE_SIMPLE_PAIRING_RANDOMIZER_R256 */
+        uint8_t simple_pairing_randomizer_r[16]; /* 16 octets */
+
+        /* HCI_EIR_DATATYPE_LE_SECURE_CONNECTIONS_CONFIRMATION_VALUE */
+        uint8_t lesc_confirmation[16];
+
+        /* HCI_EIR_DATATYPE_LE_SECURE_CONNECTIONS_RANDOM_VALUE */
+        uint8_t lesc_random[16];
+    } u;
+}; /* all member uint8_t, so no pendding at all, visit from &node->len */
+
+/* ACL link auto-sniff, by YDX, 2019.3.20 */
+struct hci_auto_sniff_par_stru {
+    uint8_t idle_time; /* Idle time in seconds before entering sniff mode */
+    uint16_t sniff_max_interval; /* sniff maximum interval */
+    uint16_t sniff_min_interval; /* sniff minimum interval */
+    uint16_t sniff_attempt; /* sniff attempt */
+    uint16_t sniff_timeout; /* sniff timeout */
+};
+
+struct hci_auto_sniff_req_stru {
+    uint8_t bd[6];
+    struct hci_auto_sniff_par_stru *par;
+};
+
+/* --------------------------------------------------------------------------- */
+/*                             callback for HCI_EVO_Events                              */
+/* --------------------------------------------------------------------------- */
+enum {
+    /* Local born without buffer size, without BD, just used to active waiting, for TL-REG caller */
+    HCI_LOCALCONTROLLER_TLREG_FINISH,
+    HCI_LOCALCONTROLLER_REMOVE, /* Local controller removed */
+    HCI_LOCALCONTROLLER_NOTIFY_BUFFER_SIZE, /* ACL/LE buffer size, or data block size */
+    HCI_LOCALCONTROLLER_NOTIFY_AMPINFO, /* AMP status notify, temply saved in le_status */
+    HCI_LOCALCONTROLLER_NOTIFY_BREDR_LE_CAP /* BREDR or LE or DuleMode */
+};
+
+struct hci_local_controller_changed_stru {    /* par of HCI_EVO_LOCALCONTROLLER_CHANGED */
+    HANDLE tl_hdl;
+    struct hci_address_stru addr;            /* Local Read_BDADDR for BD and feature to get cap */
+    uint16_t max_pdusize;                        /* 1500 */
+    uint8_t ampid;                            /* HCI_AMPID_BREDR */
+    uint8_t action;                            /* etc: HCI_LOCALCONTROLLER_TLREG_FINISH */
+    uint8_t amp_status;                        /* HCI_AMP_STATUS_NO_CAPACITY */
+    uint8_t cap;                                /* etc: HCI_ADDRESS_CAP_LE */
+};
+
+#define HCI_MPN        2 /* 2*uint,64bits,enough? */
+
+typedef struct {
+    uint32_t num[HCI_MPN];
+} hci_mp_int;
+
+enum { /* dcounter[x] in struct hci_local_stru */
+    HCI_DCOUNTER_SEND,
+    HCI_DCOUNTER_RECV
+};
+
+struct hci_info_read_local_stru {
+    struct hci_address_stru br_addr;            /* BREDR address - Shall be all 0s in LE-only mode */
+    /* Identity address - May be public or static if LE supported. Otherwise, shall be all 0s. */
+    struct hci_address_stru id_addr;
+    /* Random address - May be all 0s, or RPA, or None-RPA if LE supported. Otherwise, shall be all 0s. */
+    struct hci_address_stru rd_addr;
+    hci_mp_int dcounter[2];                    /* etc: HCI_DCOUNTER_SEND */
+    uint8_t hci_version;
+    uint8_t ampid;
+};
+
+#define HCI_REMOTE_INFO_SRC_INQUIRY                1
+#define HCI_REMOTE_INFO_SRC_CONNECT_REQ            2
+/* The upper two provide device_of_class */
+#define HCI_REMOTE_INFO_SRC_ADV_REPORT            3
+#define HCI_REMOTE_INFO_SRC_SCAN_RESPONSE       4
+#define HCI_REMOTE_INFO_SRC_REMOTE_FEATURES        5
+#define HCI_REMOTE_INFO_SRC_OTHER                0xFF
+
+struct hci_remote_info_stru {
+    /* Could be Public from BREDR, from LE, or Random from LE, or converted by SMP into public, just a reference */
+    struct hci_address_stru addr;
+    uint8_t src;    /* HCI_REMOTE_INFO_SRC_INQUIRY_RESULT etc. */
+    /* etc, HCI_CLASS_OF_DEVICE_LIMITED_DISCOVERABLE_MODE, 23~13 for bitmask, 12~8 for enum major, 7~2 for minor,
+       1~0 are 0 */
+    uint8_t class_of_device[3];
+    uint8_t page_scan_repetition_mode;        /* etc: HCI_PAGE_SCAN_REPETITION_MODE_R2 */
+
+    /* BR/EDR Range: -128  <= N <= 127 (signed integer) Units: dB */
+    /* AMP: Range: AMP type specific (signed integer)  Units: dBm */
+    /* LE: Range: -127 to 20, 127 (signed integer) Units: dBm */
+    uint8_t rssi;
+    uint8_t eir_len;
+    uint8_t eir[1];                            /* Variable length */
+};
+
+/* SDU segment flag */
+enum {
+    QOS_SDU_START =     0x01,                /* 0x01    start of SDU, a bitmask */
+    QOS_SDU_END =         0x80,                /* 0x80    end of SDU, a bitmask */
+    QOS_SDU_CONTINUE =     0x02                /* 0x02, not start, not end */
+};
+
+struct hci_l2cap_data_cfm_stru {                /* QoS DataCfm */
+    uint16_t cid;
+};
+
+struct hci_info_read_link_security_stru {        /* = struct HCI_ACLLinkSecurityStru part */
+    uint16_t mask;                            /* etc: HCI_SECURITY_AUTHENTICATE, HCI_SECURITY_LINKKEY */
+};
+
+struct hci_info_read_le_size_number_stru {            /* All LE Controller size or number limitations */
+    uint8_t white_list_size;                    /* White list size */
+    uint8_t resolving_list_size;                /* Resolving list size */
+    uint16_t max_adv_data_length;                /* Maximum advertising data length */
+    uint8_t number_of_adv_sets;                /* Number of advertising sets supported */
+    uint8_t prd_dev_list_size;                /* Periodic advertiser list size */
+
+    void *_rom;
+};
+enum { /* result of struct hci_security_author_req_stru */
+    HCI_SECURITY_AUTHOR_PASS,
+    HCI_SECURITY_AUTHOR_NOTALLOW
+};
+
+struct hci_security_author_req_stru {            /* par of HCI_EVO_AUTHORIZATION_REQUEST */
+    struct hci_address_stru addr[2];            /* x in HCI_LOCAL */
+    uint16_t hcihdl;                            /* Based on a link object */
+    uint16_t channel;                         /* PSM for L2CAP Server channel for RFCOMM */
+    uint8_t proto_id;                            /* etc: PROT_L2CAP, PROT_RFCOMM */
+    uint8_t result;                            /* etc: HCI_SECURITY_AUTHOR_PASS */
+};
+
+enum { /* parameter values of hci_le_set_op_report_stru::op_id  */
+    HCI_LE_SETOP_SET_ADV_ENABLE,
+    HCI_LE_SETOP_CURRENT_ADV_STATE,        /* Report current advertising state */
+    HCI_LE_SETOP_ADV_NOT_ALLOWED,        /* Advertising can't be enabled/disabled */
+    HCI_LE_SETOP_SET_SCAN_ENABLE,
+    HCI_LE_SETOP_CURRENT_SCAN_STATE,    /* Report current scan state */
+    HCI_LE_SETOP_SCAN_NOT_ALLOWED,        /* LE scan can't be enabled/disabled */
+
+    HCI_LE_SETOP_RANDOM_ADDR_UPDATE,    /* Local random address is updated */
+};
+
+/* Parameter values of HCI_EVO_LE_SET_SCAN_ADV_STEP  */
+struct hci_le_set_op_report_stru {
+    uint8_t op_id;    /* Operation being executed */
+    uint8_t op_value;    /* 0 - Disable 1 - Enable. */
+};
+
+/* Parameter values of HCI_EVO_PAIRCFM_ASK4  */
+struct hci_security_pair_cfm_ask4stru {
+    uint8_t remote_bd[6];             /* remote BD_ADDR */
+    uint8_t initiator;                /* 0 - Remote initiates pairing 1 - Local initiates pairing */
+    uint8_t bond;                     /* HCI_BOND_NOBOND/HCI_BOND_DEDICATED/HCI_BOND_GENERAL */
+};
+
+/* Parameter values of HCI_EVO_ENCRYPTION_CHANGED  */
+struct hci_security_encryption_changed_stru {
+    uint8_t remote_bd[6];             /* remote BD_ADDR */
+    uint8_t encryption_result;        /* encryption result */
+};
+
+enum { /* HCI Command Error Internal reason */
+    HCI_STATUS_NO_FLOWCONTROL = 0x0100,        /* for HCI_OPC_HOST_NUMBER_OF_COMPLETED_PACKETS */
+    HCI_STATUS_NOT_SUPPORTED,
+    HCI_STATUS_RTX,
+    HCI_STATUS_CANCELED,
+    HCI_STATUS_LOCAL_CONTROLLER_REMOVED,
+    HCI_STATUS_MITM_NOT_SATISIFIED, /* Were requested for MITM, but for IO or other reason, result is non_MITM */
+    HCI_STATUS_LINK_DISCONNECTED, /* Some link-related cmd should be removed when link disconnected */
+};
+
+enum { /* For hci_cbk Additional event section in struct HCI_EvCBKStru, added enum for HCI_EVI_xxx */
+    HCI_EVO_ACLLINK = HCI_EVI_ENDLINE,        /* Create/Delete/1st Ready, struct hci_link_cbk_stru */
+    HCI_EVO_LELINK,                            /* LE, struct hci_link_cbk_stru */
+    /* eSCO, HCI_EVI_CONNECTION_REQUEST, waiting for Connection_Response */
+    HCI_EVO_ESCOLINK,
+    HCI_EVO_LOCALCONTROLLER_CHANGED,        /* struct hci_local_controller_changed_stru */
+    HCI_EVO_REMOTECONTROLLER_CHANGED,        /* struct hci_remote_info_stru */
+    HCI_EVO_ACL_DATA_IND,                    /* struct buff_stru */
+    HCI_EVO_PHY_DATA_IND,                    /* struct buff_stru */
+    HCI_EVO_LE_DATA_IND,                    /* struct buff_stru */
+    HCI_EVO_SCO_DATA_IND,                    /* struct buff_stru */
+
+    /* HCI Internal filter event from EVI_ */
+    HCI_EVO_COMMAND_ERROR,                    /* Command Terminate reason for OpCbk, struct hci_command_error_stru */
+    /* Shall Register OPC(Cover Error) before EVI(Cover Passive) with one function */
+
+    HCI_EVO_AUTHORIZATION_REQUEST,            /* struct hci_security_author_req_stru */
+    HCI_EVO_AUTHORIZATION_ABORT,            /* struct hci_security_author_req_stru */
+    /* struct hci_user_confirmation_request_ev_stru, Popup a window and display something */
+    HCI_EVO_SECURITY_DISPLAY,
+    HCI_EVO_LINK_KEY_SAVE,                    /* struct hci_security_link_key_save_stru, app to save bonded linkkey */
+    HCI_EVO_LINK_KEY_ASK4,                    /* struct hci_security_link_key_ask4stru, ask for linkkey */
+    HCI_EVO_PIN_CODE,                        /* struct hci_pin_code_request_ev_stru, ask for PINCode */
+    HCI_EVO_COMMAND_COMPLETE,                /* return parameter in command_complete */
+    HCI_EVO_LOOPBACK,                        /* struct hci_loopback_command_ev_stru */
+    HCI_EVO_L2CAP_DATACFM,                    /* struct hci_l2cap_data_cfm_stru */
+    HCI_EVO_REMOTE_OOB_DATA_REQUEST,        /* struct hci_remote_oob_data_request_stru */
+    HCI_EVO_NO_FLOW_CONTROL,                /* NULL */
+    HCI_EVO_LE_SET_OP_REPORT,               /* struct hci_le_set_op_report_stru */
+    HCI_EVO_PAIRCFM_ASK4,                   /* struct hci_security_pair_cfm_ask4stru */
+    HCI_EVO_ENCRYPTION_CHANGED,             /* struct  hci_security_encryption_changed_stru */
+
+    HCI_EVO_GLELINK,
+    HCI_EVO_GLE_DATA_IND,
+};
+
+enum { /* Bitmask in hci_acl_link_ref */
+    /* input r is the acllink object, no need to find again */
+    HCI_ACLLINK_ACLOBJECT =                             0x8000,
+    HCI_ACLLINK_LE =                                     0x4000,
+
+    /* UI interface */
+    HCI_ACLLINK_REF_BREDR =                             (0x0001),
+    HCI_ACLLINK_REF_LE =                                 (0x0002 | HCI_ACLLINK_LE)
+};
+
+enum { /* Job in struct hci_link_cbk_stru, for HCI_EVO_LELINK & HCI_EVO_ACLLINK */
+    HCI_LINKCBK_CREATE,                    /* to create a shadow obj */
+    HCI_LINKCBK_DELETE,                    /* Disconnected, kill shadow obj */
+    HCI_LINKCBK_CONNECTED,                /* Connected, Notify hcihdl, address, role, etc */
+    HCI_LINKCBK_READY                    /* Ready to use the link for upper */
+};
+
+enum { /* mask in HCI_Set_Channel_Classification */
+    HCI_SETAFH_OCCUPY =     0x01, /* otherwise release */
+    HCI_SETAFH_SENDCMD =     0x02 /* or later */
+};
+
+enum { /* mask in struct hci_link_stru / struct hci_link_cbk_stru */
+    /* Local initiated connection, local manage disconnect of the link */
+    HCI_ACLMASK_INITIATOR =                 0x01,
+    /* Before connection complete is judged, two bits may exist simultaneously */
+    HCI_ACLMASK_ACCEPTOR =                     0x08,
+    /* Connection complete OK/ACL already exist received, only disconnect can kill link */
+    HCI_ACLMASK_CONNECTION_COMPLETED =         0x10,
+
+    /* Master or Slave(Unknown yet), only for LE since Role_Change is not watched */
+    HCI_ACLMASK_MASTER =                     0x02,
+    HCI_ACLMASK_RECVDATA_TAIL_UNCOMPLETE =     0x04 /* Recedata list tail node is a uncomplete L2CAP segments head
+    or is complete but waiting for link status change to ready(GetRemoteInfo) */
+};
+
+enum { /* addr[x] in struct hci_link_cbk_stru */
+    HCI_LOCAL =         0,
+    HCI_REMOTE =         1
+};
+
+enum {
+    BTH_LINK_BR = 0,
+    BTH_LINK_BLE = 1,
+    BTH_LINK_GLE = 2,
+};
+struct hci_link_cbk_stru {                /* Cbk arg of hci_acl_link_cbk */
+    void *hci;                            /* Host link handle */
+    uint16_t hdl;                            /* Controller link handle */
+    /* HCI_LOCAL(Current used) & HCI_REMOTE(Public/Static Prefered, or CurLink) */
+    struct hci_address_stru addr[2];
+    uint8_t mask;                            /* etc: HCI_ACLMASK_INITIATOR, This is only valid when ready */
+    uint8_t job;                            /* etc: HCI_LINKCBK_CREATE */
+    uint8_t reason;                        /* etc: HCI_STATUS_CONNECTION_FAILED_TO_BE_ESTABLISHED */
+
+    void *_rom;
+};
+
+struct hci_physical_link_stru {            /* in of HCI_PhysicalLink */
+    void *acllink;                        /* As handle */
+    uint8_t *assoc;                        /* Remote assoc, sub mem */
+    uint32_t opscode;                        /* HCI_OPS_ACCEPT_PHYSICAL_LINK or HCI_OPS_CREATE_PHYSICAL_LINK */
+    uint16_t assoc_len;
+    uint8_t phyhdl;
+    uint8_t ampid;
+
+    void *_rom;
+};
+
+enum { /* fea in struct smp_key_stru */
+    SMP_KEYFEA_ECDH =             0x01, /* By ECDH */
+    SMP_KEYFEA_MITM =             0x02, /* Authenticated */
+    SMP_KEYFEA_LTK_SEND =         0x04, /* Ability to been encrypt as a slave */
+    SMP_KEYFEA_LTK_RECV =         0x08, /* Ability to encrypt as a master */
+    SMP_KEYFEA_CSRK_ENCODE =     0x10, /* Ability to encode the signing data */
+    SMP_KEYFEA_CSRK_DECODE =     0x20, /* Ability to decode/verify the signing data */
+    SMP_KEYFEA_IRK_SEND =         0x40, /* Ability to use RPA, remote could recognize */
+    SMP_KEYFEA_IRK_RECV =         0x80 /* Ability to decode remote`s RPA */
+};
+
+struct smp_key_stru { /* Master role security database */
+    /* as Security Level, both side share this length, by pairing_request and response min */
+    uint8_t ltk_len;
+    uint8_t fea;                        /* etc, SMP_KEYFEA_ECDH */
+
+    /* Local sent to remote information */
+    uint8_t div[2];                    /* 16bits, 2octets, Peripherial(slave) distributed DIV for remote(Master) */
+
+    /* Remote sent to local, or LESC derived on both sides */
+    uint8_t ltk[16];                    /* corresponding to Public/Static address or IRK(RPA) */
+    uint8_t ediv[2];                    /* eDIV and Rand are only used in legacy LTK encryption(no LESC) */
+    uint8_t rand[8];                    /* Encryption keys */
+    uint8_t irk[16];                    /* Resolveable address */
+    /* Signature, CSRK_DECODE. CSRK_ENCODE is generated by d1(ER, DIV, 1) locally */
+    uint8_t csrk[16];
+};
+
+struct smp_key_store_stru {            /* Keys that indexes by addr */
+    struct hci_address_stru addr;    /* peer address, is dule-mode? */
+    struct smp_key_stru key;            /* Bonding information */
+};
+#define HCI_SEC_LINKKEY_MAX_LEN 16
+struct hci_security_remote_stru {
+    /* from hci_ev_io_capability_response */
+    uint8_t io_capability;                       /* [033],Enum */
+    uint8_t authentication_requirements;      /* [035],Enum, Remote */
+
+    uint8_t pin_code_len;                        /* Default PINCode Length, if 0, PINCode not valid */
+    uint8_t pin_code[HCI_PIN_CODE_MAX_LEN];      /* Default PINCode */
+
+    /* Remote OOB info, local have peer`s */
+    /* Local recieves Remote`s OOB, [034],Enum etc, HCI_OOB_DATA_PRESENT_OOB_AUTHENTICATION_DATA_NOT_PRESENT */
+    uint8_t oob_data_present;
+
+    /* LE Keys by SMP */
+    struct smp_key_stru *lekey;
+    /* Local send OOB to Remote, OOB need to generate PK[LOCAL] and R[Local] before pairing,
+       sk[32] + pk[64] + tk(r)[16] */
+    uint8_t *oob_pkr;
+
+    /* align */
+    struct bth_list_stru reqlist;                /* struct hci_security_node_stru */
+    uint16_t mask;                            /* etc: HCI_SECURITY_AUTHENTICATE, HCI_SECURITY_LINKKEY */
+    uint8_t link_key[HCI_SEC_LINKKEY_MAX_LEN];
+    uint8_t key_type;                            /* etc: HCI_KEY_TYPE_COMBINATION_KEY */
+    /* Pairing Failes 3 consecutive times, ACLLink disconnect with error code 0x05 - Authentication Failure */
+    uint8_t fail_counter;
+};
+
+struct hci_remote_oob_data_request_stru {
+    uint8_t bd[BD_ADDR_LEN];
+    /* 0 = HCI_OPS_REMOTE_OOB_DATA_REQUEST_REPLY / 1 = HCI_OPS_REMOTE_OOB_EXTENDED_DATA_REQUEST_REPLY */
+    uint8_t extended;
+};
+
+enum { /* mask in struct hci_remote_stru */
+    /* hci_ev_read_remote_extended_features or hci_ev_remote_host_supported_features_notification */
+    HCI_REMOTEMASK_CONTROLLER_FEATURES =         0x01, /* Page 0 */
+    HCI_REMOTEMASK_HOST_FEATURES =                 0x02, /* Page 1, When got remote host features, don`t ask again */
+    /* Got remote IO Capability Response, use to detect Request before or after Response */
+    HCI_REMOTEMASK_IO_CAPABILITY_RESPONSE =     0x04,
+    HCI_REMOTEMASK_IO_CAPABILITY_REQUEST =         0x08,
+    HCI_REMOTEMASK_IO_CAPABILITY_ROUND =
+                (HCI_REMOTEMASK_IO_CAPABILITY_REQUEST | HCI_REMOTEMASK_IO_CAPABILITY_RESPONSE),
+    HCI_REMOTEMASK_BREDR_PAIRING_ONPROGRESS =     0x10,
+    /* When start inquiry or scan, set this cap to die if not seen */
+    HCI_REMOTEMASK_TO_DIE =                     0x20,
+    HCI_REMOTEMASK_ASK4_LINK_KEY =                 0x40, /* When asking for Link Key from the APP */
+    HCI_REMOTEMASK_ASK4_PAIRING_CONFIRMATION =     0x80
+};
+
+enum {
+    HCI_REMOTE_MIN = 0,
+    HCI_REMOTE_MAX = 1
+};
+
+#define HCI_LMP_FEATURE_MAX_PAGE  3                /* 0, 1, 2, for local & remote */
+
+struct hci_remote_stru {                        /* Only Remote Primary BREDR/LE controller, AMP is not a remote obj */
+    struct hci_security_remote_stru sec;
+    /* etc: HCI_ADDR_IDENTITY, HCI use current address, whatever type it is, the address for controller */
+    struct hci_address_stru addr[2];
+    /* etc: HCI_REMOTE_MIN, Min, Max, [210],Time, From AD Perpherial Perfered Parameter */
+    uint16_t conn_interval[2];
+    uint16_t clock_offset;                    /* etc: HCI_CLOCK_OFFSET_VALID | x */
+    uint8_t cap;                                /* etc: HCI_ADDRESS_CAP_LE */
+    uint8_t page_scan_repetition_mode;        /* etc: HCI_PAGE_SCAN_REPETITION_MODE_R0 */
+    uint16_t mask;                                /* etc: HCI_REMOTEMASK_HOST_FEATURES */
+    /* extended features 8 pages? current allocate 3 page? need bitmask if we have already asked */
+    uint8_t lmp_features[HCI_LMP_FEATURE_MAX_PAGE][8];
+    void *_gle;
+};
+
+enum { /* mode in struct HCI_SecuritySetModeStru */
+    HCI_SECURITY_MODE1,                    /* No Security, Forbidden in 2.1, expection is SDP */
+    HCI_SECURITY_MODE2,                    /* Service Level Security, 3 & 1 is part of 2, so treat as 2 */
+    HCI_SECURITY_MODE3,                    /* Link Level Security, HCI_OPS_WRITE_AUTHENTICATION_ENABLE */
+    /* Mode2, but Forced to Auth/Encrypt, expection is SDP, HCI_OPC_WRITE_SIMPLE_PAIRING_MODE */
+    HCI_SECURITY_MODE4
+};
+
+enum { /* Additional enum bit mask identifies the types of Security OOB data available */
+    HCI_OOB_DATA_NOT_PRESENT =  0x00,
+    HCI_OOB_DATA_P192_CR_VALUE_PRESENT = 0x01,
+    HCI_OOB_DATA_P256_CR_VALUE_PRESENT = 0x02,
+    HCI_OOB_DATA_P192_AND_P256_CR_VALUE_PRESENT = 0x03,
+    HCI_OOB_DATA_SMP_TK_VALUE_PRESENT = 0x10,
+    HCI_OOB_DATA_SECURE_SMP_CR_VALUE_PRESENT = 0x20,
+    HCI_OOB_DATA_SMP_TK_AND_SECURE_SMP_CR_VALUE_PRESENT = 0x30
+};
+
+struct hci_security_remote_oob_stru {            /* Remote Controller Security OOB data */
+    struct hci_address_stru addr;            /* Remote Addr */
+
+    /* Direction for: HCI_OPS_IO_CAPABILITY_REQUEST_REPLY and SMP Pairing_Request / Security_Request */
+    /* [034],Enum etc, HCI_OOB_DATA_PRESENT_OOB_AUTHENTICATION_DATA_NOT_PRESENT */
+    uint8_t oob_data_present;
+};
+
+struct hci_security_link_key_recover_stru { /* in of hci_security_link_key_recover */
+    uint8_t bd[BD_ADDR_LEN];                /* [123],Val */
+    uint8_t link_key[HCI_SEC_LINKKEY_MAX_LEN];                 /* [173],Val */
+    uint8_t key_type;                        /* etc: HCI_KEY_TYPE_COMBINATION_KEY */
+    uint8_t accept;                        /* TRUE for Reply or recover key, FALSE for Negative Reply */
+};
+
+enum { /* mask in struct hci_security_node_stru */
+    /* authentication, ask this device is allowed or not? we are initiator of HCI_Authentication_Requested */
+    HCI_SECURITY_AUTHENTICATE =             0x0001,
+    HCI_SECURITY_AUTHORIZE =                 0x0002,    /* authorization, popup to ask if this PSM is allowed? */
+    HCI_SECURITY_ENCRYPT =                     0x0004,    /* encryption is required on node, encrypted on remote */
+    HCI_SECURITY_MITM =                     0x0008,    /* authentication with keytype check for MITM, Level 3 */
+    HCI_SECURITY_P256 =                     0x0010,    /* AES-CCM, P256 ECDH */
+    /* Incoming channel, upper layer concept, this is not security direction! */
+    HCI_SECURITY_INCOMING =                 0x0020,
+
+    /* Other internal masks for remote->sec.mask, also encrypt, mitm, p256, authenticate */
+    /* Authorization callback ongoing, for abort, only for require node */
+    HCI_SECURITY_AUTHORIZE_ONGOING =         0x8000,
+    HCI_SECURITY_LINKKEY =                     0x1000,    /* LinkKey validation, go for authencation for it */
+    HCI_SECURITY_BAD_LINKKEY =                 0x0800,    /* LinkKey Level not enough, a temp procedure mask */
+    HCI_SECURITY_BONDED    =                     0x0400,    /* Bonded, linkkey is bonded or unbonded(temp) */
+    HCI_SECURITY_BONDABLE =                 0x0200    /* Bondable */
+};
+
+enum { /* Result in Security callback */
+    HCI_SECURITY_CBK_COMPLETE =             0,
+    HCI_SECURITY_CBK_PENDDING =             (1 << 16)
+};
+
+struct hci_security_info_stru {    /* node in HCI_SECURITYLIST */
+    uint16_t channel;                /* PSM or server channel */
+    uint16_t mask;                /* etc: HCI_SECURITY_AUTHENTICATE */
+    uint8_t proto_id;                /* etc: PROT_L2CAP */
+};
+
+#ifdef BTH_AUDIO_OVER_DSP
+#pragma pack(2)
+struct hci_share_mem_for_voice_data_stru {
+    uint16_t sync_hdl;         /* connect handle */
+    uint32_t stream_out_mem;    /* memory for voice data transmission from dsp to BTC */
+    uint32_t stream_in_mem;     /* memory for voice data transmission from BTC to dsp */
+    uint16_t enable;          /* enable/disable the memory */
+};
+#pragma pack()
+#endif
+
+enum { /* Bond in struct hci_security_node_stru */
+    HCI_BOND_NOBOND =         0,    /* No Bond */
+    HCI_BOND_DEDICATED =     1,    /* Without a L2CAP/RFCOMM channel */
+    HCI_BOND_GENERAL =         2    /* With a L2CAP/RFCOMM channel */
+};
+
+struct hci_security_node_stru {            /* node in link->sec.reqlist */
+    struct hci_security_info_stru info;    /* Must in 1st item for searching */
+    /* Security Caller cbk, HCI_SMCbkFunc *, but dead-lock called, so void *, for KEIL compile reason */
+    void *cbk;
+    uint16_t hcihdl;                        /* Based on a link object */
+    uint8_t bond;                            /* etc: HCI_BOND_DEDICATED */
+};
+
+/* -----------------------------------------------------------------------------
+Description:
+    Security Request ListNode callback.
+----------------------------------------------------------------------------- */
+typedef void (HCI_SMCbkFunc)(struct hci_security_node_stru *node, uint32_t result);
+
+#define HCI_SECURITY_LINK_KEY_REQUEST_REPLY_STRU hci_security_link_key_recover_stru    /* For compatibility */
+
+struct hci_security_link_key_ask4stru { /* HCI_EVO_LINK_KEY_ASK4 */
+    uint8_t local_bd[BD_ADDR_LEN];        /* [123],Val */
+    uint8_t remote_bd[BD_ADDR_LEN];        /* [123],Val */
+};
+
+struct hci_security_link_key_save_stru { /* HCI_EVO_LINK_KEY_SAVE */
+    uint8_t local_bd[BD_ADDR_LEN];        /* [123],Val */
+    uint8_t remote_bd[BD_ADDR_LEN];        /* [123],Val */
+    uint8_t link_key[16];                 /* [173],Val */
+    uint8_t key_type;                        /* etc: HCI_KEY_TYPE_COMBINATION_KEY */
+};
+
+#ifdef CONFIG_JITWS
+/* Macro components of HCI_OPS_ */
+/* Ret struinfo offset or EVI selector bitmask */
+#define hci_ops2mask(ops_)                        (((uint16_t)ops_ >= 0xFC00)? 0:((ops_) & 0x8000))
+/* OPCode, remove 0x8000 bitmask */
+#define hci_ops2opc(ops_)                        (((uint16_t)ops_ >= \
+    0xFC00)?(uint16_t)(ops_):((uint16_t)((ops_) & 0x7FFF)))
+#ifdef CONFIG_HCI_NEW_STREAM_STRUCT_CONVERSION
+#define hci_ops2strulen(ops_)                   ((uint8_t)((ops_) >> 16)) /* struct lenght of opcode */
+#else
+#define hci_ops2reqoff(ops_)                    ((uint8_t)((ops_) >> 16)) /* Req struinfo offset */
+#endif
+#define hci_ops2retevi(ops_)                    ((uint8_t)((ops_) >> 24)) /* Ret struinfo offset or EVI */
+
+#define hci_set_off(p, evindex_)                ((p)[(evindex_) >> 3] &= ~((1 << ((evindex_) & 7))))
+#define hci_set_bit(p, evindex_)                ((p)[(evindex_) >> 3] |= (1 << ((evindex_) & 7)))
+#define hci_check_bit(p, evindex_)                ((p)[(evindex_) >> 3] & (1 << ((evindex_) & 7)))
+#else
+
+/* Macro components of HCI_OPS_ */
+#define hci_ops2mask(ops_)                        ((ops_) & 0x8000) /* Ret struinfo offset or EVI selector bitmask */
+#define hci_ops2opc(ops_)                        ((uint16_t)((ops_) & 0x7FFF)) /* OPCode, remove 0x8000 bitmask */
+#ifdef CONFIG_HCI_NEW_STREAM_STRUCT_CONVERSION
+#define hci_ops2strulen(ops_)                   ((uint8_t)((ops_) >> 16)) /* struct lenght of opcode */
+#else
+#define hci_ops2reqoff(ops_)                    ((uint8_t)((ops_) >> 16)) /* Req struinfo offset */
+#endif
+#define hci_ops2retevi(ops_)                    ((uint8_t)((ops_) >> 24)) /* Ret struinfo offset or EVI */
+
+#define hci_set_off(p, evindex_)                ((p)[(evindex_) >> 3] &= ~((1 << ((evindex_) & 7))))
+#define hci_set_bit(p, evindex_)                ((p)[(evindex_) >> 3] |= (1 << ((evindex_) & 7)))
+#define hci_check_bit(p, evindex_)                ((p)[(evindex_) >> 3] & (1 << ((evindex_) & 7)))
+#endif
+/* -----------------------------------------------------------------------------
+Description:
+    HCI LE UI structures.
+----------------------------------------------------------------------------- */
+/* Parameters of Extended Scan */
+struct hci_le_ext_scan_parameters_stru {
+    /* Extended Scann Parameters */
+    /* Policy to filter advertising packets, one of t_hci_scanning_filter_policy, e.g.
+       HCI_SCANNING_FILTER_POLICY_ACCEPT_ALL */
+    uint8_t scan_filter_policy;
+    uint8_t scan_phys;             /* Scanning PHYs, combination of t_hci_scanning_ph_ys, e.g. HCI_SCANNING_PHYS_1M */
+    /* type of the scan of 1M PHY. one of t_hci_le_scan_type, e.g. HCI_LE_SCAN_TYPE_PASSIVE_SCANNING */
+    uint8_t scan_type_1m;
+    /* type of the scan of Coded PHY. one of t_hci_le_scan_type, e.g. HCI_LE_SCAN_TYPE_PASSIVE_SCANNING */
+    uint8_t scan_type_coded;
+    /* Parameters for 1M PHY */
+    /* Time interval from when the Controller started its last scan until it begins the subsequent scan on the
+       primary advertising channel, 0x0004 - 0xFFFF. N*0.625ms */
+    uint16_t scan_interval_1m;
+    /* Duration of the scan on the primary advertising channel, 0x0004 - 0xFFFF. N*0.625ms */
+    uint16_t scan_window_1m;
+    /* Parameters for 1M Coded PHY */
+    /* Time interval from when the Controller started its last scan until it begins the subsequent scan on the
+       primary advertising channel, 0x0004 - 0xFFFF. N*0.625ms */
+    uint16_t scan_interval_coded;
+    /* Duration of the scan on the primary advertising channel, 0x0004 - 0xFFFF. N*0.625ms */
+    uint16_t scan_window_coded;
+};
+
+/* Parameters of Extended Scan Enable */
+struct hci_le_ext_scan_enable_stru {
+    /* One of t_hci_filter_duplicates, e.g. HCI_FILTER_DUPLICATES_DUPLICATE_FILTERING_DISABLED */
+    uint8_t filter_duplicate;
+    uint8_t limited;              /* e.g. LE_DISCOVERYMODE_GENERAL */
+    uint16_t duration;             /* Scan duration, 0x0001 - 0xFFFF. N*0.625ms */
+    uint16_t period;                /* Scan period, 0x0001 - 0xFFFF. N*1.28s */
+};
+
+struct hci_white_addr_list {
+    uint8_t count;
+    struct hci_controller_addr_node_stru *addr_list;
+};
+
+/* --------------------------------------------------------------------------- */
+/*                                     UI Functions                             */
+/* --------------------------------------------------------------------------- */
+void hcih_init(void);
+#ifdef CONFIG_BT_STACK_DONE
+void hci_done(void);
+#endif
+void hci_cleanup(void);
+
+void hci_cbk_reg(const struct hci_cbk_line_stru *table, uint32_t size);
+void hci_cbk_prime_reg(const struct hci_cbk_line_stru *table, uint32_t size);
+void hci_cbk_un_reg(const struct hci_cbk_line_stru *table);
+void hci_cbk_un_reg_sync(const struct hci_cbk_line_stru *table);
+
+void hci_tl_reg(HANDLE tl_hdl, transport_layer_stru *func);
+void hci_tl_un_reg(HANDLE tl_hdl);
+
+void *hci_acl_link_ref(struct hci_address_stru *r, uint32_t flag);
+void hci_acl_link_un_ref(void *hci);
+void hci_acl_link_kill(void *hci);
+
+BOOL hci_get_remote_addr_by_acl_hdl(uint16_t conn_hdl, struct hci_address_stru *rmt_addr);
+BOOL hci_get_remote_link_key_by_acl_hdl(uint16_t conn_hdl, uint8_t *link_key);
+
+void hci_create_sco_connection(struct hci_create_scoui_stru *in);
+void hci_acl_connection_response(struct hci_acl_connection_response_ui_stru *in);
+void hci_synchronous_connection_response(struct hci_synchronous_connection_response_ui_stru *in);
+void hci_enhanced_synchronous_connection_response(
+    struct hci_synchronous_enhanced_connection_response_ui_stru *in);
+void hci_set_default_link_role(uint8_t is_master);
+
+void hci_command_send_amp(void *context, void *par, uint32_t opscode, uint8_t ampid);
+void hci_command_send_vendor(void *context, void *par, uint16_t opcode, uint8_t evi, uint8_t paramlen, uint8_t ampid);
+void hci_commandl2_send_queue(struct hci_command_queue_stru *queue);
+/* context when create queue */
+#ifdef CONFIG_BREDR_HCI
+void hci_commandl2_cancel_queue(void *context, uint8_t ampid);
+#endif
+void hci_cmd_send_func(void *context, void *par, uint32_t opscode);
+#define hci_command_send(context_, par_, opscode_)        hci_command_send_amp((context_), (par_), (opscode_), \
+    HCI_AMPID_BREDR)
+
+struct hci_command_queue_stru *hci_commandl2_new_queue(hci_l2queue_cbk_func *cbk, void *context, uint8_t ampid);
+struct hci_command_node_stru *hci_commandl2_new_node(struct bth_list_stru *list, uint32_t opscode);
+struct hci_set_event_filter_stru *hci_set_event_filter(struct hci_set_event_filter_in_stru *in);
+void hci_controller_init(hci_l2queue_cbk_func *cbk, void *context, uint8_t ampid);
+void hci_controller_reconfig(hci_l2queue_cbk_func *cbk, void *context, uint8_t ampid);
+void *hci_inquiry(struct hci_inquiry_in_stru *in);
+void hci_disconnect(uint16_t connection_handle, hci_active_dis_reason reason);
+void hci_acl_data_send(struct buff_stru *data, uint32_t cid_hcihdl, uint8_t ampid);
+void hci_sco_data_send(struct buff_stru *data, uint16_t scohdl);
+void hci_set_auto_sniff(uint8_t *bd, struct hci_auto_sniff_par_stru *par);
+
+uint8_t hci_compare_addr(struct hci_address_stru *s, struct hci_address_stru *r);
+uint8_t hci_compare_bd(struct hci_address_stru *addr, const uint8_t *bd);
+uint8_t hci_compare_addr_non_0(struct hci_address_stru *s, struct hci_address_stru *r);
+uint8_t hci_compare_all_num(uint8_t *p, uint8_t num, uint32_t len);
+#ifdef NOT_USED_YET
+uint8_t hci_available_addr_cap(struct hci_address_stru *r);
+#endif
+uint8_t hci_available_addr_cap2(const struct hci_remote_stru *remote);
+uint8_t hci_secure_connection_supported(struct hci_remote_stru *remote);
+void hci_remote_new_cap_addr(struct hci_remote_stru *remote, struct hci_address_stru *r, uint8_t cap);
+struct hci_remote_stru *hci_remote_find_create(uint8_t *bd, uint8_t atype, uint8_t cap);
+void hci_remote_change_notify(uint8_t src, struct hci_remote_stru *remote, uint8_t *class_of_device, uint8_t rssi,
+                              uint8_t *eir, uint8_t eir_len);
+
+uint8_t hci_extended_inquiry_response_encode(struct bth_list_stru *in, uint8_t *out, uint8_t *end);
+uint8_t hci_extended_inquiry_response_decode(struct bth_list_stru *list, uint8_t *eir, uint8_t *end);
+
+struct hci_info_read_local_stru *hci_info_read_local(uint8_t ampid);
+void hci_info_read_link_security(struct hci_info_read_link_security_stru *out, void *acl);
+void hci_info_read_le_size_number(struct hci_info_read_le_size_number_stru *out, uint8_t ampid);
+
+void hci_security_set_bondable(uint8_t bondable);
+void hci_security_set_oob(struct hci_security_remote_oob_stru *in);
+void hci_security_read_local_oob_data(void);
+void hci_security_set_local_io(uint8_t io_capability);
+void hci_security_request(struct hci_security_node_stru *in);
+void hci_security_abort(struct hci_security_node_stru *in);
+void hci_security_authorized(struct hci_security_author_req_stru *in);
+void hci_security_require_reg(struct hci_security_info_stru *in);
+void hci_security_require_un_reg(struct hci_security_info_stru *in);
+void hci_security_pin_code_reply(struct hci_pin_code_request_reply_stru *in);
+void hci_security_pairing_confirmation(uint8_t *bd, uint8_t response);
+
+void hci_security_link_key_recover(struct hci_security_link_key_recover_stru *in);
+#define HCI_SECURITY_LINKKEY_REPLY hci_security_link_key_recover    /* For compatibility */
+void hci_security_link_key_remove(uint8_t *bd);
+void hci_security_le_keys_recover(struct bth_list_stru *list);
+void hci_security_le_keys_remove(struct hci_address_stru *addr);
+
+uint8_t *hci_security_get_sc_link_key(void *hci);
+/* 6 octets */
+uint32_t hci_security_passkey_entry_input(uint8_t *in);
+uint8_t hci_security_get_local_io(void);
+uint8_t hci_security_get_bondable(void);
+#ifdef CONFIG_SMP_LESC_LINKKEY
+uint8_t hci_security_get_bredr_pairing_status(const struct hci_remote_stru *remote);
+#endif
+
+uint32_t hci_command_get_len(const void *stru, uint32_t opscode);
+/* Central Frequency, etc,2412 */
+/* Bandwidth, 22,40 */
+void hci_set_channel_classification(uint32_t c, uint32_t w,
+    /* etc, HCI_SETAFH_OCCUPY */
+    uint8_t mask);
+#ifdef NOT_USED_YET
+void hci_qos_reg(void (*f)(uint8_t action), uint8_t idx);
+void hci_qos_un_reg(void (*f)(uint8_t action), uint8_t idx);
+const uint8_t *bt_get_le_mac(void);
+#endif
+void hci_iso_data_send(struct buff_stru *data);
+
+enum { /* Returning of l2cap_header_check */
+    L2CAP_HEADERCHECK_OK =             0,
+    L2CAP_HEADERCHECK_ERROR =         1,
+    L2CAP_HEADERCHECK_KEEPWAIT =     2
+};
+
+uint16_t hci_get_mobile_connection_handle(uint8_t *bd);
+#if (BTH_WITH_SMART_WEAR == YES)
+uint8_t hci_page0feature_find_by_remote_addr(uint8_t *addr);
+#endif
+void hmac_sha256(uint8_t *key, uint32_t key_len, uint8_t *data, uint32_t data_len);
+
+void hci_le_set_event_mask(uint8_t isset, uint8_t *mask);
+
+#endif /* G_HCI_UI_H */
+
index 42e5501..dcde3b1 100644 (file)
@@ -11,6 +11,7 @@
 #include "bth_stack_gap.h"
 #include "stack_def.h"
 #include "btsrv_task.h"
+#include "bts_br_gap.h"
 #include "datatype.h"
 #include "bts_def.h"
 
@@ -95,5 +96,9 @@ void btsrv_ble_smp_pair_keys_notify_cbk(uint16_t event, void *arg);
 void bt_srv_conn_callback_register(void);
 int32_t btsrv_start_phone_reconnect_timer(bd_addr_t *addr);
 void btsrv_stop_phone_reconnect_timer(void);
+bool btsrv_exist_conn_node_of_type(bool phone);
+void btsrv_notify_gap_acl_state_changed(const bd_addr_t *addr, gap_acl_state_t state, unsigned int reason);
+void btsrv_access_ble_conn_lock(void);
+void btsrv_release_ble_conn_lock(void);
 
 #endif /* __BTSRV_CONNECTION_MANAGER_H__ */
index 027a02e..3625d6a 100644 (file)
@@ -63,6 +63,7 @@ bool btsrv_is_bluetooth_disable(void);
 
 bool btsrv_set_local_addr(const bd_addr_t *bd_addr);
 bool is_bts_auto_reconnect_enable(void);
+bool is_bts_a2dp_snk_enable(void);
 
 /* 本地设备运行模式设置和查询 */
 uint32_t btsrv_set_local_device_mode(btsrv_local_device_mode mode);
index 6cf0a28..2f5a05b 100644 (file)
@@ -56,7 +56,7 @@ void btsrv_remote_device_init(void);
 void btsrv_remote_device_deinit(void);
 remote_device_list_node *btsrv_get_remote_paired_phone_node(void);
 remote_device_list_node *btsrv_find_remote_dev_node(const uint8_t *bd_addr, uint32_t dev_hdl, bool add);
-uint32_t btsrv_get_remote_dev_addr_by_hdl(uint32_t dev_hdl, const bd_addr_t *addr);
+uint32_t btsrv_get_remote_dev_addr_by_hdl(uint32_t dev_hdl, bd_addr_t *addr);
 
 void btsrv_set_remote_dev_status_found_2_none(void);
 void btsrv_handle_remote_device_found(uint32_t dev_hdl, bt_sdk_dev_found_info *info);
@@ -70,4 +70,13 @@ bool btsrv_get_pair_state(uint32_t dev_hdl);
 /* 维测:打印远端设备信息链表 */
 void btsrv_dfx_show_remote_dev_list(void);
 
+/* 配置BLE安全连接标记 */
+void btsrv_set_ble_sc_flag(bool is_enable);
+/* 获取BLE安全连接标记 */
+bool btsrv_get_ble_sc_flag(void);
+/* 配置BLE一键双连标记 */
+void btsrv_set_ble_ctkd_flag(bool is_enable);
+/* 获取BLE一键双连标记 */
+bool btsrv_get_ble_ctkd_flag(void);
+
 #endif /* __REMOTE_DEVICE_MANAGER_H__ */
index f4196fd..d118c69 100644 (file)
@@ -89,6 +89,7 @@ struct osal_list_head g_sample_found_dev_list_head;
 void reset_found_dev_list(void)
 {
     if (!g_sample_found_list_init) {
+        g_sample_found_list_init = true;
         OSAL_INIT_LIST_HEAD(&g_sample_found_dev_list_head);
         return;
     }
@@ -791,6 +792,7 @@ static void sample_gap_discovery_result_callback(const bd_addr_t *bd_addr)
     bts_sample_log_no_header("\n");
 
     add_node_to_found_dev_list(bd_addr, device_name, cod, 0);
+    bt_os_free(device_name);
 }
 
 static void sample_gap_pair_requested_callback(const bd_addr_t *bd_addr)
@@ -1161,7 +1163,7 @@ static void btsrv_sample_cmd_set_feature_config(const char **params, int32_t par
     *(int *)&feature = atoi(params[0]);
     bts_sample_log("feature:%d bt_auto_reconnect_closed:%d\n", *(int *)&feature, feature.bt_auto_reconnect_closed);
     errcode_t ret = bts_set_features(&feature);
-    bts_sample_log("bts set features ret:%d\n", ret);
+    bts_sample_log("bts set features ret:0x%x\n", ret);
 }
 
 static void btsrv_sample_cmd_get_feature_config(const char **params, int32_t params_cnt)
index 99ff62f..2d14805 100644 (file)
@@ -125,6 +125,10 @@ typedef enum {
     BTSRV_SAMPLE_GATT_BLE_SET_SEC_PARAM,                /* 58 设置安全参数信息 */
     BTSRV_SAMPLE_GATTC_SPEED = 59,
     BTSRV_SAMPLE_GATTS_SPEED = 60,
+
+    /* 61 */
+    BTSRV_SAMPLE_GATT_BLE_SET_CTKD_ENABLE,            /* 61 设置一键双连开关 */
+
 } btsrv_gatt_sample_cmd_id;
 
 static int32_t g_btsrv_sample_server_id = 0;
@@ -1727,6 +1731,19 @@ static void sample_gatts_speed(const char **params, int32_t params_cnt)
     bt_os_free(ind_para.value);
 }
 
+static void sample_gatt_cmd_ble_ctkd_param(const char **params, int32_t params_cnt)
+{
+    errcode_t ret;
+    if (params_cnt != 1) { /* 1:参数个数 */
+        bts_sample_log("ble secure ctkd param error! need: bd_addr.\n");
+        return;
+    }
+
+    bool ctkd_enable = (bool)atoi(params[0]);
+    ret = gap_ble_set_ctkd_enable(ctkd_enable);
+    bts_sample_log("set ble ctkd ret:0x%x.\n", ret);
+}
+
 typedef void (*ble_at_gatt_cmd_handle_func)(char **params, int32_t params_cnt);
 typedef struct {
     uint32_t id;
@@ -1809,12 +1826,15 @@ ble_at_gatt_cmd_hdl_info g_btsrv_gatt_sample_hdls[] = {
     { BTSRV_SAMPLE_GATT_BLE_SET_DATA_LEN, sample_gatt_cmd_ble_set_data_len },
     { BTSRV_SAMPLE_GATT_BLE_GET_CONN_PARAM, sample_gatt_cmd_ble_get_conn_param },
 
-    /* 55 */
+    /* 56 */
     { BTSRV_SAMPLE_GATTS_SHOW_LIST, sample_gatts_show_service_list },
     { BTSRV_SAMPLE_GATTC_CONN_LIST, NULL },
     { BTSRV_SAMPLE_GATT_BLE_SET_SEC_PARAM, sample_gatt_cmd_ble_set_sec_param },
     { BTSRV_SAMPLE_GATTC_SPEED, sample_gattc_speed},
     { BTSRV_SAMPLE_GATTS_SPEED, sample_gatts_speed},
+
+    /* 61 */
+    { BTSRV_SAMPLE_GATT_BLE_SET_CTKD_ENABLE, sample_gatt_cmd_ble_ctkd_param},
 };
 
 void btsrv_gatt_sample_cmd(uint32_t cmd_id, char **params, int32_t params_cnt)
index 315c656..3000998 100644 (file)
@@ -448,6 +448,7 @@ int32_t btsdk_a2dp_set_audio_shmid(uint32_t stream_hdl, bool enable, uint32_t sh
 int32_t btsdk_a2dp_stream_start(void *stream_hdl);
 int32_t btsdk_a2dp_stream_suspend(void *stream_hdl);
 int32_t a2dp_src_set_stream_codec_req(bool reconfig, const void *stream_hdl, const void *cfg, uint32_t size);
+int32_t btsdk_unregistera2dpsnk_service(void);
 void btsdk_a2dp_reg_cbk(const btsdka2dp_cbk *a2dp_cbk);
 void btsdk_a2dp_snk_reg_cbk(const btsdka2dp_cbk *a2dp_cbk);
 
diff --git a/code/sdk/protocol/bt/host/bt/bts/sdk/src/stack_api/CMakeLists.txt b/code/sdk/protocol/bt/host/bt/bts/sdk/src/stack_api/CMakeLists.txt
new file mode 100644 (file)
index 0000000..385c934
--- /dev/null
@@ -0,0 +1,16 @@
+add_subdirectory_if_exist(gap)\r
+if(${CHIP} MATCHES "brandy")\r
+    set(\r
+        bt_comm_src_list\r
+        ${CMAKE_CURRENT_SOURCE_DIR}/stack_mpc.c\r
+        ${CMAKE_CURRENT_SOURCE_DIR}/stack_gap_if.c\r
+        ${CMAKE_CURRENT_SOURCE_DIR}/stack_av_if.c\r
+        ${CMAKE_CURRENT_SOURCE_DIR}/stack_avrcp_if.c\r
+        ${CMAKE_CURRENT_SOURCE_DIR}/stack_dft_if.c\r
+        ${CMAKE_CURRENT_SOURCE_DIR}/stack_hfp_if.c\r
+        ${CMAKE_CURRENT_SOURCE_DIR}/stack_pbap_if.c\r
+        ${CMAKE_CURRENT_SOURCE_DIR}/stack_spp_if.c\r
+        ${CMAKE_CURRENT_SOURCE_DIR}/stack_pan_if.c\r
+    )\r
+    set(BTH_SDK_LIST "${BTH_SDK_LIST}" "${bt_comm_src_list}" CACHE INTERNAL "bt ram obj list" FORCE)\r
+endif()\r
diff --git a/code/sdk/protocol/bt/host/bt/bts/sdk/src/stack_api/gap/CMakeLists.txt b/code/sdk/protocol/bt/host/bt/bts/sdk/src/stack_api/gap/CMakeLists.txt
new file mode 100644 (file)
index 0000000..6129569
--- /dev/null
@@ -0,0 +1,6 @@
+set(\r
+    bt_comm_src_list\r
+    ${CMAKE_CURRENT_SOURCE_DIR}/advertising_scan.c\r
+)\r
+set(BTH_SDK_LIST "${BTH_SDK_LIST}" "${bt_comm_src_list}" CACHE INTERNAL "bt ram obj list" FORCE)\r
+\r
diff --git a/code/sdk/protocol/bt/host/bt/bts/sdk/src/stack_api/stack_mpc.h b/code/sdk/protocol/bt/host/bt/bts/sdk/src/stack_api/stack_mpc.h
new file mode 100644 (file)
index 0000000..9a527ff
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Copyright (c) @CompanyNameMagicTag 2021-2022. All rights reserved.
+ * Description: sdk common
+ * Author: @CompanyNameTag
+ * Create: 2021-09-01
+ */
+#ifndef STACK_API_H
+#define STACK_API_H
+
+#include <stdint.h>
+#include "soc_osal.h"
+
+#ifdef __cplusplus
+#if __cplusplus
+extern "C" {
+#endif
+#endif
+
+#define HEADER_FIELD_LEN 1
+#define BT_STACK_SHIFT_8 8
+
+#define IPC_MAX_FIELD_LEN 24
+
+/* 同步或者异步接口调用 */
+typedef enum {
+    STACK_API_SYNC = 0,
+    STACK_API_ASYNC,
+} t_stack_api_flag;
+
+typedef void (stack_api_cfm_cb)(void *context, uint32_t result, void *parameter);
+
+struct handle_param {
+    uint16_t opcode;
+    uint8_t field_len;
+    uint8_t field_id[0];
+};
+
+struct handle_struct {
+    uint8_t sync_flag;    /* 用于标记调用该接口的操作是异步还是同步 */
+    uint16_t opcode;
+    uint8_t field_len;
+    uint8_t *field_id;
+    osal_semaphore sem;    /* 针对同步调用模式下 , 需要等待的信号量的handle id */
+    uint16_t out_len;       /* 调用结束后结果长度 */
+    uint8_t *out_data;     /* 调用结束后结果数据 */
+    stack_api_cfm_cb *cfm_cbk;    /* 针对异步调用的场景,需要注册的回调接口 */
+};
+
+void stack_mpc_init_handle(void);
+void stack_mpc_deinit_handle(void);
+struct handle_struct *stack_mpc_find_handle(uint16_t opcode, uint8_t field_len, uint8_t *field_id);
+struct handle_struct *stack_mpc_create_handle(uint8_t sync_flag, struct handle_param *param, void *cbk);
+uint32_t stack_mpc_wait_handle(struct handle_struct *hdl);
+uint8_t stack_mpc_delete_handle(struct handle_struct *hdl);
+uint8_t stack_mpc_activate_handle(uint16_t opcode, uint8_t field_len, uint8_t *field_id,
+                                  uint16_t out_len, const uint8_t *out_data);
+int32_t stack_mpc_msg_send_sync(struct handle_param *param, uint16_t in_len,
+                                uint8_t *in_para, uint16_t *out_len, uint8_t **out_value);
+#ifdef __cplusplus
+#if __cplusplus
+}
+#endif /* __cpluscplus */
+#endif /* __cpluscplus */
+#endif /* STACK_API_H */
index 5573470..35bf53b 100644 (file)
Binary files a/code/sdk/tools/pkg/bin/brandy/bt.bin and b/code/sdk/tools/pkg/bin/brandy/bt.bin differ
index 9a9b975..70fa960 100644 (file)
Binary files a/code/sdk/tools/pkg/bin/brandy/dsp/max/dsp_main.bin and b/code/sdk/tools/pkg/bin/brandy/dsp/max/dsp_main.bin differ
index 7785263..b659ba9 100644 (file)
Binary files a/code/sdk/tools/pkg/bin/brandy/dsp/mini/dsp_main.bin and b/code/sdk/tools/pkg/bin/brandy/dsp/mini/dsp_main.bin differ
index 4e0a8a0..4beff4e 100644 (file)
Binary files a/code/sdk/tools/pkg/bin/brandy/dsp/normal/dsp_main.bin and b/code/sdk/tools/pkg/bin/brandy/dsp/normal/dsp_main.bin differ
diff --git a/jsapp/baidu_voiceassistant/build.gradle b/jsapp/baidu_voiceassistant/build.gradle
new file mode 100644 (file)
index 0000000..5e5275d
--- /dev/null
@@ -0,0 +1,38 @@
+// Top-level build file where you can add configuration options common to all sub-projects/modules.\r
+apply plugin: 'com.huawei.ohos.app'\r
+\r
+//For instructions on signature configuration, see https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ide_debug_device-0000001053822404#ZH-CN_TOPIC_0000001154985555__section1112183053510\r
+ohos {\r
+    compileSdkVersion 5\r
+    defaultConfig {\r
+        compatibleSdkVersion 5\r
+    }\r
+}\r
+       \r
+buildscript {\r
+    repositories {\r
+        maven {\r
+            url 'https://repo.huaweicloud.com/repository/maven/'\r
+        }\r
+        maven {\r
+            url 'https://developer.huawei.com/repo/'\r
+        }\r
+               jcenter()\r
+    }\r
+    dependencies {\r
+        classpath 'com.huawei.ohos:hap:2.4.4.2'\r
+        classpath 'com.huawei.ohos:decctest:1.2.4.0'\r
+    }\r
+}\r
+\r
+allprojects {\r
+    repositories {\r
+        maven {\r
+            url 'https://repo.huaweicloud.com/repository/maven/'\r
+        }\r
+        maven {\r
+            url 'https://developer.huawei.com/repo/'\r
+        }\r
+               jcenter()\r
+    }\r
+}\r
diff --git a/jsapp/baidu_voiceassistant/entry/.gitignore b/jsapp/baidu_voiceassistant/entry/.gitignore
new file mode 100644 (file)
index 0000000..3543521
--- /dev/null
@@ -0,0 +1 @@
+/build\r
diff --git a/jsapp/baidu_voiceassistant/entry/build.gradle b/jsapp/baidu_voiceassistant/entry/build.gradle
new file mode 100644 (file)
index 0000000..d80170c
--- /dev/null
@@ -0,0 +1,36 @@
+apply plugin: 'com.huawei.ohos.hap'\r
+apply plugin: 'com.huawei.ohos.decctest'\r
+//For instructions on signature configuration, see https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ide_debug_device-0000001053822404#ZH-CN_TOPIC_0000001154985555__section1112183053510\r
+ohos {\r
+    compileSdkVersion 5\r
+    defaultConfig {\r
+        compatibleSdkVersion 5\r
+    }\r
+    buildTypes {\r
+        release {\r
+            proguardOpt {\r
+                proguardEnabled false\r
+                rulesFiles 'proguard-rules.pro'\r
+            }\r
+        }\r
+    }\r
+    \r
+}\r
+\r
+dependencies {\r
+    testImplementation 'junit:junit:4.13'\r
+}\r
+decc {\r
+    supportType = ['html','xml']\r
+}\r
+\r
+/*project.afterEvaluate {\r
+    project.getTasks().getByName("convertImage").dependsOn(project.getTasks().getByName("generateDebugBinSource"))\r
+    project.getTasks().getByName("assembleDebug").dependsOn(project.getTasks().getByName("convertImage"))\r
+}\r
+\r
+task convertImage(type: Exec) {\r
+    workingDir System.getenv("ImageTool")\r
+    buildDir = getBuildDir()\r
+    commandLine "python","images_tool.py","-p","file","-c","config.xml","-i","${buildDir}/intermediates/","-o","${buildDir}/intermediates/"\r
+}*/
\ No newline at end of file
diff --git a/jsapp/baidu_voiceassistant/entry/proguard-rules.pro b/jsapp/baidu_voiceassistant/entry/proguard-rules.pro
new file mode 100644 (file)
index 0000000..f7666e4
--- /dev/null
@@ -0,0 +1 @@
+# config module specific ProGuard rules here.
\ No newline at end of file
diff --git a/jsapp/baidu_voiceassistant/entry/src/main/config.json b/jsapp/baidu_voiceassistant/entry/src/main/config.json
new file mode 100644 (file)
index 0000000..7f5cea6
--- /dev/null
@@ -0,0 +1,38 @@
+{\r
+  "app": {\r
+    "bundleName": "com.vendor.voiceassistant",\r
+    "vendor": "vender",\r
+    "version": {\r
+      "code": 1000000,\r
+      "name": "1.0.0"\r
+    }\r
+  },\r
+  "deviceConfig": {},\r
+  "module": {\r
+    "deviceType": [\r
+      "liteWearable"\r
+    ],\r
+    "distro": {\r
+      "deliveryWithInstall": true,\r
+      "moduleName": "entry",\r
+      "moduleType": "entry"\r
+    },\r
+    "abilities": [\r
+      {\r
+        "name": "default",\r
+        "icon": "$media:icon",\r
+        "label": "$string:entry_MainAbility",\r
+        "type": "page"\r
+      }\r
+    ],\r
+    "js": [\r
+      {\r
+        "name": "default",\r
+        "pages": [\r
+          "pages/index/index",\r
+          "pages/first/first"\r
+        ]\r
+      }\r
+    ]\r
+  }\r
+}
\ No newline at end of file
diff --git a/jsapp/baidu_voiceassistant/entry/src/main/js/default/app.js b/jsapp/baidu_voiceassistant/entry/src/main/js/default/app.js
new file mode 100644 (file)
index 0000000..66c470d
--- /dev/null
@@ -0,0 +1,8 @@
+export default {
+    onCreate() {
+        console.info("Application onCreate");
+    },
+    onDestroy() {
+        console.info("Application onDestroy");
+    }
+};
\ No newline at end of file
diff --git a/jsapp/baidu_voiceassistant/entry/src/main/js/default/common/back.bmp b/jsapp/baidu_voiceassistant/entry/src/main/js/default/common/back.bmp
new file mode 100644 (file)
index 0000000..fa8ae0e
Binary files /dev/null and b/jsapp/baidu_voiceassistant/entry/src/main/js/default/common/back.bmp differ
diff --git a/jsapp/baidu_voiceassistant/entry/src/main/js/default/common/back_48.bmp b/jsapp/baidu_voiceassistant/entry/src/main/js/default/common/back_48.bmp
new file mode 100644 (file)
index 0000000..99f5aba
Binary files /dev/null and b/jsapp/baidu_voiceassistant/entry/src/main/js/default/common/back_48.bmp differ
diff --git a/jsapp/baidu_voiceassistant/entry/src/main/js/default/common/end.bmp b/jsapp/baidu_voiceassistant/entry/src/main/js/default/common/end.bmp
new file mode 100644 (file)
index 0000000..556c527
Binary files /dev/null and b/jsapp/baidu_voiceassistant/entry/src/main/js/default/common/end.bmp differ
diff --git a/jsapp/baidu_voiceassistant/entry/src/main/js/default/common/start.bmp b/jsapp/baidu_voiceassistant/entry/src/main/js/default/common/start.bmp
new file mode 100644 (file)
index 0000000..76f50c0
Binary files /dev/null and b/jsapp/baidu_voiceassistant/entry/src/main/js/default/common/start.bmp differ
diff --git a/jsapp/baidu_voiceassistant/entry/src/main/js/default/i18n/en-US.json b/jsapp/baidu_voiceassistant/entry/src/main/js/default/i18n/en-US.json
new file mode 100644 (file)
index 0000000..e63c70d
--- /dev/null
@@ -0,0 +1,6 @@
+{
+  "strings": {
+    "hello": "Hello",
+    "world": "World"
+  }
+}
\ No newline at end of file
diff --git a/jsapp/baidu_voiceassistant/entry/src/main/js/default/i18n/zh-CN.json b/jsapp/baidu_voiceassistant/entry/src/main/js/default/i18n/zh-CN.json
new file mode 100644 (file)
index 0000000..de6ee57
--- /dev/null
@@ -0,0 +1,6 @@
+{
+  "strings": {
+    "hello": "您好",
+    "world": "世界"
+  }
+}
\ No newline at end of file
diff --git a/jsapp/baidu_voiceassistant/entry/src/main/js/default/pages/first/first.css b/jsapp/baidu_voiceassistant/entry/src/main/js/default/pages/first/first.css
new file mode 100644 (file)
index 0000000..82d5ea3
--- /dev/null
@@ -0,0 +1,61 @@
+.container {\r
+    width: 100%;\r
+    height: 100%;\r
+    justify-content: center;\r
+    align-items: center;\r
+    background-color: white;\r
+    flex-direction:column;\r
+}\r
+\r
+.title{\r
+    top:30px;\r
+    color: black;\r
+    text-align: center;\r
+    width: 140px;\r
+    height: 40px;\r
+}\r
+\r
+.all{\r
+    width: 100%;\r
+    height: 100%;\r
+    background-color: white;\r
+}\r
+\r
+.back{\r
+    left: 205px;\r
+    top: 400px;\r
+    width: 48px;\r
+    height: 48px;\r
+    background-color: white;\r
+}\r
+\r
+.backimg{\r
+    width: 48px;\r
+    height: 48px;\r
+}\r
+.todo-wrapper-text{\r
+    top: 80px;\r
+    background-color: white;\r
+    color: black;\r
+}\r
+\r
+.todo-wrapper {\r
+    top: 90px;\r
+    width: 454px;\r
+    height: 320px;\r
+    background-color: white;\r
+}\r
+.todo-item {\r
+    width: 454px;\r
+    height: 318px;\r
+    flex-direction: column;\r
+    background-color: white;\r
+}\r
+.todo-title {\r
+    color: black;\r
+    width: 380px;\r
+    height: 290px;\r
+    text-align: left;\r
+    margin-left: 45px;\r
+    background-color: white;\r
+}\r
diff --git a/jsapp/baidu_voiceassistant/entry/src/main/js/default/pages/first/first.hml b/jsapp/baidu_voiceassistant/entry/src/main/js/default/pages/first/first.hml
new file mode 100644 (file)
index 0000000..7dbc72e
--- /dev/null
@@ -0,0 +1,12 @@
+<stack class="all">\r
+    <stack class="all">\r
+        <list class="todo-wrapper">\r
+            <list-item for="{{todolist1}}" class="todo-item">\r
+                <text class="todo-title">{{$item}} </text>\r
+            </list-item>\r
+        </list>\r
+    </stack>\r
+    <stack class="back">\r
+        <image class="backimg" src="/common/back_48.png" onclick="onclick"/>\r
+    </stack>\r
+</stack>
\ No newline at end of file
diff --git a/jsapp/baidu_voiceassistant/entry/src/main/js/default/pages/first/first.js b/jsapp/baidu_voiceassistant/entry/src/main/js/default/pages/first/first.js
new file mode 100644 (file)
index 0000000..4774074
--- /dev/null
@@ -0,0 +1,134 @@
+import router from '@system.router';\r
+import messageCenter from "@system.message";\r
+\r
+var receiverDataStr = ""\r
+var receiverindex = 0\r
+var iid = 0\r
+var receiver = {\r
+    onSuccess: function () {\r
+\r
+    },\r
+    onFailure: function () {\r
+\r
+    },\r
+    onReceiveMessage: function (data) {\r
+        console.info("onReceiveMessage: " + data)\r
+    }\r
+}\r
+\r
+/**\r
+  * Set the package name of the phone app\r
+  * peerPkgName: string\r
+  */\r
+function setPeerPkgName(peerPkgName) {\r
+    var successCallBack = function () {\r
+        console.info("setPeerPkgName success.");\r
+    };\r
+    var failCallBack = function () {\r
+        console.info("setPeerPkgName fail.");\r
+    };\r
+    messageCenter.setPackageName({\r
+        appName: peerPkgName,\r
+        complete: successCallBack,\r
+        fail: failCallBack\r
+    });\r
+}\r
+\r
+/**\r
+  * Deregister message listener\r
+  * receiver: onSuccess()\r
+  */\r
+function unregisterReceiver(receiver) {\r
+    messageCenter.unsubscribeMsg();\r
+}\r
+\r
+/**\r
+  * Register message listener\r
+  * receiver:object:onSuccess(),onFailure(),onReceiveMessage(message)\r
+  */\r
+function registerReceiver(receiver) {\r
+    var successCallBack = function (data) {\r
+        if (data) {\r
+            let tempdata = data.message\r
+            let datavalue = ""\r
+            console.info(" receive message : " + tempdata);\r
+            for (let index = 0; index < tempdata.length; index++) {\r
+                let temp = tempdata[index].trim()\r
+                if (temp.lenght != 0){\r
+                    datavalue+=temp\r
+                }\r
+            }\r
+            receiverDataStr = receiverDataStr + datavalue\r
+        } else {\r
+            console.info("registerReceiver data is null")\r
+        }\r
+    };\r
+    messageCenter.unsubscribeMsg();\r
+    messageCenter.subscribeMsg({\r
+        success: successCallBack,\r
+        fail: receiver.onFailure\r
+    });\r
+}\r
+\r
+export default {\r
+    data:{\r
+        peerPackageName: 'com.vendor.voiceassistant',\r
+        back:"返回",\r
+        dataMsg:"请等待...正在请求数据",\r
+        todolist1: []\r
+    },\r
+    onclick(index){\r
+        router.replace({\r
+            uri:"pages/index/index"\r
+        })\r
+    },\r
+    onInit() {\r
+        setPeerPkgName(this.peerPackageName)\r
+        registerReceiver(receiver)\r
+        iid = setInterval(this.updateDate,500)\r
+        console.info("Life Cycle onInit" + this);\r
+    },\r
+    updateDate(){\r
+        let length = Math.floor((Math.random()*10+1)/2)\r
+        let lengths = 0\r
+        if (length < 4) {\r
+            lengths = 3\r
+        } else {\r
+            lengths = length\r
+        }\r
+        receiverindex += lengths\r
+        let tempdatavalue = receiverDataStr.substr(0,receiverindex)\r
+        if (this.todolist1.length < 28) {\r
+            let conte = tempdatavalue\r
+            let size = conte.length\r
+            let max = 102\r
+            let code = 0\r
+            let arr = []\r
+            while (code <= size) {\r
+                arr.push(conte.slice(code, code += max))\r
+            }\r
+            for (let arrindex = 0; arrindex < arr.length; arrindex++){\r
+                let linesize = max - arr[arrindex].length\r
+                for (let lineindex = 0; lineindex < linesize; lineindex++){\r
+                    arr[arrindex] += "\xa0\xa0 "\r
+                }\r
+            }\r
+            this.todolist1 = arr\r
+        }\r
+    },\r
+    onCreate() {\r
+        console.info("Life Cycle onCreate" + this);\r
+    },\r
+    onShow() {\r
+        console.info("Life Cycle onShow" + this);\r
+    },\r
+    onHide() {\r
+        receiverDataStr = null\r
+        clearInterval(iid)\r
+        unregisterReceiver(receiver)\r
+        console.info("Life Cycle onHide" + this);\r
+    },\r
+    onDestroy() {\r
+        console.info("Life Cycle onDestroy" + this);\r
+    }\r
+}\r
diff --git a/jsapp/baidu_voiceassistant/entry/src/main/js/default/pages/index/index.css b/jsapp/baidu_voiceassistant/entry/src/main/js/default/pages/index/index.css
new file mode 100644 (file)
index 0000000..eef142d
--- /dev/null
@@ -0,0 +1,64 @@
+.stack {
+    width: 100%;
+    height: 100%;
+    background-color: white;
+}
+
+.container {
+
+    width: 100%;
+    height: 100%;
+    justify-content: center;
+    align-items: center;
+    background-color: white;
+    flex-direction:column;
+
+
+}
+.play_img {
+    width: 128px;
+    height: 128px;
+}
+.play_stack {
+    background-color: white;
+    width: 128px;
+    height: 128px;
+    left: 168px;
+    top: 168px;
+}
+
+.text_stack{
+    background-color: white;
+    width: 128px;
+    height: 128px;
+    left: 168px;
+    top: 300px;
+}
+
+.title {
+    width: 100%;
+    height: 40px;
+    top: 15px;
+    color: black;
+    text-align: center;
+
+}
+
+.todo-wrapper {
+    width: 454px;
+    height: 300px;
+    background-color: olivedrab;
+}
+.todo-item {
+    width: 454px;
+    height: 40px;
+    flex-direction: column;
+    background-color: coral;
+}
+.todo-title {
+    width: 454px;
+    height: 40px;
+    text-align: left;
+    margin-left: 45px;
+    background-color: aquamarine;
+}
diff --git a/jsapp/baidu_voiceassistant/entry/src/main/js/default/pages/index/index.hml b/jsapp/baidu_voiceassistant/entry/src/main/js/default/pages/index/index.hml
new file mode 100644 (file)
index 0000000..849ed0c
--- /dev/null
@@ -0,0 +1,13 @@
+<stack class="stack" on:swipe="onswipe">
+    <stack class="stack">
+        <stack class="play_stack" on:click="onClick()">
+            <image class="play_img" src="/common/start.png" if="{{ status != 1 }}"/>
+            <image class="play_img" src="/common/end.png" if="{{ status == 1 }}"/>
+        </stack>
+        <stack class="text_stack">
+            <text class="title" if="{{ status != 1 }}">点击结束</text>
+            <text class="title" if="{{ status == 1 }}">点击开始</text>
+        </stack>
+    </stack>
+</stack>
+
diff --git a/jsapp/baidu_voiceassistant/entry/src/main/js/default/pages/index/index.js b/jsapp/baidu_voiceassistant/entry/src/main/js/default/pages/index/index.js
new file mode 100644 (file)
index 0000000..70f406e
--- /dev/null
@@ -0,0 +1,78 @@
+// @ts-nocheck
+import app from '@system.app';
+import router from '@system.router';
+import audiocapturer from '@system.audiocapturer';
+import messageCenter from '@system.message';
+
+function sendSuccess(){
+
+}
+
+function snedFailure(){
+
+}
+
+export default {
+    data: {
+        peerPackageName:"com.vendor.voiceassistant",
+        status: 1,
+    },
+    onClick() {
+        console.info("onClick " + this.status)
+        switch (this.status) {
+            case 1: //开始录音
+                console.info("start recording " + this.status);
+                this.status = 2
+                this.buttonValue = "结束录音"
+                // 调用媒体开始录音api
+                audiocapturer.Start()
+                break
+            case 2: //结束录音
+                this.status = -1
+                // 调用媒体结束录音api
+                audiocapturer.Stop()
+
+                messageCenter.sendMsg({
+                    bundleName: this.peerPackageName,
+                    message: "AI",
+                    deviceId: "1",
+                    cmdId: 1,
+                    success: sendSuccess,
+                    fail: snedFailure,
+                })
+
+                router.replace({
+                    uri: "pages/first/first",
+                })
+                break
+            default:
+                console.info("check defalut click  ");
+                break
+        }
+    },
+
+    onInit() {
+        console.info("Life Cycle onInit" + this);
+    },
+    onCreate() {
+        console.info("Life Cycle onCreate" + this);
+    },
+    onReady() {
+        console.info("Life Cycle onReady" + this);
+    },
+    onShow() {
+        console.info("Life Cycle onShow" + this);
+    },
+    onHide() {
+        audiocapturer.Stop()
+        console.info("Life Cycle onHide" + this);
+    },
+    onDestroy() {
+        console.info("Life Cycle onDestroy" + this);
+    },
+    onswipe(e){
+        if (e.direction == "right") {
+            app.terminate()
+        }
+    }
+}
diff --git a/jsapp/baidu_voiceassistant/entry/src/main/js/default/res/icon_microphone_128.png b/jsapp/baidu_voiceassistant/entry/src/main/js/default/res/icon_microphone_128.png
new file mode 100644 (file)
index 0000000..a963839
Binary files /dev/null and b/jsapp/baidu_voiceassistant/entry/src/main/js/default/res/icon_microphone_128.png differ
diff --git a/jsapp/baidu_voiceassistant/entry/src/main/js/default/res/icon_microphone_64.png b/jsapp/baidu_voiceassistant/entry/src/main/js/default/res/icon_microphone_64.png
new file mode 100644 (file)
index 0000000..068323a
Binary files /dev/null and b/jsapp/baidu_voiceassistant/entry/src/main/js/default/res/icon_microphone_64.png differ
diff --git a/jsapp/baidu_voiceassistant/entry/src/main/js/default/res/icon_old.png b/jsapp/baidu_voiceassistant/entry/src/main/js/default/res/icon_old.png
new file mode 100644 (file)
index 0000000..ce307a8
Binary files /dev/null and b/jsapp/baidu_voiceassistant/entry/src/main/js/default/res/icon_old.png differ
diff --git a/jsapp/baidu_voiceassistant/entry/src/main/js/default/res/icon_small.png b/jsapp/baidu_voiceassistant/entry/src/main/js/default/res/icon_small.png
new file mode 100644 (file)
index 0000000..0ed5fea
Binary files /dev/null and b/jsapp/baidu_voiceassistant/entry/src/main/js/default/res/icon_small.png differ
diff --git a/jsapp/baidu_voiceassistant/entry/src/main/resources/base/element/string.json b/jsapp/baidu_voiceassistant/entry/src/main/resources/base/element/string.json
new file mode 100644 (file)
index 0000000..2e7e6f0
--- /dev/null
@@ -0,0 +1,8 @@
+{\r
+  "string": [\r
+    {\r
+      "name": "entry_MainAbility",\r
+      "value": "小度语音"\r
+    }\r
+  ]\r
+}\r
diff --git a/jsapp/baidu_voiceassistant/entry/src/main/resources/base/media/icon.png b/jsapp/baidu_voiceassistant/entry/src/main/resources/base/media/icon.png
new file mode 100644 (file)
index 0000000..ce307a8
Binary files /dev/null and b/jsapp/baidu_voiceassistant/entry/src/main/resources/base/media/icon.png differ
diff --git a/jsapp/baidu_voiceassistant/entry/src/main/resources/base/media/icon_small.png b/jsapp/baidu_voiceassistant/entry/src/main/resources/base/media/icon_small.png
new file mode 100644 (file)
index 0000000..0ed5fea
Binary files /dev/null and b/jsapp/baidu_voiceassistant/entry/src/main/resources/base/media/icon_small.png differ
diff --git a/jsapp/baidu_voiceassistant/gradle.properties b/jsapp/baidu_voiceassistant/gradle.properties
new file mode 100644 (file)
index 0000000..3966a04
--- /dev/null
@@ -0,0 +1,13 @@
+# Project-wide Gradle settings.\r
+# IDE (e.g. DevEco Studio) users:\r
+# Gradle settings configured through the IDE *will override*\r
+# any settings specified in this file.\r
+# For more details on how to configure your build environment visit\r
+# http://www.gradle.org/docs/current/userguide/build_environment.html\r
+# Specifies the JVM arguments used for the daemon process.\r
+# The setting is particularly useful for tweaking memory settings.\r
+# If the Chinese output is garbled, please configure the following parameter.\r
+# This function is enabled by default when the DevEco Studio builds the hap/app,if you need disable gradle parallel,you should set org.gradle.parallel false.\r
+# more information see https://docs.gradle.org/current/userguide/performance.html\r
+# org.gradle.parallel=false\r
+# org.gradle.jvmargs=-Dfile.encoding=GBK
\ No newline at end of file
diff --git a/jsapp/baidu_voiceassistant/gradle/wrapper/gradle-wrapper.jar b/jsapp/baidu_voiceassistant/gradle/wrapper/gradle-wrapper.jar
new file mode 100644 (file)
index 0000000..490fda8
Binary files /dev/null and b/jsapp/baidu_voiceassistant/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/jsapp/baidu_voiceassistant/gradle/wrapper/gradle-wrapper.properties b/jsapp/baidu_voiceassistant/gradle/wrapper/gradle-wrapper.properties
new file mode 100644 (file)
index 0000000..f59159e
--- /dev/null
@@ -0,0 +1,5 @@
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+distributionUrl=https\://repo.huaweicloud.com/gradle/gradle-6.3-bin.zip
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
diff --git a/jsapp/baidu_voiceassistant/gradlew b/jsapp/baidu_voiceassistant/gradlew
new file mode 100644 (file)
index 0000000..2fe81a7
--- /dev/null
@@ -0,0 +1,183 @@
+#!/usr/bin/env sh
+
+#
+# Copyright 2015 the original author or authors.
+#
+# 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
+#
+#      https://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.
+#
+
+##############################################################################
+##
+##  Gradle start up script for UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+    ls=`ls -ld "$PRG"`
+    link=`expr "$ls" : '.*-> \(.*\)$'`
+    if expr "$link" : '/.*' > /dev/null; then
+        PRG="$link"
+    else
+        PRG=`dirname "$PRG"`"/$link"
+    fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn () {
+    echo "$*"
+}
+
+die () {
+    echo
+    echo "$*"
+    echo
+    exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+  CYGWIN* )
+    cygwin=true
+    ;;
+  Darwin* )
+    darwin=true
+    ;;
+  MINGW* )
+    msys=true
+    ;;
+  NONSTOP* )
+    nonstop=true
+    ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+        # IBM's JDK on AIX uses strange locations for the executables
+        JAVACMD="$JAVA_HOME/jre/sh/java"
+    else
+        JAVACMD="$JAVA_HOME/bin/java"
+    fi
+    if [ ! -x "$JAVACMD" ] ; then
+        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+    fi
+else
+    JAVACMD="java"
+    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+    MAX_FD_LIMIT=`ulimit -H -n`
+    if [ $? -eq 0 ] ; then
+        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+            MAX_FD="$MAX_FD_LIMIT"
+        fi
+        ulimit -n $MAX_FD
+        if [ $? -ne 0 ] ; then
+            warn "Could not set maximum file descriptor limit: $MAX_FD"
+        fi
+    else
+        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+    fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin or MSYS, switch paths to Windows format before running java
+if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
+    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+    JAVACMD=`cygpath --unix "$JAVACMD"`
+
+    # We build the pattern for arguments to be converted via cygpath
+    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+    SEP=""
+    for dir in $ROOTDIRSRAW ; do
+        ROOTDIRS="$ROOTDIRS$SEP$dir"
+        SEP="|"
+    done
+    OURCYGPATTERN="(^($ROOTDIRS))"
+    # Add a user-defined pattern to the cygpath arguments
+    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+    fi
+    # Now convert the arguments - kludge to limit ourselves to /bin/sh
+    i=0
+    for arg in "$@" ; do
+        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
+
+        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
+            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+        else
+            eval `echo args$i`="\"$arg\""
+        fi
+        i=`expr $i + 1`
+    done
+    case $i in
+        0) set -- ;;
+        1) set -- "$args0" ;;
+        2) set -- "$args0" "$args1" ;;
+        3) set -- "$args0" "$args1" "$args2" ;;
+        4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+        5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+        6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+        7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+        8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+        9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+    esac
+fi
+
+# Escape application args
+save () {
+    for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+    echo " "
+}
+APP_ARGS=`save "$@"`
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+
+exec "$JAVACMD" "$@"
diff --git a/jsapp/baidu_voiceassistant/gradlew.bat b/jsapp/baidu_voiceassistant/gradlew.bat
new file mode 100644 (file)
index 0000000..62bd9b9
--- /dev/null
@@ -0,0 +1,103 @@
+@rem
+@rem Copyright 2015 the original author or authors.
+@rem
+@rem Licensed under the Apache License, Version 2.0 (the "License");
+@rem you may not use this file except in compliance with the License.
+@rem You may obtain a copy of the License at
+@rem
+@rem      https://www.apache.org/licenses/LICENSE-2.0
+@rem
+@rem Unless required by applicable law or agreed to in writing, software
+@rem distributed under the License is distributed on an "AS IS" BASIS,
+@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+@rem See the License for the specific language governing permissions and
+@rem limitations under the License.
+@rem
+
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem  Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Resolve any "." and ".." in APP_HOME to make it shorter.
+for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windows variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/jsapp/baidu_voiceassistant/settings.gradle b/jsapp/baidu_voiceassistant/settings.gradle
new file mode 100644 (file)
index 0000000..28d595f
--- /dev/null
@@ -0,0 +1 @@
+include ':entry'\r
diff --git a/patch_0521_to_0626.txt b/patch_0521_to_0626.txt
new file mode 100644 (file)
index 0000000..027a41a
--- /dev/null
@@ -0,0 +1,90 @@
+【补丁名称】patch_0521_to_0626\r
+【基础版本】b602 + 0521\r
+【修复问题】\r
+BT合入内容\r
+    1、一键双连合入,使用约束参考《一键双连.txt》\r
+    2、解决【手表发起hfp连接场景,手表发起PBAP连接失败】问题\r
+    3、解决去使能时,PBAP状态复位的问题\r
+    4、解决上电后由手表发起首次a2dp snk连接音乐无声问题\r
+    5、解决MMI扫描内存不足问题\r
+    6、解决pbap连接事件上报中的踩内存问题\r
+    7、解决连接拒绝过程中HCI野指针访问问题\r
+    8、A核增加消息流控\r
+    9、IPC消息增加retry机制\r
+    10、解决OTA升级后nv数据读写问题\r
+    12、合入ipc锁中断的优化,优化panic54问题\r
+    13、合入B核systick同步机制,喂狗机制,以及喂狗优先级,优化狗超时问题\r
+PLT合入内容\r
+    1、yaffs支持分区格式化\r
+    2、区分dma投票,i2c、spi、uart完善dma异常分支处理流程\r
+    3、修改uapi calendar timestampe接口\r
+    4、调整recovery链接部署、时钟提频、xip分频\r
+    5、解决pmu复位导致的底电流高\r
+    6、新增auto_ota组件(详见auto_ota_readme.txt)\r
+    7、msg_center支持gatt通道(默认分包大小500字节)\r
+GUI合入内容\r
+    1、支持足球菜单界面(包含明暗效果),当前均为默认图标(存放在附件res目录中)。如何配置应用的六边形图标:       \r
+      (1)native应用:application\wearable\nativeapp\nativeui\applist\include\ApplistModel.h文件,AppItem结构体的iconHexagon参数。\r
+      (2)JS应用:bigIconPath属性\r
+    2、修复UICrossView相关问题:\r
+      (1)开机时仅一个卡片,不能进入表盘\r
+      (2)UIMenuItem截图失败\r
+      (3)支持设置高斯模糊程度\r
+    3、表盘预览界面支持滚筒样式\r
+    4、优化UIRollerView缩放及惯性问题, 新增OnScrollListener\r
+    5、内存优化,解决surface指针异步操作及内存未对齐等问题,并支持内存泄漏检测\r
+    6、修复一级视频页面滑动不流畅问题\r
+    7、修复coverflow惯性概率失效问题\r
+    8、修复蜂窝动效细节问题\r
+    9、支持容器批量删除子控件\r
+    10、支持长文本来回滚动动效\r
+    11、Font Global 支持控件类型更改\r
+    12、新增 “listext + menu item” 用例\r
+    13、ArcLabel支持浮点运算,解决走秒和文字抖动问题\r
+    14、RawEvent增加Rotate\r
+    15、支持获取KeyActListener\r
+    16、 SliceTransition增加判空和动画打断处理。\r
+    17、SetArcTextAngle支持浮点。\r
+    18、 足球效果优化 。\r
+    19、ChangeSlice防止相同页面跳转。\r
+    20、解决滚动文字抖动闪烁,VAU报错height=0。\r
+    21、解决DialDigitalImgView未刷新以及小数精度问题。\r
+GPU合入内容\r
+    1、矢量绘制时,贝塞尔阈值分场景配置,地图场景配置为1.0, 其他场景配置为0.125\r
+AUDIO&MEDIA合入内容\r
+    1、优化反复快速起播音乐的sample代码逻辑,保证音乐的退出接口是同步的\r
+    2、解决通话和录音时,CODEC上电导致的pop音问题\r
+    3、时序调整将load aef镜像放到ao open的最后执行\r
+    4、增加中断发送失败计数和重发机制\r
+    5、新增设置以及获取3A算法参数的接口\r
+    6、修改小度语音的频率问题,以及跟sink音乐的策略\r
+    7、修改视频播放器,默认为同步模式\r
+OHOS合入内容\r
+    1、解决组件间消息内存泄露问题\r
+    2、支持list文本高度自适应\r
+    3、新增输入法编辑框组件\r
+    4、新增device JSI,支持JS应用获取屏幕信息(分辨率、形状等)\r
+    5、支持JS应用中英文切换\r
+    6、百度矢量地图问题修复\r
+    7、小度语音示例修改(代码参考jsapp)\r
+NATIVE-JS sample合入内容\r
+    1、解决组件间消息内存泄露问题(删除SAMGR_AllocRequestMsg调用)\r
+    2、支持足球菜单界面(包含明暗效果),当前均为默认图标。如何配置应用的六边形图标:       \r
+      (1)native应用:application\wearable\nativeapp\nativeui\applist\include\ApplistModel.h文件,AppItem结构体的iconHexagon参数。\r
+      (2)JS应用:bigIconPath属性\r
+    3、表盘选择页面支持滚筒效果\r
+    4、增加gatts多回调注册\r
+    5、增加ios一键双连示例\r
+工具合入内容(工具归档tools目录):\r
+    1、DebugKist增加3A算法参数调试\r
+\r
+【修改影响】NA\r
+【使用方法】\r
+    1、合入0521补丁\r
+    2、合入0626补丁\r
+【自测情况】\r
+    自验证范围:\r
+       全功能冒烟\r
+    自验证target:\r
+       Native-js、target3 rc版本\r
+【是否合入版本】根据测试结果确定\r