update patch_602_base_to_0521 184/1 184/head 209/target/1
authorSnickerSun <snickersun@163.com>
Mon, 27 May 2024 01:45:27 +0000 (09:45 +0800)
committerSnickerSun <snickersun@163.com>
Mon, 27 May 2024 01:45:27 +0000 (09:45 +0800)
400 files changed:
0425.patch.txt [moved from SDK_1.1.10.602_0425patch.txt with 100% similarity]
SDK_1.1.10.602.txt [new file with mode: 0644]
code/sdk/application/brandy/brandy_standard/thread_init.c
code/sdk/application/brandy/brandy_standard/thread_pri_init.c
code/sdk/application/wearable/alipay/service/CMakeLists.txt
code/sdk/application/wearable/alipay/service/alipay_bluetooth.c
code/sdk/application/wearable/alipay/service/alipay_feature.h
code/sdk/application/wearable/nativeabilityfwk/CMakeLists.txt
code/sdk/application/wearable/nativeabilityfwk/include/TransitionType.h
code/sdk/application/wearable/nativeabilityfwk/src/SliceTransition.cpp
code/sdk/application/wearable/nativeabilityfwk/src/transition/BackToHexagonsTransition.cpp [new file with mode: 0644]
code/sdk/application/wearable/nativeabilityfwk/src/transition/BackToHexagonsTransition.h [new file with mode: 0644]
code/sdk/application/wearable/nativeabilityfwk/src/transition/HexagonsTransition.cpp
code/sdk/application/wearable/nativeabilityfwk/src/transition/HexagonsTransition.h
code/sdk/application/wearable/nativeapp/CMakeLists.txt
code/sdk/application/wearable/nativeapp/nativeui/bluetooth/src/BluetoothModel.cpp
code/sdk/application/wearable/nativeapp/nativeui/callerlog/src/CallerLogModel.cpp
code/sdk/application/wearable/nativeapp/nativeui/key/src/KeyInputListener.cpp
code/sdk/application/wearable/nativeapp/nativeui/main/include/VolumeSettingPresenter.h
code/sdk/application/wearable/nativeapp/nativeui/main/include/VolumeSettingView.h
code/sdk/application/wearable/nativeapp/nativeui/main/src/VolumeSettingPresenter.cpp
code/sdk/application/wearable/nativeapp/nativeui/main/src/VolumeSettingView.cpp
code/sdk/application/wearable/nativeapp/nativeui/makephone/include/MainCallingPresenter.h
code/sdk/application/wearable/nativeapp/nativeui/makephone/src/MainCallingPresenter.cpp
code/sdk/application/wearable/nativeapp/nativeui/phoneservice/src/PhoneService.cpp
code/sdk/application/wearable/nativeapp/nativeui/player/src/PlayersPresenter.cpp
code/sdk/application/wearable/nativeapp/nativeui/set_dial/src/SetDialModel.cpp
code/sdk/application/wearable/nativeapp/nativeui/settings/src/SettingPresenter.cpp
code/sdk/application/wearable/nativeapp/nativeui/uisample/uitest/framework/src/ui_test_group.cpp
code/sdk/application/wearable/ohos_deps/wearable_log.h
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.h
code/sdk/application/wearable/service/msg_center/include/msg_center_msg.h [new file with mode: 0644]
code/sdk/application/wearable/service/msg_center/include/msg_center_protocol.h
code/sdk/application/wearable/service/msg_center/include/notify/makephone_notification.h
code/sdk/application/wearable/service/msg_center/include/vendor_app/baidu_app.h
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/notify/makephone_notification.cpp
code/sdk/application/wearable/service/msg_center/src/vendor_app/baidu/baidu_app.cpp
code/sdk/application/wearable/service/power_manager/CMakeLists.txt
code/sdk/application/wearable/service/power_manager/include/power_display_service.h
code/sdk/application/wearable/service/power_manager/src/actions/display_action.c
code/sdk/application/wstp/at_service/app/app_at_process.c
code/sdk/build/cmake/build_component.cmake
code/sdk/build/config/target_config/brandy/config.py
code/sdk/build/config/target_config/brandy/nv_bin_cfg/mk_nv_bin_cfg_eng.json [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/nv_bin_cfg/mk_nv_bin_cfg_user.json [new file with mode: 0644]
code/sdk/build/script/cmake_builder.py
code/sdk/build/script/parse_tool/parse_elf.py
code/sdk/build/script/sdk_generator/sdk_generator.py
code/sdk/build/script/utils/build_utils.py
code/sdk/drivers/chips/brandy/porting/button/CMakeLists.txt
code/sdk/drivers/chips/brandy/porting/rtc_unified/CMakeLists.txt
code/sdk/drivers/chips/brandy/porting/security/efuse/CMakeLists.txt
code/sdk/drivers/drivers/driver/adc/CMakeLists.txt
code/sdk/drivers/drivers/driver/calendar/CMakeLists.txt
code/sdk/drivers/drivers/driver/efuse/CMakeLists.txt
code/sdk/drivers/drivers/driver/rtc_unified/CMakeLists.txt
code/sdk/drivers/drivers/driver/touch/touch_screen_drv.c
code/sdk/drivers/drivers/hal/ipc/hal_ipc_old/hal_ipc.c
code/sdk/drivers/drivers/hal/reboot/hal_reboot.c
code/sdk/drivers/drivers/hal/reboot/hal_reboot.h
code/sdk/include/middleware/services/bts/br/bts_br_gap.h
code/sdk/include/middleware/services/bts/common/bts_feature.h [new file with mode: 0644]
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/appsys_bms_cmd.cpp.xml
code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/async_task_manager.cpp.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/btsv_l2cap_chan.c.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/dft_impl.cpp.xml
code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/dfx_assist.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/gt_bundle_installer.cpp.xml
code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/gt_bundle_manager_service.cpp.xml
code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/image_cache_manager.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_debugger_config.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/kaleidoscope_utils.cpp.xml [new file with mode: 0644]
code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/lazy_load_manager.cpp.xml
code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/lite_m_gfx_engine.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/locale_util.cpp.xml
code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/map_svg_parser.cpp.xml [new file with mode: 0644]
code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/mem_util.cpp.xml
code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/number_parser.cpp.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_gatt.c.xml
code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/stack_gap_if.c.xml
code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/ui_coverflow_view.cpp.xml [new file with mode: 0644]
code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/ui_hexagons_list.cpp.xml [new file with mode: 0644]
code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/ui_icosahedron_view.cpp.xml [new file with mode: 0644]
code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/ui_kaleidoscope_view.cpp.xml [new file with mode: 0644]
code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/ui_map_view.cpp.xml [new file with mode: 0644]
code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/ui_roller_view.cpp.xml [new file with mode: 0644]
code/sdk/interim_binary/brandy/audio/build_hso_cfg/hso_database/xml/base/dsp_core/core_msg.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/att_gatt.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.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_gap.c.xml
code/sdk/interim_binary/brandy/bt/build_hso_cfg/hso_database/xml/base/bt_core/bt_main.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_sleep.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_comm.c.xml
code/sdk/interim_binary/brandy/bt/build_hso_cfg/hso_database/xml/base/bt_core/gap_hlp_le.c.xml
code/sdk/interim_binary/brandy/bt/build_hso_cfg/hso_database/xml/base/bt_core/hci_core_ram.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_ev_le.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/hci_link_le.c.xml [new file with mode: 0644]
code/sdk/interim_binary/brandy/bt/build_hso_cfg/hso_database/xml/base/bt_core/ipc_irq.c.xml [new file with mode: 0644]
code/sdk/interim_binary/brandy/bt/build_hso_cfg/hso_database/xml/base/bt_core/llc_bis_hci_ram.c.xml
code/sdk/interim_binary/brandy/bt/build_hso_cfg/hso_database/xml/base/bt_core/lld_per_ram.c.xml
code/sdk/interim_binary/brandy/bt/build_hso_cfg/hso_database/xml/base/bt_core/log_oml_exception.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/patch_btdfx.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/patch_ea.c.xml
code/sdk/interim_binary/brandy/bt/build_hso_cfg/hso_database/xml/base/bt_core/patch_ld_acl.c.xml
code/sdk/interim_binary/brandy/bt/build_hso_cfg/hso_database/xml/base/bt_core/patch_llc.c.xml
code/sdk/interim_binary/brandy/bt/build_hso_cfg/hso_database/xml/base/bt_core/patch_llc_bis_util.c.xml
code/sdk/interim_binary/brandy/bt/build_hso_cfg/hso_database/xml/base/bt_core/patch_llc_llcp.c.xml [new file with mode: 0644]
code/sdk/interim_binary/brandy/bt/build_hso_cfg/hso_database/xml/base/bt_core/patch_lld_bis.c.xml
code/sdk/interim_binary/brandy/bt/build_hso_cfg/hso_database/xml/base/bt_core/patch_lld_bis_evt.c.xml
code/sdk/interim_binary/brandy/bt/build_hso_cfg/hso_database/xml/base/bt_core/patch_lld_bis_pdu.c.xml
code/sdk/interim_binary/brandy/bt/build_hso_cfg/hso_database/xml/base/bt_core/patch_lld_evt.c.xml
code/sdk/interim_binary/brandy/bt/build_hso_cfg/hso_database/xml/base/bt_core/patch_lld_pdu.c.xml [new file with mode: 0644]
code/sdk/interim_binary/brandy/bt/build_hso_cfg/hso_database/xml/base/bt_core/patch_llm_util.c.xml
code/sdk/interim_binary/brandy/bt/build_hso_cfg/hso_database/xml/base/bt_core/sdk_gap_conn_management.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_hfp.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/smp_ui.c.xml [new file with mode: 0644]
code/sdk/interim_binary/brandy/bt/build_hso_cfg/hso_database/xml/base/bt_core/tladapter.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/middleware/chips/brandy/dfx/CMakeLists.txt
code/sdk/middleware/chips/brandy/dfx/dfx_system_init.c
code/sdk/middleware/chips/brandy/dfx/include/dfx_adapt_layer.h
code/sdk/middleware/chips/brandy/dfx/include/log_def_app.h
code/sdk/middleware/chips/brandy/dfx/include/log_def_bth.h
code/sdk/middleware/chips/brandy/dfx/include/log_def_gui.h
code/sdk/middleware/chips/brandy/dfx/include/log_def_pf.h
code/sdk/middleware/chips/brandy/dfx/include/zdiag_config.h
code/sdk/middleware/chips/brandy/dfx/mon_log_output.c [new file with mode: 0644]
code/sdk/middleware/chips/brandy/dfx/mon_log_output.h [new file with mode: 0644]
code/sdk/middleware/chips/brandy/dfx/zdiag_adapt_sdt.c
code/sdk/middleware/chips/brandy/exception/CMakeLists.txt
code/sdk/middleware/chips/brandy/exception/chip_exception_utils.c [new file with mode: 0644]
code/sdk/middleware/chips/brandy/exception/chip_exception_utils.h [new file with mode: 0644]
code/sdk/middleware/chips/brandy/exception/chip_system_time.c [new file with mode: 0644]
code/sdk/middleware/chips/brandy/exception/chip_system_time.h [new file with mode: 0644]
code/sdk/middleware/chips/brandy/exception/exception_dump.c [new file with mode: 0644]
code/sdk/middleware/chips/brandy/exception/exception_dump.h [new file with mode: 0644]
code/sdk/middleware/chips/brandy/exception/exception_riscv.c
code/sdk/middleware/chips/brandy/nv/nv_config/cfg/eng/acore/app.json [new file with mode: 0644]
code/sdk/middleware/chips/brandy/nv/nv_config/cfg/user/acore/app.json [new file with mode: 0644]
code/sdk/middleware/chips/brandy/pm/include/pm_definition.h
code/sdk/middleware/chips/brandy/pm/pm_adapt/pm_core.c
code/sdk/middleware/chips/brandy/pm/service/pm_sleep.c
code/sdk/middleware/chips/brandy/update/common/upg_common_porting.c
code/sdk/middleware/services/gpu/drv/dpu/hal/dpu_hal.c
code/sdk/middleware/services/gpu/drv/dpu/intf/drv_dpu_intf.c
code/sdk/middleware/services/gpu/drv/dpu/isr/dpu_isr.c
code/sdk/middleware/services/gpu/drv/dpu/isr/dpu_isr.h
code/sdk/middleware/services/gpu/drv/jpeg/dfx/jpeg_dfx.h
code/sdk/middleware/services/gpu/drv/jpeg/intf/drv_jpeg_intf.c
code/sdk/middleware/services/gpu/drv/jpeg/ioctl/jpeg_ioctl.c
code/sdk/middleware/services/gpu/drv/jpeg/isr/jpeg_isr.c
code/sdk/middleware/services/gpu/drv/jpeg/isr/jpeg_isr.h
code/sdk/middleware/services/gpu/drv/vau/dfx/vau_dfx.c
code/sdk/middleware/services/gpu/drv/vau/hal/vau_hal_apb.c
code/sdk/middleware/services/gpu/drv/vau/intf/drv_vau_intf.c
code/sdk/middleware/services/gpu/drv/vau/list/vau_list.c
code/sdk/middleware/services/gui/hal/display/CMakeLists.txt
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/input/CMakeLists.txt
code/sdk/middleware/services/gui/uikit/CMakeLists.txt
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/common/graphic_utils.h [new file with mode: 0644]
code/sdk/middleware/services/gui/uikit/proprietary/include/common/image_cache_manager.h
code/sdk/middleware/services/gui/uikit/proprietary/include/components/kaleidoscope_utils.h
code/sdk/middleware/services/gui/uikit/proprietary/include/components/ui_coverflow_view.h
code/sdk/middleware/services/gui/uikit/proprietary/include/components/ui_hexagons_list.h
code/sdk/middleware/services/gui/uikit/proprietary/include/components/ui_icosahedron_view.h [new file with mode: 0644]
code/sdk/middleware/services/gui/uikit/proprietary/include/components/ui_kaleidoscope_view.h
code/sdk/middleware/services/gui/uikit/proprietary/include/components/ui_list_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_map_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 [new file with mode: 0644]
code/sdk/middleware/services/gui/uikit/proprietary/include/components/ui_sweep_clock.h
code/sdk/middleware/services/gui/uikit/proprietary/include/service/graphic_service.h
code/sdk/middleware/services/gui/uikit/proprietary/include/service/graphic_service_wrapper.h
code/sdk/middleware/services/gui/uikit/proprietary/src/ui/frameworks/common/ui_barcode.cpp
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_keyboard_button.cpp
code/sdk/middleware/services/gui/uikit/proprietary/src/ui/frameworks/components/ui_list_ext.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/components/ui_pinyin_candidate.cpp [new file with mode: 0644]
code/sdk/middleware/services/gui/uikit/proprietary/src/ui/frameworks/components/ui_soft_keyboard.cpp
code/sdk/middleware/services/gui/uikit/proprietary/src/ui/frameworks/components/ui_sweep_clock.cpp
code/sdk/middleware/services/gui/uikit/proprietary/src/ui/frameworks/components/ui_text_preview_box.cpp
code/sdk/middleware/services/gui/uikit/proprietary/src/ui/frameworks/components_ext/hor_swipe_view.h
code/sdk/middleware/services/gui/uikit/proprietary/src/ui/frameworks/components_ext/map_svg_parser.h
code/sdk/middleware/services/gui/uikit/proprietary/src/ui/frameworks/core/input_method_manager.cpp
code/sdk/middleware/services/gui/uikit/proprietary/src/ui/frameworks/dfx/dfx_cmd.cpp
code/sdk/middleware/services/gui/uikit/proprietary/src/ui/frameworks/dfx/dfx_record.cpp
code/sdk/middleware/services/gui/uikit/proprietary/src/ui/frameworks/swipe_effect/cube_effect.cpp [new file with mode: 0644]
code/sdk/middleware/services/gui/uikit/proprietary/src/ui/frameworks/swipe_effect/cube_effect.h [new file with mode: 0644]
code/sdk/middleware/services/gui/uikit/proprietary/src/ui/innerkits/input_method/ui_input_method.h
code/sdk/middleware/services/gui/uikit/proprietary/src/ui/innerkits/input_method/ui_keyboard_codetable.h
code/sdk/middleware/services/gui/uikit/proprietary/src/ui/innerkits/input_method/ui_pinyin_candidate.h [new file with mode: 0644]
code/sdk/middleware/services/gui/uikit/proprietary/src/ui/innerkits/input_method/ui_soft_keyboard.h
code/sdk/middleware/services/gui/uikit/proprietary/src/ui/innerkits/input_method/ui_text_preview_box.h
code/sdk/middleware/services/gui/uikit/proprietary/src/utils/frameworks/hals/gralloc_engines.cpp
code/sdk/middleware/services/gui/uikit/proprietary/src/utils/frameworks/mem_custom.cpp
code/sdk/middleware/services/gui/uikit/proprietary/src/utils/innerkits/hals/gralloc_engines.h
code/sdk/middleware/services/gui/uikit/res/pymb.bin [new file with mode: 0644]
code/sdk/middleware/services/gui/uikit/sample/CMakeLists.txt
code/sdk/middleware/services/gui/uikit/sample/uitest/components/ui_test_clock_dial/ui_test_clock_dial.cpp
code/sdk/middleware/services/gui/uikit/sample/uitest/components/ui_test_clock_dial/ui_test_clock_dial.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_cross/ui_test_cross.h
code/sdk/middleware/services/gui/uikit/sample/uitest/components/ui_test_cube_rotate/cube_rotate_view.h
code/sdk/middleware/services/gui/uikit/sample/uitest/components/ui_test_svg/ui_test_svg.h
code/sdk/middleware/services/gui/uikit/ui/frameworks/components/ui_chart.cpp
code/sdk/middleware/services/gui/uikit/ui/frameworks/components/ui_image_view.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.cpp
code/sdk/middleware/services/gui/uikit/ui/interfaces/kits/components/ui_image_view.h
code/sdk/middleware/services/gui/uikit/ui/interfaces/kits/components/ui_swipe_view.h
code/sdk/middleware/services/gui/uikit/ui/interfaces/kits/components/ui_view.h
code/sdk/middleware/services/media/foundation/audiomanager/frameworks/audiostream/src/cpp/audio_stream_out.cpp
code/sdk/middleware/services/media/foundation/player/frameworks/player_control/player/liteplayer.cpp
code/sdk/middleware/services/media/foundation/player/frameworks/player_control/player/liteplayer.h
code/sdk/middleware/services/media/foundation/player/frameworks/player_impl.cpp
code/sdk/middleware/services/media/foundation/player/interfaces/kits/player_lite/js/builtin/include/audio_module.h
code/sdk/middleware/services/media/foundation/player/interfaces/kits/player_lite/js/builtin/include/audio_player.h
code/sdk/middleware/services/media/foundation/player/interfaces/kits/player_lite/js/builtin/src/audio_module.cpp
code/sdk/middleware/services/media/foundation/player/interfaces/kits/player_lite/js/builtin/src/audio_player.cpp
code/sdk/middleware/services/media/foundation/sample/wrapper/video_play_wrapper.cpp
code/sdk/middleware/services/media/foundation/sample/wrapper/video_player_sample_wrapper.cpp
code/sdk/middleware/services/media/hal/format/plugins/raw_demuxer/raw_format.c
code/sdk/middleware/services/media/hal/format/plugins/raw_demuxer/sbc_demuxer.c
code/sdk/middleware/services/media/hal/format/plugins/raw_demuxer/silk_demuxer.c
code/sdk/middleware/utils/dfx/CMakeLists.txt
code/sdk/middleware/utils/dfx/dfx_reboot/cpu_utils/private/cpu_utils.c
code/sdk/middleware/utils/dfx/dfx_reboot/reboot/shared/non_os_reboot.h
code/sdk/middleware/utils/dfx/diag/diag_cmd_router/diag_ind_src.c
code/sdk/middleware/utils/dfx/diag/include/diag_msg.h
code/sdk/middleware/utils/dfx/diag_dfx_cmd/CMakeLists.txt
code/sdk/middleware/utils/dfx/diag_dfx_cmd/diag_audio_dump/CMakeLists.txt
code/sdk/middleware/utils/dfx/diag_dfx_cmd/diag_audio_dump/zdiag_audio_dump.c
code/sdk/middleware/utils/dfx/diag_dfx_cmd/diag_audio_probe/CMakeLists.txt
code/sdk/middleware/utils/dfx/diag_dfx_cmd/diag_audio_proc/CMakeLists.txt
code/sdk/middleware/utils/dfx/diag_dfx_cmd/diag_gpu_proc/CMakeLists.txt
code/sdk/middleware/utils/dfx/diag_dfx_cmd/diag_nv/CMakeLists.txt
code/sdk/middleware/utils/dfx/diag_dfx_cmd/diag_update/CMakeLists.txt
code/sdk/middleware/utils/dfx/log/log_oml_exception.c
code/sdk/middleware/utils/dfx/preserve/private/preserve.c
code/sdk/middleware/utils/dfx/preserve/public/preserve.h
code/sdk/open_source/openharmony/base/global/i18n_lite/CMakeLists.txt
code/sdk/open_source/openharmony/base/global/resmgr_lite/CMakeLists.txt
code/sdk/open_source/openharmony/base/security/permission/CMakeLists.txt
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/baidu_map_component.cpp
code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/components/baidu_map_component.h
code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/components/text_component.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/modules/baidumapcomponent/baidumap.cpp
code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/baidumapcomponent/baidumap.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/distributedschedule/samgr_lite/CMakeLists.txt
code/sdk/open_source/openharmony/foundation/multimedia/player/interfaces/kits/player_lite/js/builtin/include/audio_module.h
code/sdk/open_source/openharmony/foundation/multimedia/player/interfaces/kits/player_lite/js/builtin/include/audio_player.h
code/sdk/open_source/openharmony/third_party/jerryscript/brandy-native-js/libjerryscript.a
code/sdk/open_source/openharmony/third_party/jerryscript/brandy-xts/libjerryscript.a
code/sdk/protocol/bt/host/bt/bts/brandy_service/service/src/base/local_device_manager.h
code/sdk/protocol/bt/host/bt/bts/bt_sample/ble_profile/ble_at_sample/include/sample_ble_ams.h [new file with mode: 0644]
code/sdk/protocol/bt/host/bt/bts/bt_sample/ble_profile/ble_at_sample/include/sample_ble_ancs.h [new file with mode: 0644]
code/sdk/protocol/bt/host/bt/bts/bt_sample/ble_profile/ble_at_sample/src/CMakeLists.txt
code/sdk/protocol/bt/host/bt/bts/bt_sample/ble_profile/ble_at_sample/src/sample_ble_ams.c [new file with mode: 0644]
code/sdk/protocol/bt/host/bt/bts/bt_sample/ble_profile/ble_at_sample/src/sample_ble_ancs.c [new file with mode: 0644]
code/sdk/protocol/bt/host/bt/bts/bt_sample/ble_profile/profiles/include/ble_ams_client.h [new file with mode: 0644]
code/sdk/protocol/bt/host/bt/bts/bt_sample/ble_profile/profiles/include/ble_ancs_client.h [new file with mode: 0644]
code/sdk/protocol/bt/host/bt/bts/bt_sample/ble_profile/profiles/include/ble_gatts_callbacks.h
code/sdk/protocol/bt/host/bt/bts/bt_sample/ble_profile/profiles/src/CMakeLists.txt
code/sdk/protocol/bt/host/bt/bts/bt_sample/ble_profile/profiles/src/ble_ams_client.c [new file with mode: 0644]
code/sdk/protocol/bt/host/bt/bts/bt_sample/ble_profile/profiles/src/ble_ancs_client.c [new file with mode: 0644]
code/sdk/protocol/bt/host/bt/bts/bt_sample/ble_profile/profiles/src/ble_bas_client.c
code/sdk/protocol/bt/host/bt/bts/bt_sample/ble_profile/profiles/src/ble_gatts_callbacks.c
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/bt_sample/bt_srv_shell.c
code/sdk/protocol/bt/host/bt/bts/sdk/inc/stack_api/stack_gap_if.h
code/sdk/tools/bin/ohos_tools/ace-loader/jerry-snapshot.exe [new file with mode: 0644]
code/sdk/tools/bin/ohos_tools/ace-loader/jerry.exe [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/max/dsp_overlay.bin
code/sdk/tools/pkg/bin/brandy/dsp/mini/dsp_main.bin
code/sdk/tools/pkg/bin/brandy/dsp/mini/dsp_overlay.bin
code/sdk/tools/pkg/bin/brandy/dsp/normal/dsp_main.bin
code/sdk/tools/pkg/bin/brandy/dsp/normal/dsp_overlay.bin
code/sdk/tools/pkg/bin/brandy/ssb.bin
code/sdk/tools/pkg/chip_packet/brandy/packet.py
jsapp/music/.gitignore [new file with mode: 0644]
jsapp/music/README.md [new file with mode: 0644]
jsapp/music/build.gradle [new file with mode: 0644]
jsapp/music/entry/.gitignore [new file with mode: 0644]
jsapp/music/entry/build.gradle [new file with mode: 0644]
jsapp/music/entry/proguard-rules.pro [new file with mode: 0644]
jsapp/music/entry/src/main/config.json [new file with mode: 0644]
jsapp/music/entry/src/main/js/default/app.js [new file with mode: 0644]
jsapp/music/entry/src/main/js/default/common/images/A055_001.png [new file with mode: 0644]
jsapp/music/entry/src/main/js/default/common/images/A055_006.png [new file with mode: 0644]
jsapp/music/entry/src/main/js/default/common/images/A055_007.png [new file with mode: 0644]
jsapp/music/entry/src/main/js/default/common/images/A055_008.png [new file with mode: 0644]
jsapp/music/entry/src/main/js/default/common/images/A055_009.png [new file with mode: 0644]
jsapp/music/entry/src/main/js/default/common/images/A055_010.png [new file with mode: 0644]
jsapp/music/entry/src/main/js/default/common/images/A055_013.png [new file with mode: 0644]
jsapp/music/entry/src/main/js/default/common/images/A055_014.png [new file with mode: 0644]
jsapp/music/entry/src/main/js/default/common/images/A055_015.png [new file with mode: 0644]
jsapp/music/entry/src/main/js/default/common/images/A055_016.png [new file with mode: 0644]
jsapp/music/entry/src/main/js/default/common/images/A055_017.png [new file with mode: 0644]
jsapp/music/entry/src/main/js/default/common/images/A055_024.png [new file with mode: 0644]
jsapp/music/entry/src/main/js/default/common/images/A055_047.png [new file with mode: 0644]
jsapp/music/entry/src/main/js/default/common/images/A055_050.png [new file with mode: 0644]
jsapp/music/entry/src/main/js/default/common/images/A055_051.png [new file with mode: 0644]
jsapp/music/entry/src/main/js/default/common/images/A055_060.png [new file with mode: 0644]
jsapp/music/entry/src/main/js/default/common/images/A055_061.png [new file with mode: 0644]
jsapp/music/entry/src/main/js/default/common/images/A055_063.png [new file with mode: 0644]
jsapp/music/entry/src/main/js/default/common/images/A055_064.png [new file with mode: 0644]
jsapp/music/entry/src/main/js/default/common/images/A055_065.png [new file with mode: 0644]
jsapp/music/entry/src/main/js/default/common/images/A055_066.png [new file with mode: 0644]
jsapp/music/entry/src/main/js/default/common/images/A055_067.png [new file with mode: 0644]
jsapp/music/entry/src/main/js/default/common/images/quit.png [new file with mode: 0644]
jsapp/music/entry/src/main/js/default/common/images/xima_logo.png [new file with mode: 0644]
jsapp/music/entry/src/main/js/default/i18n/en-US.json [new file with mode: 0644]
jsapp/music/entry/src/main/js/default/i18n/zh-CN.json [new file with mode: 0644]
jsapp/music/entry/src/main/js/default/pages/index/index.css [new file with mode: 0644]
jsapp/music/entry/src/main/js/default/pages/index/index.hml [new file with mode: 0644]
jsapp/music/entry/src/main/js/default/pages/index/index.js [new file with mode: 0644]
jsapp/music/entry/src/main/js/default/pages/play/play.css [new file with mode: 0644]
jsapp/music/entry/src/main/js/default/pages/play/play.hml [new file with mode: 0644]
jsapp/music/entry/src/main/js/default/pages/play/play.js [new file with mode: 0644]
jsapp/music/entry/src/main/js/default/pages/playlist/playlist.css [new file with mode: 0644]
jsapp/music/entry/src/main/js/default/pages/playlist/playlist.hml [new file with mode: 0644]
jsapp/music/entry/src/main/js/default/pages/playlist/playlist.js [new file with mode: 0644]
jsapp/music/entry/src/main/resources/base/element/string.json [new file with mode: 0644]
jsapp/music/entry/src/main/resources/base/media/alarm.mp3 [new file with mode: 0644]
jsapp/music/entry/src/main/resources/base/media/icon.png [new file with mode: 0644]
jsapp/music/entry/src/main/resources/base/media/icon_small.png [new file with mode: 0644]
jsapp/music/gradle.properties [new file with mode: 0644]
jsapp/music/gradle/wrapper/gradle-wrapper.jar [new file with mode: 0644]
jsapp/music/gradle/wrapper/gradle-wrapper.properties [new file with mode: 0644]
jsapp/music/gradlew [new file with mode: 0644]
jsapp/music/gradlew.bat [new file with mode: 0644]
jsapp/music/settings.gradle [new file with mode: 0644]
patch_602_base_to_0521.txt [new file with mode: 0644]

similarity index 100%
rename from SDK_1.1.10.602_0425patch.txt
rename to 0425.patch.txt
diff --git a/SDK_1.1.10.602.txt b/SDK_1.1.10.602.txt
new file mode 100644 (file)
index 0000000..a28a1c3
--- /dev/null
@@ -0,0 +1,3 @@
+SDK version:1.1.10.602
+
+
index d46b989..c070630 100644 (file)
 #include "pm_sleep.h"
 #include "pm_lpc.h"
 #include "pm_control.h"
-#include "upg.h"
-#include "upg_definitions.h"
-#include "nv.h"
 #include "dfx_system_init.h"
 #include "cpu_load.h"
-#include "nv_upg.h"
 
 #ifdef SUPPORT_AT_CMD
 #include "at_cmd_api.h"
@@ -76,6 +72,8 @@
 #include "clocks_config.h"
 #include "sys/time.h"
 #include "time.h"
+#include "log_panic.h"
+#include "nandflash_config.h"
 
 #define EMMC_BASE_ADDR              0x52062000
 
@@ -88,6 +86,7 @@
 #define TASK_PRIORITY_SDK           (osPriority_t)(31)
 #define TASK_PRIORITY_DFX_MSG       (osPriority_t)(18)
 #define TASK_PRIORITY_TRANSMIT      (osPriority_t)(20)
+#define TASK_PRIORITY_SAVE_FILE     (osPriority_t)(36)
 
 #define BTH_SDK_STACK_SIZE          0xC00
 #define AT_GRAPHIC_STACK_SIZE       0xC00
 #define PM_DISPLAY_MSG_STACK_SIZE   0xc00
 #define AT_OHOSFWK_STACK_SIZE       0xC00
 #define APP_MAIN_STACK_SIZE         0xC00
-
-#define UPG_HEAD_MAGIC              0x55AA55AA
-#define UPG_END_MAGIC               0xAA55AA55
-#define UPG_FLAG_MAGIC              0xFFFFFFFF
+#define SAVE_FILE_STACK_SIZE        0xC00
 
 #define TIME_MAX                64
 #define USEC_TO_MILLI           1000
@@ -120,6 +116,8 @@ void system_time_cali(void);
 #ifdef SUPPORT_32K_MEAS
 void uapi_32k_systick_measurements(void);
 #endif
+osSemaphoreId_t g_semaphore_save = NULL;
+void save_file_main(void);
 
 static uint32_t g_app_delay_ms = TASK_COMMON_APP_DELAY_MS;
 app_task_definition_t g_app_tasks[] = {
@@ -176,8 +174,41 @@ app_task_definition_t g_app_tasks[] = {
       (osThreadFunc_t)power_display_msg_thread, NULL,
       (CreateQueueFunction_t)power_display_task_init, USE_DTCM_MEM },
 #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 },
 };
 
+osSemaphoreId_t get_save_file_semaphore(void)
+{
+    return g_semaphore_save;
+}
+
+void save_file_main(void)
+{
+    g_semaphore_save = osSemaphoreNew(1, 0, NULL);
+    if (!g_semaphore_save) {
+        panic(PANIC_LOG, LOG_PANIC_MUTEX_NOT_READY);
+        return;
+    }
+    for (;;) {
+        // If there has been log indicator get run again
+        if (osKernelGetState() == osKernelRunning) {
+            if (osSemaphoreAcquire(g_semaphore_save, osWaitForever) != osOK) {
+                panic(PANIC_LOG, LOG_PANIC_MUTEX_NOT_READY);
+            }
+            nand_driver_init(SPEED_SLOW);
+            set_trans_type(TRANS_BY_CPU_SINGLE_LINE);
+#if defined SAVE_EXC_INFO
+            save_preserve_file_to_nand();
+            save_btram_file_to_nand();
+            save_btrace_file_to_nand();
+#endif
+            hal_reboot_chip();
+        }
+        osDelay(1000);
+    }
+}
+
 void set_app_delay_time(uint32_t time)
 {
     g_app_delay_ms = time;
@@ -242,40 +273,6 @@ static void print_system_sleep_info(void)
 #endif
 }
 
-#ifdef CONFIG_OTA_UPDATE_SUPPORT
-static void upg_check_upgrade(void)
-{
-    uint32_t fota_address = 0;
-    errcode_t ret_val = (errcode_t)upg_get_upgrade_flag_flash_start_addr(&fota_address);
-    if (ret_val != ERRCODE_SUCC) {
-        return;
-    }
-
-    fota_upgrade_flag_area_t upg_flag_info;
-    ret_val = (errcode_t)upg_flash_read(fota_address, sizeof(fota_upgrade_flag_area_t), (uint8_t *)(&upg_flag_info));
-    if (ret_val != ERRCODE_SUCC) {
-        return;
-    }
-
-    if (!(upg_flag_info.head_magic == UPG_HEAD_MAGIC &&
-          upg_flag_info.head_end_magic == UPG_END_MAGIC &&
-          upg_flag_info.complete_flag == UPG_FLAG_MAGIC)) {
-        /* 不需要升级直接返回 */
-        PRINT("No need to upgrade...\r\n");
-        return;
-    }
-
-    PRINT("upgrading.......\r\n");
-    ret_val = uapi_upg_start();
-    if (ret_val != ERRCODE_SUCC) {
-        PRINT("upgrade failed, ret = 0x%x\r\n", ret_val);
-    } else {
-        PRINT("upgrade success\r\n");
-    }
-    upg_reboot();
-}
-#endif
-
 #ifdef SUPPORT_32K_MEAS
 /* 使用32M tcxo 测量 systick的32K频率值 */
 void uapi_32k_systick_measurements(void)
@@ -312,12 +309,7 @@ void system_time_cali(void)
 static void app_main(const void *unused)
 {
     unused(unused);
-#ifdef CONFIG_OTA_UPDATE_SUPPORT
-    upg_check_upgrade();
-#endif
     dfx_set_log_enable();
-    /* nv init and file system init must be before nv_upg_upgrade_task_process */
-    (void)nv_upg_upgrade_task_process();
 #ifdef SUPPORT_MEDIA_AUDIO_MANAGER
     bool success = AudioManagerInit();
     PRINT("audio manager init %s\r\n", success ? "ok" : "error");
index a812c9e..93c7f41 100644 (file)
 #include "ohosfwk_startup.h"\r
 #endif\r
 #include "clocks_config.h"\r
+#include "board_init.h"\r
+#include "upg.h"\r
+#include "upg_definitions.h"\r
+#include "nv.h"\r
+#include "nv_upg.h"\r
 \r
 #define EMMC_BASE_ADDR              0x52062000\r
 #define TASK_PRIORITY_APP           (osPriority_t)(17)\r
 #define TICK_TEN_MS                 (10U)\r
 #define WAIT_BT_BOOTUP_TIME         200U\r
+#define UPG_HEAD_MAGIC              0x55AA55AA\r
+#define UPG_END_MAGIC               0xAA55AA55\r
+#define UPG_FLAG_MAGIC              0xFFFFFFFF\r
 \r
 static void thread_main(const void *unused);\r
 void bt_acore_btc_ipc_receive_init(void);\r
@@ -241,6 +249,40 @@ static void force_to_sleep(void)
     }\r
 }\r
 \r
+#ifdef CONFIG_OTA_UPDATE_SUPPORT\r
+static void upg_check_upgrade(void)\r
+{\r
+    uint32_t fota_address = 0;\r
+    errcode_t ret_val = (errcode_t)upg_get_upgrade_flag_flash_start_addr(&fota_address);\r
+    if (ret_val != ERRCODE_SUCC) {\r
+        return;\r
+    }\r
+\r
+    fota_upgrade_flag_area_t upg_flag_info;\r
+    ret_val = (errcode_t)upg_flash_read(fota_address, sizeof(fota_upgrade_flag_area_t), (uint8_t *)(&upg_flag_info));\r
+    if (ret_val != ERRCODE_SUCC) {\r
+        return;\r
+    }\r
+\r
+    if (!(upg_flag_info.head_magic == UPG_HEAD_MAGIC &&\r
+          upg_flag_info.head_end_magic == UPG_END_MAGIC &&\r
+          upg_flag_info.complete_flag == UPG_FLAG_MAGIC)) {\r
+        /* 不需要升级直接返回 */\r
+        PRINT("No need to upgrade...\r\n");\r
+        return;\r
+    }\r
+\r
+    PRINT("upgrading.......\r\n");\r
+    ret_val = uapi_upg_start();\r
+    if (ret_val != ERRCODE_SUCC) {\r
+        PRINT("upgrade failed, ret = 0x%x\r\n", ret_val);\r
+    } else {\r
+        PRINT("upgrade success\r\n");\r
+    }\r
+    upg_reboot();\r
+}\r
+#endif\r
+\r
 static void thread_main(const void *unused)\r
 {\r
     PRINT("thread_main start "NEWLINE);\r
@@ -281,6 +323,11 @@ static void thread_main(const void *unused)
 #endif\r
     board_version_class_print();\r
     uapi_watchdog_kick();\r
+#ifdef CONFIG_OTA_UPDATE_SUPPORT\r
+    upg_check_upgrade();\r
+#endif\r
+    /* nv init and file system init must be before nv_upg_upgrade_task_process */\r
+    (void)nv_upg_upgrade_task_process();\r
     thread_init();\r
     button_app_init();\r
     uapi_calendar_init();\r
index 7bf23a6..f6a8a07 100644 (file)
@@ -1,4 +1,6 @@
 set(COMPONENT_NAME "alipay_service")
+set(MODULE_NAME "app")
+set(AUTO_DEF_FILE_ID TRUE)
 
 set(PUBLIC_HEADER
     ${CMAKE_CURRENT_SOURCE_DIR}
index 685e0e8..5322e54 100644 (file)
@@ -14,6 +14,9 @@
 #include "osal_task.h"\r
 #include "alipay_feature.h"\r
 #include "securec.h"\r
+#ifdef JS_ENABLE\r
+#include "msg_center_msg.h"\r
+#endif\r
 \r
 /* Gatt service UUID */\r
 #define ALIPAYY_SERVICE_ID 0x0238\r
@@ -155,9 +158,16 @@ static void svr_alipay_ble_connstate_change_cb(unsigned short conn_id, bd_addr_t
         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
     } 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
     }\r
 }\r
 \r
index 12a7aec..3616c96 100644 (file)
@@ -18,16 +18,26 @@ extern "C" {
 #include <stdio.h>
 #include "stdbool.h"
 #include "errcode.h"
+#if !defined(SW_UART_DEBUG) && !defined(SW_RTT_DEBUG)
+#include "soc_diag_util.h"
+#include "log_oam_logger.h"
+#include "log_def.h"
+#else
 #include "debug_print.h"
+#endif
 
 #define APP_SUCCESS 0
 #define APP_FAILURE (-1)
 
-#ifdef ALIPAY_HSO_DEBUG_LOG
-#define ALIPAY_PRINT_ERR(log_num, fmt, args...) uapi_diag_error_log(0, fmt, ##arg)
-#define ALIPAY_PRINT_WARN(log_num, fmt, args...) uapi_diag_warning_log(0, fmt, ##arg)
-#define ALIPAY_PRINT_INFO(log_num, fmt, args...) uapi_diag_info_log(0, fmt, ##arg)
-#define ALIPAY_PRINT_DEBUG(log_num, fmt, args...)
+#if !defined(SW_UART_DEBUG) && !defined(SW_RTT_DEBUG)
+#define ALIPAY_PRINT_ERR(log_num, fmt, arg...) uapi_diag_error_log(0, fmt, ##arg)
+#define ALIPAY_PRINT_WARN(log_num, fmt, arg...) uapi_diag_warning_log(0, fmt, ##arg)
+#define ALIPAY_PRINT_INFO(log_num, fmt, arg...) uapi_diag_info_log(0, fmt, ##arg)
+#ifdef WEARABLE_LOG_DEBUG
+#define ALIPAY_PRINT_DEBUG(log_num, fmt, arg...) uapi_diag_debug_log(0, fmt, ##arg)
+#else
+#define ALIPAY_PRINT_DEBUG(log_num, fmt, arg...)
+#endif
 #else
 #define ALIPAY_PRINT_ERR(log_num, fmt, arg...) PRINT("[ALIPAY SVR E/] %s: " fmt "\r\n", __FUNCTION__, ##arg)
 #define ALIPAY_PRINT_WARN(log_num, fmt, arg...) PRINT("[ALIPAY SVR W/] %s: " fmt "\r\n", __FUNCTION__, ##arg)
index cbd47f6..93f05aa 100644 (file)
@@ -19,6 +19,7 @@ set(PRIVATE_HEADER
     ${ROOT_DIR}/middleware/services/gui/uikit/surface/interfaces/kits
     ${ROOT_DIR}/middleware/services/gui/uikit/ui/interfaces/innerkits
     ${ROOT_DIR}/middleware/services/gui/uikit/ui/frameworks
+    ${ROOT_DIR}/application/wearable/nativeapp/nativeui/applist/include/
     ${ROOT_DIR}/open_source/openharmony/drivers/peripheral/display/interfaces/include
 )
 
@@ -31,6 +32,7 @@ set(SOURCES
     ${CMAKE_CURRENT_SOURCE_DIR}/src/TransitionManager.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/src/transition/ZoomTransition.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/src/transition/HexagonsTransition.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/src/transition/BackToHexagonsTransition.cpp
 )
 
 set(COMPONENT_PUBLIC_CCFLAGS
index c969472..092c452 100644 (file)
@@ -12,6 +12,7 @@ enum class TransitionType {
     TRANSITION_INVALID = 0,
     TRANSITION_ZOOM,
     TRANSITION_HEXAGONS,
+    TRANSITION_BACK_TO_HEXAGONS,
     TRANSITION_MAX
 };
 }
index 2cecbeb..20226e6 100644 (file)
@@ -62,11 +62,13 @@ SliceTransition::~SliceTransition()
 
 void SliceTransition::ClearTransitionResource()
 {
-    if (currentSnapshot_->GetImageInfo() != nullptr && currentSnapshot_->GetImageInfo()->data != nullptr) {
+    if (currentSnapshot_ != nullptr && currentSnapshot_->GetImageInfo() != nullptr &&
+        currentSnapshot_->GetImageInfo()->data != nullptr) {
         ImageCacheFree(*const_cast<ImageInfo *>(currentSnapshot_->GetImageInfo()));
     }
 
-    if (targetSnapshot_->GetImageInfo() != nullptr && targetSnapshot_->GetImageInfo()->data != nullptr) {
+    if (targetSnapshot_ != nullptr && targetSnapshot_->GetImageInfo() != nullptr &&
+        targetSnapshot_->GetImageInfo()->data != nullptr) {
         ImageCacheFree(*const_cast<ImageInfo *>(targetSnapshot_->GetImageInfo()));
     }
     if (currentSnapshot_ != nullptr) {
diff --git a/code/sdk/application/wearable/nativeabilityfwk/src/transition/BackToHexagonsTransition.cpp b/code/sdk/application/wearable/nativeabilityfwk/src/transition/BackToHexagonsTransition.cpp
new file mode 100644 (file)
index 0000000..fd7b9ba
--- /dev/null
@@ -0,0 +1,76 @@
+/*
+ * Copyright (c) CompanyNameMagicTag 2024. All rights reserved.
+ * Description: ZoomTransition
+ * Author:
+ * Create: 2024-04
+ */
+
+#include "BackToHexagonsTransition.h"
+#include "TransitionManager.h"
+#include "NativeAbility.h"
+#include "components/root_view.h"
+#include "AppItemView.h"
+#include "hal_tick.h"
+#include "wearable_log.h"
+
+namespace OHOS {
+REGIST_TRANSITION(TransitionType::TRANSITION_BACK_TO_HEXAGONS, BackToHexagonsTransition, 300, true, false);
+static const float CURRENT_SCALE_START = 1.0f;
+static const float TARGET_SCALE_END = 1.0f;
+
+void BackToHexagonsTransition::OnTransitionStart(UIImageView* current, UIView* target)
+{
+    current_ = current;
+    target_ = dynamic_cast<UICustomHexagonsList*>(target);
+    if ((target_ == nullptr) || (current_ == nullptr)) {
+        return;
+    }
+
+    uint16_t sliceId = NativeAbility::GetInstance().GetPreSliceId();
+    UIView* childView = target_->GetChildrenHead();
+    while (childView != nullptr) {
+        HexagonsItemView* itemView = dynamic_cast<HexagonsItemView*>(childView);
+        if ((itemView != nullptr) && (itemView->GetViewId() == sliceId)) {
+            focusIndex_ = itemView->GetViewIndex();
+            focusView_ = itemView;
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_LAUNCHER_FWK, "BackToHexagonsTransition focus %d", focusIndex_);
+            break;
+        }
+        childView = childView->GetNextSibling();
+    }
+
+    if (focusView_ == nullptr) {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_LAUNCHER_FWK, "BackToHexagonsTransition no focus view, use default\n");
+        focusView_ = target_->GetViewByIndex(0);
+    }
+    target_->Scale(1.0f, focusIndex_);
+    Vector2<int16_t> pos = target_->GetCurrentPosition(focusIndex_);
+    int16_t deltaX = MATH_ROUND(target_->GetWidth() / 2.0f - pos.x_);
+    int16_t deltaY = MATH_ROUND(target_->GetHeight() / 2.0f - pos.y_);
+    target_->ScrollBy(deltaX, deltaY);
+    target_->ReMeasure();
+    Rect rect = focusView_->GetRect();
+    float xScale = current->GetWidth() * 1.0f / rect.GetWidth();
+    float yScale = current->GetHeight() * 1.0f / rect.GetHeight();
+    tarScaleStart_ = FloatLessEqual(xScale, yScale) ? xScale : yScale;
+    curScaleEnd_ = 1.0f / tarScaleStart_;
+}
+
+void BackToHexagonsTransition::TransitionAlg(uint32_t time)
+{
+    if ((current_ == nullptr) || (target_== nullptr) || (focusView_ == nullptr)) {
+        return;
+    }
+    float timeRatio = time * 1.0f / duration_;
+
+    float curScale = timeRatio * (curScaleEnd_ - CURRENT_SCALE_START) + CURRENT_SCALE_START;
+    current_->Scale(Vector2<float>(curScale, curScale), Vector2<float>(current_->GetWidth() / 2.0f,
+        current_->GetHeight() / 2.0f));
+    uint8_t opa = OPA_OPAQUE + timeRatio * (OPA_TRANSPARENT - OPA_OPAQUE);
+    current_->SetOpaScale(opa);
+
+    float targetScale = tarScaleStart_ + timeRatio * (TARGET_SCALE_END - tarScaleStart_);
+    target_->Scale(targetScale, focusIndex_);
+    focusView_->SetOpaScale(OPA_OPAQUE - opa);
+}
+} // namespace OHOS
diff --git a/code/sdk/application/wearable/nativeabilityfwk/src/transition/BackToHexagonsTransition.h b/code/sdk/application/wearable/nativeabilityfwk/src/transition/BackToHexagonsTransition.h
new file mode 100644 (file)
index 0000000..2e261b2
--- /dev/null
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) CompanyNameMagicTag 2024. All rights reserved.
+ * Description: ZoomTransition
+ * Author:
+ * Create: 2024-04
+ */
+
+#ifndef HEXAGONS_TRASITION_H
+#define HEXAGONS_TRASITION_H
+#include "TransitionCallback.h"
+#include "components/ui_custom_hexagons_list.h"
+
+namespace OHOS {
+class BackToHexagonsTransition : public TransitionCallback {
+public:
+    BackToHexagonsTransition(uint32_t time, bool enableCurrentSnapshot, bool enableTargetSnapshot) :
+        TransitionCallback(time, enableCurrentSnapshot, enableTargetSnapshot) {}
+    ~BackToHexagonsTransition() override {}
+    void OnTransitionStart(UIImageView* current, UIView* target) override;
+    void TransitionAlg(uint32_t time) override;
+private:
+    UIImageView* current_ = nullptr;
+    UICustomHexagonsList* target_ = nullptr;
+    UIView* focusView_ = nullptr;
+    uint8_t focusIndex_ = 0;
+    float curScaleEnd_ = 1.0f;
+    float tarScaleStart_ = 1.0f;
+};
+} // namespace OHOS
+#endif
\ No newline at end of file
index 86c7b64..8095361 100644 (file)
@@ -9,14 +9,14 @@
 #include "animator/easing_equation.h"
 #include "components/root_view.h"
 #include "TransitionManager.h"
+#include "wearable_log.h"
 
 namespace OHOS {
-REGIST_TRANSITION(TransitionType::TRANSITION_HEXAGONS, HexagonsTransition, 800, false, true);
+REGIST_TRANSITION(TransitionType::TRANSITION_HEXAGONS, HexagonsTransition, 300, false, true);
 static constexpr int16_t RANGE = 1000;
 static const float HEXAGONS_SCALE_INIT = 1.0f;
-static const float HEXAGONS_SCALE_END = 2.5f;
-static const float HEXAGONS_OPA_START = 255;
-static const float HEXAGONS_OPA_END = 0;
+static const float HEXAGONS_SCALE_TRANSPARENT = 2.5f;
+static const float TARGET_SCALE_END = 1.0f;
 
 void HexagonsTransition::OnTransitionStart(UIView* current, UIImageView* target)
 {
@@ -33,17 +33,29 @@ void HexagonsTransition::OnTransitionStart(UIView* current, UIImageView* target)
     }
     focusView_ = dynamic_cast<UIImageView*>(current_->GetViewByIndex(focusIndex_));
     if (focusView_ == nullptr) {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_LAUNCHER_FWK, "HexagonsTransition no focus view\n");
         return;
     }
     current_->SetStyle(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT);
     Vector2<int16_t> delta = Vector2<int16_t>(current_->GetWidth() / 2, current_->GetHeight() / 2) -
         current_->GetCurrentPosition(focusIndex_);
-    scaleStart_ = current_->GetGlobalScale();
     opaStart_ =  current->GetOpaScale();
+    scaleStart_ = current_->GetGlobalScale();
+    Rect rect = focusView_->GetRect();
+    float xScale = target_->GetWidth() * 1.0f / rect.GetWidth();
+    float yScale = target_->GetHeight() * 1.0f / rect.GetHeight();
+    scaleEnd_ = FloatLessEqual(xScale, yScale) ? xScale : yScale;
+
+    targetXStart_ = rect.GetX();
+    targetYStart_ = rect.GetY();
+    targetScaleStart_ = 1.0f / scaleEnd_;
+
     uint32_t offsetTime = static_cast<uint32_t>((scaleStart_ - HEXAGONS_SCALE_INIT) /
-        (HEXAGONS_SCALE_END - HEXAGONS_SCALE_INIT) * duration_ * 0.5f); // 0.5 half of duration
+        (scaleEnd_ - HEXAGONS_SCALE_INIT) * duration_);
     durationBackup_ = duration_;
     duration_ = duration_ - offsetTime;
+    thresholdTime_ = static_cast<uint32_t>((HEXAGONS_SCALE_TRANSPARENT - scaleStart_) / (scaleEnd_ - scaleStart_)
+        * duration_);
     xDistance_ = delta.x_;
     yDistance_ = delta.y_;
     prevX_ = 0;
@@ -60,35 +72,30 @@ void HexagonsTransition::TransitionAlg(uint32_t time)
         return;
     }
     float timeRatio = time * 1.0f / duration_;
-    if (FloatLessEqual(timeRatio, 0.5f)) { // 0.5f, half of transition
-        float hexagonsRatio = 2 * timeRatio;
-        int16_t curX = static_cast<int16_t>(hexagonsRatio * xDistance_);
-        int16_t curY = static_cast<int16_t>(hexagonsRatio * yDistance_);
-        current_->ScrollBy(curX - prevX_, curY - prevY_);
-        prevX_ = curX;
-        prevY_ = curY;
+    float opaRatio = time * 1.0f / thresholdTime_;
+    opaRatio = FloatMore(opaRatio, 1.0f) ? 1.0f : opaRatio;
+    int16_t curX = static_cast<int16_t>(timeRatio * xDistance_);
+    int16_t curY = static_cast<int16_t>(timeRatio * yDistance_);
+    current_->ScrollBy(curX - prevX_, curY - prevY_);
+    prevX_ = curX;
+    prevY_ = curY;
 
-        float curScale = hexagonsRatio * (HEXAGONS_SCALE_END - scaleStart_) + scaleStart_;
-        uint8_t opa = hexagonsRatio * (HEXAGONS_OPA_END - opaStart_) + opaStart_;
-        focusView_->SetOpaScale(opa);
-        current_->Scale(curScale, focusIndex_);
-        Rect rect = focusView_->GetRect();
-        target_->SetPosition(rect.GetX(), rect.GetY());
-        targetMiddleScale_ = Vector2<float>(rect.GetWidth() * 1.0f / target_->GetWidth(),
-            rect.GetHeight() * 1.0f / target_->GetHeight());
-        target_->Scale(targetMiddleScale_, Vector2<float>(0.0f, 0.0f));
-    } else if (FloatLessEqual(timeRatio, 1.0f)) {
-        current_->SetVisible(false);
-        Vector2<float> targetScale = {2 * (timeRatio - 0.5f) * (1.0f - targetMiddleScale_.x_) + targetMiddleScale_.x_,
-            2 * (timeRatio - 0.5f) * (1.0f - targetMiddleScale_.y_) + targetMiddleScale_.y_};
-        target_->SetPosition(0, 0);
-        target_->Scale(targetScale, Vector2<float>(target_->GetWidth() / 2.0f, target_->GetHeight() / 2.0f));
-    }
+    float curScale = timeRatio * (scaleEnd_ - scaleStart_) + scaleStart_;
+    uint8_t opa = opaRatio * (OPA_TRANSPARENT - opaStart_) + opaStart_;
+    focusView_->SetOpaScale(opa);
+    current_->Scale(curScale, focusIndex_);
+
+    int16_t targetXPos = static_cast<int16_t>((1.0f - timeRatio) * targetXStart_);
+    int16_t targetYPos = static_cast<int16_t>((1.0f - timeRatio) * targetYStart_);
+    target_->SetPosition(targetXPos, targetYPos);
+    float targetScale = targetScaleStart_ + timeRatio * (1.0f - targetScaleStart_);
+    target_->Scale(Vector2<float>(targetScale, targetScale), Vector2<float>(0.0f, 0.0f));
+    uint8_t targetOpa = timeRatio * (OPA_OPAQUE - OPA_TRANSPARENT) + OPA_TRANSPARENT;
+    target_->SetOpaScale(targetOpa);
 }
 
 void HexagonsTransition::OnTransitionEnd()
 {
     duration_ = durationBackup_;
 }
-
-} // namespace OHOS
+} // namespace OHOS
\ No newline at end of file
index a7315db..46dd72e 100644 (file)
@@ -24,14 +24,18 @@ private:
     UICustomHexagonsList* current_ = nullptr;
     UIImageView* target_ = nullptr;
     UIImageView* focusView_ = nullptr;
-    Vector2<float> targetMiddleScale_ = {0, 0};
     uint8_t focusIndex_ = 0;
     float scaleStart_ = 1.0f;
+    float scaleEnd_ = 1.0f;
     uint8_t opaStart_ = 255;
     int16_t xDistance_ = 0;
     int16_t yDistance_ = 0;
     int16_t prevX_ = 0;
     int16_t prevY_ = 0;
+    float thresholdTime_ = 0.0f;
+    int16_t targetXStart_ = 0;
+    int16_t targetYStart_ = 0;
+    float targetScaleStart_ = 1.0f;
 };
 } // namespace OHOS
 #endif
\ No newline at end of file
index 35ef952..0e72a0e 100644 (file)
@@ -265,6 +265,7 @@ set(SOURCES
     ${UI_SAMPLE_ROOT}/components/ui_test_cube_rotate/cube_rotate_view.cpp
     ${UI_SAMPLE_ROOT}/components/ui_test_cube_rotate/ui_test_cube_rotate.cpp
     ${UI_SAMPLE_ROOT}/components/ui_test_video_play/ui_test_video_play.cpp
+    ${UI_SAMPLE_ROOT}/components/ui_test_keyboard/ui_test_keyboard.cpp
     ${UI_SAMPLE_ROOT}/components/ui_test_hexagons_list/ui_test_hexagons_list.cpp
     ${UI_SAMPLE_ROOT}/components/ui_test_coverflow/ui_test_coverflow.cpp
     ${UI_SAMPLE_ROOT}/components/ui_test_kaleidoscope/ui_test_kaleidoscope.cpp
@@ -336,6 +337,7 @@ set(COMPONENT_CCFLAGS
     -Wno-c++11-narrowing
     -Wno-error=unused-function
     -Wno-missing-field-initializers
+    -Werror=return-type
 )
 
 set(WHOLE_LINK
index 0be241e..c8cd31c 100644 (file)
@@ -28,6 +28,7 @@
 #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
 \r
 namespace OHOS {\r
 \r
@@ -761,15 +762,17 @@ void BluetoothModel::BtGapAclStateChangedHandle(gap_acl_state_t state, unsigned
         if (!tag) {\r
             AddConnedDevicesCase(*onClickBtCaseInfo);\r
         }\r
-        ACLConnectionSuss(bdAddr);\r
     } else {\r
         ACLConnectionFail(bdAddr);\r
     }\r
 \r
     if ((state == GAP_ACL_STATE_CONNECTED) || (state == GAP_ACL_STATE_LE_CONNECTED)) {\r
         if (BluetoothModel::GetInstance()->ConnectRemoteCheck(&bdAddr)) {\r
-            bool retA2dp = a2dp_src_connect(&bdAddr);\r
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "a2dp_src_connect result %d", retA2dp);\r
+            int32_t retA2dp = a2dp_src_connect(&bdAddr);\r
+            if (retA2dp) {\r
+                ACLConnectionFail(bdAddr);\r
+            }\r
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "a2dp_src_connect result 0x%x", retA2dp);\r
         } else {\r
             WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ingore a2dp_src_connect");\r
         }\r
@@ -836,10 +839,12 @@ static void A2dpSrcConnectstateChanged(bd_addr_t *bdAddr, int connState)
     if (connState == PROFILE_STATE_CONNECTED) {\r
         avrcp_ct_connect(bdAddr);\r
         PhoneAudioManagerSetDeviceConnState(OUT_BLUETOOTH_A2DP, AUDIO_DEVICE_CONNECTED);\r
+        GraphicService::GetInstance()->PostGraphicEvent(std::bind(ACLConnectionSuss, *bdAddr));\r
     }\r
 \r
     if (connState == PROFILE_STATE_DISCONNECTED) {\r
         PhoneAudioManagerSetDeviceConnState(OUT_BLUETOOTH_A2DP, AUDIO_DEVICE_DISCONNECTED);\r
+        GraphicService::GetInstance()->PostGraphicEvent(std::bind(ACLConnectionFail, *bdAddr));\r
     }\r
 }\r
 \r
@@ -867,9 +872,12 @@ static void BleConnStateChangeCallback(unsigned short connId, bd_addr_t *addr, g
     WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BleConnStateChangeCallback connId 0x%x, connState 0x%x, pairState 0x%x",\r
                   connId, connState, pairState);\r
     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
     }\r
 }\r
 \r
index b3d4875..68aeab8 100644 (file)
@@ -442,11 +442,15 @@ static void WatchFinishHandle(void)
 static void ChangeStatusScreendisplay(int lastStatus)
 {
     if (GetScoConnectState() != HFP_SCO_STATE_CONNECTED) {
-        if (lastStatus == OPERATE_INCOMING) {
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ChangeStatusScreendisplay] lastStatus OPERATE_INCOMING");
-        } else if (GetCurrCallNum() == 1 && (lastStatus == OPERATE_DIALING ||
-            lastStatus == OPERATE_ALERTING)) {
-            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ChangeStatusScreendisplay] lastStatus OPERATE_ALERTING");
+        if (lastStatus == HFP_HF_CALL_STATE_ACTIVE) {
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ChangeStatusScreendisplay] STATE_ACTIVE");
+            StatusReset();
+            return;
+        } else if (lastStatus == HFP_HF_CALL_STATE_INCOMING) {
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ChangeStatusScreendisplay] STATE_INCOMING");
+        } else if (GetCurrCallNum() == 1 && (lastStatus == HFP_HF_CALL_STATE_DIALING ||
+            lastStatus == HFP_HF_CALL_STATE_ALERTING)) {
+            WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ChangeStatusScreendisplay] STATE_ALERTING");
         } else if (GetCurrCallNum() > 1) {
             WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ChangeStatusScreendisplay] GetCurrCallNum MULITE");
             DisableCallingTimer();
index bce8f5d..1d34972 100644 (file)
@@ -65,7 +65,11 @@ void KeyInputListener::CallVolumeDipSwitchControl(VolumeChangeStatus status)
 {
     if (MainCallingPresenter::GetInstance() != nullptr && CallerLogModel::GetInstance()->GetCallStatus()) {
         if (CallerLogModel::GetInstance()->GetVolumeScreenStatus()) {
-            volumeSliderEventListener = VolumeSliderEventListener::GetInstance();
+            VolumeSettingView *settingView = MainCallingPresenter::GetInstance()->GetvolumeSetting();
+            if (settingView == nullptr) {
+                return;
+            }
+            volumeSliderEventListener = settingView->GetVolumeEventListener();
             if (volumeSliderEventListener == nullptr) {
                 return;
             }
@@ -77,7 +81,11 @@ void KeyInputListener::CallVolumeDipSwitchControl(VolumeChangeStatus status)
     }
     if (IsNotifyCallStatus()) {
         if (NotificationManager::GetInstance()->GetVolumeScreenStatus()) {
-            volumeSliderEventListener = VolumeSliderEventListener::GetInstance();
+            VolumeSettingView *settingView = GetvolumeSetting();
+            if (settingView == nullptr) {
+                return;
+            }
+            volumeSliderEventListener = settingView->GetVolumeEventListener();
             if (volumeSliderEventListener == nullptr) {
                 return;
             }
index f18dac4..07a4156 100644 (file)
@@ -33,11 +33,12 @@ typedef enum : uint8_t {
     VOLUMEDRAG = 2,
 } VolumeChangeStatus;
 
+class VolumeSettingView;
 class VolumeSliderEventListener : public UISlider::UISliderEventListener,
                                   public UIView::OnClickListener,
                                   public UIView::OnDragListener {
 public:
-    VolumeSliderEventListener();
+    VolumeSliderEventListener(VolumeSettingView *volumeSetting);
     ~VolumeSliderEventListener();
     static VolumeSliderEventListener *GetInstance();
     void OnChange(int32_t progress) override;
@@ -50,6 +51,7 @@ public:
 private:
     int16_t preSound{0};
     int16_t playerCoefficients{0};
+    VolumeSettingView *volumeSettingView{nullptr};
 };
 } // namespace OHOS
 #endif
index 365ced2..63a201e 100644 (file)
@@ -24,13 +24,13 @@ class VolumeSettingView : public UIViewGroup {
 public:\r
     VolumeSettingView();\r
     ~VolumeSettingView();\r
-    static VolumeSettingView *GetInstance(void);\r
     int16_t sounding{0};\r
 \r
     UISlider *GetProgress(void);\r
     bool SetUpVolume(void);\r
     UIButton *GetIncreaseButton(void);\r
     UIButton *GetDecreaseButton(void);\r
+    VolumeSliderEventListener *GetVolumeEventListener(void);\r
 private:\r
     VolumeSliderEventListener *listener{nullptr};\r
     UISlider *progress{nullptr};\r
index 96e362c..7ca2d4c 100644 (file)
@@ -25,26 +25,16 @@ namespace OHOS {
 extern "C" {\r
 #endif\r
 \r
-static VolumeSliderEventListener *g_pVolumeSliderEventListener = nullptr;\r
-\r
 constexpr int16_t SOUND_CHANGE = 10;\r
 \r
-VolumeSliderEventListener::VolumeSliderEventListener()\r
+VolumeSliderEventListener::VolumeSliderEventListener(VolumeSettingView *volumeSetting) : volumeSettingView(volumeSetting)\r
 {\r
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "VolumeSliderEventListener new");\r
-    g_pVolumeSliderEventListener = this;\r
 }\r
 \r
 VolumeSliderEventListener::~VolumeSliderEventListener()\r
 {\r
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "VolumeSliderEventListener::~VolumeSliderEventListener");\r
-    g_pVolumeSliderEventListener = nullptr;\r
-}\r
-\r
-VolumeSliderEventListener *VolumeSliderEventListener::GetInstance()\r
-{\r
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "VolumeSliderEventListener GetInstance");\r
-    return g_pVolumeSliderEventListener;\r
 }\r
 \r
 bool VolumeSliderEventListener::OnClick(UIView& view, const ClickEvent& event)\r
@@ -67,11 +57,6 @@ bool VolumeSliderEventListener::OnClick(UIView& view, const ClickEvent& event)
 void VolumeSliderEventListener::ChangeVolume(VolumeChangeStatus status)\r
 {\r
     ImageInfo *image;\r
-    VolumeSettingView *volumeSettingView = VolumeSettingView::GetInstance();\r
-    if (volumeSettingView == nullptr) {\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnClick:volumeSettingView new fail");\r
-        return;\r
-    }\r
     UISlider *progress = volumeSettingView->GetProgress();\r
     if (progress == nullptr) {\r
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnClick:progress new fail");\r
@@ -172,11 +157,6 @@ void VolumeSliderEventListener::OnChange(int32_t value)
 \r
 bool VolumeSliderEventListener::OnDrag(UIView& view, const DragEvent& event)\r
 {\r
-    VolumeSettingView *volumeSettingView = VolumeSettingView::GetInstance();\r
-    if (volumeSettingView == nullptr) {\r
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "OnDrag::volumeSettingView new fail");\r
-        return false;\r
-    }\r
     if (strcmp(view.GetViewId(), VOLUME_VIEW) == 0) {\r
         if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT) {\r
             WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "VolumeSliderEventListener::OnDrag");\r
index c4d3bad..e8eeb4d 100644 (file)
@@ -10,7 +10,6 @@
 #include "ui_resource_image.h"\r
 \r
 namespace OHOS {\r
-static VolumeSettingView *g_pVolumeSettingView{nullptr};\r
 static constexpr uint16_t BUTTON_X = 182;\r
 static constexpr uint16_t BUTTON_Y = 0;\r
 static constexpr uint16_t BUTTON_Y2 = 363;\r
@@ -27,18 +26,15 @@ constexpr int16_t VOLUME_ERROR = (-1);
 VolumeSettingView::VolumeSettingView()\r
 {\r
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "VolumeSettingView::VolumeSettingView");\r
-    g_pVolumeSettingView = this;\r
 }\r
 \r
 VolumeSettingView::~VolumeSettingView()\r
 {\r
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "VolumeSettingView::~VolumeSettingView");\r
     RemoveAll();\r
-\r
-    UIView::OnClickListener *click = increaseButton->GetOnClickListener();\r
-    if (click != nullptr) {\r
-        delete click;\r
-        click = nullptr;\r
+    if (listener != nullptr) {\r
+        delete listener;\r
+        listener = nullptr;\r
     }\r
     delete increaseButton;\r
     increaseButton = nullptr;\r
@@ -48,13 +44,6 @@ VolumeSettingView::~VolumeSettingView()
 \r
     delete progress;\r
     progress = nullptr;\r
-\r
-    g_pVolumeSettingView = nullptr;\r
-}\r
-\r
-VolumeSettingView *VolumeSettingView::GetInstance(void)\r
-{\r
-    return g_pVolumeSettingView;\r
 }\r
 \r
 bool VolumeSettingView::SetUpVolume(void)\r
@@ -78,7 +67,7 @@ bool VolumeSettingView::SetUpVolume(void)
     progress->SetRange(VOLUME_MAX, VOLUME_MIN);\r
 \r
     if (listener == nullptr) {\r
-        listener = new VolumeSliderEventListener();\r
+        listener = new VolumeSliderEventListener(this);\r
         if (listener == nullptr) {\r
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "listener new fail");\r
             return false;\r
@@ -88,9 +77,8 @@ bool VolumeSettingView::SetUpVolume(void)
     progress->SetOnClickListener(listener);\r
     progress->SetOnDragListener(listener);\r
     progress->SetKnobStyle(StyleDefault::GetSliderKnobStyle());\r
-    UIView::OnDragListener *volDragListener = (UIView::OnDragListener *)OHOS::VolumeSliderEventListener::GetInstance();\r
     SetViewId(VOLUME_VIEW);\r
-    SetOnDragListener(volDragListener);\r
+    SetOnDragListener(listener);\r
     SetDraggable(true);\r
     SetTouchable(true);\r
     Add(progress);\r
@@ -117,7 +105,6 @@ UIButton *VolumeSettingView::GetDecreaseButton(void)
 int VolumeSettingView::ShowVolume(void)\r
 {\r
     ImageInfo *image;\r
-    UIView::OnClickListener *clickListener = (UIView::OnClickListener *)OHOS::VolumeSliderEventListener::GetInstance();\r
     if (increaseButton == nullptr) {\r
         increaseButton = new UIButton();\r
         if (increaseButton == nullptr) {\r
@@ -129,7 +116,7 @@ int VolumeSettingView::ShowVolume(void)
     increaseButton->SetViewId(INCREASE_BUTTON);\r
     image = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_INCREASE_BUTTON, PLAYER_IAMGES);\r
     increaseButton->SetImageSrc(image, image);\r
-    increaseButton->SetOnClickListener(clickListener);\r
+    increaseButton->SetOnClickListener(listener);\r
     Add(increaseButton);\r
 \r
     if (decreaseButton == nullptr) {\r
@@ -143,9 +130,15 @@ int VolumeSettingView::ShowVolume(void)
     decreaseButton->SetViewId(DECREASE_BUTTON);\r
     image = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_DECREASE_BUTTON, PLAYER_IAMGES);\r
     decreaseButton->SetImageSrc(image, image);\r
-    decreaseButton->SetOnClickListener(clickListener);\r
+    decreaseButton->SetOnClickListener(listener);\r
     Add(decreaseButton);\r
 \r
     return VOLUME_OK;\r
 }\r
+\r
+VolumeSliderEventListener *VolumeSettingView::GetVolumeEventListener(void)\r
+{\r
+    return listener;\r
+}\r
+\r
 }\r
index 3b7b8c5..dd1ef4e 100644 (file)
@@ -31,12 +31,12 @@ public:
     bool CallingViewDisplay();\r
     bool InitPointerValue();\r
     bool OnClick(UIView& view, const ClickEvent& event) override;\r
+    VolumeSettingView *GetvolumeSetting();\r
 private:\r
     int changeImage{0};\r
     bool HintsHandupClick();\r
     KeyInputListener *keyActListenr{nullptr};\r
     VolumeSettingView *volumeSetting{nullptr};\r
-    UIViewGroup *volumeSettingView{nullptr};\r
 };\r
 }\r
 \r
index 93f2560..544d775 100644 (file)
@@ -30,9 +30,8 @@ MainCallingPresenter::~MainCallingPresenter()
 {\r
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "MainCallingPresenter::~MainCallingPresenter");\r
     RootView::GetInstance()->RemoveAll();\r
-    if (volumeSettingView != nullptr) {\r
-        delete volumeSettingView;\r
-        volumeSettingView = nullptr;\r
+    if (volumeSetting != nullptr) {\r
+        delete volumeSetting;\r
         volumeSetting = nullptr;\r
     }\r
     g_pMainView = nullptr;\r
@@ -70,7 +69,7 @@ void MainCallingPresenter::OnStop(void)
 \r
 void MainCallingPresenter::HonrsViewChange()\r
 {\r
-    if (volumeSettingView == nullptr) {\r
+    if (volumeSetting == nullptr) {\r
         volumeSetting = new VolumeSettingView();\r
         if (volumeSetting == nullptr) {\r
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainCallingPresenter::volumeSetting nullptr err");\r
@@ -85,10 +84,9 @@ void MainCallingPresenter::HonrsViewChange()
             ImageInfo *image = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_MUTE_BUTTON, PLAYER_IAMGES);\r
             volumeSetting->GetDecreaseButton()->SetImageSrc(image, image);\r
         }\r
-        volumeSettingView = volumeSetting;\r
-        RootView::GetInstance()->Add(volumeSettingView);\r
+        RootView::GetInstance()->Add(volumeSetting);\r
     }\r
-    VolumeSliderEventListener *volumeSliderEventListener = VolumeSliderEventListener::GetInstance();\r
+    VolumeSliderEventListener *volumeSliderEventListener = volumeSetting->GetVolumeEventListener();\r
     if (volumeSliderEventListener == nullptr) {\r
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainCallingPresenter::volumeSliderEventListener nullptr err");\r
         return;\r
@@ -105,7 +103,7 @@ void MainCallingPresenter::HonrsViewChange()
     view_->GetCallingGroup()->SetVisible(false);\r
     view_->GetWaitingGroup()->SetVisible(false);\r
 \r
-    volumeSettingView->SetVisible(true);\r
+    volumeSetting->SetVisible(true);\r
     // 刷新UI\r
     RootView::GetInstance()->Invalidate();\r
 }\r
@@ -232,4 +230,9 @@ bool MainCallingPresenter::OnClick(UIView& view, const ClickEvent& event)
     }\r
     return true;\r
 }\r
+\r
+VolumeSettingView *MainCallingPresenter::GetvolumeSetting()\r
+{\r
+    return volumeSetting;\r
+}\r
 }
\ No newline at end of file
index f3641a5..7a9d948 100644 (file)
@@ -24,6 +24,8 @@
 #include "service_id_define.h"
 #include "samgr_lite.h"
 #include "ui_service.h"
+#include "msg_center_msg.h"
+
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -596,6 +598,7 @@ static void ConnStateChanged(const bd_addr_t *bdAddr, profile_connect_state_t st
             WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ConnStateChanged] BT connected");
             BtConnectedPro(bdAddr);
             SendMsgToUIService(BT_CONNECTED_TO_UI, 0, nullptr, 0);
+            SendMsgToMsgCenterService(BT_CONNECTED_TO_MSGCENTER, 0, nullptr, 0);
             break;
         case PROFILE_STATE_DISCONNECTING: // 蓝牙连接断连
             WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ConnStateChanged] BT disconnecting");
@@ -604,6 +607,7 @@ static void ConnStateChanged(const bd_addr_t *bdAddr, profile_connect_state_t st
             WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ConnStateChanged] BT disconnected");
             BtDisconnectedPro();
             SendMsgToUIService(BT_DISCONNECTED_TO_UI, 0, nullptr, 0);
+            SendMsgToMsgCenterService(BT_DISCONNECTED_TO_MSGCENTER, 0, nullptr, 0);
             break;
         default:
             break;
@@ -628,7 +632,7 @@ static void ScoConnectPro(void)
         hfp_hf_calls_info_t call = {0};
         HfpIncomingEventPublish(TOPIC_EVENT_HFP_PHONE_TO_WATCH, call);
     }
- 
+
     PostGraphicEvent(AudioSetup);
     WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "[ScoConnectPro] audioState:%d", g_audioState);
 }
@@ -1184,6 +1188,7 @@ static void CallChangeActivePro(const hfp_hf_calls_info_t *call)
     if (phoneCall == nullptr) {
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[CallChangeActivePro] Active no this call");
         AddCurrCallToCallList(call);
+        TransCallToMobilePhone();
         return;
     }
 
index cd2d0f4..98510eb 100644 (file)
@@ -551,7 +551,7 @@ void ButtonOnClickListener::SoundButtonOnClick()
         ImageInfo *image = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_MUTE_BUTTON, PLAYER_IAMGES);
         volumeSettingView->GetDecreaseButton()->SetImageSrc(image, image);
     }
-    VolumeSliderEventListener *volumeSliderEventListener = VolumeSliderEventListener::GetInstance();
+    VolumeSliderEventListener *volumeSliderEventListener = volumeSettingView->GetVolumeEventListener();
     if (volumeSliderEventListener == nullptr) {
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SoundButtonOnClick volumeSliderEventListener nullptr err");
         return;
index c26ec33..93f3e83 100644 (file)
@@ -4,7 +4,7 @@
  * Author:
  * Create: 2021-11-23
  */
-
+#include <algorithm>
 #include "MainModel.h"
 #include "SetDialModel.h"
 #include "kv_store.h"
@@ -27,7 +27,12 @@ namespace OHOS {
     {
         dialInfoList.clear();
         LoadAllDialFromRam();
+        size_t dialSize = dialInfoList.size();
         LoadAllDialFromFs();
+        /* 只排序离线表盘 */
+        std::sort(dialInfoList.begin() + dialSize, dialInfoList.end(), [](const SetDialInfo& f, const SetDialInfo& n) {
+                    return f.dialName < n.dialName;
+                });
     }
 
     void SetDialModel::LoadAllDialFromRam()
@@ -152,20 +157,16 @@ namespace OHOS {
         for (auto iter : dialInfoList) {
             if (dialSetting.dialFlag) {
                 if (strcmp(iter.dialFullName.c_str(), dialSetting.dialFullName.c_str()) == 0) {
-                    break;
+                    return index;
                 }
             } else {
-                if (iter.id == dialSetting.dialId ) {
-                    break;
+                if ((!iter.dialFlag) && (iter.id == dialSetting.dialId)) {
+                    return index;
                 }
             }
             index++;
         }
-        if (index >= dialInfoList.size()) {
-            return 0;
-        } else {
-            return index;
-        }
+        return 0;
     }
 
 }
index 1b21157..63a84c7 100644 (file)
@@ -47,7 +47,7 @@ namespace OHOS {
         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(VIEW_APPLIST)");
-            NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);
+            NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST, TransitionType::TRANSITION_BACK_TO_HEXAGONS);
         }
         return false;
     }
index a6307df..3e4da3c 100644 (file)
@@ -24,6 +24,9 @@
 #include "ui_test_countdown/ui_test_countdown.h"
 #include "ui_test_running_ball/ui_test_running_ball.h"
 #endif
+#if ENABLE_SOFT_KEYBOARD
+#include "ui_test_keyboard/ui_test_keyboard.h"
+#endif
 #include "ui_test_tiger/ui_test_tiger.h"
 #include "ui_test_hexagons_list/ui_test_hexagons_list.h"
 #include "ui_test_video_play/ui_test_video_play.h"
@@ -59,6 +62,9 @@ void UITestGroup::SetUpTestCase()
 #if ENABLE_VGU_ENGINE && CAPABILITY_HWDRAW_PATH
     testCaseList_->PushBack(TestCaseInfo{"倒计时", new UITestCountdown()});
     testCaseList_->PushBack(TestCaseInfo{"动画曲线", new UITestRunningBall()});
+#endif
+#if ENABLE_SOFT_KEYBOARD
+    testCaseList_->PushBack(TestCaseInfo{"软键盘", new UITestKeyboard()});
 #endif
     testCaseList_->PushBack(TestCaseInfo{"视频播放", new UITestVideoPlay()});
 }
index f2a0590..c5180fc 100644 (file)
@@ -13,7 +13,7 @@ extern "C" {
 #endif\r
 #endif\r
 \r
-#ifdef USE_DIAG_LOG\r
+#if !defined(SW_UART_DEBUG) && !defined(SW_RTT_DEBUG)\r
 #include "soc_diag_util.h"\r
 #include "log_oam_logger.h"\r
 #include "log_def.h"\r
@@ -48,12 +48,16 @@ typedef enum {
     WEARABLE_LOG_MODULE_MAX\r
 } WearableLogModuleType;\r
 \r
-#ifdef USE_DIAG_LOG\r
+#if !defined(SW_UART_DEBUG) && !defined(SW_RTT_DEBUG)\r
 #define WEARABLE_LOGE(mod, fmt, arg...) uapi_diag_error_log(0, fmt, ##arg)\r
 #define WEARABLE_LOGW(mod, fmt, arg...) uapi_diag_warning_log(0, fmt, ##arg)\r
 #define WEARABLE_LOGI(mod, fmt, arg...) uapi_diag_info_log(0, fmt, ##arg)\r
+#ifdef WEARABLE_LOG_DEBUG\r
 #define WEARABLE_LOGD(mod, fmt, arg...) uapi_diag_debug_log(0, fmt, ##arg)\r
 #else\r
+#define WEARABLE_LOGD(mod, fmt, arg...)\r
+#endif\r
+#else\r
 #define WEARABLE_LOGE(mod, fmt, arg...) PRINT("[WEARABLE E/] %s: " fmt "\n", __FUNCTION__, ##arg)\r
 #define WEARABLE_LOGW(mod, fmt, arg...) PRINT("[WEARABLE W/] %s: " fmt "\n", __FUNCTION__, ##arg)\r
 #define WEARABLE_LOGI(mod, fmt, arg...) PRINT("[WEARABLE I/] %s: " fmt "\n", __FUNCTION__, ##arg)\r
index 0aa9189..914878b 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 cef97c6..8c53ae5 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 fb41aa5..c8d8e86 100644 (file)
  * limitations under the License.\r
  */\r
 \r
-#ifndef OHOS_MAIN_SERVICE_H\r
-#define OHOS_MAIN_SERVICE_H\r
+#ifndef MSG_CENTER_H\r
+#define MSG_CENTER_H\r
 \r
 #include <cstdint>\r
-\r
 #include "service.h"\r
 #include "iunknown.h"\r
 #include "broadcast_feature.h"\r
@@ -38,6 +37,7 @@ typedef enum {
 \r
 typedef struct MsgCenterFeatureApi {\r
     INHERIT_IUNKNOWN;\r
+    int32_t (*SendMsg)(int32_t msgId, uint32_t msgValue, void *data, int32_t dataLen);\r
 } MsgCenterFeatureApi;\r
 \r
 typedef struct MsgCenter {\r
diff --git a/code/sdk/application/wearable/service/msg_center/include/msg_center_msg.h b/code/sdk/application/wearable/service/msg_center/include/msg_center_msg.h
new file mode 100644 (file)
index 0000000..f32c9b7
--- /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_MSG_H
+#define MSG_CENTER_MSG_H
+
+#include "stdint.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef enum {
+    BT_DISCONNECTED_TO_MSGCENTER,
+    BT_CONNECTED_TO_MSGCENTER,
+    MSGCENTER_ADD_SLEEP_VETO,
+    MSGCENTER_RM_SLEEP_VETO,
+} MsgCenterServiceMsgId;
+
+void SendMsgToMsgCenterService(int32_t msgId, uint32_t msgValue, void *data, int32_t dataLen);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
\ No newline at end of file
index 0b0b14d..09e6824 100644 (file)
@@ -40,6 +40,12 @@ extern "C" {
 #define FILE_SPILT_MAX_SIZE 970 /* SPP包不能超过990字节 */\r
 #define FILE_NAME_MAX_LEN 100\r
 \r
+typedef enum msg_center_pcm_end_flag {\r
+    PCM_END_FLAG_AI_CHAT,     /* AI对话 */\r
+    PCM_END_FLAG_WATCH_FACE,  /* 表盘 */\r
+    PCM_END_FLAG_VECTOR_NAVI, /* 矢量地图 */\r
+} msg_center_pcm_end_flag_t;\r
+\r
 typedef enum msg_center_xiaodu_type_id {\r
     MSGCENTER_TYPE_ID_XIAODU_START = 0x1,\r
     MSGCENTER_TYPE_ID_XIAODU_RECV_XIAODU_INFO,\r
@@ -117,6 +123,10 @@ typedef enum msg_center_vector_navi_type_id {
     MSGCENTER_TYPE_ID_VECTOR_NAVI_REC_GEOCODE_SEARCH,\r
     MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_REGEOCODE_SEARCH,\r
     MSGCENTER_TYPE_ID_VECTOR_NAVI_REC_REGEOCODE_SEARCH,\r
+    /* 地图私有协议 */\r
+    MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_DESTROY_PAGE,\r
+    MSGCENTER_TYPE_ID_VECTOR_NAVI_BT_DISCONNECTED,\r
+    MSGCENTER_TYPE_ID_VECTOR_NAVI_BT_CONNECTED,\r
 } msg_center_vector_navi_type_id_t;\r
 \r
 typedef enum msg_center_alipay_type_id {\r
@@ -281,6 +291,7 @@ static const char *g_vector_navi_str_tb[] = {
     "rec_geocode_search",\r
     "req_regeocode_search",\r
     "rec_regeocode_search",\r
+    "req_destroy_page",\r
 };\r
 \r
 static inline const char* vector_navi_get_str(uint8_t type)\r
@@ -295,6 +306,8 @@ 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
+void msg_center_set_trans_channel(diag_frame_fid_t select);\r
 \r
 #ifdef __cplusplus\r
 #if __cplusplus\r
index 59671ba..82210db 100644 (file)
@@ -15,11 +15,13 @@ enum class CallTimerType {
 };\r
 \r
 namespace OHOS {\r
+class VolumeSettingView;\r
 UIViewGroup* CreatePhoneCallView(void);\r
 UIViewGroup* CreateCallingView(void);\r
 UIViewGroup* CreateMultiplePhoneView(void);\r
 UIViewGroup* CreateWaitingHintsView(void);\r
 void HonrsViewChange(void);\r
+VolumeSettingView *GetvolumeSetting(void);\r
 void FreeCallingView(void);\r
 void FreePhoneCallView(void);\r
 void FreeMultiplePhoneCallView(void);\r
index 71d268a..678a202 100644 (file)
@@ -116,6 +116,7 @@ errcode_t msg_center_vector_navi_req_geocode_search(uint8_t cmd_id, uint8_t type
 errcode_t msg_center_vector_navi_rec_geocode_search(uint8_t cmd_id, uint8_t type, void *usr_data, uint16_t usr_len);\r
 errcode_t msg_center_vector_navi_req_regeocode_search(uint8_t cmd_id, uint8_t type, void *usr_data, uint16_t usr_len);\r
 errcode_t msg_center_vector_navi_rec_regeocode_search(uint8_t cmd_id, uint8_t type, void *usr_data, uint16_t usr_len);\r
+errcode_t msg_center_vector_navi_req_destroy_page(uint8_t cmd_id, uint8_t type, void *usr_data, uint16_t usr_len);\r
 \r
 #ifdef __cplusplus\r
 #if __cplusplus\r
index 3fdb0f0..906a03f 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 97f8329..36d52ce 100644 (file)
@@ -88,6 +88,10 @@ msg_center_cmd_map_t g_msg_center_type_tbl[] = {
     { MSGCENTER_CMD_VECTOR_NAVI, MSGCENTER_TYPE_ID_VECTOR_NAVI_REC_GEOCODE_SEARCH,         msg_center_vector_navi_rec_geocode_search},
     { MSGCENTER_CMD_VECTOR_NAVI, MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_REGEOCODE_SEARCH,       msg_center_vector_navi_req_regeocode_search},
     { MSGCENTER_CMD_VECTOR_NAVI, MSGCENTER_TYPE_ID_VECTOR_NAVI_REC_REGEOCODE_SEARCH,       msg_center_vector_navi_rec_regeocode_search},
+    /* µØÍ¼Ë½ÓÐЭÒé */
+    { MSGCENTER_CMD_VECTOR_NAVI, MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_DESTROY_PAGE,           msg_center_vector_navi_req_destroy_page},
+    { MSGCENTER_CMD_VECTOR_NAVI, MSGCENTER_TYPE_ID_VECTOR_NAVI_BT_DISCONNECTED,              NULL},
+    { MSGCENTER_CMD_VECTOR_NAVI, MSGCENTER_TYPE_ID_VECTOR_NAVI_BT_CONNECTED,                 NULL},
 #endif
 #ifdef SUPPORT_ALIPAY_SEC
     { MSGCENTER_CMD_ALIPAY,      MSGCENTER_TYPE_ID_ALIPAY_NETWORK_STATUS,            msg_center_alipay_network_status},
index 50ed971..f16103f 100644 (file)
@@ -64,7 +64,6 @@ static constexpr uint16 FONT_CALLER_SIZE = 40;
 UIViewGroup* g_phoneView = nullptr;\r
 UIViewGroup* g_multiPhoneView = nullptr;\r
 UIViewGroup* g_callingView = nullptr;\r
-UIViewGroup* g_volumeSettingView = nullptr;\r
 UIViewGroup* g_waitingHintsView = nullptr;\r
 VolumeSettingView *g_volumeSetting = nullptr;\r
 UIImageView* g_imageAgree = nullptr;\r
@@ -173,7 +172,7 @@ void DisableCallTimer(CallTimerType type)
 \r
 void HonrsViewChange(void)\r
 {\r
-    if (g_volumeSettingView == nullptr) {\r
+    if (g_volumeSetting == nullptr) {\r
         g_volumeSetting = new VolumeSettingView();\r
         if (g_volumeSetting == nullptr) {\r
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "makephone_notification::g_volumeSetting nullptr err");\r
@@ -189,20 +188,23 @@ void HonrsViewChange(void)
             ImageInfo *image = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_MUTE_BUTTON, PLAYER_IAMGES);\r
             g_volumeSetting->GetDecreaseButton()->SetImageSrc(image, image);\r
         }\r
-        g_volumeSettingView = g_volumeSetting;\r
-        NotificationManager::GetInstance()->screenContainer_->Add(g_volumeSettingView);\r
+        NotificationManager::GetInstance()->screenContainer_->Add(g_volumeSetting);\r
     }\r
-    VolumeSliderEventListener *volumeSliderEventListener = VolumeSliderEventListener::GetInstance();\r
+    VolumeSliderEventListener *volumeSliderEventListener = g_volumeSetting->GetVolumeEventListener();\r
     if (volumeSliderEventListener == nullptr) {\r
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "makephone_notification::volumeSliderEventListener nullptr err");\r
         return;\r
     }\r
 \r
     volumeSliderEventListener->SetPlayerCoefficients(VOLUMEPHONENOTIFY); // 进度条系数\r
-    g_volumeSettingView->SetVisible(true);\r
+    g_volumeSetting->SetVisible(true);\r
     // 刷新UI\r
     RootView::GetInstance()->Invalidate();\r
 }\r
+VolumeSettingView *GetvolumeSetting(void)\r
+{\r
+    return g_volumeSetting;\r
+}\r
 \r
 static void FreeCallingViewImage(void)\r
 {\r
@@ -553,9 +555,8 @@ void FreeMultiplePhoneCallView(void)
         delete g_multiPhoneView;\r
         g_multiPhoneView = nullptr;\r
     }\r
-    if (g_volumeSettingView != nullptr) {\r
-        delete g_volumeSettingView;\r
-        g_volumeSettingView = nullptr;\r
+    if (g_volumeSetting != nullptr) {\r
+        delete g_volumeSetting;\r
         g_volumeSetting = nullptr;\r
     }\r
 }\r
@@ -613,9 +614,8 @@ void FreeCallingView(void)
         delete g_callingView;\r
         g_callingView = nullptr;\r
     }\r
-    if (g_volumeSettingView != nullptr) {\r
-        delete g_volumeSettingView;\r
-        g_volumeSettingView = nullptr;\r
+    if (g_volumeSetting != nullptr) {\r
+        delete g_volumeSetting;\r
         g_volumeSetting = nullptr;\r
     }\r
 }\r
index 0508c65..1d6fd9d 100644 (file)
@@ -146,8 +146,8 @@ static errcode_t pcm_stream_task_body(void *data)
                 return ERRCODE_FAIL;\r
             }\r
         } else if (msg.msg_id == MSGCENTER_TYPE_ID_XIAODU_END_RECORD) {\r
-            res = msg_center_xiaodu_send_end_record(MSGCENTER_CMD_XIAODU, MSGCENTER_TYPE_ID_XIAODU_END_RECORD, nullptr,\r
-                0);\r
+            res = msg_center_xiaodu_send_end_record(MSGCENTER_CMD_XIAODU, MSGCENTER_TYPE_ID_XIAODU_END_RECORD, msg.data,\r
+                msg.len);\r
             if (res != ERRCODE_SUCC) {\r
                 WEARABLE_LOGE(WEARABLE_LOG_MODULE_MSG_CENTER, "send pcm stream failed");\r
                 return ERRCODE_FAIL;\r
@@ -427,14 +427,14 @@ errcode_t msg_center_xiaodu_send_pcm_stream(uint8_t cmd_id, uint8_t type, void *
 errcode_t msg_center_xiaodu_send_end_record(uint8_t cmd_id, uint8_t type, void *usr_data, uint16_t usr_len)\r
 {\r
     errcode_t ret = ERRCODE_SUCC;\r
-    uint8_t end_record_flag = 0;\r
 \r
-    ret = msg_center_send_data(cmd_id, type, &end_record_flag, sizeof(end_record_flag));\r
+    ret = msg_center_send_data(cmd_id, type, usr_data, usr_len);\r
     if (ret != ERRCODE_SUCC) {\r
         return ERRCODE_FAIL;\r
     }\r
 \r
-    WEARABLE_LOGI(WEARABLE_LOG_MODULE_MSG_CENTER, "send pcm stream end.\r\n");\r
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_MSG_CENTER, "send pcm stream end, usr_data = %d, usr_len = %d\r\n",\r
+                  *(uint8_t *)usr_data, usr_len); /* usr_data参考协议msg_center_pcm_end_flag_t */\r
     pcm_stream_del_queue();\r
     return ERRCODE_SUCC;\r
 }\r
@@ -742,7 +742,7 @@ static errcode_t msg_center_vector_navi_req_common_proc(uint8_t cmd_id, uint8_t
     }\r
 \r
     WEARABLE_LOGI(WEARABLE_LOG_MODULE_MSG_CENTER, "%s, usr_data = %s, usr_len = %d\r\n", vector_navi_get_str(type),\r
-                  usr_data, usr_len);\r
+                  usr_data == NULL ? NULL : usr_data, usr_len);\r
     return ERRCODE_SUCC;\r
 }\r
 \r
@@ -752,7 +752,25 @@ static bool is_vector_navi_longbuf(uint8_t type)
         type == MSGCENTER_TYPE_ID_VECTOR_NAVI_REC_REGEOCODE_SEARCH ||\r
         type == MSGCENTER_TYPE_ID_VECTOR_NAVI_REC_ROUTE_RIDING_SEARCH ||\r
         type == MSGCENTER_TYPE_ID_VECTOR_NAVI_REC_ROUTE_WALKING_SEARCH ||\r
-        type == MSGCENTER_TYPE_ID_VECTOR_NAVI_REC_ROUTE_TRANSIT_SEARCH) {\r
+        type == MSGCENTER_TYPE_ID_VECTOR_NAVI_REC_ROUTE_TRANSIT_SEARCH ||\r
+        type == MSGCENTER_TYPE_ID_VECTOR_NAVI_REC_REMAIN_ROUTE_UPDATE ||\r
+        type == MSGCENTER_TYPE_ID_VECTOR_NAVI_REC_RE_ROUTE_COMPLETE) {\r
+        return true;\r
+    } else {\r
+        return false;\r
+    }\r
+}\r
+\r
+static bool has_two_callback(uint8_t type)\r
+{\r
+    if (type == MSGCENTER_TYPE_ID_VECTOR_NAVI_REC_GEOCODE_SEARCH ||\r
+        type == MSGCENTER_TYPE_ID_VECTOR_NAVI_REC_REGEOCODE_SEARCH ||\r
+        type == MSGCENTER_TYPE_ID_VECTOR_NAVI_RECV_POI ||\r
+        type == MSGCENTER_TYPE_ID_VECTOR_NAVI_REC_ROUTE_RIDING_SEARCH ||\r
+        type == MSGCENTER_TYPE_ID_VECTOR_NAVI_REC_ROUTE_WALKING_SEARCH ||\r
+        type == MSGCENTER_TYPE_ID_VECTOR_NAVI_REC_ROUTE_TRANSIT_SEARCH ||\r
+        type == MSGCENTER_TYPE_ID_VECTOR_NAVI_REC_AUTH_LICENSE ||\r
+        type == MSGCENTER_TYPE_ID_VECTOR_NAVI_REC_NAVI_INIT) {\r
         return true;\r
     } else {\r
         return false;\r
@@ -773,6 +791,14 @@ static errcode_t msg_center_vector_navi_rec_common_proc(uint8_t cmd_id, uint8_t
         return ERRCODE_FAIL;\r
     }\r
 \r
+    #if defined(SUPPORT_POWER_MANAGER)\r
+        const power_display_svr_api_t *display_api = power_display_svr_get_api();\r
+        if (display_api->get_screen_state() != SCREEN_ON) {\r
+            display_api->turn_on_screen();\r
+        }\r
+        display_api->set_screen_set_keepon_timeout(600000); // 600000ms\r
+    #endif\r
+\r
     char *data = (char *)malloc(payload_len + 1);\r
     if (data == nullptr) {\r
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_MSG_CENTER, "%s: malloc failed.\r\n", vector_navi_get_str(type));\r
@@ -784,8 +810,16 @@ static errcode_t msg_center_vector_navi_rec_common_proc(uint8_t cmd_id, uint8_t
     data[payload_len] = '\0';\r
     WEARABLE_LOGI(WEARABLE_LOG_MODULE_MSG_CENTER, "%s -- > %s\r\n", vector_navi_get_str(type), tlv_payload);\r
 \r
-    if (is_vector_navi_longbuf(type)) {\r
+    if (is_vector_navi_longbuf(type) && payload_len != 1) {\r
         msg_center_transfer_longbuf(data, type);\r
+    } else if (has_two_callback(type) && payload_len == 1) {\r
+        if (strcmp(data, "1") == 0) {\r
+            BaidumapSendMsgToJS(data, type);\r
+        } else if ((strcmp(data, "0") == 0)) {\r
+            BaidumapFailSendMsgToJS(data, type);\r
+        } else {\r
+            WEARABLE_LOGI(WEARABLE_LOG_MODULE_MSG_CENTER, "%s, app should trans 0 or 1\r\n", vector_navi_get_str(type));\r
+        }\r
     } else {\r
         BaidumapSendMsgToJS(data, type);\r
     }\r
@@ -1045,6 +1079,11 @@ errcode_t msg_center_vector_navi_rec_regeocode_search(uint8_t cmd_id, uint8_t ty
     return msg_center_vector_navi_rec_common_proc(cmd_id, type, usr_data, usr_len);\r
 }\r
 \r
+errcode_t msg_center_vector_navi_req_destroy_page(uint8_t cmd_id, uint8_t type, void *usr_data, uint16_t usr_len)\r
+{\r
+    return msg_center_vector_navi_req_common_proc(cmd_id, type, usr_data, usr_len);\r
+}\r
+\r
 #ifdef __cplusplus\r
 }\r
 #endif\r
index bfe7eec..6c8cc5f 100644 (file)
 #include "stdint.h"\r
 #include "stdbool.h"\r
 #include "errcode.h"\r
+#if !defined(SW_UART_DEBUG) && !defined(SW_RTT_DEBUG)\r
+#include "soc_diag_util.h"\r
+#include "log_oam_logger.h"\r
+#include "log_def.h"\r
+#else\r
 #include "debug_print.h"\r
+#endif\r
 \r
 #ifdef __cplusplus\r
 #if __cplusplus\r
@@ -34,11 +40,15 @@ extern "C" {
 /* * 获取对应动作的掩码 */\r
 #define GET_ACTION_MASK(action) (1 << ((uint32_t)(action)))\r
 \r
-#ifdef DISPLAY_HSO_DEBUG_LOG\r
-#define POWER_DISPLAY_PRINT_ERR(log_num, fmt, args...) uapi_diag_error_log(0, fmt, ##arg)\r
-#define POWER_DISPLAY_PRINT_WARN(log_num, fmt, args...) uapi_diag_warning_log(0, fmt, ##arg)\r
-#define POWER_DISPLAY_PRINT_INFO(log_num, fmt, args...) uapi_diag_info_log(0, fmt, ##arg)\r
-#define POWER_DISPLAY_PRINT_DEBUG(log_num, fmt, args...)\r
+#if !defined(SW_UART_DEBUG) && !defined(SW_RTT_DEBUG)\r
+#define POWER_DISPLAY_PRINT_ERR(log_num, fmt, arg...) uapi_diag_error_log(0, fmt, ##arg)\r
+#define POWER_DISPLAY_PRINT_WARN(log_num, fmt, arg...) uapi_diag_warning_log(0, fmt, ##arg)\r
+#define POWER_DISPLAY_PRINT_INFO(log_num, fmt, arg...) uapi_diag_info_log(0, fmt, ##arg)\r
+#ifdef WEARABLE_LOG_DEBUG\r
+#define POWER_DISPLAY_PRINT_DEBUG(log_num, fmt, arg...) uapi_diag_debug_log(0, fmt, ##arg)\r
+#else\r
+#define POWER_DISPLAY_PRINT_DEBUG(log_num, fmt, arg...)\r
+#endif\r
 #else\r
 #define POWER_DISPLAY_PRINT_ERR(log_num, fmt, arg...) PRINT("[POWER_MANAGER E/] %s: " fmt "\r\n", __FUNCTION__, ##arg)\r
 #define POWER_DISPLAY_PRINT_WARN(log_num, fmt, arg...) PRINT("[POWER_MANAGER W/] %s: " fmt "\r\n", __FUNCTION__, ##arg)\r
index e4efdee..3509a71 100644 (file)
@@ -190,7 +190,6 @@ static uint32_t action_display_lcd_off()
     ext_errno ret = drv_vau_suspend(NULL);\r
     if (ret != 0) {\r
         POWER_DISPLAY_PRINT_ERR(0, "drv vau suspend error ret=%x\r\n", ret);\r
-        return ERRCODE_FAIL;\r
     }\r
 #ifdef SUPPORT_GPU_JPEG\r
     (void)drv_jpeg_suspend(NULL);\r
@@ -199,7 +198,6 @@ static uint32_t action_display_lcd_off()
     ret = drv_dpu_suspend(NULL);\r
     if (ret != 0) {\r
         POWER_DISPLAY_PRINT_ERR(0, "drv dpu suspend error ret=%x\r\n", ret);\r
-        return ERRCODE_FAIL;\r
     }\r
 #endif\r
 #ifdef SUPPORT_GPU_GMMU\r
index a4921fd..1e1c080 100644 (file)
 #define LCD_FILL_COLOR_ADDR   0x60280000\r
 #endif\r
 \r
-#define PM_SLEEP_SOFT_RESET_FORCE_WKUP_REG 0x57000014\r
-#define PM_SLEEP_SOFT_RESET_FORCE_WKUP_VAL 0xb66\r
-#define PM_MCU_SEND_IPC_WKUP_BT_REG        0x52000034\r
-#define PM_MCU_SEND_IPC_WKUP_BT_VAL        0x2\r
-#define BT_RESET_DELAY  500\r
 #define POWER_KEY_PARAM_LEN                0x2\r
 #define CALENDAR_PARAM_LEN                 0x6\r
 #ifdef CFG_DRIVERS_MMC\r
@@ -416,10 +411,7 @@ uint32_t mcu_os_sys_reset(uint8_t *para, uint32_t para_len)
 \r
     send_spp_diag_msg(g_app_diag_flag, &g_mcu_diag_header, res, DIAG_RES_LEN);\r
     reset_deal_with_fs();\r
-    // when bt at sleep, need wkup bt before soft reset\r
-    writew(PM_SLEEP_SOFT_RESET_FORCE_WKUP_REG, PM_SLEEP_SOFT_RESET_FORCE_WKUP_VAL);\r
-    writew(PM_MCU_SEND_IPC_WKUP_BT_REG, PM_MCU_SEND_IPC_WKUP_BT_VAL);\r
-    uapi_tcxo_delay_ms(BT_RESET_DELAY);\r
+\r
     set_cpu_utils_reset_cause(REBOOT_CAUSE_APPLICATION_SYSRESETREQ);\r
     hal_reboot_chip();\r
     return ERRCODE_SUCC;\r
@@ -1200,10 +1192,7 @@ uint32_t mcu_pm_into_force_ds_mode(uint8_t *para, uint32_t para_len)
 {\r
     unused(para);\r
     unused(para_len);\r
-    // when bt at sleep, need wkup bt before soft reset\r
-    writew(PM_SLEEP_SOFT_RESET_FORCE_WKUP_REG, PM_SLEEP_SOFT_RESET_FORCE_WKUP_VAL);\r
-    writew(PM_MCU_SEND_IPC_WKUP_BT_REG, PM_MCU_SEND_IPC_WKUP_BT_VAL);\r
-    uapi_tcxo_delay_ms(BT_RESET_DELAY);\r
+\r
     set_cpu_utils_reset_cause(REBOOT_CAUSE_APPLICATION_SYSRESETREQ);\r
     writew(0x5702C010, 0x5A5A);\r
     hal_reboot_chip();\r
index 8da417e..d494bbb 100644 (file)
@@ -93,8 +93,10 @@ macro(build_library)
     else()
         if(DEFINED LIB)
         else()
-            message(STATUS "${SOURCES0} is not found, finding lib${COMPONENT_NAME}.a in ${CMAKE_CURRENT_SOURCE_DIR}/${TARGET_COMMAND}")
-            find_library(LINK_LIB_${COMPONENT_NAME} "lib${COMPONENT_NAME}.a" ${CMAKE_CURRENT_SOURCE_DIR}/${TARGET_COMMAND})
+            set(TARGET_COMMAND_TMP ${TARGET_COMMAND})
+            string(REPLACE "-user" "" TARGET_COMMAND_TMP ${TARGET_COMMAND_TMP})
+            message(STATUS "${SOURCES0} is not found, finding lib${COMPONENT_NAME}.a in ${CMAKE_CURRENT_SOURCE_DIR}/${TARGET_COMMAND_TMP}")
+            find_library(LINK_LIB_${COMPONENT_NAME} "lib${COMPONENT_NAME}.a" ${CMAKE_CURRENT_SOURCE_DIR}/${TARGET_COMMAND_TMP})
             if(NOT LINK_LIB_${COMPONENT_NAME})
                 message(FATAL_ERROR "${SOURCES0} is not found && lib${COMPONENT_NAME}.a not find")
             endif()
index 370331f..4ec9688 100644 (file)
@@ -127,6 +127,12 @@ target = {
         'packet': True,
         'fs_image': False
     },
+    #native-js-user: liteos + uikit + nandflash + mipi + psram + audio  典型合封UIKIT版本
+    #离线日志版本
+    'brandy-native-js-user': {
+        'base_target_name': 'brandy-native-js',
+        'defines': ['-:SW_UART_DEBUG'],
+    },
     #native-xts: liteos + uikit + nandflash + mipi + psram + audio  典型合封UIKIT版本
     'brandy-xts': {
         'board': 'evb',
@@ -281,10 +287,11 @@ target_group = {
     'pack_brandy_target4': ['brandy-ssb', 'brandy-target4-r', 'brandy-target4'],
     'pack_brandy_target5': ['brandy-ssb', 'brandy-target5-r', 'brandy-target5'],
     'pack_brandy_native_js': ['brandy-ssb', 'brandy-native-js-r', 'brandy-native-js'],
+    'pack_brandy_native_js_user': ['brandy-ssb', 'brandy-native-js-r', 'brandy-native-js-user'],
     'pack_brandy_xts': ['brandy-ssb', 'brandy-xts-r', 'brandy-xts'],
 
     'brandy_all': ['brandy-ssb',
-                   'brandy-target1', 'brandy-target3', 'brandy-target4', 'brandy-target5', 'brandy-native-js', 'brandy-xts',
+                   'brandy-target1', 'brandy-target3', 'brandy-target4', 'brandy-target5', 'brandy-native-js', 'brandy-native-js-user', 'brandy-xts',
                    'brandy-target1-r', 'brandy-target3-r', 'brandy-target4-r', 'brandy-target5-r', 'brandy-native-js-r', 'brandy-xts-r',
                    'testsuite-brandy-sdk']
 }
diff --git a/code/sdk/build/config/target_config/brandy/nv_bin_cfg/mk_nv_bin_cfg_eng.json b/code/sdk/build/config/target_config/brandy/nv_bin_cfg/mk_nv_bin_cfg_eng.json
new file mode 100644 (file)
index 0000000..d79f523
--- /dev/null
@@ -0,0 +1,10 @@
+{\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/eng",\r
+    "DATABASE_TXT_FILE" : "output/brandy/nv_bin"\r
+}
\ No newline at end of file
diff --git a/code/sdk/build/config/target_config/brandy/nv_bin_cfg/mk_nv_bin_cfg_user.json b/code/sdk/build/config/target_config/brandy/nv_bin_cfg/mk_nv_bin_cfg_user.json
new file mode 100644 (file)
index 0000000..e42ffa6
--- /dev/null
@@ -0,0 +1,10 @@
+{\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/user",\r
+    "DATABASE_TXT_FILE" : "output/brandy/nv_bin"\r
+}
\ No newline at end of file
index 65e14de..3972fe7 100644 (file)
@@ -27,16 +27,28 @@ class CMakeBuilder(BuildEnvironment):
         self.sdk = None
         self.pack_tool = None
 
-    def get_build_cmd(self, env):
+    def get_component(self, env):
         com_config = CommonConfig(env.get('arch'))
-        ext_cmd = []
-        for component in self.component:
+        components = []
+        if env.get('just_build_components', False):
+            just_build_components = env.get('just_build_components', False)
+        else:
+            just_build_components = self.component
+        for component in just_build_components:
             if component in env.get('ram_component', False):
-                ext_cmd.append(component)
-            if component in env.get('ram_component_set', False):
-                for comm in com_config.get_component_set(component):
-                    if comm in env.get('ram_component', False):
-                        ext_cmd.append(comm)
+                components.append(component)
+                continue
+            if component not in env.get('ram_component_set', False):
+                continue
+            for comm in com_config.get_component_set(component):
+                if comm in env.get('ram_component', False):
+                    components.append(comm)
+        return components
+
+    def get_build_cmd(self, env):
+        ext_cmd = []
+        components = self.get_component(env)
+        ext_cmd.extend(components)
         if self.generator == 'Ninja':
             return ['ninja'] + ext_cmd + ['-j%d' % self.thread]
         else:
@@ -114,6 +126,10 @@ class CMakeBuilder(BuildEnvironment):
             return
 
         self.compile_target(target, env)
+
+        if env.get('just_build_components'):
+            return
+
         if env.get("fs_image"):
             fs_image_path = os.path.join(root_path, 'build', 'config', 'target_config', env.get('chip'), 'mk_fs_image')
             fs_script_path = os.path.join(fs_image_path, 'mkyaffs2tool.py')
@@ -268,11 +284,17 @@ class CMakeBuilder(BuildEnvironment):
             _excute(self.cmake_cmd, log_file, self.dump)
             _excute(self.get_build_cmd(env), log_file, self.dump)
         else:
-            _excute(["cmake", "--build", output_path, '-j%d' % self.thread], log_file, self.dump)
-
-        if len(self.component) > 0:
-            print("######### Build target:%s, component:[%s] success" % (target_name, ' '.join(self.component)))
-            exit(0)
+            ext_cmd = []
+            components_target = self.get_component(env)
+            print(components_target)
+            if components_target:
+                ext_cmd = ['--target'] + components_target
+            _excute(["cmake", "--build", output_path, '-j%d' % self.thread] + ext_cmd, log_file, self.dump)
+
+        if len(self.get_component(env)) > 0:
+            os.chdir(org_work_path)
+            print("######### Build target:%s, component:[%s] success" % (target_name, ' '.join(self.get_component(env))))
+            return 0
 
         if env.is_enable_hso() and not nhso:
             cmd = self.get_build_cmd(env)
index c99f798..50df9d5 100644 (file)
@@ -881,7 +881,7 @@ class ParseCtrl():
         """\r
         if self.parse_debug_info_phase_0==True:\r
             return\r
-        with open(file,'r') as fp:\r
+        with open(file,'r',encoding='utf-8') as fp:\r
             lines=fp.readlines()\r
             self.parse_debug_info_lines(lines)\r
         self.parse_debug_info_phase_0=True\r
index ee54a13..5f7115d 100644 (file)
@@ -8,7 +8,9 @@ import sys
 import time
 
 from utils.build_utils import root_path, script_path, target_config_path, output_root
-from utils.build_utils import pkg_tools_path, jlink_tools_path, lzma_tools_path, sign_tools_path, memcheck_tools_path, factory_tools_path, derived_tools_path
+from utils.build_utils import pkg_tools_path, jlink_tools_path, lzma_tools_path, sign_tools_path
+from utils.build_utils import memcheck_tools_path, factory_tools_path, derived_tools_path
+from utils.build_utils import ohos_tools_path
 from utils.build_utils import CopyModule, exec_shell, cmp_file, rm_pyc, rm_all, fn_get_subdirs
 from enviroment import TargetEnvironment
 from sdk_generator.target_config_genarator import genarate_reserve_config
@@ -24,6 +26,7 @@ sdk_copy_common_files = [
     os.path.join(memcheck_tools_path),
     os.path.join(factory_tools_path, 'factory_tools'),
     os.path.join(derived_tools_path),
+    os.path.join(ohos_tools_path),
 ]
 
 sdk_close_components = [
index c43caca..2bed760 100644 (file)
@@ -33,6 +33,7 @@ sign_tools_path = os.path.join(root_path, 'tools', 'bin', 'sign_tool')
 memcheck_tools_path = os.path.join(root_path, 'tools', 'bin', 'memcheck')
 factory_tools_path = os.path.join(root_path, 'tools', 'bin', 'factory_tools')
 derived_tools_path = os.path.join(root_path, 'tools', 'bin', 'derived_key_tool')
+ohos_tools_path = os.path.join(root_path, 'tools', 'bin', 'ohos_tools')
 
 """
 Colors defines. To highlight important output.
index 8e1958e..890eba0 100644 (file)
@@ -12,7 +12,6 @@ set(PRIVATE_HEADER
 )
 
 set(PUBLIC_HEADER
-    ${CMAKE_CURRENT_SOURCE_DIR}
 )
 
 set(PRIVATE_DEFINES
index ae56c7d..ddff778 100644 (file)
@@ -9,7 +9,6 @@ set(SOURCES
 )
 
 set(PUBLIC_HEADER
-    ${CMAKE_CURRENT_SOURCE_DIR}
 )
 
 set(PRIVATE_HEADER
index 6e1caee..f5765bf 100644 (file)
@@ -12,7 +12,6 @@ set(PRIVATE_HEADER
 )
 
 set(PUBLIC_HEADER
-    ${CMAKE_CURRENT_SOURCE_DIR}
 )
 
 set(PRIVATE_DEFINES
index d74083a..e729a5a 100644 (file)
@@ -113,12 +113,7 @@ static void report_or_enqueue_event(input_event_info* touch_info, struct ts_driv
 static void report_event_to_power_manager(input_event_info *touch_info)\r
 {\r
     if (g_power_manager_cb != NULL) {\r
-        input_dev_data_t data;\r
-        convert_touch_info(&data, touch_info);\r
-        if (data.state == INDEV_STATE_UNKNOWN) {\r
-            return;\r
-        }\r
-        g_power_manager_cb(data.state, 0);\r
+        g_power_manager_cb(touch_info->tp_event, 0);\r
     }\r
     return;\r
 }\r
index 9d955eb..99b87bb 100644 (file)
@@ -7,13 +7,27 @@
 
 #include "hal_ipc.h"
 #include "arch_barrier.h"
+#include "chip_io.h"
 
+#define IPC_TRY_SEND_MAX 10000
+#define BT_DEEPSLEEP_FLAG 0x5a5a
+#define IPC_TRY_INTERVAL_TIME 100
 /*
  * MCPU core trigger a interrupt to BCPU core.
  */
 void hal_ipc_interrupt_security(void)
 {
-    MCPU_SOFT_INT_SET |= M_TO_BCPU_INT_OFFSET;
+    volatile uint32_t cnt = IPC_TRY_SEND_MAX;
+    while (cnt > 0) {
+        if (readw(GLB_CTL_B_RB_BASE + 0x1C) != BT_DEEPSLEEP_FLAG) {
+            if (cnt < IPC_TRY_SEND_MAX) {
+                uapi_tcxo_delay_us(IPC_TRY_INTERVAL_TIME);
+            }
+            MCPU_SOFT_INT_SET |= M_TO_BCPU_INT_OFFSET;
+            break;
+        }
+        cnt--;
+    }
 }
 
 /*
index 13d6d7a..e09b252 100644 (file)
 #define HAL_ULP_AON_GENERAL_REG         (ULP_AON_CTL_RB_ADDR + 0x14)
 #define HAL_ULP_AON_NO_POWEROFF_FLAG    0xA5A5
 
-static uint16_t g_reset_cause = REBOOT_CAUSE_UNKNOWN;
+#define PM_SLEEP_SOFT_RESET_FORCE_WKUP_REG 0x57000014
+#define PM_SLEEP_SOFT_RESET_FORCE_WKUP_VAL 0xb66
+#define PM_SLEEP_SOFT_RESET_FORCE_WKUP_ACK 0x499
+#define PM_MCU_SEND_IPC_WKUP_BT_REG        0x52000034
+#define PM_MCU_SEND_IPC_WKUP_BT_VAL        0x2
+#define PM_WAIT_BT_WAKEUP_DELAY            100
+#define HAL_REBOOT_WAIT_ACK_TRY_TIMES      60
+#define BT_RESET_DELAY                     500
+#define POS_NO_POWEROFF 15
+#define POS_FIRST_POWERON 14
 
+static uint16_t g_reset_cause = REBOOT_CAUSE_UNKNOWN;
 void hal_reboot_set_ulp_aon_no_poweroff_flag(void)
 {
-    reg16_write(HAL_ULP_AON_GENERAL_REG, HAL_ULP_AON_NO_POWEROFF_FLAG);
+    reg16_setbit(HAL_ULP_AON_GENERAL_REG, POS_NO_POWEROFF);
 }
 
 bool hal_reboot_get_ulp_aon_no_poweroff_flag(void)
 {
-    if (reg16(HAL_ULP_AON_GENERAL_REG) == HAL_ULP_AON_NO_POWEROFF_FLAG) {
+    if (reg16_getbit(HAL_ULP_AON_GENERAL_REG, POS_NO_POWEROFF)) {
+        return true;
+    } else {
+        return false;
+    }
+}
+
+void hal_reboot_set_first_power_on_flag(void)
+{
+    reg16_setbit(HAL_ULP_AON_GENERAL_REG, POS_FIRST_POWERON);
+}
+
+void hal_reboot_clear_first_power_on_flag(void)
+{
+    reg16_clrbit(HAL_ULP_AON_GENERAL_REG, POS_FIRST_POWERON);
+}
+
+bool hal_reboot_get_first_power_on_flag(void)
+{
+    if (reg16_getbit(HAL_ULP_AON_GENERAL_REG, POS_FIRST_POWERON)) {
         return true;
     } else {
         return false;
@@ -102,6 +131,23 @@ void hal_reboot_chip(void)
     set_cpu_utils_system_boot_magic();
 #ifdef SUPPORT_GPIO
     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)
+    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);
+    writew(PM_MCU_SEND_IPC_WKUP_BT_REG, PM_MCU_SEND_IPC_WKUP_BT_VAL);
+    while((readw(PM_SLEEP_SOFT_RESET_FORCE_WKUP_REG) != PM_SLEEP_SOFT_RESET_FORCE_WKUP_ACK) && \
+          (lock_cnt < max_lock_cnt)) {
+        PRINT("bt not send ack[%x],don't to reset,try %d.\n", readw(PM_SLEEP_SOFT_RESET_FORCE_WKUP_REG), lock_cnt);
+        uapi_tcxo_delay_ms(PM_WAIT_BT_WAKEUP_DELAY);
+        lock_cnt++;
+    }
+#else
+    writew(PM_SLEEP_SOFT_RESET_FORCE_WKUP_REG, PM_SLEEP_SOFT_RESET_FORCE_WKUP_VAL);
+    writew(PM_MCU_SEND_IPC_WKUP_BT_REG, PM_MCU_SEND_IPC_WKUP_BT_VAL);
+    uapi_tcxo_delay_ms(BT_RESET_DELAY);
 #endif
     // Request the reset & wait for it...
     regw_clrbit(HAL_CHIP_RESET_REG, HAL_CHIP_RESET_REG_OFFSET, HAL_CHIP_RESET_REG_ENABLE_RESET_BIT);
index a6b0fcb..ed0140c 100644 (file)
@@ -49,6 +49,22 @@ void hal_reboot_set_ulp_aon_no_poweroff_flag(void);
  */
 bool hal_reboot_get_ulp_aon_no_poweroff_flag(void);
 
+/**
+ * @brief  Set a universal register of the ULP region to a fix value to indicate that is first power-on
+ */
+void hal_reboot_set_first_power_on_flag(void);
+
+/**
+ * @brief  clear a universal register of the ULP region to a fix value to indicate that is not first power-on
+ */
+void hal_reboot_clear_first_power_on_flag(void);
+
+/**
+ * @brief  Get is first power-on
+ * @return true first power-on, false is re-poweron
+ */
+bool hal_reboot_get_first_power_on_flag(void);
+
 /**
   * @}
   */
index 93b3fc6..416f5b6 100644 (file)
@@ -103,6 +103,24 @@ extern "C" {
  */
 #define SERVICE_INFORMATION 0x800000
 
+/**
+ * @if Eng
+ * @brief The Class of Device Audio or Vido.
+ * @else
+ * @brief 音配设备类型。
+ * @endif
+ */
+#define DEVICE_MAJOR_CLASS_AUDIO_VIDEO 0x400
+
+/**
+ * @if Eng
+ * @brief The Class of Device Phone.
+ * @else
+ * @brief 手机设备类型。
+ * @endif
+ */
+#define DEVICE_MAJOR_CLASS_PHONE 0x200
+
 /**
  * @if Eng
  * @brief Enum of Bluetooth stack state.
@@ -772,6 +790,29 @@ errcode_t gap_disconnect_remote_device(const bd_addr_t *addr);
  */
 errcode_t gap_connect_remote_device(const bd_addr_t *addr);
 
+/**
+ * @if Eng
+ * @brief Use this funtion to set the inquiry parameters.
+ * @par  Use this funtion to set the inquiry parameters.
+ * @attention NULL
+ * @param  [in] device_class #uint32_t, class of device to report.
+ * @param  [in] max_num #uint8_t, max number of response devices.
+ * @retval error code
+ * @par Dependency:
+ * @li  bts_gap.h
+ * @else
+ * @brief  设置扫描参数。
+ * @par    设置扫描参数。
+ * @attention 无
+ * @param  [in] device_class 设备类型。
+ * @param  [in] max_num 最大上报数量。
+ * @retval 执行结果错误码。
+ * @par 依赖:
+ * @li  bts_gap.h
+ * @endif
+ */
+errcode_t gap_br_set_inquiry_paramters(uint32_t device_class, uint8_t max_num);
+
 /**
  * @if Eng
  * @brief Use this funtion to start BT discovery.
@@ -1391,6 +1432,29 @@ typedef struct {
  */
 int gap_register_callbacks(gap_call_backs_t *func);
 
+/**
+ * @if Eng
+ * @brief Use this funtion to reconnect a media device.
+ * @par   Use this funtion to reconnect a media device.
+ * @attention NULL
+ * @param  [in] addr #const bd_addr_t *, address of the device.
+ * @retval #true Execute successfully.
+ * @retval #false Execution failed.
+ * @par Dependency:
+ * @li  bts_gap.h
+ * @else
+ * @brief  回连媒体设备。
+ * @par    回连媒体设备。
+ * @attention 无
+ * @param  [in] 要回连的设备地址。
+ * @retval #true  连接成功。
+ * @retval #false  连接失败。
+ * @par 依赖:
+ * @li  bts_gap.h
+ * @endif
+ */
+errcode_t gap_reconnect_media_device(const bd_addr_t *addr);
+
 /**
  * @}
  */
diff --git a/code/sdk/include/middleware/services/bts/common/bts_feature.h b/code/sdk/include/middleware/services/bts/common/bts_feature.h
new file mode 100644 (file)
index 0000000..5c13978
--- /dev/null
@@ -0,0 +1,92 @@
+/*
+ * Copyright (c) @CompanyNameMagicTag 2024. All rights reserved.
+ * Description: BTS FEATURE module.
+ */
+
+/**
+ * @defgroup bluetooth_bts_feature BTS FEATURE API
+ * @ingroup  bluetooth
+ * @{
+ */
+
+
+#ifndef BTS_FEATURE_H
+#define BTS_FEATURE_H
+
+#include <stdint.h>
+#include <stdbool.h>
+#include "errcode.h"
+#include "bts_def.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @if Eng
+ * @brief Struct of BT stack feature.
+ * @else
+ * @brief 蓝牙特性位图。
+ * @endif
+ */
+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.
+                                                @else   保留字段。 @endif */
+} bts_feature_t;
+
+/**
+ * @if Eng
+ * @brief Set BTS Features supported.
+ * @par   Set BTS Features supported.
+ * @attention NULL
+ * @param  [in] feature #bts_feature_t, a bitmap indicate supported features.
+ * @retval #BT_STATUS_SUCCESS   Excute successfully.
+ * @retval #Other               Error code, @ref bt_status_t
+ * @par Dependency:
+ * @li  bts_feature.h
+ * @see
+ * @else
+ * @brief  设置想要使用的特性。
+ * @par    设置想要使用的特性。
+ * @attention 无
+ * @param  [in] 特性位图。 @ref bts_feature_t
+ * @retval #BT_STATUS_SUCCESS   执行成功。
+ * @retval #Other               错误码, @ref bt_status_t。
+ * @par 依赖:
+ * @li  bts_feature.h
+ * @see
+ * @endif
+ */
+errcode_t bts_set_features(bts_feature_t *feature);
+
+/**
+ * @if Eng
+ * @brief Use this funtion to get BTS features supported.
+ * @par  Use this funtion to get BTS features supported.
+ * @attention NULL.
+ * @param  NULL.
+ * @retval BT features bitmap. see @ref bts_feature_t
+ * @par Dependency:
+ * @li  bts_feature.h
+ * @else
+ * @brief  获取BT协议栈支持的特性。
+ * @par    获取BT协议栈支持的特性。
+ * @attention 无
+ * @param  无
+ * @retval BT 特性位图。 参考 @ref bts_feature_t
+ * @par 依赖:
+ * @li  bts_feature.h
+ * @endif
+ */
+bts_feature_t bts_get_features(void);
+
+/**
+ * @}
+ */
+
+#ifdef __cplusplus
+}
+#endif
+#endif
index 9510415..3505361 100644 (file)
@@ -1,10 +1,10 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="create style_name failed. @app_style.cpp(29),ERROR" ID="0xe10200ea" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="style_name set string value error @app_style.cpp(33),ERROR" ID="0xe102010a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="transform prop value must be set. @app_style.cpp(169),ERROR" ID="0xe102054a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="None style to parse. @app_style.cpp(187),ERROR" ID="0xe10205da" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="None style to parse. @app_style.cpp(193),ERROR" ID="0xe102060a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc space error @app_style.cpp(265),ERROR" ID="0xe102084a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="convert style name to char failed, will be dropped @app_style.cpp(295),ERROR" ID="0xe102093a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="style name length is 0 or max, will be dropped @app_style.cpp(300),ERROR" ID="0xe1020962" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="create style error @app_style.cpp(308),ERROR" ID="0xe10209a2" />
+<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>
\ No newline at end of file
index fbc65aa..41741a1 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="0xe10401d2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="app_style set string value error @app_style_item.cpp(62),ERROR" ID="0xe10401f2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="style item transform num to string fail @app_style_item.cpp(77),ERROR" ID="0xe104026a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="convert style prop name to char failed, will be dropped @app_style_item.cpp(90),ERROR" ID="0xe10402d2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="style prop name length is 0, will be dropped @app_style_item.cpp(95),ERROR" ID="0xe10402fa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="new styleItem error @app_style_item.cpp(114),ERROR" ID="0xe1040392" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="convert style value to char failed, will be dropped @app_style_item.cpp(135),ERROR" ID="0xe104043a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="new styleItem error @app_style_item.cpp(161),ERROR" ID="0xe104050a" />
+<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>
\ No newline at end of file
index c12bf10..7b7e87f 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="0xe10801f2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="convert id value to char failed, will be dropped @app_style_manager.cpp(227),ERROR" ID="0xe108071a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="not supported yet @app_style_manager.cpp(243),WARNING" ID="0xe108079b" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="invalid prop count @app_style_manager.cpp(283),ERROR" ID="0xe10808da" />
+<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>
\ No newline at end of file
index 4fc2d03..91cdbc7 100644 (file)
@@ -1,19 +1,19 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="initAppSysCmd bm! @appsys_bms_cmd.cpp(52),INFO" ID="0xe04a01a5" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="cmd_bm ReceiveCallback resultCode = %d @appsys_bms_cmd.cpp(59),INFO" ID="0xe04a01dd" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="argc &gt; 4, ERR!!! @appsys_bms_cmd.cpp(66),ERROR" ID="0xe04a0212" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="input failed! @appsys_bms_cmd.cpp(75),ERROR" ID="0xe04a025a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="argc &gt; 4, ERR!!! @appsys_bms_cmd.cpp(83),ERROR" ID="0xe04a029a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="js app is active, first need terminate @appsys_bms_cmd.cpp(109),INFO" ID="0xe04a036d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="bm dump argc 2 only support allBundles, ERR!!! @appsys_bms_cmd.cpp(121),ERROR" ID="0xe04a03ca" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="cmd_bm dump BundlesInfo len = %d @appsys_bms_cmd.cpp(130),DBG" ID="0xe04a0416" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="cmd_bm dump BundlesInfo bundleName = %s @appsys_bms_cmd.cpp(133),DBG" ID="0xe04a042e" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="cmd_bm dump BundlesInfo versionName = %s @appsys_bms_cmd.cpp(134),DBG" ID="0xe04a0436" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="cmd_bm dump BundlesInfo deviceType = %s @appsys_bms_cmd.cpp(136),DBG" ID="0xe04a0446" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="cmd_bm dump BundlesInfo udid = %d @appsys_bms_cmd.cpp(138),DBG" ID="0xe04a0456" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="cmd_bm dump BundlesInfo isSystemApp = %d @appsys_bms_cmd.cpp(139),DBG" ID="0xe04a045e" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="cmd_bm start @appsys_bms_cmd.cpp(158),INFO" ID="0xe04a04f5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="argc is not 2, ERR!!! @appsys_bms_cmd.cpp(160),ERROR" ID="0xe04a0502" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="cmd_bm command = %s @appsys_bms_cmd.cpp(165),INFO" ID="0xe04a052d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="cmd_bm no correct cmd!!! @appsys_bms_cmd.cpp(179),ERROR" ID="0xe04a059a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="cmd_bm end @appsys_bms_cmd.cpp(182),INFO" ID="0xe04a05b5" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="initAppSysCmd bm! @appsys_bms_cmd.cpp(53),INFO" ID="0xe04a01ad" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="cmd_bm ReceiveCallback resultCode = %d @appsys_bms_cmd.cpp(60),INFO" ID="0xe04a01e5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="argc &gt; 4, ERR!!! @appsys_bms_cmd.cpp(67),ERROR" ID="0xe04a021a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="input failed! @appsys_bms_cmd.cpp(76),ERROR" ID="0xe04a0262" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="argc &gt; 4, ERR!!! @appsys_bms_cmd.cpp(84),ERROR" ID="0xe04a02a2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="js app is active, first need terminate @appsys_bms_cmd.cpp(110),INFO" ID="0xe04a0375" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="bm dump argc 2 only support allBundles, ERR!!! @appsys_bms_cmd.cpp(122),ERROR" ID="0xe04a03d2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="cmd_bm dump BundlesInfo len = %d @appsys_bms_cmd.cpp(131),DBG" ID="0xe04a041e" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="cmd_bm dump BundlesInfo bundleName = %s @appsys_bms_cmd.cpp(134),DBG" ID="0xe04a0436" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="cmd_bm dump BundlesInfo versionName = %s @appsys_bms_cmd.cpp(135),DBG" ID="0xe04a043e" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="cmd_bm dump BundlesInfo deviceType = %s @appsys_bms_cmd.cpp(137),DBG" ID="0xe04a044e" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="cmd_bm dump BundlesInfo udid = %d @appsys_bms_cmd.cpp(139),DBG" ID="0xe04a045e" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="cmd_bm dump BundlesInfo isSystemApp = %d @appsys_bms_cmd.cpp(140),DBG" ID="0xe04a0466" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="cmd_bm start @appsys_bms_cmd.cpp(159),INFO" ID="0xe04a04fd" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="argc is not 2, ERR!!! @appsys_bms_cmd.cpp(161),ERROR" ID="0xe04a050a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="cmd_bm command = %s @appsys_bms_cmd.cpp(166),INFO" ID="0xe04a0535" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="cmd_bm no correct cmd!!! @appsys_bms_cmd.cpp(180),ERROR" ID="0xe04a05a2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="cmd_bm end @appsys_bms_cmd.cpp(183),INFO" ID="0xe04a05bd" />
                        </MSG_LOG>
\ No newline at end of file
index 761c465..da5ee92 100644 (file)
@@ -1,6 +1,6 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="AsyncTaskManager::Dispatch failed: handler is null. @async_task_manager.cpp(115),ERROR" ID="0xe056039a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="AsyncTaskManager::Dispatch failed: Fatal error is hitted. @async_task_manager.cpp(119),ERROR" ID="0xe05603ba" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="AsyncTaskManager::Dispatch failed: out of memory. @async_task_manager.cpp(125),ERROR" ID="0xe05603ea" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="AsyncTaskManager::Cancel failed: invalid task ID. @async_task_manager.cpp(149),ERROR" ID="0xe05604aa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="AsyncTaskManager::CancelWithContext failed: null context. @async_task_manager.cpp(178),ERROR" ID="0xe0560592" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="AsyncTaskManager::Dispatch failed: handler is null. @async_task_manager.cpp(115),ERROR" ID="0xe05a039a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="AsyncTaskManager::Dispatch failed: Fatal error is hitted. @async_task_manager.cpp(119),ERROR" ID="0xe05a03ba" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="AsyncTaskManager::Dispatch failed: out of memory. @async_task_manager.cpp(125),ERROR" ID="0xe05a03ea" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="AsyncTaskManager::Cancel failed: invalid task ID. @async_task_manager.cpp(149),ERROR" ID="0xe05a04aa" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="AsyncTaskManager::CancelWithContext failed: null context. @async_task_manager.cpp(178),ERROR" ID="0xe05a0592" />
                        </MSG_LOG>
\ No newline at end of file
index f33750d..12aa032 100644 (file)
                        <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(1238),ERROR" ID="0xd81626b2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] write req param set fail! @btsrv_gatt_client.c(1244),ERROR" ID="0xd81626e2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] write req addr memcpy fail @btsrv_gatt_client.c(1249),ERROR" ID="0xd816270a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] write req value memcpy fail @btsrv_gatt_client.c(1256),ERROR" ID="0xd8162742" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] gattc write cmd param error @btsrv_gatt_client.c(1278),ERROR" ID="0xd81627f2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] write cmd param new fail! @btsrv_gatt_client.c(1283),ERROR" ID="0xd816281a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] write cmd addr memcpy fail @btsrv_gatt_client.c(1288),ERROR" ID="0xd8162842" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] write cmd value memcpy fail @btsrv_gatt_client.c(1295),ERROR" ID="0xd816287a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] gattc exchange mtu param error @btsrv_gatt_client.c(1317),ERROR" ID="0xd816292a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] addr memcpy fail @btsrv_gatt_client.c(1321),ERROR" ID="0xd816294a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[btsrv][ERROR] mc ble gatt mtu config req atb ret: %d @btsrv_gatt_client.c(1329),ERROR" ID="0xd816298a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] gatt client callback memcpy fail @btsrv_gatt_client.c(1338),ERROR" ID="0xd81629d2" />
+                       <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_LOG>
\ No newline at end of file
index 05dd354..f22cc8a 100644 (file)
                        <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(1628),ERROR" ID="0xd81a32e2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] data memcpy fail @btsrv_gatt_server.c(1636),ERROR" ID="0xd81a3322" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[Error] enable ble first! @btsrv_gatt_server.c(1653),ERROR" ID="0xd81a33aa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] invalid param @btsrv_gatt_server.c(1658),ERROR" ID="0xd81a33d2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] param new fail @btsrv_gatt_server.c(1663),ERROR" ID="0xd81a33fa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] sen ntf/ind by uuid memcpy fail @btsrv_gatt_server.c(1673),ERROR" ID="0xd81a344a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] sen ntf/ind by uuid memcpy fail @btsrv_gatt_server.c(1682),ERROR" ID="0xd81a3492" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="set mtu out of bounds use dft_val:23 set_val:%d. @btsrv_gatt_server.c(1698),WARNING" ID="0xd81a3513" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] gatt server callback memcpy fail @btsrv_gatt_server.c(1711),ERROR" ID="0xd81a357a" />
+                       <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_LOG>
\ No newline at end of file
index 7aea144..6663e84 100644 (file)
@@ -3,9 +3,9 @@
                        <MSG STRUCTURE="diag_log_msg0" NAME="[Error] mc ble l2cap credit channel flow control atb fail! @btsv_l2cap_chan.c(50),ERROR" ID="0xd81e0192" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[Error] bth_l2cap_chan aleardy reg! @btsv_l2cap_chan.c(64),ERROR" ID="0xd81e0202" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[Error] bth_l2cap_chan reg fail! @btsv_l2cap_chan.c(73),ERROR" ID="0xd81e024a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[Error] bth_l2cap_chan == NULL @btsv_l2cap_chan.c(102),ERROR" ID="0xd81e0332" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[Error] conn_node == NULL @btsv_l2cap_chan.c(108),ERROR" ID="0xd81e0362" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[Error] bth chan data write malloc fail! @btsv_l2cap_chan.c(114),ERROR" ID="0xd81e0392" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[Error] bth chan data write: memcpy failed! @btsv_l2cap_chan.c(120),ERROR" ID="0xd81e03c2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[Error] bth chan data write: memcpy failed! @btsv_l2cap_chan.c(128),ERROR" ID="0xd81e0402" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[Error] bth_l2cap_chan == NULL @btsv_l2cap_chan.c(103),ERROR" ID="0xd81e033a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[Error] conn_node == NULL @btsv_l2cap_chan.c(109),ERROR" ID="0xd81e036a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[Error] bth chan data write malloc fail! @btsv_l2cap_chan.c(115),ERROR" ID="0xd81e039a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[Error] bth chan data write: memcpy failed! @btsv_l2cap_chan.c(121),ERROR" ID="0xd81e03ca" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[Error] bth chan data write: memcpy failed! @btsv_l2cap_chan.c(129),ERROR" ID="0xd81e040a" />
                        </MSG_LOG>
\ No newline at end of file
index e487e2d..8860423 100644 (file)
-<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="osal_mutex_init in g_connect_list_lock failed @connection_manager.c(110),ERROR" ID="0xd8060372" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="create timer error! ret: %x @connection_manager.c(183),ERROR" ID="0xd80605ba" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="start timer error! ret: %x @connection_manager.c(191),ERROR" ID="0xd80605fa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="start timer success! @connection_manager.c(196),INFO" ID="0xd8060625" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="already in discovery @connection_manager.c(216),WARNING" ID="0xd80606c3" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="start discovery fail ret: %x @connection_manager.c(230),ERROR" ID="0xd8060732" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="discovery started @connection_manager.c(238),INFO" ID="0xd8060775" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="reconnect phone con_hdl:0x%x, result: %08x @connection_manager.c(355),INFO" ID="0xd8060b1d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="exist connect phone reject! @connection_manager.c(381),INFO" ID="0xd8060bed" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc fail @connection_manager.c(402),ERROR" ID="0xd8060c92" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy fail @connection_manager.c(406),ERROR" ID="0xd8060cb2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="send msg fail. %x @connection_manager.c(412),ERROR" ID="0xd8060ce2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="create acl cfm ret = %08x @connection_manager.c(420),INFO" ID="0xd8060d25" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="dev_hdl: 0x%08x cod: 0x%x link_type: 0x%x @connection_manager.c(449),INFO" ID="0xd8060e0d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="already exist conn_node @connection_manager.c(459),INFO" ID="0xd8060e5d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="accept not paired earbuds. @connection_manager.c(468),INFO" ID="0xd8060ea5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="exist same type conn node. @connection_manager.c(472),INFO" ID="0xd8060ec5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="add conn info error! @connection_manager.c(479),ERROR" ID="0xd8060efa" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="btsdk_disconnect_acl_by_handle ret: %x @connection_manager.c(486),INFO" ID="0xd8060f35" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc fail @connection_manager.c(494),ERROR" ID="0xd8060f72" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="get addr fail @connection_manager.c(501),ERROR" ID="0xd8060faa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy fail @connection_manager.c(506),ERROR" ID="0xd8060fd2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="send msg fail. %x @connection_manager.c(512),ERROR" ID="0xd8061002" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="connect exist conn_node @connection_manager.c(528),INFO" ID="0xd8061085" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="exist same type conn_node, disconnect. @connection_manager.c(534),INFO" ID="0xd80610b5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="find remote node fail @connection_manager.c(542),WARNING" ID="0xd80610f3" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="add conn info error! @connection_manager.c(549),ERROR" ID="0xd806112a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="create acl ret = %08x @connection_manager.c(561),WARNING" ID="0xd806118b" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="acl is connected @connection_manager.c(569),INFO" ID="0xd80611cd" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="dev_hdl: %08x @connection_manager.c(578),INFO" ID="0xd8061215" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="not exist conn node. @connection_manager.c(581),INFO" ID="0xd806122d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="is phone=0x%x @connection_manager.c(584),INFO" ID="0xd8061245" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="status error dev_hdl: %x status: %d @connection_manager.c(587),WARNING" ID="0xd806125b" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="btsdk_disconnect_acl_by_handle ret: %x @connection_manager.c(627),INFO" ID="0xd806139d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="send msg connecting @connection_manager.c(659),INFO" ID="0xd806149d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc fail @connection_manager.c(663),ERROR" ID="0xd80614ba" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy fail @connection_manager.c(667),ERROR" ID="0xd80614da" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="send msg fail. %x @connection_manager.c(673),ERROR" ID="0xd806150a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="send msg connecting success! @connection_manager.c(676),INFO" ID="0xd8061525" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="stop timer @connection_manager.c(681),INFO" ID="0xd806154d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="stop timer success! @connection_manager.c(689),INFO" ID="0xd806158d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="start timer @connection_manager.c(694),INFO" ID="0xd80615b5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy fail @connection_manager.c(704),ERROR" ID="0xd8061602" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="create timer error! ret: %x @connection_manager.c(709),ERROR" ID="0xd806162a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="start timer error! ret: %x @connection_manager.c(715),ERROR" ID="0xd806165a" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="start timer success! try to reconnect %d times interval %dms @connection_manager.c(720),INFO" ID="0xd8061685" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="dev_hdl: %08x reason: %08x @connection_manager.c(752),INFO" ID="0xd8061785" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="no conn record dev_hdl: %08x @connection_manager.c(761),WARNING" ID="0xd80617cb" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="rmt device class=0x%x is phone: 0x%x @connection_manager.c(771),INFO" ID="0xd806181d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="get addr fail @connection_manager.c(784),WARNING" ID="0xd8061883" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="get remote dev addr failed. dev_hdl: %x @connection_manager.c(798),WARNING" ID="0xd80618f3" />
-                       <MSG STRUCTURE="diag_log_msg6" NAME="addr: ****%02x%02x%02x%02x dev_hdl: %08x gap_remove_pair ret(bool): %d @connection_manager.c(807),INFO" ID="0xd806193d" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="error dev_hdl: %x pair_ret: %x disconn_ret: %x @connection_manager.c(816),WARNING" ID="0xd8061983" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="dev_hdl: %08x @connection_manager.c(823),INFO" ID="0xd80619bd" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="conn node is null dev_hdl: %x @connection_manager.c(827),INFO" ID="0xd80619dd" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="status error dev_hdl: %x status: %d @connection_manager.c(833),INFO" ID="0xd8061a0d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="dev_hdl: %08x @connection_manager.c(847),INFO" ID="0xd8061a7d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="get addr fail @connection_manager.c(855),WARNING" ID="0xd8061abb" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="rmt device is phone @connection_manager.c(862),INFO" ID="0xd8061af5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="rmt device is not phone @connection_manager.c(865),INFO" ID="0xd8061b0d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="node not exist @connection_manager.c(876),INFO" ID="0xd8061b65" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="success @connection_manager.c(884),INFO" ID="0xd8061ba5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="descovery result @connection_manager.c(947),INFO" ID="0xd8061d9d" />
-                       <MSG STRUCTURE="diag_log_msg5" NAME="found device addr: ****%02x%02x%02x%02x name: %s @connection_manager.c(958),INFO" ID="0xd8061df5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="gap_get_device_name failed @connection_manager.c(960),INFO" ID="0xd8061e05" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="get addr fail @connection_manager.c(984),WARNING" ID="0xd8061ec3" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="get device name fail @connection_manager.c(991),WARNING" ID="0xd8061efb" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="unhandled msg id: %d @connection_manager.c(1060),WARNING" ID="0xd8062123" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="set discovery status to stop @connection_manager.c(1078),INFO" ID="0xd80621b5" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="unhandled msg id: %d @connection_manager.c(1149),WARNING" ID="0xd80623eb" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="show conn list: @connection_manager.c(1170),INFO" ID="0xd8062495" />
-                       <MSG STRUCTURE="diag_log_msg7" NAME="| %-4s | %-32s | %-12s | %-16s | %-16s | %-8s | %-8s | @connection_manager.c(1172),INFO" ID="0xd80624a5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="remote is null @connection_manager.c(1180),ERROR" ID="0xd80624e2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="addr memcpy_s fail @connection_manager.c(1183),ERROR" ID="0xd80624fa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="name memcpy_s fail @connection_manager.c(1186),ERROR" ID="0xd8062512" />
-                       <MSG STRUCTURE="diag_log_msg10" NAME="| %-4d | %-32s | ****%02x%02x%02x%02x | %-16d | %-16d | %-8d | %-8d | @connection_manager.c(1191),INFO" ID="0xd806253d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="show conn list end! @connection_manager.c(1196),INFO" ID="0xd8062565" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="show ble conn list: @connection_manager.c(1203),INFO" ID="0xd806259d" />
-                       <MSG STRUCTURE="diag_log_msg9" NAME="| %-4s | %-12s | %-10s | %-8s | %-12s | %-12s | %-12s | %-12s  | %-48s | @connection_manager.c(1208),INFO" ID="0xd80625c5" />
-                       <MSG STRUCTURE="diag_log_msg11" NAME="| %-4d | %02x******%02x%02x | %-10d | %-8d | %-12d | %-12d | %-12d | %-12d | %-48s | @connection_manager.c(1221),INFO" ID="0xd806262d" />
-                       <MSG STRUCTURE="diag_log_msg8" NAME="| %-4s | %-12s | %-10s | %-8s | %-12s | %-12s | %-12s | %-12s  | @connection_manager.c(1228),INFO" ID="0xd8062665" />
-                       <MSG STRUCTURE="diag_log_msg10" NAME="| %-4d | %02x******%02x%02x | %-10d | %-8d | %-12d | %-12d | %-12d | %-12d | @connection_manager.c(1234),INFO" ID="0xd8062695" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="show ble conn list end! @connection_manager.c(1241),INFO" ID="0xd80626cd" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="show link mode: @connection_manager.c(1253),INFO" ID="0xd806272d" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="| %-4s | %-32s | %-12s | %-16s | @connection_manager.c(1255),INFO" ID="0xd806273d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="remote is null @connection_manager.c(1264),ERROR" ID="0xd8062782" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="addr memcpy_s fail @connection_manager.c(1267),ERROR" ID="0xd806279a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="name memcpy_s fail @connection_manager.c(1270),ERROR" ID="0xd80627b2" />
-                       <MSG STRUCTURE="diag_log_msg7" NAME="| %-4d | %-32s | ****%02x%02x%02x%02x | %-16s | @connection_manager.c(1278),INFO" ID="0xd80627f5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="show link mode end! @connection_manager.c(1283),INFO" ID="0xd806281d" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="set scan mode old=%d new=%d @connection_manager.c(1345),INFO" ID="0xd8062a0d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="btsdk_set_discovery_mode ret: %x @connection_manager.c(1356),INFO" ID="0xd8062a65" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="btsdk_set_discovery_mode mode: %x ret: %x @connection_manager.c(1367),INFO" ID="0xd8062abd" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="already in discovery @connection_manager.c(1389),INFO" ID="0xd8062b6d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="bt is not enabled @connection_manager.c(1402),WARNING" ID="0xd8062bd3" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="discovery already stopped @connection_manager.c(1407),WARNING" ID="0xd8062bfb" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="btsdk_stop_device_discovery ret=0x%x @connection_manager.c(1412),INFO" ID="0xd8062c25" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="discovery stopped @connection_manager.c(1415),INFO" ID="0xd8062c3d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="not start bt @connection_manager.c(1441),INFO" ID="0xd8062d0d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="param id null @connection_manager.c(1445),INFO" ID="0xd8062d2d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="exist connect audio device @connection_manager.c(1451),INFO" ID="0xd8062d5d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="gap_br_cancel_discovery fail @connection_manager.c(1456),INFO" ID="0xd8062d85" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="btsdk_disconnect_acl_by_handle ret: %x @connection_manager.c(1492),INFO" ID="0xd8062ea5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] gatt client add conn node memcpy fail. @connection_manager.c(1559),ERROR" ID="0xd80630ba" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="btsrv connect state change cbk arg NULL! @connection_manager.c(1571),ERROR" ID="0xd806311a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="connect state update memcpy fail. @connection_manager.c(1576),ERROR" ID="0xd8063142" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="connect node is null. @connection_manager.c(1591),ERROR" ID="0xd80631ba" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble smp paired keys cbk param error @connection_manager.c(1608),ERROR" ID="0xd8063242" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="paired keys malloc fail. @connection_manager.c(1614),ERROR" ID="0xd8063272" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="paired keys malloc fail. @connection_manager.c(1619),ERROR" ID="0xd806329a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="pair keys notify, keys addr memcpy fail. @connection_manager.c(1624),ERROR" ID="0xd80632c2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="pair keys notify, keys memcpy fail. @connection_manager.c(1631),ERROR" ID="0xd80632fa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble smp paired complete cbk param error @connection_manager.c(1648),ERROR" ID="0xd8063382" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="connect param update incomes arg is NULL! @connection_manager.c(1659),ERROR" ID="0xd80633da" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="connect param update, conn_node not found. @connection_manager.c(1666),ERROR" ID="0xd8063412" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="connect param update,connect_params NULL. @connection_manager.c(1672),ERROR" ID="0xd8063442" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="connect param update, addr memcpy fail. @connection_manager.c(1678),ERROR" ID="0xd8063472" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="connect param update done ret:%d. @connection_manager.c(1687),INFO" ID="0xd80634bd" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="gap_ble_connect_remote_device not start bt @connection_manager.c(1696),INFO" ID="0xd8063505" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="gap_ble_connect_remote_device param id null @connection_manager.c(1700),INFO" ID="0xd8063525" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][INFO] addr memcpy to param fail. @connection_manager.c(1706),INFO" ID="0xd8063555" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv]addr memcpy fail. @connection_manager.c(1724),INFO" ID="0xd80635e5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="addr memcpy_s fail @connection_manager.c(1741),ERROR" ID="0xd806366a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="read remote device rssi, conn_node not found. @connection_manager.c(1760),ERROR" ID="0xd8063702" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="read remote device rssi fail @connection_manager.c(1765),ERROR" ID="0xd806372a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="conn_node not found. @connection_manager.c(1779),ERROR" ID="0xd806379a" />
+<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>
\ No newline at end of file
index b261f5f..927a87a 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="0xe0ca02f2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="delete native view pointer from native element failed. @descriptor_utils.cpp(193),WARNING" ID="0xe0ca060b" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Failed to create descriptor because the type argument is null or empty. @descriptor_utils.cpp(211),ERROR" ID="0xe0ca069a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Failed to create descriptor because the getter argument is not a function. @descriptor_utils.cpp(216),ERROR" ID="0xe0ca06c2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Failed to create descriptor because the render argument is not a function. @descriptor_utils.cpp(221),ERROR" ID="0xe0ca06ea" />
+<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>
\ No newline at end of file
index 8749a49..3e6f360 100644 (file)
@@ -1,2 +1,2 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="malloc buffer for path failed. @dft_impl.cpp(43),ERROR" ID="0xe058015a" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="malloc buffer for path failed. @dft_impl.cpp(43),ERROR" ID="0xe05c015a" />
                        </MSG_LOG>
\ No newline at end of file
index 33085c0..bd45882 100644 (file)
@@ -1,9 +1,9 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="[Error value to string failed] @dfx_assist.cpp(36),ERROR" ID="0xe05a0122" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[Error message too long] @dfx_assist.cpp(43),ERROR" ID="0xe05a015a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc memory failed! @dfx_assist.cpp(50),ERROR" ID="0xe05a0192" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME=" [JS Error]: %s @dfx_assist.cpp(57),ERROR" ID="0xe05a01ca" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc memory failed! @dfx_assist.cpp(95),ERROR" ID="0xe05a02fa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[Exception backtrace]: @dfx_assist.cpp(99),ERROR" ID="0xe05a031a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="%u: [Backtrace string too long] @dfx_assist.cpp(108),ERROR" ID="0xe05a0362" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="%u: %s @dfx_assist.cpp(112),ERROR" ID="0xe05a0382" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="[Error value to string failed] @dfx_assist.cpp(36),ERROR" ID="0xe05e0122" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[Error message too long] @dfx_assist.cpp(43),ERROR" ID="0xe05e015a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc memory failed! @dfx_assist.cpp(50),ERROR" ID="0xe05e0192" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME=" [JS Error]: %s @dfx_assist.cpp(57),ERROR" ID="0xe05e01ca" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc memory failed! @dfx_assist.cpp(95),ERROR" ID="0xe05e02fa" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[Exception backtrace]: @dfx_assist.cpp(99),ERROR" ID="0xe05e031a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="%u: [Backtrace string too long] @dfx_assist.cpp(108),ERROR" ID="0xe05e0362" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="%u: %s @dfx_assist.cpp(112),ERROR" ID="0xe05e0382" />
                        </MSG_LOG>
\ No newline at end of file
index 2af67a1..fb1e68e 100644 (file)
@@ -1,9 +1,9 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="failed to execute the callback function of event. @event_util.cpp(42),ERROR" ID="0xe05c0152" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="failed to execute the callback function of event. @event_util.cpp(48),ERROR" ID="0xe05c0182" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="failed to set direction attribute for event argument. @event_util.cpp(113),ERROR" ID="0xe05c038a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="fail to invoke event callback. @event_util.cpp(132),ERROR" ID="0xe05c0422" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="EventUtil::InvokeCallback failed: Async task dispatch failure. @event_util.cpp(142),ERROR" ID="0xe05c0472" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="fail to get element by UI view. @event_util.cpp(151),ERROR" ID="0xe05c04ba" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="fail to get element by UI view. @event_util.cpp(156),ERROR" ID="0xe05c04e2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="fail to get element by UI view. @event_util.cpp(161),ERROR" ID="0xe05c050a" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="failed to execute the callback function of event. @event_util.cpp(42),ERROR" ID="0xe0600152" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="failed to execute the callback function of event. @event_util.cpp(48),ERROR" ID="0xe0600182" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="failed to set direction attribute for event argument. @event_util.cpp(113),ERROR" ID="0xe060038a" />
+                       <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 f7dd785..e1b3f67 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="0xe0ba01c2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="the JS task is not killed after sleep very long time @fatal_handler.cpp(77),ERROR" ID="0xe0ba026a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="hitted again when handling fatal error @fatal_handler.cpp(157),WARNING" ID="0xe0ba04eb" />
+<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>
\ No newline at end of file
index f2218a2..6c735f0 100644 (file)
@@ -1,33 +1,33 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg1" NAME="GtBundleInstaller::PreCheckBundle fileSize = %d @gt_bundle_installer.cpp(65),INFO" ID="0xe042020d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="bundleName does not match the appId! @gt_bundle_installer.cpp(91),ERROR" ID="0xe04202da" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[BMS] bundle num is %d @gt_bundle_installer.cpp(107),INFO" ID="0xe042035d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[BMS] bundle quantity exceeds the limit! @gt_bundle_installer.cpp(110),ERROR" ID="0xe0420372" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[BMS] APPVERI_AppVerify is %d @gt_bundle_installer.cpp(126),INFO" ID="0xe04203f5" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="VINCENTSS::GtBundleInstaller::Install path = %s @gt_bundle_installer.cpp(181),INFO" ID="0xe04205ad" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[BMS] create random str fail! @gt_bundle_installer.cpp(208),ERROR" ID="0xe0420682" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="VINCENTSS::GtBundleInstaller::Install 0002 @gt_bundle_installer.cpp(212),INFO" ID="0xe04206a5" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="errorCode3 = %d @gt_bundle_installer.cpp(216),INFO" ID="0xe04206c5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="VINCENTSS::GtBundleInstaller::Install 003 @gt_bundle_installer.cpp(224),INFO" ID="0xe0420705" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="VINCENTSS::GtBundleInstaller::ProcessBundleInstall 001 @gt_bundle_installer.cpp(258),INFO" ID="0xe0420815" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="errorCode1 = %d @gt_bundle_installer.cpp(263),INFO" ID="0xe042083d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="VINCENTSS::GtBundleInstaller::ProcessBundleInstall 002 @gt_bundle_installer.cpp(269),INFO" ID="0xe042086d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="errorCode2 = %d @gt_bundle_installer.cpp(273),INFO" ID="0xe042088d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="errorCode3 = %d @gt_bundle_installer.cpp(287),INFO" ID="0xe04208fd" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="errorCode4 = %d @gt_bundle_installer.cpp(304),INFO" ID="0xe0420985" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="errorCode5 = %d @gt_bundle_installer.cpp(312),INFO" ID="0xe04209c5" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="errorCode6 = %d @gt_bundle_installer.cpp(317),INFO" ID="0xe04209ed" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="errorCode7 = %d @gt_bundle_installer.cpp(328),INFO" ID="0xe0420a45" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="errorCode8 = %d @gt_bundle_installer.cpp(335),INFO" ID="0xe0420a7d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="errorCode9 = %d @gt_bundle_installer.cpp(345),INFO" ID="0xe0420acd" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="errorCode10 = %d @gt_bundle_installer.cpp(352),INFO" ID="0xe0420b05" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="errorCode11 = %d @gt_bundle_installer.cpp(361),INFO" ID="0xe0420b4d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="errorCode12 = %d @gt_bundle_installer.cpp(367),INFO" ID="0xe0420b7d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[BMS] UpdateBundleInfo errorCode = %d @gt_bundle_installer.cpp(369),INFO" ID="0xe0420b8d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[BMS] srcRawFilePath is nullptr @gt_bundle_installer.cpp(389),ERROR" ID="0xe0420c2a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[BMS] rawfile is not exists! @gt_bundle_installer.cpp(394),INFO" ID="0xe0420c55" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[BMS] dstRawFilePath is nullptr @gt_bundle_installer.cpp(402),ERROR" ID="0xe0420c92" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[BMS] frename rawfile fail! @gt_bundle_installer.cpp(408),ERROR" ID="0xe0420cc2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[BMS] transform js to bc when install, result is %d @gt_bundle_installer.cpp(555),INFO" ID="0xe042115d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[BMS] ConvertResInfoToBundleInfo errorCode = %d @gt_bundle_installer.cpp(580),INFO" ID="0xe0421225" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[BMS] delete permissions, result is %d @gt_bundle_installer.cpp(814),INFO" ID="0xe0421975" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg1" NAME="GtBundleInstaller::PreCheckBundle fileSize = %d @gt_bundle_installer.cpp(66),INFO" ID="0xe0420215" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="bundleName does not match the appId! @gt_bundle_installer.cpp(92),ERROR" ID="0xe04202e2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[BMS] bundle num is %d @gt_bundle_installer.cpp(108),INFO" ID="0xe0420365" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[BMS] bundle quantity exceeds the limit! @gt_bundle_installer.cpp(111),ERROR" ID="0xe042037a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[BMS] APPVERI_AppVerify is %d @gt_bundle_installer.cpp(127),INFO" ID="0xe04203fd" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="VINCENTSS::GtBundleInstaller::Install path = %s @gt_bundle_installer.cpp(182),INFO" ID="0xe04205b5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[BMS] create random str fail! @gt_bundle_installer.cpp(209),ERROR" ID="0xe042068a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="VINCENTSS::GtBundleInstaller::Install 0002 @gt_bundle_installer.cpp(213),INFO" ID="0xe04206ad" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="errorCode3 = %d @gt_bundle_installer.cpp(217),INFO" ID="0xe04206cd" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="VINCENTSS::GtBundleInstaller::Install 003 @gt_bundle_installer.cpp(225),INFO" ID="0xe042070d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="VINCENTSS::GtBundleInstaller::ProcessBundleInstall 001 @gt_bundle_installer.cpp(259),INFO" ID="0xe042081d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="errorCode1 = %d @gt_bundle_installer.cpp(264),INFO" ID="0xe0420845" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="VINCENTSS::GtBundleInstaller::ProcessBundleInstall 002 @gt_bundle_installer.cpp(270),INFO" ID="0xe0420875" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="errorCode2 = %d @gt_bundle_installer.cpp(274),INFO" ID="0xe0420895" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="errorCode3 = %d @gt_bundle_installer.cpp(288),INFO" ID="0xe0420905" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="errorCode4 = %d @gt_bundle_installer.cpp(305),INFO" ID="0xe042098d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="errorCode5 = %d @gt_bundle_installer.cpp(313),INFO" ID="0xe04209cd" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="errorCode6 = %d @gt_bundle_installer.cpp(318),INFO" ID="0xe04209f5" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="errorCode7 = %d @gt_bundle_installer.cpp(329),INFO" ID="0xe0420a4d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="errorCode8 = %d @gt_bundle_installer.cpp(336),INFO" ID="0xe0420a85" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="errorCode9 = %d @gt_bundle_installer.cpp(346),INFO" ID="0xe0420ad5" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="errorCode10 = %d @gt_bundle_installer.cpp(353),INFO" ID="0xe0420b0d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="errorCode11 = %d @gt_bundle_installer.cpp(362),INFO" ID="0xe0420b55" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="errorCode12 = %d @gt_bundle_installer.cpp(368),INFO" ID="0xe0420b85" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[BMS] UpdateBundleInfo errorCode = %d @gt_bundle_installer.cpp(370),INFO" ID="0xe0420b95" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[BMS] srcRawFilePath is nullptr @gt_bundle_installer.cpp(390),ERROR" ID="0xe0420c32" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[BMS] rawfile is not exists! @gt_bundle_installer.cpp(395),INFO" ID="0xe0420c5d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[BMS] dstRawFilePath is nullptr @gt_bundle_installer.cpp(403),ERROR" ID="0xe0420c9a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[BMS] frename rawfile fail! @gt_bundle_installer.cpp(409),ERROR" ID="0xe0420cca" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[BMS] transform js to bc when install, result is %d @gt_bundle_installer.cpp(556),INFO" ID="0xe0421165" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[BMS] ConvertResInfoToBundleInfo errorCode = %d @gt_bundle_installer.cpp(581),INFO" ID="0xe042122d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[BMS] delete permissions, result is %d @gt_bundle_installer.cpp(815),INFO" ID="0xe042197d" />
                        </MSG_LOG>
\ No newline at end of file
index 4651a24..0b41cd5 100644 (file)
@@ -30,5 +30,4 @@
                        <MSG STRUCTURE="diag_log_msg1" NAME="[BMS] delete byte code, result is %d @gt_bundle_manager_service.cpp(809),INFO" ID="0xe044194d" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[BMS] add transform result record fail when restart! @gt_bundle_manager_service.cpp(822),ERROR" ID="0xe04419b2" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[BMS] refresh transform result record fail when restart! @gt_bundle_manager_service.cpp(828),ERROR" ID="0xe04419e2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="current sign mode is %d @gt_bundle_manager_service.cpp(1070),INFO" ID="0xe0442175" />
                        </MSG_LOG>
\ No newline at end of file
index e6d452d..2777196 100644 (file)
@@ -1,13 +1,32 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="Invalid file path. @image_cache_manager.cpp(50),ERROR" ID="0xcb1c0192" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="File(%s) can not open. errno: %d @image_cache_manager.cpp(56),ERROR" ID="0xcb1c01c2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ResId is invalid. @image_cache_manager.cpp(65),ERROR" ID="0xcb1c020a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="DirId can not match @image_cache_manager.cpp(70),ERROR" ID="0xcb1c0232" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ResId is out of the range @image_cache_manager.cpp(75),ERROR" ID="0xcb1c025a" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg1" NAME="Invalid file path: %s @image_cache_manager.cpp(49),ERROR" ID="0xcb1c018a" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="File(%s) can not open. errno: %d @image_cache_manager.cpp(55),ERROR" ID="0xcb1c01ba" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ResId is invalid: 0x%x @image_cache_manager.cpp(64),ERROR" ID="0xcb1c0202" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="DirId can not match: resId: 0x%x, dirId: 0x%x @image_cache_manager.cpp(69),ERROR" ID="0xcb1c022a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ResId is out of the range: 0x%x @image_cache_manager.cpp(74),ERROR" ID="0xcb1c0252" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="multiImgInfo is nullptr! @image_cache_manager.cpp(95),ERROR" ID="0xcb1c02fa" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="UIMalloc node failed! @image_cache_manager.cpp(105),ERROR" ID="0xcb1c034a" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="multiImgInfo.info is nullptr @image_cache_manager.cpp(115),ERROR" ID="0xcb1c039a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Res file is already loaded. @image_cache_manager.cpp(354),WARNING" ID="0xcb1c0b13" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Res file is not loaded. @image_cache_manager.cpp(529),ERROR" ID="0xcb1c108a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Res file is not loaded. @image_cache_manager.cpp(557),ERROR" ID="0xcb1c116a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Res file is not loaded. @image_cache_manager.cpp(584),ERROR" ID="0xcb1c1242" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Res file is not loaded. @image_cache_manager.cpp(599),ERROR" ID="0xcb1c12ba" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Res file is not loaded. @image_cache_manager.cpp(687),ERROR" ID="0xcb1c157a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="UIMalloc for node failed! @image_cache_manager.cpp(155),ERROR" ID="0xcb1c04da" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ImageCacheMalloc for img data failed! @image_cache_manager.cpp(163),ERROR" ID="0xcb1c051a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="CreateImageNode failed! @image_cache_manager.cpp(228),ERROR" ID="0xcb1c0722" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="fread info header failed! @image_cache_manager.cpp(236),ERROR" ID="0xcb1c0762" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="LoadAllImgInfo failed! @image_cache_manager.cpp(262),ERROR" ID="0xcb1c0832" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="LoadSingleImgInfo failed! node is nullptr or imgIndex is invalid. @image_cache_manager.cpp(270),ERROR" ID="0xcb1c0872" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="CreateImageNode failed! @image_cache_manager.cpp(292),ERROR" ID="0xcb1c0922" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="LoadSingleImgInfo failed! @image_cache_manager.cpp(320),ERROR" ID="0xcb1c0a02" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="LoadAllInMultiRes failed! Open file failed: %s @image_cache_manager.cpp(331),ERROR" ID="0xcb1c0a5a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="fread bin header failed! @image_cache_manager.cpp(343),ERROR" ID="0xcb1c0aba" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="LoadAllImgInfo failed! @image_cache_manager.cpp(362),ERROR" ID="0xcb1c0b52" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="LoadAllInMultiRes failed! file: %s @image_cache_manager.cpp(377),ERROR" ID="0xcb1c0bca" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="Res file is already loaded. @image_cache_manager.cpp(385),WARNING" ID="0xcb1c0c0b" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="CreateImageNode failed! @image_cache_manager.cpp(403),ERROR" ID="0xcb1c0c9a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy info header failed! @image_cache_manager.cpp(407),ERROR" ID="0xcb1c0cba" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy img data failed! @image_cache_manager.cpp(412),ERROR" ID="0xcb1c0ce2" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="LoadOneInMultiRes failed! resId: 0x%x, file: %s @image_cache_manager.cpp(499),ERROR" ID="0xcb1c0f9a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="CreateImageNode failed! @image_cache_manager.cpp(513),ERROR" ID="0xcb1c100a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="Res file is not loaded: %s @image_cache_manager.cpp(570),ERROR" ID="0xcb1c11d2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="Res file is not loaded. @image_cache_manager.cpp(598),ERROR" ID="0xcb1c12b2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="Res file is not loaded: %s @image_cache_manager.cpp(625),ERROR" ID="0xcb1c138a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="Res file is not loaded. @image_cache_manager.cpp(640),ERROR" ID="0xcb1c1402" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="CreateImageNode failed! @image_cache_manager.cpp(687),ERROR" ID="0xcb1c157a" />
                        </MSG_LOG>
\ No newline at end of file
index 7d25e5b..c0397f6 100644 (file)
@@ -1,16 +1,16 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg1" NAME="available free size: %d @js_ability.cpp(56),DBG" ID="0xe0bc01c6" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Launch only can be triggered once @js_ability.cpp(64),ERROR" ID="0xe0bc0202" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="invalid app path @js_ability.cpp(70),ERROR" ID="0xe0bc0232" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="invalid bundle name @js_ability.cpp(76),ERROR" ID="0xe0bc0262" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Create JSAbilityRuntime failed @js_ability.cpp(91),ERROR" ID="0xe0bc02da" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Must trigger Launch first @js_ability.cpp(109),ERROR" ID="0xe0bc036a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="LIFECYCLE: JS Ability will be shown @js_ability.cpp(113),INFO" ID="0xe0bc038d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Must trigger Launch first @js_ability.cpp(124),ERROR" ID="0xe0bc03e2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="LIFECYCLE: JS Ability will be hidden @js_ability.cpp(127),INFO" ID="0xe0bc03fd" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Must trigger Launch first @js_ability.cpp(138),ERROR" ID="0xe0bc0452" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="LIFECYCLE: JS Ability is exiting @js_ability.cpp(142),INFO" ID="0xe0bc0475" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Fail to recover screen visible property @js_ability.cpp(152),ERROR" ID="0xe0bc04c2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Must trigger Launch first @js_ability.cpp(167),ERROR" ID="0xe0bc053a" />
-                       <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="0xe0bc05ba" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSAbility::HandleRenderTick js app is not forground @js_ability.cpp(218),ERROR" ID="0xe0bc06d2" />
+<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>
\ No newline at end of file
index 29f309b..2f88837 100644 (file)
@@ -1,8 +1,8 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="invalid input parameters @js_ability_impl.cpp(35),ERROR" ID="0xe0be011a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="already initialized, return @js_ability_impl.cpp(40),ERROR" ID="0xe0be0142" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="relocate js file failed @js_ability_impl.cpp(62),ERROR" ID="0xe0be01f2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc router heap memory failed. @js_ability_impl.cpp(75),ERROR" ID="0xe0be025a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="no router instance to perform the show request @js_ability_impl.cpp(135),ERROR" ID="0xe0be043a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="no router instance to perform the hide request @js_ability_impl.cpp(144),ERROR" ID="0xe0be0482" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="view model is undefined when call user's init @js_ability_impl.cpp(164),ERROR" ID="0xe0be0522" />
+<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>
\ No newline at end of file
index c56e1a8..e2684fa 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="0xe0c0020a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Failed to eval js code cause by empty JavaScript script. @js_app_context.cpp(75),ERROR" ID="0xe0c0025a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="empty js file or length is incorrect, eval user code failed @js_app_context.cpp(86),ERROR" ID="0xe0c002b2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="JS mode changed unexpected [%{public}d] @js_app_context.cpp(161),ERROR" ID="0xe0c0050a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Failed to render app cause by render error. @js_app_context.cpp(180),ERROR" ID="0xe0c005a2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Nothing to render as it is undefined. @js_app_context.cpp(185),ERROR" ID="0xe0c005ca" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc buffer for current ability path failed @js_app_context.cpp(222),ERROR" ID="0xe0c006f2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc buffer for current uuid failed @js_app_context.cpp(239),ERROR" ID="0xe0c0077a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc buffer for current js path failed @js_app_context.cpp(269),ERROR" ID="0xe0c0086a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="uri is null. @js_app_context.cpp(302),ERROR" ID="0xe0c00972" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="uri is empty or too long. @js_app_context.cpp(307),ERROR" ID="0xe0c0099a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="fail to get resource path. @js_app_context.cpp(313),ERROR" ID="0xe0c009ca" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="fail to get resource path. @js_app_context.cpp(320),ERROR" ID="0xe0c00a02" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="fail to get resource path. @js_app_context.cpp(325),ERROR" ID="0xe0c00a2a" />
+<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>
\ No newline at end of file
index b37a76d..edbeccf 100644 (file)
@@ -1,6 +1,6 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="JsAppEnvironment::JsAppEnvironment @js_app_environment.cpp(47),DBG" ID="0xe0c2017e" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Failed to load JavaScript framework. @js_app_environment.cpp(108),ERROR" ID="0xe0c20362" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Success to load JavaScript framework. @js_app_environment.cpp(112),INFO" ID="0xe0c20385" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ACELite is running in snapshot mode @js_app_environment.cpp(141),DBG" ID="0xe0c2046e" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ACELite is running in JS parser mode @js_app_environment.cpp(143),DBG" ID="0xe0c2047e" />
+<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>
\ No newline at end of file
index 5b1487d..14b5042 100644 (file)
@@ -1,2 +1,2 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg1" NAME="please connect to debugger server with localhost:%d @js_debugger_config.cpp(56),INFO" ID="0xe05e01c5" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg1" NAME="please connect to debugger server with localhost:%d @js_debugger_config.cpp(56),INFO" ID="0xe06201c5" />
                        </MSG_LOG>
\ No newline at end of file
index 3b0d444..8bfb5fa 100644 (file)
@@ -1,46 +1,46 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="js value is not bool. @js_fwk_common.cpp(99),ERROR" ID="0xe060031a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Failed to set function property cause by empty name. @js_fwk_common.cpp(110),ERROR" ID="0xe0600372" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Failed to set function property cause by empty handler. @js_fwk_common.cpp(115),ERROR" ID="0xe060039a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="jerry_value_to_string failed, can not continue to generate char buffer @js_fwk_common.cpp(149),ERROR" ID="0xe06004aa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc buffer for convert jerry string failed @js_fwk_common.cpp(159),ERROR" ID="0xe06004fa" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="jerry string to char buffer failed, target size[%d] @js_fwk_common.cpp(170),ERROR" ID="0xe0600552" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="js value is not bool. @js_fwk_common.cpp(190),ERROR" ID="0xe06005f2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="js number value is out of range. @js_fwk_common.cpp(208),DBG" ID="0xe0600686" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="js number value is out of range. @js_fwk_common.cpp(212),DBG" ID="0xe06006a6" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="cstr is nullptr. @js_fwk_common.cpp(226),ERROR" ID="0xe0600712" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="secLength is too long. @js_fwk_common.cpp(409),ERROR" ID="0xe0600cca" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="append path error @js_fwk_common.cpp(433),ERROR" ID="0xe0600d8a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="error happen when append path @js_fwk_common.cpp(443),ERROR" ID="0xe0600dda" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="input path or fileName is invalid @js_fwk_common.cpp(460),ERROR" ID="0xe0600e62" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="input path or fileName is too long @js_fwk_common.cpp(467),ERROR" ID="0xe0600e9a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="malloc buffer for path failed, needed length[%u] @js_fwk_common.cpp(475),ERROR" ID="0xe0600eda" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc dirPath memory heap failed. @js_fwk_common.cpp(519),ERROR" ID="0xe060103a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="file doesn't exit or it's empty, [%s] @js_fwk_common.cpp(596),ERROR" ID="0xe06012a2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="realpath handle failed, [%s] @js_fwk_common.cpp(613),ERROR" ID="0xe060132a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="file name too long. @js_fwk_common.cpp(631),ERROR" ID="0xe06013ba" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="splice trace data failed. @js_fwk_common.cpp(639),ERROR" ID="0xe06013fa" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="open file[%s] failed for reading. @js_fwk_common.cpp(655),ERROR" ID="0xe060147a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="open file[fd: %d] failed for reading @js_fwk_common.cpp(687),ERROR" ID="0xe060157a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="open file[path: %s] failed for reading @js_fwk_common.cpp(688),ERROR" ID="0xe0601582" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="malloc buffer for file content failed, file length[%d] @js_fwk_common.cpp(694),ERROR" ID="0xe06015b2" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="read fail, count(%d), length(%u), path(%s) @js_fwk_common.cpp(703),ERROR" ID="0xe06015fa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="error index.js file path after locate @js_fwk_common.cpp(732),ERROR" ID="0xe06016e2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="empty index.js file path after locate @js_fwk_common.cpp(737),ERROR" ID="0xe060170a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="malloc buffer for file path calculating from url, file length[%d] @js_fwk_common.cpp(807),ERROR" ID="0xe060193a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="append path error when calculating from url @js_fwk_common.cpp(811),ERROR" ID="0xe060195a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="watcher is undefined when inserting a watcher. @js_fwk_common.cpp(847),ERROR" ID="0xe0601a7a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc memory watcher failed. @js_fwk_common.cpp(854),ERROR" ID="0xe0601ab2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="No component binds element. @js_fwk_common.cpp(945),ERROR" ID="0xe0601d8a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="malloc buffer for path failed, needed length[%u] @js_fwk_common.cpp(1177),ERROR" ID="0xe06024ca" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="use strcpy_s secure function errro(%d) @js_fwk_common.cpp(1184),ERROR" ID="0xe0602502" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="get imagePath failed! @js_fwk_common.cpp(1221),ERROR" ID="0xe060262a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="malloc buffer for path failed, needed length[%u] @js_fwk_common.cpp(1250),ERROR" ID="0xe0602712" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="strcat_s failed! @js_fwk_common.cpp(1257),ERROR" ID="0xe060274a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="the image suffix error, please check! @js_fwk_common.cpp(1263),ERROR" ID="0xe060277a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Failed to parse image src cause by empty source. @js_fwk_common.cpp(1277),ERROR" ID="0xe06027ea" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Failed to parse image src cause by empty source. @js_fwk_common.cpp(1281),ERROR" ID="0xe060280a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Relative path is not allowed in image src. @js_fwk_common.cpp(1288),ERROR" ID="0xe0602842" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="the fontFamily is too long @js_fwk_common.cpp(1313),ERROR" ID="0xe060290a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc string failed @js_fwk_common.cpp(1319),ERROR" ID="0xe060293a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="copy fontFamily failed @js_fwk_common.cpp(1323),ERROR" ID="0xe060295a" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="js value is not bool. @js_fwk_common.cpp(99),ERROR" ID="0xe064031a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="Failed to set function property cause by empty name. @js_fwk_common.cpp(110),ERROR" ID="0xe0640372" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="Failed to set function property cause by empty handler. @js_fwk_common.cpp(115),ERROR" ID="0xe064039a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="jerry_value_to_string failed, can not continue to generate char buffer @js_fwk_common.cpp(149),ERROR" ID="0xe06404aa" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc buffer for convert jerry string failed @js_fwk_common.cpp(159),ERROR" ID="0xe06404fa" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="jerry string to char buffer failed, target size[%d] @js_fwk_common.cpp(170),ERROR" ID="0xe0640552" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="js value is not bool. @js_fwk_common.cpp(190),ERROR" ID="0xe06405f2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="js number value is out of range. @js_fwk_common.cpp(208),DBG" ID="0xe0640686" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="js number value is out of range. @js_fwk_common.cpp(212),DBG" ID="0xe06406a6" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="cstr is nullptr. @js_fwk_common.cpp(226),ERROR" ID="0xe0640712" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="secLength is too long. @js_fwk_common.cpp(409),ERROR" ID="0xe0640cca" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="append path error @js_fwk_common.cpp(433),ERROR" ID="0xe0640d8a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="error happen when append path @js_fwk_common.cpp(443),ERROR" ID="0xe0640dda" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="input path or fileName is invalid @js_fwk_common.cpp(460),ERROR" ID="0xe0640e62" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="input path or fileName is too long @js_fwk_common.cpp(467),ERROR" ID="0xe0640e9a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="malloc buffer for path failed, needed length[%u] @js_fwk_common.cpp(475),ERROR" ID="0xe0640eda" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc dirPath memory heap failed. @js_fwk_common.cpp(519),ERROR" ID="0xe064103a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="file doesn't exit or it's empty, [%s] @js_fwk_common.cpp(596),ERROR" ID="0xe06412a2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="realpath handle failed, [%s] @js_fwk_common.cpp(613),ERROR" ID="0xe064132a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="file name too long. @js_fwk_common.cpp(631),ERROR" ID="0xe06413ba" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="splice trace data failed. @js_fwk_common.cpp(639),ERROR" ID="0xe06413fa" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="open file[%s] failed for reading. @js_fwk_common.cpp(655),ERROR" ID="0xe064147a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="open file[fd: %d] failed for reading @js_fwk_common.cpp(687),ERROR" ID="0xe064157a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="open file[path: %s] failed for reading @js_fwk_common.cpp(688),ERROR" ID="0xe0641582" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="malloc buffer for file content failed, file length[%d] @js_fwk_common.cpp(694),ERROR" ID="0xe06415b2" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="read fail, count(%d), length(%u), path(%s) @js_fwk_common.cpp(703),ERROR" ID="0xe06415fa" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="error index.js file path after locate @js_fwk_common.cpp(732),ERROR" ID="0xe06416e2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="empty index.js file path after locate @js_fwk_common.cpp(737),ERROR" ID="0xe064170a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="malloc buffer for file path calculating from url, file length[%d] @js_fwk_common.cpp(807),ERROR" ID="0xe064193a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="append path error when calculating from url @js_fwk_common.cpp(811),ERROR" ID="0xe064195a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="watcher is undefined when inserting a watcher. @js_fwk_common.cpp(847),ERROR" ID="0xe0641a7a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc memory watcher failed. @js_fwk_common.cpp(854),ERROR" ID="0xe0641ab2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="No component binds element. @js_fwk_common.cpp(945),ERROR" ID="0xe0641d8a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="malloc buffer for path failed, needed length[%u] @js_fwk_common.cpp(1177),ERROR" ID="0xe06424ca" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="use strcpy_s secure function errro(%d) @js_fwk_common.cpp(1184),ERROR" ID="0xe0642502" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="get imagePath failed! @js_fwk_common.cpp(1221),ERROR" ID="0xe064262a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="malloc buffer for path failed, needed length[%u] @js_fwk_common.cpp(1250),ERROR" ID="0xe0642712" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="strcat_s failed! @js_fwk_common.cpp(1257),ERROR" ID="0xe064274a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="the image suffix error, please check! @js_fwk_common.cpp(1263),ERROR" ID="0xe064277a" />
+                       <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_LOG>
\ No newline at end of file
index 2b3ff62..4247ae3 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="0xe0fc00ed" />
-                       <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="0xe0fc014a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="init state -&gt; ready state @js_page_state.cpp(49),INFO" ID="0xe0fc018d" />
-                       <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="0xe0fc01e2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="current state(%d) -&gt; show state @js_page_state.cpp(68),INFO" ID="0xe0fc0225" />
-                       <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="0xe0fc026a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="current state(%d) -&gt; background state @js_page_state.cpp(85),INFO" ID="0xe0fc02ad" />
-                       <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="0xe0fc02ea" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="current state(%d) -&gt; destroy state @js_page_state.cpp(102),INFO" ID="0xe0fc0335" />
-                       <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="0xe0fc037a" />
+<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>
\ No newline at end of file
index 065db36..d53ccf5 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="0xe0fe029a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc path memory heap failed. @js_page_state_machine.cpp(116),ERROR" ID="0xe0fe03a2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="delete $page property failed from global object. @js_page_state_machine.cpp(148),ERROR" ID="0xe0fe04a2" />
-                       <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="0xe0fe0502" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="statemachine init failed as object is invalid. @js_page_state_machine.cpp(177),ERROR" ID="0xe0fe058a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="statemachine init failed as uri is invalid. @js_page_state_machine.cpp(186),ERROR" ID="0xe0fe05d2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="statemachine init failed as uri is invalid. @js_page_state_machine.cpp(194),ERROR" ID="0xe0fe0612" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="statemachine init failed as uri is empty. @js_page_state_machine.cpp(201),ERROR" ID="0xe0fe064a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="statemachine init failed as generating js file's path failed. @js_page_state_machine.cpp(211),ERROR" ID="0xe0fe069a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="statemachine init failed as js file isn't existed. @js_page_state_machine.cpp(220),ERROR" ID="0xe0fe06e2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="error input state:%d @js_page_state_machine.cpp(278),ERROR" ID="0xe0fe08b2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="relocat page JS file failed @js_page_state_machine.cpp(295),ERROR" ID="0xe0fe093a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Eval JS file failed @js_page_state_machine.cpp(301),ERROR" ID="0xe0fe096a" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="JS Heap allocBytes[%d], peakAllocBytes[%d] @js_page_state_machine.cpp(333),DBG" ID="0xe0fe0a6e" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="StateMachine::ShowPage @js_page_state_machine.cpp(365),INFO" ID="0xe0fe0b6d" />
-                       <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="0xe0fe0b7b" />
-                       <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="0xe0fe0bf3" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="input parameter is invalid when invoking page life cycle callback. @js_page_state_machine.cpp(399),ERROR" ID="0xe0fe0c7a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="delete $page property failed from global object. @js_page_state_machine.cpp(424),ERROR" ID="0xe0fe0d42" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="delete $root property failed from global object. @js_page_state_machine.cpp(433),ERROR" ID="0xe0fe0d8a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[%d] components leaked! @js_page_state_machine.cpp(475),ERROR" ID="0xe0fe0eda" />
+<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>
\ No newline at end of file
index e755012..1e7dbea 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="0xe0c6066a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc performance data buffer failed @js_profiler.cpp(211),ERROR" ID="0xe0c6069a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="sync js profiler msg error @js_profiler.cpp(224),ERROR" ID="0xe0c60702" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ace js profiler flushmsg sprintf error @js_profiler.cpp(231),ERROR" ID="0xe0c6073a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ace js profiler create error @js_profiler.cpp(237),ERROR" ID="0xe0c6076a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ace js profiler open error @js_profiler.cpp(243),ERROR" ID="0xe0c6079a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ace dump js profiler msg error @js_profiler.cpp(251),ERROR" ID="0xe0c607da" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ace js profiler close error @js_profiler.cpp(257),ERROR" ID="0xe0c6080a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ace js profiler memset_s failed @js_profiler.cpp(280),ERROR" ID="0xe0c608c2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ace js profiler memset_s failed @js_profiler.cpp(289),ERROR" ID="0xe0c6090a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ace js profiler tag(%d) mismatch! @js_profiler.cpp(358),ERROR" ID="0xe0c60b32" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ace js profiler memset_s msg failed @js_profiler.cpp(394),ERROR" ID="0xe0c60c52" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ace js profiler write msg failed @js_profiler.cpp(398),ERROR" ID="0xe0c60c72" />
+<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>
\ No newline at end of file
index a38c907..cc56b35 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="0xe10000fa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="router is replacing, can not handle the new request @js_router.cpp(43),ERROR" ID="0xe100015a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc state machine memory heap failed. @js_router.cpp(48),ERROR" ID="0xe1000182" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="dispatch replacing request failed @js_router.cpp(64),ERROR" ID="0xe1000202" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="replace sync failed, new sm should be prepared @js_router.cpp(78),ERROR" ID="0xe1000272" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="the whole application is in background, move to HIDE state directly @js_router.cpp(94),DBG" ID="0xe10002f6" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="no SM when performing show @js_router.cpp(110),ERROR" ID="0xe1000372" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="no SM when performing background @js_router.cpp(122),ERROR" ID="0xe10003d2" />
+<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>
\ No newline at end of file
index 46264ea..c9bf4d9 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="0xe0ce010a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CreateObject has not been implemented in this js engine! @jsi.cpp(43),ERROR" ID="0xe0ce015a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:SetProperty failed! @jsi.cpp(51),ERROR" ID="0xe0ce019a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:SetProperty has not been implemented in this js engine! @jsi.cpp(61),ERROR" ID="0xe0ce01ea" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:SetNamedProperty failed! @jsi.cpp(68),ERROR" ID="0xe0ce0222" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:SetNamedProperty has not been implemented in this js engine! @jsi.cpp(76),ERROR" ID="0xe0ce0262" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:SetNumberProperty failed! @jsi.cpp(83),ERROR" ID="0xe0ce029a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:SetBooleanProperty failed! @jsi.cpp(94),ERROR" ID="0xe0ce02f2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:SetStringProperty failed! @jsi.cpp(105),ERROR" ID="0xe0ce034a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:SetStringPropertyWithBufferSize failed! @jsi.cpp(116),ERROR" ID="0xe0ce03a2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CreateJerryFuncHelper get function pointer failed! @jsi.cpp(137),ERROR" ID="0xe0ce044a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CreateJerryFuncHelper allocate memory failed! @jsi.cpp(149),ERROR" ID="0xe0ce04aa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CreateFunction failed! @jsi.cpp(166),ERROR" ID="0xe0ce0532" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CreateFunction has not been implemented in this js engine! @jsi.cpp(175),ERROR" ID="0xe0ce057a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CreateString has not been implemented in this js engine! @jsi.cpp(188),ERROR" ID="0xe0ce05e2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CreateStringWithBufferSize has not been implemented in this js engine! @jsi.cpp(201),ERROR" ID="0xe0ce064a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CreateUndefined has not been implemented in this js engine! @jsi.cpp(210),ERROR" ID="0xe0ce0692" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueIsFunction has not been implemented in this js engine! @jsi.cpp(220),ERROR" ID="0xe0ce06e2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueIsUndefined has not been implemented in this js engine! @jsi.cpp(230),ERROR" ID="0xe0ce0732" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueIsNumber has not been implemented in this js engine! @jsi.cpp(240),ERROR" ID="0xe0ce0782" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueIsString has not been implemented in this js engine! @jsi.cpp(250),ERROR" ID="0xe0ce07d2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueIsBoolean has not been implemented in this js engine! @jsi.cpp(260),ERROR" ID="0xe0ce0822" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueIsNull has not been implemented in this js engine! @jsi.cpp(270),ERROR" ID="0xe0ce0872" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueIsObject has not been implemented in this js engine! @jsi.cpp(280),ERROR" ID="0xe0ce08c2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueIsError has not been implemented in this js engine! @jsi.cpp(290),ERROR" ID="0xe0ce0912" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:JsonStringify failed! @jsi.cpp(298),ERROR" ID="0xe0ce0952" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:JsonStringify has not been implemented in this js engine! @jsi.cpp(307),ERROR" ID="0xe0ce099a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:JsonParse failed! @jsi.cpp(315),ERROR" ID="0xe0ce09da" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:JsonParse has not been implemented in this js engine! @jsi.cpp(322),ERROR" ID="0xe0ce0a12" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:GetProperty failed! @jsi.cpp(330),ERROR" ID="0xe0ce0a52" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:GetProperty has not been implemented in this js engine! @jsi.cpp(338),ERROR" ID="0xe0ce0a92" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:GetNamedProperty failed! @jsi.cpp(346),ERROR" ID="0xe0ce0ad2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:GetNamedProperty has not been implemented in this js engine! @jsi.cpp(355),ERROR" ID="0xe0ce0b1a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:GetNumberProperty failed! @jsi.cpp(363),ERROR" ID="0xe0ce0b5a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:GetBooleanProperty failed! @jsi.cpp(375),ERROR" ID="0xe0ce0bba" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:GetStringProperty failed! @jsi.cpp(387),ERROR" ID="0xe0ce0c1a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ReleaseValue has not been implemented in this js engine! @jsi.cpp(403),ERROR" ID="0xe0ce0c9a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:GetStringPropertyWithBufferSize failed! @jsi.cpp(410),ERROR" ID="0xe0ce0cd2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CallFunction failed! @jsi.cpp(430),ERROR" ID="0xe0ce0d72" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CallFunction error returned! @jsi.cpp(439),ERROR" ID="0xe0ce0dba" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CallFunction allocate memory failed! @jsi.cpp(446),ERROR" ID="0xe0ce0df2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CallFunction error returned! @jsi.cpp(455),ERROR" ID="0xe0ce0e3a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CallFunction has not been implemented in this js engine! @jsi.cpp(461),ERROR" ID="0xe0ce0e6a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CreateNumber has not been implemented in this js engine! @jsi.cpp(470),ERROR" ID="0xe0ce0eb2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CreateNumberNan has not been implemented in this js engine! @jsi.cpp(480),ERROR" ID="0xe0ce0f02" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CreateError parameters invalid! @jsi.cpp(555),ERROR" ID="0xe0ce115a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CreateError has not been implemented in this js engine! @jsi.cpp(563),ERROR" ID="0xe0ce119a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:GetErrorType has not been implemented in this js engine! @jsi.cpp(578),ERROR" ID="0xe0ce1212" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CreateBoolean has not been implemented in this js engine! @jsi.cpp(588),ERROR" ID="0xe0ce1262" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CreateNull has not been implemented in this js engine! @jsi.cpp(598),ERROR" ID="0xe0ce12b2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CreateSymbol has not been implemented in this js engine! @jsi.cpp(610),ERROR" ID="0xe0ce1312" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueIsSymbol has not been implemented in this js engine! @jsi.cpp(620),ERROR" ID="0xe0ce1362" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CreateArray has not been implemented in this js engine! @jsi.cpp(631),ERROR" ID="0xe0ce13ba" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:SetPropertyByIndex has not been implemented in this js engine! @jsi.cpp(650),ERROR" ID="0xe0ce1452" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueToString params invalid! @jsi.cpp(661),ERROR" ID="0xe0ce14aa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueToString malloc memory for empty char failed! @jsi.cpp(670),ERROR" ID="0xe0ce14f2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueToString malloc memory failed! @jsi.cpp(678),ERROR" ID="0xe0ce1532" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueToString jerry string to char buffer failed @jsi.cpp(683),ERROR" ID="0xe0ce155a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueToString has not been implemented in this js engine! @jsi.cpp(693),ERROR" ID="0xe0ce15aa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueToStringWithBufferSize params invalid! @jsi.cpp(703),ERROR" ID="0xe0ce15fa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueToStringWithBufferSize malloc memory failed! @jsi.cpp(716),ERROR" ID="0xe0ce1662" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueToStringWithBufferSize jerry string to char buffer failed @jsi.cpp(722),ERROR" ID="0xe0ce1692" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueToStringWithBufferSize has not been implemented in this js engine! @jsi.cpp(731),ERROR" ID="0xe0ce16da" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueToNumber params invalid! @jsi.cpp(742),ERROR" ID="0xe0ce1732" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueToNumber has not been implemented in this js engine! @jsi.cpp(747),ERROR" ID="0xe0ce175a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueToBoolean params invalid! @jsi.cpp(757),ERROR" ID="0xe0ce17aa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueToBoolean has not been implemented in this js engine! @jsi.cpp(762),ERROR" ID="0xe0ce17d2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:JSIValueToString has not been implemented in this js engine! @jsi.cpp(775),ERROR" ID="0xe0ce183a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:GetArrayLength params invalid! @jsi.cpp(785),ERROR" ID="0xe0ce188a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:GetArrayLength has not been implemented in this js engine! @jsi.cpp(790),ERROR" ID="0xe0ce18b2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:GetPropertyByIndex has not been implemented in this js engine! @jsi.cpp(801),ERROR" ID="0xe0ce190a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:GetObjectKeys failed! @jsi.cpp(809),ERROR" ID="0xe0ce194a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:GetObjectKeys has not been implemented in this js engine! @jsi.cpp(816),ERROR" ID="0xe0ce1982" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:GetJSHeapStatus has not been implemented in this js engine! @jsi.cpp(833),ERROR" ID="0xe0ce1a0a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueIsArray has not been implemented in this js engine! @jsi.cpp(843),ERROR" ID="0xe0ce1a5a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:AcquireValue has not been implemented in this js engine! @jsi.cpp(854),ERROR" ID="0xe0ce1ab2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:SetModuleAPI failed! @jsi.cpp(862),ERROR" ID="0xe0ce1af2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:SetOnDestroy failed! @jsi.cpp(873),ERROR" ID="0xe0ce1b4a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:SetOnDestroy has not been implemented in this js engine! @jsi.cpp(880),ERROR" ID="0xe0ce1b82" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:SetOnTerminate failed! @jsi.cpp(892),ERROR" ID="0xe0ce1be2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:SetNamedPointer failed! @jsi.cpp(909),ERROR" ID="0xe0ce1c6a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:SetNamedPointer has not been implemented in this js engine! @jsi.cpp(919),ERROR" ID="0xe0ce1cba" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:GetTypedArrayInfo failed! @jsi.cpp(972),ERROR" ID="0xe0ce1e62" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:GetTypedArrayInfo has not been implemented in this js engine! @jsi.cpp(990),ERROR" ID="0xe0ce1ef2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CreateTypedArray has not been implemented in this js engine! @jsi.cpp(1045),ERROR" ID="0xe0ce20aa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:GetArrayBufferInfo failed! @jsi.cpp(1053),ERROR" ID="0xe0ce20ea" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:GetArrayBufferInfo has not been implemented in this js engine! @jsi.cpp(1063),ERROR" ID="0xe0ce213a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CreateArrayBuffer has not been implemented in this js engine! @jsi.cpp(1078),ERROR" ID="0xe0ce21b2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueIsArrayBuffer has not been implemented in this js engine! @jsi.cpp(1088),ERROR" ID="0xe0ce2202" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:ValueIsTypedArray has not been implemented in this js engine! @jsi.cpp(1098),ERROR" ID="0xe0ce2252" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:DefineProperty failed! @jsi.cpp(1107),ERROR" ID="0xe0ce229a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:DefineProperty has not been implemented in this js engine! @jsi.cpp(1134),ERROR" ID="0xe0ce2372" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:DefineNamedProperty failed! @jsi.cpp(1142),ERROR" ID="0xe0ce23b2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:DefineNamedProperty has not been implemented in this js engine! @jsi.cpp(1151),ERROR" ID="0xe0ce23fa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CreateErrorWithCode parameters invalid! @jsi.cpp(1201),ERROR" ID="0xe0ce258a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CreateErrorWithCode error message too long! @jsi.cpp(1206),ERROR" ID="0xe0ce25b2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="JSI:CreateErrorWithCode has not been implemented in this js engine! @jsi.cpp(1219),ERROR" ID="0xe0ce261a" />
+<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>
\ No newline at end of file
diff --git a/code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/kaleidoscope_utils.cpp.xml b/code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/kaleidoscope_utils.cpp.xml
new file mode 100644 (file)
index 0000000..3b813ec
--- /dev/null
@@ -0,0 +1,25 @@
+<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="Alloc buffer for data failed. @kaleidoscope_utils.cpp(31),ERROR" ID="0xcb3c00fa" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="kaleidoscopeInfo_ is not nullptr @kaleidoscope_utils.cpp(48),ERROR" ID="0xcb3c0182" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="UIMalloc for kaleidoscopeInfo_ failed! @kaleidoscope_utils.cpp(54),ERROR" ID="0xcb3c01b2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="Alloc for data failed. @kaleidoscope_utils.cpp(66),ERROR" ID="0xcb3c0212" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="dst-&gt;info.data is nullptr @kaleidoscope_utils.cpp(78),ERROR" ID="0xcb3c0272" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="size does not match: src[%u, %u], dst[%u, %u]. @kaleidoscope_utils.cpp(85),ERROR" ID="0xcb3c02aa" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="Alloc for sectorPath cmds failed. @kaleidoscope_utils.cpp(101),ERROR" ID="0xcb3c032a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="Alloc for sectorPath data failed. @kaleidoscope_utils.cpp(106),ERROR" ID="0xcb3c0352" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="Alloc for imgPath cmds failed. @kaleidoscope_utils.cpp(114),ERROR" ID="0xcb3c0392" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="Alloc for imgPath data failed. @kaleidoscope_utils.cpp(129),ERROR" ID="0xcb3c040a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="UIMalloc for partialInfo_ failed. @kaleidoscope_utils.cpp(152),ERROR" ID="0xcb3c04c2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="Alloc for partial info data failed. @kaleidoscope_utils.cpp(164),ERROR" ID="0xcb3c0522" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="src or src-&gt;data is null. @kaleidoscope_utils.cpp(217),ERROR" ID="0xcb3c06ca" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="UIMalloc for imgInfo_ failed. @kaleidoscope_utils.cpp(224),ERROR" ID="0xcb3c0702" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy imgInfo_ failed. @kaleidoscope_utils.cpp(230),ERROR" ID="0xcb3c0732" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="InitKaleidoscopeInfo failed. @kaleidoscope_utils.cpp(236),ERROR" ID="0xcb3c0762" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="InitInnerPath failed. @kaleidoscope_utils.cpp(243),ERROR" ID="0xcb3c079a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="InitPartialInfo failed. @kaleidoscope_utils.cpp(251),ERROR" ID="0xcb3c07da" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="kaleidoscopeInfo_ or partialInfo_ is nullptr. @kaleidoscope_utils.cpp(422),ERROR" ID="0xcb3c0d32" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="kaleidoscopeInfo_ or kaleidoscopeInfo_-&gt;info.data is nullptr. @kaleidoscope_utils.cpp(445),ERROR" ID="0xcb3c0dea" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ConstructPartial failed. @kaleidoscope_utils.cpp(452),ERROR" ID="0xcb3c0e22" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="UpdateKaleidoscopeImgInfo failed, because isInternalMem_ is false. @kaleidoscope_utils.cpp(461),ERROR" ID="0xcb3c0e6a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="UpdateKaleidoscopeImgInfo failed, because addr is nullptr. @kaleidoscope_utils.cpp(466),ERROR" ID="0xcb3c0e92" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="UpdateKaleidoscopeImgInfo failed, because kaleidoscopeInfo_ is nullptr. @kaleidoscope_utils.cpp(471),ERROR" ID="0xcb3c0eba" />
+                       </MSG_LOG>
\ No newline at end of file
index 007b214..d36cfcc 100644 (file)
@@ -1,2 +1,2 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="create watcher errpr @lazy_load_manager.cpp(105),ERROR" ID="0xe064034a" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="create watcher errpr @lazy_load_manager.cpp(105),ERROR" ID="0xe068034a" />
                        </MSG_LOG>
\ No newline at end of file
index df964ee..abaa4da 100644 (file)
                        <MSG STRUCTURE="diag_log_msg0" NAME="Convert2VGUBuffer failed. @lite_m_gfx_engine.cpp(584),ERROR" ID="0xcb0e1242" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="Convert2VGUBuffer failed. @lite_m_gfx_engine.cpp(611),ERROR" ID="0xcb0e131a" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="RenderBlur failed! @lite_m_gfx_engine.cpp(624),ERROR" ID="0xcb0e1382" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="RenderBlit failed! @lite_m_gfx_engine.cpp(676),ERROR" ID="0xcb0e1522" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="DrawTransform failed. Software can only process uncompressed data. @lite_m_gfx_engine.cpp(710),ERROR" ID="0xcb0e1632" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="vguFuncs_ is null! @lite_m_gfx_engine.cpp(761),ERROR" ID="0xcb0e17ca" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="InitVgu or RenderClearRect is null! @lite_m_gfx_engine.cpp(765),ERROR" ID="0xcb0e17ea" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="VGUPathInit, VGUPathAppendData, VGUPathClear or RenderPath is nullptr! @lite_m_gfx_engine.cpp(772),ERROR" ID="0xcb0e1822" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="VGUPathInit, VGUPathAppendData, VGUPathClear or RenderPath is nullptr! @lite_m_gfx_engine.cpp(778),ERROR" ID="0xcb0e1852" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="InitVgu failed! @lite_m_gfx_engine.cpp(783),ERROR" ID="0xcb0e187a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="vguFuncs_ is null! @lite_m_gfx_engine.cpp(794),INFO" ID="0xcb0e18d5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="DeinitVgu failed! @lite_m_gfx_engine.cpp(799),ERROR" ID="0xcb0e18fa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="AllocBuffer failed. @lite_m_gfx_engine.cpp(817),ERROR" ID="0xcb0e198a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="unsupported PixelFormat: %d @lite_m_gfx_engine.cpp(844),ERROR" ID="0xcb0e1a62" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="bufferInfo_ is not inited. @lite_m_gfx_engine.cpp(961),ERROR" ID="0xcb0e1e0a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="set value: %d @lite_m_gfx_engine.cpp(1005),DBG" ID="0xcb0e1f6e" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="RenderBlit failed! @lite_m_gfx_engine.cpp(680),ERROR" ID="0xcb0e1542" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="DrawTransform failed. Software can only process uncompressed data. @lite_m_gfx_engine.cpp(713),ERROR" ID="0xcb0e164a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="vguFuncs_ is null! @lite_m_gfx_engine.cpp(764),ERROR" ID="0xcb0e17e2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="InitVgu or RenderClearRect is null! @lite_m_gfx_engine.cpp(768),ERROR" ID="0xcb0e1802" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="VGUPathInit, VGUPathAppendData, VGUPathClear or RenderPath is nullptr! @lite_m_gfx_engine.cpp(775),ERROR" ID="0xcb0e183a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="VGUPathInit, VGUPathAppendData, VGUPathClear or RenderPath is nullptr! @lite_m_gfx_engine.cpp(781),ERROR" ID="0xcb0e186a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="InitVgu failed! @lite_m_gfx_engine.cpp(786),ERROR" ID="0xcb0e1892" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="vguFuncs_ is null! @lite_m_gfx_engine.cpp(797),INFO" ID="0xcb0e18ed" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="DeinitVgu failed! @lite_m_gfx_engine.cpp(802),ERROR" ID="0xcb0e1912" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="AllocBuffer failed. @lite_m_gfx_engine.cpp(820),ERROR" ID="0xcb0e19a2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="unsupported PixelFormat: %d @lite_m_gfx_engine.cpp(847),ERROR" ID="0xcb0e1a7a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="bufferInfo_ is not inited. @lite_m_gfx_engine.cpp(963),ERROR" ID="0xcb0e1e1a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="set value: %d @lite_m_gfx_engine.cpp(1007),DBG" ID="0xcb0e1f7e" />
                        </MSG_LOG>
\ No newline at end of file
index 24e22b2..b3843de 100644 (file)
@@ -1,87 +1,90 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg6" NAME="generate addr: ****%02x%02x%02x%02x name: %s sp-ret: %d @local_device_manager.c(219),INFO" ID="0xd80806dd" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="local dev info write error! ret 0x%x @local_device_manager.c(244),ERROR" ID="0xd80807a2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="deinit bt stack @local_device_manager.c(277),INFO" ID="0xd80808ad" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="adv id is not active, please set param first. @local_device_manager.c(353),ERROR" ID="0xd8080b0a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] ble gap conn state change fail. @local_device_manager.c(372),ERROR" ID="0xd8080ba2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[btsrv][ERROR] ble gap conn addr memcpy fail. @local_device_manager.c(381),ERROR" ID="0xd8080bea" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble smp can not find connect node by handle @local_device_manager.c(400),ERROR" ID="0xd8080c82" />
-                       <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="adv id is not active, please set param first. @local_device_manager.c(428),ERROR" ID="0xd8080d62" />
-                       <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(451),ERROR" ID="0xd8080e1a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="bt init err ret = %08x @local_device_manager.c(482),ERROR" ID="0xd8080f12" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="unhandled msg id %x @local_device_manager.c(575),WARNING" ID="0xd80811fb" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="inquiry complete @local_device_manager.c(583),INFO" ID="0xd808123d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="dev_hdl:0x%08x @local_device_manager.c(590),INFO" ID="0xd8081275" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="dev_hdl:0x%08x @local_device_manager.c(604),INFO" ID="0xd80812e5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="btsrv_connection_request_ind_callback: memecpy error @local_device_manager.c(618),ERROR" ID="0xd8081352" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="addr:****%02x%02x%02x%02x @local_device_manager.c(623),INFO" ID="0xd808137d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="dev_hdl:0x%08x @local_device_manager.c(633),INFO" ID="0xd80813cd" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s errr @local_device_manager.c(647),ERROR" ID="0xd808143a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc errr @local_device_manager.c(661),ERROR" ID="0xd80814aa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s errr @local_device_manager.c(667),ERROR" ID="0xd80814da" />
+<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_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(716),INFO" ID="0xd8081665" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="received_bytes: %d sent_bytes: %d @local_device_manager.c(719),INFO" ID="0xd808167d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="unhandled service class 0x%x @local_device_manager.c(745),WARNING" ID="0xd808174b" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="dev_hdl: %08x num_value&#65306;%08x @local_device_manager.c(768),INFO" ID="0xd8081805" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="dev_hdl: 0x%08x @local_device_manager.c(775),INFO" ID="0xd808183d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="dev_hdl: 0x%08x @local_device_manager.c(782),INFO" ID="0xd8081875" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="dev_hdl: %08x num_value&#65306;%08x @local_device_manager.c(788),INFO" ID="0xd80818a5" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="dev_hdl: %08x reason: %x @local_device_manager.c(802),INFO" ID="0xd8081915" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="white_list_size:%d  @local_device_manager.c(808),INFO" ID="0xd8081945" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="transmit_power_level:%d  @local_device_manager.c(813),INFO" ID="0xd808196d" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="register err id: %x ret: %x @local_device_manager.c(844),ERROR" ID="0xd8081a62" />
-                       <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(878),ERROR" ID="0xd8081b72" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="bt_init err ret = %08x @local_device_manager.c(907),ERROR" ID="0xd8081c5a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="buff is't long enough, need length:%d. @local_device_manager.c(1014),ERROR" ID="0xd8081fb2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="get local name memcpy fail. @local_device_manager.c(1018),ERROR" ID="0xd8081fd2" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="name: %s, length: %d @local_device_manager.c(1027),INFO" ID="0xd808201d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="failed: bt not enabled @local_device_manager.c(1042),INFO" ID="0xd8082095" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="local name null or length not match, len: %d @local_device_manager.c(1046),INFO" ID="0xd80820b5" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="returns error ret: %x @local_device_manager.c(1052),WARNING" ID="0xd80820e3" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="set result name: &quot;%s&quot; name_len: %d get_re: %x @local_device_manager.c(1058),INFO" ID="0xd8082115" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="gap_remove_all_pairs fail @local_device_manager.c(1118),ERROR" ID="0xd80822f2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="gap ble remove all pairs fail @local_device_manager.c(1124),ERROR" ID="0xd8082322" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="diable_bt_ret(errcode_t): %x @local_device_manager.c(1131),INFO" ID="0xd808235d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="disable_ble_ret(errcode_t): %x @local_device_manager.c(1136),INFO" ID="0xd8082385" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="set discovery data pointer is null. @local_device_manager.c(1167),ERROR" ID="0xd808247a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="adv_id(%d) advertising, please stop first. @local_device_manager.c(1182),ERROR" ID="0xd80824f2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="adv data alloc faild, length:%d @local_device_manager.c(1194),ERROR" ID="0xd8082552" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[Error] gap_ble_set_adv_data adv data memcpy_s fail @local_device_manager.c(1198),ERROR" ID="0xd8082572" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="scan rsp data alloc faild, length:%d @local_device_manager.c(1207),ERROR" ID="0xd80825ba" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[Error] gap_ble_set_adv_data scan rsp data memcpy_s fail @local_device_manager.c(1211),ERROR" ID="0xd80825da" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="adv_id(%d) advertising, please stop first. @local_device_manager.c(1247),ERROR" ID="0xd80826fa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[Error] gap ble set adv param memcpy_s fail @local_device_manager.c(1259),ERROR" ID="0xd808275a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[Error] gap ble set adv param memcpy_s fail @local_device_manager.c(1273),ERROR" ID="0xd80827ca" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble gap set sec param error param NULL @local_device_manager.c(1295),ERROR" ID="0xd808287a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble gap set sec param error param NULL @local_device_manager.c(1300),ERROR" ID="0xd80828a2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[Error] gap set adv data memcpy_s fail @local_device_manager.c(1324),ERROR" ID="0xd8082962" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[Error] gap set scan rsp data memcpy_s fail @local_device_manager.c(1331),ERROR" ID="0xd808299a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[Error] btsrv_gap_set_adv_param memcpy_s fail @local_device_manager.c(1350),ERROR" ID="0xd8082a32" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[Error] gap set adv param memcpy_s fail @local_device_manager.c(1355),ERROR" ID="0xd8082a5a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble gap ext adv rpt memcpy fail @local_device_manager.c(1375),ERROR" ID="0xd8082afa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble gap ext adv rpt memcpy fail @local_device_manager.c(1390),ERROR" ID="0xd8082b72" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble gap adv set terminated cbk param error @local_device_manager.c(1402),ERROR" ID="0xd8082bd2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble enable cbk param error @local_device_manager.c(1413),ERROR" ID="0xd8082c2a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble read remote rssi cbk param error @local_device_manager.c(1424),ERROR" ID="0xd8082c82" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble conn param update cbk param error @local_device_manager.c(1440),ERROR" ID="0xd8082d02" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="adv id is not active, please set param first. @local_device_manager.c(1482),ERROR" ID="0xd8082e52" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="adv id(%d) is discoverying, please stop first. @local_device_manager.c(1486),ERROR" ID="0xd8082e72" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="adv param alloc fail @local_device_manager.c(1495),ERROR" ID="0xd8082eba" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="adv id is not active, please set param first. @local_device_manager.c(1528),ERROR" ID="0xd8082fc2" />
-                       <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(1534),ERROR" ID="0xd8082ff2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="mc sdk ble stop adv atb failed  @local_device_manager.c(1540),ERROR" ID="0xd8083022" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="scanning in process, please stop first. @local_device_manager.c(1574),ERROR" ID="0xd8083132" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="scanning already stopped. @local_device_manager.c(1606),ERROR" ID="0xd8083232" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble stop extern scan ret: %#x @local_device_manager.c(1610),INFO" ID="0xd8083255" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble set phy node == NULL @local_device_manager.c(1633),ERROR" ID="0xd808330a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble set phy memcpy fail @local_device_manager.c(1638),ERROR" ID="0xd8083332" />
-                       <MSG STRUCTURE="diag_log_msg5" NAME="ble general set phy hdl:%x all:%x rx:%x tx:%x op:%x. @local_device_manager.c(1643),INFO" ID="0xd808335d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble set phy ret: %#x @local_device_manager.c(1646),ERROR" ID="0xd8083372" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble set data length node == NULL @local_device_manager.c(1667),ERROR" ID="0xd808341a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble set data length memcpy fail @local_device_manager.c(1672),ERROR" ID="0xd8083442" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="ble general set len hdl:%x maxoct:%x maxtime:%x @local_device_manager.c(1677),INFO" ID="0xd808346d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble set len ret: %#x @local_device_manager.c(1680),ERROR" ID="0xd8083482" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="bts sert log type levle:%x @local_device_manager.c(1698),INFO" ID="0xd8083515" />
+                       <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>
\ No newline at end of file
index c81179b..e509a74 100644 (file)
@@ -1,3 +1,3 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="malloc system info failed @locale_util.cpp(70),ERROR" ID="0xe0680232" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="get system language info failed @locale_util.cpp(76),ERROR" ID="0xe0680262" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="malloc system info failed @locale_util.cpp(70),ERROR" ID="0xe06c0232" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="get system language info failed @locale_util.cpp(76),ERROR" ID="0xe06c0262" />
                        </MSG_LOG>
\ No newline at end of file
diff --git a/code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/map_svg_parser.cpp.xml b/code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/map_svg_parser.cpp.xml
new file mode 100644 (file)
index 0000000..3fabf8d
--- /dev/null
@@ -0,0 +1,72 @@
+<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="set svg faild, path len is 0 @map_svg_parser.cpp(54),ERROR" ID="0xcb4601b2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="Invalid file path. @map_svg_parser.cpp(67),ERROR" ID="0xcb46021a" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="File(%s) can not open. errno: %d @map_svg_parser.cpp(73),ERROR" ID="0xcb46024a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="read map header faild @map_svg_parser.cpp(78),ERROR" ID="0xcb460272" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="parser map success @map_svg_parser.cpp(97),DBG" ID="0xcb46030e" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="parser map failed @map_svg_parser.cpp(104),DBG" ID="0xcb460346" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s map header faild @map_svg_parser.cpp(113),ERROR" ID="0xcb46038a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="The remaining data is insufficient. The read ends. @map_svg_parser.cpp(118),WARNING" ID="0xcb4603b3" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="parser map success @map_svg_parser.cpp(153),DBG" ID="0xcb4604ce" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[%s] param error! @map_svg_parser.cpp(160),ERROR" ID="0xcb460502" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc map node array faild! @map_svg_parser.cpp(167),ERROR" ID="0xcb46053a" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="read map node array faild, readLen:%d, realReadLen:%d @map_svg_parser.cpp(174),ERROR" ID="0xcb460572" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[%s] param error! @map_svg_parser.cpp(187),ERROR" ID="0xcb4605da" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="read map node faild.The data length is less than the read length! @map_svg_parser.cpp(193),ERROR" ID="0xcb46060a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc map node array faild! @map_svg_parser.cpp(198),ERROR" ID="0xcb460632" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="memcpy_s map node array faild, nodeLen: 0x%x @map_svg_parser.cpp(205),ERROR" ID="0xcb46066a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[%s] param error! @map_svg_parser.cpp(215),ERROR" ID="0xcb4606ba" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc path style array faild! @map_svg_parser.cpp(222),ERROR" ID="0xcb4606f2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s path style array faild @map_svg_parser.cpp(229),ERROR" ID="0xcb46072a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[%s] param error! @map_svg_parser.cpp(242),ERROR" ID="0xcb460792" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="read path style faild.The data length is less than the read length! @map_svg_parser.cpp(248),ERROR" ID="0xcb4607c2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc path style array faild! @map_svg_parser.cpp(254),ERROR" ID="0xcb4607f2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s path style array faild @map_svg_parser.cpp(261),ERROR" ID="0xcb46082a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="Alloc buffer for buffer failed. @map_svg_parser.cpp(275),ERROR" ID="0xcb46089a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="Alloc buffer for buffer failed. @map_svg_parser.cpp(284),ERROR" ID="0xcb4608e2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[%s] param error! @map_svg_parser.cpp(295),ERROR" ID="0xcb46093a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc map path array faild! @map_svg_parser.cpp(302),ERROR" ID="0xcb460972" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="read map path array faild @map_svg_parser.cpp(311),ERROR" ID="0xcb4609ba" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="alloc path faild @map_svg_parser.cpp(318),ERROR" ID="0xcb4609f2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="read path cmd faild @map_svg_parser.cpp(324),ERROR" ID="0xcb460a22" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="read path data faild @map_svg_parser.cpp(330),ERROR" ID="0xcb460a52" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[%s] param error! @map_svg_parser.cpp(341),ERROR" ID="0xcb460aaa" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc map path array faild! @map_svg_parser.cpp(348),ERROR" ID="0xcb460ae2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s map path array faild @map_svg_parser.cpp(356),ERROR" ID="0xcb460b22" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="alloc path faild @map_svg_parser.cpp(366),ERROR" ID="0xcb460b72" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s path cmd faild @map_svg_parser.cpp(371),ERROR" ID="0xcb460b9a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s path data faild @map_svg_parser.cpp(378),ERROR" ID="0xcb460bd2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[%s] param error! @map_svg_parser.cpp(413),ERROR" ID="0xcb460cea" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc map path array faild! @map_svg_parser.cpp(420),ERROR" ID="0xcb460d22" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="read map text array faild @map_svg_parser.cpp(429),ERROR" ID="0xcb460d6a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc map path cmd faild @map_svg_parser.cpp(436),ERROR" ID="0xcb460da2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="read text faild @map_svg_parser.cpp(443),ERROR" ID="0xcb460dda" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc text offset faild @map_svg_parser.cpp(451),ERROR" ID="0xcb460e1a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="read text offset faild @map_svg_parser.cpp(457),ERROR" ID="0xcb460e4a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[%s] param error! @map_svg_parser.cpp(468),ERROR" ID="0xcb460ea2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc map path array faild! @map_svg_parser.cpp(475),ERROR" ID="0xcb460eda" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s map text array faild @map_svg_parser.cpp(483),ERROR" ID="0xcb460f1a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc map path cmd faild @map_svg_parser.cpp(492),ERROR" ID="0xcb460f62" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s text faild @map_svg_parser.cpp(497),ERROR" ID="0xcb460f8a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc text offset faild @map_svg_parser.cpp(507),ERROR" ID="0xcb460fda" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s text offset faild @map_svg_parser.cpp(512),ERROR" ID="0xcb461002" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[%s] param error! @map_svg_parser.cpp(546),ERROR" ID="0xcb461112" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc map path array faild! @map_svg_parser.cpp(553),ERROR" ID="0xcb46114a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="read map image array faild @map_svg_parser.cpp(558),ERROR" ID="0xcb461172" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc map path array faild! @map_svg_parser.cpp(566),ERROR" ID="0xcb4611b2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[%s] param error! @map_svg_parser.cpp(595),ERROR" ID="0xcb46129a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc map path array faild! @map_svg_parser.cpp(602),ERROR" ID="0xcb4612d2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s map text array faild @map_svg_parser.cpp(607),ERROR" ID="0xcb4612fa" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc map path array faild! @map_svg_parser.cpp(615),ERROR" ID="0xcb46133a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[%s] param error! @map_svg_parser.cpp(647),ERROR" ID="0xcb46143a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc map path array faild! @map_svg_parser.cpp(654),ERROR" ID="0xcb461472" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="read map road array faild @map_svg_parser.cpp(659),ERROR" ID="0xcb46149a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[%s] param error! @map_svg_parser.cpp(669),ERROR" ID="0xcb4614ea" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc map path array faild! @map_svg_parser.cpp(676),ERROR" ID="0xcb461522" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s map text array faild @map_svg_parser.cpp(681),ERROR" ID="0xcb46154a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[%s] param error! @map_svg_parser.cpp(700),ERROR" ID="0xcb4615e2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc map path array faild! @map_svg_parser.cpp(707),ERROR" ID="0xcb46161a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="read map poi array faild @map_svg_parser.cpp(712),ERROR" ID="0xcb461642" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[%s] param error! @map_svg_parser.cpp(722),ERROR" ID="0xcb461692" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc map path array faild! @map_svg_parser.cpp(729),ERROR" ID="0xcb4616ca" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s map text array faild @map_svg_parser.cpp(734),ERROR" ID="0xcb4616f2" />
+                       </MSG_LOG>
\ No newline at end of file
index a146bd5..08d3265 100644 (file)
@@ -1,2 +1,2 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg1" NAME="MemUtils::InitPSRam g_psramMemory = %x @mem_util.cpp(27),DBG" ID="0xe06c00de" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg1" NAME="MemUtils::InitPSRam g_psramMemory = %x @mem_util.cpp(27),DBG" ID="0xe07000de" />
                        </MSG_LOG>
\ No newline at end of file
index 1c0c3e2..0a4f564 100644 (file)
@@ -1,3 +1,3 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="parse percent value failed, invalid input parameters @number_parser.cpp(35),ERROR" ID="0xe06e011a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="parse percent value failed, input string too long [%d] @number_parser.cpp(44),ERROR" ID="0xe06e0162" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="parse percent value failed, invalid input parameters @number_parser.cpp(35),ERROR" ID="0xe072011a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="parse percent value failed, input string too long [%d] @number_parser.cpp(44),ERROR" ID="0xe0720162" />
                        </MSG_LOG>
\ No newline at end of file
index 41383d4..fee5236 100644 (file)
@@ -1,4 +1,4 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg1" NAME="ACELite version: %s @platform_adapter.cpp(33),DBG" ID="0xe10c010e" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ACELite commit: %s @platform_adapter.cpp(34),DBG" ID="0xe10c0116" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ACELite build stamp: %s @platform_adapter.cpp(35),DBG" ID="0xe10c011e" />
+<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>
\ No newline at end of file
index 7822229..b4df39f 100644 (file)
@@ -9,58 +9,64 @@
                        <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(275),ERROR" ID="0xd80a089a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy fail @remote_device_manager.c(282),ERROR" ID="0xd80a08d2" />
-                       <MSG STRUCTURE="diag_log_msg5" NAME="addr: ****%02x%02x%02x%02x hdl: %x @remote_device_manager.c(288),WARNING" ID="0xd80a0903" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="btsrv add remote dev node, acquire rmt dev list lock failed. @remote_device_manager.c(292),ERROR" ID="0xd80a0922" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="btsrv get remote dev node, acquire rmt dev list lock failed. @remote_device_manager.c(305),ERROR" ID="0xd80a098a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="btsrv clear remtoe dev list, acquire rmt dev list lock failed. @remote_device_manager.c(351),ERROR" ID="0xd80a0afa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="btsrv set remote dev status found 2 none, acquire rmt dev list lock failed. @remote_device_manager.c(389),ERROR" ID="0xd80a0c2a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="btsrv dfx show remote dev list, acquire rmt dev list lock failed. @remote_device_manager.c(416),ERROR" ID="0xd80a0d02" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="show remote device list: @remote_device_manager.c(422),INFO" ID="0xd80a0d35" />
-                       <MSG STRUCTURE="diag_log_msg9" NAME="| %-4s | %-32s | %-12s | %-16s | %-8s | %-8s | %-8s | %-8s | %-48s | @remote_device_manager.c(428),INFO" ID="0xd80a0d65" />
-                       <MSG STRUCTURE="diag_log_msg12" NAME="| %-4d | %-32s | ****%02x%02x%02x%02x | %-16x | %-8d | %-8d | %-8d | %-8d | %-48s | @remote_device_manager.c(444),INFO" ID="0xd80a0de5" />
-                       <MSG STRUCTURE="diag_log_msg6" NAME="| %-4s | %-32s | %-12s | %-16s | %-8s | %-8s | @remote_device_manager.c(451),INFO" ID="0xd80a0e1d" />
-                       <MSG STRUCTURE="diag_log_msg9" NAME="| %-4d | %-32s | ****%02x%02x%02x%02x | %-16x | %-8d | %-8d | @remote_device_manager.c(458),INFO" ID="0xd80a0e55" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="show remote device list end! @remote_device_manager.c(466),INFO" ID="0xd80a0e95" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="addr: ****%02X%02X%02X%02X @remote_device_manager.c(474),INFO" ID="0xd80a0ed5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="not in remote list @remote_device_manager.c(483),INFO" ID="0xd80a0f1d" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="not have key status: %d have_key: %d @remote_device_manager.c(489),INFO" ID="0xd80a0f4d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s error @remote_device_manager.c(495),ERROR" ID="0xd80a0f7a" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="addr: ****%02X%02X%02X%02X  @remote_device_manager.c(520),INFO" ID="0xd80a1045" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="not in remote list @remote_device_manager.c(525),WARNING" ID="0xd80a106b" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy error @remote_device_manager.c(532),ERROR" ID="0xd80a10a2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc fail @remote_device_manager.c(544),ERROR" ID="0xd80a1102" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy fail @remote_device_manager.c(549),ERROR" ID="0xd80a112a" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="dev_hdl: %08x result: %02x @remote_device_manager.c(571),INFO" ID="0xd80a11dd" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="find/add remote device failed @remote_device_manager.c(596),WARNING" ID="0xd80a12a3" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="get remote device name fail. ret: %x  @remote_device_manager.c(611),WARNING" ID="0xd80a131b" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="get remote device name success. name: %s name_len: %d @remote_device_manager.c(616),INFO" ID="0xd80a1345" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc tmp_addr fail @remote_device_manager.c(620),ERROR" ID="0xd80a1362" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc tmp_name fail @remote_device_manager.c(624),ERROR" ID="0xd80a1382" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy fail @remote_device_manager.c(630),ERROR" ID="0xd80a13b2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="send msg fail. %x @remote_device_manager.c(637),ERROR" ID="0xd80a13ea" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="dev_hdl: %x @remote_device_manager.c(645),INFO" ID="0xd80a142d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="acl disconnected. dev_hdl: %x @remote_device_manager.c(647),INFO" ID="0xd80a143d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="dev not found @remote_device_manager.c(660),INFO" ID="0xd80a14a5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="find node fail @remote_device_manager.c(671),WARNING" ID="0xd80a14fb" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="memcpy error! last_len: %d cur_len: %d cpy_len: %d ret: %x @remote_device_manager.c(682),ERROR" ID="0xd80a1552" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="get pair devices num fail ret = %d @remote_device_manager.c(733),ERROR" ID="0xd80a16ea" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="get pair devices fail ret = %d @remote_device_manager.c(748),ERROR" ID="0xd80a1762" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="gap get paired devices list, acquire rmt dev list lock failed. @remote_device_manager.c(769),ERROR" ID="0xd80a180a" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="num error! i: %d *number: %d @remote_device_manager.c(798),ERROR" ID="0xd80a18f2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="get pair devices num fail ret = %d @remote_device_manager.c(837),ERROR" ID="0xd80a1a2a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="btsdk_disconnect_acl_by_handle ret: %x @remote_device_manager.c(856),INFO" ID="0xd80a1ac5" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="btsdk_un_pair_device ret: %x @remote_device_manager.c(859),INFO" ID="0xd80a1add" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc fail @remote_device_manager.c(863),ERROR" ID="0xd80a1afa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy fail @remote_device_manager.c(867),ERROR" ID="0xd80a1b1a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="acquire rmt dev list lock failed. @remote_device_manager.c(895),ERROR" ID="0xd80a1bfa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="gap remove all pairs, acquire rmt dev list lock failed. @remote_device_manager.c(923),ERROR" ID="0xd80a1cda" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="remove pair device fail @remote_device_manager.c(955),ERROR" ID="0xd80a1dda" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="remove pair all devices key fail @remote_device_manager.c(965),ERROR" ID="0xd80a1e2a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="disconnect all devices fail @remote_device_manager.c(969),ERROR" ID="0xd80a1e4a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="dev not found @remote_device_manager.c(996),INFO" ID="0xd80a1f25" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="dev not found @remote_device_manager.c(1019),INFO" ID="0xd80a1fdd" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy fail @remote_device_manager.c(1038),INFO" ID="0xd80a2075" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="dev not found @remote_device_manager.c(1062),INFO" ID="0xd80a2135" />
+                       <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>
\ No newline at end of file
index 8856e20..f4d0e89 100644 (file)
@@ -9,59 +9,59 @@
                        <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(438),INFO" ID="0xd86e0db5" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[ACore] ble gatt le conn event cbk tl remove on addr:%02x:**:**:**:%02x:%02x @sdk_general_gatt.c(444),INFO" ID="0xd86e0de5" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt create server result bta len error, len = %u @sdk_general_gatt.c(459),ERROR" ID="0xd86e0e5a" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="[ACore] mc ble gatt create server result bta memcpy fail:%d,len:%d @sdk_general_gatt.c(467),ERROR" ID="0xd86e0e9a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt create service result bta len error. len = %u @sdk_general_gatt.c(480),ERROR" ID="0xd86e0f02" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt create service result bta memcpy fail: %d @sdk_general_gatt.c(487),ERROR" ID="0xd86e0f3a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt start service result bta len error. len = %u @sdk_general_gatt.c(501),ERROR" ID="0xd86e0faa" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt start service result bta memcpy faile error: %d @sdk_general_gatt.c(508),ERROR" ID="0xd86e0fe2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt get gap ui attributes result bta len error. len = %u @sdk_general_gatt.c(521),ERROR" ID="0xd86e104a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt get gap ui attributes result bta memcpy faile error: %d @sdk_general_gatt.c(528),ERROR" ID="0xd86e1082" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt discovery service rsp bta len error. len = %u @sdk_general_gatt.c(541),ERROR" ID="0xd86e10ea" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] mc ble gatt discovery service rsp bta discovery_service error @sdk_general_gatt.c(549),ERROR" ID="0xd86e112a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt discovery service complete bta len error. len = %u @sdk_general_gatt.c(562),ERROR" ID="0xd86e1192" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] mc ble gatt discovery service complete bta discovery_service error @sdk_general_gatt.c(570),ERROR" ID="0xd86e11d2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt add characteristic result bta len error, len = %u @sdk_general_gatt.c(583),ERROR" ID="0xd86e123a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt add characteristic result bta memcpy fail error: %d @sdk_general_gatt.c(589),ERROR" ID="0xd86e126a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt discovery include service rsp bta len error. len = %u @sdk_general_gatt.c(602),ERROR" ID="0xd86e12d2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] mc ble gatt discovery include service rsp bta discovery_service error @sdk_general_gatt.c(610),ERROR" ID="0xd86e1312" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt discovery characteristics response bta len error. len = %u @sdk_general_gatt.c(623),ERROR" ID="0xd86e137a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore]mc ble gatt discovery characteristics response bta discovery_service error @sdk_general_gatt.c(631),ERROR" ID="0xd86e13ba" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt discovery characteristics complete bta len error. len = %u @sdk_general_gatt.c(644),ERROR" ID="0xd86e1422" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore]mc ble gatt discovery characteristics complete bta discovery_service error @sdk_general_gatt.c(652),ERROR" ID="0xd86e1462" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt discovery descriptor response bta len error. len = %u @sdk_general_gatt.c(665),ERROR" ID="0xd86e14ca" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] mc ble gatt discovery descriptor response bta discovery_service error @sdk_general_gatt.c(673),ERROR" ID="0xd86e150a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt discovery descriptor complete bta len error. len = %u @sdk_general_gatt.c(686),ERROR" ID="0xd86e1572" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] mc ble gatt discovery descriptor complete bta discovery_service error @sdk_general_gatt.c(693),ERROR" ID="0xd86e15aa" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt get hid report map response bta finish. result code = %x @sdk_general_gatt.c(705),INFO" ID="0xd86e160d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt get hid report map response bta len error. len = %u @sdk_general_gatt.c(711),INFO" ID="0xd86e163d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt read character complete bta len error. len = %u @sdk_general_gatt.c(726),ERROR" ID="0xd86e16b2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] mc ble gatt read characterr complete bta read character error @sdk_general_gatt.c(733),ERROR" ID="0xd86e16ea" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] read service value finish. error code = %x @sdk_general_gatt.c(745),INFO" ID="0xd86e174d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] read service value response len error. len = %u @sdk_general_gatt.c(751),INFO" ID="0xd86e177d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] write service value finish. error code = %x @sdk_general_gatt.c(765),INFO" ID="0xd86e17ed" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] write service value response len error. len = %u @sdk_general_gatt.c(771),INFO" ID="0xd86e181d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt read descriptor response bta len error. len = %u @sdk_general_gatt.c(786),INFO" ID="0xd86e1895" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] mc ble gatt read descriptor response bta error @sdk_general_gatt.c(793),ERROR" ID="0xd86e18ca" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt character value notification bta len error. len = %u @sdk_general_gatt.c(806),INFO" ID="0xd86e1935" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="mc ble gatt character value notification bta new fail @sdk_general_gatt.c(814),ERROR" ID="0xd86e1972" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="mc ble gatt character value notification bta memset fail @sdk_general_gatt.c(821),ERROR" ID="0xd86e19aa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] mc ble gatt character value notification bta error @sdk_general_gatt.c(829),ERROR" ID="0xd86e19ea" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] mc ble gatt read descriptor response bta error @sdk_general_gatt.c(837),ERROR" ID="0xd86e1a2a" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="mc ble gatt character value notification bta handle:0x%x, len:%d @sdk_general_gatt.c(847),INFO" ID="0xd86e1a7d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt exchange mtu ind len error. len = %u @sdk_general_gatt.c(859),INFO" ID="0xd86e1add" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] mc ble gatt exchange mtu ind error @sdk_general_gatt.c(863),ERROR" ID="0xd86e1afa" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt handle service evt bta len error. len = %u @sdk_general_gatt.c(875),INFO" ID="0xd86e1b5d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="mc ble gatt handle service evt bta new fail @sdk_general_gatt.c(882),ERROR" ID="0xd86e1b92" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="mc ble gatt handle service evt bta memset fail @sdk_general_gatt.c(889),ERROR" ID="0xd86e1bca" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] mc ble gatt handle service evt bta addr error @sdk_general_gatt.c(897),ERROR" ID="0xd86e1c0a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] mc ble gatt server read evt bta len error len = %u @sdk_general_gatt.c(910),INFO" ID="0xd86e1c75" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="mc ble gatt server read evt bta new fail @sdk_general_gatt.c(916),ERROR" ID="0xd86e1ca2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="mc ble gatt server read evt bta memset fai @sdk_general_gatt.c(921),ERROR" ID="0xd86e1cca" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ACore] mc ble gatt server read evt bta addr error @sdk_general_gatt.c(927),ERROR" ID="0xd86e1cfa" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="[ACore] ble conn general gatt proc:cmdid:0x%02X pay_len:%d. @sdk_general_gatt.c(946),INFO" ID="0xd86e1d95" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ACore] ble conn general gatt proc no handle for command id:0x%02x. @sdk_general_gatt.c(961),INFO" ID="0xd86e1e0d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[Error] bt at cmd set le att mtu param fail, mtu param is null! @sdk_general_gatt.c(991),ERROR" ID="0xd86e1efa" />
+                       <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_LOG>
\ No newline at end of file
index 1812a70..2487c86 100644 (file)
@@ -1,20 +1,20 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s fail. @stack_gap_if.c(312),ERROR" ID="0xd8e009c2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s fail. @stack_gap_if.c(329),ERROR" ID="0xd8e00a4a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s fail. @stack_gap_if.c(354),ERROR" ID="0xd8e00b12" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s fail. @stack_gap_if.c(318),ERROR" ID="0xd8e009f2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s fail. @stack_gap_if.c(335),ERROR" ID="0xd8e00a7a" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s fail. @stack_gap_if.c(360),ERROR" ID="0xd8e00b42" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="rssi = %d  @stack_gap_if.c(385),INFO" ID="0xd8e00c0d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="mode = %02x  @stack_gap_if.c(437),INFO" ID="0xd8e00dad" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s error @stack_gap_if.c(529),ERROR" ID="0xd8e0108a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s error @stack_gap_if.c(533),ERROR" ID="0xd8e010aa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s fail. @stack_gap_if.c(563),ERROR" ID="0xd8e0119a" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="name_len = %hu, name = %s  @stack_gap_if.c(567),INFO" ID="0xd8e011bd" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s fail. @stack_gap_if.c(598),ERROR" ID="0xd8e012b2" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="remote addr : ***0x%x:0x%x:0x%x  @stack_gap_if.c(603),INFO" ID="0xd8e012dd" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s fail. @stack_gap_if.c(687),ERROR" ID="0xd8e0157a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s fail. @stack_gap_if.c(693),ERROR" ID="0xd8e015aa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s fail. @stack_gap_if.c(732),ERROR" ID="0xd8e016e2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="conn_hdl=0x%x @stack_gap_if.c(738),INFO" ID="0xd8e01715" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="deinit bt sdk @stack_gap_if.c(745),INFO" ID="0xd8e0174d" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="send mem_id to bt in_id=0x%x out_id=0x%x @stack_gap_if.c(772),INFO" ID="0xd8e01825" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s fail. @stack_gap_if.c(813),ERROR" ID="0xd8e0196a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s fail. @stack_gap_if.c(366),ERROR" ID="0xd8e00b72" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="rssi = %d  @stack_gap_if.c(391),INFO" ID="0xd8e00c3d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="mode = %02x  @stack_gap_if.c(443),INFO" ID="0xd8e00ddd" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s error @stack_gap_if.c(535),ERROR" ID="0xd8e010ba" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s error @stack_gap_if.c(539),ERROR" ID="0xd8e010da" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s fail. @stack_gap_if.c(569),ERROR" ID="0xd8e011ca" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="name_len = %hu, name = %s  @stack_gap_if.c(573),INFO" ID="0xd8e011ed" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s fail. @stack_gap_if.c(609),ERROR" ID="0xd8e0130a" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="remote addr : ***0x%x:0x%x:0x%x  @stack_gap_if.c(614),INFO" ID="0xd8e01335" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s fail. @stack_gap_if.c(698),ERROR" ID="0xd8e015d2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s fail. @stack_gap_if.c(704),ERROR" ID="0xd8e01602" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s fail. @stack_gap_if.c(743),ERROR" ID="0xd8e0173a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="conn_hdl=0x%x @stack_gap_if.c(749),INFO" ID="0xd8e0176d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="deinit bt sdk @stack_gap_if.c(756),INFO" ID="0xd8e017a5" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="send mem_id to bt in_id=0x%x out_id=0x%x @stack_gap_if.c(783),INFO" ID="0xd8e0187d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s fail. @stack_gap_if.c(824),ERROR" ID="0xd8e019c2" />
                        </MSG_LOG>
\ No newline at end of file
diff --git a/code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/ui_coverflow_view.cpp.xml b/code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/ui_coverflow_view.cpp.xml
new file mode 100644 (file)
index 0000000..9cb8a70
--- /dev/null
@@ -0,0 +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>
\ No newline at end of file
diff --git a/code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/ui_hexagons_list.cpp.xml b/code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/ui_hexagons_list.cpp.xml
new file mode 100644 (file)
index 0000000..ff2fbb7
--- /dev/null
@@ -0,0 +1,6 @@
+<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="can not add view which is not image view @ui_hexagons_list.cpp(65),ERROR" ID="0xcb34020a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="can not add view which is not image view @ui_hexagons_list.cpp(89),ERROR" ID="0xcb3402ca" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="don't support scale when rebound mode is normal @ui_hexagons_list.cpp(219),ERROR" ID="0xcb3406da" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="scale value %f is invalid @ui_hexagons_list.cpp(224),ERROR" ID="0xcb340702" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="parameter is not valid, distance_:%u size:%d @ui_hexagons_list.cpp(614),ERROR" ID="0xcb341332" />
+                       </MSG_LOG>
\ No newline at end of file
diff --git a/code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/ui_icosahedron_view.cpp.xml b/code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/ui_icosahedron_view.cpp.xml
new file mode 100644 (file)
index 0000000..e4a5ae0
--- /dev/null
@@ -0,0 +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>
\ No newline at end of file
diff --git a/code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/ui_kaleidoscope_view.cpp.xml b/code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/ui_kaleidoscope_view.cpp.xml
new file mode 100644 (file)
index 0000000..f39f1c7
--- /dev/null
@@ -0,0 +1,4 @@
+<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="buffer is nil @ui_kaleidoscope_view.cpp(46),ERROR" ID="0xcb3a0172" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="Fmt not support: %d @ui_kaleidoscope_view.cpp(55),ERROR" ID="0xcb3a01ba" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="Init KaleidoscopeUtils failed. @ui_kaleidoscope_view.cpp(62),ERROR" ID="0xcb3a01f2" />
+                       </MSG_LOG>
\ No newline at end of file
diff --git a/code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/ui_map_view.cpp.xml b/code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/ui_map_view.cpp.xml
new file mode 100644 (file)
index 0000000..6b960ad
--- /dev/null
@@ -0,0 +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>
\ No newline at end of file
diff --git a/code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/ui_roller_view.cpp.xml b/code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/ui_roller_view.cpp.xml
new file mode 100644 (file)
index 0000000..6c53c2d
--- /dev/null
@@ -0,0 +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>
\ No newline at end of file
index 8737d90..4deeda7 100644 (file)
@@ -1,52 +1,53 @@
 <MSG_LOG><MSG STRUCTURE="diag_log_msg1" NAME="[hifi]msg = 0x%08X @core_msg.c(91),INFO" ID="0x981802dd" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call memcpy_s Failed, Error Code: [0x%08X] @core_msg.c(214),ERROR" ID="0x981806b2" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call memcpy_s Failed, Error Code: [0x%08X] @core_msg.c(237),ERROR" ID="0x9818076a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]read_pos = %u @core_msg.c(285),ERROR" ID="0x981808ea" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]write_pos = %u @core_msg.c(286),ERROR" ID="0x981808f2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]msg_size = %u @core_msg.c(287),ERROR" ID="0x981808fa" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]msg_size = %u @core_msg.c(323),ERROR" ID="0x98180a1a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]msg_crc = %u @core_msg.c(329),ERROR" ID="0x98180a4a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_msg.c(372),INFO" ID="0x98180ba5" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call core_shrb_alloc Failed, Error Code: [0x%08X] @core_msg.c(378),ERROR" ID="0x98180bd2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call core_shrb_attach Failed, Error Code: [0x%08X] @core_msg.c(384),ERROR" ID="0x98180c02" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_msg.c(392),INFO" ID="0x98180c45" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_msg.c(401),INFO" ID="0x98180c8d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call core_shrb_get_id Failed, Error Code: [0x%08X] @core_msg.c(409),ERROR" ID="0x98180cca" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call core_shrb_detach Failed, Error Code: [0x%08X] @core_msg.c(415),ERROR" ID="0x98180cfa" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call core_shrb_free Failed, Error Code: [0x%08X] @core_msg.c(421),ERROR" ID="0x98180d2a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_msg.c(429),INFO" ID="0x98180d6d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_msg.c(438),INFO" ID="0x98180db5" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call core_shrb_get_id Failed, Error Code: [0x%08X] @core_msg.c(442),ERROR" ID="0x98180dd2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call core_shrb_attach Failed, Error Code: [0x%08X] @core_msg.c(448),ERROR" ID="0x98180e02" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_msg.c(454),INFO" ID="0x98180e35" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_msg.c(463),INFO" ID="0x98180e7d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call core_shrb_get_id Failed, Error Code: [0x%08X] @core_msg.c(467),ERROR" ID="0x98180e9a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call core_shrb_detach Failed, Error Code: [0x%08X] @core_msg.c(473),ERROR" ID="0x98180eca" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_msg.c(480),INFO" ID="0x98180f05" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_msg.c(488),INFO" ID="0x98180f45" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_msg.c(491),INFO" ID="0x98180f5d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call core_mod_init Failed, Error Code: [0x%08X] @core_msg.c(497),ERROR" ID="0x98180f8a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_msg.c(504),INFO" ID="0x98180fc5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_msg.c(512),INFO" ID="0x98181005" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_msg.c(514),INFO" ID="0x98181015" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_msg.c(519),INFO" ID="0x9818103d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call core_mod_deinit Failed, Error Code: [0x%08X] @core_msg.c(525),ERROR" ID="0x9818106a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_msg.c(531),INFO" ID="0x9818109d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_msg.c(541),INFO" ID="0x981810ed" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call core_mod_alloc Failed, Error Code: [0x%08X] @core_msg.c(552),ERROR" ID="0x98181142" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]msg_inst-&gt;qid.u32 = 0x%08X @core_msg.c(559),INFO" ID="0x9818117d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call msg_fifo_alloc_shrb Failed, Error Code: [0x%08X] @core_msg.c(564),ERROR" ID="0x981811a2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]msg_inst-&gt;shrb_buf.data_buf = 0x%08X @core_msg.c(568),INFO" ID="0x981811c5" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call msg_fifo_attach_shrb Failed, Error Code: [0x%08X] @core_msg.c(572),ERROR" ID="0x981811e2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]msg_inst-&gt;shrb_buf.data_buf = 0x%08X @core_msg.c(576),INFO" ID="0x98181205" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_msg.c(581),INFO" ID="0x9818122d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_msg.c(589),INFO" ID="0x9818126d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call msg_fifo_free_shrb Failed, Error Code: [0x%08X] @core_msg.c(594),ERROR" ID="0x98181292" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call msg_fifo_detach_shrb Failed, Error Code: [0x%08X] @core_msg.c(601),ERROR" ID="0x981812ca" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call core_mod_free Failed, Error Code: [0x%08X] @core_msg.c(611),ERROR" ID="0x9818131a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_msg.c(615),INFO" ID="0x9818133d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call msg_fifo_init Failed, Error Code: [0x%08X] @core_msg.c(664),ERROR" ID="0x981814c2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call msg_fifo_create Failed, Error Code: [0x%08X] @core_msg.c(675),ERROR" ID="0x9818151a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call msg_fifo_destroy Failed, Error Code: [0x%08X] @core_msg.c(696),ERROR" ID="0x981815c2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]ret = 0x%08X @core_msg.c(785),ERROR" ID="0x9818188a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]msg_size = %u @core_msg.c(284),ERROR" ID="0x981808e2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]read_pos = %u @core_msg.c(289),ERROR" ID="0x9818090a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]write_pos = %u @core_msg.c(290),ERROR" ID="0x98180912" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]msg_size = %u @core_msg.c(291),ERROR" ID="0x9818091a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]msg_size = %u @core_msg.c(327),ERROR" ID="0x98180a3a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]msg_crc = %u @core_msg.c(333),ERROR" ID="0x98180a6a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_msg.c(376),INFO" ID="0x98180bc5" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call core_shrb_alloc Failed, Error Code: [0x%08X] @core_msg.c(382),ERROR" ID="0x98180bf2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call core_shrb_attach Failed, Error Code: [0x%08X] @core_msg.c(388),ERROR" ID="0x98180c22" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_msg.c(396),INFO" ID="0x98180c65" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_msg.c(405),INFO" ID="0x98180cad" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call core_shrb_get_id Failed, Error Code: [0x%08X] @core_msg.c(413),ERROR" ID="0x98180cea" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call core_shrb_detach Failed, Error Code: [0x%08X] @core_msg.c(419),ERROR" ID="0x98180d1a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call core_shrb_free Failed, Error Code: [0x%08X] @core_msg.c(425),ERROR" ID="0x98180d4a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_msg.c(433),INFO" ID="0x98180d8d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_msg.c(442),INFO" ID="0x98180dd5" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call core_shrb_get_id Failed, Error Code: [0x%08X] @core_msg.c(446),ERROR" ID="0x98180df2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call core_shrb_attach Failed, Error Code: [0x%08X] @core_msg.c(452),ERROR" ID="0x98180e22" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_msg.c(458),INFO" ID="0x98180e55" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_msg.c(467),INFO" ID="0x98180e9d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call core_shrb_get_id Failed, Error Code: [0x%08X] @core_msg.c(471),ERROR" ID="0x98180eba" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call core_shrb_detach Failed, Error Code: [0x%08X] @core_msg.c(477),ERROR" ID="0x98180eea" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_msg.c(484),INFO" ID="0x98180f25" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_msg.c(492),INFO" ID="0x98180f65" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_msg.c(495),INFO" ID="0x98180f7d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call core_mod_init Failed, Error Code: [0x%08X] @core_msg.c(501),ERROR" ID="0x98180faa" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_msg.c(508),INFO" ID="0x98180fe5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_msg.c(516),INFO" ID="0x98181025" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_msg.c(518),INFO" ID="0x98181035" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_msg.c(523),INFO" ID="0x9818105d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call core_mod_deinit Failed, Error Code: [0x%08X] @core_msg.c(529),ERROR" ID="0x9818108a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_msg.c(535),INFO" ID="0x981810bd" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_msg.c(545),INFO" ID="0x9818110d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call core_mod_alloc Failed, Error Code: [0x%08X] @core_msg.c(556),ERROR" ID="0x98181162" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]msg_inst-&gt;qid.u32 = 0x%08X @core_msg.c(563),INFO" ID="0x9818119d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call msg_fifo_alloc_shrb Failed, Error Code: [0x%08X] @core_msg.c(568),ERROR" ID="0x981811c2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]msg_inst-&gt;shrb_buf.data_buf = 0x%08X @core_msg.c(572),INFO" ID="0x981811e5" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call msg_fifo_attach_shrb Failed, Error Code: [0x%08X] @core_msg.c(576),ERROR" ID="0x98181202" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]msg_inst-&gt;shrb_buf.data_buf = 0x%08X @core_msg.c(580),INFO" ID="0x98181225" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_msg.c(585),INFO" ID="0x9818124d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_msg.c(593),INFO" ID="0x9818128d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call msg_fifo_free_shrb Failed, Error Code: [0x%08X] @core_msg.c(598),ERROR" ID="0x981812b2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call msg_fifo_detach_shrb Failed, Error Code: [0x%08X] @core_msg.c(605),ERROR" ID="0x981812ea" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call core_mod_free Failed, Error Code: [0x%08X] @core_msg.c(615),ERROR" ID="0x9818133a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_msg.c(619),INFO" ID="0x9818135d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call msg_fifo_init Failed, Error Code: [0x%08X] @core_msg.c(668),ERROR" ID="0x981814e2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call msg_fifo_create Failed, Error Code: [0x%08X] @core_msg.c(679),ERROR" ID="0x9818153a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call msg_fifo_destroy Failed, Error Code: [0x%08X] @core_msg.c(700),ERROR" ID="0x981815e2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]ret = 0x%08X @core_msg.c(789),ERROR" ID="0x981818aa" />
                        </MSG_LOG>
\ No newline at end of file
index f50202b..3ab2f0f 100644 (file)
@@ -86,7 +86,7 @@
                        <MSG STRUCTURE="diag_log_msg3" NAME="[INFO][EA]next elt:cb_start=0x%x, ts=0x%x, prio=0x%x @ea_ram.c(55),INFO" ID="0x89c401bd" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="hci_set_min_enc_key_size, key_min_size:%d @hci_enc.c(24),INFO" ID="0x880200c5" />
                        <MSG STRUCTURE="diag_log_msg4" NAME="hci_send_enc_change_evt, link_id:%d, status:%d, conhdl:%d, enc_stat:%d @hci_enc.c(74),INFO" ID="0x88020255" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[BIS]Invalid parameters finetimecnt:%d, iso_intv:%d, iso_subevtnum:%d @patch_lld_bis_evt.c(53),WARNING" ID="0x8a6c01ab" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[BIS]Invalid parameters finetimecnt:%d, iso_intv:%d, iso_subevtnum:%d @patch_lld_bis_evt.c(53),WARNING" ID="0x8a7001ab" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="ble log: memcpy adv_manu_spec_data fail when get adv data @ble_general_adv.c(209),ERROR" ID="0x8cb8068a" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="ble log: memcpy adv_data fail when get adv data @ble_general_adv.c(231),ERROR" ID="0x8cb8073a" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="ble log: memcpy mac fail when get adv data @ble_general_adv.c(255),ERROR" ID="0x8cb807fa" />
                        <MSG STRUCTURE="diag_log_msg2" NAME="Controller|[%d]:0x%02x @bt_transparent_bypass.c(24),INFO" ID="0x8de400c5" />
                        <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(601),INFO" ID="0x8b8212cd" />
+                       <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_msg3" NAME="[HCI][LK_REQUEST] REMOTE_BD_ADDR=%02x:%02x:*:*:*:%02x @hci_secu.c(877),INFO" ID="0x8ad81b6d" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="[WARNING][BIS]invalid rx phy %d  @lld_bis_evt.c(2073),WARNING" ID="0x896040cb" />
                        <MSG STRUCTURE="diag_log_msg4" NAME="lld_evt_get_bis_cs_id, primary_desc=%d, second_desc=%d, primary_conflict=%d,second_conflict=%d @lld_bis_evt.c(2129),INFO" ID="0x8960428d" />
                        <MSG STRUCTURE="diag_log_msg4" NAME="lld_evt_get_bis_cs_id2, primary_rem=%d, second_rem=%d,lastcs=%d, primary|second_dbg=0x%x @lld_bis_evt.c(2134),INFO" ID="0x896042b5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[INFO][LLM]llm_ral_dev_add:ral is full @patch_llm_util.c(107),INFO" ID="0x8a6a035d" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="[INFO][LLM]llm_ral_dev_add:in_wl=%d, l_irk_valid=%d, p_irk_valid=%d, peer_id_addr_type=%d @patch_llm_util.c(133),INFO" ID="0x8a6a042d" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[INFO][LLM]llm_ral_dev_add:peer_id_addr=0x%8x%4x, nbral=%d @patch_llm_util.c(139),INFO" ID="0x8a6a045d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[INFO][LLM]llm_ral_dev_add:ral is full @patch_llm_util.c(107),INFO" ID="0x8a6e035d" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="[INFO][LLM]llm_ral_dev_add:in_wl=%d, l_irk_valid=%d, p_irk_valid=%d, peer_id_addr_type=%d @patch_llm_util.c(133),INFO" ID="0x8a6e042d" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[INFO][LLM]llm_ral_dev_add:peer_id_addr=0x%8x%4x, nbral=%d @patch_llm_util.c(139),INFO" ID="0x8a6e045d" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[INFO][LC]lm_get_auth_method:SP_OOB @lc_task.c(437),INFO" ID="0x887a0dad" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[INFO][LC]lm_get_auth_method:SP_JUST_WORKS @lc_task.c(443),INFO" ID="0x887a0ddd" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="[INFO][LC]lm_get_auth_method:0x%x @lc_task.c(447),INFO" ID="0x887a0dfd" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[ERROR][param]hci_util_pack:format = NULL @hci_util.c(155),ERROR" ID="0x88d204da" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[ERROR][param]hci_util_unpack:format = NULL @hci_util.c(248),ERROR" ID="0x88d207c2" />
                        <MSG STRUCTURE="diag_log_msg4" NAME="[BIS]pto_tx_idx=%d,pldcntr=%d,tx_desc_idx=%d,pkt_seq_num=%d @lld_bis_evt_ram.c(137),INFO" ID="0x8a30044d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[LD]ld_acl_sched_update_ts ts=0x%x @patch_ld_acl.c(37),INFO" ID="0x8a64012d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[LD]ld_acl_sched_update_ts ts=0x%x @patch_ld_acl.c(37),INFO" ID="0x8a68012d" />
                        <MSG STRUCTURE="diag_log_msg2" NAME="llcp_priv_uhd_req_handler_v1:state%d,llc_env_ptr-&gt;loc_proc_state%d @llc_uhd_llcp.c(102),INFO" ID="0x894e0335" />
                        <MSG STRUCTURE="diag_log_msg2" NAME="[INFO][LLC][PHY]llcp_priv_uhd_req_handler_v1:txphys=%d,rxphys=%d @llc_uhd_llcp.c(106),INFO" ID="0x894e0355" />
                        <MSG STRUCTURE="diag_log_msg2" NAME="[INFO][LLC][PHY]llcp_priv_uhd_req_handler_v1:tx_uhd_capability%d,rx_uhd_capability%d @llc_uhd_llcp.c(109),INFO" ID="0x894e036d" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="[HDAP]stream_id=%d not HDAP @packet_ul.c(54),INFO" ID="0x8c2a01b5" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[HDAP]recv_packet_data_ind flow ctrl @packet_ul.c(58),INFO" ID="0x8c2a01d5" />
                        <MSG STRUCTURE="diag_log_msg5" NAME="[HCI][HDAP]data_len=%d, data[5]=0x%x, data[84]=0x%x, data[164]=0x%x, TIME=%ld @packet_ul.c(76),DBG" ID="0x8c2a0266" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[WARNING][BIS]lld_big_acad_ind_handle, biginfo unpack fail @patch_llc_bis_util.c(93),WARNING" ID="0x8a6202eb" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[WARNING][BIS]lld_big_acad_ind_handle, biginfo unpack fail @patch_llc_bis_util.c(93),WARNING" ID="0x8a6602eb" />
                        <MSG STRUCTURE="diag_log_msg4" NAME="[INFO][BIS]uhd phy update:phy=%d,uhd_cap=%d,polar=%d,data_len=%d @lld_bis_uhd.c(153),INFO" ID="0x881004cd" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="[INFO][LLD]lld_pdu_tx_flush_list:txnode-&gt;idx=%d @lld_util.c(123),INFO" ID="0x885c03dd" />
                        <MSG STRUCTURE="diag_log_msg4" NAME="[INFO][LLD]lld_util_set_cs_bd_address:idx=0x%x, type=%x, bd[5:4]=%x, bd[0]=%x @lld_util.c(166),INFO" ID="0x885c0535" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="[ERROR][handle]bt_et_currentrxdescptr_currentrxdescptr_getf()=%d @ld_sscan.c(162),ERROR" ID="0x88a00512" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[ERROR][param]ld_sscan_env.evt != evt @ld_sscan.c(178),ERROR" ID="0x88a00592" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="[ERROR][SSCAN][LD]ld_sscan_evt_canceled_cbk: status = %d @ld_sscan.c(226),INFO" ID="0x88a00715" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="bt_init start... em start addr is 0x%x,em_size is 0x%x @bt_main.c(445),INFO" ID="0x89220ded" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[PMU][ERROR]bt init pmu state change fail @bt_main.c(449),ERROR" ID="0x89220e0a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[INFO][BT]bt_hal_phy_init started... @bt_main.c(469),INFO" ID="0x89220ead" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[INFO][BT]init_sleep started... @bt_main.c(474),INFO" ID="0x89220ed5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[INFO][BT]intc_init started... @bt_main.c(477),INFO" ID="0x89220eed" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[INFO][BT]bt param config started... @bt_main.c(480),INFO" ID="0x89220f05" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[PMU][ERROR]bt init end pmu state change fail @bt_main.c(501),ERROR" ID="0x89220faa" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="bt_init start... em start addr is 0x%x,em_size is 0x%x @bt_main.c(446),INFO" ID="0x89220df5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[PMU][ERROR]bt init pmu state change fail @bt_main.c(450),ERROR" ID="0x89220e12" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[INFO][BT]bt_hal_phy_init started... @bt_main.c(470),INFO" ID="0x89220eb5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[INFO][BT]init_sleep started... @bt_main.c(475),INFO" ID="0x89220edd" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[INFO][BT]intc_init started... @bt_main.c(478),INFO" ID="0x89220ef5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[INFO][BT]bt param config started... @bt_main.c(481),INFO" ID="0x89220f0d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[PMU][ERROR]bt init end pmu state change fail @bt_main.c(502),ERROR" ID="0x89220fb2" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="KFIFO: bt kfifo copy in memcpy error @bt_kfifo.c(89),ERROR" ID="0x8cae02ca" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="KFIFO: init_size:%d @bt_kfifo.c(125),INFO" ID="0x8cae03ed" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="KFIFO: none vaild size %d @bt_kfifo.c(131),ERROR" ID="0x8cae041a" />
                        <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_msg1" NAME="sco disconnect complete sco_hdl=0x%x @tladapter.c(159),INFO" ID="0x8b9c04fd" />
+                       <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="MEMCPY ERR, mem_flag = %d @bt_mdmrfabb_global.c(1041),ERROR" ID="0x8938208a" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[ERROR][CFG]g_aus_number_access MAX Error @bt_em_config.c(1080),ERROR" ID="0x894421c2" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[ERROR][CFG]BT_CFG_FAIL @bt_em_config.c(1131),ERROR" ID="0x8944235a" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[ERROR][CFG] bt_write_cfg_by_em failed @bt_em_config.c(1186),ERROR" ID="0x89442512" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[INFO][DFX]dfx_bt_parse_debug_cmd:too many Parameter, quit parsing @patch_btdfx.c(50),INFO" ID="0x8a520195" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[INFO][DFX]dfx_bt_parse_debug_cmd:too many Parameter, quit parsing @patch_btdfx.c(50),INFO" ID="0x8a560195" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="pbap srv pull phonebook ret=0x%x @bt_ahi_pbap.c(50),INFO" ID="0x8c9e0195" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="pbap srv pull cardlist ret=0x%x @bt_ahi_pbap.c(68),INFO" ID="0x8c9e0225" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="pbap srv pull cardentry ret=0x%x @bt_ahi_pbap.c(86),INFO" ID="0x8c9e02b5" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[WARNING][AE]llm_ext_adv_evt_end_elt_process:elt_to_free is NULL @llm_ae_pdu.c(944),WARNING" ID="0x884a1d83" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[WARNING][AE]llm_ext_adv_evt_end_elt_process:nothing to release @llm_ae_pdu.c(952),WARNING" ID="0x884a1dc3" />
                        <MSG STRUCTURE="diag_log_msg2" NAME="[ERROR][AE]llm_ae_adv_elt_del:count=%, CNT = %d @llm_ae_pdu.c(1527),ERROR" ID="0x884a2fba" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[WARNING] llcp_channel_map_req_handler , INSTANT_REJECT, state=%d, mode=%d @patch_llc_llcp.c(42),WARNING" ID="0x8a520153" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[WARNING] llcp_channel_map_req_handler, INSTANT_COLLISION, map_instant_action %d instant_action %d @patch_llc_llcp.c(49),WARNING" ID="0x8a52018b" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="llcp_channel_map_req_handler, instant=%d, counter=%d, remote_device_id=%d @patch_llc_llcp.c(59),WARNING" ID="0x8a5201db" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[WARNING] llcp_channel_map_req_handler, INSTANT_PASSED, instant=%d, counter=%d @patch_llc_llcp.c(67),WARNING" ID="0x8a52021b" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[ISOAL][ERR]iso_buf_alloc_fail @llc_isoal.c(200),INFO" ID="0x89de0645" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[ISOAL][ERR]iso_buf_alloc_fail @llc_isoal.c(246),INFO" ID="0x89de07b5" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[ISOAL][ERR]iso_buf_alloc_fail @llc_isoal.c(289),INFO" ID="0x89de090d" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[HFP][SCO_CONN_REQ] not support sco codec neg @hfp_hlp.c(1554),WARNING" ID="0x8be43093" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="[HFP][SCO_CONN] SCO_HANDLE=0x%x @hfp_hlp.c(1624),INFO" ID="0x8be432c5" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[GAP][create_handle] memcpy failed @gap_hlp_comm.c(260),ERROR" ID="0x8b8e0822" />
-                       <MSG STRUCTURE="diag_log_msg6" NAME="[GAP][ACL_EVENT_CALLBACK] JOB=%u, LINK_TYPE=%u, ACL_LINK_HANDLE=0x%x, REMOTE_ADDR=%02x:%02x:**:**:**:%02x @gap_hlp_comm.c(477),INFO" ID="0x8b8e0eed" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[GAP]memcpy failed @gap_hlp_comm.c(887),ERROR" ID="0x8b8e1bba" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="gaph_hci_command_cbk, operation=%x, code:%x @gap_hlp_comm.c(981),INFO" ID="0x8b8e1ead" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[GAP][MEMCPY_FAILED]CreateContext memcpy fail,ret=%d @gap_hlp_comm.c(1048),INFO" ID="0x8b8e20c5" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[GAP][LINK_ALREADY_EXISTS] REMOTE_ADDR=%02x:%02x:**:**:**:%02x @gap_hlp_comm.c(1086),INFO" ID="0x8b8e21f5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[GAP]memcpy failed @gap_hlp_comm.c(1842),ERROR" ID="0x8b8e3992" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[GAP]memcpy failed @gap_hlp_comm.c(1862),ERROR" ID="0x8b8e3a32" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[GAP][LOCAL_DISC_REQ] REMOTE_ADDR=%02x:%02x:**:**:**:%02x, can't find acl link @gap_hlp_comm.c(2011),INFO" ID="0x8b8e3edd" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[GAP][LOCAL_DISC_REQ] REMOTE_ADDR=%02x:%02x:**:**:**:%02x, can't find acl link @gap_hlp_comm.c(2041),INFO" ID="0x8b8e3fcd" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[GAP] acl_link cbk link_type:%d job:%d @gap_hlp_comm.c(444),ERROR" ID="0x8b8e0de2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[GAP][acl]job:%d link is NULL @gap_hlp_comm.c(464),ERROR" ID="0x8b8e0e82" />
+                       <MSG STRUCTURE="diag_log_msg6" NAME="[GAP][ACL_EVENT_CALLBACK] JOB=%u, LINK_TYPE=%u, ACL_LINK_HANDLE=0x%x, REMOTE_ADDR=%02x:%02x:**:**:**:%02x @gap_hlp_comm.c(482),INFO" ID="0x8b8e0f15" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[GAP]memcpy failed @gap_hlp_comm.c(892),ERROR" ID="0x8b8e1be2" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="gaph_hci_command_cbk, operation=%x, code:%x @gap_hlp_comm.c(986),INFO" ID="0x8b8e1ed5" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[GAP][MEMCPY_FAILED]CreateContext memcpy fail,ret=%d @gap_hlp_comm.c(1053),INFO" ID="0x8b8e20ed" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[GAP][LINK_ALREADY_EXISTS] REMOTE_ADDR=%02x:%02x:**:**:**:%02x @gap_hlp_comm.c(1091),INFO" ID="0x8b8e221d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[GAP]memcpy failed @gap_hlp_comm.c(1847),ERROR" ID="0x8b8e39ba" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[GAP]memcpy failed @gap_hlp_comm.c(1867),ERROR" ID="0x8b8e3a5a" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[GAP][LOCAL_DISC_REQ] REMOTE_ADDR=%02x:%02x:**:**:**:%02x, can't find acl link @gap_hlp_comm.c(2016),INFO" ID="0x8b8e3f05" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[GAP][LOCAL_DISC_REQ] REMOTE_ADDR=%02x:%02x:**:**:**:%02x, can't find acl link @gap_hlp_comm.c(2046),INFO" ID="0x8b8e3ff5" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[WARNING][LLD]lld_ae_per_sync_start:evt_defer is null @lld_per_pdu.c(76),WARNING" ID="0x897a0263" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[INFO][LLD]lld_ae_per_sync_start:sync start ok @lld_per_pdu.c(79),INFO" ID="0x897a027d" />
                        <MSG STRUCTURE="diag_log_msg2" NAME="[WARNING][LLD]lld_ae_per_sync_start:not start, syncinfo_time=0x%x, pdu_dur=%d @lld_per_pdu.c(84),WARNING" ID="0x897a02a3" />
                        <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),INFO" ID="0x8cc0205d" />
+                       <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(1090),ERROR" ID="0x8cc02212" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble core: ble state ind malloc fail: %d @ble_core.c(1100),ERROR" ID="0x8cc02262" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: app ble smp key handle message is NULL @ble_core.c(1109),ERROR" ID="0x8cc022aa" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble core: ble state ind memcpy rmt fail: %d @ble_core.c(1154),ERROR" ID="0x8cc02412" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble log: AppBleConnResult msg_data is NULL @ble_core.c(1181),ERROR" ID="0x8cc024ea" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble log: AppBleConnResult link does not exist on handle:%x @ble_core.c(1188),ERROR" ID="0x8cc02522" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble core: conn update result fail = %d @ble_core.c(1208),WARNING" ID="0x8cc025c3" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: Had Active Disconn,not to retry @ble_core.c(1333),INFO" ID="0x8cc029ad" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ANCS]500ms comes! @ble_core.c(1365),INFO" ID="0x8cc02aad" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble core: unsupported msg_id: 0x%x @ble_core.c(1385),INFO" ID="0x8cc02b4d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble core: app ble init fail ret:%x @ble_core.c(1481),ERROR" ID="0x8cc02e4a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: ble core connect proc cmds param NULL @ble_core.c(1515),ERROR" ID="0x8cc02f5a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: ble core connect proc cmds pkt_ptr NULL @ble_core.c(1520),ERROR" ID="0x8cc02f82" />
+                       <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_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_msg1" NAME="[INFO][LMP]lmp_bt_uhd_pref_phy_req_handler Enter! State=%d @lc_lmp_uhd.c(415),INFO" ID="0x89a00cfd" />
                        <MSG STRUCTURE="diag_log_msg4" NAME="[L2CAP][SIGNAL_SEND]HANDLE=0x%x, CODE=0x%x, IDENTIFIER=%d, LENGTH=%d @l2cap_data_proc.c(126),INFO" ID="0x8bc403f5" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="hfp_handle_ev_disconnect_complete hdl=0x%x @sdk_hfp.c(202),INFO" ID="0x8b7e0655" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="hfp set active mem id: sco_hdl=0x%x in_mem=0x%x out_mem=0x%x @sdk_hfp.c(229),WARNING" ID="0x8b7e072b" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="hfp map mem id: sco_hdl=0x%x in_mem=0x%x out_mem=0x%x @sdk_hfp.c(236),INFO" ID="0x8b7e0765" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="hfp set active mem id: sco_hdl=0x%x in_mem=0x%x out_mem=0x%x @sdk_hfp.c(229),ERROR" ID="0x8b7e072a" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="hfp map mem id: sco_hdl=0x%x in_mem=0x%x out_mem=0x%x @sdk_hfp.c(236),ERROR" ID="0x8b7e0762" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="memory copy failed ret=0x%x @sdk_hfp.c(250),WARNING" ID="0x8b7e07d3" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="hfp map mem id: sco_hdl=0x%x in_mem=0x%x out_mem=0x%x @sdk_hfp.c(291),WARNING" ID="0x8b7e091b" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="SDK_HFP: send msg to mcu ev= 0x%x, role=0x%x @sdk_hfp.c(296),WARNING" ID="0x8b7e0943" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="hfp map mem id: sco_hdl=0x%x in_mem=0x%x out_mem=0x%x @sdk_hfp.c(291),ERROR" ID="0x8b7e091a" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="SDK_HFP: send msg to mcu ev= 0x%x, role=0x%x @sdk_hfp.c(296),ERROR" ID="0x8b7e0942" />
                        <MSG STRUCTURE="diag_log_msg2" NAME="SDK_HFP: ev disconnect, conn_cfm-&gt;role = %x, conn_cfm-&gt;result=%d @sdk_hfp.c(360),INFO" ID="0x8b7e0b45" />
                        <MSG STRUCTURE="diag_log_msg2" NAME="SDK_HFP: slc event = %d, slc_info-&gt;role = %x @sdk_hfp.c(388),INFO" ID="0x8b7e0c25" />
                        <MSG STRUCTURE="diag_log_msg2" NAME="[HFP][SDK]SLC RELEASED role=%d handle=0x%x @sdk_hfp.c(452),INFO" ID="0x8b7e0e25" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[INFO][AE]llm_per_sync_lost_report:sync link establish fail @llm_per_common.c(73),INFO" ID="0x8996024d" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[INFO][AE]llm_per_sync_lost_report:sync link timeout @llm_per_common.c(86),INFO" ID="0x899602b5" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[WARNING][AE]:event is masked @llm_per_common.c(114),WARNING" ID="0x89960393" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[HCI] create le connection addr:%02x******%02x%02x @hci_link_le.c(116),ERROR" ID="0x8ad603a2" />
                        <MSG STRUCTURE="diag_log_msg2" NAME="[INFO][LLD]lld_evt_ext_adv_schedule:llc_env[%d]=0x%x @lld_ae_sched.c(71),INFO" ID="0x8818023d" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[INFO][LLD]lld_evt_ext_adv_schedule:adv expire stop @lld_ae_sched.c(77),INFO" ID="0x8818026d" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="pri_embuff failed @lld_ae_sched.c(166),ERROR" ID="0x88180532" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="role = slave, esco_lt_addr = acl_lt_addr = %d @lc_sco.c(1659),INFO" ID="0x887233dd" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[ERROR][param]lc_sco_env[sync_linkid].p_nego_params != NULL @lc_sco.c(1912),ERROR" ID="0x88723bc2" />
                        <MSG STRUCTURE="diag_log_msg2" NAME="[ERROR]lc_sco_peer_reject_disc link_id=%d, reason=%d @lc_sco.c(2020),ERROR" ID="0x88723f22" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[HCI][LE_CONN_COMPLETE] STATUS=0x%x @hci_ev_le.c(408),INFO" ID="0x8ad00cc5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[HCI][LE_META_ISO_EV] it is iso event @hci_ev_le.c(527),INFO" ID="0x8ad0107d" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[HCI][LE_CONN_COMPLETE] STATUS=0x%x role:%d conn_handle:%d @hci_ev_le.c(410),ERROR" ID="0x8ad00cd2" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="[HCI][LE_CONN_COMPLETE] addr=%02x******%02x%02x addr_type:%d @hci_ev_le.c(417),ERROR" ID="0x8ad00d0a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[HCI][LE_META_ISO_EV] it is iso event @hci_ev_le.c(536),INFO" ID="0x8ad010c5" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="[JITWS][AVDTP]a2dp_set_config_ind_cfm: can't find a2dp stream handle by input HANDLE=0x%x @a2dp_hlp.c(116),INFO" ID="0x8abe03a5" />
                        <MSG STRUCTURE="diag_log_msg2" NAME="llc_chnl_cls_feats_process:conhdl:%d, dest_id:%d @llc_channel_classification.c(135),INFO" ID="0x89f4043d" />
                        <MSG STRUCTURE="diag_log_msg4" NAME="[CLS]map[0]:%d,map[1]:%d,map[2]:%d,map[3]:%d @llc_channel_classification.c(157),INFO" ID="0x89f404ed" />
                        <MSG STRUCTURE="diag_log_msg2" NAME="[INFO][param] BTC TopOfStack(%x), StackSize(%x) @bt_thread.c(741),INFO" ID="0x8924172d" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[INFO][BT]bt_run_state_report OK @bt_thread.c(801),INFO" ID="0x8924190d" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="[INFO][BT]g_BtRunState=%d @bt_thread.c(816),INFO" ID="0x89241985" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[GAP][RandAddrCfm][ERROR] gap_fsminst is NULL @gap_hlp_le.c(1227),INFO" ID="0x8b8c265d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[GAP][LE_MULTI_ADV] ACTION=UPDATE_MULTI_ADV_PARAM, RESULT=0x%x @gap_hlp_le.c(2059),INFO" ID="0x8b8c405d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[GAP][LE_MULTI_ADV] ACTION=UPDATE_MULTI_DATA, RESULT=0x%x @gap_hlp_le.c(2124),INFO" ID="0x8b8c4265" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[GAP][LE_MULTI_ADV] ACTION=UPDATE_MULTI_RANDOM_ADDR, RESULT=0x%x @gap_hlp_le.c(2166),INFO" ID="0x8b8c43b5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[GAP][LE_MULTI_ADV][ERROR] gap_fsminst is NULL @gap_hlp_le.c(2169),INFO" ID="0x8b8c43cd" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[GAP][LE_MULTI_ADV] ACTION=UPDATE_MULTIADV_ENABLE, RESULT=0x%x @gap_hlp_le.c(2235),INFO" ID="0x8b8c45dd" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="[GAP][LE_MULTI_ADV] ACTION=SET_MULTI_ADV_PARAM, SUB_CODE=%d, HANDLE=0x%x @gap_hlp_le.c(2313),INFO" ID="0x8b8c484d" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="[GAP][LE_MULTI_ADV] ACTION=SET_MULTI_ADV_DATA, SUB_CODE=%d, HANDLE=0x%x @gap_hlp_le.c(2345),INFO" ID="0x8b8c494d" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="[GAP][LE_MULTI_ADV] ACTION=SET_MULTI_RANDOM_ADDR, SUB_CODE=%d, HANDLE=0x%x @gap_hlp_le.c(2369),INFO" ID="0x8b8c4a0d" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[GAP][LE_MULTI_ADV] ACTION=SET_MULTI_ADV_ENABLE, SUB_CODE=%d, HANDLE=0x%x, ENABLE=%d @gap_hlp_le.c(2400),INFO" ID="0x8b8c4b05" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="[GAP] own_address_type = %x adv_event_flag = %x @gap_hlp_le.c(2553),INFO" ID="0x8b8c4fcd" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[GAP]set ext adv - BT init not complete!!! @gap_hlp_le.c(3073),WARNING" ID="0x8b8c600b" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[GAP]memcpy failed @gap_hlp_le.c(3525),ERROR" ID="0x8b8c6e2a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[GAP]memcpy failed @gap_hlp_le.c(3531),ERROR" ID="0x8b8c6e5a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[GAP]memcpy failed @gap_hlp_le.c(3539),ERROR" ID="0x8b8c6e9a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[GAP]memcpy failed @gap_hlp_le.c(3545),ERROR" ID="0x8b8c6eca" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[GAP] smp cbk event:%d @gap_hlp_le.c(507),ERROR" ID="0x8b8c0fda" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[GAP][RandAddrCfm][ERROR] gap_fsminst is NULL @gap_hlp_le.c(1229),INFO" ID="0x8b8c266d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[GAP][LE_MULTI_ADV] ACTION=UPDATE_MULTI_ADV_PARAM, RESULT=0x%x @gap_hlp_le.c(2061),INFO" ID="0x8b8c406d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[GAP][LE_MULTI_ADV] ACTION=UPDATE_MULTI_DATA, RESULT=0x%x @gap_hlp_le.c(2126),INFO" ID="0x8b8c4275" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[GAP][LE_MULTI_ADV] ACTION=UPDATE_MULTI_RANDOM_ADDR, RESULT=0x%x @gap_hlp_le.c(2168),INFO" ID="0x8b8c43c5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[GAP][LE_MULTI_ADV][ERROR] gap_fsminst is NULL @gap_hlp_le.c(2171),INFO" ID="0x8b8c43dd" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[GAP][LE_MULTI_ADV] ACTION=UPDATE_MULTIADV_ENABLE, RESULT=0x%x @gap_hlp_le.c(2237),INFO" ID="0x8b8c45ed" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[GAP][LE_MULTI_ADV] ACTION=SET_MULTI_ADV_PARAM, SUB_CODE=%d, HANDLE=0x%x @gap_hlp_le.c(2315),INFO" ID="0x8b8c485d" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[GAP][LE_MULTI_ADV] ACTION=SET_MULTI_ADV_DATA, SUB_CODE=%d, HANDLE=0x%x @gap_hlp_le.c(2347),INFO" ID="0x8b8c495d" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[GAP][LE_MULTI_ADV] ACTION=SET_MULTI_RANDOM_ADDR, SUB_CODE=%d, HANDLE=0x%x @gap_hlp_le.c(2371),INFO" ID="0x8b8c4a1d" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[GAP][LE_MULTI_ADV] ACTION=SET_MULTI_ADV_ENABLE, SUB_CODE=%d, HANDLE=0x%x, ENABLE=%d @gap_hlp_le.c(2402),INFO" ID="0x8b8c4b15" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[GAP] own_address_type = %x adv_event_flag = %x @gap_hlp_le.c(2555),INFO" ID="0x8b8c4fdd" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[GAP]set ext adv - BT init not complete!!! @gap_hlp_le.c(3075),WARNING" ID="0x8b8c601b" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[GAP]memcpy failed @gap_hlp_le.c(3527),ERROR" ID="0x8b8c6e3a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[GAP]memcpy failed @gap_hlp_le.c(3533),ERROR" ID="0x8b8c6e6a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[GAP]memcpy failed @gap_hlp_le.c(3541),ERROR" ID="0x8b8c6eaa" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[GAP]memcpy failed @gap_hlp_le.c(3547),ERROR" ID="0x8b8c6eda" />
                        <MSG STRUCTURE="diag_log_msg2" NAME="[WARNING]hci_bt_voice_over_dsp_param_handler acl_par[0x%x] sco_par[0x%x] @lc_hci_vodsp.c(50),WARNING" ID="0x8a500193" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="uapi_adp_map dsp2bt_mem_hdl:0x%x success! @lc_hci_vodsp.c(63),INFO" ID="0x8a5001fd" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="uapi_adp_map bt2dsp_mem_hdl:0x%x success! @lc_hci_vodsp.c(70),INFO" ID="0x8a500235" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="bt_abort_when_work @ld.c(332),INFO" ID="0x88920a65" />
                        <MSG STRUCTURE="diag_log_msg3" NAME="[BTC][CQDDR_RX_STAT] link_id=%d, next_rate_found=%d, next_rate_idx=%d @ld.c(968),INFO" ID="0x88921e45" />
                        <MSG STRUCTURE="diag_log_msg3" NAME="[LD][INIT]local_bd_addr=0x%0x:0x%0x:*:*:*:0x%0x @ld.c(1171),INFO" ID="0x8892249d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[GAP][HCI]memcpy failed @hci_core_ram.c(158),ERROR" ID="0x8ba604f2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hci][len] %02x @hci_core_ram.c(888),INFO" ID="0x8ba61bc5" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[HCI][H--&gt;C] %02x @hci_core_ram.c(891),INFO" ID="0x8ba61bdd" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[T%x][TIMEOUT] OPCODE=0x%x, TIMER=0x%x @hci_core_ram.c(1239),WARNING" ID="0x8ba626bb" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="[TIMEOUT] OPCODE=0x%x, TIMER=0x%x @hci_core_ram.c(1243),WARNING" ID="0x8ba626db" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[MEMCPY_FAILED]RecvDataBuff Memcpy fail @hci_core_ram.c(1466),DBG" ID="0x8ba62dd6" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[MEMCPY_FAILED]RecvDataBuff Memcpy fail @hci_core_ram.c(1484),DBG" ID="0x8ba62e66" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[NO GLE]Gle %d! @hci_core_ram.c(1515),INFO" ID="0x8ba62f5d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[GAP][HCI]memcpy failed @hci_core_ram.c(165),ERROR" ID="0x8ba6052a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[HCI] cmd_opcode 0x%x @hci_core_ram.c(894),ERROR" ID="0x8ba61bf2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hci][len] %02x @hci_core_ram.c(897),INFO" ID="0x8ba61c0d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[HCI][H--&gt;C] %02x @hci_core_ram.c(900),INFO" ID="0x8ba61c25" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[T%x][TIMEOUT] OPCODE=0x%x, TIMER=0x%x @hci_core_ram.c(1248),WARNING" ID="0x8ba62703" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[HCI][TIMEOUT] OPCODE=0x%x, TIMER=0x%x @hci_core_ram.c(1252),ERROR" ID="0x8ba62722" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[MEMCPY_FAILED]RecvDataBuff Memcpy fail @hci_core_ram.c(1481),DBG" ID="0x8ba62e4e" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[MEMCPY_FAILED]RecvDataBuff Memcpy fail @hci_core_ram.c(1499),DBG" ID="0x8ba62ede" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[HCI][RX] external fsm buff overflow! fsm_limit=%lu @hci_core_ram.c(1536),ERROR" ID="0x8ba63002" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[HCI][RX]external fsm buff overflow! free buff opcode=0x%x @hci_core_ram.c(1541),ERROR" ID="0x8ba6302a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[NO GLE]Gle %d! @hci_core_ram.c(1573),INFO" ID="0x8ba6312d" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="[INFO]:Start DFT with hook_type=%d @log_oam_msg.c(259),INFO" ID="0xa006081d" />
                        <MSG STRUCTURE="diag_log_msg2" NAME="[OML]recv oml msg type:%d, length:%d @log_oam_msg.c(511),INFO" ID="0xa0060ffd" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="receive hci message succ! @log_oam_msg.c(539),INFO" ID="0xa00610dd" />
                        <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(42),INFO" ID="0x8d540155" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[AVDTP][GET_SEP_FAIL] Can not get sep info @patch_bth.c(146),WARNING" ID="0x8d540493" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[STACK][RECV_RING_STOP] @patch_bth.c(234),INFO" ID="0x8d540755" />
+                       <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_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),WARNING" ID="0x8ba81053" />
+                       <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_msg1" NAME="rx_phy is %d @patch_llc.c(19),INFO" ID="0x8a5a009d" />
+                       <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_msg0" NAME="[productline cali]productline_cali_stop_tx @bt_productline.c(61),INFO" ID="0x88fc01ed" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="bt mpc adapter gatt reliable write characteristic value req interface fail, ret%d @bt_mpc_adpt_gatt.c(576),WARNING" ID="0x8dd61203" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="bt mpc adapter gatt write descriptor req param len error, len = %u @bt_mpc_adpt_gatt.c(587),ERROR" ID="0x8dd6125a" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="bt mpc adapter gatt write descriptor req interface fail, ret%d @bt_mpc_adpt_gatt.c(594),WARNING" ID="0x8dd61293" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble core: ble notify att read data memcpy error! error_code = %x @bt_mpc_adpt_gatt.c(625),INFO" ID="0x8dd6138d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble core: ble notify att read addr memcpy error! error_code = %x @bt_mpc_adpt_gatt.c(632),INFO" ID="0x8dd613c5" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="bt mpc adapter gatt mtu config req param len error, len = %u @bt_mpc_adpt_gatt.c(653),ERROR" ID="0x8dd6146a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="bt mpc adapter gatt mtu config req interface fail, ret%d @bt_mpc_adpt_gatt.c(660),WARNING" ID="0x8dd614a3" />
-                       <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(672),ERROR" ID="0x8dd61502" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="bt mpc adapter gatt get hid report map req interface fail, ret%d @bt_mpc_adpt_gatt.c(679),WARNING" ID="0x8dd6153b" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="bt mpc adapter gatt read descriptor req param len error, len = %u @bt_mpc_adpt_gatt.c(732),WARNING" ID="0x8dd616e3" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="bt mpc adapter gatt read descriptor req param fail, ret%d @bt_mpc_adpt_gatt.c(738),WARNING" ID="0x8dd61713" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="bt mpc adapter gatt mtu set req param len error, len = %u @bt_mpc_adpt_gatt.c(750),ERROR" ID="0x8dd61772" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="bt mpc adapter gatt mtu set req interface fail, ret%d @bt_mpc_adpt_gatt.c(757),WARNING" ID="0x8dd617ab" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble core: ble notify att read addr memcpy error! error_code = %x @bt_mpc_adpt_gatt.c(617),ERROR" ID="0x8dd6134a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble core: ble notify att read data memcpy error! error_code = %x @bt_mpc_adpt_gatt.c(642),INFO" ID="0x8dd61415" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble core: ble notify att read addr memcpy error! error_code = %x @bt_mpc_adpt_gatt.c(649),INFO" ID="0x8dd6144d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="bt mpc adapter gatt mtu config req param len error, len = %u @bt_mpc_adpt_gatt.c(670),ERROR" ID="0x8dd614f2" />
+                       <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_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(114),INFO" ID="0x8bda0395" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[HCI]memcpy error @hci_data_proc.c(372),ERROR" ID="0x8bda0ba2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[HCI]memcpy error @hci_data_proc.c(378),ERROR" ID="0x8bda0bd2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[HCI][RECV_ACL_DATA] CONN_HANDLE=0x%x, link not found @hci_data_proc.c(465),INFO" ID="0x8bda0e8d" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[HCI][H--&gt;C] OPCODE=0x%x, HANDLE=0x%x, LEN=%u @hci_data_proc.c(669),INFO" ID="0x8bda14ed" />
-                       <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(679),INFO" ID="0x8bda153d" />
-                       <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(685),WARNING" ID="0x8bda156b" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[HCI][H--&gt;C] OPCODE=0x%x, HANDLE=0x%x, LEN=%u @hci_data_proc.c(706),DBG" ID="0x8bda1616" />
-                       <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(711),DBG" ID="0x8bda163e" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[HCI][H--&gt;C] LEN=%u @hci_data_proc.c(726),DBG" ID="0x8bda16b6" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="[HCI][H--&gt;C] %02x %02x %02x %02x @hci_data_proc.c(732),DBG" ID="0x8bda16e6" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[HCI][H--&gt;C] %02x %02x %02x @hci_data_proc.c(737),DBG" ID="0x8bda170e" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="[HCI][H--&gt;C] %02x %02x @hci_data_proc.c(740),DBG" ID="0x8bda1726" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[HCI][H--&gt;C] %02x @hci_data_proc.c(742),DBG" ID="0x8bda1736" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[A2DP][HCI] a2dp_audio:first frame to btc, only for a2dp service. @hci_data_proc.c(761),INFO" ID="0x8bda17cd" />
+                       <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="[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="BTC_TWS-&gt;sear_abort_rx_lmp:opcode = %d, ext_opcode = %d @lm_tws_monitor.c(85),WARNING" ID="0x89ea02ab" />
                        <MSG STRUCTURE="diag_log_msg3" NAME="[SNIFF OFFSET] Cmd = %d 0:HL,1:PEER,2:UPDATE, offset = %d, Flag = %d @lm_tws_monitor.c(105),INFO" ID="0x89ea034d" />
                        <MSG STRUCTURE="diag_log_msg4" NAME="[SNIFF OFFSET] Linkid = %d, role = %d, 0:M,1:S, ClockN = 0x%x, clk_off = 0x%x @lm_tws_monitor.c(109),INFO" ID="0x89ea036d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : HciEvConnUpdate, ev NULL @ble_general.c(114),ERROR" ID="0x8dda0392" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general : conn result status = 0x%02x @ble_general.c(122),INFO" ID="0x8dda03d5" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="ble general : handle&amp;interval&amp;latency&amp;timeout, 0x%04x &amp; 0x%04x &amp; 0x%04x &amp; 0x%04x @ble_general.c(125),INFO" ID="0x8dda03ed" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general : memcpy conn para result fail: %d @ble_general.c(134),ERROR" ID="0x8dda0432" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general : conn para result malloc fail: %d @ble_general.c(143),ERROR" ID="0x8dda047a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : HciEvEncryptionChange, ev NULL @ble_general.c(153),ERROR" ID="0x8dda04ca" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="ble general : ENCRYPTION, status&amp;handle&amp;result = 0x%02x &amp; 0x%04x &amp; 0x%02x @ble_general.c(164),INFO" ID="0x8dda0525" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : HciEncryptionNegativeReply, ev NULL @ble_general.c(185),ERROR" ID="0x8dda05ca" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general : BLE GENERAL KEY MISS, handle = 0x%02x @ble_general.c(189),ERROR" ID="0x8dda05ea" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general : ble general pair cfm callback, result = 0x%04x @ble_general.c(202),INFO" ID="0x8dda0655" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : memcpy addr fail when pair cbk @ble_general.c(209),ERROR" ID="0x8dda068a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : ble general start pair ble addr null @ble_general.c(226),ERROR" ID="0x8dda0712" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : memcpy addr fail when start pair @ble_general.c(232),ERROR" ID="0x8dda0742" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general : set bondle fail = %d @ble_general.c(240),ERROR" ID="0x8dda0782" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general : ble general start ble pair addr type = %d @ble_general.c(246),INFO" ID="0x8dda07b5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : ble general conn update param is NULL @ble_general.c(262),ERROR" ID="0x8dda0832" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : ble general conn update in is NULL @ble_general.c(269),ERROR" ID="0x8dda086a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : ble general conn update, ble remote addr NULL @ble_general.c(275),ERROR" ID="0x8dda089a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : ble general conn update, memcpy fail @ble_general.c(282),ERROR" ID="0x8dda08d2" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="ble general : ConnUpdate cap&amp;atype = 0x%02x &amp; 0x%02x @ble_general.c(295),INFO" ID="0x8dda093d" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="ble general : min&amp;max&amp;latency&amp;timeout, 0x%04x &amp; 0x%04x &amp; 0x%04x &amp; 0x%04x @ble_general.c(298),INFO" ID="0x8dda0955" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general : ble general conn update fail: %d @ble_general.c(304),ERROR" ID="0x8dda0982" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : ble general disconnect, bleRemoteAddr_cpy NULL @ble_general.c(322),ERROR" ID="0x8dda0a12" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : ble general disconnect, memcpy fail @ble_general.c(328),ERROR" ID="0x8dda0a42" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : ble general connect memcpy fail @ble_general.c(349),ERROR" ID="0x8dda0aea" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="ble general set sec params bondable &amp; io_capability 0x%02x%02x @ble_general.c(389),INFO" ID="0x8dda0c2d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general set sec params set bondable failed @ble_general.c(394),INFO" ID="0x8dda0c55" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general set sec params set io capability failed @ble_general.c(401),INFO" ID="0x8dda0c8d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general set sec params failed @ble_general.c(414),INFO" ID="0x8dda0cf5" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="ble general set sec params ok! g_config_smp_lesc = %u, g_config_smp_mode = %u @ble_general.c(419),INFO" ID="0x8dda0d1d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : ble general remove smp key addr NULL @ble_general.c(431),ERROR" ID="0x8dda0d7a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : ble general remove smp key mamcpy fail @ble_general.c(444),ERROR" ID="0x8dda0de2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general : ble general remove smp key new fail %d @ble_general.c(450),ERROR" ID="0x8dda0e12" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : ble general ble notification param is NULL @ble_general.c(472),ERROR" ID="0x8dda0ec2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general : notify len_cpy error: %d @ble_general.c(478),ERROR" ID="0x8dda0ef2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : ble general ble start pair new in is NULL @ble_general.c(487),ERROR" ID="0x8dda0f3a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : memcpy ble_value fail when notify @ble_general.c(494),ERROR" ID="0x8dda0f72" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : memset addr error when notify @ble_general.c(505),ERROR" ID="0x8dda0fca" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : sais service cb arg is NULL @ble_general.c(520),ERROR" ID="0x8dda1042" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="ble general : GattsSaisServiceCbk, event len = %d, %d @ble_general.c(527),INFO" ID="0x8dda107d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : reg sais service service is NULL @ble_general.c(569),ERROR" ID="0x8dda11ca" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : reg sais service character is NULL @ble_general.c(580),ERROR" ID="0x8dda1222" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : alipay service cb arg is NULL @ble_general.c(603),ERROR" ID="0x8dda12da" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="ble general : GattsAlipayServiceCbk, uuid = 0x%x, event = %d, len = %d @ble_general.c(611),INFO" ID="0x8dda131d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general : GattsAlipayServiceCbk, pend uuid = 0x%04x @ble_general.c(632),DBG" ID="0x8dda13c6" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : reg alipay service service is NULL @ble_general.c(661),ERROR" ID="0x8dda14aa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : reg alipay service character is NULL @ble_general.c(672),ERROR" ID="0x8dda1502" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : BleGeneralGattCallback_arg NULL @ble_general.c(688),ERROR" ID="0x8dda1582" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ANCS]Get Notification data, len=%d @ble_general.c(709),INFO" ID="0x8dda162d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : gap general conn cb para is NULL @ble_general.c(770),ERROR" ID="0x8dda1812" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="ble general : ble general connection event &amp; cap: 0x%02x, 0x%02x @ble_general.c(777),INFO" ID="0x8dda184d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : gap general smp succeed cb para is NULL @ble_general.c(813),ERROR" ID="0x8dda196a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : authentication failure cb para is NULL @ble_general.c(834),ERROR" ID="0x8dda1a12" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="ble general : BLE GENERAL SMP REQUEST FAIL, cap = 0x%02x status: %x @ble_general.c(841),ERROR" ID="0x8dda1a4a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : memcpy addr fail when authentication @ble_general.c(849),ERROR" ID="0x8dda1a8a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : other branch @ble_general.c(867),INFO" ID="0x8dda1b1d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general : gap cb event: 0x%02x @ble_general.c(902),INFO" ID="0x8dda1c35" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : batery service cb arg_cpy is NULL @ble_general.c(934),ERROR" ID="0x8dda1d32" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : reg battery service is NULL @ble_general.c(967),ERROR" ID="0x8dda1e3a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : reg battery service character is NULL @ble_general.c(982),ERROR" ID="0x8dda1eb2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="unknown product type:%x @ble_general.c(1009),INFO" ID="0x8dda1f8d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="product type:%x @ble_general.c(1017),INFO" ID="0x8dda1fcd" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general : App_RecoverSMPKeys data_len err, %d @ble_general.c(1080),ERROR" ID="0x8dda21c2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general : NEW key_list fail, %d @ble_general.c(1086),ERROR" ID="0x8dda21f2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general : List NEW key fail, %d @ble_general.c(1101),ERROR" ID="0x8dda226a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general : List NEW key fail, %d @ble_general.c(1109),ERROR" ID="0x8dda22aa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : ble general ble init cBacks is NULL @ble_general.c(1132),ERROR" ID="0x8dda2362" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : memcpy cBacks fail when ble general ble init @ble_general.c(1139),ERROR" ID="0x8dda239a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : HciEvConnUpdate, ev NULL @ble_general.c(111),ERROR" ID="0x8dda037a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general : conn result status = 0x%02x @ble_general.c(119),INFO" ID="0x8dda03bd" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="ble general : handle&amp;interval&amp;latency&amp;timeout, 0x%04x &amp; 0x%04x &amp; 0x%04x &amp; 0x%04x @ble_general.c(122),INFO" ID="0x8dda03d5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : HciEvEncryptionChange, ev NULL @ble_general.c(139),ERROR" ID="0x8dda045a" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="ble general : ENCRYPTION, status&amp;handle&amp;result = 0x%02x &amp; 0x%04x &amp; 0x%02x @ble_general.c(150),INFO" ID="0x8dda04b5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : HciEncryptionNegativeReply, ev NULL @ble_general.c(168),ERROR" ID="0x8dda0542" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general : BLE GENERAL KEY MISS, handle = 0x%02x @ble_general.c(172),ERROR" ID="0x8dda0562" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general : ble general pair cfm callback, result = 0x%04x @ble_general.c(181),INFO" ID="0x8dda05ad" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : ble general start pair ble addr null @ble_general.c(195),ERROR" ID="0x8dda061a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : memcpy addr fail when start pair @ble_general.c(201),ERROR" ID="0x8dda064a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general : set bondle fail = %d @ble_general.c(209),ERROR" ID="0x8dda068a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general : ble general start ble pair addr type = %d @ble_general.c(215),INFO" ID="0x8dda06bd" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : ble general conn update param is NULL @ble_general.c(231),ERROR" ID="0x8dda073a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : ble general conn update in is NULL @ble_general.c(238),ERROR" ID="0x8dda0772" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : ble general conn update, ble remote addr NULL @ble_general.c(244),ERROR" ID="0x8dda07a2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : ble general conn update, memcpy fail @ble_general.c(251),ERROR" ID="0x8dda07da" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="ble general : ConnUpdate cap&amp;atype = 0x%02x &amp; 0x%02x @ble_general.c(264),INFO" ID="0x8dda0845" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="ble general : min&amp;max&amp;latency&amp;timeout, 0x%04x &amp; 0x%04x &amp; 0x%04x &amp; 0x%04x @ble_general.c(267),INFO" ID="0x8dda085d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general : ble general conn update fail: %d @ble_general.c(273),ERROR" ID="0x8dda088a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : ble general disconnect, bleRemoteAddr_cpy NULL @ble_general.c(291),ERROR" ID="0x8dda091a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : ble general disconnect, memcpy fail @ble_general.c(297),ERROR" ID="0x8dda094a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : ble general connect memcpy fail @ble_general.c(318),ERROR" ID="0x8dda09f2" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="ble general set sec params bondable &amp; io_capability 0x%02x%02x @ble_general.c(358),INFO" ID="0x8dda0b35" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general set sec params set bondable failed @ble_general.c(363),INFO" ID="0x8dda0b5d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general set sec params set io capability failed @ble_general.c(370),INFO" ID="0x8dda0b95" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general set sec params failed @ble_general.c(383),INFO" ID="0x8dda0bfd" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="ble general set sec params ok! g_config_smp_lesc = %u, g_config_smp_mode = %u @ble_general.c(388),INFO" ID="0x8dda0c25" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : ble general remove smp key addr NULL @ble_general.c(400),ERROR" ID="0x8dda0c82" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : ble general remove smp key mamcpy fail @ble_general.c(413),ERROR" ID="0x8dda0cea" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general : ble general remove smp key new fail %d @ble_general.c(419),ERROR" ID="0x8dda0d1a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : ble general ble notification param is NULL @ble_general.c(441),ERROR" ID="0x8dda0dca" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general : notify len_cpy error: %d @ble_general.c(447),ERROR" ID="0x8dda0dfa" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : ble general ble start pair new in is NULL @ble_general.c(456),ERROR" ID="0x8dda0e42" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : memcpy ble_value fail when notify @ble_general.c(463),ERROR" ID="0x8dda0e7a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : memset addr error when notify @ble_general.c(474),ERROR" ID="0x8dda0ed2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : sais service cb arg is NULL @ble_general.c(489),ERROR" ID="0x8dda0f4a" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="ble general : GattsSaisServiceCbk, event len = %d, %d @ble_general.c(496),INFO" ID="0x8dda0f85" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : reg sais service service is NULL @ble_general.c(538),ERROR" ID="0x8dda10d2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : reg sais service character is NULL @ble_general.c(549),ERROR" ID="0x8dda112a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : alipay service cb arg is NULL @ble_general.c(572),ERROR" ID="0x8dda11e2" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="ble general : GattsAlipayServiceCbk, uuid = 0x%x, event = %d, len = %d @ble_general.c(580),INFO" ID="0x8dda1225" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general : GattsAlipayServiceCbk, pend uuid = 0x%04x @ble_general.c(601),DBG" ID="0x8dda12ce" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : reg alipay service service is NULL @ble_general.c(630),ERROR" ID="0x8dda13b2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : reg alipay service character is NULL @ble_general.c(641),ERROR" ID="0x8dda140a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : BleGeneralGattCallback_arg NULL @ble_general.c(657),ERROR" ID="0x8dda148a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[ANCS]Get Notification data, len=%d @ble_general.c(678),INFO" ID="0x8dda1535" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : gap general conn cb para is NULL @ble_general.c(739),ERROR" ID="0x8dda171a" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="ble general : ble general connection event &amp; cap: 0x%02x, 0x%02x @ble_general.c(746),INFO" ID="0x8dda1755" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : gap general smp succeed cb para is NULL @ble_general.c(782),ERROR" ID="0x8dda1872" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general : memcpy smp key store value fail: %d @ble_general.c(791),ERROR" ID="0x8dda18ba" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : authentication failure cb para is NULL @ble_general.c(801),ERROR" ID="0x8dda190a" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="ble general : BLE GENERAL SMP REQUEST FAIL, cap = 0x%02x status: %x @ble_general.c(808),ERROR" ID="0x8dda1942" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : memcpy addr fail when authentication @ble_general.c(815),ERROR" ID="0x8dda197a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : other branch @ble_general.c(831),INFO" ID="0x8dda19fd" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general : gap cb event: 0x%02x @ble_general.c(870),ERROR" ID="0x8dda1b32" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : batery service cb arg_cpy is NULL @ble_general.c(904),ERROR" ID="0x8dda1c42" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : reg battery service is NULL @ble_general.c(937),ERROR" ID="0x8dda1d4a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : reg battery service character is NULL @ble_general.c(952),ERROR" ID="0x8dda1dc2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="unknown product type:%x @ble_general.c(979),INFO" ID="0x8dda1e9d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="product type:%x @ble_general.c(987),INFO" ID="0x8dda1edd" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general : App_RecoverSMPKeys data_len err, %d @ble_general.c(1050),ERROR" ID="0x8dda20d2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general : NEW key_list fail, %d @ble_general.c(1056),ERROR" ID="0x8dda2102" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general : List NEW key fail, %d @ble_general.c(1071),ERROR" ID="0x8dda217a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general : List NEW key fail, %d @ble_general.c(1079),ERROR" ID="0x8dda21ba" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : ble general ble init cBacks is NULL @ble_general.c(1102),ERROR" ID="0x8dda2272" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : memcpy cBacks fail when ble general ble init @ble_general.c(1109),ERROR" ID="0x8dda22aa" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="[WARNING]diag config :0x8182838C, get diag value is 0x%x @hibt_ram.c(110),WARNING" ID="0x88860373" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="[WARNING]diag config :0x8d8e8f90, get diag value is 0x%x @hibt_ram.c(112),WARNING" ID="0x88860383" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="[WARNING]diag config :0x919ba0a7, get diag value is 0x%x @hibt_ram.c(114),WARNING" ID="0x88860393" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[WARNINIG][diag_isr]diag is going... @hibt_ram.c(388),WARNING" ID="0x88860c23" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="[SPP][DLC_ESTAB_CFM] INIT_CREDITIN=%u @g_spp.c(209),INFO" ID="0x8b5e068d" />
                        <MSG STRUCTURE="diag_log_msg2" NAME="[SPP][CREITIN_IND] OLD_CREDITIN=%u, NEW_CREDITIN=%u @g_spp.c(414),DBG" ID="0x8b5e0cf6" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="mcu_int1_handler. @ipc_irq.c(74),ERROR" ID="0xa0600252" />
                        <MSG STRUCTURE="diag_log_msg3" NAME="[HCI]pts_mode=%d, is_le_ext_adving = %d, updated = %d @hci_le.c(147),INFO" ID="0x8b92049d" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="[HCI]privacy=%d @hci_le.c(189),INFO" ID="0x8b9205ed" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="[HCI]local-&gt;leisa_cur = %02x @hci_le.c(1272),INFO" ID="0x8b9227c5" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[AE]ext adv elt not exist @lld_ae.c(3359),INFO" ID="0x89e068fd" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[AE]sync adv elt not exist @lld_ae.c(3372),INFO" ID="0x89e06965" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[AE]sync adv elt already in prog list @lld_ae.c(3384),INFO" ID="0x89e069c5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[WARNING][BIS]lld_bis_report_rxnode:No rx_report buff! @patch_lld_bis_pdu.c(27),WARNING" ID="0x8a6600db" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="[INFO][BIS]bis recombine:length=%d, recomb_flag=%d, pldcntr=%d, llid=%d @patch_lld_bis_pdu.c(58),WARNING" ID="0x8a6601d3" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[BIS]lld_bis_pdu_framed_rx_check:invalid middle pkt @patch_lld_bis_pdu.c(120),INFO" ID="0x8a6603c5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[BIS]lld_bis_pdu_framed_rx_check:invalid last pkt @patch_lld_bis_pdu.c(134),INFO" ID="0x8a660435" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[WARNING][BIS]lld_bis_report_rxnode:No rx_report buff! @patch_lld_bis_pdu.c(27),WARNING" ID="0x8a6a00db" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="[INFO][BIS]bis recombine:length=%d, recomb_flag=%d, pldcntr=%d, llid=%d @patch_lld_bis_pdu.c(58),WARNING" ID="0x8a6a01d3" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[BIS]lld_bis_pdu_framed_rx_check:invalid middle pkt @patch_lld_bis_pdu.c(120),INFO" ID="0x8a6a03c5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[BIS]lld_bis_pdu_framed_rx_check:invalid last pkt @patch_lld_bis_pdu.c(134),INFO" ID="0x8a6a0435" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="[setup data path]coding=%d @llc_iso_hci.c(121),INFO" ID="0x883603cd" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="[ISO]ISO conhdl don,t exist,conhdl=%d @llc_iso_hci.c(134),WARNING" ID="0x88360433" />
                        <MSG STRUCTURE="diag_log_msg2" NAME="[setup data path] set up out data path:%d, in data path:%d @llc_iso_hci.c(137),INFO" ID="0x8836044d" />
                        <MSG STRUCTURE="diag_log_msg3" NAME="[pscan stop]tx_time_total:%d, rx_time_total:%d, bt_statis_clock:%d @ld_pscan.c(923),WARNING" ID="0x88ba1cdb" />
                        <MSG STRUCTURE="diag_log_msg4" NAME="[WARNING]ts = 0x%x, asap_setting = %d, asap_limit = 0x%x, prio = %d @ld_pscan.c(1047),WARNING" ID="0x88ba20bb" />
                        <MSG STRUCTURE="diag_log_msg4" NAME="[WARNING]link_id = %d, step = %d, new_end_ts = 0x%x, rem_slots = %d @ld_pscan.c(1049),WARNING" ID="0x88ba20cb" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="[BLE ACL] conhdl=%d, status:0x%04x, length:%d, rxflush|rxdone|cie:%08x @patch_lld_pdu.c(44),INFO" ID="0x8a540165" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[BLE ACL] ccm 0x%x @patch_lld_pdu.c(45),INFO" ID="0x8a54016d" />
                        <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_msg4" NAME="[AUTORATE] llcp_ico_phy_update_req_handler: stream_id=%d, channel_id=%d, m2s_phy=0x%x, s2m_phy=0x%x @llc_ico_llcp.c(435),INFO" ID="0x883c0d9d" />
                        <MSG STRUCTURE="diag_log_msg3" NAME="[AUTORATE] llcp_ico_phy_update_req_handler: nse=%d, instant=%d, ico_evt_counter=%d @llc_ico_llcp.c(437),INFO" ID="0x883c0dad" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[AUTORATE] llcp_ico_phy_update_req_handler:instant passed @llc_ico_llcp.c(445),WARNING" ID="0x883c0deb" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[WARNING][BIS]create big prepare fail @llc_bis_hci_ram.c(79),WARNING" ID="0x8a60027b" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="ea_prog_time_set current_time(0x%x)finetarget_time(0x%x),finecnt(%d),finetgtintmsk(%d) @patch_ea.c(68),WARNING" ID="0x8a540223" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[WARNING][BIS]create big prepare fail @llc_bis_hci_ram.c(79),WARNING" ID="0x8a64027b" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="ea_prog_time_set current_time(0x%x)finetarget_time(0x%x),finecnt(%d),finetgtintmsk(%d) @patch_ea.c(68),WARNING" ID="0x8a580223" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="sdk pan get local addr error @sdk_pan.c(30),ERROR" ID="0x8e7e00f2" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="sdk pan get local addr invalid. @sdk_pan.c(34),ERROR" ID="0x8e7e0112" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="sdk pan clean fail conn_hdl. @sdk_pan.c(61),INFO" ID="0x8e7e01ed" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[WARNING][BIS]big param is NULL @llc_bis_hci.c(491),WARNING" ID="0x89560f5b" />
                        <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(678),INFO" ID="0x8b981535" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[BTOS][MEM_NEW]ALLOC_SIZE=%u, alloc fail! @osdep.c(709),WARNING" ID="0x8b98162b" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[MEM_FREE][%d][0x%p], caller:0x%x  @osdep.c(746),INFO" ID="0x8b981755" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[BTOS][MEM_FREE]ERROR_CODE=%u, addr:0x%p, caller:0x%x free fail! @osdep.c(754),WARNING" ID="0x8b981793" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[BTOS][MEM_NEW]ALLOC_SIZE=%u, alloc fail! @osdep.c(767),WARNING" ID="0x8b9817fb" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[BTOS][MEM_FREE]ERROR_CODE=%u, addr:0x%p, caller:0x%x, free fail! @osdep.c(782),WARNING" ID="0x8b981873" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[BTOS][MEM_NEW_S]AVAILABLE_MEMORY=%u, alloc fail because under secure threshold size! @osdep.c(813),WARNING" ID="0x8b98196b" />
+                       <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="[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_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][CONN_COMPLETE] LINK_STATUS=0x%x, EVENT_STATUS=0x%x, CONN_HDL=0x%x @hci_link_br.c(489),INFO" ID="0x8bdc0f4d" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="[HCI][CONN_REQUEST] LINK_TYPE=0x%x, REMOTE_ADDR=%02x:%02x:**:**:**:%02x @hci_link_br.c(561),INFO" ID="0x8bdc118d" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="[HCI][REMOVE_LINK] REF_COUNT=%u, STATUS=%u @hci_link_br.c(646),INFO" ID="0x8bdc1435" />
+                       <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_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_msg1" NAME="ble gatt client characteristic value callback memcpy fail: %d @ble_general_gatt.c(665),ERROR" ID="0x8de014ca" />
                        <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_msg0" NAME="[BCore] gatt client write result addr memcpy fail @ble_general_gatt.c(720),ERROR" ID="0x8de01682" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble gatt client call back func type=%d @ble_general_gatt.c(773),INFO" ID="0x8de0182d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt discovery service not found:0x%x. @ble_general_gatt.c(804),WARNING" ID="0x8de01923" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt discovery include service not found:0x%x. @ble_general_gatt.c(827),WARNING" ID="0x8de019db" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt discovery characteristic new fail. @ble_general_gatt.c(843),ERROR" ID="0x8de01a5a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt discovery characteristic memset fail. @ble_general_gatt.c(848),ERROR" ID="0x8de01a82" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt discovery characteristic not found:0x%x. @ble_general_gatt.c(865),WARNING" ID="0x8de01b0b" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt discovery characteristic by uuid new fail. @ble_general_gatt.c(883),ERROR" ID="0x8de01b9a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt discovery characteristic by uuid memset fail. @ble_general_gatt.c(889),ERROR" ID="0x8de01bca" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt discovery characteristic by uuid memcpy fail. @ble_general_gatt.c(903),ERROR" ID="0x8de01c3a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt discovery characteristic by uuid not found:0x%x. @ble_general_gatt.c(914),WARNING" ID="0x8de01c93" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt discovery descriptor by handle new fail. @ble_general_gatt.c(930),ERROR" ID="0x8de01d12" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt discovery descriptor by handle not found:0x%x. @ble_general_gatt.c(944),WARNING" ID="0x8de01d83" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt discovery descriptor new fail. @ble_general_gatt.c(964),ERROR" ID="0x8de01e22" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt discovery descriptor memset fail. @ble_general_gatt.c(969),ERROR" ID="0x8de01e4a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt discovery descriptor memcpy fail. @ble_general_gatt.c(975),ERROR" ID="0x8de01e7a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt discovery descriptor not found:0x%x. @ble_general_gatt.c(986),WARNING" ID="0x8de01ed3" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble gatt read characteristic value respon new fail. @ble_general_gatt.c(1007),ERROR" ID="0x8de01f7a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[BCore] ble gatt read characteristic value respon memcpy fail: %d @ble_general_gatt.c(1014),ERROR" ID="0x8de01fb2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[BCore] ble gatt read characteristic value respon memcpy fail: %d @ble_general_gatt.c(1024),ERROR" ID="0x8de02002" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt read characteristic value new fail. @ble_general_gatt.c(1047),ERROR" ID="0x8de020ba" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt read descriptor value error:0x%x. @ble_general_gatt.c(1061),ERROR" ID="0x8de0212a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt read characteristic by uuid new fail. @ble_general_gatt.c(1079),ERROR" ID="0x8de021ba" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt read characteristic by uuid memcpy fail. @ble_general_gatt.c(1092),ERROR" ID="0x8de02222" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt read characteristic by uuid memcpy fail. @ble_general_gatt.c(1099),ERROR" ID="0x8de0225a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt read characteristic by uuid error:0x%x. @ble_general_gatt.c(1106),WARNING" ID="0x8de02293" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt read multiple characteristic new fail. @ble_general_gatt.c(1124),ERROR" ID="0x8de02322" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt read multiple characteristic memset fail. @ble_general_gatt.c(1131),ERROR" ID="0x8de0235a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt read multiple characteristic error:0x%x. @ble_general_gatt.c(1147),WARNING" ID="0x8de023db" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt read multiple characteristic error:0x%x. @ble_general_gatt.c(1177),WARNING" ID="0x8de024cb" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt write characteristic value memcpy failed @ble_general_gatt.c(1229),ERROR" ID="0x8de0266a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt write characteristic value param is NULL @ble_general_gatt.c(1252),ERROR" ID="0x8de02722" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt write characteristic value malloc fail, size:0x%x. @ble_general_gatt.c(1265),ERROR" ID="0x8de0278a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[BCore] ble general gatt write characteristic value memcpy fail: %d @ble_general_gatt.c(1275),ERROR" ID="0x8de027da" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt write characteristic value fail:0x%x. @ble_general_gatt.c(1289),WARNING" ID="0x8de0284b" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt reliable write characteristic value param is NULL @ble_general_gatt.c(1308),ERROR" ID="0x8de028e2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt reliable write characteristic value malloc fail @ble_general_gatt.c(1315),ERROR" ID="0x8de0291a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[BCore] ble general gatt reliable write characteristic value memcpy fail @ble_general_gatt.c(1324),ERROR" ID="0x8de02962" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt reliable write characteristic value fail:0x%x. @ble_general_gatt.c(1343),WARNING" ID="0x8de029fb" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt write descriptor value malloc faile, size:0x%x. @ble_general_gatt.c(1360),ERROR" ID="0x8de02a82" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[BCore] ble general gatt write descriptor value memcpy fail: %d @ble_general_gatt.c(1369),ERROR" ID="0x8de02aca" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt discovery descriptor error:0x%x. @ble_general_gatt.c(1379),ERROR" ID="0x8de02b1a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[BCore] ble gatt read descriptor value response memcpy fail: %d @ble_general_gatt.c(1401),ERROR" ID="0x8de02bca" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[BCore] ble gatt read descriptor value response memcpy fail: %d @ble_general_gatt.c(1409),ERROR" ID="0x8de02c0a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt read descriptor value error:0x%x. @ble_general_gatt.c(1438),ERROR" ID="0x8de02cf2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt mtu config error:0x%x. @ble_general_gatt.c(1453),ERROR" ID="0x8de02d6a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt set gap ui attributes error:0x%x. @ble_general_gatt.c(1466),ERROR" ID="0x8de02dd2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt get gap ui attributes error:0x%x. @ble_general_gatt.c(1485),ERROR" ID="0x8de02e6a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="bt mpc adapter gatt get hid report callback new fail @ble_general_gatt.c(1515),ERROR" ID="0x8de02f5a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="bt mpc adapter gatt get hid report callback error_code = %x @ble_general_gatt.c(1526),INFO" ID="0x8de02fb5" />
+                       <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_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_msg1" NAME="[DEBUG]g_msg_ptr_read%d, @btdfx_fn.c(2093),INFO" ID="0x88e4416d" />
                        <MSG STRUCTURE="diag_log_msg2" NAME="[PMU][ERROR]Wakeup isr come more than once, sleep_int_id:%d, wakeup_int_id:%d @bt_sleep.c(139),WARNING" ID="0x88f0045b" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[PMU][ERROR]wakeup pmu state change fail @bt_sleep.c(147),ERROR" ID="0x88f0049a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="g_clock_32k_100x = %d @bt_sleep.c(177),INFO" ID="0x88f0058d" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[INFO][SLEEP]bt_program_sleep clk(%d)dur(%d)glbcnt(0x%x) @bt_sleep.c(222),INFO" ID="0x88f006f5" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[ERROR][SLEEP]wakeup_end clk(%d) sleep_time(%d) sleep_dur(%d) @bt_sleep.c(265),ERROR" ID="0x88f0084a" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[INFO][SLEEP]wakeup_end clk(%d) fincnt(%d)glbcnt(0x%x) @bt_sleep.c(269),INFO" ID="0x88f0086d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[PMU][ERROR]btc sleep pmu state change fail @bt_sleep.c(311),ERROR" ID="0x88f009ba" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="[PMU][WARNING]Set osc_en down more than once, sleep_int_id:%d, wakeup_int_id:%d @bt_sleep.c(320),WARNING" ID="0x88f00a03" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[PMU][ERROR]sleep time is too short! @bt_sleep.c(370),WARNING" ID="0x88f00b93" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[PMU][SLEEP]osc_en wakeup isr error! @bt_sleep.c(374),ERROR" ID="0x88f00bb2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[PMU][ERROR]extern wakeup pmu state change fail @bt_sleep.c(390),ERROR" ID="0x88f00c32" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[INFO][SLEEP]extern wakeup btc clk(%d)slp_dur_slot(%d)glbcnt(%d) @bt_sleep.c(396),INFO" ID="0x88f00c65" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="g_dfx_time:%d @bt_sleep.c(416),INFO" ID="0x88f00d05" />
-                       <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="0x8a5e01ad" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="g_clock_32k_100x = %d @bt_sleep.c(178),INFO" ID="0x88f00595" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[INFO][SLEEP]bt_program_sleep clk(%d)dur(%d)glbcnt(0x%x) @bt_sleep.c(224),INFO" ID="0x88f00705" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[ERROR][SLEEP]wakeup_end clk(%d) sleep_time(%d) sleep_dur(%d) @bt_sleep.c(267),ERROR" ID="0x88f0085a" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[INFO][SLEEP]wakeup_end clk(%d) fincnt(%d)glbcnt(0x%x) @bt_sleep.c(271),INFO" ID="0x88f0087d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[PMU][ERROR]btc sleep pmu state change fail @bt_sleep.c(313),ERROR" ID="0x88f009ca" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[PMU][WARNING]Set osc_en down more than once, sleep_int_id:%d, wakeup_int_id:%d @bt_sleep.c(322),WARNING" ID="0x88f00a13" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[PMU][ERROR]sleep time is too short! @bt_sleep.c(372),WARNING" ID="0x88f00ba3" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[PMU][SLEEP]osc_en wakeup isr error! @bt_sleep.c(376),ERROR" ID="0x88f00bc2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[PMU][ERROR]extern wakeup pmu state change fail @bt_sleep.c(392),ERROR" ID="0x88f00c42" />
+                       <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_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_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_msg0" NAME="lld_evt_defered_elt_handler,  test end @patch_lld_evt.c(141),WARNING" ID="0x8a5c046b" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[INFO][LLD]lld_evt_flush_common:elt is null @patch_lld_evt.c(212),INFO" ID="0x8a5c06a5" />
-                       <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="0x8a5c086d" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="current_elt-&gt;current_prio=%d, next_elt-&gt;current_prio=%d, llm_le_env.sync_state =%d @patch_lld_evt.c(271),INFO" ID="0x8a5c087d" />
+                       <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_msg3" NAME="current_elt-&gt;current_prio=%d, next_elt-&gt;current_prio=%d, llm_le_env.sync_state =%d @patch_lld_evt.c(271),INFO" ID="0x8a60087d" />
                        <MSG STRUCTURE="diag_log_msg3" NAME="[osMonitor]No.%d task was blocked tick %ld, count %ld @runtime_monitor.c(128),ERROR" ID="0xa00e0402" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="[osMonitor]No.%d task was blocked up to limited times! @runtime_monitor.c(137),ERROR" ID="0xa00e044a" />
                        <MSG STRUCTURE="diag_log_msg3" NAME="[osMonitor]No.%d task work overtime! threshold tick %d, work time %d @runtime_monitor.c(184),WARNING" ID="0xa00e05c3" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[WARNING][LD]ld_bt_test_mode_rx_start:evt is null @dbg_bt_test_tx_rx.c(570),WARNING" ID="0x899c11d3" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[WARNING][LD]ld_bt_test_mode_rx_start ea insert fail! @dbg_bt_test_tx_rx.c(592),WARNING" ID="0x899c1283" />
                        <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(386),ERROR" ID="0x8b800c12" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatt_get_descriptor_value&#160;memcpy_s&#160;error @sdk_gatt.c(570),ERROR" ID="0x8b8011d2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt write characteristic mem_new failed @sdk_gatt.c(792),ERROR" ID="0x8b8018c2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt write characteristic memcpy failed @sdk_gatt.c(797),ERROR" ID="0x8b8018ea" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt write characteristic memcpy failed @sdk_gatt.c(806),ERROR" ID="0x8b801932" />
-                       <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(829),INFO" ID="0x8b8019ed" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="btsdk gatt get characteristic value by uuid start_handle:0x%x end_handle:0x%x @sdk_gatt.c(877),INFO" ID="0x8b801b6d" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="[sdk]gatt_get_descriptor_by_handle start_handle:0x%x end_handle:0x%x @sdk_gatt.c(900),INFO" ID="0x8b801c25" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[sdk]gatt_get_multiple_characteristics_by_handle handle_count:0x%x @sdk_gatt.c(921),INFO" ID="0x8b801ccd" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatt_set_gap_ui_attributes&#160;memcpy_s&#160;error @sdk_gatt.c(1199),ERROR" ID="0x8b80257a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatt_set_gap_ui_attributes&#160;memcpy_s&#160;error @sdk_gatt.c(1212),ERROR" ID="0x8b8025e2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatt_get_gap_ui_attributes&#160;memcpy_s&#160;error @sdk_gatt.c(1284),ERROR" ID="0x8b802822" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatt_send_response&#160;memcpy_s&#160;error @sdk_gatt.c(1882),ERROR" ID="0x8b803ad2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatt_change_descriptor_value&#160;memcpy_s&#160;error @sdk_gatt.c(1963),ERROR" ID="0x8b803d5a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatt_notify_characteristic_changed&#160;memcpy_s&#160;error @sdk_gatt.c(2008),ERROR" ID="0x8b803ec2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatt_notify_characteristic_changed&#160;memcpy_s&#160;error @sdk_gatt.c(2015),ERROR" ID="0x8b803efa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]can't find hdl by uuid @sdk_gatt.c(2206),ERROR" ID="0x8b8044f2" />
+                       <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="[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_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="[WARNING][CTE]llm_util_per_sync_check_cte_type: HIT - Do not sync to packets without a CTE @llm_ram.c(125),WARNING" ID="0x8a1803eb" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="[WARNING][CTE] type check: HIT - Do not sync to packets with an %d type CTE @llm_ram.c(134),WARNING" ID="0x8a180433" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[ATT]memcpy_s&#160;error @att_gatt.c(75),ERROR" ID="0x8c4c025a" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[ATT]UUID[0x%04x] start hdl[0x%x], end hdl[0x%x] @att_gatt.c(956),INFO" ID="0x8c4c1de5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ATT]memcpy_s&#160;error @att_gatt.c(1057),ERROR" ID="0x8c4c210a" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="[ATT]UUID[0x%04x] hdl[0x%x], value hdl[0x%x], len[0x%x]  @att_gatt.c(1069),INFO" ID="0x8c4c216d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="properties[0x%x] @att_gatt.c(1070),INFO" ID="0x8c4c2175" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ATT]memcpy_s&#160;error @att_gatt.c(1128),ERROR" ID="0x8c4c2342" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[ATT]UUID[0x%04x], hdl[0x%x], len[0x%x] @att_gatt.c(1137),INFO" ID="0x8c4c238d" />
-                       <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(1351),INFO" ID="0x8c4c2a3d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ATT]memcpy_s&#160;error @att_gatt.c(1475),ERROR" ID="0x8c4c2e1a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ATT]memcpy_s error @att_gatt.c(2327),ERROR" ID="0x8c4c48ba" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ATT]memcpy_s&#160;error @att_gatt.c(2573),ERROR" ID="0x8c4c506a" />
-                       <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(2606),ERROR" ID="0x8c4c5172" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[ATT_GATT] gatt tl done reason:%d occured:%d @att_gatt.c(320),ERROR" ID="0x8c4c0a02" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="[ATT_GATT] gatt tl create require:%d addr:%02x******%02x%02x @att_gatt.c(414),ERROR" ID="0x8c4c0cf2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[ATT_GATT]tl timeout evt:%d @att_gatt.c(667),ERROR" ID="0x8c4c14da" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="[ATT_GATT] gatt tl disconnect require:%d addr:%02x******%02x%02x @att_gatt.c(844),ERROR" ID="0x8c4c1a62" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[ATT_GATT] gatt event cbk:%p evt:%d @att_gatt.c(871),ERROR" ID="0x8c4c1b3a" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[ATT_GATT] gatt error cfm task:%d errcode:%d mask:%d @att_gatt.c(887),ERROR" ID="0x8c4c1bba" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[ATT]UUID[0x%04x] start hdl[0x%x], end hdl[0x%x] @att_gatt.c(973),INFO" ID="0x8c4c1e6d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[ATT]memcpy_s&#160;error @att_gatt.c(1074),ERROR" ID="0x8c4c2192" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="[ATT]UUID[0x%04x] hdl[0x%x], value hdl[0x%x], len[0x%x]  @att_gatt.c(1086),INFO" ID="0x8c4c21f5" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="properties[0x%x] @att_gatt.c(1087),INFO" ID="0x8c4c21fd" />
+                       <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="[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(75),INFO" ID="0x8c9e025d" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="stack gap get discovery mode result = 0x%x, mode = 0x%x  @bt_ahi_gap.c(89),INFO" ID="0x8c9e02cd" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="stack gap stop discovery result = 0x%x, mode = 0x%x  @bt_ahi_gap.c(99),INFO" ID="0x8c9e031d" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="stack gap create acl result = 0x%x, dev_hdl = 0x%x, link type = %d  @bt_ahi_gap.c(113),INFO" ID="0x8c9e038d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memory copy failed @bt_ahi_gap.c(126),ERROR" ID="0x8c9e03f2" />
-                       <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(131),INFO" ID="0x8c9e041d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="stack gap create acla result = 0x%x @bt_ahi_gap.c(140),INFO" ID="0x8c9e0465" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="stack gap reconnect phone result = 0x%x, dev_hdl = 0x%x  @bt_ahi_gap.c(151),INFO" ID="0x8c9e04bd" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="stack gap get rmt dev handle result = 0x%x @bt_ahi_gap.c(163),INFO" ID="0x8c9e051d" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="stack gap device is connected result = 0x%x, dev_hdl = 0x%x  @bt_ahi_gap.c(175),INFO" ID="0x8c9e057d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="btsdk disconnect acl by handle result = 0x%x @bt_ahi_gap.c(186),INFO" ID="0x8c9e05d5" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="stack gap pair device result = 0x%x, dev_hdl = 0x%x  @bt_ahi_gap.c(198),INFO" ID="0x8c9e0635" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="stack gap add rmt device rsp.result = %x @bt_ahi_gap.c(215),INFO" ID="0x8c9e06bd" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="stack gap update rmt device name result = 0x%x, name = %s  @bt_ahi_gap.c(235),INFO" ID="0x8c9e075d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memory copy failed @bt_ahi_gap.c(249),ERROR" ID="0x8c9e07ca" />
-                       <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(257),INFO" ID="0x8c9e080d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="stack gap update rmt device name async result = 0x%x @bt_ahi_gap.c(267),INFO" ID="0x8c9e085d" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="stack gap get local name result = 0x%x, length = %d, name = %s  @bt_ahi_gap.c(303),INFO" ID="0x8c9e097d" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="stack gap get rmt dev addr result = 0x%x, addr[%02x:**:**:**:%02x:%02x] @bt_ahi_gap.c(328),INFO" ID="0x8c9e0a45" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="stack gap browse rmt service overflow, max_count = %d, svc_count = %d @bt_ahi_gap.c(350),ERROR" ID="0x8c9e0af2" />
-                       <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(356),INFO" ID="0x8c9e0b25" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="hfp enable sco:scohdl=0x%x inid=0x%x outid=0x%x @bt_ahi_gap.c(377),INFO" ID="0x8c9e0bcd" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="hfp disable sco:scohdl=0x%x @bt_ahi_gap.c(381),INFO" ID="0x8c9e0bed" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="result = 0x%x, handle = 0x%x, service_class = %02x  @bt_ahi_gap.c(414),INFO" ID="0x8c9e0cf5" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="stack gap init, res = 0x%x  @bt_ahi_gap.c(425),INFO" ID="0x8c9e0d4d" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="set bt tx power, hdl=0x%x, power=%d, ret=0x%x @bt_ahi_gap.c(438),INFO" ID="0x8c9e0db5" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="br gap read rssi, hdl=0x%x, rssi=%d, ret=0x%x @bt_ahi_gap.c(446),INFO" ID="0x8c9e0df5" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="set active scene scene = %d, bitrate = %d, delay = %d, ret=0x%x @bt_ahi_gap.c(462),INFO" ID="0x8c9e0e75" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="set inquiry scan param interval = %d, window = %d @bt_ahi_gap.c(470),INFO" ID="0x8c9e0eb5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memory copy failed @bt_ahi_gap.c(481),ERROR" ID="0x8c9e0f0a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="stack gap restore rmt device rsp.result = %x @bt_ahi_gap.c(485),INFO" ID="0x8c9e0f2d" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="br gap get link mode, hdl=0x%x, mode=%d, ret=0x%x @bt_ahi_gap.c(494),INFO" ID="0x8c9e0f75" />
+                       <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_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_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(900),INFO" ID="0x8b7a1c25" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="hlp_connection_ev_cbk_dis_conn hdl:0x%x status:%d @sdk_hlp.c(2055),INFO" ID="0x8b7a403d" />
+                       <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_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_msg1" NAME="gdk message loop message_ts = 0x%x @gdk_msg.c(391),DBG" ID="0x8cb40c3e" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="gdk message loop timeout_ms  = 0x%x @gdk_msg.c(405),DBG" ID="0x8cb40cae" />
                        <MSG STRUCTURE="diag_log_msg3" NAME="[ERR][CHR_UPDATE]error_handler:no handle: err_id = 0x%x, err_id_high = 0x%x,err_id_low = 0x%x @bt_chr.c(37),ERROR" ID="0x88de012a" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[PF][DUMP INFO] stack point: 0x%x, stack address: 0x%x, stack size: 0x%x @log_oml_exception.c(410),ERROR" ID="0xa0080cd2" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[PF][DUMP INFO] stack point: 0x%x, stack address: 0x%x, stack size: 0x%x @log_oml_exception.c(411),ERROR" ID="0xa0080cda" />
                        <MSG STRUCTURE="diag_log_msg4" NAME="[LPF_CALI]code = %x, abs_diff_val = %d, pwr_1m = %d, 2 * pwr_2_5m = %d @bt_cali_func.c(564),INFO" ID="0x894211a5" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="[rxiq]trim version = %d @bt_cali_func.c(1281),INFO" ID="0x8942280d" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="START CALCU PREF @bt_cali_func.c(1447),INFO" ID="0x89422d3d" />
                        <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_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_msg2" NAME="[TIMRE_ADD][STACK_TIMER] TIMER=0x%x, TIME=%u @fsm.c(669),INFO" ID="0x8b5814ed" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[TIMER_EXPIR]timeout timer err! @fsm.c(767),ERROR" ID="0x8b5817fa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[TIMER_EXPIR]timeout but no right timer! @fsm.c(797),WARNING" ID="0x8b5818eb" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[timer_expire_in_sch_lite]timer has been free; not need free! @fsm.c(813),WARNING" ID="0x8b58196b" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[TIMER_DEL][STACK_TIMER] in_ft is NULL! @fsm.c(938),INFO" ID="0x8b581d55" />
+                       <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_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_msg3" NAME="[INFO][LLD]lld_ext_con_start_by_phy_opt:elt_scan=0x%x, elt_connect=0x%x, aux_init_elt=0x%x @lld_con.c(1323),INFO" ID="0x8970295d" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="btsdk get remote device address failed! dev_hdl = 0x%x @bt_ahi_common.c(97),ERROR" ID="0x8c9e030a" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="btsrv passkey req ind callback dev_hdl = 0x%x @bt_ahi_common.c(162),INFO" ID="0x8c9e0515" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="[INFO][LLD]lld_bis_elt_ready:elt=0x%x,elt_ts=0x%x,intv=%d,duration_min=%d @patch_lld_bis.c(46),INFO" ID="0x8a560175" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="[INFO][LLD]lld_bis_elt_ready:elt=0x%x,elt_ts=0x%x,intv=%d,duration_min=%d @patch_lld_bis.c(46),INFO" ID="0x8a5a0175" />
                        <MSG STRUCTURE="diag_log_msg2" NAME="[INFO]hci_dbg_meta_evt_pkupk:in=%d,*in=%d @hci_msg.c(1958),INFO" ID="0x88d03d35" />
                        <MSG STRUCTURE="diag_log_msg3" NAME="[LOW_POWER]des is error ,des:0x%x,%s,%d @hal_cpu_hifi.c(69),INFO" ID="0xa028022d" />
                        <MSG STRUCTURE="diag_log_msg3" NAME="[LOW_POWER]des is error ,des:0x%x,%s,%d @hal_cpu_hifi.c(85),INFO" ID="0xa02802ad" />
                        <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(56),ERROR" ID="0x8c9401c2" />
-                       <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(86),WARNING" ID="0x8c9402b3" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Error route_id! @bt_tran_task.c(98),ERROR" ID="0x8c940312" />
-                       <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(118),WARNING" ID="0x8c9403b3" />
-                       <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(121),WARNING" ID="0x8c9403cb" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="INVALID DATA! @bt_tran_task.c(157),ERROR" ID="0x8c9404ea" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="BT_TRAN: TXMCU:ipc send data = %d @bt_tran_task.c(185),ERROR" ID="0x8c9405ca" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="UNKNOW CORE! @bt_tran_task.c(195),ERROR" ID="0x8c94061a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="bt tran task framek free property allow_free= %d @bt_tran_task.c(235),INFO" ID="0x8c94075d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="pst_property-&gt;en_id = 0x%x @bt_tran_task.c(253),INFO" ID="0x8c9407ed" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="BT_TRAN: data ERROR data_len:%d @bt_tran_task.c(311),WARNING" ID="0x8c9409bb" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="BT_TRAN: data ERROR data:0x%08x, 0x%08x @bt_tran_task.c(315),WARNING" ID="0x8c9409db" />
-                       <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(324),ERROR" ID="0x8c940a22" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="hci qos buf overflow. @bt_tran_task.c(349),ERROR" ID="0x8c940aea" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble fsm buf overflow. @bt_tran_task.c(354),ERROR" ID="0x8c940b12" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="rec data malloc fail opcode:0x%04x,length:(0x%04x) @bt_tran_task.c(363),ERROR" ID="0x8c940b5a" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="rec data memcpy fail opcode:0x%04x,length:(0x%04x) @bt_tran_task.c(369),ERROR" ID="0x8c940b8a" />
-                       <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(379),ERROR" ID="0x8c940bda" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ipc data data len err = %d @bt_tran_task.c(409),ERROR" ID="0x8c940cca" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ipc data data len err = %d @bt_tran_task.c(419),ERROR" ID="0x8c940d1a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ipc data from M7 error = %d @bt_tran_task.c(423),ERROR" ID="0x8c940d3a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ipc data from unknow core @bt_tran_task.c(435),ERROR" ID="0x8c940d9a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="bt tran task handler osMessageQueueGet fail ret:(%x) @bt_tran_task.c(461),ERROR" ID="0x8c940e6a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="bt tran task framek write property en_id = 0x%x @bt_tran_task.c(485),INFO" ID="0x8c940f2d" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="write Property fail id:0x%x, ret:0x%x @bt_tran_task.c(493),ERROR" ID="0x8c940f6a" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="bt tran task framek write property fail en_id:%d,ret:%x @bt_tran_task.c(502),ERROR" ID="0x8c940fb2" />
+                       <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_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="[ERROR][LLC][SUPP]llc_conn_cte_req_ind_handler:discard the message @llc_task_ram.c(323),ERROR" ID="0x8a140a1a" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]convert uuid to sdk memcpy_s error @sdk_gatt_hlp.c(113),ERROR" ID="0x8da6038a" />
                        <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(574),ERROR" ID="0x8da611f2" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="[gatth_get_multiple_characteristics_value] rmt:0x%x mtu:0x%x @sdk_gatt_hlp.c(880),INFO" ID="0x8da61b85" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="[gatth_get_characteristics_by_uuid] start_handle:0x%x end_handle:0x%x @sdk_gatt_hlp.c(1013),INFO" ID="0x8da61fad" />
-                       <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(1056),INFO" ID="0x8da62105" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="gatth_set_reliable_characteristic_value in @sdk_gatt_hlp.c(1101),INFO" ID="0x8da6226d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[gatth_set_characteristic_value] memcpy failed @sdk_gatt_hlp.c(1138),ERROR" ID="0x8da62392" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt write characteristic rmt is NULL @sdk_gatt_hlp.c(1170),ERROR" ID="0x8da62492" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt write characteristic memcpy failed @sdk_gatt_hlp.c(1177),ERROR" ID="0x8da624ca" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt write characteristic tl is NULL @sdk_gatt_hlp.c(1191),ERROR" ID="0x8da6253a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[gatth_check_and_save_value] memcpy failed @sdk_gatt_hlp.c(1651),ERROR" ID="0x8da6339a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatth_server_execute_write_complete&#160;memcpy_s&#160;error @sdk_gatt_hlp.c(1748),ERROR" ID="0x8da636a2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatth_server_write_ind&#160;memcpy_s&#160;error @sdk_gatt_hlp.c(1892),ERROR" ID="0x8da63b22" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatth_server_write_ind&#160;memcpy_s&#160;error @sdk_gatt_hlp.c(1914),ERROR" ID="0x8da63bd2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatth_send_response&#160;memcpy_s&#160;error @sdk_gatt_hlp.c(2267),ERROR" ID="0x8da646da" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatth_notify_multiple_characteristic_changed&#160;memcpy_s&#160;error @sdk_gatt_hlp.c(2500),ERROR" ID="0x8da64e22" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att write ind data info mem new fail @sdk_gatt_hlp.c(2552),ERROR" ID="0x8da64fc2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att write ind data info service uuid memcpy fail @sdk_gatt_hlp.c(2562),ERROR" ID="0x8da65012" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att write ind data info attribute uuid memcpy fail @sdk_gatt_hlp.c(2567),ERROR" ID="0x8da6503a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att write ind data info addr memcpy fail @sdk_gatt_hlp.c(2572),ERROR" ID="0x8da65062" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att write ind data info val memcpy fail @sdk_gatt_hlp.c(2577),ERROR" ID="0x8da6508a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att write ind can't find service by service hdl @sdk_gatt_hlp.c(2623),ERROR" ID="0x8da651fa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att write pkt null @sdk_gatt_hlp.c(2629),ERROR" ID="0x8da6522a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att write ind can't find server cbk by server hdl @sdk_gatt_hlp.c(2636),ERROR" ID="0x8da65262" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att read ind data info mem new fail @sdk_gatt_hlp.c(2668),ERROR" ID="0x8da65362" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att read ind data info service uuid memcpy fail @sdk_gatt_hlp.c(2679),ERROR" ID="0x8da653ba" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att read ind data info attribute uuid memcpy fail @sdk_gatt_hlp.c(2684),ERROR" ID="0x8da653e2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att read ind data info addr memcpy fail @sdk_gatt_hlp.c(2689),ERROR" ID="0x8da6540a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att read ind data info val memcpy fail @sdk_gatt_hlp.c(2695),ERROR" ID="0x8da6543a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att read ind can't find service by service hdl @sdk_gatt_hlp.c(2715),ERROR" ID="0x8da654da" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att read pkt null @sdk_gatt_hlp.c(2721),ERROR" ID="0x8da6550a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att read ind can't find server cbk by server hdl @sdk_gatt_hlp.c(2728),ERROR" ID="0x8da65542" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]write element @sdk_gatt_hlp.c(2765),INFO" ID="0x8da6566d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]read element @sdk_gatt_hlp.c(2769),INFO" ID="0x8da6568d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]write element free @sdk_gatt_hlp.c(2775),INFO" ID="0x8da656bd" />
+                       <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_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 79aaed9..a75cd46 100644 (file)
@@ -1,14 +1,24 @@
 <MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="[ATT]memcpy_s&#160;error @att_gatt.c(75),ERROR" ID="0x8c4c025a" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[ATT]UUID[0x%04x] start hdl[0x%x], end hdl[0x%x] @att_gatt.c(956),INFO" ID="0x8c4c1de5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ATT]memcpy_s&#160;error @att_gatt.c(1057),ERROR" ID="0x8c4c210a" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="[ATT]UUID[0x%04x] hdl[0x%x], value hdl[0x%x], len[0x%x]  @att_gatt.c(1069),INFO" ID="0x8c4c216d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="properties[0x%x] @att_gatt.c(1070),INFO" ID="0x8c4c2175" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ATT]memcpy_s&#160;error @att_gatt.c(1128),ERROR" ID="0x8c4c2342" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[ATT]UUID[0x%04x], hdl[0x%x], len[0x%x] @att_gatt.c(1137),INFO" ID="0x8c4c238d" />
-                       <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(1351),INFO" ID="0x8c4c2a3d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ATT]memcpy_s&#160;error @att_gatt.c(1475),ERROR" ID="0x8c4c2e1a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ATT]memcpy_s error @att_gatt.c(2327),ERROR" ID="0x8c4c48ba" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ATT]memcpy_s&#160;error @att_gatt.c(2573),ERROR" ID="0x8c4c506a" />
-                       <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(2606),ERROR" ID="0x8c4c5172" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[ATT_GATT] gatt tl done reason:%d occured:%d @att_gatt.c(320),ERROR" ID="0x8c4c0a02" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="[ATT_GATT] gatt tl create require:%d addr:%02x******%02x%02x @att_gatt.c(414),ERROR" ID="0x8c4c0cf2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[ATT_GATT]tl timeout evt:%d @att_gatt.c(667),ERROR" ID="0x8c4c14da" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="[ATT_GATT] gatt tl disconnect require:%d addr:%02x******%02x%02x @att_gatt.c(844),ERROR" ID="0x8c4c1a62" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[ATT_GATT] gatt event cbk:%p evt:%d @att_gatt.c(871),ERROR" ID="0x8c4c1b3a" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[ATT_GATT] gatt error cfm task:%d errcode:%d mask:%d @att_gatt.c(887),ERROR" ID="0x8c4c1bba" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[ATT]UUID[0x%04x] start hdl[0x%x], end hdl[0x%x] @att_gatt.c(973),INFO" ID="0x8c4c1e6d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[ATT]memcpy_s&#160;error @att_gatt.c(1074),ERROR" ID="0x8c4c2192" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="[ATT]UUID[0x%04x] hdl[0x%x], value hdl[0x%x], len[0x%x]  @att_gatt.c(1086),INFO" ID="0x8c4c21f5" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="properties[0x%x] @att_gatt.c(1087),INFO" ID="0x8c4c21fd" />
+                       <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_LOG>
\ No newline at end of file
index 7520b7a..0c2bfe4 100644 (file)
                        <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),INFO" ID="0x8cc0205d" />
+                       <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(1090),ERROR" ID="0x8cc02212" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble core: ble state ind malloc fail: %d @ble_core.c(1100),ERROR" ID="0x8cc02262" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: app ble smp key handle message is NULL @ble_core.c(1109),ERROR" ID="0x8cc022aa" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble core: ble state ind memcpy rmt fail: %d @ble_core.c(1154),ERROR" ID="0x8cc02412" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble log: AppBleConnResult msg_data is NULL @ble_core.c(1181),ERROR" ID="0x8cc024ea" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble log: AppBleConnResult link does not exist on handle:%x @ble_core.c(1188),ERROR" ID="0x8cc02522" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble core: conn update result fail = %d @ble_core.c(1208),WARNING" ID="0x8cc025c3" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: Had Active Disconn,not to retry @ble_core.c(1333),INFO" ID="0x8cc029ad" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[ANCS]500ms comes! @ble_core.c(1365),INFO" ID="0x8cc02aad" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble core: unsupported msg_id: 0x%x @ble_core.c(1385),INFO" ID="0x8cc02b4d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble core: app ble init fail ret:%x @ble_core.c(1481),ERROR" ID="0x8cc02e4a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: ble core connect proc cmds param NULL @ble_core.c(1515),ERROR" ID="0x8cc02f5a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble core: ble core connect proc cmds pkt_ptr NULL @ble_core.c(1520),ERROR" ID="0x8cc02f82" />
+                       <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_LOG>
\ No newline at end of file
index f1f75bf..4a9232f 100644 (file)
@@ -1,69 +1,67 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="ble general : HciEvConnUpdate, ev NULL @ble_general.c(114),ERROR" ID="0x8dda0392" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general : conn result status = 0x%02x @ble_general.c(122),INFO" ID="0x8dda03d5" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="ble general : handle&amp;interval&amp;latency&amp;timeout, 0x%04x &amp; 0x%04x &amp; 0x%04x &amp; 0x%04x @ble_general.c(125),INFO" ID="0x8dda03ed" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general : memcpy conn para result fail: %d @ble_general.c(134),ERROR" ID="0x8dda0432" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general : conn para result malloc fail: %d @ble_general.c(143),ERROR" ID="0x8dda047a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : HciEvEncryptionChange, ev NULL @ble_general.c(153),ERROR" ID="0x8dda04ca" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="ble general : ENCRYPTION, status&amp;handle&amp;result = 0x%02x &amp; 0x%04x &amp; 0x%02x @ble_general.c(164),INFO" ID="0x8dda0525" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : HciEncryptionNegativeReply, ev NULL @ble_general.c(185),ERROR" ID="0x8dda05ca" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general : BLE GENERAL KEY MISS, handle = 0x%02x @ble_general.c(189),ERROR" ID="0x8dda05ea" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general : ble general pair cfm callback, result = 0x%04x @ble_general.c(202),INFO" ID="0x8dda0655" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : memcpy addr fail when pair cbk @ble_general.c(209),ERROR" ID="0x8dda068a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : ble general start pair ble addr null @ble_general.c(226),ERROR" ID="0x8dda0712" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : memcpy addr fail when start pair @ble_general.c(232),ERROR" ID="0x8dda0742" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general : set bondle fail = %d @ble_general.c(240),ERROR" ID="0x8dda0782" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general : ble general start ble pair addr type = %d @ble_general.c(246),INFO" ID="0x8dda07b5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : ble general conn update param is NULL @ble_general.c(262),ERROR" ID="0x8dda0832" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : ble general conn update in is NULL @ble_general.c(269),ERROR" ID="0x8dda086a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : ble general conn update, ble remote addr NULL @ble_general.c(275),ERROR" ID="0x8dda089a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : ble general conn update, memcpy fail @ble_general.c(282),ERROR" ID="0x8dda08d2" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="ble general : ConnUpdate cap&amp;atype = 0x%02x &amp; 0x%02x @ble_general.c(295),INFO" ID="0x8dda093d" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="ble general : min&amp;max&amp;latency&amp;timeout, 0x%04x &amp; 0x%04x &amp; 0x%04x &amp; 0x%04x @ble_general.c(298),INFO" ID="0x8dda0955" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general : ble general conn update fail: %d @ble_general.c(304),ERROR" ID="0x8dda0982" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : ble general disconnect, bleRemoteAddr_cpy NULL @ble_general.c(322),ERROR" ID="0x8dda0a12" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : ble general disconnect, memcpy fail @ble_general.c(328),ERROR" ID="0x8dda0a42" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : ble general connect memcpy fail @ble_general.c(349),ERROR" ID="0x8dda0aea" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="ble general set sec params bondable &amp; io_capability 0x%02x%02x @ble_general.c(389),INFO" ID="0x8dda0c2d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general set sec params set bondable failed @ble_general.c(394),INFO" ID="0x8dda0c55" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general set sec params set io capability failed @ble_general.c(401),INFO" ID="0x8dda0c8d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general set sec params failed @ble_general.c(414),INFO" ID="0x8dda0cf5" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="ble general set sec params ok! g_config_smp_lesc = %u, g_config_smp_mode = %u @ble_general.c(419),INFO" ID="0x8dda0d1d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : ble general remove smp key addr NULL @ble_general.c(431),ERROR" ID="0x8dda0d7a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : ble general remove smp key mamcpy fail @ble_general.c(444),ERROR" ID="0x8dda0de2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general : ble general remove smp key new fail %d @ble_general.c(450),ERROR" ID="0x8dda0e12" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : ble general ble notification param is NULL @ble_general.c(472),ERROR" ID="0x8dda0ec2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general : notify len_cpy error: %d @ble_general.c(478),ERROR" ID="0x8dda0ef2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : ble general ble start pair new in is NULL @ble_general.c(487),ERROR" ID="0x8dda0f3a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : memcpy ble_value fail when notify @ble_general.c(494),ERROR" ID="0x8dda0f72" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : memset addr error when notify @ble_general.c(505),ERROR" ID="0x8dda0fca" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : sais service cb arg is NULL @ble_general.c(520),ERROR" ID="0x8dda1042" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="ble general : GattsSaisServiceCbk, event len = %d, %d @ble_general.c(527),INFO" ID="0x8dda107d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : reg sais service service is NULL @ble_general.c(569),ERROR" ID="0x8dda11ca" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : reg sais service character is NULL @ble_general.c(580),ERROR" ID="0x8dda1222" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : alipay service cb arg is NULL @ble_general.c(603),ERROR" ID="0x8dda12da" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="ble general : GattsAlipayServiceCbk, uuid = 0x%x, event = %d, len = %d @ble_general.c(611),INFO" ID="0x8dda131d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general : GattsAlipayServiceCbk, pend uuid = 0x%04x @ble_general.c(632),DBG" ID="0x8dda13c6" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : reg alipay service service is NULL @ble_general.c(661),ERROR" ID="0x8dda14aa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : reg alipay service character is NULL @ble_general.c(672),ERROR" ID="0x8dda1502" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : BleGeneralGattCallback_arg NULL @ble_general.c(688),ERROR" ID="0x8dda1582" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[ANCS]Get Notification data, len=%d @ble_general.c(709),INFO" ID="0x8dda162d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : gap general conn cb para is NULL @ble_general.c(770),ERROR" ID="0x8dda1812" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="ble general : ble general connection event &amp; cap: 0x%02x, 0x%02x @ble_general.c(777),INFO" ID="0x8dda184d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : gap general smp succeed cb para is NULL @ble_general.c(813),ERROR" ID="0x8dda196a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : authentication failure cb para is NULL @ble_general.c(834),ERROR" ID="0x8dda1a12" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="ble general : BLE GENERAL SMP REQUEST FAIL, cap = 0x%02x status: %x @ble_general.c(841),ERROR" ID="0x8dda1a4a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : memcpy addr fail when authentication @ble_general.c(849),ERROR" ID="0x8dda1a8a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : other branch @ble_general.c(867),INFO" ID="0x8dda1b1d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general : gap cb event: 0x%02x @ble_general.c(902),INFO" ID="0x8dda1c35" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : batery service cb arg_cpy is NULL @ble_general.c(934),ERROR" ID="0x8dda1d32" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : reg battery service is NULL @ble_general.c(967),ERROR" ID="0x8dda1e3a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : reg battery service character is NULL @ble_general.c(982),ERROR" ID="0x8dda1eb2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="unknown product type:%x @ble_general.c(1009),INFO" ID="0x8dda1f8d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="product type:%x @ble_general.c(1017),INFO" ID="0x8dda1fcd" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general : App_RecoverSMPKeys data_len err, %d @ble_general.c(1080),ERROR" ID="0x8dda21c2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general : NEW key_list fail, %d @ble_general.c(1086),ERROR" ID="0x8dda21f2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general : List NEW key fail, %d @ble_general.c(1101),ERROR" ID="0x8dda226a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general : List NEW key fail, %d @ble_general.c(1109),ERROR" ID="0x8dda22aa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : ble general ble init cBacks is NULL @ble_general.c(1132),ERROR" ID="0x8dda2362" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : memcpy cBacks fail when ble general ble init @ble_general.c(1139),ERROR" ID="0x8dda239a" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="ble general : HciEvConnUpdate, ev NULL @ble_general.c(111),ERROR" ID="0x8dda037a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general : conn result status = 0x%02x @ble_general.c(119),INFO" ID="0x8dda03bd" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="ble general : handle&amp;interval&amp;latency&amp;timeout, 0x%04x &amp; 0x%04x &amp; 0x%04x &amp; 0x%04x @ble_general.c(122),INFO" ID="0x8dda03d5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : HciEvEncryptionChange, ev NULL @ble_general.c(139),ERROR" ID="0x8dda045a" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="ble general : ENCRYPTION, status&amp;handle&amp;result = 0x%02x &amp; 0x%04x &amp; 0x%02x @ble_general.c(150),INFO" ID="0x8dda04b5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : HciEncryptionNegativeReply, ev NULL @ble_general.c(168),ERROR" ID="0x8dda0542" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general : BLE GENERAL KEY MISS, handle = 0x%02x @ble_general.c(172),ERROR" ID="0x8dda0562" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general : ble general pair cfm callback, result = 0x%04x @ble_general.c(181),INFO" ID="0x8dda05ad" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : ble general start pair ble addr null @ble_general.c(195),ERROR" ID="0x8dda061a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : memcpy addr fail when start pair @ble_general.c(201),ERROR" ID="0x8dda064a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general : set bondle fail = %d @ble_general.c(209),ERROR" ID="0x8dda068a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general : ble general start ble pair addr type = %d @ble_general.c(215),INFO" ID="0x8dda06bd" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : ble general conn update param is NULL @ble_general.c(231),ERROR" ID="0x8dda073a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : ble general conn update in is NULL @ble_general.c(238),ERROR" ID="0x8dda0772" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : ble general conn update, ble remote addr NULL @ble_general.c(244),ERROR" ID="0x8dda07a2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : ble general conn update, memcpy fail @ble_general.c(251),ERROR" ID="0x8dda07da" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="ble general : ConnUpdate cap&amp;atype = 0x%02x &amp; 0x%02x @ble_general.c(264),INFO" ID="0x8dda0845" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="ble general : min&amp;max&amp;latency&amp;timeout, 0x%04x &amp; 0x%04x &amp; 0x%04x &amp; 0x%04x @ble_general.c(267),INFO" ID="0x8dda085d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general : ble general conn update fail: %d @ble_general.c(273),ERROR" ID="0x8dda088a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : ble general disconnect, bleRemoteAddr_cpy NULL @ble_general.c(291),ERROR" ID="0x8dda091a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : ble general disconnect, memcpy fail @ble_general.c(297),ERROR" ID="0x8dda094a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : ble general connect memcpy fail @ble_general.c(318),ERROR" ID="0x8dda09f2" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="ble general set sec params bondable &amp; io_capability 0x%02x%02x @ble_general.c(358),INFO" ID="0x8dda0b35" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general set sec params set bondable failed @ble_general.c(363),INFO" ID="0x8dda0b5d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general set sec params set io capability failed @ble_general.c(370),INFO" ID="0x8dda0b95" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general set sec params failed @ble_general.c(383),INFO" ID="0x8dda0bfd" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="ble general set sec params ok! g_config_smp_lesc = %u, g_config_smp_mode = %u @ble_general.c(388),INFO" ID="0x8dda0c25" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : ble general remove smp key addr NULL @ble_general.c(400),ERROR" ID="0x8dda0c82" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : ble general remove smp key mamcpy fail @ble_general.c(413),ERROR" ID="0x8dda0cea" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general : ble general remove smp key new fail %d @ble_general.c(419),ERROR" ID="0x8dda0d1a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : ble general ble notification param is NULL @ble_general.c(441),ERROR" ID="0x8dda0dca" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general : notify len_cpy error: %d @ble_general.c(447),ERROR" ID="0x8dda0dfa" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : ble general ble start pair new in is NULL @ble_general.c(456),ERROR" ID="0x8dda0e42" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : memcpy ble_value fail when notify @ble_general.c(463),ERROR" ID="0x8dda0e7a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : memset addr error when notify @ble_general.c(474),ERROR" ID="0x8dda0ed2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : sais service cb arg is NULL @ble_general.c(489),ERROR" ID="0x8dda0f4a" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="ble general : GattsSaisServiceCbk, event len = %d, %d @ble_general.c(496),INFO" ID="0x8dda0f85" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : reg sais service service is NULL @ble_general.c(538),ERROR" ID="0x8dda10d2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : reg sais service character is NULL @ble_general.c(549),ERROR" ID="0x8dda112a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : alipay service cb arg is NULL @ble_general.c(572),ERROR" ID="0x8dda11e2" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="ble general : GattsAlipayServiceCbk, uuid = 0x%x, event = %d, len = %d @ble_general.c(580),INFO" ID="0x8dda1225" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general : GattsAlipayServiceCbk, pend uuid = 0x%04x @ble_general.c(601),DBG" ID="0x8dda12ce" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : reg alipay service service is NULL @ble_general.c(630),ERROR" ID="0x8dda13b2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : reg alipay service character is NULL @ble_general.c(641),ERROR" ID="0x8dda140a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : BleGeneralGattCallback_arg NULL @ble_general.c(657),ERROR" ID="0x8dda148a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[ANCS]Get Notification data, len=%d @ble_general.c(678),INFO" ID="0x8dda1535" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : gap general conn cb para is NULL @ble_general.c(739),ERROR" ID="0x8dda171a" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="ble general : ble general connection event &amp; cap: 0x%02x, 0x%02x @ble_general.c(746),INFO" ID="0x8dda1755" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : gap general smp succeed cb para is NULL @ble_general.c(782),ERROR" ID="0x8dda1872" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general : memcpy smp key store value fail: %d @ble_general.c(791),ERROR" ID="0x8dda18ba" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : authentication failure cb para is NULL @ble_general.c(801),ERROR" ID="0x8dda190a" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="ble general : BLE GENERAL SMP REQUEST FAIL, cap = 0x%02x status: %x @ble_general.c(808),ERROR" ID="0x8dda1942" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : memcpy addr fail when authentication @ble_general.c(815),ERROR" ID="0x8dda197a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : other branch @ble_general.c(831),INFO" ID="0x8dda19fd" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general : gap cb event: 0x%02x @ble_general.c(870),ERROR" ID="0x8dda1b32" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : batery service cb arg_cpy is NULL @ble_general.c(904),ERROR" ID="0x8dda1c42" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : reg battery service is NULL @ble_general.c(937),ERROR" ID="0x8dda1d4a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : reg battery service character is NULL @ble_general.c(952),ERROR" ID="0x8dda1dc2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="unknown product type:%x @ble_general.c(979),INFO" ID="0x8dda1e9d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="product type:%x @ble_general.c(987),INFO" ID="0x8dda1edd" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general : App_RecoverSMPKeys data_len err, %d @ble_general.c(1050),ERROR" ID="0x8dda20d2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general : NEW key_list fail, %d @ble_general.c(1056),ERROR" ID="0x8dda2102" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general : List NEW key fail, %d @ble_general.c(1071),ERROR" ID="0x8dda217a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general : List NEW key fail, %d @ble_general.c(1079),ERROR" ID="0x8dda21ba" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : ble general ble init cBacks is NULL @ble_general.c(1102),ERROR" ID="0x8dda2272" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general : memcpy cBacks fail when ble general ble init @ble_general.c(1109),ERROR" ID="0x8dda22aa" />
                        </MSG_LOG>
\ No newline at end of file
index c808c18..a9b35a4 100644 (file)
                        <MSG STRUCTURE="diag_log_msg1" NAME="ble gatt client characteristic value callback memcpy fail: %d @ble_general_gatt.c(665),ERROR" ID="0x8de014ca" />
                        <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_msg0" NAME="[BCore] gatt client write result addr memcpy fail @ble_general_gatt.c(720),ERROR" ID="0x8de01682" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble gatt client call back func type=%d @ble_general_gatt.c(773),INFO" ID="0x8de0182d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt discovery service not found:0x%x. @ble_general_gatt.c(804),WARNING" ID="0x8de01923" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt discovery include service not found:0x%x. @ble_general_gatt.c(827),WARNING" ID="0x8de019db" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt discovery characteristic new fail. @ble_general_gatt.c(843),ERROR" ID="0x8de01a5a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt discovery characteristic memset fail. @ble_general_gatt.c(848),ERROR" ID="0x8de01a82" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt discovery characteristic not found:0x%x. @ble_general_gatt.c(865),WARNING" ID="0x8de01b0b" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt discovery characteristic by uuid new fail. @ble_general_gatt.c(883),ERROR" ID="0x8de01b9a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt discovery characteristic by uuid memset fail. @ble_general_gatt.c(889),ERROR" ID="0x8de01bca" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt discovery characteristic by uuid memcpy fail. @ble_general_gatt.c(903),ERROR" ID="0x8de01c3a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt discovery characteristic by uuid not found:0x%x. @ble_general_gatt.c(914),WARNING" ID="0x8de01c93" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt discovery descriptor by handle new fail. @ble_general_gatt.c(930),ERROR" ID="0x8de01d12" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt discovery descriptor by handle not found:0x%x. @ble_general_gatt.c(944),WARNING" ID="0x8de01d83" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt discovery descriptor new fail. @ble_general_gatt.c(964),ERROR" ID="0x8de01e22" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt discovery descriptor memset fail. @ble_general_gatt.c(969),ERROR" ID="0x8de01e4a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt discovery descriptor memcpy fail. @ble_general_gatt.c(975),ERROR" ID="0x8de01e7a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt discovery descriptor not found:0x%x. @ble_general_gatt.c(986),WARNING" ID="0x8de01ed3" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble gatt read characteristic value respon new fail. @ble_general_gatt.c(1007),ERROR" ID="0x8de01f7a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[BCore] ble gatt read characteristic value respon memcpy fail: %d @ble_general_gatt.c(1014),ERROR" ID="0x8de01fb2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[BCore] ble gatt read characteristic value respon memcpy fail: %d @ble_general_gatt.c(1024),ERROR" ID="0x8de02002" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt read characteristic value new fail. @ble_general_gatt.c(1047),ERROR" ID="0x8de020ba" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt read descriptor value error:0x%x. @ble_general_gatt.c(1061),ERROR" ID="0x8de0212a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt read characteristic by uuid new fail. @ble_general_gatt.c(1079),ERROR" ID="0x8de021ba" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt read characteristic by uuid memcpy fail. @ble_general_gatt.c(1092),ERROR" ID="0x8de02222" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt read characteristic by uuid memcpy fail. @ble_general_gatt.c(1099),ERROR" ID="0x8de0225a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt read characteristic by uuid error:0x%x. @ble_general_gatt.c(1106),WARNING" ID="0x8de02293" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt read multiple characteristic new fail. @ble_general_gatt.c(1124),ERROR" ID="0x8de02322" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt read multiple characteristic memset fail. @ble_general_gatt.c(1131),ERROR" ID="0x8de0235a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt read multiple characteristic error:0x%x. @ble_general_gatt.c(1147),WARNING" ID="0x8de023db" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt read multiple characteristic error:0x%x. @ble_general_gatt.c(1177),WARNING" ID="0x8de024cb" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt write characteristic value memcpy failed @ble_general_gatt.c(1229),ERROR" ID="0x8de0266a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt write characteristic value param is NULL @ble_general_gatt.c(1252),ERROR" ID="0x8de02722" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt write characteristic value malloc fail, size:0x%x. @ble_general_gatt.c(1265),ERROR" ID="0x8de0278a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[BCore] ble general gatt write characteristic value memcpy fail: %d @ble_general_gatt.c(1275),ERROR" ID="0x8de027da" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt write characteristic value fail:0x%x. @ble_general_gatt.c(1289),WARNING" ID="0x8de0284b" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt reliable write characteristic value param is NULL @ble_general_gatt.c(1308),ERROR" ID="0x8de028e2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt reliable write characteristic value malloc fail @ble_general_gatt.c(1315),ERROR" ID="0x8de0291a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[BCore] ble general gatt reliable write characteristic value memcpy fail @ble_general_gatt.c(1324),ERROR" ID="0x8de02962" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt reliable write characteristic value fail:0x%x. @ble_general_gatt.c(1343),WARNING" ID="0x8de029fb" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt write descriptor value malloc faile, size:0x%x. @ble_general_gatt.c(1360),ERROR" ID="0x8de02a82" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[BCore] ble general gatt write descriptor value memcpy fail: %d @ble_general_gatt.c(1369),ERROR" ID="0x8de02aca" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt discovery descriptor error:0x%x. @ble_general_gatt.c(1379),ERROR" ID="0x8de02b1a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[BCore] ble gatt read descriptor value response memcpy fail: %d @ble_general_gatt.c(1401),ERROR" ID="0x8de02bca" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[BCore] ble gatt read descriptor value response memcpy fail: %d @ble_general_gatt.c(1409),ERROR" ID="0x8de02c0a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt read descriptor value error:0x%x. @ble_general_gatt.c(1438),ERROR" ID="0x8de02cf2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt mtu config error:0x%x. @ble_general_gatt.c(1453),ERROR" ID="0x8de02d6a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt set gap ui attributes error:0x%x. @ble_general_gatt.c(1466),ERROR" ID="0x8de02dd2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble general gatt get gap ui attributes error:0x%x. @ble_general_gatt.c(1485),ERROR" ID="0x8de02e6a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="bt mpc adapter gatt get hid report callback new fail @ble_general_gatt.c(1515),ERROR" ID="0x8de02f5a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="bt mpc adapter gatt get hid report callback error_code = %x @ble_general_gatt.c(1526),INFO" ID="0x8de02fb5" />
+                       <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_LOG>
\ No newline at end of file
index e38f9ce..6c194ad 100644 (file)
@@ -1,33 +1,33 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg2" NAME="stack gap set discovery mode result = 0x%x, mode = 0x%x  @bt_ahi_gap.c(75),INFO" ID="0x8c9e025d" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="stack gap get discovery mode result = 0x%x, mode = 0x%x  @bt_ahi_gap.c(89),INFO" ID="0x8c9e02cd" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="stack gap stop discovery result = 0x%x, mode = 0x%x  @bt_ahi_gap.c(99),INFO" ID="0x8c9e031d" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="stack gap create acl result = 0x%x, dev_hdl = 0x%x, link type = %d  @bt_ahi_gap.c(113),INFO" ID="0x8c9e038d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memory copy failed @bt_ahi_gap.c(126),ERROR" ID="0x8c9e03f2" />
-                       <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(131),INFO" ID="0x8c9e041d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="stack gap create acla result = 0x%x @bt_ahi_gap.c(140),INFO" ID="0x8c9e0465" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="stack gap reconnect phone result = 0x%x, dev_hdl = 0x%x  @bt_ahi_gap.c(151),INFO" ID="0x8c9e04bd" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="stack gap get rmt dev handle result = 0x%x @bt_ahi_gap.c(163),INFO" ID="0x8c9e051d" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="stack gap device is connected result = 0x%x, dev_hdl = 0x%x  @bt_ahi_gap.c(175),INFO" ID="0x8c9e057d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="btsdk disconnect acl by handle result = 0x%x @bt_ahi_gap.c(186),INFO" ID="0x8c9e05d5" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="stack gap pair device result = 0x%x, dev_hdl = 0x%x  @bt_ahi_gap.c(198),INFO" ID="0x8c9e0635" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="stack gap add rmt device rsp.result = %x @bt_ahi_gap.c(215),INFO" ID="0x8c9e06bd" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="stack gap update rmt device name result = 0x%x, name = %s  @bt_ahi_gap.c(235),INFO" ID="0x8c9e075d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memory copy failed @bt_ahi_gap.c(249),ERROR" ID="0x8c9e07ca" />
-                       <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(257),INFO" ID="0x8c9e080d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="stack gap update rmt device name async result = 0x%x @bt_ahi_gap.c(267),INFO" ID="0x8c9e085d" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="stack gap get local name result = 0x%x, length = %d, name = %s  @bt_ahi_gap.c(303),INFO" ID="0x8c9e097d" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="stack gap get rmt dev addr result = 0x%x, addr[%02x:**:**:**:%02x:%02x] @bt_ahi_gap.c(328),INFO" ID="0x8c9e0a45" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="stack gap browse rmt service overflow, max_count = %d, svc_count = %d @bt_ahi_gap.c(350),ERROR" ID="0x8c9e0af2" />
-                       <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(356),INFO" ID="0x8c9e0b25" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="hfp enable sco:scohdl=0x%x inid=0x%x outid=0x%x @bt_ahi_gap.c(377),INFO" ID="0x8c9e0bcd" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="hfp disable sco:scohdl=0x%x @bt_ahi_gap.c(381),INFO" ID="0x8c9e0bed" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="result = 0x%x, handle = 0x%x, service_class = %02x  @bt_ahi_gap.c(414),INFO" ID="0x8c9e0cf5" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="stack gap init, res = 0x%x  @bt_ahi_gap.c(425),INFO" ID="0x8c9e0d4d" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="set bt tx power, hdl=0x%x, power=%d, ret=0x%x @bt_ahi_gap.c(438),INFO" ID="0x8c9e0db5" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="br gap read rssi, hdl=0x%x, rssi=%d, ret=0x%x @bt_ahi_gap.c(446),INFO" ID="0x8c9e0df5" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="set active scene scene = %d, bitrate = %d, delay = %d, ret=0x%x @bt_ahi_gap.c(462),INFO" ID="0x8c9e0e75" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="set inquiry scan param interval = %d, window = %d @bt_ahi_gap.c(470),INFO" ID="0x8c9e0eb5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memory copy failed @bt_ahi_gap.c(481),ERROR" ID="0x8c9e0f0a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="stack gap restore rmt device rsp.result = %x @bt_ahi_gap.c(485),INFO" ID="0x8c9e0f2d" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="br gap get link mode, hdl=0x%x, mode=%d, ret=0x%x @bt_ahi_gap.c(494),INFO" ID="0x8c9e0f75" />
+<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>
\ No newline at end of file
index 4023826..bbe9874 100644 (file)
@@ -1,8 +1,8 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg2" NAME="bt_init start... em start addr is 0x%x,em_size is 0x%x @bt_main.c(445),INFO" ID="0x89220ded" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[PMU][ERROR]bt init pmu state change fail @bt_main.c(449),ERROR" ID="0x89220e0a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[INFO][BT]bt_hal_phy_init started... @bt_main.c(469),INFO" ID="0x89220ead" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[INFO][BT]init_sleep started... @bt_main.c(474),INFO" ID="0x89220ed5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[INFO][BT]intc_init started... @bt_main.c(477),INFO" ID="0x89220eed" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[INFO][BT]bt param config started... @bt_main.c(480),INFO" ID="0x89220f05" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[PMU][ERROR]bt init end pmu state change fail @bt_main.c(501),ERROR" ID="0x89220faa" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg2" NAME="bt_init start... em start addr is 0x%x,em_size is 0x%x @bt_main.c(446),INFO" ID="0x89220df5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[PMU][ERROR]bt init pmu state change fail @bt_main.c(450),ERROR" ID="0x89220e12" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[INFO][BT]bt_hal_phy_init started... @bt_main.c(470),INFO" ID="0x89220eb5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[INFO][BT]init_sleep started... @bt_main.c(475),INFO" ID="0x89220edd" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[INFO][BT]intc_init started... @bt_main.c(478),INFO" ID="0x89220ef5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[INFO][BT]bt param config started... @bt_main.c(481),INFO" ID="0x89220f0d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[PMU][ERROR]bt init end pmu state change fail @bt_main.c(502),ERROR" ID="0x89220fb2" />
                        </MSG_LOG>
\ No newline at end of file
index 6d82518..b4a447d 100644 (file)
                        <MSG STRUCTURE="diag_log_msg1" NAME="bt mpc adapter gatt reliable write characteristic value req interface fail, ret%d @bt_mpc_adpt_gatt.c(576),WARNING" ID="0x8dd61203" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="bt mpc adapter gatt write descriptor req param len error, len = %u @bt_mpc_adpt_gatt.c(587),ERROR" ID="0x8dd6125a" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="bt mpc adapter gatt write descriptor req interface fail, ret%d @bt_mpc_adpt_gatt.c(594),WARNING" ID="0x8dd61293" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble core: ble notify att read data memcpy error! error_code = %x @bt_mpc_adpt_gatt.c(625),INFO" ID="0x8dd6138d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ble core: ble notify att read addr memcpy error! error_code = %x @bt_mpc_adpt_gatt.c(632),INFO" ID="0x8dd613c5" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="bt mpc adapter gatt mtu config req param len error, len = %u @bt_mpc_adpt_gatt.c(653),ERROR" ID="0x8dd6146a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="bt mpc adapter gatt mtu config req interface fail, ret%d @bt_mpc_adpt_gatt.c(660),WARNING" ID="0x8dd614a3" />
-                       <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(672),ERROR" ID="0x8dd61502" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="bt mpc adapter gatt get hid report map req interface fail, ret%d @bt_mpc_adpt_gatt.c(679),WARNING" ID="0x8dd6153b" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="bt mpc adapter gatt read descriptor req param len error, len = %u @bt_mpc_adpt_gatt.c(732),WARNING" ID="0x8dd616e3" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="bt mpc adapter gatt read descriptor req param fail, ret%d @bt_mpc_adpt_gatt.c(738),WARNING" ID="0x8dd61713" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="bt mpc adapter gatt mtu set req param len error, len = %u @bt_mpc_adpt_gatt.c(750),ERROR" ID="0x8dd61772" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="bt mpc adapter gatt mtu set req interface fail, ret%d @bt_mpc_adpt_gatt.c(757),WARNING" ID="0x8dd617ab" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble core: ble notify att read addr memcpy error! error_code = %x @bt_mpc_adpt_gatt.c(617),ERROR" ID="0x8dd6134a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble core: ble notify att read data memcpy error! error_code = %x @bt_mpc_adpt_gatt.c(642),INFO" ID="0x8dd61415" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ble core: ble notify att read addr memcpy error! error_code = %x @bt_mpc_adpt_gatt.c(649),INFO" ID="0x8dd6144d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="bt mpc adapter gatt mtu config req param len error, len = %u @bt_mpc_adpt_gatt.c(670),ERROR" ID="0x8dd614f2" />
+                       <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_LOG>
\ No newline at end of file
index 1d99442..8c40a46 100644 (file)
@@ -1,14 +1,14 @@
 <MSG_LOG><MSG STRUCTURE="diag_log_msg2" NAME="[PMU][ERROR]Wakeup isr come more than once, sleep_int_id:%d, wakeup_int_id:%d @bt_sleep.c(139),WARNING" ID="0x88f0045b" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="[PMU][ERROR]wakeup pmu state change fail @bt_sleep.c(147),ERROR" ID="0x88f0049a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="g_clock_32k_100x = %d @bt_sleep.c(177),INFO" ID="0x88f0058d" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[INFO][SLEEP]bt_program_sleep clk(%d)dur(%d)glbcnt(0x%x) @bt_sleep.c(222),INFO" ID="0x88f006f5" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[ERROR][SLEEP]wakeup_end clk(%d) sleep_time(%d) sleep_dur(%d) @bt_sleep.c(265),ERROR" ID="0x88f0084a" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[INFO][SLEEP]wakeup_end clk(%d) fincnt(%d)glbcnt(0x%x) @bt_sleep.c(269),INFO" ID="0x88f0086d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[PMU][ERROR]btc sleep pmu state change fail @bt_sleep.c(311),ERROR" ID="0x88f009ba" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="[PMU][WARNING]Set osc_en down more than once, sleep_int_id:%d, wakeup_int_id:%d @bt_sleep.c(320),WARNING" ID="0x88f00a03" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[PMU][ERROR]sleep time is too short! @bt_sleep.c(370),WARNING" ID="0x88f00b93" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[PMU][SLEEP]osc_en wakeup isr error! @bt_sleep.c(374),ERROR" ID="0x88f00bb2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[PMU][ERROR]extern wakeup pmu state change fail @bt_sleep.c(390),ERROR" ID="0x88f00c32" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[INFO][SLEEP]extern wakeup btc clk(%d)slp_dur_slot(%d)glbcnt(%d) @bt_sleep.c(396),INFO" ID="0x88f00c65" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="g_dfx_time:%d @bt_sleep.c(416),INFO" ID="0x88f00d05" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="g_clock_32k_100x = %d @bt_sleep.c(178),INFO" ID="0x88f00595" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[INFO][SLEEP]bt_program_sleep clk(%d)dur(%d)glbcnt(0x%x) @bt_sleep.c(224),INFO" ID="0x88f00705" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[ERROR][SLEEP]wakeup_end clk(%d) sleep_time(%d) sleep_dur(%d) @bt_sleep.c(267),ERROR" ID="0x88f0085a" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[INFO][SLEEP]wakeup_end clk(%d) fincnt(%d)glbcnt(0x%x) @bt_sleep.c(271),INFO" ID="0x88f0087d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[PMU][ERROR]btc sleep pmu state change fail @bt_sleep.c(313),ERROR" ID="0x88f009ca" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[PMU][WARNING]Set osc_en down more than once, sleep_int_id:%d, wakeup_int_id:%d @bt_sleep.c(322),WARNING" ID="0x88f00a13" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[PMU][ERROR]sleep time is too short! @bt_sleep.c(372),WARNING" ID="0x88f00ba3" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[PMU][SLEEP]osc_en wakeup isr error! @bt_sleep.c(376),ERROR" ID="0x88f00bc2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[PMU][ERROR]extern wakeup pmu state change fail @bt_sleep.c(392),ERROR" ID="0x88f00c42" />
+                       <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_LOG>
\ No newline at end of file
index b6a0dc1..45cfe4c 100644 (file)
@@ -1,27 +1,29 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="[ERROR]p_data is null @bt_tran_task.c(56),ERROR" ID="0x8c9401c2" />
-                       <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(86),WARNING" ID="0x8c9402b3" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Error route_id! @bt_tran_task.c(98),ERROR" ID="0x8c940312" />
-                       <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(118),WARNING" ID="0x8c9403b3" />
-                       <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(121),WARNING" ID="0x8c9403cb" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="INVALID DATA! @bt_tran_task.c(157),ERROR" ID="0x8c9404ea" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="BT_TRAN: TXMCU:ipc send data = %d @bt_tran_task.c(185),ERROR" ID="0x8c9405ca" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="UNKNOW CORE! @bt_tran_task.c(195),ERROR" ID="0x8c94061a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="bt tran task framek free property allow_free= %d @bt_tran_task.c(235),INFO" ID="0x8c94075d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="pst_property-&gt;en_id = 0x%x @bt_tran_task.c(253),INFO" ID="0x8c9407ed" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="BT_TRAN: data ERROR data_len:%d @bt_tran_task.c(311),WARNING" ID="0x8c9409bb" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="BT_TRAN: data ERROR data:0x%08x, 0x%08x @bt_tran_task.c(315),WARNING" ID="0x8c9409db" />
-                       <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(324),ERROR" ID="0x8c940a22" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="hci qos buf overflow. @bt_tran_task.c(349),ERROR" ID="0x8c940aea" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble fsm buf overflow. @bt_tran_task.c(354),ERROR" ID="0x8c940b12" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="rec data malloc fail opcode:0x%04x,length:(0x%04x) @bt_tran_task.c(363),ERROR" ID="0x8c940b5a" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="rec data memcpy fail opcode:0x%04x,length:(0x%04x) @bt_tran_task.c(369),ERROR" ID="0x8c940b8a" />
-                       <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(379),ERROR" ID="0x8c940bda" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ipc data data len err = %d @bt_tran_task.c(409),ERROR" ID="0x8c940cca" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ipc data data len err = %d @bt_tran_task.c(419),ERROR" ID="0x8c940d1a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ipc data from M7 error = %d @bt_tran_task.c(423),ERROR" ID="0x8c940d3a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ipc data from unknow core @bt_tran_task.c(435),ERROR" ID="0x8c940d9a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="bt tran task handler osMessageQueueGet fail ret:(%x) @bt_tran_task.c(461),ERROR" ID="0x8c940e6a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="bt tran task framek write property en_id = 0x%x @bt_tran_task.c(485),INFO" ID="0x8c940f2d" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="write Property fail id:0x%x, ret:0x%x @bt_tran_task.c(493),ERROR" ID="0x8c940f6a" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="bt tran task framek write property fail en_id:%d,ret:%x @bt_tran_task.c(502),ERROR" ID="0x8c940fb2" />
+<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>
\ No newline at end of file
index cec3cd9..62c052b 100644 (file)
@@ -1,6 +1,8 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg2" NAME="[TIMRE_ADD][STACK_TIMER] TIMER=0x%x, TIME=%u @fsm.c(669),INFO" ID="0x8b5814ed" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[TIMER_EXPIR]timeout timer err! @fsm.c(767),ERROR" ID="0x8b5817fa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[TIMER_EXPIR]timeout but no right timer! @fsm.c(797),WARNING" ID="0x8b5818eb" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[timer_expire_in_sch_lite]timer has been free; not need free! @fsm.c(813),WARNING" ID="0x8b58196b" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[TIMER_DEL][STACK_TIMER] in_ft is NULL! @fsm.c(938),INFO" ID="0x8b581d55" />
+<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>
\ No newline at end of file
index 363dc3a..63850e3 100644 (file)
@@ -1,11 +1,13 @@
 <MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="[GAP][create_handle] memcpy failed @gap_hlp_comm.c(260),ERROR" ID="0x8b8e0822" />
-                       <MSG STRUCTURE="diag_log_msg6" NAME="[GAP][ACL_EVENT_CALLBACK] JOB=%u, LINK_TYPE=%u, ACL_LINK_HANDLE=0x%x, REMOTE_ADDR=%02x:%02x:**:**:**:%02x @gap_hlp_comm.c(477),INFO" ID="0x8b8e0eed" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[GAP]memcpy failed @gap_hlp_comm.c(887),ERROR" ID="0x8b8e1bba" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="gaph_hci_command_cbk, operation=%x, code:%x @gap_hlp_comm.c(981),INFO" ID="0x8b8e1ead" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[GAP][MEMCPY_FAILED]CreateContext memcpy fail,ret=%d @gap_hlp_comm.c(1048),INFO" ID="0x8b8e20c5" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[GAP][LINK_ALREADY_EXISTS] REMOTE_ADDR=%02x:%02x:**:**:**:%02x @gap_hlp_comm.c(1086),INFO" ID="0x8b8e21f5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[GAP]memcpy failed @gap_hlp_comm.c(1842),ERROR" ID="0x8b8e3992" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[GAP]memcpy failed @gap_hlp_comm.c(1862),ERROR" ID="0x8b8e3a32" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[GAP][LOCAL_DISC_REQ] REMOTE_ADDR=%02x:%02x:**:**:**:%02x, can't find acl link @gap_hlp_comm.c(2011),INFO" ID="0x8b8e3edd" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[GAP][LOCAL_DISC_REQ] REMOTE_ADDR=%02x:%02x:**:**:**:%02x, can't find acl link @gap_hlp_comm.c(2041),INFO" ID="0x8b8e3fcd" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[GAP] acl_link cbk link_type:%d job:%d @gap_hlp_comm.c(444),ERROR" ID="0x8b8e0de2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[GAP][acl]job:%d link is NULL @gap_hlp_comm.c(464),ERROR" ID="0x8b8e0e82" />
+                       <MSG STRUCTURE="diag_log_msg6" NAME="[GAP][ACL_EVENT_CALLBACK] JOB=%u, LINK_TYPE=%u, ACL_LINK_HANDLE=0x%x, REMOTE_ADDR=%02x:%02x:**:**:**:%02x @gap_hlp_comm.c(482),INFO" ID="0x8b8e0f15" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[GAP]memcpy failed @gap_hlp_comm.c(892),ERROR" ID="0x8b8e1be2" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="gaph_hci_command_cbk, operation=%x, code:%x @gap_hlp_comm.c(986),INFO" ID="0x8b8e1ed5" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[GAP][MEMCPY_FAILED]CreateContext memcpy fail,ret=%d @gap_hlp_comm.c(1053),INFO" ID="0x8b8e20ed" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[GAP][LINK_ALREADY_EXISTS] REMOTE_ADDR=%02x:%02x:**:**:**:%02x @gap_hlp_comm.c(1091),INFO" ID="0x8b8e221d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[GAP]memcpy failed @gap_hlp_comm.c(1847),ERROR" ID="0x8b8e39ba" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[GAP]memcpy failed @gap_hlp_comm.c(1867),ERROR" ID="0x8b8e3a5a" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[GAP][LOCAL_DISC_REQ] REMOTE_ADDR=%02x:%02x:**:**:**:%02x, can't find acl link @gap_hlp_comm.c(2016),INFO" ID="0x8b8e3f05" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[GAP][LOCAL_DISC_REQ] REMOTE_ADDR=%02x:%02x:**:**:**:%02x, can't find acl link @gap_hlp_comm.c(2046),INFO" ID="0x8b8e3ff5" />
                        </MSG_LOG>
\ No newline at end of file
index 2d0bcaa..da45fb1 100644 (file)
@@ -1,17 +1,18 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="[GAP][RandAddrCfm][ERROR] gap_fsminst is NULL @gap_hlp_le.c(1227),INFO" ID="0x8b8c265d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[GAP][LE_MULTI_ADV] ACTION=UPDATE_MULTI_ADV_PARAM, RESULT=0x%x @gap_hlp_le.c(2059),INFO" ID="0x8b8c405d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[GAP][LE_MULTI_ADV] ACTION=UPDATE_MULTI_DATA, RESULT=0x%x @gap_hlp_le.c(2124),INFO" ID="0x8b8c4265" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[GAP][LE_MULTI_ADV] ACTION=UPDATE_MULTI_RANDOM_ADDR, RESULT=0x%x @gap_hlp_le.c(2166),INFO" ID="0x8b8c43b5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[GAP][LE_MULTI_ADV][ERROR] gap_fsminst is NULL @gap_hlp_le.c(2169),INFO" ID="0x8b8c43cd" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[GAP][LE_MULTI_ADV] ACTION=UPDATE_MULTIADV_ENABLE, RESULT=0x%x @gap_hlp_le.c(2235),INFO" ID="0x8b8c45dd" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="[GAP][LE_MULTI_ADV] ACTION=SET_MULTI_ADV_PARAM, SUB_CODE=%d, HANDLE=0x%x @gap_hlp_le.c(2313),INFO" ID="0x8b8c484d" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="[GAP][LE_MULTI_ADV] ACTION=SET_MULTI_ADV_DATA, SUB_CODE=%d, HANDLE=0x%x @gap_hlp_le.c(2345),INFO" ID="0x8b8c494d" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="[GAP][LE_MULTI_ADV] ACTION=SET_MULTI_RANDOM_ADDR, SUB_CODE=%d, HANDLE=0x%x @gap_hlp_le.c(2369),INFO" ID="0x8b8c4a0d" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[GAP][LE_MULTI_ADV] ACTION=SET_MULTI_ADV_ENABLE, SUB_CODE=%d, HANDLE=0x%x, ENABLE=%d @gap_hlp_le.c(2400),INFO" ID="0x8b8c4b05" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="[GAP] own_address_type = %x adv_event_flag = %x @gap_hlp_le.c(2553),INFO" ID="0x8b8c4fcd" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[GAP]set ext adv - BT init not complete!!! @gap_hlp_le.c(3073),WARNING" ID="0x8b8c600b" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[GAP]memcpy failed @gap_hlp_le.c(3525),ERROR" ID="0x8b8c6e2a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[GAP]memcpy failed @gap_hlp_le.c(3531),ERROR" ID="0x8b8c6e5a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[GAP]memcpy failed @gap_hlp_le.c(3539),ERROR" ID="0x8b8c6e9a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[GAP]memcpy failed @gap_hlp_le.c(3545),ERROR" ID="0x8b8c6eca" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg1" NAME="[GAP] smp cbk event:%d @gap_hlp_le.c(507),ERROR" ID="0x8b8c0fda" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[GAP][RandAddrCfm][ERROR] gap_fsminst is NULL @gap_hlp_le.c(1229),INFO" ID="0x8b8c266d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[GAP][LE_MULTI_ADV] ACTION=UPDATE_MULTI_ADV_PARAM, RESULT=0x%x @gap_hlp_le.c(2061),INFO" ID="0x8b8c406d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[GAP][LE_MULTI_ADV] ACTION=UPDATE_MULTI_DATA, RESULT=0x%x @gap_hlp_le.c(2126),INFO" ID="0x8b8c4275" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[GAP][LE_MULTI_ADV] ACTION=UPDATE_MULTI_RANDOM_ADDR, RESULT=0x%x @gap_hlp_le.c(2168),INFO" ID="0x8b8c43c5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[GAP][LE_MULTI_ADV][ERROR] gap_fsminst is NULL @gap_hlp_le.c(2171),INFO" ID="0x8b8c43dd" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[GAP][LE_MULTI_ADV] ACTION=UPDATE_MULTIADV_ENABLE, RESULT=0x%x @gap_hlp_le.c(2237),INFO" ID="0x8b8c45ed" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[GAP][LE_MULTI_ADV] ACTION=SET_MULTI_ADV_PARAM, SUB_CODE=%d, HANDLE=0x%x @gap_hlp_le.c(2315),INFO" ID="0x8b8c485d" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[GAP][LE_MULTI_ADV] ACTION=SET_MULTI_ADV_DATA, SUB_CODE=%d, HANDLE=0x%x @gap_hlp_le.c(2347),INFO" ID="0x8b8c495d" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[GAP][LE_MULTI_ADV] ACTION=SET_MULTI_RANDOM_ADDR, SUB_CODE=%d, HANDLE=0x%x @gap_hlp_le.c(2371),INFO" ID="0x8b8c4a1d" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[GAP][LE_MULTI_ADV] ACTION=SET_MULTI_ADV_ENABLE, SUB_CODE=%d, HANDLE=0x%x, ENABLE=%d @gap_hlp_le.c(2402),INFO" ID="0x8b8c4b15" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[GAP] own_address_type = %x adv_event_flag = %x @gap_hlp_le.c(2555),INFO" ID="0x8b8c4fdd" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[GAP]set ext adv - BT init not complete!!! @gap_hlp_le.c(3075),WARNING" ID="0x8b8c601b" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[GAP]memcpy failed @gap_hlp_le.c(3527),ERROR" ID="0x8b8c6e3a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[GAP]memcpy failed @gap_hlp_le.c(3533),ERROR" ID="0x8b8c6e6a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[GAP]memcpy failed @gap_hlp_le.c(3541),ERROR" ID="0x8b8c6eaa" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[GAP]memcpy failed @gap_hlp_le.c(3547),ERROR" ID="0x8b8c6eda" />
                        </MSG_LOG>
\ No newline at end of file
index ef7adc3..0bdff1a 100644 (file)
@@ -1,9 +1,12 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="[GAP][HCI]memcpy failed @hci_core_ram.c(158),ERROR" ID="0x8ba604f2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hci][len] %02x @hci_core_ram.c(888),INFO" ID="0x8ba61bc5" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[HCI][H--&gt;C] %02x @hci_core_ram.c(891),INFO" ID="0x8ba61bdd" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[T%x][TIMEOUT] OPCODE=0x%x, TIMER=0x%x @hci_core_ram.c(1239),WARNING" ID="0x8ba626bb" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="[TIMEOUT] OPCODE=0x%x, TIMER=0x%x @hci_core_ram.c(1243),WARNING" ID="0x8ba626db" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[MEMCPY_FAILED]RecvDataBuff Memcpy fail @hci_core_ram.c(1466),DBG" ID="0x8ba62dd6" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[MEMCPY_FAILED]RecvDataBuff Memcpy fail @hci_core_ram.c(1484),DBG" ID="0x8ba62e66" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[NO GLE]Gle %d! @hci_core_ram.c(1515),INFO" ID="0x8ba62f5d" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="[GAP][HCI]memcpy failed @hci_core_ram.c(165),ERROR" ID="0x8ba6052a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[HCI] cmd_opcode 0x%x @hci_core_ram.c(894),ERROR" ID="0x8ba61bf2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hci][len] %02x @hci_core_ram.c(897),INFO" ID="0x8ba61c0d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[HCI][H--&gt;C] %02x @hci_core_ram.c(900),INFO" ID="0x8ba61c25" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[T%x][TIMEOUT] OPCODE=0x%x, TIMER=0x%x @hci_core_ram.c(1248),WARNING" ID="0x8ba62703" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[HCI][TIMEOUT] OPCODE=0x%x, TIMER=0x%x @hci_core_ram.c(1252),ERROR" ID="0x8ba62722" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[MEMCPY_FAILED]RecvDataBuff Memcpy fail @hci_core_ram.c(1481),DBG" ID="0x8ba62e4e" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[MEMCPY_FAILED]RecvDataBuff Memcpy fail @hci_core_ram.c(1499),DBG" ID="0x8ba62ede" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[HCI][RX] external fsm buff overflow! fsm_limit=%lu @hci_core_ram.c(1536),ERROR" ID="0x8ba63002" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[HCI][RX]external fsm buff overflow! free buff opcode=0x%x @hci_core_ram.c(1541),ERROR" ID="0x8ba6302a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[NO GLE]Gle %d! @hci_core_ram.c(1573),INFO" ID="0x8ba6312d" />
                        </MSG_LOG>
\ No newline at end of file
index ea716cd..e9bfbf6 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(114),INFO" ID="0x8bda0395" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[HCI]memcpy error @hci_data_proc.c(372),ERROR" ID="0x8bda0ba2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[HCI]memcpy error @hci_data_proc.c(378),ERROR" ID="0x8bda0bd2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[HCI][RECV_ACL_DATA] CONN_HANDLE=0x%x, link not found @hci_data_proc.c(465),INFO" ID="0x8bda0e8d" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[HCI][H--&gt;C] OPCODE=0x%x, HANDLE=0x%x, LEN=%u @hci_data_proc.c(669),INFO" ID="0x8bda14ed" />
-                       <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(679),INFO" ID="0x8bda153d" />
-                       <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(685),WARNING" ID="0x8bda156b" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[HCI][H--&gt;C] OPCODE=0x%x, HANDLE=0x%x, LEN=%u @hci_data_proc.c(706),DBG" ID="0x8bda1616" />
-                       <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(711),DBG" ID="0x8bda163e" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[HCI][H--&gt;C] LEN=%u @hci_data_proc.c(726),DBG" ID="0x8bda16b6" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="[HCI][H--&gt;C] %02x %02x %02x %02x @hci_data_proc.c(732),DBG" ID="0x8bda16e6" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[HCI][H--&gt;C] %02x %02x %02x @hci_data_proc.c(737),DBG" ID="0x8bda170e" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="[HCI][H--&gt;C] %02x %02x @hci_data_proc.c(740),DBG" ID="0x8bda1726" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[HCI][H--&gt;C] %02x @hci_data_proc.c(742),DBG" ID="0x8bda1736" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[A2DP][HCI] a2dp_audio:first frame to btc, only for a2dp service. @hci_data_proc.c(761),INFO" ID="0x8bda17cd" />
+<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>
\ No newline at end of file
index 648aeab..fbf25fb 100644 (file)
@@ -1,3 +1,4 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg1" NAME="[HCI][LE_CONN_COMPLETE] STATUS=0x%x @hci_ev_le.c(408),INFO" ID="0x8ad00cc5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[HCI][LE_META_ISO_EV] it is iso event @hci_ev_le.c(527),INFO" ID="0x8ad0107d" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg3" NAME="[HCI][LE_CONN_COMPLETE] STATUS=0x%x role:%d conn_handle:%d @hci_ev_le.c(410),ERROR" ID="0x8ad00cd2" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="[HCI][LE_CONN_COMPLETE] addr=%02x******%02x%02x addr_type:%d @hci_ev_le.c(417),ERROR" ID="0x8ad00d0a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[HCI][LE_META_ISO_EV] it is iso event @hci_ev_le.c(536),INFO" ID="0x8ad010c5" />
                        </MSG_LOG>
\ No newline at end of file
index e060f24..720dfbc 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),WARNING" ID="0x8ba81053" />
+<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>
\ No newline at end of file
index 0e17c34..043c21b 100644 (file)
@@ -1,5 +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][CONN_COMPLETE] LINK_STATUS=0x%x, EVENT_STATUS=0x%x, CONN_HDL=0x%x @hci_link_br.c(489),INFO" ID="0x8bdc0f4d" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="[HCI][CONN_REQUEST] LINK_TYPE=0x%x, REMOTE_ADDR=%02x:%02x:**:**:**:%02x @hci_link_br.c(561),INFO" ID="0x8bdc118d" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="[HCI][REMOVE_LINK] REF_COUNT=%u, STATUS=%u @hci_link_br.c(646),INFO" ID="0x8bdc1435" />
+                       <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>
\ No newline at end of file
diff --git a/code/sdk/interim_binary/brandy/bt/build_hso_cfg/hso_database/xml/base/bt_core/hci_link_le.c.xml b/code/sdk/interim_binary/brandy/bt/build_hso_cfg/hso_database/xml/base/bt_core/hci_link_le.c.xml
new file mode 100644 (file)
index 0000000..7726db4
--- /dev/null
@@ -0,0 +1,2 @@
+<MSG_LOG><MSG STRUCTURE="diag_log_msg3" NAME="[HCI] create le connection addr:%02x******%02x%02x @hci_link_le.c(116),ERROR" ID="0x8ad603a2" />
+                       </MSG_LOG>
\ No newline at end of file
diff --git a/code/sdk/interim_binary/brandy/bt/build_hso_cfg/hso_database/xml/base/bt_core/ipc_irq.c.xml b/code/sdk/interim_binary/brandy/bt/build_hso_cfg/hso_database/xml/base/bt_core/ipc_irq.c.xml
new file mode 100644 (file)
index 0000000..d492b4a
--- /dev/null
@@ -0,0 +1,2 @@
+<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="mcu_int1_handler. @ipc_irq.c(74),ERROR" ID="0xa0600252" />
+                       </MSG_LOG>
\ No newline at end of file
index db94924..fc06735 100644 (file)
@@ -1,2 +1,2 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="[WARNING][BIS]create big prepare fail @llc_bis_hci_ram.c(79),WARNING" ID="0x8a60027b" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="[WARNING][BIS]create big prepare fail @llc_bis_hci_ram.c(79),WARNING" ID="0x8a64027b" />
                        </MSG_LOG>
\ No newline at end of file
index 6f0e8e2..53c2078 100644 (file)
@@ -1,2 +1,2 @@
-<MSG_LOG><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="0x8a5e01ad" />
+<MSG_LOG><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_LOG>
\ No newline at end of file
index 5129a41..aedb9ec 100644 (file)
@@ -1,2 +1,2 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg3" NAME="[PF][DUMP INFO] stack point: 0x%x, stack address: 0x%x, stack size: 0x%x @log_oml_exception.c(410),ERROR" ID="0xa0080cd2" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg3" NAME="[PF][DUMP INFO] stack point: 0x%x, stack address: 0x%x, stack size: 0x%x @log_oml_exception.c(411),ERROR" ID="0xa0080cda" />
                        </MSG_LOG>
\ No newline at end of file
index def1f92..abaece3 100644 (file)
@@ -1,8 +1,9 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="[BTOS][MEM_INTEGRITY_CHECK]Not support! @osdep.c(678),INFO" ID="0x8b981535" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[BTOS][MEM_NEW]ALLOC_SIZE=%u, alloc fail! @osdep.c(709),WARNING" ID="0x8b98162b" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[MEM_FREE][%d][0x%p], caller:0x%x  @osdep.c(746),INFO" ID="0x8b981755" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[BTOS][MEM_FREE]ERROR_CODE=%u, addr:0x%p, caller:0x%x free fail! @osdep.c(754),WARNING" ID="0x8b981793" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[BTOS][MEM_NEW]ALLOC_SIZE=%u, alloc fail! @osdep.c(767),WARNING" ID="0x8b9817fb" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[BTOS][MEM_FREE]ERROR_CODE=%u, addr:0x%p, caller:0x%x, free fail! @osdep.c(782),WARNING" ID="0x8b981873" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[BTOS][MEM_NEW_S]AVAILABLE_MEMORY=%u, alloc fail because under secure threshold size! @osdep.c(813),WARNING" ID="0x8b98196b" />
+<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_LOG>
\ No newline at end of file
index c1cf4a5..99ca52a 100644 (file)
@@ -1,2 +1,2 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="[INFO][DFX]dfx_bt_parse_debug_cmd:too many Parameter, quit parsing @patch_btdfx.c(50),INFO" ID="0x8a520195" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="[INFO][DFX]dfx_bt_parse_debug_cmd:too many Parameter, quit parsing @patch_btdfx.c(50),INFO" ID="0x8a560195" />
                        </MSG_LOG>
\ No newline at end of file
index 9f07411..85e002a 100644 (file)
@@ -1,4 +1,5 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="smp_pair_new_patch @patch_bth.c(42),INFO" ID="0x8d540155" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[AVDTP][GET_SEP_FAIL] Can not get sep info @patch_bth.c(146),WARNING" ID="0x8d540493" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[STACK][RECV_RING_STOP] @patch_bth.c(234),INFO" ID="0x8d540755" />
+<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>
\ No newline at end of file
index dddfc30..f17b4dd 100644 (file)
@@ -1,2 +1,2 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg4" NAME="ea_prog_time_set current_time(0x%x)finetarget_time(0x%x),finecnt(%d),finetgtintmsk(%d) @patch_ea.c(68),WARNING" ID="0x8a540223" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg4" NAME="ea_prog_time_set current_time(0x%x)finetarget_time(0x%x),finecnt(%d),finetgtintmsk(%d) @patch_ea.c(68),WARNING" ID="0x8a580223" />
                        </MSG_LOG>
\ No newline at end of file
index f07fb9d..02a4507 100644 (file)
@@ -1,2 +1,2 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg1" NAME="[LD]ld_acl_sched_update_ts ts=0x%x @patch_ld_acl.c(37),INFO" ID="0x8a64012d" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg1" NAME="[LD]ld_acl_sched_update_ts ts=0x%x @patch_ld_acl.c(37),INFO" ID="0x8a68012d" />
                        </MSG_LOG>
\ No newline at end of file
index fe553a9..cf9158d 100644 (file)
@@ -1,2 +1,2 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg1" NAME="rx_phy is %d @patch_llc.c(19),INFO" ID="0x8a5a009d" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg1" NAME="rx_phy is %d @patch_llc.c(19),INFO" ID="0x8a5e009d" />
                        </MSG_LOG>
\ No newline at end of file
index 86fb486..67e4fa3 100644 (file)
@@ -1,2 +1,2 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="[WARNING][BIS]lld_big_acad_ind_handle, biginfo unpack fail @patch_llc_bis_util.c(93),WARNING" ID="0x8a6202eb" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="[WARNING][BIS]lld_big_acad_ind_handle, biginfo unpack fail @patch_llc_bis_util.c(93),WARNING" ID="0x8a6602eb" />
                        </MSG_LOG>
\ No newline at end of file
diff --git a/code/sdk/interim_binary/brandy/bt/build_hso_cfg/hso_database/xml/base/bt_core/patch_llc_llcp.c.xml b/code/sdk/interim_binary/brandy/bt/build_hso_cfg/hso_database/xml/base/bt_core/patch_llc_llcp.c.xml
new file mode 100644 (file)
index 0000000..1ecab8a
--- /dev/null
@@ -0,0 +1,5 @@
+<MSG_LOG><MSG STRUCTURE="diag_log_msg2" NAME="[WARNING] llcp_channel_map_req_handler , INSTANT_REJECT, state=%d, mode=%d @patch_llc_llcp.c(42),WARNING" ID="0x8a520153" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[WARNING] llcp_channel_map_req_handler, INSTANT_COLLISION, map_instant_action %d instant_action %d @patch_llc_llcp.c(49),WARNING" ID="0x8a52018b" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="llcp_channel_map_req_handler, instant=%d, counter=%d, remote_device_id=%d @patch_llc_llcp.c(59),WARNING" ID="0x8a5201db" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[WARNING] llcp_channel_map_req_handler, INSTANT_PASSED, instant=%d, counter=%d @patch_llc_llcp.c(67),WARNING" ID="0x8a52021b" />
+                       </MSG_LOG>
\ No newline at end of file
index d3c08e7..fd1decc 100644 (file)
@@ -1,2 +1,2 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg4" NAME="[INFO][LLD]lld_bis_elt_ready:elt=0x%x,elt_ts=0x%x,intv=%d,duration_min=%d @patch_lld_bis.c(46),INFO" ID="0x8a560175" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg4" NAME="[INFO][LLD]lld_bis_elt_ready:elt=0x%x,elt_ts=0x%x,intv=%d,duration_min=%d @patch_lld_bis.c(46),INFO" ID="0x8a5a0175" />
                        </MSG_LOG>
\ No newline at end of file
index a6d92f0..20d9c77 100644 (file)
@@ -1,2 +1,2 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg3" NAME="[BIS]Invalid parameters finetimecnt:%d, iso_intv:%d, iso_subevtnum:%d @patch_lld_bis_evt.c(53),WARNING" ID="0x8a6c01ab" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg3" NAME="[BIS]Invalid parameters finetimecnt:%d, iso_intv:%d, iso_subevtnum:%d @patch_lld_bis_evt.c(53),WARNING" ID="0x8a7001ab" />
                        </MSG_LOG>
\ No newline at end of file
index fe3c011..852bea2 100644 (file)
@@ -1,5 +1,5 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="[WARNING][BIS]lld_bis_report_rxnode:No rx_report buff! @patch_lld_bis_pdu.c(27),WARNING" ID="0x8a6600db" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="[INFO][BIS]bis recombine:length=%d, recomb_flag=%d, pldcntr=%d, llid=%d @patch_lld_bis_pdu.c(58),WARNING" ID="0x8a6601d3" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[BIS]lld_bis_pdu_framed_rx_check:invalid middle pkt @patch_lld_bis_pdu.c(120),INFO" ID="0x8a6603c5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[BIS]lld_bis_pdu_framed_rx_check:invalid last pkt @patch_lld_bis_pdu.c(134),INFO" ID="0x8a660435" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="[WARNING][BIS]lld_bis_report_rxnode:No rx_report buff! @patch_lld_bis_pdu.c(27),WARNING" ID="0x8a6a00db" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="[INFO][BIS]bis recombine:length=%d, recomb_flag=%d, pldcntr=%d, llid=%d @patch_lld_bis_pdu.c(58),WARNING" ID="0x8a6a01d3" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[BIS]lld_bis_pdu_framed_rx_check:invalid middle pkt @patch_lld_bis_pdu.c(120),INFO" ID="0x8a6a03c5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[BIS]lld_bis_pdu_framed_rx_check:invalid last pkt @patch_lld_bis_pdu.c(134),INFO" ID="0x8a6a0435" />
                        </MSG_LOG>
\ No newline at end of file
index 616cab1..563f73f 100644 (file)
@@ -1,5 +1,5 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="lld_evt_defered_elt_handler,  test end @patch_lld_evt.c(141),WARNING" ID="0x8a5c046b" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[INFO][LLD]lld_evt_flush_common:elt is null @patch_lld_evt.c(212),INFO" ID="0x8a5c06a5" />
-                       <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="0x8a5c086d" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="current_elt-&gt;current_prio=%d, next_elt-&gt;current_prio=%d, llm_le_env.sync_state =%d @patch_lld_evt.c(271),INFO" ID="0x8a5c087d" />
+<MSG_LOG><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_msg3" NAME="current_elt-&gt;current_prio=%d, next_elt-&gt;current_prio=%d, llm_le_env.sync_state =%d @patch_lld_evt.c(271),INFO" ID="0x8a60087d" />
                        </MSG_LOG>
\ No newline at end of file
diff --git a/code/sdk/interim_binary/brandy/bt/build_hso_cfg/hso_database/xml/base/bt_core/patch_lld_pdu.c.xml b/code/sdk/interim_binary/brandy/bt/build_hso_cfg/hso_database/xml/base/bt_core/patch_lld_pdu.c.xml
new file mode 100644 (file)
index 0000000..6cdef53
--- /dev/null
@@ -0,0 +1,3 @@
+<MSG_LOG><MSG STRUCTURE="diag_log_msg4" NAME="[BLE ACL] conhdl=%d, status:0x%04x, length:%d, rxflush|rxdone|cie:%08x @patch_lld_pdu.c(44),INFO" ID="0x8a540165" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[BLE ACL] ccm 0x%x @patch_lld_pdu.c(45),INFO" ID="0x8a54016d" />
+                       </MSG_LOG>
\ No newline at end of file
index 9519276..e806e6c 100644 (file)
@@ -1,4 +1,4 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="[INFO][LLM]llm_ral_dev_add:ral is full @patch_llm_util.c(107),INFO" ID="0x8a6a035d" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="[INFO][LLM]llm_ral_dev_add:in_wl=%d, l_irk_valid=%d, p_irk_valid=%d, peer_id_addr_type=%d @patch_llm_util.c(133),INFO" ID="0x8a6a042d" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="[INFO][LLM]llm_ral_dev_add:peer_id_addr=0x%8x%4x, nbral=%d @patch_llm_util.c(139),INFO" ID="0x8a6a045d" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="[INFO][LLM]llm_ral_dev_add:ral is full @patch_llm_util.c(107),INFO" ID="0x8a6e035d" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="[INFO][LLM]llm_ral_dev_add:in_wl=%d, l_irk_valid=%d, p_irk_valid=%d, peer_id_addr_type=%d @patch_llm_util.c(133),INFO" ID="0x8a6e042d" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[INFO][LLM]llm_ral_dev_add:peer_id_addr=0x%8x%4x, nbral=%d @patch_llm_util.c(139),INFO" ID="0x8a6e045d" />
                        </MSG_LOG>
\ No newline at end of file
index eb1b6bb..14ad471 100644 (file)
@@ -1,2 +1,2 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg2" NAME="btsdk_is_device_connected hdl:0x%x status:%d @sdk_gap_conn_management.c(601),INFO" ID="0x8b8212cd" />
+<MSG_LOG><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_LOG>
\ No newline at end of file
index e4f7143..5b560d1 100644 (file)
@@ -1,18 +1,18 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="[sdk]gatt_get_descriptor_value memcpy failed @sdk_gatt.c(386),ERROR" ID="0x8b800c12" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatt_get_descriptor_value&#160;memcpy_s&#160;error @sdk_gatt.c(570),ERROR" ID="0x8b8011d2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt write characteristic mem_new failed @sdk_gatt.c(792),ERROR" ID="0x8b8018c2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt write characteristic memcpy failed @sdk_gatt.c(797),ERROR" ID="0x8b8018ea" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt write characteristic memcpy failed @sdk_gatt.c(806),ERROR" ID="0x8b801932" />
-                       <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(829),INFO" ID="0x8b8019ed" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="btsdk gatt get characteristic value by uuid start_handle:0x%x end_handle:0x%x @sdk_gatt.c(877),INFO" ID="0x8b801b6d" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="[sdk]gatt_get_descriptor_by_handle start_handle:0x%x end_handle:0x%x @sdk_gatt.c(900),INFO" ID="0x8b801c25" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[sdk]gatt_get_multiple_characteristics_by_handle handle_count:0x%x @sdk_gatt.c(921),INFO" ID="0x8b801ccd" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatt_set_gap_ui_attributes&#160;memcpy_s&#160;error @sdk_gatt.c(1199),ERROR" ID="0x8b80257a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatt_set_gap_ui_attributes&#160;memcpy_s&#160;error @sdk_gatt.c(1212),ERROR" ID="0x8b8025e2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatt_get_gap_ui_attributes&#160;memcpy_s&#160;error @sdk_gatt.c(1284),ERROR" ID="0x8b802822" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatt_send_response&#160;memcpy_s&#160;error @sdk_gatt.c(1882),ERROR" ID="0x8b803ad2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatt_change_descriptor_value&#160;memcpy_s&#160;error @sdk_gatt.c(1963),ERROR" ID="0x8b803d5a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatt_notify_characteristic_changed&#160;memcpy_s&#160;error @sdk_gatt.c(2008),ERROR" ID="0x8b803ec2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatt_notify_characteristic_changed&#160;memcpy_s&#160;error @sdk_gatt.c(2015),ERROR" ID="0x8b803efa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]can't find hdl by uuid @sdk_gatt.c(2206),ERROR" ID="0x8b8044f2" />
+<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="[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_LOG>
\ No newline at end of file
index da86876..481ab07 100644 (file)
@@ -1,37 +1,38 @@
 <MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="[SDK]convert uuid to sdk memcpy_s error @sdk_gatt_hlp.c(113),ERROR" ID="0x8da6038a" />
                        <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(574),ERROR" ID="0x8da611f2" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="[gatth_get_multiple_characteristics_value] rmt:0x%x mtu:0x%x @sdk_gatt_hlp.c(880),INFO" ID="0x8da61b85" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="[gatth_get_characteristics_by_uuid] start_handle:0x%x end_handle:0x%x @sdk_gatt_hlp.c(1013),INFO" ID="0x8da61fad" />
-                       <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(1056),INFO" ID="0x8da62105" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="gatth_set_reliable_characteristic_value in @sdk_gatt_hlp.c(1101),INFO" ID="0x8da6226d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[gatth_set_characteristic_value] memcpy failed @sdk_gatt_hlp.c(1138),ERROR" ID="0x8da62392" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt write characteristic rmt is NULL @sdk_gatt_hlp.c(1170),ERROR" ID="0x8da62492" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt write characteristic memcpy failed @sdk_gatt_hlp.c(1177),ERROR" ID="0x8da624ca" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="ble general gatt write characteristic tl is NULL @sdk_gatt_hlp.c(1191),ERROR" ID="0x8da6253a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[gatth_check_and_save_value] memcpy failed @sdk_gatt_hlp.c(1651),ERROR" ID="0x8da6339a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatth_server_execute_write_complete&#160;memcpy_s&#160;error @sdk_gatt_hlp.c(1748),ERROR" ID="0x8da636a2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatth_server_write_ind&#160;memcpy_s&#160;error @sdk_gatt_hlp.c(1892),ERROR" ID="0x8da63b22" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatth_server_write_ind&#160;memcpy_s&#160;error @sdk_gatt_hlp.c(1914),ERROR" ID="0x8da63bd2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatth_send_response&#160;memcpy_s&#160;error @sdk_gatt_hlp.c(2267),ERROR" ID="0x8da646da" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[SDK]gatth_notify_multiple_characteristic_changed&#160;memcpy_s&#160;error @sdk_gatt_hlp.c(2500),ERROR" ID="0x8da64e22" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att write ind data info mem new fail @sdk_gatt_hlp.c(2552),ERROR" ID="0x8da64fc2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att write ind data info service uuid memcpy fail @sdk_gatt_hlp.c(2562),ERROR" ID="0x8da65012" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att write ind data info attribute uuid memcpy fail @sdk_gatt_hlp.c(2567),ERROR" ID="0x8da6503a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att write ind data info addr memcpy fail @sdk_gatt_hlp.c(2572),ERROR" ID="0x8da65062" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att write ind data info val memcpy fail @sdk_gatt_hlp.c(2577),ERROR" ID="0x8da6508a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att write ind can't find service by service hdl @sdk_gatt_hlp.c(2623),ERROR" ID="0x8da651fa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att write pkt null @sdk_gatt_hlp.c(2629),ERROR" ID="0x8da6522a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att write ind can't find server cbk by server hdl @sdk_gatt_hlp.c(2636),ERROR" ID="0x8da65262" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att read ind data info mem new fail @sdk_gatt_hlp.c(2668),ERROR" ID="0x8da65362" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att read ind data info service uuid memcpy fail @sdk_gatt_hlp.c(2679),ERROR" ID="0x8da653ba" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att read ind data info attribute uuid memcpy fail @sdk_gatt_hlp.c(2684),ERROR" ID="0x8da653e2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att read ind data info addr memcpy fail @sdk_gatt_hlp.c(2689),ERROR" ID="0x8da6540a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att read ind data info val memcpy fail @sdk_gatt_hlp.c(2695),ERROR" ID="0x8da6543a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att read ind can't find service by service hdl @sdk_gatt_hlp.c(2715),ERROR" ID="0x8da654da" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att read pkt null @sdk_gatt_hlp.c(2721),ERROR" ID="0x8da6550a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]att read ind can't find server cbk by server hdl @sdk_gatt_hlp.c(2728),ERROR" ID="0x8da65542" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]write element @sdk_gatt_hlp.c(2765),INFO" ID="0x8da6566d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]read element @sdk_gatt_hlp.c(2769),INFO" ID="0x8da6568d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[sdk_gatt_hlp]write element free @sdk_gatt_hlp.c(2775),INFO" ID="0x8da656bd" />
+                       <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_LOG>
\ No newline at end of file
index f19cb41..fcab8d5 100644 (file)
@@ -1,9 +1,9 @@
 <MSG_LOG><MSG STRUCTURE="diag_log_msg1" NAME="hfp_handle_ev_disconnect_complete hdl=0x%x @sdk_hfp.c(202),INFO" ID="0x8b7e0655" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="hfp set active mem id: sco_hdl=0x%x in_mem=0x%x out_mem=0x%x @sdk_hfp.c(229),WARNING" ID="0x8b7e072b" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="hfp map mem id: sco_hdl=0x%x in_mem=0x%x out_mem=0x%x @sdk_hfp.c(236),INFO" ID="0x8b7e0765" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="hfp set active mem id: sco_hdl=0x%x in_mem=0x%x out_mem=0x%x @sdk_hfp.c(229),ERROR" ID="0x8b7e072a" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="hfp map mem id: sco_hdl=0x%x in_mem=0x%x out_mem=0x%x @sdk_hfp.c(236),ERROR" ID="0x8b7e0762" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="memory copy failed ret=0x%x @sdk_hfp.c(250),WARNING" ID="0x8b7e07d3" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="hfp map mem id: sco_hdl=0x%x in_mem=0x%x out_mem=0x%x @sdk_hfp.c(291),WARNING" ID="0x8b7e091b" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="SDK_HFP: send msg to mcu ev= 0x%x, role=0x%x @sdk_hfp.c(296),WARNING" ID="0x8b7e0943" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="hfp map mem id: sco_hdl=0x%x in_mem=0x%x out_mem=0x%x @sdk_hfp.c(291),ERROR" ID="0x8b7e091a" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="SDK_HFP: send msg to mcu ev= 0x%x, role=0x%x @sdk_hfp.c(296),ERROR" ID="0x8b7e0942" />
                        <MSG STRUCTURE="diag_log_msg2" NAME="SDK_HFP: ev disconnect, conn_cfm-&gt;role = %x, conn_cfm-&gt;result=%d @sdk_hfp.c(360),INFO" ID="0x8b7e0b45" />
                        <MSG STRUCTURE="diag_log_msg2" NAME="SDK_HFP: slc event = %d, slc_info-&gt;role = %x @sdk_hfp.c(388),INFO" ID="0x8b7e0c25" />
                        <MSG STRUCTURE="diag_log_msg2" NAME="[HFP][SDK]SLC RELEASED role=%d handle=0x%x @sdk_hfp.c(452),INFO" ID="0x8b7e0e25" />
index 5949061..af8daa1 100644 (file)
@@ -1,3 +1,6 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg1" NAME="hlp_link_key_req_cbk no source addr:0x%x @sdk_hlp.c(900),INFO" ID="0x8b7a1c25" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="hlp_connection_ev_cbk_dis_conn hdl:0x%x status:%d @sdk_hlp.c(2055),INFO" ID="0x8b7a403d" />
+<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>
\ No newline at end of file
diff --git a/code/sdk/interim_binary/brandy/bt/build_hso_cfg/hso_database/xml/base/bt_core/smp_ui.c.xml b/code/sdk/interim_binary/brandy/bt/build_hso_cfg/hso_database/xml/base/bt_core/smp_ui.c.xml
new file mode 100644 (file)
index 0000000..8c7cf10
--- /dev/null
@@ -0,0 +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>
\ No newline at end of file
index 3041023..bab79cb 100644 (file)
@@ -1,2 +1,2 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg1" NAME="sco disconnect complete sco_hdl=0x%x @tladapter.c(159),INFO" ID="0x8b9c04fd" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg1" NAME="sco disconnect complete sco_hdl=0x%x @tladapter.c(159),ERROR" ID="0x8b9c04fa" />
                        </MSG_LOG>
\ No newline at end of file
index e61fe55..1557c5e 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 8df753e..61b8bb2 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 861e04f..3f240ee 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 baac1e3..1a804b7 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 653fee4..f219767 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 50c5f68..b164a1f 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 3e0841b..1799e16 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 da48fbd..6fdd668 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
index 5d784c2..4b5183c 100644 (file)
@@ -11,6 +11,7 @@ set(SOURCES
     ${CMAKE_CURRENT_SOURCE_DIR}/last_dump_adapt.c
     ${CMAKE_CURRENT_SOURCE_DIR}/sample_data_adapt.c
     ${CMAKE_CURRENT_SOURCE_DIR}/zdiag_adapt_sdt.c
+    ${CMAKE_CURRENT_SOURCE_DIR}/mon_log_output.c
 )
 
 set(PUBLIC_HEADER
@@ -19,14 +20,27 @@ set(PUBLIC_HEADER
 )
 
 set(PRIVATE_HEADER
+    ${ROOT_DIR}/middleware/utils/dfx/diag_dfx_cmd/diag_system_cmd/include
+    ${ROOT_DIR}/middleware/utils/dfx/diag_dfx_cmd/diag_system_cmd/dfx_include
+    ${ROOT_DIR}/middleware/utils/dfx/diag_dfx_cmd/diag_mocked_shell/include
+    ${ROOT_DIR}/middleware/utils/dfx/diag_dfx_cmd/last_dump/dfx_include
+    ${ROOT_DIR}/middleware/utils/dfx/diag_dfx_cmd/last_dump/include
+    ${ROOT_DIR}/middleware/utils/dfx/diag_dfx_cmd/sample_data/dfx_include
+    ${ROOT_DIR}/middleware/utils/dfx/diag_dfx_cmd/sample_data/include
     ${ROOT_DIR}/include/middleware/services/bts
     ${ROOT_DIR}/include/middleware/services/bts/ble
     ${ROOT_DIR}/include/middleware/services/bts/br
     ${ROOT_DIR}/include/middleware/services/bts/common
 )
 
-set(PRIVATE_DEFINES
-)
+if("${TARGET_COMMAND}" MATCHES "-user$")
+    set(PRIVATE_DEFINES
+        USER_VERSION
+    )
+else()
+    set(PRIVATE_DEFINES
+    )
+endif()
 
 set(PUBLIC_DEFINES
 )
index b843c9f..f7a112a 100644 (file)
@@ -86,6 +86,8 @@
 #include "key_id.h"
 #endif
 
+#include "mon_log_output.h"
+
 #define DFX_MSG_TASK_PRIO       5
 
 const diag_cmd_reg_obj_t g_diag_default_cmd_tbl[] = {
@@ -108,8 +110,8 @@ const diag_cmd_reg_obj_t g_diag_default_cmd_tbl[] = {
     { DIAG_CMD_ID_DBG_STAT_QUERY, DIAG_CMD_ID_DBG_STAT_QUERY, diag_cmd_stat_query },
 };
 
-static unsigned long g_dfx_osal_queue_id;
-static unsigned long g_dfx_transmit_queue_id;
+static unsigned long g_dfx_osal_queue_id = DFX_INVALID_QUEUE_ID;
+static unsigned long g_dfx_transmit_queue_id = DFX_INVALID_QUEUE_ID;
 
 static errcode_t register_default_diag_cmd(void)
 {
@@ -412,6 +414,11 @@ errcode_t dfx_system_init(void)
     if (ret != ERRCODE_SUCC) {
         return ret;
     }
+#ifdef USER_VERSION
+    diag_highest_level_proc(DIAG_LOG_LEVEL_WARN);
+    mon_log_output_ctrl_init();
+    mon_log_output_enable(true);
+#endif
     return ERRCODE_SUCC;
 }
 
index e705c6d..90d4399 100644 (file)
@@ -24,6 +24,7 @@
 #include "debug_print.h"\r
 \r
 #define DFX_CHIP_WS_TV_SEC      1663739960\r
+#define DFX_INVALID_QUEUE_ID    0xFFFFFFFF\r
 \r
 typedef enum {\r
     FLASH_OP_TYPE_OTA,\r
@@ -101,6 +102,11 @@ static inline errcode_t dfx_event_write(dfx_event_id_t event_id)
 /* Msg 接口 */\r
 static inline errcode_t dfx_msg_write(uint32_t msg_id, uint8_t *msg, uint16_t msg_len, bool wait)\r
 {\r
+    unsigned long queue_id = dfx_get_osal_queue_id();\r
+    if (queue_id == DFX_INVALID_QUEUE_ID) {\r
+        return ERRCODE_FAIL;\r
+    }\r
+\r
     unsigned int timeout = (wait) ? OSAL_MSGQ_WAIT_FOREVER : 0;\r
     uint8_t msg_data[DFX_MSG_MAX_SIZE + DFX_MSG_ID_LEN];\r
 \r
@@ -110,7 +116,7 @@ static inline errcode_t dfx_msg_write(uint32_t msg_id, uint8_t *msg, uint16_t ms
         return ERRCODE_FAIL;\r
     }\r
 \r
-    return (errcode_t)osal_msg_queue_write_copy(dfx_get_osal_queue_id(),\r
+    return (errcode_t)osal_msg_queue_write_copy(queue_id,\r
                                                 msg_data, DFX_MSG_MAX_SIZE + DFX_MSG_ID_LEN, timeout);\r
 }\r
 \r
@@ -124,6 +130,10 @@ static inline errcode_t transmit_msg_write(uint32_t msg_id, uint8_t *msg, uint16
 #if (defined(MEMORY_MINI))\r
     return dfx_msg_write(msg_id, msg, msg_len, wait);\r
 #else\r
+    unsigned long queue_id = dfx_get_transmit_queue_id();\r
+    if (queue_id == DFX_INVALID_QUEUE_ID) {\r
+        return ERRCODE_FAIL;\r
+    }\r
     unsigned int timeout = (wait) ? OSAL_MSGQ_WAIT_FOREVER : 0;\r
     uint8_t msg_data[DFX_MSG_MAX_SIZE + DFX_MSG_ID_LEN];\r
 \r
@@ -133,7 +143,7 @@ static inline errcode_t transmit_msg_write(uint32_t msg_id, uint8_t *msg, uint16
         return ERRCODE_FAIL;\r
     }\r
 \r
-    return (errcode_t)osal_msg_queue_write_copy(dfx_get_transmit_queue_id(),\r
+    return (errcode_t)osal_msg_queue_write_copy(queue_id,\r
                                                 msg_data, DFX_MSG_MAX_SIZE + DFX_MSG_ID_LEN, timeout);\r
 #endif\r
 }\r
index 88b9344..8fed177 100644 (file)
@@ -214,6 +214,16 @@ typedef enum {
     SETDESKTOPMODEL_CPP,
     SETDESKTOPVIEW_CPP,
     SETDESKTOPPRESENTER_CPP,
+    DISPLAY_STATE_MACHINE_C,
+    POWER_DISPLAY_SERVICE_C,
+    GUI_EVENT_FILTER_C,
+    SLICE_EVENT_FILTER_C,
+    TIMER_EVENT_FILTER_C,
+    DISPLAY_ACTION_C,
+    TIMER_ACTION_C,
+    TOUCH_ACTION_C,
+    ALIPAY_FEATURE_C,
+    ALIPAY_BLUETOOTH_C,
     APP_FILE_ID_MAX = 1024,
 } log_file_list_enum_app_t;
 
index ac84170..2bc496e 100644 (file)
@@ -128,6 +128,10 @@ typedef enum {
     STACK_PAN_IF_C,
     STACK_PBAP_IF_C,
     STACK_SPP_IF_C,
+    SAMPLE_BLE_ANCS_C,
+    BLE_ANCS_CLIENT_C,
+    SAMPLE_BLE_AMS_C,
+    BLE_AMS_CLIENT_C,
     BTH_FILE_ID_MAX = 1024,
 } log_file_list_enum_bth_t;
 #endif
index fd6ffc4..df22386 100644 (file)
@@ -425,10 +425,15 @@ typedef enum {
     UI_KALEIDOSCOPE_VIEW_CPP,
     KALEIDOSCOPE_UTILS_CPP,
     UI_COVERFLOW_VIEW_CPP,
+    UI_ROLLER_VIEW_CPP,
+    UI_ICOSAHEDRON_VIEW_CPP,
     UI_MAP_VIEW_CPP,
     MAP_SVG_PARSER_CPP,
     SLICETRANSITION_CPP,
     TRANSITIONMANAGER_CPP,
+    UI_PINYIN_CANDIDATE_CPP,
+    HEXAGONSTRANSITION_CPP,
+    BACKTOHEXAGONSTRANSITION_CPP,
     FILE_ID_MAX = 1024,
 } log_file_list_enum_gui_t;
 #endif
index 98052e3..9a5c179 100644 (file)
@@ -78,6 +78,7 @@ typedef enum {
     DFX_CHANNEL_C,
     SAMPLE_DATA_ADAPT_C,
     ZDIAG_ADAPT_SDT_C,
+    MON_LOG_OUTPUT_C,
     DIAG_CMD_DST_C,
     DIAG_DEBUG_C,
     DIAG_FILTER_C,
index 57b76e2..47a0f8d 100644 (file)
@@ -7,7 +7,7 @@
 #ifndef ZDIAG_CONFIG_H\r
 #define ZDIAG_CONFIG_H\r
 \r
-#define DFX_OFFLINE_LOG_MUTI_FILE_NUM   20                      /* 离线日志最大文件个数 */\r
+#define DFX_OFFLINE_LOG_MUTI_FILE_NUM   5                       /* 离线日志最大文件个数 */\r
 #define DFX_OFFLINE_LOG_FILE_SIZE       (1024 * 1024)           /* 离线日志每个文件最大字节数 */\r
 #define DFX_OFFLINE_LOG_PATH            "/user/log/"            /* 离线日志存放路径 */\r
 #define DFX_OFFLINE_LOG_NAME            "log_file_diag.bin"     /* 离线日志文件名 */\r
diff --git a/code/sdk/middleware/chips/brandy/dfx/mon_log_output.c b/code/sdk/middleware/chips/brandy/dfx/mon_log_output.c
new file mode 100644 (file)
index 0000000..f145947
--- /dev/null
@@ -0,0 +1,113 @@
+/*
+ * Copyright (c) @CompanyNameMagicTag 2023-2023. All rights reserved. \n
+ * Description: log output monitor.
+ */
+
+#include <stdint.h>
+#include <stdbool.h>
+#include <log_module_id.h>
+#include <diag_log.h>
+#include <diag_msg.h>
+#include <osal_timer.h>
+#include "common_def.h"
+#include "mon_log_output.h"
+
+#ifdef __cplusplus
+#if __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+#endif /* __cplusplus */
+#define MODULEID_COUNT (MODULEID_BUTT + 2)
+STATIC uint32_t g_mon_logcnt_max[MODULEID_COUNT] = { 0,
+                                                     MAX_LOGCNT_BT,
+                                                     0,
+                                                     MAX_LOGCNT_DSP,
+                                                     MAX_LOGCNT_PF,
+                                                     MAX_LOGCNT_MEDIA,
+                                                     0,
+                                                     MAX_LOGCNT_APP,
+                                                     MAX_LOGCNT_GPU,
+                                                     MAX_LOGCNT_GUI,
+                                                     0,
+                                                     MAX_LOGCNT_BTH,
+                                                     MAX_LOGCNT_OHOS,
+                                                     0,
+                                                     MAX_LOGCNT_BT_STATUS,
+                                                     MAX_LOGCNT_BT_OTA };
+STATIC uint32_t g_mon_logcnt_ctrl[MODULEID_COUNT] = { 0 };
+STATIC osal_timer g_logcnt_timer = { 0 };
+STATIC bool g_logcnt_en = false;
+
+STATIC void mon_logcnt_enable(void)
+{
+    for (uint32_t i = 0; i < MODULEID_COUNT; i++) {
+        g_mon_logcnt_ctrl[i] = 0;
+    }
+
+    osal_timer_start(&g_logcnt_timer);
+}
+
+STATIC void mon_log_output_timer_alert(unsigned long data)
+{
+    unused(data);
+    mon_logcnt_enable();
+}
+
+STATIC bool mon_logcnt_process(uint8_t mid, uint8_t level)
+{
+    unused(level);
+    if (mid >= MODULEID_COUNT) {
+        return false;
+    }
+
+    if ((g_logcnt_en == true) && (g_mon_logcnt_max[mid] < g_mon_logcnt_ctrl[mid])) {
+        return false;
+    }
+
+    g_mon_logcnt_ctrl[mid]++;
+    return true;
+}
+
+void mon_log_output_ctrl_init(void)
+{
+    g_logcnt_timer.handler = mon_log_output_timer_alert;
+    g_logcnt_timer.data = 0;
+    g_logcnt_timer.interval = MON_LOG_CNT_CLEAR_TIMEOUT;
+
+    if (osal_timer_init(&g_logcnt_timer) < 0) {
+        uapi_diag_error_log(0, "Create logcnt timer failed!");
+        return;
+    }
+
+    /* register log file hook */
+    uapi_diag_register_msg_flow_control_hook(mon_logcnt_process);
+
+    osal_timer_start(&g_logcnt_timer);
+}
+
+uint32_t *mon_log_output_get_counter(void)
+{
+    return &g_mon_logcnt_ctrl;
+}
+
+void mon_log_output_enable(bool enable)
+{
+    if (g_logcnt_en == enable) {
+        return; /* Same settings, do nothing */
+    }
+
+    g_logcnt_en = enable;
+
+    if (enable == true) {
+        mon_logcnt_enable(); /* start over counting */
+    } else {
+        osal_timer_stop(&g_logcnt_timer); /* continue counting, but do not clear */
+    }
+}
+
+#ifdef __cplusplus
+#if __cplusplus
+}
+#endif /* __cplusplus */
+#endif /* __cplusplus */
+
diff --git a/code/sdk/middleware/chips/brandy/dfx/mon_log_output.h b/code/sdk/middleware/chips/brandy/dfx/mon_log_output.h
new file mode 100644 (file)
index 0000000..59c1a5a
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) @CompanyNameMagicTag 2023-2023. All rights reserved. \n
+ * Description: log output monitor.
+ */
+
+#ifndef MON_LOG_OUTPUT_H
+#define MON_LOG_OUTPUT_H
+
+#include "stdint.h"
+#include "stdbool.h"
+
+#ifdef __cplusplus
+#if __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+#endif /* __cplusplus */
+
+#define MON_LOG_CNT_CLEAR_TIMEOUT       (1000 * 60 * 15)  /* 15 min */
+#define MAX_LOGCNT_BT             9000
+#define MAX_LOGCNT_DSP            1000
+#define MAX_LOGCNT_PF             2000
+#define MAX_LOGCNT_MEDIA          1000
+#define MAX_LOGCNT_APP            5000
+#define MAX_LOGCNT_GPU            2000
+#define MAX_LOGCNT_GUI            1000
+#define MAX_LOGCNT_BTH            3000
+#define MAX_LOGCNT_OHOS           1000
+#define MAX_LOGCNT_BT_STATUS      3000
+#define MAX_LOGCNT_BT_OTA         3000
+
+void mon_log_output_ctrl_init(void);
+uint32_t *mon_log_output_get_counter(void);
+void mon_log_output_enable(bool enable);
+
+#ifdef __cplusplus
+#if __cplusplus
+}
+#endif /* __cplusplus */
+#endif /* __cplusplus */
+
+#endif
index 7b3c3c0..ea74ec4 100644 (file)
@@ -338,7 +338,9 @@ void diag_debug_cmd_proc(uint8_t *data, uint32_t len)
 void diag_auto_log_report_enable(void)\r
 {\r
     uint32_t level[] = {\r
+#ifndef USER_VERSION\r
         DIAG_LOG_LEVEL_DBG,\r
+#endif\r
         DIAG_LOG_LEVEL_INFO,\r
         DIAG_LOG_LEVEL_WARN,\r
         DIAG_LOG_LEVEL_ERROR,\r
@@ -354,6 +356,7 @@ void diag_auto_log_report_enable(void)
         LOG_OTA_MODULE,\r
         LOG_OHOSMODULE,\r
         LOG_BTHMODULE,\r
+        LOG_GPUMODULE,\r
     };\r
 \r
 #ifndef FT_SINGLE_UART\r
index 9e0d1e4..27c3625 100644 (file)
@@ -3,7 +3,6 @@
 # Copyright (c) @CompanyNameMagicTag 2022-2022. All rights reserved.
 #===============================================================================
 set(COMPONENT_NAME "dfx_exception")
-
 if(${ARCH_FAMILY} STREQUAL "arm")
     set(SOURCES
         ${CMAKE_CURRENT_SOURCE_DIR}/exception_arm.s
@@ -13,9 +12,13 @@ elseif (${ARCH_FAMILY} STREQUAL "riscv")
     set(SOURCES
         ${CMAKE_CURRENT_SOURCE_DIR}/exception_riscv.s
         ${CMAKE_CURRENT_SOURCE_DIR}/exception_riscv.c
+        ${CMAKE_CURRENT_SOURCE_DIR}/chip_system_time.c
+        ${CMAKE_CURRENT_SOURCE_DIR}/chip_exception_utils.c
+        ${CMAKE_CURRENT_SOURCE_DIR}/exception_dump.c
     )
 endif()
 
+
 set(PUBLIC_HEADER
     ${CMAKE_CURRENT_SOURCE_DIR}
 )
diff --git a/code/sdk/middleware/chips/brandy/exception/chip_exception_utils.c b/code/sdk/middleware/chips/brandy/exception/chip_exception_utils.c
new file mode 100644 (file)
index 0000000..0af3409
--- /dev/null
@@ -0,0 +1,35 @@
+/**
+ * Copyright (c) CompanyNameMagicTag 2023-2023. All rights reserved.
+ * Description: utils
+ * Author:
+ * Create:
+ */
+#include "chip_exception_utils.h"
+#include <stdbool.h>
+#include "hal_reboot.h"
+#include "chip_io.h"
+
+#define STATUS_ADDRESS  0x5702C1E8
+#define VBUS_INSERT_POS 4
+#define PWREN_PRESS_POS 3
+
+bool is_first_power_on(void)
+{
+    return hal_reboot_get_first_power_on_flag();
+}
+
+bool is_vbus_insert(void)
+{
+    if (reg32_getbit(STATUS_ADDRESS, VBUS_INSERT_POS)) {
+        return true;
+    }
+    return false;
+}
+
+bool is_pwren_press(void)
+{
+    if (reg32_getbit(STATUS_ADDRESS, PWREN_PRESS_POS)) {
+        return true;
+    }
+    return false;
+}
\ No newline at end of file
diff --git a/code/sdk/middleware/chips/brandy/exception/chip_exception_utils.h b/code/sdk/middleware/chips/brandy/exception/chip_exception_utils.h
new file mode 100644 (file)
index 0000000..2a7a679
--- /dev/null
@@ -0,0 +1,31 @@
+/**
+ * Copyright (c) CompanyNameMagicTag 2023-2023. All rights reserved.
+ * Description: utils
+ * Author:
+ * Create:
+ */
+#ifndef CHIP_EXCEPTION_UTILS_H
+#define CHIP_EXCEPTION_UTILS_H
+
+#include <stdio.h>
+#include <stdint.h>
+#include <stdbool.h>
+
+/**
+ * @brief Check if this is the first power-on since the device was battery-powered.
+ * @return true if this is the first power-on, false otherwise.
+ */
+bool is_first_power_on(void);
+
+/**
+ * @brief Check if the VBUS (power supply) is inserted.
+ * @return true if VBUS is inserted, false otherwise.
+ */
+bool is_vbus_insert(void);
+
+/**
+ * @brief Check if the power button (PWREN) is being pressed.
+ * @return true if PWREN is pressed, false otherwise.
+ */
+bool is_pwren_press(void);
+#endif
diff --git a/code/sdk/middleware/chips/brandy/exception/chip_system_time.c b/code/sdk/middleware/chips/brandy/exception/chip_system_time.c
new file mode 100644 (file)
index 0000000..36c2131
--- /dev/null
@@ -0,0 +1,152 @@
+/**
+ * Copyright (c) CompanyNameMagicTag 2023-2023. All rights reserved.
+ * Description: get time
+ * Author:
+ * Create:
+ */
+#ifndef BUILD_APPLICATION_SSB
+
+#include "chip_system_time.h"
+
+#define SECONDS_PER_MINUTE      60 /* second per minute */
+#define MINUTES_PER_HOUR        60   /* second per minute */
+#define MSEC_PER_SEC            1000
+#define USEC_PER_MSEC           1000
+#define TZ_ADDRESS              0x5702C014
+#define MAX_TIMEZONE_HOURS      24
+#define TIME_MAX                64
+
+void print_time(calendar_t *date)
+{
+    printf("CALLENDAR:year = %d, month = %d, day = %d, hour = %d, minute = %d, second = %d \r\n",
+        date->year,
+        date->mon,
+        date->day,
+        date->hour,
+        date->min,
+        date->sec);
+}
+
+void print_time_2(struct tm *date)
+{
+    printf("TM:year = %d, month = %d, day = %d, hour = %d, minute = %d, second = %d \r\n",
+        date->tm_year + 1900,
+        date->tm_mon,
+        date->tm_mday,
+        date->tm_hour,
+        date->tm_min,
+        date->tm_sec);
+}
+
+static uint16_t get_timezone(void)
+{
+    return readw(TZ_ADDRESS) & 0x00FF;
+}
+
+static void set_timezone(uint16_t timezone)
+{
+    uint16_t tz_zone = readw(TZ_ADDRESS) & 0xFF00;
+    tz_zone = tz_zone | timezone;
+    writew(TZ_ADDRESS, tz_zone);
+}
+
+void save_time(void)
+{
+    uint64_t time_sec = get_local_timestamp();
+    time_sec = time_sec * MSEC_PER_SEC;
+    uapi_calendar_set_timestamp(time_sec);
+}
+
+uint32_t get_current_timestamp(void)
+{
+    uint32_t timestamp = 0;
+    struct timeval current_time = {0};
+    if (gettimeofday(&current_time, NULL)) {
+        return 0;
+    }
+    struct tm tm;
+    localtime_r(&current_time.tv_sec, &tm);
+    timestamp = (uint32_t)current_time.tv_sec;
+    return timestamp;
+}
+
+uint32_t get_local_timestamp(void)
+{
+    uint32_t timestamp = get_current_timestamp() + get_timezone() * MINUTES_PER_HOUR * SECONDS_PER_MINUTE;
+    return timestamp;
+}
+
+void get_current_time(struct timeval *tv, struct tm *tm)
+{
+    char timebuf[TIME_MAX] = {0};
+    if (gettimeofday(tv, NULL)) {
+        return;
+    }
+    localtime_r(&tv->tv_sec, tm);
+    tm->tm_mon = tm->tm_mon + 1;
+    printf("get_current_time tv_tv_sec = %d \r\n", tv->tv_sec);
+    print_time_2(tm);
+}
+
+void restore_time(void)
+{
+    uapi_ulp_systick_soc_calibration();
+    calendar_t date;
+    uapi_calendar_get_datetime(&date);
+    print_time(&date);
+    uint64_t sec;
+    uapi_calendar_get_timestamp(&sec);
+    printf("callendar timestamp = %lld \r\n", sec);
+    sec = sec / MSEC_PER_SEC;
+    sync_time(sec, get_timezone());
+}
+
+uint32_t sync_time(uint32_t timestamp, uint32_t timezone)
+{
+    printf("sync time timestamp %d, timezone %d \r\n", timestamp, timezone);
+    uint32_t seconds;
+    if (timezone > MAX_TIMEZONE_HOURS) {
+        return ERRCODE_FAIL;
+    }
+    if (timestamp == 0) {
+        return ERRCODE_FAIL;
+    } else if (timestamp <= (timezone * MINUTES_PER_HOUR * SECONDS_PER_MINUTE)) {
+        seconds = 0;
+    } else {
+        seconds = timestamp - (timezone * MINUTES_PER_HOUR * SECONDS_PER_MINUTE);
+    }
+    set_timezone(timezone);
+    struct timeval tv = {0};
+    struct timezone tzone = {0};
+    tv.tv_sec = seconds;
+    tv.tv_usec = 0;
+    tzone.tz_dsttime = 0;
+    tzone.tz_minuteswest = timezone * MINUTES_PER_HOUR;
+    return settimeofday(&tv, &tzone);
+}
+
+void test_bandy_time(void)
+{
+    struct tm tm;
+    struct timeval tv;
+    uint32_t time = 1716044461;  // 2024-5-18 15:1:1
+    printf("--------SYNC TIME----------\r\n");
+    get_current_timestamp();
+    get_current_time(&tv, &tm);
+    sync_time(time, 8);
+    get_current_timestamp();
+    get_current_time(&tv, &tm);
+    printf("--------SAVE TIME----------\r\n");
+    get_current_timestamp();
+    get_current_time(&tv, &tm);
+    save_time();
+    get_current_timestamp();
+    get_current_time(&tv, &tm);
+    printf("--------RESTORE TIME----------\r\n");
+    get_current_timestamp();
+    get_current_time(&tv, &tm);
+    restore_time();
+    get_current_timestamp();
+    get_current_time(&tv, &tm);
+}
+#endif
\ No newline at end of file
diff --git a/code/sdk/middleware/chips/brandy/exception/chip_system_time.h b/code/sdk/middleware/chips/brandy/exception/chip_system_time.h
new file mode 100644 (file)
index 0000000..d2f2e77
--- /dev/null
@@ -0,0 +1,67 @@
+/**
+ * Copyright (c) CompanyNameMagicTag 2023-2023. All rights reserved.
+ * Description: time
+ * Author:
+ * Create:
+ */
+#ifndef CHIP_SYSTEM_TIME_H
+#define CHIP_SYSTEM_TIME_H
+
+#ifndef BUILD_APPLICATION_SSB
+#include <stdio.h>
+#include <stdint.h>
+#include <stdbool.h>
+#include "calendar.h"
+#include "chip_io.h"
+#include "errcode.h"
+#include "time.h"
+#include "sys/time.h"
+/**
+ * @brief  Print the time represented by the given calendar date
+ * @return void.
+ */
+void print_time(calendar_t *date);
+
+/**
+ * @brief  Save the current system time to non-volatile memory
+ * @return void.
+ */
+void save_time(void);
+
+/**
+ * @brief  Get the current system time as a Unix timestamp
+ * @return void.
+ */
+uint32_t get_current_timestamp(void);
+
+/**
+ * @brief  Get the current system time as a timeval struct and a tm
+ * @return void.
+ */
+void get_current_time(struct timeval *tv, struct tm *tm);
+
+/**
+ * @brief  Restore the system time from the saved non-volatile
+ * @return void.
+ */
+void restore_time(void);
+
+/**
+ * @brief  Synchronize the system time with the given timestamp and timezone
+ * @return void.
+ */
+uint32_t sync_time(uint32_t timestamp, uint32_t timezone);
+
+/**
+ * @brief  use for test
+ * @return void.
+ */
+void test_time(void);
+
+/**
+ * @brief  Get the current system time as a local timestamp with timezone offset
+ * @return void.
+ */
+uint32_t get_local_timestamp(void);
+#endif
+#endif
\ No newline at end of file
diff --git a/code/sdk/middleware/chips/brandy/exception/exception_dump.c b/code/sdk/middleware/chips/brandy/exception/exception_dump.c
new file mode 100644 (file)
index 0000000..6d42aea
--- /dev/null
@@ -0,0 +1,99 @@
+/**
+ * Copyright (c) CompanyNameMagicTag 2023-2023. All rights reserved.
+ * Description: dump
+ * Author:
+ * Create:
+ */
+#include "exception_dump.h"
+#include <stdio.h>
+#include <string.h>
+#include "exception.h"
+#include "memory_config.h"
+#include "time.h"
+#include "sys/time.h"
+#include "chip_io.h"
+#ifdef CFG_DRIVERS_NANDFLASH
+#include "nandflash_config.h"
+
+#define PSRAM_DUMP_TO_FILE_LENGTH   0x40000  // 256KB
+
+void exception_dump_memory_to_file(char *file_name, uint32_t dump_time, uintptr_t startAddr, uint32_t length)
+{
+    char *str = (char *)malloc(200);
+    memset_s(str, 200, 0, 200);
+    sprintf(str, file_name, dump_time);
+    exc_info_write(str, 0, (const uint8_t *)startAddr, length);
+}
+
+typedef struct {
+    char *name;
+    uintptr_t start_addr;
+    uint32_t len;
+} mem_dump_to_file_t;
+
+static const mem_dump_to_file_t g_mem_dump_to_file_info[] = {
+    {"/user/exc/APP_DTCM_ORIGIN_%d.bin", APP_DTCM_ORIGIN, APP_DTCM_LENGTH},
+    {"/user/exc/MCPU_TRACE_MEM_REGION_%d.bin", MCPU_TRACE_MEM_REGION_START, CPU_TRACE_MEM_REGION_LENGTH},
+    {"/user/exc/PSRAM_ORIGIN_%d.bin", PSRAM_APP_DATA_ADDR, PSRAM_DUMP_TO_FILE_LENGTH},
+};
+
+void dump_mem_to_file(uint32_t time_sec)
+{
+    uint16_t count = (uint16_t)(sizeof(g_mem_dump_to_file_info) / sizeof(mem_dump_to_file_t));
+    for (uint8_t i = 0; i < count; i++) {
+        exception_dump_memory_to_file(g_mem_dump_to_file_info[i].name,
+            time_sec,
+            g_mem_dump_to_file_info[i].start_addr,
+            g_mem_dump_to_file_info[i].len);
+    }
+}
+#endif
+
+#ifdef CFG_DUMP_REG_SUPPORT
+char *g_regist_str  = "[PMU1_B_SOC_PWR_EN_REG %x, %x]\r\n
+                     [PMU1_BT_CBB_PWR_EN_REG %x, %x]\r\n
+                     [PMU1_BMEM_PWR_EN_REG %x, %x]\r\n
+                     [PMU1_BT_EM_PWR_EN_REG %x, %x]\r\n
+                     [PMU1_MCU_HS_PWR_EN_REG %x, %x]\r\n
+                     [PMU1_DSUB_PWR_EN_REG %x, %x]\r\n
+                     [PMU1_ASUB_PWR_EN_REG %x, %x]\r\n
+                     [PMU1_S_EGPIO_PWR_EN_REG %x, %x]\r\n
+                     [PMU1_BT_RF_PWR_EN_REG %x, %x]\r\n
+                     [PMU1_MCU_PWR_EN_REG %x, %x]\r\n
+                     [PMU1_MEM_PWR_EN_REG %x, %x]\r\n
+                     [PMU1_COM_PWR_EN_REG %x, %x]";
+static const char *g_reg_path = "/user/exc/reg_path%d.txt";
+
+void dump_reg_to_file(uint32_t time_sec)
+{
+    char *file_name = (char *)malloc(100);
+    sprintf(file_name, g_reg_path, time_sec);
+    char *str = (char *)malloc(500);
+    uint32_t ctrl_base = 0x57004000;
+    sprintf(str, g_regist_str,
+                  ctrl_base + 0x20,  readl(ctrl_base + 0x20),
+                  ctrl_base + 0x24,  readl(ctrl_base + 0x24),
+                  ctrl_base + 0x28,  readl(ctrl_base + 0x28),
+                  ctrl_base + 0x2c,  readl(ctrl_base + 0x2c),
+                  ctrl_base + 0x30,  readl(ctrl_base + 0x30),
+                  ctrl_base + 0x34,  readl(ctrl_base + 0x34),
+                  ctrl_base + 0x38,  readl(ctrl_base + 0x38),
+                  ctrl_base + 0x5c,  readl(ctrl_base + 0x5c),
+                  ctrl_base + 0x60,  readl(ctrl_base + 0x60),
+                  ctrl_base + 0x64,  readl(ctrl_base + 0x64),
+                  ctrl_base + 0x68,  readl(ctrl_base + 0x68),
+                  ctrl_base + 0x78,  readl(ctrl_base + 0x78));
+    exc_info_write(file_name, 0, (uint8_t *)str, strlen(str));
+}
+#endif
+
+void dump_all_to_file(void)
+{
+    uint32_t timestamp = get_local_timestamp();
+#ifdef CFG_DRIVERS_NANDFLASH
+    dump_mem_to_file(timestamp);
+#endif
+#ifdef CFG_DUMP_REG_SUPPORT
+    dump_reg_to_file(timestamp);
+#endif
+}
\ No newline at end of file
diff --git a/code/sdk/middleware/chips/brandy/exception/exception_dump.h b/code/sdk/middleware/chips/brandy/exception/exception_dump.h
new file mode 100644 (file)
index 0000000..e375ec1
--- /dev/null
@@ -0,0 +1,16 @@
+/**
+ * Copyright (c) CompanyNameMagicTag 2023-2023. All rights reserved.
+ * Description: dump
+ * Author:
+ * Create:
+ */
+#ifndef EXCEPTION_DUMP_H
+#define EXCEPTION_DUMP_H
+
+/**
+ * @brief  support nandflash storage dump sysmem to file.
+ * @return void.
+ */
+void dump_all_to_file(void);
+
+#endif
\ No newline at end of file
index d618a8a..0a0e6d1 100644 (file)
@@ -13,6 +13,8 @@
 #include "non_os_reboot.h"\r
 #include "watchdog_porting.h"\r
 #include "flash.h"\r
+#include "exception_dump.h"\r
+\r
 #if defined(BUILD_APPLICATION_STANDARD) && !defined(BUILD_RECOVERY_IMAGE)\r
 #include "nv.h"\r
 #endif\r
@@ -137,12 +139,7 @@ static const char *g_exc_info_path = "/user/exc/exc_info.bin";
 static volatile uint32_t g_bt_nmi_reboot = 0;\r
 static volatile uint32_t g_bt_nmi_mask = 0;\r
 #endif\r
-#if MASTER_BY_BRANDY_ONLY\r
-#define PM_SLEEP_SOFT_RESET_FORCE_WKUP_REG 0x57000014\r
-#define PM_SLEEP_SOFT_RESET_FORCE_WKUP_VAL 0xb66\r
-#define PM_MCU_SEND_IPC_WKUP_BT_REG        0x52000034\r
-#define PM_MCU_SEND_IPC_WKUP_BT_BIT        0x1\r
-#endif\r
+\r
 \r
 bool get_exception_status(void)\r
 {\r
@@ -833,6 +830,7 @@ static errcode_t exc_info_write_local(exc_info_save_t *exc_info_save, uint32_t e
     nand_driver_init(SPEED_SLOW);\r
     set_trans_type(TRANS_BY_CPU_SINGLE_LINE);\r
     ret = exc_info_write(g_exc_info_path, 0, (const uint8_t *)exc_info_save, exc_size);\r
+    dump_all_to_file();\r
 #endif\r
 #ifdef CFG_DRIVERS_MMC\r
     char *exc_info_buffer = (char *)osal_kmalloc_align(ONE_SECTOR_SIZE, 0, MMC_BUFFER_ALIGN);\r
@@ -921,7 +919,7 @@ void do_hard_fault_handler(exc_context_t *exc_buf_addr)
     uapi_flash_switch_to_xip_mode(CHIP_FLASH_ID);\r
 #if (CORE == MASTER_BY_ALL) && (CORE != WIFI)\r
     if (g_is_repeat_exc == true) {\r
-        cpu_utils_reset_chip_with_log((cores_t)MASTER_BY_ALL, REBOOT_CAUSE_APPLICATION_HARDFAULT);\r
+        cpu_utils_reset_chip_with_log((cores_t)MASTER_BY_ALL, REBOOT_CAUSE_APPLICATION_SECOND_FAULT);\r
     }\r
     /* If the process is restarted at the end of an abnormal process, the value of this variable is false. */\r
     /* Do not need to manually set false at the end. */\r
@@ -979,11 +977,6 @@ void reset_deal_with_fs(void)
 static void deal_with_exception(exc_context_t *exc_buf_addr, uint32_t exc_type, reboot_cause_t reset_cause)\r
 {\r
     UNUSED(reset_cause);\r
-#if MASTER_BY_BRANDY_ONLY\r
-    // when bt at sleep, need wkup bt before soft reset\r
-    writew(PM_SLEEP_SOFT_RESET_FORCE_WKUP_REG, PM_SLEEP_SOFT_RESET_FORCE_WKUP_VAL);\r
-    reg16_setbit(PM_MCU_SEND_IPC_WKUP_BT_REG, PM_MCU_SEND_IPC_WKUP_BT_BIT);\r
-#endif\r
 #if defined(BUILD_APPLICATION_STANDARD) && (CORE == MASTER_BY_ALL)\r
     set_exception_time_stamp();\r
     // Record the reason before wait, so apps can get the reason.\r
diff --git a/code/sdk/middleware/chips/brandy/nv/nv_config/cfg/eng/acore/app.json b/code/sdk/middleware/chips/brandy/nv/nv_config/cfg/eng/acore/app.json
new file mode 100644 (file)
index 0000000..e71b832
--- /dev/null
@@ -0,0 +1,92 @@
+{
+    "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]]
+        }
+    }
+}
diff --git a/code/sdk/middleware/chips/brandy/nv/nv_config/cfg/user/acore/app.json b/code/sdk/middleware/chips/brandy/nv/nv_config/cfg/user/acore/app.json
new file mode 100644 (file)
index 0000000..11a5df8
--- /dev/null
@@ -0,0 +1,92 @@
+{
+    "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": 1
+        },
+        "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 8338219..7343313 100644 (file)
@@ -40,6 +40,7 @@ typedef enum {
     PM_ID_TOUCH,
     PM_ID_JPEG,
     PM_ID_JS,
+    PM_ID_MSGCENTER,
     PM_ID_MAX,
 } pm_id_t;
 
index fffa3d3..c32fc63 100644 (file)
@@ -211,8 +211,8 @@ void pm_core_resume_min(void)
     clocks_system_resume_clock();
     uapi_dma_init();
     uapi_dma_open();
+    cpu_trace_enable_mcpu_repeat();
     storage_device_resume();
-
     reg16_setbit(0x520003e4, 0x0); // set mcpu_clken_slp in MSUB_SLP_CFG
     reg16_setbit(0x520003e4, 0x1); // set mcpu_hclken_slp in MSUB_SLP_CFG
     clocks_auto_cg_config();
index 71da1bb..4d58f18 100644 (file)
 #define PM_SLEEP_SEL_EVENT            0x777
 #define PM_SLEEP_TRACE_DEF_VAL        0x5a5a
 #define PM_OS_US_TO_MS                  1000
-#define PM_SLEEP_SOFT_RESET_FORCE_WKUP_REG 0x57000014
-#define PM_SLEEP_SOFT_RESET_FORCE_WKUP_VAL 0xb66
-#define PM_MCU_SEND_IPC_WKUP_BT_REG        0x52000034
-#define PM_MCU_SEND_IPC_WKUP_BT_VAL        0x2
-#define BT_RESET_DELAY  10
 
 enum {
     PM_SLEEP_STATE_IDLE,
@@ -176,9 +171,6 @@ void pm_enter_deep_sleep_wfi(void)
 
 void pm_wkup_event_by_ulp_callback(void)
 {
-    writew(PM_SLEEP_SOFT_RESET_FORCE_WKUP_REG, PM_SLEEP_SOFT_RESET_FORCE_WKUP_VAL);
-    writew(PM_MCU_SEND_IPC_WKUP_BT_REG, PM_MCU_SEND_IPC_WKUP_BT_VAL);
-    uapi_tcxo_delay_ms(BT_RESET_DELAY);
     set_cpu_utils_reset_cause(REBOOT_CAUSE_APPLICATION_SYSRESETREQ);
     hal_reboot_chip();
 }
index 524e670..b414a90 100644 (file)
 
 #define MS_ID_ADDR                         0xF8
 #define CHIP_ID_ADDR                       OTP_CHIP_ID_START
-#define TCXO_REBOOT_DELAY                  500ULL
-#define PM_SLEEP_SOFT_RESET_FORCE_WKUP_REG 0x57000014
-#define PM_SLEEP_SOFT_RESET_FORCE_WKUP_VAL 0xb66
-#define PM_MCU_SEND_IPC_WKUP_BT_REG        0x52000034
-#define PM_MCU_SEND_IPC_WKUP_BT_VAL        0x2
 #define SUB_RSA4096_PUBKEY_N_OFFSET        24
 
 #define uapi_array_size(_array)  (sizeof(_array) / sizeof((_array)[0]))
@@ -187,11 +182,6 @@ errcode_t upg_get_fota_partiton_area_addr(uint32_t *start_address, uint32_t *siz
  */
 void upg_reboot(void)
 {
-    // when bt at sleep, need wkup bt before soft reset
-    writew(PM_SLEEP_SOFT_RESET_FORCE_WKUP_REG, PM_SLEEP_SOFT_RESET_FORCE_WKUP_VAL);
-    writew(PM_MCU_SEND_IPC_WKUP_BT_REG, PM_MCU_SEND_IPC_WKUP_BT_VAL);
-    /* 重启前睡眠500ms */
-    uapi_tcxo_delay_ms((uint64_t)TCXO_REBOOT_DELAY);
     cpu_utils_set_system_status_by_cause(REBOOT_CAUSE_UPG_COMPLETION);
     hal_reboot_chip();
 }
index 418dcd1..18775ee 100644 (file)
@@ -30,7 +30,6 @@ static td_void dpu_hal_reg_unmap(void)
 {\r
     if (g_dpu_reg != TD_NULL) {\r
         osal_iounmap((void *)g_dpu_reg, sizeof(dpu_regs_type));\r
-        g_dpu_reg = TD_NULL;\r
     }\r
     return;\r
 }\r
index 910a651..76d7580 100644 (file)
@@ -32,6 +32,16 @@ static td_s32 drv_dpu_close(td_void *private_data)
     return EXT_SUCCESS;\r
 }\r
 \r
+static td_void drv_dpu_set_suspend_flag(td_bool flag)\r
+{\r
+    unsigned long flags = 0;\r
+    dpu_disp_info *disp_info = dpu_disp_get_info();\r
+\r
+    osal_spin_lock_irqsave(&disp_info->disp_lock, &flags);\r
+    g_dpu_suspend_flag = flag;\r
+    osal_spin_unlock_irqrestore(&disp_info->disp_lock, &flags);\r
+}\r
+\r
 td_s32 drv_dpu_suspend(td_void *private_data)\r
 {\r
     uapi_unused(private_data);\r
@@ -40,16 +50,18 @@ td_s32 drv_dpu_suspend(td_void *private_data)
         return EXT_SUCCESS;\r
     }\r
 \r
+    td_s32 ret = dpu_wait_all_finish();\r
+\r
     dpu_dfx_info *dfx_info = dpu_dfx_get_info();\r
     dfx_info->suspend_cnt++;\r
 \r
     dpu_dbg("dpu suspend start");\r
     dpu_hal_deinit();\r
     dpu_layer_suspend();\r
-    g_dpu_suspend_flag = TD_TRUE;\r
+    drv_dpu_set_suspend_flag(TD_TRUE);\r
     dpu_dbg("dpu suspend ok");\r
 \r
-    return EXT_SUCCESS;\r
+    return ret;\r
 }\r
 \r
 td_s32 drv_dpu_resume(td_void *private_data)\r
@@ -67,7 +79,7 @@ td_s32 drv_dpu_resume(td_void *private_data)
     dpu_hal_init();\r
     dpu_layer_resume();\r
     dpu_disp_chl_cfg();\r
-    g_dpu_suspend_flag = TD_FALSE;\r
+    drv_dpu_set_suspend_flag(TD_FALSE);\r
     dpu_dbg("dpu resume ok");\r
 \r
     return EXT_SUCCESS;\r
index e0cef8e..03446a4 100644 (file)
@@ -151,10 +151,13 @@ td_void dpu_isr_deinit(void)
 td_void dpu_isr_wait_finish(void)\r
 {\r
     td_s32 ret;\r
+    dpu_dfx_info *dfx_info = dpu_dfx_get_info();\r
 \r
     ret = osal_wait_timeout_interruptible(&g_dpu_isr_info.finish_event,\r
                                           isr_get_finish_done, TD_NULL, 500); /* 500 ms */\r
     if (ret <= 0) {\r
+        dfx_info->refresh_total = 0;\r
+        dfx_info->frm_done_total = 0;\r
         dpu_err("osal_wait_timeout!!!!");\r
         return;\r
     }\r
@@ -182,3 +185,26 @@ td_void dpu_isr_clear_finish_flag(void)
 {\r
     g_dpu_isr_info.finish_done = 0;\r
 }\r
+\r
+td_s32 dpu_wait_all_finish(td_void)\r
+{\r
+    unsigned long flag = 0;\r
+    dpu_dfx_info *dfx_info = dpu_dfx_get_info();\r
+    const td_u32 wait_time = 200;\r
+    td_u32 cnt = 0;\r
+\r
+    while (cnt++ < wait_time) {\r
+        osal_spin_lock_irqsave(&g_dpu_isr_info.isr_lock, &flag);\r
+        if (dfx_info->refresh_total == dfx_info->frm_done_total) {\r
+            osal_spin_unlock_irqrestore(&g_dpu_isr_info.isr_lock, &flag);\r
+            break;\r
+        }\r
+        osal_spin_unlock_irqrestore(&g_dpu_isr_info.isr_lock, &flag);\r
+        osal_udelay(100); // 100us\r
+    }\r
+    if (cnt >= wait_time) {\r
+        dpu_err("dpu_wait_all_finish timeout!!!!");\r
+        return EXT_FAILURE;\r
+    }\r
+    return EXT_SUCCESS;\r
+}\r
index b8ab241..4dedbc6 100644 (file)
@@ -21,6 +21,7 @@ td_void dpu_isr_deinit(void);
 td_void dpu_isr_wait_finish(void);\r
 td_void dpu_isr_wait_te_signal(void);\r
 td_void dpu_isr_clear_finish_flag(void);\r
+td_s32 dpu_wait_all_finish(td_void);\r
 \r
 #ifdef __cplusplus\r
 #if __cplusplus\r
index b4268d1..02439a8 100644 (file)
@@ -50,6 +50,8 @@ typedef struct {
     td_float start_cost;
     td_float get_status_cost;
     td_float init_cost;
+    td_u32 create_cnt;
+    td_u32 destroy_cnt;
 } drv_jpeg_dfx_info;
 
 
index a3f8e7a..de4d115 100644 (file)
@@ -69,13 +69,24 @@ static td_s32 drv_jpeg_close(td_void *private_data)
     return EXT_SUCCESS;
 }
 
+static td_void drv_jpeg_set_suspend_flag(td_bool flag)
+{
+    unsigned long flags = 0;
+    drv_jpeg_context *jpeg_context = jpeg_context_get();
+
+    osal_spin_lock_irqsave(&jpeg_context->lock, &flags);
+    g_jpeg_suspend_flag = flag;
+    osal_spin_unlock_irqrestore(&jpeg_context->lock, &flags);
+}
+
 td_s32 drv_jpeg_suspend(td_void *private_data)
 {
     uapi_unused(private_data);
-    
+
+    td_s32 ret = jpeg_wait_all_finish();
     jpeg_suspend();
-    g_jpeg_suspend_flag = TD_TRUE;
-    return EXT_SUCCESS;
+    drv_jpeg_set_suspend_flag(TD_TRUE);
+    return ret;
 }
 
 td_s32 drv_jpeg_resume(td_void *private_data)
@@ -83,7 +94,7 @@ td_s32 drv_jpeg_resume(td_void *private_data)
     uapi_unused(private_data);
 
     jpeg_resume();
-    g_jpeg_suspend_flag = TD_FALSE;
+    drv_jpeg_set_suspend_flag(TD_FALSE);
     return EXT_SUCCESS;
 }
 
index d000e45..c76b33a 100644 (file)
@@ -275,6 +275,8 @@ td_s32 jpeg_ioctl_decomress_create(td_u32 cmd, td_void *arg, td_void *file)
     uapi_unused(file);
     uapi_unused(arg);
 
+    drv_jpeg_dfx_info *jpeg_dfx_info = jpeg_dfx_get_info();
+    jpeg_dfx_info->create_cnt++;
     uapi_pm_add_sleep_veto(PM_ID_JPEG);
     return EXT_SUCCESS;
 }
@@ -285,6 +287,8 @@ td_s32 jpeg_ioctl_decompress_destroy(td_u32 cmd, td_void *arg, td_void *file)
     uapi_unused(file);
     uapi_unused(arg);
 
+    drv_jpeg_dfx_info *jpeg_dfx_info = jpeg_dfx_get_info();
+    jpeg_dfx_info->destroy_cnt++;
     uapi_pm_remove_sleep_veto(PM_ID_JPEG);
     return EXT_SUCCESS;
 }
index 040d5ef..2f7babb 100644 (file)
@@ -54,3 +54,27 @@ td_s32 jpeg_isr_init(td_void)
 
     return EXT_SUCCESS;
 }
+
+td_s32 jpeg_wait_all_finish(td_void)
+{
+    unsigned long flag = 0;
+    drv_jpeg_dfx_info *dfx_info = jpeg_dfx_get_info();
+    const td_u32 wait_time = 200;
+    td_u32 cnt = 0;
+    drv_jpeg_context *jpeg_context = jpeg_context_get();
+
+    while (cnt++ < wait_time) {
+        osal_spin_lock_irqsave(&jpeg_context->lock, &flag);
+        if (dfx_info->create_cnt == dfx_info->destroy_cnt) {
+            osal_spin_unlock_irqrestore(&jpeg_context->lock, &flag);
+            break;
+        }
+        osal_spin_unlock_irqrestore(&jpeg_context->lock, &flag);
+        osal_udelay(100); // 100us
+    }
+    if (cnt >= wait_time) {
+        jpeg_err("jpeg_wait_all_finish timeout");
+        return EXT_FAILURE;
+    }
+    return EXT_SUCCESS;
+}
index dd887f6..edc95d0 100644 (file)
@@ -15,6 +15,7 @@ extern "C" {
 #endif
 
 td_s32 jpeg_isr_init(td_void);
+td_s32 jpeg_wait_all_finish(td_void);
 
 #ifdef __cplusplus
 #if __cplusplus
index fc41f48..d2ea85a 100644 (file)
@@ -30,7 +30,7 @@ typedef struct {
 \r
 static td_s32 vau_dfx_help(int argc, const char *argv[]);\r
 static inline td_void vau_dfx_print_func_info(void);\r
-static inline td_void vau_dfx_print_func_time_info(void);\r
+static td_void vau_dfx_print_func_time_info(void);\r
 static td_void vau_dfx_print_func_cnt_info(void);\r
 \r
 /*-------------------------------- par define ---------------------------------------------*/\r
@@ -79,8 +79,10 @@ static inline td_void vau_dfx_print_func_info(td_void)
     vau_print("end func info: ------------------------------------\n");\r
 }\r
 \r
-static inline td_void vau_dfx_print_func_time_info(td_void)\r
+static td_void vau_dfx_print_func_time_info(td_void)\r
 {\r
+    uapi_reg_read(HAL_VAU_LIST_PFCNT, g_vau_dfx_info.func_info.time_info.list_pfcnt);\r
+\r
     vau_print("-----------time info-----------\n");\r
     vau_print("create_cost(us)      :%u\n", (td_u32)(g_vau_dfx_info.func_info.time_info.create_cost));\r
     vau_print("destroy_cost(us)     :%u\n", (td_u32)(g_vau_dfx_info.func_info.time_info.destroy_cost));\r
index 1284292..2b10d0c 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 = 0.125; /* 0.125 : default threshold for cubic split */\r
+    cubic.bits.threshold_cubic = 1.0f; /* 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
index c8e99cb..b405756 100644 (file)
@@ -14,6 +14,7 @@
 #include "vau_hal.h"\r
 #include "vau_dfx.h"\r
 #include "vau_pre_process.h"\r
+#include "vau_handle.h"\r
 \r
 #define DRV_VAU_IOCTL_CMD_NUM 20\r
 \r
@@ -33,19 +34,30 @@ static td_s32 drv_vau_close(td_void *private_data)
     return EXT_SUCCESS;\r
 }\r
 \r
+static td_void drv_vau_set_suspend_flag(td_bool flag)\r
+{\r
+    unsigned long flags = 0;\r
+    vau_handle_mgr *vau_handle_list = vau_handle_list_get();\r
+\r
+    osal_spin_lock_irqsave(&vau_handle_list->lock, &flags);\r
+    g_vau_suspend_flag = flag;\r
+    osal_spin_unlock_irqrestore(&vau_handle_list->lock, &flags);\r
+}\r
+\r
 td_s32 drv_vau_suspend(td_void *private_data)\r
 {\r
     uapi_unused(private_data);\r
 \r
+    td_s32 ret = drv_vau_wait_all_done();\r
     vau_dfx_info *dfx_info = vau_dfx_get_info();\r
     dfx_info->suspend_cnt++;\r
 \r
     vau_dbg("vau suspend start");\r
     vau_hal_suspend();\r
-    g_vau_suspend_flag = TD_TRUE;\r
+    drv_vau_set_suspend_flag(TD_TRUE);\r
     vau_dbg("vau suspend ok");\r
 \r
-    return EXT_SUCCESS;\r
+    return ret;\r
 }\r
 \r
 td_s32 drv_vau_resume(td_void *private_data)\r
@@ -63,7 +75,7 @@ td_s32 drv_vau_resume(td_void *private_data)
 #ifdef CONFIG_CLDO1PD_SUPPORT\r
     vau_mem_draw_pool_init();\r
 #endif\r
-    g_vau_suspend_flag = TD_FALSE;\r
+    drv_vau_set_suspend_flag(TD_FALSE);\r
     vau_dbg("vau resume ok");\r
 \r
     return EXT_SUCCESS;\r
index 98f53d3..60e784c 100644 (file)
@@ -433,7 +433,6 @@ td_s32 vau_list_submit_job(td_handle handle, td_u32 time_out,
     td_size_t lockflags = 0;
     td_bool asynflag = 0;
     td_u32 tmp_time_out = time_out;
-    vau_dfx_info *vau_info = vau_dfx_get_info();
 
     if ((tmp_time_out == 0) || (tmp_time_out > 2000)) { /* 2000ms */
         tmp_time_out = 2000;                        /* max 2000ms */
@@ -456,7 +455,6 @@ td_s32 vau_list_submit_job(td_handle handle, td_u32 time_out,
         wait_ret = osal_wait_timeout_interruptible(&g_vau_block_job_wq, vau_osal_wait_check,
                                                    (td_void *)&job->notify_type, tmp_time_out);
         osal_spin_lock_irqsave(&g_vau_sw_job_list->lock, &lockflags);
-        uapi_reg_read(HAL_VAU_LIST_PFCNT, vau_info->func_info.time_info.list_pfcnt);
         job->wait_for_done_count--;
         ret = vau_list_wake_up_job(job, asynflag, &wait_ret);
         osal_spin_unlock_irqrestore(&g_vau_sw_job_list->lock, &lockflags);
index 1986740..3151d97 100644 (file)
@@ -45,6 +45,7 @@ set(COMPONENT_CCFLAGS
     -Wno-unused-function
     -Wno-incompatible-pointer-types
     -Wno-incompatible-pointer-types-discards-qualifiers
+    -Werror=return-type
 )
 
 set(WHOLE_LINK
@@ -63,7 +64,7 @@ build_component()
 #===============================================================================
 set(COMPONENT_NAME "display_gralloc")
 
-set(SOURCES_GRALLOC 
+set(SOURCES_GRALLOC
     ${CMAKE_CURRENT_SOURCE_DIR}/src/display_gralloc.c
     ${CMAKE_CURRENT_SOURCE_DIR}/mempool/src/mem_pool_los.c
     )
@@ -97,6 +98,7 @@ list(APPEND CFLAG -Wno-missing-field-initializers)
 set(COMPONENT_CCFLAGS
     ${CFLAG}
     -Wno-sign-compare
+    -Werror=return-type
 )
 
 set(WHOLE_LINK
@@ -144,6 +146,7 @@ set(COMPONENT_CCFLAGS
     ${CFLAG}
     -Wno-unused-parameter
     -Wno-unused-function
+    -Werror=return-type
 )
 
 set(WHOLE_LINK
index 5a5634b..8eb8684 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 9f80e8f..9ad11a0 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 d9221a3..9c32117 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 6ce9739..dde8b6f 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 3707dea..a8b77c9 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 c8b06bf..4962c48 100644 (file)
@@ -33,6 +33,7 @@ set(COMPONENT_CCFLAGS
     ${CFLAG}
     -Wno-incompatible-function-pointer-types
     -Wno-implicit-function-declaration
+    -Werror=return-type
 )
 
 set(WHOLE_LINK
index a3f0707..3abb11e 100644 (file)
@@ -47,6 +47,7 @@ set(public_configs
     -Wno-tautological-pointer-compare\r
     -Wno-unused-private-field\r
     -Wno-unused-function\r
+    -Werror=return-type\r
 )\r
 \r
 # build graphic utils\r
@@ -180,6 +181,7 @@ set(COMPONENT_CCFLAGS
     -Wno-tautological-pointer-compare\r
     -Wno-unused-private-field\r
     -Wno-unused-function\r
+    -Werror=return-type\r
 )\r
 \r
 set(WHOLE_LINK\r
@@ -212,9 +214,11 @@ set(COMPONENT_SRC
     ${PROP_UI_SRC}/components_ext/ui_cross_view.cpp\r
     ${PROP_UI_SRC}/components_ext/kaleidoscope_utils.cpp\r
     ${PROP_UI_SRC}/components_ext/ui_kaleidoscope_view.cpp\r
+    ${PROP_UI_SRC}/components_ext/ui_roller_view.cpp\r
     ${PROP_UI_SRC}/components_ext/ui_map_view.cpp\r
     ${PROP_UI_SRC}/components_ext/map_svg_parser.cpp\r
     ${PROP_UI_SRC}/components_ext/ui_coverflow_view.cpp\r
+    ${PROP_UI_SRC}/components_ext/ui_icosahedron_view.cpp\r
 )\r
 \r
 set(SOURCES\r
@@ -257,6 +261,7 @@ set(COMPONENT_CCFLAGS
     -Wno-tautological-pointer-compare\r
     -Wno-unused-private-field\r
     -Wno-unused-function\r
+    -Werror=return-type\r
 )\r
 \r
 set(WHOLE_LINK\r
index 304b659..d629f41 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 c3b8555..8ec26e3 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 958bb08..3349124 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
diff --git a/code/sdk/middleware/services/gui/uikit/proprietary/include/common/graphic_utils.h b/code/sdk/middleware/services/gui/uikit/proprietary/include/common/graphic_utils.h
new file mode 100644 (file)
index 0000000..7fdd0b1
--- /dev/null
@@ -0,0 +1,22 @@
+/*
+ * Copyright (c) CompanyNameMagicTag 2023. All rights reserved.
+ */
+
+#ifndef DEFER_UTILS_H
+#define DEFER_UTILS_H
+
+#include <cstdint>
+#include "gfx_utils/image_info.h"
+#include "gfx_utils/graphic_math.h"
+
+namespace OHOS {
+#ifndef defer
+struct defer_dummy {};
+template <class F> struct deferrer { F f; ~deferrer() { f(); } };
+template <class F> deferrer<F> operator*(defer_dummy, F f) { return {f}; }
+#define DEFER_(LINE) zz_defer##LINE
+#define DEFER(LINE) DEFER_(LINE)
+#define defer auto DEFER(__LINE__) = defer_dummy{} *[&]()
+#endif // defer
+} // OHOS
+#endif // DEFER_UTILS_H
\ No newline at end of file
index e497fe0..095a9f1 100644 (file)
@@ -106,6 +106,11 @@ public:
 
     void* FreeAndGetBuf(const AllocInfo& info, GrallocBuffer& buffer);
 
+    /**
+     * @brief Dump image information.
+     */
+    void Dump();
+
 private:
     struct ImageNode;
     struct MultiImageInfo {
index 87ec4e9..7ed170f 100644 (file)
@@ -58,6 +58,12 @@ public:
     */
     ImageInfoExt* GetKaleidoscopeInfo();
 
+    /**
+    * @brief  Get pointer to source ImageInfo struct.
+    * @return Return pointer to source ImageInfo struct.
+    */
+    const ImageInfo* GetSrcImgInfo();
+
 private:
     ImageInfo* imgInfo_ = nullptr;
     ImageInfoExt* kaleidoscopeInfo_ = nullptr;
index ee54206..c94aa72 100644 (file)
@@ -89,12 +89,14 @@ public:
     uint8_t GetDirection() const = delete;\r
 protected:\r
     bool DragXInner(int16_t distance) override;\r
+    void RefreshCurrentView(int16_t distance, uint8_t dragDirection);\r
 \r
 private:\r
     void UpdatePerspectiveMatrix();\r
     void ReMeasure(void) override;\r
     void TransformImage(UIImageView* view);\r
     void DeleteGroup(UIViewGroup* group);\r
+    bool CalCurViewInfo();\r
 \r
     using UISwipeView::Add;\r
     using UISwipeView::Remove;\r
@@ -110,6 +112,7 @@ private:
     uint8_t mirrorOpa_;\r
     bool isShowMirrorImg_;\r
     UIView* lastView_;\r
+    uint16_t swipeMid_;\r
 };\r
 } // namespace OHOS\r
 #endif // UI_COVERFLOW_VIEW_H\r
index 5a7e3d1..7d287c5 100644 (file)
@@ -184,10 +184,16 @@ public:
      */
     Vector2<int16_t> GetCurrentPosition(uint8_t index);
 
+    UIViewType GetViewType() const override
+    {
+        return UI_HEXAGONS_LIST;
+    }
+
+    void ReMeasure() override;
+
 protected:
     bool DragXInner(int16_t distance) override;
     bool DragYInner(int16_t distance) override;
-    void ReMeasure() override;
     /**
      * @brief Get center position of the special(index) image when scale and center image index in screen is specified
      *
@@ -214,7 +220,7 @@ private:
     uint16_t maxLap_ = 0;
     uint16_t maxAngleInMaxLap_ = 0;
     Graphic::Vector<uint8_t> polygonPoints_{10};
-    uint16_t imgDistance_{0};
+    float imgDistance_{0};
     uint16_t oriImgDistance_{0};
     float oriScaleFactor_{0.23f};
     int16_t imgSizeInCenter_{0};
diff --git a/code/sdk/middleware/services/gui/uikit/proprietary/include/components/ui_icosahedron_view.h b/code/sdk/middleware/services/gui/uikit/proprietary/include/components/ui_icosahedron_view.h
new file mode 100644 (file)
index 0000000..e483fa4
--- /dev/null
@@ -0,0 +1,125 @@
+/*\r
+ * Copyright (c) 2024 CompanyNameMagicTag.\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 UI_ICOSAHEDRON_VIEW_H\r
+#define UI_ICOSAHEDRON_VIEW_H\r
+#include "components/ui_abstract_scroll.h"\r
+#include "gfx_utils/graphic_math.h"\r
+#include "components_ext/triangular_plane.h"\r
+\r
+namespace OHOS {\r
+class UIIcosahedronView : public UIAbstractScroll {\r
+public:\r
+    UIIcosahedronView();\r
+    virtual ~UIIcosahedronView();\r
+\r
+    /**\r
+     * @brief Set the edge length of the icosahedron.\r
+     *\r
+     * @param sideLen edge length of body shape.\r
+     */\r
+    void SetSideLength(uint16_t sideLen);\r
+\r
+    /**\r
+     * @brief Add a one-sided view to the icosahedron.\r
+     *\r
+     * @param view Single-sided corresponding view.Only supported ui image view.\r
+     */\r
+    void Add(UIView* view) override;\r
+\r
+    /**\r
+     * @brief Refresh icosahedral position.physique position will be reset after refreshing\r
+     */\r
+    void RefreshIcosahedron();\r
+\r
+    /**\r
+     * @brief Rotates the icosahedral in 3d.\r
+     *\r
+     * @param angle Indicates the rotation angle.\r
+     * @param pivotStart Indicates the coordinates of the rotation start pivot.\r
+     * @param pivotEnd Indicates the coordinates of the rotation end pivot.\r
+     */\r
+    bool RotatePlanes(int16_t angle, const Vector3<float>& pivotStart, const Vector3<float>& pivotEnd);\r
+\r
+    UIViewType GetViewType() const override\r
+    {\r
+        return UI_ICOSAHEDRON_VIEW;\r
+    }\r
+\r
+protected:\r
+    bool OnDragStartEvent(const DragEvent& event);\r
+    bool OnDragEvent(const DragEvent& event);\r
+    bool OnDragEndEvent(const DragEvent& event);\r
+    bool DragXInner(int16_t distance) override\r
+    {\r
+        return true;\r
+    }\r
+\r
+    bool DragYInner(int16_t distance) override\r
+    {\r
+        return true;\r
+    }\r
+\r
+private:\r
+    class inertiaAnimatorCallback : public AnimatorCallback {\r
+    public:\r
+        inertiaAnimatorCallback() : rotateTimes_(0), curtTime_(0), angle_(0)\r
+        {\r
+        }\r
+\r
+        virtual ~inertiaAnimatorCallback() {}\r
+\r
+        void SetRotateTimes(uint16_t times)\r
+        {\r
+            curtTime_ = 0;\r
+            rotateTimes_ = times;\r
+        }\r
+\r
+        void SetRotateAngle(int16_t angle)\r
+        {\r
+            angle_ = angle;\r
+        }\r
+\r
+        void SetRotateAxis(const Vector3<float>& rotateStart, const Vector3<float>& rotateEnd)\r
+        {\r
+            rotateStart_ = rotateStart;\r
+            rotateEnd_ = rotateEnd;\r
+        }\r
+\r
+        virtual void Callback(UIView* view) override;\r
+\r
+    private:\r
+        uint16_t rotateTimes_;\r
+        uint16_t curtTime_;\r
+        int16_t angle_;\r
+        Vector3<float> rotateStart_;\r
+        Vector3<float> rotateEnd_;\r
+    };\r
+    Matrix4<float> CalculateRotateMatrix(TriangularPlane dst);\r
+    Point startPoint_;\r
+    uint16_t sideLen_;\r
+\r
+    TriangularPlane plane_[20]; // 20: plane number\r
+    Matrix4<float> imgMatrix_;\r
+    Matrix4<float> sphereMatrix_;\r
+    Matrix4<float> lastSphereMatrix_;\r
+    bool isUpdateSideLen_ = true;\r
+\r
+    Animator inertiaAnimator_;\r
+    inertiaAnimatorCallback inertiaCallback_;\r
+    float lastAngle_;\r
+};\r
+} // namespace OHOS\r
+#endif  // UI_ICOSAHEDRON_H
\ No newline at end of file
index 8851769..f2c5312 100644 (file)
@@ -96,6 +96,9 @@ public:
     void StopRotateAnimator();
 
     void OnDraw(BufferInfo& gfxDstBuffer, const Rect& invalidatedArea) override;
+
+    void DumpImgInfo() override;
+
 private:
     class RotateCallback : public AnimatorCallback {
     public:
index cb79cae..f39d0bf 100644 (file)
@@ -59,7 +59,7 @@ public:
      * @since 1.0\r
      * @version 1.0\r
      */\r
-    UIListExt(uint8_t direction)\r
+    explicit UIListExt(uint8_t direction)\r
     {\r
         SetDirection(direction);\r
     }\r
index 352eedb..b347818 100644 (file)
@@ -169,16 +169,6 @@ public:
         return UI_LITE_SURFACE_VIEW;
     }
 
-    /**
-     * @brief Check if first video frame came.
-     * @since 1.0
-     * @version 1.0
-     */
-    bool IsFirstFrameCame()
-    {
-        return isFirstFrameCome_;
-    }
-
     /**
      * @brief Set preview image info.
      * @since 1.0
@@ -186,12 +176,13 @@ public:
      */
     void SetPreview(ImageInfo* info);
 
+    void DumpImgInfo() override;
+
 private:
     UILiteSurfaceView(const UILiteSurfaceView&) = delete;
     UILiteSurfaceView &operator=(const UILiteSurfaceView&) = delete;
     void InitLayer();
-    bool isStopped_ = false;
-    bool isFirstFrameCome_ = false;
+    bool isStopped_ = true;
     bool isLayerInit_ : 1;
     uint8_t flushCount_;
     LiteSurface* surface_ = nullptr;
index 1b1310a..f7f5b26 100644 (file)
@@ -151,7 +151,6 @@ private:
     bool needUpdate_ = false;
     ImageInfo cacheInfo_ = {{0}};
     MapSVGParser parser_;
-    uint8_t* data_ = nullptr;
     char* filePath_ = nullptr;
     PathDetail* pathArray_ = nullptr;
     uint8_t pathCount_ = 0;
@@ -164,7 +163,9 @@ private:
     uint8_t fontSize_ = 0;
     uint32_t poiMask_ = 0;
     float scale_ = 1.0f;
+    bool isSetSVG_ = false;
 
+    void InitMapInfo();
     void DrawPath(BufferInfo& gfxDstBuffer, const Rect& invalidatedArea);
     void DrawText(BufferInfo& gfxDstBuffer, const Rect& invalidatedArea, TextDetail& info, Point offset = {0, 0},
         bool isPOIText = false);
index 5463c07..5ab2c07 100644 (file)
@@ -48,6 +48,9 @@ namespace OHOS {
  */\r
 class UIMenuItem : public UIButton {\r
 public:\r
+    UIMenuItem(const UIMenuItem &) = delete;\r
+    UIMenuItem &operator=(const UIMenuItem &) = delete;\r
+\r
     /**\r
      * @brief Scale align mode.\r
      */\r
@@ -91,7 +94,7 @@ public:
      * @since 1.0\r
      * @version 1.0\r
      */\r
-    void SetImageSrc(const char* ImgSrc);\r
+    void SetImageSrc(const char* imgSrc);\r
 \r
     /**\r
      * @brief Sets the image info for menu image.\r
@@ -99,7 +102,7 @@ public:
      * @since 1.0\r
      * @version 1.0\r
      */\r
-    void SetImageSrc(const ImageInfo* ImgSrc);\r
+    void SetImageSrc(const ImageInfo* imgSrc);\r
 \r
     /**\r
      * @brief Sets the text for this item.\r
@@ -288,6 +291,8 @@ public:
     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
diff --git a/code/sdk/middleware/services/gui/uikit/proprietary/include/components/ui_roller_view.h b/code/sdk/middleware/services/gui/uikit/proprietary/include/components/ui_roller_view.h
new file mode 100644 (file)
index 0000000..24465f6
--- /dev/null
@@ -0,0 +1,310 @@
+/*
+ * Copyright (c) 2024 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_ROLLER_VIEW_H
+#define UI_ROLLER_VIEW_H
+#include <string>
+#include "components/ui_abstract_scroll.h"
+
+namespace OHOS {
+
+enum RollerViewMode {
+    DISPLAY, // Display all items in roller form.
+    COVER,   // Display current item at full size.
+    TRANSITION,  // used internally.
+};
+
+class UIRollerView : public UIAbstractScroll {
+public:
+    UIRollerView();
+    virtual ~UIRollerView() override;
+
+    /**
+    * @brief  Set item size, which is the size of image in DisplayMode.
+    */
+    void SetItemSize(uint16_t width, uint16_t height);
+
+    /**
+    * @brief  Set item padding.
+    */
+    void SetItemPadding(uint16_t padding);
+
+    /**
+    * @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.
+    */
+    void SetSensitivityFactor(float sensitivity);
+
+    /**
+    * @brief  Get sensitivity factor. Default value is 1.0.
+    */
+    float GetSensitivityFactor();
+
+    /**
+    * @brief  Add an item.
+    */
+    void AddItem(std::string name, const ImageInfo* src);
+
+    /**
+    * @brief  Remove an item.
+    */
+    void RemoveItem(std::string name);
+
+    /**
+    * @brief  Clear all items.
+    */
+    void ClearAll();
+
+    /**
+    * @brief  Get current item name.
+    */
+    std::string GetCurrentItemName();
+
+    /**
+    * @brief  Get current item, which contains 2 imgs.
+    */
+    UIViewGroup* GetCurrentItem();
+
+    /**
+    * @brief  Set current item.
+    */
+    void SetCurrentItem(std::string name, bool enableAnimator = false);
+
+    /**
+    * @brief  Set current mode, choose from [DISPLAY, COVER].
+    */
+    void SetMode(RollerViewMode mode, bool enableAnimator = false);
+
+    /**
+    * @brief  Mode change listener.
+    */
+    class OnModeChangeListener : public HeapBase {
+    public:
+        /**
+        * @brief  Called when RollerViewMode is changed.
+        */
+        virtual void OnModeChange(UIRollerView* view, RollerViewMode targetMode) = 0;
+        virtual ~OnModeChangeListener() {}
+    };
+
+    /**
+    * @brief  Get OnModeChangeListener.
+    */
+    OnModeChangeListener*& GetOnModeChangeListener()
+    {
+        return onModeChangeListener_;
+    }
+
+    /**
+    * @brief  Set OnModeChangeListener.
+    */
+    void SetOnModeChangeListener(OnModeChangeListener* onModeChangeListener)
+    {
+        onModeChangeListener_ = onModeChangeListener;
+    }
+
+    /**
+    * @brief  Get current mode.
+    */
+    RollerViewMode GetMode();
+
+    /**
+    * @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.
+    */
+    void SetCamY(int16_t y);
+
+    UIViewType GetViewType() const override
+    {
+        return UI_ROLLER_VIEW;
+    }
+
+    bool OnDragStartEvent(const DragEvent& event) override;
+    bool OnDragEvent(const DragEvent& event) override;
+    bool OnDragEndEvent(const DragEvent& event) override;
+
+    void SetDirection(uint8_t direction) = delete;
+    uint8_t GetDirection() const = delete;
+    void SetLoopState(bool loop) = delete;
+
+protected:
+    bool DragXInner(int16_t distance);
+    bool DragYInner(int16_t distance)
+    {
+        return true;
+    }
+
+private:
+    class AlignAnimatorCallback : public AnimatorCallback {
+    public:
+        AlignAnimatorCallback()
+            : curTime_(0),
+              animTime_(0),
+              angle_(0),
+              previousAngle_(0)
+        {
+        }
+
+        virtual ~AlignAnimatorCallback() {}
+
+        void SetAnimTimes(uint16_t times)
+        {
+            animTime_ = times;
+        }
+
+        void SetAngle(float angle)
+        {
+            angle_ = angle;
+        }
+
+        void ResetCallback()
+        {
+            angle_ = 0;
+            previousAngle_ = 0;
+            animTime_ = 0;
+            curTime_ = 0;
+        }
+
+        virtual void Callback(UIView* view) override;
+
+        uint16_t curTime_;
+        uint16_t animTime_;
+        float previousAngle_;
+        float angle_;
+    };
+
+    class TransitionAnimatorCallback : public AnimatorCallback {
+    public:
+        TransitionAnimatorCallback() : curTime_(0), animTime_(0),
+            startScaleX_(0), startScaleY_(0), endScaleX_(0), endScaleY_(0),
+            camPos_({0, 0}), targetCamPos_({0, 0})
+        {
+        }
+
+        virtual ~TransitionAnimatorCallback() {}
+
+        void SetAnimTimes(uint16_t times)
+        {
+            animTime_ = times;
+        }
+
+        void SetScaleFactor(float startScaleX, float startScaleY, float endScaleX, float endScaleY)
+        {
+            startScaleX_ = startScaleX;
+            startScaleY_ = startScaleY;
+            endScaleX_ = endScaleX;
+            endScaleY_ = endScaleY;
+        }
+
+        void SetCamPosition(Point previousCamPos, Point targetCamPos)
+        {
+            camPos_ = previousCamPos;
+            targetCamPos_ = targetCamPos;
+        }
+
+        void ResetCallback()
+        {
+            curTime_ = 0;
+            animTime_ = 0;
+            startScaleX_ = 0;
+            startScaleY_ = 0;
+            endScaleX_ = 0;
+            endScaleY_ = 0;
+            camPos_ = {0, 0};
+            targetCamPos_ = {0, 0};
+        }
+
+        virtual void Callback(UIView* view) override;
+
+        uint16_t curTime_;
+        uint16_t animTime_;
+        float startScaleX_;
+        float startScaleY_;
+        float endScaleX_;
+        float endScaleY_;
+        Point camPos_;
+        Point targetCamPos_;
+    };
+
+    /* calculate swipe anim period: angle offset / ANGLE_COEFFICIENT. Minimum swipe anim period is MIN_DRAG_TIMES. */
+    static constexpr uint8_t ANGLE_COEFFICIENT = 5;
+    /* the minimum period of mode transition animator. */
+    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_;
+    float ConvertDistanceToAngle(int16_t distance);
+    bool IsInCurrentItemRange(float angle);
+    void InitImg(UIView* img);
+    void DoCalculation();
+    void PrepAlign(float angle);
+    void SetCamPosInner(Point position);
+    void StartTransitionAnim();
+    void StopTransitionAnim();
+    void ReflectImg(UIView* img, UIView* mirror);
+    void ReMeasure(void) override;
+    void LayoutItem();
+    void TransformByAngle(float angle);
+    void TransformItemGroup(UIView* view, float angle);
+    void DelItemGroup(UIViewGroup* group);
+    void ResetState();
+    void StartAlignAnim();
+    void StopAlignAnim();
+    void MoveHeadOrTail();
+    void HandleMode();
+    void HandleAlign();
+    void UpdateCam();
+
+    Animator alignAnim_;
+    AlignAnimatorCallback alignCallback_;
+
+    Animator transitionAnim_;
+    TransitionAnimatorCallback transitionCallback_;
+
+    int16_t camY_ = 0;
+    bool isCamYSet_ = false;
+    RollerViewMode mode_ = DISPLAY;
+    RollerViewMode targetMode_ = DISPLAY;
+    bool switchModeWithAnim_ = false;
+    bool alignWithAnim_ = false;
+    UIView* coverPreviousItem_ = nullptr;
+    uint16_t itemWidth_ = 0;
+    uint16_t itemHeight_ = 0;
+    uint8_t mirrorOpa_ = 100;
+    float radius_ = 0.0f;
+    float perimeter_ = 0.0f;
+    float sensitivityFactor_ = 1.0f;
+    float anglePerItem_ = 0.0f;
+    Point camPosition_ = {0, 0};
+    Point displayCamPosition_ = {0, 0};
+    uint16_t cameraDistance_ = 1000;
+    uint16_t itemPadding_ = 0;
+    bool needLayout_ = false;
+    UIViewGroup* currentItem_ = nullptr;
+    UIViewGroup* alignItem_ = nullptr;
+    float alignAngle_ = 0.0f;
+};
+} // namespace OHOS
+#endif // UI_ROLLER_VIEW_H
index 73dafd3..c21b682 100644 (file)
@@ -410,6 +410,8 @@ public:
      */\r
     void SetWorkMode(WorkMode newMode) override;\r
 \r
+    void DumpImgInfo() override;\r
+\r
 private:\r
     Hand hourHand_;\r
     Hand minuteHand_;\r
index 15f0f33..fa8d6a0 100644 (file)
@@ -101,6 +101,16 @@ public:
      */\r
     bool InitGraphicService();\r
 \r
+    /**\r
+    * @brief GPU Reset start.\r
+    */\r
+    void GpuResetStart(void);\r
+\r
+    /**\r
+    * @brief GPU Reset end.\r
+    */\r
+    void GpuResetEnd(void);\r
+\r
 #ifdef ENABLE_CMSIS\r
     static void NativeMainThread(void* args);\r
     static void RtcEventThread(void* args);\r
@@ -118,6 +128,7 @@ private:
     static OHOS::GraphicMutex rtcEventMutex_;\r
     static OHOS::GraphicCond rtcEventCond_;\r
     static bool fullRefreshFlag_;\r
+    bool isGpuReseting = false;\r
     void DecreaseTriggerCount();\r
     void SetUpRootView();\r
     GraphicService();\r
index a522c8d..95b859e 100644 (file)
@@ -64,6 +64,16 @@ void ShowGraphicLogo(void);
  */
 void HideGraphicLogo(void);
 
+/**
+ * @brief GPU Reset start.
+ */
+void GpuResetStart(void);
+
+/**
+ * @brief GPU Reset end.
+ */
+void GpuResetEnd(void);
+
 #ifdef __cplusplus
 };
 #endif
index 987dfc7..6638e1b 100644 (file)
@@ -140,8 +140,8 @@ bool UIBarcode::FillImageInfo()
         GRAPHIC_LOGE("actualLength is 0 or actualLength > width");
         return false;
     }
-    uint32_t step = width / actualLength;
-    imageInfo_.header.width = actualLength * step;
+    uint32_t step = static_cast<uint32_t>(width / actualLength);
+    imageInfo_.header.width = static_cast<uint32_t>(actualLength) * step;
     imageInfo_.header.height = height;
     imageInfo_.header.colorMode = RGB565;
     stride_ = DisplayDev::GetInstance()->CalcStride(imageInfo_.header.width, PIXEL_FMT_RGB_565);
@@ -166,12 +166,12 @@ void UIBarcode::FillBarCodeColor(ImageInfo& imageInfo, int32_t actualLength, uin
 {
     uint8_t* data = const_cast<uint8_t *>(imageInfo.data);
 
-    for (uint32_t i = 0; i < actualLength; i++) {
+    for (uint32_t i = 0; i < static_cast<uint32_t>(actualLength); i++) {
         if ((*(destData + i)) == 0) {
             continue;
         }
 
-        int16_t codeOffset = i * offset * 2; // 2: rgb565 has 2 byte per pixel
+        int16_t codeOffset = static_cast<int16_t>(i * offset * 2); // 2: rgb565 has 2 byte per pixel
         for (uint32_t k = 0; k < offset; k++) {
             *(data + codeOffset + k * 2) = 0; // 2: rgb565 has 2 byte per pixel
             *(data + codeOffset + k * 2 + 1) = 0; // 2: rgb565 has 2 byte per pixel
index 963891f..f6da293 100644 (file)
  * limitations under the License.
  */
 
-#include "input_method/ui_input_method.h"
+#include <securec.h>
 #include "common/screen.h"
 #include "components/root_view.h"
-#include "font/ui_font.h"
 #include "input_method/ui_soft_keyboard.h"
+#include "input_method/ui_input_method.h"
 
 #if ENABLE_SOFT_KEYBOARD
 namespace OHOS {
@@ -26,6 +26,7 @@ enum class SYS_IMT_TYPE {
     SYS_IME_CAP,
     SYS_IME_NUMBER,
     SYS_IME_SYMBOL,
+    SYS_IME_PINYIN,
     SYS_IME_ALL,
 };
 UIInputMethod::UIInputMethod()
@@ -34,6 +35,7 @@ UIInputMethod::UIInputMethod()
     customSoftKeyboard_.PushBack(UICapitalSoftKeyboard::GetInstance());
     customSoftKeyboard_.PushBack(UINumberSoftKeyboard::GetInstance());
     customSoftKeyboard_.PushBack(UISymbolSoftKeyboard::GetInstance());
+    customSoftKeyboard_.PushBack(UIPinyinSoftKeyboard::GetInstance());
     curSoftKeyboard_ = customSoftKeyboard_[static_cast<int>(SYS_IMT_TYPE::SYS_IME_EN)];
 }
 
@@ -54,6 +56,15 @@ UIInputMethod::~UIInputMethod()
         previeBox_ = nullptr;
     }
 
+    if (pinyinPreview_ != nullptr) {
+        delete pinyinPreview_;
+        pinyinPreview_ = nullptr;
+    }
+
+    ClearPinyinTable();
+
+    ClearHanziCandidate();
+
     curSoftKeyboard_ = nullptr;
     isInit_ = false;
 }
@@ -70,15 +81,16 @@ void UIInputMethod::OnShow(InputMethodManager::InputMethodParam& param)
         GRAPHIC_LOGD("UI system soft keyboard has been shown\n");
         return;
     }
+    SetupPinyinTable();
     InitInputMethod();
 
     // update edit text
     edit_ = static_cast<UIEditText *>(param.view);
     if (previeBox_ != nullptr) {
         previeBox_->SetInputType(param.inputType);
+        previeBox_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, UITextPreviewBox::DEFAULT_EDIT_FONT_SIZE);
         previeBox_->SetText(param.text.c_str());
         previeBox_->Focus();
-        previeBox_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, UITextPreviewBox::DEFAULT_EDIT_FONT_SIZE);
         if (edit_ != nullptr) {
             previeBox_->SetStyle(STYLE_LINE_HEIGHT, edit_->GetStyle(STYLE_LINE_HEIGHT));
             previeBox_->SetMaxLength(edit_->GetMaxLength());
@@ -117,7 +129,7 @@ void UIInputMethod::OnHide()
     InputMethodManager::GetInstance().OnKeyboardHide();
 }
 
-void UIInputMethod::Input(UI_KEYCODE &key)
+void UIInputMethod::Input(UI_KEYCODE key)
 {
     if (key >= UI_KEYCODE::UI_KEY_SOFT_KEYBOARD) {
         ChangSoftKeyboard(key);
@@ -128,6 +140,61 @@ void UIInputMethod::Input(UI_KEYCODE &key)
     }
 }
 
+void UIInputMethod::InputPinyin(UI_KEYCODE key)
+{
+    // process pinyin logic here
+    if (key >= UI_KEYCODE::UI_KEY_SOFT_KEYBOARD) {
+        if (curKeyboardIndex_ == static_cast<uint8_t>(SYS_IMT_TYPE::SYS_IME_PINYIN)) {
+            HidePinyinPreview();
+            HideHanziPageList();
+        }
+        ChangSoftKeyboard(key);
+        return;
+    }
+    if (curSoftKeyboard_ == nullptr) {
+        return;
+    }
+
+    switch (key) {
+        case UI_KEYCODE::UI_KEY_ENTER:
+            HidePinyinPreview();
+            HideHanziPageList();
+            DealSendKey();
+            break;
+        case UI_KEYCODE::UI_KEY_DEL:
+            if (pinyinPreview_ && pinyinPreview_->IsVisible()) {
+                DealPinyinDelKey();
+            } else {
+                DealDelKey();
+            }
+            break;
+        default:
+            if (key >= UI_KEYCODE::UI_KEY_a && key <= UI_KEYCODE::UI_KEY_z) {
+                InsertPinyin(key);
+            } else {
+                DealNormalKey(key);
+            }
+            break;
+    }
+}
+
+void UIInputMethod::ShowHanziPageList()
+{
+    if (hanziList_ == nullptr || pinyinPreview_ == nullptr) {
+        return;
+    }
+    if (pinyinPreview_->GetText() != nullptr && strlen(pinyinPreview_->GetText()) != 0) {
+        hanziList_->SetVisible(true);
+    }
+}
+
+void UIInputMethod::HideHanziPageList()
+{
+    if (hanziList_ != nullptr) {
+        hanziList_->SetVisible(false);
+    }
+}
+
 uint8_t UIInputMethod::HideOptionBox()
 {
     if ((optionBox_ == nullptr) || !optionBox_->IsVisible()) {
@@ -152,10 +219,32 @@ void UIInputMethod::ShowOptionBox(UIView *view, UI_KEYCODE *keys, uint8_t num)
     return;
 }
 
+bool UIInputMethod::OnClick(UIView& view, const ClickEvent& event)
+{
+    if (previeBox_ == nullptr) {
+        return false;
+    }
+    UILabelButton *btn = dynamic_cast<UILabelButton*>(&view);
+    if (btn == nullptr) {
+        return false;
+    }
+
+    std::string u8hanzi;
+    const char *hanzi = btn->GetText();
+    if (hanzi != nullptr) {
+        u8hanzi = hanzi;
+    }
+    previeBox_->InsertHanzi(u8hanzi);
+    HideHanziPageList();
+    HidePinyinPreview();
+    return true;
+}
+
 void UIInputMethod::DealSendKey()
 {
     std::string inputText = previeBox_->GetText();
     InputMethodManager::GetInstance().InsertText(inputText);
+    ClearPinyinTable();
     InputMethodManager::GetInstance().HideInputMethod();
 }
 
@@ -166,7 +255,92 @@ void UIInputMethod::DealDelKey()
     }
 }
 
-void UIInputMethod::DealFunctionKey(UI_KEYCODE &keyCode)
+void UIInputMethod::DealPinyinDelKey()
+{
+    if (pinyinPreview_ == nullptr) {
+        return;
+    }
+    const char *str = pinyinPreview_->GetText();
+    std::string pinyin;
+    if (str != nullptr && strlen(str) > 0) {
+        pinyin = str;
+    }
+    if (pinyin.length() > 0) {
+        pinyin = pinyin.substr(0, pinyin.length() - 1);
+        pinyinPreview_->SetText(pinyin.c_str());
+    }
+    const char *text = pinyinPreview_->GetText();
+    if (text == nullptr || strlen(text) == 0) {
+        pinyinPreview_->SetVisible(false);
+        HideHanziPageList();
+        return;
+    }
+
+    // find pinyin hanzi, and display!
+    UpdateHanziOption(text);
+}
+
+void UIInputMethod::HidePinyinPreview()
+{
+    if (pinyinPreview_ != nullptr) {
+        pinyinPreview_->SetText("");
+        pinyinPreview_->SetVisible(false);
+    }
+}
+
+void UIInputMethod::ShowPinyinPreview()
+{
+    if (pinyinPreview_ != nullptr) {
+        pinyinPreview_->SetVisible(true);
+    }
+}
+
+void UIInputMethod::ClearHanziCandidate()
+{
+    if (hanziAdapter_ != nullptr) {
+        delete hanziAdapter_;
+        hanziAdapter_ = nullptr;
+    }
+    if (hanziList_ != nullptr) {
+        delete hanziList_;
+        hanziList_ = nullptr;
+    }
+    memset_s(hanziMatched_, sizeof(hanziMatched_), 0,
+        sizeof(hanziMatched_));
+}
+
+void UIInputMethod::SetupHanziCandidate()
+{
+    if (inputMethod_ == nullptr) {
+        return;
+    }
+    ClearHanziCandidate();
+    int16_t x = 28;
+    int16_t y = 200;
+    int16_t w = 398;
+    int16_t h = 50;
+    int8_t gap = 2;
+    int16_t buttonGap = (w - gap) / DEFAULT_NUMPERPAGE;
+    int16_t btnWidth = buttonGap - gap;
+    int16_t btnHeight = h - gap * 2; // 2: half
+
+    hanziAdapter_ = new HanziAdapter;
+    // set height, set width, set data
+    hanziAdapter_->SetWidthAndHeight(w, h);
+    hanziAdapter_->SetClickListener(this);
+
+    hanziList_ = new UIList(UIList::HORIZONTAL);
+    // set position, font, adapter, listener, and add to inputmethod
+    hanziList_->SetPosition(x, y, w, h);
+    hanziList_->SetStyle(STYLE_BACKGROUND_COLOR, 0xFFE8EAEE);
+    hanziList_->SetIntercept(false);
+    hanziList_->SetAdapter(hanziAdapter_);
+    hanziList_->SetScrollStateListener(this);
+    hanziList_->SetVisible(false);
+    inputMethod_->Add(hanziList_);
+}
+
+void UIInputMethod::DealFunctionKey(UI_KEYCODE keyCode)
 {
     if (curSoftKeyboard_ != nullptr) {
         switch (keyCode) {
@@ -182,7 +356,7 @@ void UIInputMethod::DealFunctionKey(UI_KEYCODE &keyCode)
     }
 }
 
-void UIInputMethod::DealNormalKey(UI_KEYCODE &keyCode)
+void UIInputMethod::DealNormalKey(UI_KEYCODE keyCode)
 {
     if (previeBox_ != nullptr) {
         UITextPreviewBox::TextPreviewBoxMode mode = previeBox_->GetEditMode();
@@ -200,7 +374,7 @@ void UIInputMethod::DealNormalKey(UI_KEYCODE &keyCode)
     }
 }
 
-void UIInputMethod::ChangSoftKeyboard(UI_KEYCODE &keyCode)
+void UIInputMethod::ChangSoftKeyboard(UI_KEYCODE keyCode)
 {
     switch (keyCode) {
         case UI_KEYCODE::UI_KEY_SOFT_KEYBOARD_EN:
@@ -215,6 +389,9 @@ void UIInputMethod::ChangSoftKeyboard(UI_KEYCODE &keyCode)
         case UI_KEYCODE::UI_KEY_SOFT_KEYBOARD_SYMBOL:
             curKeyboardIndex_ = static_cast<uint8_t>(SYS_IMT_TYPE::SYS_IME_SYMBOL);
             break;
+        case UI_KEYCODE::UI_KEY_SOFT_KEYBOARD_PINYIN:
+            curKeyboardIndex_ = static_cast<uint8_t>(SYS_IMT_TYPE::SYS_IME_PINYIN);
+            break;
         default:
             curKeyboardIndex_++;
             break;
@@ -234,7 +411,7 @@ void UIInputMethod::ChangSoftKeyboard(UI_KEYCODE &keyCode)
     inputMethod_->Invalidate();
 }
 
-void UIInputMethod::InsertChar(UI_KEYCODE& keyCode)
+void UIInputMethod::InsertChar(UI_KEYCODE keyCode)
 {
     if (previeBox_ != nullptr) {
         previeBox_->InsertChar(keyCode);
@@ -242,6 +419,60 @@ void UIInputMethod::InsertChar(UI_KEYCODE& keyCode)
     return;
 }
 
+void UIInputMethod::InsertPinyin(UI_KEYCODE pinyin)
+{
+    if (pinyinPreview_ == nullptr) {
+        return;
+    }
+    char ch = static_cast<char>(pinyin);
+    std::string originPinyin;
+    const char *str = pinyinPreview_->GetText();
+    if (str != nullptr && strlen(str) > 0) {
+        originPinyin = str;
+    }
+    originPinyin = originPinyin + ch;
+    pinyinPreview_->SetText(originPinyin.c_str());
+    pinyinPreview_->SetVisible(true);
+    const char *text = pinyinPreview_->GetText();
+    if (text == nullptr) {
+        return;
+    }
+
+    // find pinyin hanzi, and display!
+    UpdateHanziOption(text);
+}
+
+void UIInputMethod::UpdateHanziOption(const std::string &pinyin)
+{
+    if (pinyin.empty() || pinyinTable_ == nullptr) {
+        return;
+    }
+
+    PinyinState res = pinyinTable_->FindHanzi(pinyin);
+    if (res != PinyinState::SUCCESS) {
+        GRAPHIC_LOGE("%s", pinyinTable_->DebugInfo(res).c_str());
+        return;
+    }
+
+    uint8_t matchnum = pinyinTable_->GetMatchHanziNum();
+    if (matchnum == 0) {
+        return;
+    }
+
+    memset_s(hanziMatched_, sizeof(hanziMatched_),
+        0, sizeof(hanziMatched_));
+    res = pinyinTable_->GetAllHanzi(hanziMatched_,
+        sizeof(hanziMatched_) / sizeof(hanziMatched_[0]));
+    if (res != PinyinState::SUCCESS) {
+        GRAPHIC_LOGE("%s", pinyinTable_->DebugInfo(res).c_str());
+        return;
+    }
+    hanziAdapter_->SetData(hanziMatched_, matchnum);
+    hanziList_->ScrollTo(0);
+    hanziList_->SetVisible(true);
+    hanziList_->RefreshList();
+}
+
 void UIInputMethod::InitInputMethod()
 {
     if (isInit_) {
@@ -261,6 +492,8 @@ void UIInputMethod::InitInputMethod()
     SetupOptionBox();
     SetupSoftKeyboard();
     SetupTextPreviewBox();
+    SetupHanziCandidate();
+    SetupPinyinPreviewBox();
     isInit_ = true;
 }
 
@@ -301,5 +534,117 @@ void UIInputMethod::SetupTextPreviewBox()
         inputMethod_->Add(previeBox_);
     }
 }
+
+void UIInputMethod::SetupPinyinPreviewBox()
+{
+    if (pinyinPreview_ != nullptr) {
+        return;
+    }
+    pinyinPreview_ = new UILabel;
+    int16_t x = 28;
+    int16_t y = 160;
+    int16_t w = 77;
+    int16_t h = 30;
+    pinyinPreview_->SetPosition(x, y, w, h);
+    pinyinPreview_->SetStyle(STYLE_BACKGROUND_COLOR, 0xFFE8EAEE);
+    pinyinPreview_->SetStyle(STYLE_BORDER_RADIUS, 10); // 10: border radius
+    pinyinPreview_->SetText("");
+    pinyinPreview_->SetTouchable(false);
+    pinyinPreview_->SetTextColor(Color::Black());
+    pinyinPreview_->SetViewId("input_pinyin_text_view_id");
+    pinyinPreview_->SetVisible(false);
+
+    inputMethod_->Add(pinyinPreview_);
+}
+
+void UIInputMethod::SetupPinyinTable()
+{
+    if (pinyinTable_ != nullptr) {
+        return;
+    }
+    pinyinTable_ = new PinyinCandidate();
+    if (pinyinTable_ == nullptr) {
+        return;
+    }
+
+#ifndef WIN32
+    PinyinState state = pinyinTable_->Init("/user/res/pymb.bin");
+#else
+    PinyinState state = pinyinTable_->Init(RES_PATH"/pymb.bin");
+#endif
+    if (state != PinyinState::SUCCESS) {
+        ClearPinyinTable();
+    }
+}
+
+void UIInputMethod::ClearPinyinTable()
+{
+    if (pinyinTable_ != nullptr) {
+        delete pinyinTable_;
+        pinyinTable_ = nullptr;
+    }
+}
+
+UIView* UIInputMethod::HanziAdapter::GetView(UIView* inView, int16_t index)
+{
+    if (data_ == nullptr || size_ == 0) {
+        return nullptr;
+    }
+    if (index < 0 || index >= static_cast<int16_t>(size_)) {
+        return nullptr;
+    }
+
+    UILabelButton* item = dynamic_cast<UILabelButton*>(inView);
+    if (item == nullptr) {
+        int16_t gap = 2;
+        item  = new UILabelButton;
+        item->SetPosition(0, 0);
+        item->Resize(GetItemWidthWithMargin(index) - gap, GetItemHeightWithMargin(index));
+    }
+    item->SetOnClickListener(clickListener_);
+    item->SetText(reinterpret_cast<char*>(data_[index]));
+    item->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); // 40: means font size
+    item->SetViewIndex(index);
+    item->SetAlign(TEXT_ALIGNMENT_CENTER);
+    item->SetStyleForState(STYLE_BORDER_RADIUS, 0, UIButton::RELEASED);
+    item->SetStyleForState(STYLE_BORDER_RADIUS, 0, UIButton::PRESSED);
+    item->SetStyleForState(STYLE_BORDER_RADIUS, 0, UIButton::INACTIVE);
+    item->SetStyleForState(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT, UIButton::RELEASED);
+    item->SetStyleForState(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT, UIButton::PRESSED);
+    item->SetStyleForState(STYLE_BACKGROUND_OPA, OPA_TRANSPARENT, UIButton::INACTIVE);
+    item->SetTextColor(Color::Black());
+    return item;
+}
+
+uint16_t UIInputMethod::HanziAdapter::GetCount()
+{
+    return size_;
+}
+
+int16_t UIInputMethod::HanziAdapter::GetItemWidthWithMargin(int16_t index)
+{
+    return width_ * 1.0 / UIInputMethod::DEFAULT_NUMPERPAGE;
+}
+
+int16_t UIInputMethod::HanziAdapter::GetItemHeightWithMargin(int16_t index)
+{
+    return height_;
+}
+
+bool UIInputMethod::HanziAdapter::SetWidthAndHeight(int16_t w, int16_t h)
+{
+    if (w > 0 && h > 0) {
+        width_ = w;
+        height_ = h;
+        return true;
+    }
+    return false;
+}
+
+void UIInputMethod::HanziAdapter::SetData(int8_t hanzi[][PinyinCandidate::IME_HZLENTH], uint8_t len)
+{
+    data_ = hanzi;
+    size_ = len;
+}
 } // namespace OHOS
 #endif // ENABLE_SOFT_KEYBOARD
index e22d60f..f3175a6 100644 (file)
@@ -15,6 +15,7 @@
 
 #include "input_method/ui_keyboard_button.h"
 #include "input_method/ui_input_method.h"
+#include "input_method/ui_soft_keyboard.h"
 
 #if ENABLE_SOFT_KEYBOARD
 namespace OHOS {
@@ -66,6 +67,9 @@ void UIKeyboardButton::GetFuncKeyText(UI_KEYCODE key, std::string &tmpText)
         case UI_KEYCODE::UI_KEY_ENTER:
             tmpText += "Send";
             break;
+        case UI_KEYCODE::UI_KEY_SOFT_KEYBOARD_PINYIN:
+            tmpText += "中";
+            break;
         case UI_KEYCODE::UI_KEY_DEL:
             tmpText += "Del";
             break;
@@ -91,10 +95,6 @@ void UIKeyboardButton::GetFuncKeyText(UI_KEYCODE key, std::string &tmpText)
 
 void UIKeyboardButton::SetButtonText()
 {
-    if (keyCode_ == nullptr) {
-        return;
-    }
-
     std::string tmpText;
     for (uint8_t i = 0; i < keyNum_; i++) {
         UI_KEYCODE key = keyCode_[i];
@@ -118,6 +118,11 @@ void UIKeyboardButton::Clear()
 bool UIKeyboardButton::OnClickEvent(const ClickEvent& event)
 {
     if (keyNum_ == 1) {
+        UIPinyinSoftKeyboard *parent = dynamic_cast<UIPinyinSoftKeyboard*>(GetParent());
+        if (parent != nullptr) {
+            UIInputMethod::GetInstance()->InputPinyin(keyCode_[0]);
+            return true;
+        }
         UIInputMethod::GetInstance()->Input(keyCode_[0]);
     }
     return true;
@@ -126,6 +131,10 @@ bool UIKeyboardButton::OnClickEvent(const ClickEvent& event)
 bool UIKeyboardButton::OnPressEvent(const PressEvent& event)
 {
     if (keyNum_ > 1) {
+        UIPinyinSoftKeyboard *parent = dynamic_cast<UIPinyinSoftKeyboard*>(GetParent());
+        if (parent != nullptr) {
+            UIInputMethod::GetInstance()->HideHanziPageList();
+        }
         UIInputMethod::GetInstance()->ShowOptionBox(this, keyCode_, keyNum_);
     }
     return true;
@@ -134,7 +143,13 @@ bool UIKeyboardButton::OnPressEvent(const PressEvent& event)
 bool UIKeyboardButton::OnReleaseEvent(const ReleaseEvent& event)
 {
     if (keyNum_ > 1) {
+        UIPinyinSoftKeyboard *parent = dynamic_cast<UIPinyinSoftKeyboard*>(GetParent());
         uint8_t keyIndex = UIInputMethod::GetInstance()->HideOptionBox();
+        if (parent != nullptr) {
+            UIInputMethod::GetInstance()->ShowHanziPageList();
+            UIInputMethod::GetInstance()->InputPinyin(keyCode_[keyIndex]);
+            return true;
+        }
         UIInputMethod::GetInstance()->Input(keyCode_[keyIndex]);
     }
     return true;
@@ -143,7 +158,13 @@ bool UIKeyboardButton::OnReleaseEvent(const ReleaseEvent& event)
 bool UIKeyboardButton::OnDragEndEvent(const DragEvent& event)
 {
     if (keyNum_ > 1) {
+        UIPinyinSoftKeyboard *parent = dynamic_cast<UIPinyinSoftKeyboard*>(GetParent());
         uint8_t keyIndex = UIInputMethod::GetInstance()->HideOptionBox();
+        if (parent != nullptr) {
+            UIInputMethod::GetInstance()->ShowHanziPageList();
+            UIInputMethod::GetInstance()->InputPinyin(keyCode_[keyIndex]);
+            return true;
+        }
         UIInputMethod::GetInstance()->Input(keyCode_[keyIndex]);
     }
     return true;
index 1eaaacb..628788d 100644 (file)
@@ -35,12 +35,12 @@ void UIListExt::ReMeasure()
         if (direction_ == VERTICAL) {\r
             int offset = (y + view->GetHeight() / 2 - midY);\r
             int temp = EasingEquation::SineEaseIn(0, scaleFactor_, abs(offset), scaleFactor_);\r
-            float scale = 1.0 - ((float)temp / scaleFactor_);\r
+            float scale = 1.0 - (static_cast<float>(temp) / scaleFactor_);\r
             view->Scale(Vector2<float>(scale, scale), view->GetScaleCenter());\r
         } else {\r
             int offset = (x + view->GetWidth() / 2 - midX);\r
             int temp = EasingEquation::SineEaseIn(0, scaleFactor_, abs(offset), scaleFactor_);\r
-            float scale = 1.0 - ((float)temp / scaleFactor_);\r
+            float scale = 1.0 - (static_cast<float>(temp) / scaleFactor_);\r
             view->Scale(Vector2<float>(scale, scale), view->GetScaleCenter());\r
         }\r
         view = static_cast<UIMenuItem*>(view->GetNextSibling());\r
index 3484e4a..fcee553 100644 (file)
 #include "common/low_power_manager.h"\r
 #include "components/ui_lite_surface_view.h"\r
 \r
+\r
+#ifndef UIKIT_SKIP_LINE\r
+#define UIKIT_SKIP_LINE 1\r
+#endif\r
+\r
 namespace OHOS {\r
 static constexpr int16_t YUV_WIDTH_ALIGNMENT = 128;\r
 UILiteSurfaceView::UILiteSurfaceView() : isLayerInit_(false), flushCount_(0)\r
@@ -186,31 +191,26 @@ void UILiteSurfaceView::InitLayer()
 #ifdef VERSION_IOT\r
 bool UILiteSurfaceView::GetBitmap(ImageInfo& bitmap)\r
 {\r
-    if (!isFirstFrameCome_) {\r
+    if (lastFlushedBuffer_ == nullptr) {\r
         UIView::GetBitmap(bitmap);\r
     } else {\r
-        SurfaceBuffer* buff;\r
-        if (lastFlushedBuffer_ != nullptr) {\r
-            buff = lastFlushedBuffer_;\r
-        } else {\r
-            buff = surface_->GetBackBuf();\r
-        }\r
-\r
-        if (buff == nullptr) {\r
-            GRAPHIC_LOGE("buff is null!\n");\r
-            return false;\r
-        }\r
         CscYuvBuf yuv = {0};\r
-        yuv.yAddr = reinterpret_cast<uint8_t*>(buff->addr);\r
-        yuv.uvAddr = static_cast<uint8_t*>(yuv.yAddr) + ALIGN_BYTE(buff->width, YUV_WIDTH_ALIGNMENT) * buff->height;\r
-        yuv.width = buff->width;\r
-        yuv.height = buff->height;\r
-        yuv.yStride = ALIGN_BYTE(buff->width, YUV_WIDTH_ALIGNMENT);\r
-        yuv.uvStride = ALIGN_BYTE(buff->width, YUV_WIDTH_ALIGNMENT);\r
+        yuv.yAddr = reinterpret_cast<uint8_t*>(lastFlushedBuffer_->addr);\r
+        yuv.uvAddr = static_cast<uint8_t*>(yuv.yAddr) + ALIGN_BYTE(lastFlushedBuffer_->width, YUV_WIDTH_ALIGNMENT) *\r
+            lastFlushedBuffer_->height;\r
+        yuv.width = lastFlushedBuffer_->width;\r
+        yuv.height = lastFlushedBuffer_->height;\r
+        yuv.yStride = ALIGN_BYTE(lastFlushedBuffer_->width, YUV_WIDTH_ALIGNMENT);\r
+        yuv.uvStride = ALIGN_BYTE(lastFlushedBuffer_->width, YUV_WIDTH_ALIGNMENT);\r
 \r
         CscRgbBuf rgb = {0};\r
-        rgb.width = buff->width;\r
-        rgb.height = buff->height;\r
+#if UIKIT_SKIP_LINE\r
+        rgb.width = lastFlushedBuffer_->width / 2; // 2: half\r
+        rgb.height = lastFlushedBuffer_->height / 2; // 2: half\r
+#else\r
+        rgb.width = lastFlushedBuffer_->width;\r
+        rgb.height = lastFlushedBuffer_->height;\r
+#endif\r
         rgb.stride = ALIGN_BYTE(rgb.width, BYTE_ALIGNMENT) * 3; // 3: 3 bytes for rgb888\r
 \r
         bitmap.header.colorMode = RGB888;\r
@@ -221,7 +221,11 @@ bool UILiteSurfaceView::GetBitmap(ImageInfo& bitmap)
         bitmap.header.reserved = 0;\r
         rgb.addr = reinterpret_cast<uint8_t*>(ImageCacheMalloc(bitmap));\r
         if (rgb.addr != nullptr) {\r
+#if UIKIT_SKIP_LINE\r
+            CscConvertYuvToRgbWithSkipLP(&rgb, &yuv);\r
+#else\r
             CscConvertYuvToRgb(&rgb, &yuv);\r
+#endif\r
         } else {\r
             GRAPHIC_LOGE("UILiteSurfaceView::GetBitmap img alloc failed! size: 0x%x\n", bitmap.dataSize);\r
         }\r
@@ -245,6 +249,9 @@ void UILiteSurfaceView::BlitBitmapToFb(BufferInfo& gfxDstBuffer, const Rect& inv
     Rect rect = GetRect();\r
     rect.Intersect(rect, invalidatedArea);\r
     BlendOption blendOption;\r
+#if UIKIT_SKIP_LINE\r
+    blendOption.transMap.Scale(Vector2<float>{2.0, 2.0}, Vector2<float>{0, 0}); // 2.0: scale 2\r
+#endif\r
     blendOption.opacity = OPA_OPAQUE;\r
     blendOption.mode = BLEND_SRC_OVER;\r
     BaseGfxEngine::GetInstance()->Blit(gfxDstBuffer, {0, 0}, src, rect, blendOption);\r
@@ -278,7 +285,7 @@ void UILiteSurfaceView::OnDraw(BufferInfo& gfxDstBuffer, const Rect& invalidated
         return;\r
     }\r
 \r
-    if (!isFirstFrameCome_ && preView_ != nullptr) {\r
+    if ((isStopped_ || lastFlushedBuffer_ == nullptr) && preView_ != nullptr) {\r
         const ImageInfo* info = preView_->GetImageInfo();\r
         Rect coords(GetX(), GetY(), GetX() + info->header.width - 1, GetY() + info->header.height - 1);\r
         preView_->DrawImage(gfxDstBuffer, coords, invalidatedArea, *style_, opaScale_);\r
@@ -286,12 +293,13 @@ void UILiteSurfaceView::OnDraw(BufferInfo& gfxDstBuffer, const Rect& invalidated
     }\r
 \r
 #ifdef VERSION_IOT\r
-    if (isFirstFrameCome_ && RootView::GetInstance()->GetSnapshotFlag()) {\r
+    if (lastFlushedBuffer_ != nullptr && RootView::GetInstance()->GetSnapshotFlag()) {\r
         ImageInfo bitmap;\r
-        GetBitmap(bitmap);\r
-        BlitBitmapToFb(gfxDstBuffer, invalidatedArea, bitmap);\r
-        ImageCacheFree(bitmap);\r
-        return;\r
+        if (GetBitmap(bitmap)) {\r
+            BlitBitmapToFb(gfxDstBuffer, invalidatedArea, bitmap);\r
+            ImageCacheFree(bitmap);\r
+            return;\r
+        }\r
     }\r
 #endif\r
 \r
@@ -317,7 +325,6 @@ void UILiteSurfaceView::OnBufferAvailable()
     bool isLastFrame = (back->format == PIXEL_FMT_BUTT);\r
     if (isLastFrame) {\r
         back->format = PIXEL_FMT_YCBCR_420_SP;\r
-        isFirstFrameCome_ = false;\r
         flushCount_ = 0;\r
     } else {\r
         ++flushCount_;\r
@@ -325,10 +332,10 @@ void UILiteSurfaceView::OnBufferAvailable()
     lock_.Unlock();\r
 \r
     if (isLastFrame) {\r
+        isStopped_ = true;\r
         GraphicService::GetInstance()->PostGraphicEvent(\r
             [&] {\r
                 if (surface_ != nullptr) {\r
-                    isStopped_ = true;\r
                     DisplayDev::GetInstance()->SetLayerColorKey(LAYER_0, false, 0);\r
                     LiteMGfxEngine::GetInstance()->ClearHardwareLayer();\r
                     LiteMGfxEngine::GetInstance()->EnableAsyncMode(true);\r
@@ -337,15 +344,14 @@ void UILiteSurfaceView::OnBufferAvailable()
                     lastFlushedBuffer_ = nullptr;\r
                 }\r
             });\r
-    } else if (!isFirstFrameCome_) {\r
+    } 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
-                isStopped_ = false;\r
-                isFirstFrameCome_ = true;\r
             });\r
     }\r
 \r
@@ -364,4 +370,13 @@ void UILiteSurfaceView::SetPreview(ImageInfo* info)
         preView_->SetSrc(info);\r
     }\r
 }\r
+\r
+void UILiteSurfaceView::DumpImgInfo()\r
+{\r
+    if (preView_ != nullptr) {\r
+        printf("view[%p]: viewType = %d\n", this, GetViewType());\r
+        const ImageInfo* info = preView_->GetImageInfo();\r
+        PrintImgInfo(info);\r
+    }\r
+}\r
 }\r
index d4c799a..37a8fc7 100644 (file)
@@ -43,20 +43,19 @@ UIMenuItem::~UIMenuItem()
 \r
 void UIMenuItem::SetScaleCenter()\r
 {\r
-    Rect rect = GetOrigRect();\r
     if (transAlignMode_ == ScaleAlignMode::ALIGN_TEXT_LEFT) {\r
-        textScaleCenter_ = Vector2<float>{0.0, textRect_.GetHeight() / 2};\r
-        imgScaleCenter_ = Vector2<float>{textRect_.GetLeft() - imgRect_.GetLeft(), textRect_.GetHeight() / 2};\r
-        itemScaleCenter_ = Vector2<float>{textRect_.GetLeft(), textRect_.GetHeight() / 2};\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
     } else if (transAlignMode_ == ScaleAlignMode::ALIGN_IMAGE_LEFT) {\r
-        textScaleCenter_ = Vector2<float>{imgRect_.GetLeft() - textRect_.GetLeft(), imgRect_.GetHeight() / 2};\r
-        imgScaleCenter_ = Vector2<float>{0.0, imgRect_.GetHeight() / 2};\r
-        itemScaleCenter_ = Vector2<float>{imgRect_.GetLeft(), imgRect_.GetHeight() / 2};\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
     } else if (transAlignMode_ == ScaleAlignMode::ALIGN_ITEM_CENTER) {\r
         Rect rect = GetOrigRect();\r
-        itemScaleCenter_ = Vector2<float>{rect.GetX() + rect.GetWidth() / 2, rect.GetHeight() / 2};\r
-        textScaleCenter_ = Vector2<float>{itemScaleCenter_.x_ - textRect_.GetLeft(), rect.GetHeight() / 2};\r
-        imgScaleCenter_ = Vector2<float>{itemScaleCenter_.x_ - imgRect_.GetLeft(), rect.GetHeight() / 2};\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
     }\r
 }\r
 \r
@@ -99,7 +98,7 @@ void UIMenuItem::ReMeasure()
     UpdateTransformMap();\r
 }\r
 \r
-void UIMenuItem::SetImageSrc(const char* ImgSrc)\r
+void UIMenuItem::SetImageSrc(const char* imgSrc)\r
 {\r
     if (image_ == nullptr) {\r
         image_ = new UIImageView();\r
@@ -110,12 +109,12 @@ void UIMenuItem::SetImageSrc(const char* ImgSrc)
         image_->SetResizeMode(resizeMode_);\r
         image_->SetAutoEnable(false);\r
     }\r
-    image_->SetSrc(ImgSrc);\r
+    image_->SetSrc(imgSrc);\r
     UpdateRect();\r
     SetScaleCenter();\r
 }\r
 \r
-void UIMenuItem::SetImageSrc(const ImageInfo* ImgSrc)\r
+void UIMenuItem::SetImageSrc(const ImageInfo* imgSrc)\r
 {\r
     if (image_ == nullptr) {\r
         image_ = new UIImageView();\r
@@ -126,7 +125,7 @@ void UIMenuItem::SetImageSrc(const ImageInfo* ImgSrc)
         image_->SetResizeMode(resizeMode_);\r
         image_->SetAutoEnable(false);\r
     }\r
-    image_->SetSrc(ImgSrc);\r
+    image_->SetSrc(imgSrc);\r
     UpdateRect();\r
     SetScaleCenter();\r
 }\r
@@ -136,7 +135,7 @@ void UIMenuItem::OnDraw(BufferInfo& gfxDstBuffer, const Rect& invalidatedArea)
     BaseGfxEngine::GetInstance()->DrawRect(gfxDstBuffer, GetRect(), invalidatedArea, *style_, opaScale_);\r
     if (text_ != nullptr) {\r
         Rect rect;\r
-        rect.Join(invalidatedArea, textRect_);\r
+        rect.Intersect(invalidatedArea, textRect_);\r
         if (rect.GetLeft() < 0) {\r
             rect.SetLeft(0);\r
         }\r
@@ -153,4 +152,15 @@ void UIMenuItem::OnDraw(BufferInfo& gfxDstBuffer, const Rect& invalidatedArea)
         image_->OnDraw(gfxDstBuffer, invalidatedArea);\r
     }\r
 }\r
+\r
+void UIMenuItem::DumpImgInfo()\r
+{\r
+    if (image_ == nullptr) {\r
+        return;\r
+    }\r
+    printf("view[%p]: viewType = %d\n", this, GetViewType());\r
+    const ImageInfo* info = image_->GetImageInfo();\r
+    PrintImgInfo(info);\r
+}\r
+\r
 } // namespace OHOS\r
diff --git a/code/sdk/middleware/services/gui/uikit/proprietary/src/ui/frameworks/components/ui_pinyin_candidate.cpp b/code/sdk/middleware/services/gui/uikit/proprietary/src/ui/frameworks/components/ui_pinyin_candidate.cpp
new file mode 100644 (file)
index 0000000..59d9a30
--- /dev/null
@@ -0,0 +1,364 @@
+/*
+ * 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 <cmath>
+#include <securec.h>
+#include "common/graphic_utils.h"
+#include "input_method/ui_pinyin_candidate.h"
+
+#if ENABLE_SOFT_KEYBOARD
+namespace OHOS {
+
+PinyinCandidate::PinyinCandidate()
+{
+    memset_s(m_pyTabBuf, sizeof(m_pyTabBuf), 0, sizeof(m_pyTabBuf));
+    memset_s(m_hzTabBuf, sizeof(m_hzTabBuf), 0, sizeof(m_hzTabBuf));
+}
+
+PinyinCandidate::~PinyinCandidate()
+{
+}
+
+PinyinCandidate::PinyinState PinyinCandidate::InitPinyinTablePath(const std::string &path)
+{
+    size_t len = path.length();
+    char *tablePath = new char[len + 1];
+    defer {
+        delete []tablePath;
+    };
+    if (tablePath == nullptr) {
+        GRAPHIC_LOGE("the length of path is too long.");
+        return PinyinState::MEM_ALLOC_ERROR;
+    }
+    int32_t ret = snprintf_s(tablePath, len + 1, len, "%s", path.c_str());
+    if (ret == -1) {
+        GRAPHIC_LOGE("Secure fuction issue.");
+        return PinyinState::MEM_COPY_ERROR;
+    }
+    char truePath[PATH_MAX + 1] = {0x00};
+#ifndef WIN32
+    if ((path.length() == 0) || (realpath(tablePath, truePath) == nullptr)) {
+        GRAPHIC_LOGE("The path of pin yin table is invalid.");
+        return PinyinState::INVALID_PATH;
+    }
+#else
+    memcpy_s(truePath, sizeof(truePath), tablePath, len + 1);
+#endif
+    m_pinyinTablePath = truePath;
+    return PinyinState::SUCCESS;
+}
+
+int32_t PinyinCandidate::SetLv2NumPerPage(uint8_t num)
+{
+    if ((num < 1) || (num > 10)) { //  10是汉字候选码的个数
+        return -1;
+    } else {
+        m_lv2NumPerPage = num;
+        return 0;
+    }
+}
+
+PinyinCandidate::PinyinState PinyinCandidate::Init(const std::string &path)
+{
+    PinyinState pathState = InitPinyinTablePath(path);
+    if (pathState != PinyinState::SUCCESS) {
+        return pathState;
+    }
+    InitEx();
+    return PinyinState::SUCCESS;
+}
+
+void PinyinCandidate::InitEx(void)
+{
+    int32_t ret;
+    size_t len = m_pinyinTablePath.length();
+    char *table = new char[len + 1];
+    defer {
+        delete []table;
+    };
+    if (table == nullptr) {
+        GRAPHIC_LOGE("Malloc mem fails.");
+        return;
+    }
+
+    ret = snprintf_s(table, len + 1, len, "%s", m_pinyinTablePath.c_str());
+    if (ret == -1) {
+        GRAPHIC_LOGE("Secure fuction issue.");
+        return;
+    }
+
+    ret = LoadCodeTable((const int8_t *)table);
+    if (ret != 0) {
+        GRAPHIC_LOGE("LoadCodeTable failed!");
+    }
+}
+
+std::string PinyinCandidate::DebugInfo(PinyinCandidate::PinyinState state) const
+{
+    static const struct {
+        PinyinState state;
+        std::string info;
+    } infoTable[] = {
+        {PinyinState::SUCCESS, "SUCCESS"},
+        {PinyinState::INVALID_PINYIN, "INVALID_PINYIN"},
+        {PinyinState::INVALID_PATH, "INVALID_PATH"},
+        {PinyinState::MEM_NOT_ENOUGH, "MEM_NOT_ENOUGH"},
+        {PinyinState::MEM_SET_ERROR, "MEM_SET_ERROR"},
+        {PinyinState::MEM_COPY_ERROR, "MEM_COPY_ERROR"},
+        {PinyinState::MEM_ALLOC_ERROR, "MEM_ALLOC_ERROR"},
+        {PinyinState::INVALID_PAGE_INDEX, "INVALID_PAGE_INDEX"},
+    };
+    for (size_t i = 0; i < sizeof(infoTable) / sizeof(infoTable[0]); ++i) {
+        if (infoTable[i].state == state) {
+            return infoTable[i].info;
+        }
+    }
+    return "not defined!";
+}
+
+PinyinCandidate::PinyinState PinyinCandidate::FindHanzi(const std::string &sourceStr)
+{
+    if (sourceStr.length() > IME_PYMAXLENTH) {
+        return PinyinState::INVALID_PINYIN;
+    }
+
+    bool candidateFlag = false;
+
+    hanziStatus_.m_currentHzPage = 0;
+    hanziStatus_.m_currentHzIndex = 0;
+    hanziStatus_.m_matchHzNumber = 0;
+    pinyinStatus_.m_currentPyIndex = sourceStr[0] - 'a';
+
+    if (pinyinStatus_.m_currentPyIndex >= MAXCHARNUM) {
+        return PinyinState::INVALID_PINYIN;
+    }
+
+    uint8_t index;
+    for (index = 0; index < MAXSAMEPREFIXPY; index++) {
+        if (strncmp(sourceStr.c_str(),
+                reinterpret_cast<char *>(m_pyTabBuf[pinyinStatus_.m_currentPyIndex][index].pinyin),
+                sourceStr.length()) == 0) {
+            candidateFlag = true;
+            break;
+        }
+    }
+
+    if (candidateFlag == false) {
+        GRAPHIC_LOGE("查找拼音索引出错!!\n");
+        return PinyinState::INVALID_PINYIN;
+    }
+
+    hanziStatus_.m_currentHzIndex = m_pyTabBuf[pinyinStatus_.m_currentPyIndex][index].hzIndex;
+    hanziStatus_.m_matchHzNumber = m_pyTabBuf[pinyinStatus_.m_currentPyIndex][index].hzNum;
+    if (m_lv2NumPerPage != 0) {
+        hanziStatus_.m_matchHZPageNumber =
+            static_cast<uint8_t>(ceil(1.0 * hanziStatus_.m_matchHzNumber / m_lv2NumPerPage));
+    }
+
+    return PinyinState::SUCCESS;
+}
+
+PinyinCandidate::PinyinState PinyinCandidate::GetHanziPage(
+    uint8_t pageNumber, int8_t candidate[][IME_HZLENTH], uint8_t len)
+{
+    if (len < m_lv2NumPerPage) {
+        /* 存放结果的字符串长度小于要求长度 */
+        return PinyinState::MEM_NOT_ENOUGH;
+    }
+
+    if (pageNumber >= GetHanziPagesNum()) {
+        return PinyinState::INVALID_PAGE_INDEX;
+    }
+
+    for (uint8_t i = 0; i < m_lv2NumPerPage; i++) {
+        uint16_t curIndex = hanziStatus_.m_currentHzIndex + (pageNumber * m_lv2NumPerPage) + i;
+        if (curIndex >= (hanziStatus_.m_currentHzIndex + hanziStatus_.m_matchHzNumber)) {
+            break;
+        }
+
+        if (curIndex >= MAXHZNUM) {
+            break;
+        }
+
+        candidate[i][0] =
+            (int8_t)(m_hzTabBuf[curIndex]
+                         .hz >>
+                     16);  //  Shift right by 16 bytes and get the storage bitin the encoding format
+        candidate[i][1] =
+            (int8_t)(m_hzTabBuf[curIndex]
+                         .hz >>
+                     8);   //  Shift right by 8 bytes and get the storage bit in the encoding format
+        candidate[i][2] =  // 2 is the index of the Array
+            (int8_t)(m_hzTabBuf[curIndex]
+                         .hz);
+    }
+    return PinyinState::SUCCESS;
+}
+
+PinyinCandidate::PinyinState PinyinCandidate::GetFwdHanziPage(int8_t candidate[][IME_HZLENTH], uint8_t len)
+{
+    if (hanziStatus_.m_currentHzPage > 0) {
+        --hanziStatus_.m_currentHzPage;
+        return GetHanziPage(hanziStatus_.m_currentHzPage, candidate, len);
+    }
+    return PinyinState::INVALID_PAGE_INDEX;
+}
+
+PinyinCandidate::PinyinState PinyinCandidate::GetCurHanziPage(int8_t candidate[][IME_HZLENTH], uint8_t len)
+{
+    return GetHanziPage(hanziStatus_.m_currentHzPage, candidate, len);
+}
+
+PinyinCandidate::PinyinState PinyinCandidate::GetNxtHanziPage(int8_t candidate[][IME_HZLENTH], uint8_t len)
+{
+    if (hanziStatus_.m_currentHzPage + 1 < GetHanziPagesNum()) {
+        ++hanziStatus_.m_currentHzPage;
+        return GetHanziPage(hanziStatus_.m_currentHzPage, candidate, len);
+    }
+    return PinyinState::INVALID_PAGE_INDEX;
+}
+
+PinyinCandidate::PinyinState PinyinCandidate::GetAllHanzi(int8_t candidate[][IME_HZLENTH], uint8_t len)
+{
+    if (len < hanziStatus_.m_matchHzNumber) {
+        return PinyinState::MEM_NOT_ENOUGH;
+    }
+
+    for (uint16_t i = hanziStatus_.m_currentHzIndex; i < hanziStatus_.m_currentHzIndex + hanziStatus_.m_matchHzNumber;
+         ++i) {
+        if (i >= MAXHZNUM) {
+            break;
+        }
+        candidate[i - hanziStatus_.m_currentHzIndex][0] =
+            static_cast<int8_t>(m_hzTabBuf[i]
+                         .hz >>
+                     16);  //  Shift right by 16 bytes and get the storage bitin the encoding format
+        candidate[i - hanziStatus_.m_currentHzIndex][1] =
+            static_cast<int8_t>(m_hzTabBuf[i]
+                         .hz >>
+                     8);   //  Shift right by 8 bytes and get the storage bit in the encoding format
+        candidate[i - hanziStatus_.m_currentHzIndex][2] =  // 2 is the index of the Array
+            static_cast<int8_t>(m_hzTabBuf[i]
+                         .hz);
+    }
+    return PinyinState::SUCCESS;
+}
+
+int32_t PinyinCandidate::LoadCodeTable(const int8_t *filePath)
+{
+    int32_t ret;
+    FILE *tableFile = nullptr;
+    uint32_t bufLen;
+    char resolvedPath[PATH_MAX + 1] = {0};
+
+#ifndef WIN32
+    if (realpath((const char *)filePath, resolvedPath) == nullptr) {
+        return -1;
+    }
+#else
+    memcpy_s(resolvedPath, sizeof(resolvedPath), filePath, strlen(reinterpret_cast<const char*>(filePath)) + 1);
+#endif
+
+    tableFile = fopen((const char *)resolvedPath, "rb");
+    if (tableFile == nullptr) {
+        return -1;
+    }
+
+    ret = memset_s(m_hzTabBuf, sizeof(m_hzTabBuf), 0, sizeof(m_hzTabBuf));
+    if (ret != EOK) {
+        (void)fclose(tableFile);
+        return -1;
+    }
+
+    ret = memset_s(m_pyTabBuf, sizeof(m_pyTabBuf), 0, sizeof(m_pyTabBuf));
+    if (ret != EOK) {
+        (void)fclose(tableFile);
+        return -1;
+    }
+
+    bufLen = fread(m_hzTabBuf, 1, sizeof(m_hzTabBuf), tableFile);
+    if (bufLen != sizeof(m_hzTabBuf)) {
+        (void)fclose(tableFile);
+        return -1;
+    }
+
+    if (fread(m_pyTabBuf, 1, sizeof(m_pyTabBuf), tableFile) != sizeof(m_pyTabBuf)) {
+        (void)fclose(tableFile);
+        return -1;
+    }
+
+    (void)fclose(tableFile);
+
+    return 0;
+}
+
+int32_t PinyinCandidate::RecoverCodeTable(const int8_t *filePath, const int8_t *BackupPath)
+{
+    FILE *tableFile = nullptr;
+    FILE *backupFile = nullptr;
+    uint32_t fileSizeCounter = 0;
+    int32_t temp = 0;
+    char resolvedPath1[PATH_MAX + 1] = {0};
+    char resolvedPath2[PATH_MAX + 1] = {0};
+
+#ifndef WIN32
+    if (realpath((const char *)filePath, resolvedPath1) == nullptr) {
+        return -1;
+    }
+
+    if (realpath((const char *)BackupPath, resolvedPath2)  == nullptr) {
+        return -1;
+    }
+#endif
+
+    /* 只写方式打开 */
+    tableFile = fopen(reinterpret_cast<char *>(resolvedPath1), "w");
+    if (tableFile == nullptr) {
+        return -1;
+    }
+
+    /* 只读方式打开 */
+    backupFile = fopen(reinterpret_cast<char *>(resolvedPath2), "r");
+    if (backupFile == nullptr) {
+        (void)fclose(tableFile);
+        return -1;
+    }
+
+    while (1) {
+        temp = fgetc(backupFile);
+        if ((temp == EOF) || (feof(backupFile) != 0)) {
+            break;
+        }
+
+        fputc((int8_t)temp, tableFile);
+        fileSizeCounter++;
+        if (fileSizeCounter > (sizeof(m_hzTabBuf) + sizeof(m_pyTabBuf))) {
+            /* 防止出错造成死循环 */
+            break;
+        }
+    }
+
+    fclose(tableFile);
+    fclose(backupFile);
+    if (fileSizeCounter == (sizeof(m_hzTabBuf) + sizeof(m_pyTabBuf))) {
+        GRAPHIC_LOGD("Code table file recover successed!");
+        return 0;
+    } else {
+        return -1;
+    }
+}
+
+} // namespace OHOS
+#endif // ENABLE_SOFT_KEYBOARD
\ No newline at end of file
index e5e5f57..d947fe1 100644 (file)
@@ -288,7 +288,8 @@ void UIEnglishSoftKeyboard::CreateKeyButtons()
 {
     std::vector<SoftKey> keySet {
         {{COL_2_X, ROW_1_Y, KEY_WIDTH, KEY_HEIGHT}, {UI_KEYCODE::UI_KEY_SOFT_KEYBOARD_CAP,
-            UI_KEYCODE::UI_KEY_SOFT_KEYBOARD_NUMBER, UI_KEYCODE::UI_KEY_SOFT_KEYBOARD_SYMBOL}},
+            UI_KEYCODE::UI_KEY_SOFT_KEYBOARD_NUMBER, UI_KEYCODE::UI_KEY_SOFT_KEYBOARD_SYMBOL,
+            UI_KEYCODE::UI_KEY_SOFT_KEYBOARD_PINYIN}},
         {{COL_3_X, ROW_1_Y, KEY_WIDTH, KEY_HEIGHT}, {UI_KEYCODE::UI_KEY_a, UI_KEYCODE::UI_KEY_b, UI_KEYCODE::UI_KEY_c}},
         {{COL_4_X, ROW_1_Y, KEY_WIDTH, KEY_HEIGHT}, {UI_KEYCODE::UI_KEY_d, UI_KEYCODE::UI_KEY_e, UI_KEYCODE::UI_KEY_f}},
         {{COL_2_X, ROW_2_Y, KEY_WIDTH, KEY_HEIGHT}, {UI_KEYCODE::UI_KEY_g, UI_KEYCODE::UI_KEY_h, UI_KEYCODE::UI_KEY_i}},
@@ -318,7 +319,8 @@ void UICapitalSoftKeyboard::CreateKeyButtons()
 {
     std::vector<SoftKey> keySet {
         {{COL_2_X, ROW_1_Y, KEY_WIDTH, KEY_HEIGHT}, {UI_KEYCODE::UI_KEY_SOFT_KEYBOARD_EN,
-            UI_KEYCODE::UI_KEY_SOFT_KEYBOARD_NUMBER, UI_KEYCODE::UI_KEY_SOFT_KEYBOARD_SYMBOL}},
+            UI_KEYCODE::UI_KEY_SOFT_KEYBOARD_NUMBER, UI_KEYCODE::UI_KEY_SOFT_KEYBOARD_SYMBOL,
+            UI_KEYCODE::UI_KEY_SOFT_KEYBOARD_PINYIN}},
         {{COL_3_X, ROW_1_Y, KEY_WIDTH, KEY_HEIGHT}, {UI_KEYCODE::UI_KEY_A, UI_KEYCODE::UI_KEY_B, UI_KEYCODE::UI_KEY_C}},
         {{COL_4_X, ROW_1_Y, KEY_WIDTH, KEY_HEIGHT}, {UI_KEYCODE::UI_KEY_D, UI_KEYCODE::UI_KEY_E, UI_KEYCODE::UI_KEY_F}},
         {{COL_2_X, ROW_2_Y, KEY_WIDTH, KEY_HEIGHT}, {UI_KEYCODE::UI_KEY_G, UI_KEYCODE::UI_KEY_H, UI_KEYCODE::UI_KEY_I}},
@@ -355,8 +357,9 @@ void UINumberSoftKeyboard::CreateKeyButtons()
         {{COL_3_X, ROW_2_Y, KEY_WIDTH, KEY_HEIGHT}, {UI_KEYCODE::UI_KEY_0}},
         {{COL_4_X, ROW_2_Y, KEY_WIDTH, KEY_HEIGHT}, {UI_KEYCODE::UI_KEY_ASTERISK, UI_KEYCODE::UI_KEY_SLASH,
             UI_KEYCODE::UI_KEY_EQUAL}},
-        {{COL_2_X, ROW_3_Y, KEY_WIDTH, KEY_HEIGHT}, {UI_KEYCODE::UI_KEY_SOFT_KEYBOARD_CAP}},
-        {{COL_3_X, ROW_3_Y, KEY_WIDTH, KEY_HEIGHT}, {UI_KEYCODE::UI_KEY_SOFT_KEYBOARD_EN}},
+        {{COL_2_X, ROW_3_Y, KEY_WIDTH, KEY_HEIGHT}, {UI_KEYCODE::UI_KEY_SOFT_KEYBOARD_CAP,
+                                                     UI_KEYCODE::UI_KEY_SOFT_KEYBOARD_EN}},
+        {{COL_3_X, ROW_3_Y, KEY_WIDTH, KEY_HEIGHT}, {UI_KEYCODE::UI_KEY_SOFT_KEYBOARD_PINYIN}},
         {{COL_4_X, ROW_3_Y, KEY_WIDTH, KEY_HEIGHT}, {UI_KEYCODE::UI_KEY_SOFT_KEYBOARD_SYMBOL}},
         //  FUNCTION_KEY
         {{COL_1_X, ROW_1_Y, KEY_WIDTH, KEY_HEIGHT}, {UI_KEYCODE::UI_KEY_DEL}},
@@ -377,7 +380,8 @@ void UISymbolSoftKeyboard::CreateKeyButtons()
 {
     std::vector<SoftKey> keySet {
         {{COL_2_X, ROW_1_Y, KEY_WIDTH, KEY_HEIGHT}, {UI_KEYCODE::UI_KEY_SOFT_KEYBOARD_CAP,
-            UI_KEYCODE::UI_KEY_SOFT_KEYBOARD_EN, UI_KEYCODE::UI_KEY_SOFT_KEYBOARD_NUMBER}},
+            UI_KEYCODE::UI_KEY_SOFT_KEYBOARD_EN, UI_KEYCODE::UI_KEY_SOFT_KEYBOARD_PINYIN,
+            UI_KEYCODE::UI_KEY_SOFT_KEYBOARD_NUMBER}},
         {{COL_3_X, ROW_1_Y, KEY_WIDTH, KEY_HEIGHT}, {UI_KEYCODE::UI_KEY_EXCLAM, UI_KEYCODE::UI_KEY_DOUBLEQUOTE,
             UI_KEYCODE::UI_KEY_NUMBERSIGN}},
         {{COL_4_X, ROW_1_Y, KEY_WIDTH, KEY_HEIGHT}, {UI_KEYCODE::UI_KEY_DOLLAR, UI_KEYCODE::UI_KEY_PERCENT,
@@ -402,5 +406,37 @@ void UISymbolSoftKeyboard::CreateKeyButtons()
         SetupKeyButton(key);
     }
 }
+
+void UIPinyinSoftKeyboard::CreateKeyButtons()
+{
+    std::vector<SoftKey> keySet {
+        {{COL_2_X, ROW_1_Y, KEY_WIDTH, KEY_HEIGHT}, {UI_KEYCODE::UI_KEY_SOFT_KEYBOARD_EN,
+                                                     UI_KEYCODE::UI_KEY_SOFT_KEYBOARD_CAP,
+                                                     UI_KEYCODE::UI_KEY_SOFT_KEYBOARD_NUMBER,
+                                                     UI_KEYCODE::UI_KEY_SOFT_KEYBOARD_SYMBOL}},
+        {{COL_3_X, ROW_1_Y, KEY_WIDTH, KEY_HEIGHT}, {UI_KEYCODE::UI_KEY_a, UI_KEYCODE::UI_KEY_b, UI_KEYCODE::UI_KEY_c}},
+        {{COL_4_X, ROW_1_Y, KEY_WIDTH, KEY_HEIGHT}, {UI_KEYCODE::UI_KEY_d, UI_KEYCODE::UI_KEY_e, UI_KEYCODE::UI_KEY_f}},
+        {{COL_2_X, ROW_2_Y, KEY_WIDTH, KEY_HEIGHT}, {UI_KEYCODE::UI_KEY_g, UI_KEYCODE::UI_KEY_h, UI_KEYCODE::UI_KEY_i}},
+        {{COL_3_X, ROW_2_Y, KEY_WIDTH, KEY_HEIGHT}, {UI_KEYCODE::UI_KEY_j, UI_KEYCODE::UI_KEY_k, UI_KEYCODE::UI_KEY_l}},
+        {{COL_4_X, ROW_2_Y, KEY_WIDTH, KEY_HEIGHT}, {UI_KEYCODE::UI_KEY_m, UI_KEYCODE::UI_KEY_n, UI_KEYCODE::UI_KEY_o}},
+        {{COL_2_X, ROW_3_Y, KEY_WIDTH, KEY_HEIGHT}, {UI_KEYCODE::UI_KEY_p, UI_KEYCODE::UI_KEY_q, UI_KEYCODE::UI_KEY_r,
+            UI_KEYCODE::UI_KEY_s}},
+        {{COL_3_X, ROW_3_Y, KEY_WIDTH, KEY_HEIGHT}, {UI_KEYCODE::UI_KEY_t, UI_KEYCODE::UI_KEY_u, UI_KEYCODE::UI_KEY_v}},
+        {{COL_4_X, ROW_3_Y, KEY_WIDTH, KEY_HEIGHT}, {UI_KEYCODE::UI_KEY_w, UI_KEYCODE::UI_KEY_x, UI_KEYCODE::UI_KEY_y,
+            UI_KEYCODE::UI_KEY_z}},
+        //  FUNCTION_KEY
+        {{COL_1_X, ROW_1_Y, KEY_WIDTH, KEY_HEIGHT}, {UI_KEYCODE::UI_KEY_DEL}},
+        {{COL_5_X, ROW_1_Y, KEY_WIDTH, KEY_HEIGHT}, {UI_KEYCODE::UI_KEY_ENTER}},
+    };
+    for (auto key : keySet) {
+        SetupKeyButton(key);
+    }
+}
+
+UIPinyinSoftKeyboard* UIPinyinSoftKeyboard::GetInstance()
+{
+    static UIPinyinSoftKeyboard pinyinSoftkeyboard;
+    return &pinyinSoftkeyboard;
+}
 } // namespace OHOS
 #endif // ENABLE_SOFT_KEYBOARD
index b4fb207..86515b8 100644 (file)
@@ -434,5 +434,37 @@ void UISweepClock::UpdateClock(bool clockInit)
         CalculateRedrawArea(rect, secondHand_, clockInit);
     }
 }
+
+void UISweepClock::DumpImgInfo()
+{
+    printf("view[%p]: viewType = %d\n", this, GetViewType());
+    if ((hourHand_.drawtype_ == DrawType::DRAW_IMAGE) && (hourHand_.image_.GetSrcType() == IMG_SRC_VARIABLE)) {
+        const ImageInfo* info = hourHand_.image_.GetImageInfo();
+        PrintImgInfo(info);
+    }
+    if ((minuteHand_.drawtype_ == DrawType::DRAW_IMAGE) && (minuteHand_.image_.GetSrcType() == IMG_SRC_VARIABLE)) {
+        const ImageInfo* info = minuteHand_.image_.GetImageInfo();
+        PrintImgInfo(info);
+    }
+    if ((secondHand_.drawtype_ == DrawType::DRAW_IMAGE) && (secondHand_.image_.GetSrcType() == IMG_SRC_VARIABLE)) {
+        const ImageInfo* info = secondHand_.image_.GetImageInfo();
+        PrintImgInfo(info);
+    }
+
+    if ((hourHandCircle_.circleImg_.GetSrcType() == IMG_SRC_VARIABLE)) {
+        const ImageInfo* info = hourHandCircle_.circleImg_.GetImageInfo();
+        PrintImgInfo(info);
+    }
+
+    if ((minuteHandCircle_.circleImg_.GetSrcType() == IMG_SRC_VARIABLE)) {
+        const ImageInfo* info = minuteHandCircle_.circleImg_.GetImageInfo();
+        PrintImgInfo(info);
+    }
+
+    if ((secondHandCircle_.circleImg_.GetSrcType() == IMG_SRC_VARIABLE)) {
+        const ImageInfo* info = secondHandCircle_.circleImg_.GetImageInfo();
+        PrintImgInfo(info);
+    }
+}
 }
 #endif
index bfca7ed..51355dd 100644 (file)
@@ -135,6 +135,8 @@ void UITextPreviewBox::GetLineInfo(LineInfo& lineInfo)
     if (text == nullptr) {
         return;
     }
+    std::string u8str(text);
+    std::wstring u16str;
     UIFont::GetInstance()->SetCurrentFontId(inputText_->GetFontId(), inputText_->GetFontSize());
     lineInfo.lineHeight = GetStyleConst().GetStyle(STYLE_LINE_HEIGHT);
     if (lineInfo.lineHeight == 0) {
@@ -147,8 +149,9 @@ void UITextPreviewBox::GetLineInfo(LineInfo& lineInfo)
     uint32_t begin = 0;
     while ((begin < textLen) && (text[begin] != '\0') && (lineNum < GetMaxLength())) {
         uint32_t count = inputText_->GetTextLine(begin, textLen, GetContentRect().GetWidth(), lineNum, 0);
+        u16str = Utf8ToUtf16(u8str.substr(begin, count));
         begin += count;
-        lineInfo.charCountPerLine.push_back(count);
+        lineInfo.charCountPerLine.push_back(u16str.length());
         lineNum++;
     }
 }
@@ -184,18 +187,45 @@ void UITextPreviewBox::InitCursor()
 
 void UITextPreviewBox::InsertChar(UI_KEYCODE& keyCode)
 {
-    std::string temp = tempText_;
-    temp.insert(cursorIndex_, 1, static_cast<char>(keyCode));
-    if (!CheckSpaceLeft(temp.c_str())) {
+    std::wstring temp = tempText_;
+    std::string str;
+    temp.insert(cursorIndex_, 1, static_cast<wchar_t>(keyCode));
+    str = Utf16ToUtf8(temp);
+    if (!CheckSpaceLeft(str.c_str())) {
         GRAPHIC_LOGE("Character length exceeded. Fail to input the letter.");
         return;
     }
 
-    tempText_.insert(cursorIndex_, 1, static_cast<char>(keyCode));
+    tempText_.insert(cursorIndex_, 1, static_cast<wchar_t>(keyCode));
     uint16_t width = UIFont::GetInstance()->GetWidth(static_cast<uint32_t>(keyCode), 0);
     widthOfChars_.insert(widthOfChars_.begin() + cursorIndex_, width);
 
-    UIEditText::SetText(tempText_.c_str());
+    str = Utf16ToUtf8(tempText_);
+    UIEditText::SetText(str.c_str());
+    GetLineInfo(lineInfo_);
+
+    cursorIndex_++;
+    HandleCursorPosByIndex();
+}
+
+void UITextPreviewBox::InsertHanzi(const std::string &u8hanzi)
+{
+    std::wstring temp = tempText_;
+    std::string str;
+    std::wstring u16hanzi = Utf8ToUtf16(u8hanzi);
+    temp.insert(cursorIndex_, 1, u16hanzi[0]);
+    str = Utf16ToUtf8(temp);
+    if (!CheckSpaceLeft(str.c_str())) {
+        GRAPHIC_LOGE("Character length exceeded. Fail to input the letter.");
+        return;
+    }
+
+    tempText_.insert(cursorIndex_, 1, u16hanzi[0]);
+    uint16_t width = UIFont::GetInstance()->GetWidth(u16hanzi[0], 0);
+    widthOfChars_.insert(widthOfChars_.begin() + cursorIndex_, width);
+
+    str = Utf16ToUtf8(tempText_);
+    UIEditText::SetText(str.c_str());
     GetLineInfo(lineInfo_);
 
     cursorIndex_++;
@@ -210,7 +240,8 @@ void UITextPreviewBox::DeleteChar()
     tempText_.erase(cursorIndex_ - 1, 1);
     widthOfChars_.erase(widthOfChars_.begin() + cursorIndex_ - 1);
 
-    UIEditText::SetText(tempText_.c_str());
+    std::string temp = Utf16ToUtf8(tempText_);
+    UIEditText::SetText(temp.c_str());
     GetLineInfo(lineInfo_);
 
     cursorIndex_--;
@@ -307,13 +338,15 @@ void UITextPreviewBox::SetText(std::string text)
     widthOfChars_.clear();
     tempText_.clear();
 
-    tempText_ = text;
-    for (uint16_t i = 0; i < text.length(); i++) {
-        uint16_t width = UIFont::GetInstance()->GetWidth(text[i], 0);
+    tempText_ = Utf8ToUtf16(text);
+    UIEditText::SetText(text.c_str());
+    UIFont::GetInstance()->SetCurrentFontId(inputText_->GetFontId(), inputText_->GetFontSize());
+
+    for (uint16_t i = 0; i < tempText_.length(); i++) {
+        uint16_t width = UIFont::GetInstance()->GetWidth(tempText_[i], 0);
         widthOfChars_.push_back(width);
     }
 
-    UIEditText::SetText(tempText_.c_str());
     GetLineInfo(lineInfo_);
 
     cursorIndex_ = widthOfChars_.size();
index 1900882..5a5fb8e 100644 (file)
@@ -25,7 +25,7 @@ public:
      * @since 1.0
      * @version 1.0
      */
-    virtual ~HorSwipeView() {}
+    ~HorSwipeView() override {}
 
     bool DragXInner(int16_t distance) override;
     bool OnDragEvent(const DragEvent& event) override;
index e747319..4cae676 100644 (file)
@@ -15,6 +15,7 @@
 #ifndef GRAPHIC_LITE_MAP_SVG_PARSER_H\r
 #define GRAPHIC_LITE_MAP_SVG_PARSER_H\r
 #include <cstdint>\r
+#include <string>\r
 #include "gfx_utils/color.h"\r
 \r
 namespace OHOS {\r
@@ -88,7 +89,10 @@ public:
     MapSVGParser(void);\r
     virtual ~MapSVGParser(void);\r
 \r
+    bool SetSVG(const std::string& file);\r
     bool SetSVG(uint8_t* data, uint32_t length);\r
+    void ClearSVG();\r
+\r
     Color24 GetBackGroundColor(void);\r
     uint32_t GetImageOffset(void);\r
     void GetSize(int16_t& width, int16_t& height);\r
@@ -100,7 +104,6 @@ public:
     PathStyle* GetPathStyleByIndex(uint8_t index);\r
     TextDetail* GetTextByIndex(uint8_t index);\r
     ImageDetail* GetImageByIndex(uint8_t index);\r
-    void ClearSVG();\r
 \r
 private:\r
     struct MapHeader {\r
@@ -119,9 +122,10 @@ private:
     };\r
 \r
     static constexpr uint8_t PARSER_TYPE_NUM = 5;\r
-    using MapTypeParserInit = uint32_t (MapSVGParser::*)(\r
-        uint8_t *data, uint32_t length, uint32_t offset, uint8_t count);\r
-    using MapTypeParserDeinit = void (MapSVGParser::*)(uint8_t count);\r
+    using MapTypeReadByData = uint32_t (MapSVGParser::*)(uint8_t *data, uint32_t length,\r
+        uint32_t offset, uint8_t count);\r
+    using MapTypeReadByPath = uint32_t (MapSVGParser::*)(FILE* fp, uint8_t count);\r
+    using MapTypeRelease = void (MapSVGParser::*)(uint8_t count);\r
 \r
     uint32_t ReadMapNode(uint8_t* data, uint32_t length, uint32_t offset);\r
     uint32_t ReadPathStyle(uint8_t* data, uint32_t length, uint32_t offset);\r
@@ -130,23 +134,35 @@ private:
     uint32_t ReadMapImg(uint8_t* data, uint32_t length, uint32_t offset, uint8_t count);\r
     uint32_t ReadMapRoad(uint8_t* data, uint32_t length, uint32_t offset, uint8_t count);\r
     uint32_t ReadMapPOI(uint8_t* data, uint32_t length, uint32_t offset, uint8_t count);\r
-    uint32_t ReadImage(uint8_t* data, uint32_t length, uint32_t offset);\r
+\r
+    uint32_t ReadMapNode(FILE* fp);\r
+    uint32_t ReadPathStyle(FILE* fp);\r
+    uint32_t ReadMapPath(FILE* fp, uint8_t count);\r
+    uint32_t ReadMapText(FILE* fp, uint8_t count);\r
+    uint32_t ReadMapImg(FILE* fp, uint8_t count);\r
+    uint32_t ReadMapRoad(FILE* fp, uint8_t count);\r
+    uint32_t ReadMapPOI(FILE* fp, uint8_t count);\r
 \r
     void ReleaseMapPath(uint8_t count);\r
     void ReleaseMapText(uint8_t count);\r
     void ReleaseMapImg(uint8_t count);\r
     void ReleaseMapRoad(uint8_t count);\r
     void ReleaseMapPOI(uint8_t count);\r
+\r
     void ReleaseResource(void);\r
     bool AllocPath(PathDetail& path, uint32_t cmdNum, uint32_t dataNum);\r
 \r
-    MapTypeParserInit parserInitFunc[PARSER_TYPE_NUM] = { &MapSVGParser::ReadMapPath, &MapSVGParser::ReadMapText,\r
-                                                          &MapSVGParser::ReadMapImg, &MapSVGParser::ReadMapRoad,\r
-                                                          &MapSVGParser::ReadMapPOI };\r
-    MapTypeParserDeinit parserDeinitFunc[PARSER_TYPE_NUM] = {\r
+    MapTypeReadByData readByDataFunc[PARSER_TYPE_NUM] = {\r
+        &MapSVGParser::ReadMapPath, &MapSVGParser::ReadMapText, &MapSVGParser::ReadMapImg,\r
+        &MapSVGParser::ReadMapRoad, &MapSVGParser::ReadMapPOI };\r
+\r
+    MapTypeReadByPath readByPathFunc[PARSER_TYPE_NUM] = {\r
+        &MapSVGParser::ReadMapPath, &MapSVGParser::ReadMapText, &MapSVGParser::ReadMapImg,\r
+        &MapSVGParser::ReadMapRoad, &MapSVGParser::ReadMapPOI };\r
+\r
+    MapTypeRelease releaseFunc[PARSER_TYPE_NUM] = {\r
         &MapSVGParser::ReleaseMapPath, &MapSVGParser::ReleaseMapText, &MapSVGParser::ReleaseMapImg,\r
-        &MapSVGParser::ReleaseMapRoad, &MapSVGParser::ReleaseMapPOI\r
-    };\r
+        &MapSVGParser::ReleaseMapRoad, &MapSVGParser::ReleaseMapPOI };\r
 \r
     MapHeader mapHeader_ = {0};\r
     MapNode* nodeArray_ = nullptr;\r
@@ -162,6 +178,7 @@ private:
     POIDetail* poiArray_ = nullptr;\r
     uint8_t poiCount_ = 0;\r
     uint8_t* data_ = nullptr;\r
+    std::string file_;\r
 };\r
 }\r
 #endif // GRAPHIC_LITE_MAP_SVG_PARSER_H\r
index a10a397..2701369 100644 (file)
@@ -36,9 +36,9 @@ void InputMethodManager::ShowInputMethod(UIView* view)
         return;
     }
 
-    inputView_ = view;
     UIViewType viewType = view->GetViewType();
     if (viewType == UI_EDIT_TEXT) {
+        inputView_ = view; // 点击光标会导致字符串丢失,此处修改可以避免这个问题
         UIEditText* tmpView = reinterpret_cast<UIEditText*>(view);
         InputMethodParam param;
         param.view = view;
index 5f80183..b2771f1 100644 (file)
@@ -28,6 +28,7 @@
 #include "securec.h"
 #include "dfx/dfx_record.h"
 #include "common/low_power_manager.h"
+#include "common/image_cache_manager.h"
 
 #if ENABLE_DEBUG
 #include "common/key_code.h"
@@ -75,6 +76,31 @@ void DumpMemoryCmd(int argc, char *argv[])
 {
     MemCheck::GetInstance()->DumpMemInfo();
 }
+
+void DumpImgCmd(int argc, char *argv[])
+{
+    ImageCacheManager::GetInstance().Dump();
+
+    printf("\n\n");
+    printf("========================DumpImgInfoRecursive========================\n");
+    RootView::GetInstance()->DumpImgInfoRecursive();
+}
+
+void SetMemMonitorCmd(int argc, char *argv[])
+{
+    if (argc != 1) {
+        GRAPHIC_LOGE("param err.\n");
+        return;
+    }
+    if (strcmp(argv[0], "0") == 0) {
+        GrallocEngines::GetInstance()->SetMemMonitor(false);
+    } else if (strcmp(argv[0], "1") == 0) {
+        GrallocEngines::GetInstance()->SetMemMonitor(true);
+    } else {
+        GRAPHIC_LOGE("param err.\n");
+        return;
+    }
+}
 #endif
 
 static bool ConvertToInt(const char* input, uint16_t& value)
@@ -471,6 +497,8 @@ struct DfxCmd g_dfxCmdList[] = {
     {"showtime", OHOS::ShowTime},
 #if ENABLE_MEMORY_CHECK
     {"dumpmem", OHOS::DumpMemoryCmd},
+    {"mem_monitor", OHOS::SetMemMonitorCmd},
+    {"dumpimg", OHOS::DumpImgCmd},
 #endif
 #if ENABLE_DEBUG
     {"inject_rotate", OHOS::InjectRotateEvent},
index 1785e88..2d84cd6 100644 (file)
@@ -156,7 +156,7 @@ void DfxRenderReset()
 void DfxRecordShow()
 {
     if (g_dfxShow == ShowType::DFX_SHOW_ULPS) {
-        GRAPHIC_LOGP("g_ulpsExit: %d, g_flush: %d\n", g_ulpsExit, g_flush);
+        GRAPHIC_LOGP("g_ulpsExit: %u, g_flush: %u\n", g_ulpsExit, g_flush);
         return;
     }
 
diff --git a/code/sdk/middleware/services/gui/uikit/proprietary/src/ui/frameworks/swipe_effect/cube_effect.cpp b/code/sdk/middleware/services/gui/uikit/proprietary/src/ui/frameworks/swipe_effect/cube_effect.cpp
new file mode 100644 (file)
index 0000000..748f45e
--- /dev/null
@@ -0,0 +1,162 @@
+/*
+ * 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 "securec.h"
+#include "common/screen.h"
+#include "cube_effect.h"
+
+namespace OHOS {
+namespace {
+static constexpr int16_t EASE_RANGE = 100;
+static constexpr int16_t CAMERA_DISTANCE = 500;
+static constexpr int16_t ROTATE_RANGE_MAX = 90;
+}
+
+void CubeEffect::OnSwipe(UISwipeView& view)
+{
+    if (preLeftCard != nullptr) {
+        preLeftCard->ResetTransParameter();
+        preLeftCard = nullptr;
+        container_->UIViewGroup::Remove(&leftImg_);
+        leftImg_.ResetTransParameter();
+    }
+
+    if (preRightCard != nullptr) {
+        preRightCard->ResetTransParameter();
+        preRightCard = nullptr;
+        container_->UIViewGroup::Remove(&rightImg_);
+        rightImg_.ResetTransParameter();
+    }
+}
+
+void CubeEffect::TransformCard(UIView* leftCard, UIView* rightCard, int16_t xOffset)
+{
+    int16_t width = Screen::GetInstance().GetWidth();
+
+    float angle = ROTATE_RANGE_MAX * MATH_ABS(xOffset) / (float)width;
+
+    uint16_t leftW = leftCard->GetWidth();
+    Vector3<float> leftRotateStart = {leftW + 1, 0, 0};
+    Vector3<float> leftRotateEnd = {leftW + 1, 1, 0};
+    Vector3<float> rightRotateStart = {-1, 0, 0};
+    Vector3<float> rightRotateEnd = {-1, 1, 0};
+    if (xOffset > 0) {
+        leftCard->Rotate((angle - ROTATE_RANGE_MAX), leftRotateStart, leftRotateEnd);
+        rightCard->Rotate(angle, rightRotateStart, rightRotateEnd);
+    } else if (xOffset < 0) {
+        leftCard->Rotate(-angle, leftRotateStart, leftRotateEnd);
+        rightCard->Rotate((ROTATE_RANGE_MAX - angle), rightRotateStart, rightRotateEnd);
+    } else {
+        leftCard->ResetTransParameter();
+        rightCard->ResetTransParameter();
+    }
+}
+
+void CubeEffect::TransformMirrorCard(UIView& leftCard, UIView& rightCard, int16_t xOffset)
+{
+    int16_t width = Screen::GetInstance().GetWidth();
+    int16_t height = Screen::GetInstance().GetHeight();
+    float angle = ROTATE_RANGE_MAX * MATH_ABS(xOffset) / (float)width;
+
+    Matrix4<float> perspectiveMatrix;
+    perspectiveMatrix[2][2] = 0;            // 2 : index
+    perspectiveMatrix[2][3] = -1.0f / CAMERA_DISTANCE; // 2 3 : index 1000:cam distance
+
+    int16_t leftRigth = leftCard.GetOrigRect().GetRight();
+    int16_t leftBottom = leftCard.GetOrigRect().GetBottom();
+    Matrix4<float> leftMatrix = Matrix4<float>::Rotate(180.0f, {0, leftBottom, 0}, {1.0, leftBottom, 0});
+    Vector3<float> leftRotateStart = {leftRigth, 0, 0};
+    Vector3<float> leftRotateEnd = {leftRigth, 1, 0};
+    Matrix4<float> leftTranslateFromCamera = Matrix4<float>::Translate(Vector3<float>(-leftRigth, -(height >> 1), 0));
+    Matrix4<float> leftTranslateToCamera = Matrix4<float>::Translate(Vector3<float>(leftRigth, (height >> 1), 0));
+
+    int16_t rightBottom = rightCard.GetOrigRect().GetBottom();
+    Matrix4<float> rightMatrix = Matrix4<float>::Rotate(180.0f, {0, rightBottom, 0}, {1.0, rightBottom, 0});
+    Vector3<float> rightRotateStart = {0, 0, 0};
+    Vector3<float> rightRotateEnd = {0, 1, 0};
+    Matrix4<float> rightTranslateFromCamera = Matrix4<float>::Translate(Vector3<float>(0, -(height >> 1), 0));
+    Matrix4<float> rightTranslateToCamera = Matrix4<float>::Translate(Vector3<float>(0, (height >> 1), 0));
+    if (xOffset > 0) {
+        leftMatrix = Matrix4<float>::Rotate((angle - ROTATE_RANGE_MAX), leftRotateStart, leftRotateEnd) * leftMatrix;
+        leftMatrix = leftTranslateToCamera * (perspectiveMatrix * leftTranslateFromCamera) * leftMatrix;
+        leftMatrix = Matrix4<float>::Translate({-(width - xOffset), 0, 0}) * leftMatrix;
+
+        rightMatrix = Matrix4<float>::Rotate(angle, rightRotateStart, rightRotateEnd) * rightMatrix;
+        rightMatrix = rightTranslateToCamera * (perspectiveMatrix * rightTranslateFromCamera) * rightMatrix;
+        rightMatrix = Matrix4<float>::Translate({xOffset, 0, 0}) * rightMatrix;
+    } else {
+        leftMatrix = Matrix4<float>::Rotate(-angle, leftRotateStart, leftRotateEnd) * leftMatrix;
+        leftMatrix = leftTranslateToCamera * (perspectiveMatrix * leftTranslateFromCamera) * leftMatrix;
+        leftMatrix = Matrix4<float>::Translate({xOffset, 0, 0}) * leftMatrix;
+
+        rightMatrix =
+            Matrix4<float>::Rotate((ROTATE_RANGE_MAX - angle), rightRotateStart, rightRotateEnd) * rightMatrix;
+        rightMatrix = rightTranslateToCamera * (perspectiveMatrix * rightTranslateFromCamera) * rightMatrix;
+        rightMatrix = Matrix4<float>::Translate({width + xOffset, 0, 0}) * rightMatrix;
+    }
+    TransformMap tempTrans;
+    tempTrans.SetMatrix(leftMatrix);
+    leftCard.SetTransformMap(tempTrans);
+
+    tempTrans.SetMatrix(rightMatrix);
+    rightCard.SetTransformMap(tempTrans);
+}
+
+void CubeEffect::CommonAlg(UIView* leftCard, UIView* rightCard, int16_t xOffset)
+{
+    if (leftCard == nullptr || rightCard == nullptr) {
+        return;
+    }
+
+    if (preLeftCard == nullptr) {
+        leftImg_.SetStyle(STYLE_IMAGE_OPA, 90); // 90: degree
+        rightImg_.SetStyle(STYLE_IMAGE_OPA, 90); // 90: degree
+        container_->UIViewGroup::Add(&leftImg_);
+        container_->UIViewGroup::Add(&rightImg_);
+    }
+
+    int16_t width = Screen::GetInstance().GetWidth();
+    int16_t height = Screen::GetInstance().GetHeight();
+    int16_t middleWidth = width / 2;
+    if (leftCard != preLeftCard && rightCard != preRightCard) {
+        leftImg_.SetPosition(0, 0, width, height);
+        if (leftCard->GetViewType() == UI_IMAGE_VIEW) {
+            leftImg_.SetSrc(static_cast<UIImageView *>(leftCard)->GetImageInfo());
+        }
+        preLeftCard = leftCard;
+        preLeftCard->SetCameraPosition(Vector2<float>(leftCard->GetWidth(), leftCard->GetHeight() / 2)); // 2: half
+        preLeftCard->SetCameraDistance(CAMERA_DISTANCE);
+        rightImg_.SetPosition(0, 0, width, height);
+        if (rightCard->GetViewType() == UI_IMAGE_VIEW) {
+            rightImg_.SetSrc(static_cast<UIImageView *>(rightCard)->GetImageInfo());
+        }
+        preRightCard = rightCard;
+        preRightCard->SetCameraPosition(Vector2<float>(0, rightCard->GetHeight() / 2)); // 2: half
+        preRightCard->SetCameraDistance(CAMERA_DISTANCE);
+    }
+
+    TransformCard(preLeftCard, preRightCard, xOffset);
+    TransformMirrorCard(leftImg_, rightImg_, xOffset);
+}
+
+void CubeEffect::CardSwipeAlg(UIImageView* leftCard, UIImageView* rightCard, int16_t xOffset)
+{
+    CommonAlg(leftCard, rightCard, xOffset);
+}
+
+void CubeEffect::CardSwipeAlg(UICardPage* leftCard, UICardPage* rightCard, int16_t xOffset)
+{
+    CommonAlg(leftCard, rightCard, xOffset);
+}
+}
diff --git a/code/sdk/middleware/services/gui/uikit/proprietary/src/ui/frameworks/swipe_effect/cube_effect.h b/code/sdk/middleware/services/gui/uikit/proprietary/src/ui/frameworks/swipe_effect/cube_effect.h
new file mode 100644 (file)
index 0000000..751d99e
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * 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_CUBE_EFFECT_H
+#define UI_CUBE_EFFECT_H
+#include "components/ui_cross_view.h"
+
+namespace OHOS {
+class CubeEffect : public CardSwipe, public UISwipeView::OnSwipeListener {
+public:
+    CubeEffect(void) {}
+    ~CubeEffect() override {}
+    void CardSwipeAlg(UICardPage* leftCard, UICardPage* rightCard, int16_t xOffset) override;
+    void CardSwipeAlg(UIImageView* leftCard, UIImageView* rightCard, int16_t xOffset) override;
+    void OnSwipe(UISwipeView& view) override;
+
+    void SetContainer(UICrossView* view)
+    {
+        container_ = view;
+    }
+
+private:
+    UIImageView leftImg_;
+    UIImageView rightImg_;
+    UIView* preLeftCard = nullptr;
+    UIView* preRightCard = nullptr;
+    UICrossView* container_ = nullptr;
+
+    void CommonAlg(UIView* leftCard, UIView* rightCard, int16_t xOffset);
+    void TransformCard(UIView* leftCard, UIView* rightCard, int16_t xOffset);
+    void TransformMirrorCard(UIView& leftCard, UIView& rightCard, int16_t xOffset);
+};
+} // OHOS
+#endif // UI_CUBE_EFFECT_H
\ No newline at end of file
index d925c21..3cf98c7 100644 (file)
 #ifndef GRAPHIC_LITE_UI_SOFT_KEYBOARD_H
 #define GRAPHIC_LITE_UI_SOFT_KEYBOARD_H
 
+#include "components/ui_label.h"
+#include "components/ui_label_button.h"
+#include "components/ui_list.h"
 #include "common/input_method_manager.h"
 #include "components/ui_edit_text.h"
 #include "input_method/ui_abstract_soft_keyboard.h"
 #include "input_method/ui_option_box.h"
 #include "input_method/ui_text_preview_box.h"
+#include "input_method/ui_pinyin_candidate.h"
 #include "gfx_utils/vector.h"
 
 #if ENABLE_SOFT_KEYBOARD
@@ -28,8 +32,35 @@ namespace OHOS {
 /**
  * @brief Provides the functions related to UIInputMethod.
  */
-class UIInputMethod : public InputMethodManager::InputMethodListener {
+class UIInputMethod : public InputMethodManager::InputMethodListener,
+    public UIView::OnClickListener, public ListScrollListener {
+    class HanziAdapter : public AbstractAdapter {
+    public:
+        ~HanziAdapter() override {};
+        HanziAdapter() {};
+        HanziAdapter(const HanziAdapter&) = delete;
+        HanziAdapter& operator=(const HanziAdapter&) = delete;
+        UIView* GetView(UIView* inView, int16_t index) override;
+        int16_t GetItemWidthWithMargin(int16_t index) override;
+        int16_t GetItemHeightWithMargin(int16_t index) override;
+        uint16_t GetCount() override;
+        bool SetWidthAndHeight(int16_t w, int16_t h);
+        void SetData(int8_t hanzi[][PinyinCandidate::IME_HZLENTH], uint8_t len);
+        void SetClickListener(UIView::OnClickListener* clickListener)
+        {
+            clickListener_ = clickListener;
+        }
+
+    private:
+        UIView::OnClickListener* clickListener_ = nullptr;
+        int8_t (*data_)[PinyinCandidate::IME_HZLENTH] = nullptr;
+        uint8_t size_ = 0;
+        int16_t width_ = 0;
+        int16_t height_ = 0;
+    };
 public:
+    static constexpr uint8_t DEFAULT_NUMPERPAGE = 5;
+    static constexpr uint8_t MAX_HANZIMATCHED = 255;
     static UIInputMethod* GetInstance();
 
     /**
@@ -47,7 +78,13 @@ public:
      * @brief Enter a key value in the input method.
      * @param keys key value, see UI_KEYCODE.
      */
-    void Input(UI_KEYCODE &key);
+    void Input(UI_KEYCODE key);
+
+    void InputPinyin(UI_KEYCODE key);
+
+    void ShowHanziPageList();
+
+    void HideHanziPageList();
 
     /**
      * @brief Hide soft keyboad option box.
@@ -62,6 +99,7 @@ public:
      */
     void ShowOptionBox(UIView *view, UI_KEYCODE *keys, uint8_t num);
 
+    bool OnClick(UIView& view, const ClickEvent& event) override;
 private:
     UIInputMethod();
     ~UIInputMethod() override;
@@ -71,18 +109,37 @@ private:
     void SetupOptionBox();
     void SetupSoftKeyboard();
     void SetupTextPreviewBox();
-    void InsertChar(UI_KEYCODE &keyCode);
-    void ChangSoftKeyboard(UI_KEYCODE &keyCode);
-    void DealFunctionKey(UI_KEYCODE& keyCode);
-    void DealNormalKey(UI_KEYCODE &keyCode);
+    void InsertChar(UI_KEYCODE keyCode);
+    void InsertPinyin(UI_KEYCODE pinyin);
+    void UpdateHanziOption(const std::string &pinyin);
+    void ChangSoftKeyboard(UI_KEYCODE keyCode);
+    void DealFunctionKey(UI_KEYCODE keyCode);
+    void DealNormalKey(UI_KEYCODE keyCode);
     void DealSendKey();
     void DealDelKey();
+    void DealPinyinDelKey();
 
     UIViewGroup* inputMethod_ = nullptr;
     UITextPreviewBox* previeBox_ = nullptr;  // soft keyboard edit box
     UIEditText* edit_ = nullptr;         // user creat edit box
     UIOptionBox* optionBox_ = nullptr;  // Preselection box
 
+    UILabel* pinyinPreview_ = nullptr; // pinyin preview box
+    void SetupPinyinPreviewBox();
+    void HidePinyinPreview();
+    void ShowPinyinPreview();
+
+    UIList *hanziList_ = nullptr;           // hanzi candidates
+    HanziAdapter *hanziAdapter_ = nullptr;  // hanzi adapter
+    int8_t hanziMatched_[MAX_HANZIMATCHED][PinyinCandidate::IME_HZLENTH];
+    void ClearHanziCandidate();
+    void SetupHanziCandidate();
+
+    PinyinCandidate* pinyinTable_ = nullptr; // pinyin and hanzi find table
+    void SetupPinyinTable();
+    void ClearPinyinTable();
+    using PinyinState = PinyinCandidate::PinyinState;
+
     UIAbstractSoftKeyboard* curSoftKeyboard_ = nullptr;
     uint8_t curKeyboardIndex_ = 0;
     Graphic::Vector<UIAbstractSoftKeyboard*> customSoftKeyboard_;
index ecd6bb2..168b576 100644 (file)
@@ -140,6 +140,7 @@ enum class UI_KEYCODE : uint8_t {
     UI_KEY_SOFT_KEYBOARD_CAP     = 0xF7,
     UI_KEY_SOFT_KEYBOARD_NUMBER  = 0xF8,
     UI_KEY_SOFT_KEYBOARD_SYMBOL  = 0xF9,
+    UI_KEY_SOFT_KEYBOARD_PINYIN  = 0xFA,
 
     UI_KEY_BUTT = 0XFF,
 };
diff --git a/code/sdk/middleware/services/gui/uikit/proprietary/src/ui/innerkits/input_method/ui_pinyin_candidate.h b/code/sdk/middleware/services/gui/uikit/proprietary/src/ui/innerkits/input_method/ui_pinyin_candidate.h
new file mode 100644 (file)
index 0000000..640554b
--- /dev/null
@@ -0,0 +1,134 @@
+/*
+ * 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 GRAPHIC_LITE_UI_PINYIN_CANDIDATE_H
+#define GRAPHIC_LITE_UI_PINYIN_CANDIDATE_H
+#include "components/ui_label.h"
+#include "components/ui_view_group.h"
+#include "gfx_utils/vector.h"
+#include "graphic_config.h"
+#include "input_method/ui_keyboard_codetable.h"
+
+#if ENABLE_SOFT_KEYBOARD
+
+namespace OHOS {
+class PinyinCandidate : public HeapBase {
+public:
+    enum class PinyinState : int32_t {
+        SUCCESS = 0,
+        INVALID_PINYIN, // input source str is invalid
+        INVALID_PATH,
+        MEM_NOT_ENOUGH,
+        MEM_SET_ERROR,
+        MEM_COPY_ERROR,
+        MEM_ALLOC_ERROR,
+        INVALID_PAGE_INDEX,
+    };
+    static const uint32_t IME_PYMAXLENTH = 8;  //  单个拼音的最大字母个数
+    static const uint32_t IME_HZLENTH = 4;  //  单个汉字占内存大小
+    static const uint8_t MAXSAMEPREFIXPY = 45;  //  前缀相同的拼音的最大个数
+    static const int32_t MAXHZNUM = 0x2192;  //  汉字的总共个数
+    static const uint8_t MAXNUMBEROFCHAR = 5;  //  5 is the Maximum number of characters on key
+    static const uint8_t MAXCHARNUM = 26; // 26 characters, a ~ z
+    static const uint32_t MAX_TABLE_LEN = 12; // 12 is the max Length of Table
+    static const uint32_t MAX_TABLE_MEMBER_LEN = 5; // 5 is the max length of Tabel Member
+
+    PinyinCandidate(const PinyinCandidate&) = delete;
+    PinyinCandidate& operator=(const PinyinCandidate&) = delete;
+    ~PinyinCandidate();
+    PinyinCandidate();
+
+    std::string DebugInfo(PinyinState state) const;
+    PinyinState FindHanzi(const std::string &sourceStr);
+    PinyinState GetHanziPage(uint8_t pageNumber, int8_t candidate[][IME_HZLENTH], uint8_t len);
+    PinyinState GetFwdHanziPage(int8_t candidate[][IME_HZLENTH], uint8_t len);
+    PinyinState GetCurHanziPage(int8_t candidate[][IME_HZLENTH], uint8_t len);
+    PinyinState GetNxtHanziPage(int8_t candidate[][IME_HZLENTH], uint8_t len);
+    PinyinState GetAllHanzi(int8_t candidate[][IME_HZLENTH], uint8_t len);
+    uint8_t GetHanziPagesNum() const
+    {
+        return hanziStatus_.m_matchHZPageNumber;
+    }
+    uint8_t GetMatchHanziNum() const
+    {
+        return hanziStatus_.m_matchHzNumber;
+    }
+    uint8_t GetHanziPageIndex() const
+    {
+        return hanziStatus_.m_currentHzPage;
+    }
+
+    PinyinState Init(const std::string &path);
+
+    /* 设定每页显示二级候选码的个数 */
+    int32_t SetLv2NumPerPage(uint8_t num);
+    uint8_t GetLv2NumPerPage()
+    {
+        return m_lv2NumPerPage;
+    }
+
+protected:
+    /*  从外部文件装载候选码 */
+    int32_t LoadCodeTable(const int8_t *filePath);
+    /*  修复损坏的码表文件 */
+    int32_t RecoverCodeTable(const int8_t *filePath, const int8_t *backupPath);
+
+private:
+    /* init pinyin table path */
+    PinyinState InitPinyinTablePath(const std::string &path);
+    void InitEx(void);
+
+    /* 以下两结构组成了拼音码表,并且以只读方式保存,
+    * 今后扩展词频调整,则将词频数据以另外文件单独保存,
+    * FreqTableIndex数据成员用于实现拼音码表中的结构与词频表中的记录相映射
+    */
+    struct PYTab {
+        int8_t pinyin[IME_PYMAXLENTH];
+        uint32_t freqTableIndex; // 指向本结构在频率记录表中的位置
+        uint16_t hzIndex;
+        uint8_t hzNum;  // 拼音对应的汉字个数
+    };
+
+    struct HZTab {
+        uint32_t hz;
+        uint16_t freqTableIndex;  // 指向本结构在频率记录表中的位置
+    };
+
+    uint8_t m_lv2NumPerPage = 5; // 5 是二级候选码每页显示的个数
+
+    /* 拼音码表的缓存 */
+    PYTab m_pyTabBuf[MAXCHARNUM][MAXSAMEPREFIXPY];
+    HZTab m_hzTabBuf[MAXHZNUM] = {0, 0};  // 汉字码表缓存
+
+    struct {
+        uint8_t m_currentPyPage = 0; // current pinyin page number
+        uint8_t m_matchPyPage = 0; // matched pinyin page num
+        int8_t m_matchPyStartIndex = -1; /*  在码表中与指定拼音匹配的拼音的起始索引 */
+        int8_t m_matchPyEndIndex = -1;   /*  在码表中与指定拼音匹配的结束索引 */
+        uint8_t m_matchPyNumber = 0;     /*  与指定拼音匹配的候选码数量 */
+        uint8_t m_currentPyIndex = 0;
+    } pinyinStatus_;
+    struct {
+        uint16_t m_currentHzIndex = 0;
+        uint8_t m_matchHzNumber = 0;
+        uint8_t m_matchHZPageNumber = 0;
+        uint8_t m_currentHzPage = 0;
+    } hanziStatus_;
+
+    std::string m_pinyinTablePath = "";
+};
+} // namespace OHOS
+#endif // ENABLE_SOFT_KEYBOARD
+#endif // GRAPHIC_LITE_UI_PINYIN_CANDIDATE_H
\ No newline at end of file
index 3be731a..11202ca 100644 (file)
@@ -83,6 +83,15 @@ public:
     void CreateKeyButtons() override;
     static UISymbolSoftKeyboard* GetInstance();
 };
+
+class UIPinyinSoftKeyboard : public UIAbstractSoftKeyboard {
+public:
+    UIPinyinSoftKeyboard() {}
+    ~UIPinyinSoftKeyboard() override {}
+    void CreateKeyButtons() override;
+    static UIPinyinSoftKeyboard* GetInstance();
+};
+
 } // namespace OHOS
 #endif // ENABLE_SOFT_KEYBOARD
 #endif // GRAPHIC_LITE_UI_INPUT_METHOD_H
index cd8151d..eaeb644 100644 (file)
@@ -16,6 +16,9 @@
 #ifndef GRAPHIC_LITE_UI_EDIT_TEXT_H
 #define GRAPHIC_LITE_UI_EDIT_TEXT_H
 
+#include <string>
+#include <codecvt>
+#include <locale>
 #include <vector>
 #include "components/ui_edit_text.h"
 #include "input_method/ui_keyboard_codetable.h"
@@ -66,6 +69,7 @@ public:
     void OnDraw(BufferInfo& gfxDstBuffer, const Rect& invalidatedArea) override;
     bool OnClickEvent(const ClickEvent& event) override;
     void InsertChar(UI_KEYCODE& keyCode);
+    void InsertHanzi(const std::string &u8hanzi);
     void DeleteChar();
     void SetText(std::string text);
 
@@ -91,13 +95,26 @@ protected:
     void GetLineInfo(LineInfo& lineInfo);
 
 private:
+    std::wstring Utf8ToUtf16(const std::string &text) const
+    {
+        std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>, wchar_t> convert;
+        std::wstring wideText = convert.from_bytes(text);
+        return wideText;
+    }
+
+    std::string Utf16ToUtf8(const std::wstring &wtext) const
+    {
+        std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>, wchar_t> convert;
+        return convert.to_bytes(wtext);
+    }
+
     uint32_t cursorIndex_ = 0;
     bool isCursorInited_ = false;
     CursorCallback cursorCallback_;
     Animator *cursorAnimator_ = nullptr;
     UIView *cursorView_ = nullptr;
     LineInfo lineInfo_ = {{0}};
-    std::string tempText_;
+    std::wstring tempText_;
     std::vector<uint16_t> widthOfChars_;
 
     TextPreviewBoxMode editMode_ = TEXT_PREVIEW_BOX_MODE_INSERT;
index 2ff3022..3a98cda 100644 (file)
@@ -59,6 +59,11 @@ bool GrallocEngines::AllocBufferOnce(const AllocInfo& info, GrallocBuffer& buffe
     buffer.virAddr = bufferHandle->virAddr;
 #if ENABLE_GMMU
     buffer.stride = static_cast<uint32_t>(bufferHandle->stride);
+#endif
+#if ENABLE_MEMORY_CHECK
+    if (isMonitorEnabled_) {
+        printf("[Alloc] addr = %p, size = %d, usage = %llu\n", bufferHandle->virAddr, bufferHandle->size, bufferHandle->usage);
+    }
 #endif
     return true;
 }
@@ -109,6 +114,11 @@ void GrallocEngines::FreeBuffer(uint8_t* virAddr)
                 yuvBufCnt_--;
             }
             g_buffers.erase(iter);
+#if ENABLE_MEMORY_CHECK
+            if (isMonitorEnabled_) {
+                printf("[Free] addr = %p, size = %d, usage = %llu\n", virAddr, handle->size, handle->usage);
+            }
+#endif
             grallocFuncs_->FreeMem(handle);
         }
     }
@@ -174,5 +184,11 @@ void GrallocEngines::DumpMem()
     printf("total size: font %d (count: %d, max: %d), image %d, path %d, fb %d, mapbuffer:%d, yuv %d\n",
         fontCacheSize, fontCount, fontMax, imageCacheSize, pathCacheSize, fbSize, mapBufferSize, yuvCacheSize);
 }
+
+void GrallocEngines::SetMemMonitor(bool enable)
+{
+    isMonitorEnabled_ = enable;
+}
+
 #endif
 } // namespace OHOS
index 1c8ed68..01f4c1c 100644 (file)
@@ -29,7 +29,7 @@ void* ImageCacheMalloc(ImageInfo& info)
     allocInfo.usage = HBM_USE_ASSIGN_SIZE;
     GrallocBuffer buffer;
     if (!GrallocEngines::GetInstance()->AllocBuffer(allocInfo, buffer)) {
-        GRAPHIC_LOGE("AllocBuffer failed.");
+        GRAPHIC_LOGE("ImageCacheMalloc failed! size = %u", info.dataSize);
         return nullptr;
     }
     info.phyAddr = reinterpret_cast<uint8_t*>(buffer.phyAddr);
index 960ee09..138bad1 100644 (file)
@@ -43,12 +43,14 @@ public:
     void FreeBuffer(uint8_t* virAddr);
 #if ENABLE_MEMORY_CHECK
     void DumpMem();
+    void SetMemMonitor(bool enable);
 #endif
 private:
     GrallocEngines() : grallocFuncs_(nullptr) {}
     ~GrallocEngines() {}
     uint8_t yuvBufCnt_ = 0;
     GrallocFuncs* grallocFuncs_;
+    bool isMonitorEnabled_ = false;
 };
 } // end namespace
 #endif // GRAPHIC_LITE_GRALLOC_ENGINES_H
diff --git a/code/sdk/middleware/services/gui/uikit/res/pymb.bin b/code/sdk/middleware/services/gui/uikit/res/pymb.bin
new file mode 100644 (file)
index 0000000..cbf2ea9
Binary files /dev/null and b/code/sdk/middleware/services/gui/uikit/res/pymb.bin differ
index da574a5..4100ec8 100644 (file)
@@ -37,6 +37,7 @@ set(PRIVATE_HEADER
     ${UIKIT_ROOT_DIR}/proprietary/include/service
     ${UIKIT_ROOT_DIR}/proprietary/src/utils/innerkits
     ${UIKIT_ROOT_DIR}/proprietary/src/ui/frameworks
+    ${UIKIT_ROOT_DIR}/proprietary/src/ui/innerkits
     ${PROJECT_ROOT_DIR}/hal/input/include
     ${ROOTDIR}/open_source/openharmony/drivers/peripheral/display/interfaces/include
     ${ROOTDIR}/open_source/openharmony/third_party/bounds_checking_function/include
@@ -79,6 +80,7 @@ set(COMPONENT_CCFLAGS
     -Wno-missing-declarations
     -Wno-tautological-pointer-compare
     -Wno-unused-private-field
+    -Werror=return-type
 )
 
 set(WHOLE_LINK
index 78ecc57..c3730a2 100644 (file)
@@ -175,7 +175,7 @@ bool UITestClockDial::HorizontalViewInit(void)
         pageStatus[maxPage - 1] = true;
     }
     listener = new SwipeListener();
-    listener->setCallback(calback);
+    listener->SetCallback(calback);
     mainSwipeGroup->SetOnSwipeListener(listener);
     GRAPHIC_LOGD("UITestClockDial::InitPage over\n");
     return true;
@@ -299,7 +299,7 @@ void UITestClockDial::PreLoad(uint16_t index)
     } else {
         if (!pageStatus[index - 1]) {
             if (!recordCard[index - 1]->InitView()) {
-                GRAPHIC_LOGE("PreLoad PAGE:%d\n", index - 1);
+                GRAPHIC_LOGE("PreLoad PAGE:%u\n", index - 1);
                 return;
             }
             pageStatus[index - 1] = true;
@@ -310,7 +310,7 @@ void UITestClockDial::PreLoad(uint16_t index)
     }
     if (!pageStatus[index + 1]) {
         if (!recordCard[index + 1]->InitView()) {
-            GRAPHIC_LOGE("PreLoad PAGE:%d\n", index + 1);
+            GRAPHIC_LOGE("PreLoad PAGE:%u\n", index + 1);
             return;
         }
         pageStatus[index + 1] = true;
index 53ba272..00d6e63 100644 (file)
@@ -41,7 +41,7 @@ public:
     ~SwipeListener() override {}
     void OnSwipe(UISwipeView& view) override;
 
-    void setCallback(ZoomEffect* calback)
+    void SetCallback(ZoomEffect* calback)
     {
         calback_ = calback;
     }
index 6e9ce06..2291781 100644 (file)
@@ -146,6 +146,9 @@ void UITestCoverflow::UITestCoverflowView001()
         }\r
         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
index 9423f75..5890f17 100644 (file)
@@ -36,8 +36,10 @@ public:
 #ifndef _WIN32
     class VideoPage : public UICardPage {
     public:
+        VideoPage(const VideoPage &) = delete;
+        VideoPage &operator=(const VideoPage &) = delete;
         VideoPage(void) {}
-        ~VideoPage();
+        ~VideoPage() override;
         void ScrollBegin(bool isActive) override;
         void ScrollEnd(bool isActive) override;
         void CoverBegin(bool isCovered) override;
index 8999ad0..2025595 100644 (file)
@@ -51,7 +51,7 @@ public:
     bool OnDragStartEvent(const DragEvent& event) override;
     bool OnDragEvent(const DragEvent& event) override;
     bool OnDragEndEvent(const DragEvent& event) override;
-    void RotatePlanes(int angleDelta, const Vector3<float>& rotateStart, const Vector3<float>& rotateEnd);
+    void RotatePlanes(int angle, const Vector3<float>& rotateStart, const Vector3<float>& rotateEnd);
 
 private:
     Graphic::Vector<CubeInfo> cubePlane_;
index adaeab5..686d1a5 100644 (file)
@@ -43,7 +43,7 @@ private:
     UIViewGroup* group_ = nullptr;
     UICanvasExt* canvas_ = nullptr;
     UILabelButton* btn_ = nullptr;
-    int16_t index_;
+    int16_t index_ = 0;
 };
 }
 #endif // UI_TEST_SVG_H
\ No newline at end of file
index 7be455b..4f8656d 100644 (file)
@@ -432,18 +432,30 @@ Path* UIChartPillar::AllocPath(uint32_t cmdNum, uint32_t dataNum)
     }
     path->cmdNum = cmdNum;
     path->dataNum = dataNum;
-    AllocInfo info;
-    info.expectedSize = sizeof(uint8_t) * cmdNum + sizeof(float) * dataNum;
-    info.usage = HBM_USE_ASSIGN_SIZE | HBM_USE_MEM_PATH;
+
+    AllocInfo cmdInfo;
     GrallocBuffer cmdBuffer;
-    if (!GrallocEngines::GetInstance()->AllocBuffer(info, cmdBuffer)) {
-        GRAPHIC_LOGE("Alloc buffer for buffer failed.");
+    cmdInfo.expectedSize = sizeof(uint8_t) * cmdNum;
+    cmdInfo.usage = HBM_USE_ASSIGN_SIZE | HBM_USE_MEM_PATH;
+    if (!GrallocEngines::GetInstance()->AllocBuffer(cmdInfo, cmdBuffer)) {
+        GRAPHIC_LOGE("Alloc buffer for cmd buffer failed.");
         delete path;
-        path = nullptr;
         return nullptr;
     }
+
+    AllocInfo dataInfo;
+    GrallocBuffer dataBuffer;
+    dataInfo.expectedSize = sizeof(float) * dataNum;
+    dataInfo.usage = HBM_USE_ASSIGN_SIZE | HBM_USE_MEM_PATH;
+    if (!GrallocEngines::GetInstance()->AllocBuffer(dataInfo, dataBuffer)) {
+        GRAPHIC_LOGE("Alloc buffer for data buffer failed.");
+        delete path;
+        GrallocEngines::GetInstance()->FreeBuffer(reinterpret_cast<uint8_t*>(cmdBuffer.virAddr));
+        return nullptr;
+    }
+
     path->cmds = (uint8_t *)cmdBuffer.virAddr;
-    path->data = reinterpret_cast<float*>(path->cmds + cmdNum);
+    path->data = reinterpret_cast<float*>(dataBuffer.virAddr);
 
     return path;
 }
index 0456900..5b2af86 100644 (file)
@@ -27,6 +27,7 @@
 #ifndef VERSION_LITE
 #include "gif_lib.h"
 #endif
+#include "draw/draw_utils.h"
 
 namespace OHOS {
 #ifndef VERSION_LITE
@@ -567,6 +568,15 @@ void UIImageView::SetSrc(const ImageInfo* src)
     Invalidate();
 }
 
+void UIImageView::DumpImgInfo()
+{
+    if (image_.GetSrcType() == IMG_SRC_VARIABLE) {
+        printf("view[%p]: viewType = %d\n", this, GetViewType());
+        const ImageInfo* info = image_.GetImageInfo();
+        PrintImgInfo(info);
+    }
+}
+
 #ifndef VERSION_LITE
 void UIImageView::AddAndStartGifAnimator()
 {
index a24706e..b743280 100644 (file)
@@ -321,18 +321,16 @@ void UISwipeView::SwitchToPage(int16_t dst, bool needAnimator)
         yOffset = (GetHeight() >> 1) - (dstView->GetY() + (dstView->GetHeightWithMargin() >> 1));
     }
 
-    if ((xOffset != 0) || (yOffset != 0)) {
-        if (scrollAnimator_.GetState() != Animator::STOP) {
-            UIAbstractScroll::StopAnimator();
-        }
-        if (needAnimator) {
-            animatorCallback_.SetDragTimes(tickTime_);
-            animatorCallback_.SetDragStartValue(0, 0);
-            animatorCallback_.SetDragEndValue(xOffset, yOffset);
-            scrollAnimator_.Start();
-        } else {
-            MoveChildByOffset(xOffset, yOffset);
-        }
+    if (scrollAnimator_.GetState() != Animator::STOP) {
+        UIAbstractScroll::StopAnimator();
+    }
+    if (needAnimator) {
+        animatorCallback_.SetDragTimes(tickTime_);
+        animatorCallback_.SetDragStartValue(0, 0);
+        animatorCallback_.SetDragEndValue(xOffset, yOffset);
+        scrollAnimator_.Start();
+    } else {
+        MoveChildByOffset(xOffset, yOffset);
     }
 }
 
index 2ede370..3f63d2e 100644 (file)
@@ -26,6 +26,7 @@
 #include "gfx_utils/mem_api.h"
 #include "securec.h"
 #include "themes/theme_manager.h"
+#include <cstdio>
 
 namespace OHOS {
 UIView::UIView()
@@ -299,8 +300,8 @@ void UIView::Rotate(int16_t angle, const Vector3<float>& pivotStart, const Vecto
     }
 #endif
     if (transMap_ == nullptr) {
-        ReMeasure();
         transMap_ = new TransformMap();
+        ReMeasure();
     }
     bool firstTrans = transMap_->IsInvalid();
     Rect joinRect = transMap_->GetBoxRect();
@@ -341,8 +342,8 @@ void UIView::Scale(const Vector3<float>& scale, const Vector3<float>& pivot)
     }
 #endif
     if (transMap_ == nullptr) {
-        ReMeasure();
         transMap_ = new TransformMap();
+        ReMeasure();
     }
     bool firstTrans = transMap_->IsInvalid();
     Rect joinRect = transMap_->GetBoxRect();
@@ -376,8 +377,8 @@ void UIView::Shear(const Vector2<float>& shearX, const Vector2<float>& shearY, c
     }
 #endif
     if (transMap_ == nullptr) {
-        ReMeasure();
         transMap_ = new TransformMap();
+        ReMeasure();
     }
     bool firstTrans = transMap_->IsInvalid();
     Rect joinRect = transMap_->GetBoxRect();
@@ -417,8 +418,8 @@ void UIView::Translate(const Vector3<int16_t>& trans)
     }
 #endif
     if (transMap_ == nullptr) {
-        ReMeasure();
         transMap_ = new TransformMap();
+        ReMeasure();
     }
     bool firstTrans = transMap_->IsInvalid();
     Rect joinRect = transMap_->GetBoxRect();
@@ -444,8 +445,8 @@ bool UIView::IsTransInvalid()
 void UIView::SetCameraDistance(int16_t distance)
 {
     if (transMap_ == nullptr) {
-        ReMeasure();
         transMap_ = new TransformMap();
+        ReMeasure();
     }
     Rect joinRect = transMap_->GetBoxRect();
     transMap_->SetTransMapRect(GetOrigRect());
@@ -458,8 +459,8 @@ void UIView::SetCameraDistance(int16_t distance)
 void UIView::SetCameraPosition(const Vector2<float>& position)
 {
     if (transMap_ == nullptr) {
-        ReMeasure();
         transMap_ = new TransformMap();
+        ReMeasure();
     }
     Rect joinRect = transMap_->GetBoxRect();
     transMap_->SetTransMapRect(GetOrigRect());
@@ -517,7 +518,9 @@ void UIView::RequestFocus()
 
 void UIView::ClearFocus()
 {
-    FocusManager::GetInstance()->ClearFocus();
+    if (FocusManager::GetInstance()->GetFocusedView() == this) {
+        FocusManager::GetInstance()->ClearFocus();
+    }
 }
 #endif
 
@@ -1193,7 +1196,7 @@ bool UIView::GetBitmap(ImageInfo& bitmap)
     RootView::GetInstance()->SaveDrawContext();
     RootView::GetInstance()->UpdateBufferInfo(&newBufferInfo);
     RootView::GetInstance()->SetSnapshotFlag(true);
-    RootView::GetInstance()->Measure();
+    RootView::GetInstance()->MeasureView(this);
     RootView::GetInstance()->DrawTop(this, mask);
 #if ENABLE_VGU_ENGINE
     LiteMGfxEngine::GetInstance()->SyncHwDraw();
@@ -1225,4 +1228,27 @@ bool UIView::IsVideoContained()
     }
     return false;
 }
+
+void UIView::PrintImgInfo(const ImageInfo* info)
+{
+    if (info == nullptr) {
+        printf("    ImgInfo[%p]\n", info);
+    } else {
+        printf("    ImgInfo[%p]: size = [%d, %d], fmt = %d, data = %p, dataSize = %d, cacheNode = %p\n",
+            info, info->header.width, info->header.height, info->header.colorMode, info->data, info->dataSize, info->cacheNode);
+    }
+}
+
+void UIView::DumpImgInfoRecursive()
+{
+    DumpImgInfo();
+
+    if (IsViewGroup()) {
+        UIView* child = static_cast<UIViewGroup*>(this)->GetChildrenHead();
+        while (child != nullptr) {
+            child->DumpImgInfoRecursive();
+            child = child->GetNextSibling();
+        }
+    }
+}
 } // namespace OHOS
index e39efb5..24c62e7 100644 (file)
@@ -272,6 +272,8 @@ public:
     void SetWidth(int16_t width) override;
     void SetHeight(int16_t height) override;
 
+    void DumpImgInfo() override;
+
 protected:
     /**
      * @brief Represents the width of this image.
index 690be39..884e5c3 100644 (file)
@@ -331,7 +331,7 @@ protected:
     virtual void SwitchToPage(int16_t dst, bool needAnimator = true);
     void MoveChildByOffset(int16_t xOffset, int16_t yOffset) override;
     void MoveHeadOrTailChild();
-
+    virtual void RefreshCurrentView(int16_t distance, uint8_t dragDirection);
     /**
      * @brief Indicates that the animation duration is 12 ticks.
      *
@@ -370,7 +370,6 @@ protected:
 #endif
 
 private:
-    void RefreshCurrentView(int16_t distance, uint8_t dragDirection);
     void RefreshCurrentViewInner(int16_t distance,
                                  uint8_t dragDirection,
                                  int16_t (UIView::*pfnGetXOrY)() const,
index 9632e84..bffed44 100644 (file)
@@ -115,6 +115,9 @@ enum UIViewType : uint8_t {
     UI_BARCODE,
     UI_MAP_VIEW,
     UI_KALEIDOSCOPE_VIEW,
+    UI_ROLLER_VIEW,
+    UI_HEXAGONS_LIST,
+    UI_ICOSAHEDRON_VIEW,
     UI_NUMBER_MAX
 };
 
@@ -1793,6 +1796,10 @@ public:
      */
     bool IsVideoContained();
 
+    void DumpImgInfoRecursive();
+
+    virtual void DumpImgInfo() {}
+
 protected:
     bool touchable_ : 1;
     bool visible_ : 1;
@@ -1830,6 +1837,7 @@ protected:
     bool IsInvalid(float percent);
     void DrawViewBounds(BufferInfo& gfxDstBuffer, const Rect& invalidatedArea);
     void UpdateRectInfo(uint8_t key, const Rect& rect);
+    void PrintImgInfo(const ImageInfo* info);
 
 private:
     Rect rect_;
index d53d4e7..21b0904 100644 (file)
@@ -132,7 +132,7 @@ int32_t AudioStreamOut::Release() const
 }
 
 int32_t AudioStreamOut::StreamWrite(const uint8_t *buffer, uint64_t userSize, uint64_t &writtenSize,
-                                    AudioRendererConfig &renderConfig) const
+    AudioRendererConfig &renderConfig) const
 {
     MediaMutexLock(mutex);
     int32_t ret = StreamWriteTrack(streamHandle_, buffer, userSize, &writtenSize);
index a3d02f4..4d38e17 100644 (file)
@@ -272,6 +272,7 @@ PlayerControl::PlayerControl()
       seekToTimeMs_(-1),\r
       sourceType_(SOURCE_TYPE_BUT),\r
       firstAudioFrameAfterSeek_(false),\r
+      firstPosAfterSeek_(0),\r
       fd_(-1),\r
       offset_(0),\r
       playerSource_(nullptr),\r
@@ -627,15 +628,16 @@ int32_t PlayerControl::OnPlayControlEvent(void *priv, const EventCbType event) c
 int32_t PlayerControl::PauseResume(void)\r
 {\r
     CHECK_NULL_RETURN(sinkManager_, HI_ERR_PLAYERCONTROL_NULL_PTR, "sinkManager_ nullptr");\r
+    MediaMutexLock(schMutex_);\r
     int32_t ret = sinkManager_->Resume();\r
     if (ret != HI_SUCCESS) {\r
         if (ret != NOT_FOUND_ACTIVE_STREAME) {\r
             MEDIA_ERR_LOG("resume failed");\r
             hasVideo_ ? NotifyError(PLAYERCONTROL_ERROR_VID_PLAY_FAIL) : NotifyError(PLAYERCONTROL_ERROR_AUD_PLAY_FAIL);\r
         }\r
+        MediaMutexUnLock(schMutex_);\r
         return ret;\r
     }\r
-    MediaMutexLock(schMutex_);\r
     paused_ = false;\r
     // played to the end no need to signal\r
     if (!IsPlayEos()) {\r
@@ -1134,7 +1136,11 @@ void PlayerControl::ReportRenderPosition(void)
     CHECK_NULL_RETURN_NONE(sinkManager_, "sinkManager_ nullptr");\r
     sinkManager_->GetRenderPosition(position);\r
     if (position >= 0 && currentPosition_ != position) {\r
-        currentPosition_ = position;\r
+        if (lastRendPos_ > 0) {\r
+            currentPosition_ = position - lastRendPos_ + firstPosAfterSeek_;\r
+        } else {\r
+            currentPosition_ = position;\r
+        }\r
         EventCallback(PLAYERCONTROL_EVENT_PROGRESS, &currentPosition_);\r
     }\r
 }\r
@@ -1217,7 +1223,12 @@ int32_t PlayerControl::DequeueInputDataFromDemuxer(void)
 \r
     if (formatPacket_.data == nullptr && formatPacket_.len == 0) {\r
         strmReadEnd_ = true;\r
+        formatPacket_.timestampUs = -1;\r
         gettimeofday(&streamEndTime_, nullptr);\r
+        if (loop_) {\r
+            seekToTimeMs_ = 0;\r
+            return HI_FAILURE;\r
+        }\r
     }\r
 \r
     isAudio_ = (formatPacket_.frameType == FRAME_TYPE_AUDIO) ? true : false;\r
@@ -1281,6 +1292,8 @@ int32_t PlayerControl::QueueInputDataToAudioSink(void)
     }\r
     if (firstAudioFrameAfterSeek_) {\r
         firstAudioFrameAfterSeek_ = false;\r
+        sinkManager_->GetRenderPosition(lastRendPos_);\r
+        firstPosAfterSeek_ = formatPacket_.timestampUs;\r
         MEDIA_INFO_LOG("push firstAudioFrameAfterSeek_ success, pts:%lld", formatPacket_.timestampUs);\r
     }\r
     if (formatPacket_.data != nullptr || formatPacket_.len != 0) {\r
@@ -1836,6 +1849,7 @@ int32_t PlayerControl::DoSeekIfNeed(void)
     if (seekToTimeMs_ == -1) {\r
         return HI_SUCCESS;\r
     }\r
+    MEDIA_INFO_LOG("seek start");\r
     int32_t ret = AyncSeek(seekToTimeMs_);\r
     if (ret != HI_SUCCESS) {\r
         MEDIA_ERR_LOG(" AyncSeek  failed , ret:%d", ret);\r
@@ -1851,7 +1865,7 @@ int32_t PlayerControl::DoSeekIfNeed(void)
     seekToTimeMs_ = -1;\r
     firstAudioFrameAfterSeek_ = true;\r
     firstVideoFrameAfterSeek_ = true;\r
-    MEDIA_DEBUG_LOG("seek end");\r
+    MEDIA_INFO_LOG("seek end");\r
     return HI_SUCCESS;\r
 }\r
 \r
@@ -1919,6 +1933,13 @@ void PlayerControl::PlayerControlCondSignal(void)
     }\r
 }\r
 \r
+void PlayerControl::EnableSingleLooping(bool loop)\r
+{\r
+    MediaMutexLock(schMutex_);\r
+    loop_ = loop;\r
+    MediaMutexUnLock(schMutex_);\r
+}\r
+\r
 void PlayerControl::NotifyError(PlayerControlError playerError) const\r
 {\r
     EventCallback(PLAYERCONTROL_EVENT_ERROR, static_cast<void *>(&playerError));\r
@@ -1948,6 +1969,9 @@ void PlayerControl::FlushDecoder(void) const
 \r
 int32_t PlayerControl::DecoderAndSinkReset(void)\r
 {\r
+    if (strmReadEnd_ && loop_) {\r
+        return HI_SUCCESS;\r
+    }\r
     int32_t ret;\r
     bool isNeedResume = false;\r
     ret = sinkManager_->Pause();\r
@@ -1981,7 +2005,8 @@ int32_t PlayerControl::AyncSeek(int64_t seekTime)
             MEDIA_INFO_LOG("exec fmt_seek video stream failed, ret:%d", ret);\r
             seekTimeInMs = currentPosition_;\r
         }\r
-    } else if (fmtFileInfo_.s32UsedAudioStreamIndex != HI_DEMUXER_NO_MEDIA_STREAM) {\r
+    }\r
+    if (fmtFileInfo_.s32UsedAudioStreamIndex != HI_DEMUXER_NO_MEDIA_STREAM) {\r
         ret = playerSource_->Seek(fmtFileInfo_.s32UsedAudioStreamIndex, seekTimeInMs, FORMAT_SEEK_MODE_BACKWARD_KEY);\r
         if (ret != HI_SUCCESS) {\r
             MEDIA_INFO_LOG("exec fmt_seek audio stream failed, ret:%d", ret);\r
index 739654c..7c8d532 100644 (file)
@@ -125,6 +125,7 @@ public:
     
     int32_t GetPlayerFileDumpInfo(PlayerFileDebugInfo &fileDebugInfo);
     void PlayerControlCondSignal(void);
+    void EnableSingleLooping(bool loop);
 protected:
     int32_t DoRegCallback(const PlayerCtrlCallbackParam &observer);
 
@@ -272,6 +273,7 @@ private:
     SourceType sourceType_;
     bool firstAudioFrameAfterSeek_;
     bool firstVideoFrameAfterSeek_;
+    int64_t firstPosAfterSeek_;
     int32_t fd_;
     uint64_t offset_;
     std::string filePath_;
index 9e82e2c..42dc934 100644 (file)
@@ -985,6 +985,9 @@ int32_t Player::PlayerImpl::EnableSingleLooping(bool loop)
         return -1;
     }
     isSingleLoop_ = loop;
+    if (player_ != nullptr) {
+        player_->EnableSingleLooping(loop);
+    }
     MediaMutexUnLock(lock_);
     return 0;
 }
index c4b2f13..23c96bb 100644 (file)
@@ -115,6 +115,15 @@ public:
      */
     static JSIValue SrcGetter(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize);
 
+    /**
+     * the getter of audio srcInner property
+     *
+     * @param thisVal Indicates function execute context
+     * @param args Indicates the function arguments
+     * @param argsSize Indicates the size of function arguments
+     */
+    static JSIValue SrcInnerGetter(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize);
+
     /**
      * the setter of audio src property
      *
@@ -124,6 +133,15 @@ public:
      */
     static JSIValue SrcSetter(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize);
 
+    /**
+     * the setter of audio srcInner property
+     *
+     * @param thisVal Indicates function execute context
+     * @param args Indicates the function arguments
+     * @param argsSize Indicates the size of function arguments
+     */
+    static JSIValue SrcInnerSetter(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize);
+
     /**
      * the getter of audio currentTime property
      *
index 3b71da8..3010548 100644 (file)
@@ -89,7 +89,7 @@ public:
 
     bool Stop();
 
-    char *GetSrc() const;
+    char *GetSrc(bool innerFlag) const;
 
     double GetCurrentTime() const;
 
@@ -107,7 +107,7 @@ public:
 
     bool IsPlaying() const;
 
-    bool SetSrc(char *src);
+    bool SetSrc(char *src, bool innerFlag);
 
     bool SetCurrentTime(double currentTime) const;
 
@@ -159,6 +159,7 @@ private:
     static MediaMutexHandle lock_;
     static MediaThreadCondHandle condition_;
     static void *UpdateTimeHandler(void *arg);
+    static int GetSrcInnerPrefix(char *src, char *dest);
 
     Media::Player *player_;
     std::shared_ptr<AudioPlayerCallback> callback_;
@@ -170,11 +171,13 @@ private:
     AudioEventListener *onErrorListener_;
     AudioEventListener *onTimeUpdateListener_;
     char *src_;
+    char *srcInner_;
     char *status_;
     double volume_;
     bool autoPlay_;
     bool muted_;
     bool isRunning_;
+    bool isSysSrc_;
     MediaThreadIdHandle updateTimeProcess_;
 };
 } // namespace ACELite
index c830fe0..174b29f 100644 (file)
@@ -153,7 +153,8 @@ JSIValue AudioModule::GetPlayState(const JSIValue thisVal, const JSIValue *args,
         AudioPlayer *audioPlayer = AudioPlayer::GetInstance();
         JSIValue data = JSI::CreateObject();
         JSI::SetStringProperty(data, "status", audioPlayer->GetStatus());
-        JSI::SetStringProperty(data, "src", audioPlayer->GetSrc());
+        JSI::SetStringProperty(data, "src", audioPlayer->GetSrc(false));
+        JSI::SetStringProperty(data, "srcInner", audioPlayer->GetSrc(true));
         JSI::SetNumberProperty(data, "currentTime", audioPlayer->GetCurrentTime());
         JSI::SetBooleanProperty(data, "autoplay", audioPlayer->GetAutoPlay());
         JSI::SetBooleanProperty(data, "loop", audioPlayer->IsLooping());
@@ -175,7 +176,13 @@ JSIValue AudioModule::GetPlayState(const JSIValue thisVal, const JSIValue *args,
 
 JSIValue AudioModule::SrcGetter(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize)
 {
-    char *src = AudioPlayer::GetInstance()->GetSrc();
+    char *src = AudioPlayer::GetInstance()->GetSrc(false);
+    return (src == nullptr) ? JSI::CreateUndefined() : JSI::CreateString(src);
+}
+
+JSIValue AudioModule::SrcInnerGetter(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize)
+{
+    char *src = AudioPlayer::GetInstance()->GetSrc(true);
     return (src == nullptr) ? JSI::CreateUndefined() : JSI::CreateString(src);
 }
 
@@ -188,7 +195,24 @@ JSIValue AudioModule::SrcSetter(const JSIValue thisVal, const JSIValue *args, ui
     ActivateAudioInterrupt();
     char *src = JSI::ValueToString(args[0]);
     bool autoPlay = AudioPlayer::GetInstance()->GetAutoPlay();
-    bool ret = AudioPlayer::GetInstance()->SetSrc(src);
+    bool ret = AudioPlayer::GetInstance()->SetSrc(src, false);
+    AudioPlayer::GetInstance()->SetAudioSessionId(interrupt->sessionID);
+    if (autoPlay) {
+        AudioPlayer::GetInstance()->Play();
+    }
+    return JSI::CreateBoolean(ret);
+}
+
+JSIValue AudioModule::SrcInnerSetter(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize)
+{
+    if (argsSize < 1) {
+        MEDIA_ERR_LOG("1 argument is required.");
+        return JSI::CreateBoolean(false);
+    }
+    ActivateAudioInterrupt();
+    char *src = JSI::ValueToString(args[0]);
+    bool autoPlay = AudioPlayer::GetInstance()->GetAutoPlay();
+    bool ret = AudioPlayer::GetInstance()->SetSrc(src, true);
     AudioPlayer::GetInstance()->SetAudioSessionId(interrupt->sessionID);
     if (autoPlay) {
         AudioPlayer::GetInstance()->Play();
@@ -435,6 +459,7 @@ void InitAudioModule(JSIValue exports)
     JSI::SetModuleAPI(exports, "getPlayState", AudioModule::GetPlayState);
 
     AudioModule::DefineProperty(exports, "src", AudioModule::SrcGetter, AudioModule::SrcSetter);
+    AudioModule::DefineProperty(exports, "srcInner", AudioModule::SrcInnerGetter, AudioModule::SrcInnerSetter);
     AudioModule::DefineProperty(exports, "currentTime", AudioModule::CurrentTimeGetter, AudioModule::CurrentTimeSetter);
     AudioModule::DefineProperty(exports, "duration", AudioModule::DurationGetter, AudioModule::DurationSetter);
     AudioModule::DefineProperty(exports, "autoplay", AudioModule::AutoPlayGetter, AudioModule::AutoPlaySetter);
index 5c63678..a94b564 100644 (file)
@@ -21,6 +21,8 @@
 #include "js_async_work.h"
 #include "media_log.h"
 #include "audio_manager.h"
+#include "bundlems_slite_client.h"
+#include "abilityms_slite_client.h"
 
 #define DELETE_NOT_NULL(pointer) \
     if (pointer != nullptr)      \
@@ -38,6 +40,8 @@ constexpr uint16_t MAX_VOLUME = 100;
 constexpr double DEFAULT_VOLUME = 1.0;
 constexpr double MILLISECONDS_PER_SECOND = 1000.0;
 constexpr uint32_t MICROSECONDS_PER_SECOND = 1000 * 1000;
+constexpr uint32_t MAX_PATH_LEN = 128;
+char absPath[MAX_PATH_LEN] = {0};
 
 static Audio::AudioManager& g_amInstance = Audio::AudioManager::GetInstance();
 
@@ -125,11 +129,13 @@ AudioPlayer::AudioPlayer() : player_(nullptr),
                              onErrorListener_(nullptr),
                              onTimeUpdateListener_(nullptr),
                              src_(nullptr),
+                             srcInner_(nullptr),
                              status_(const_cast<char *>(STATUS_STOP)),
                              volume_(DEFAULT_VOLUME),
                              autoPlay_(false),
                              muted_(false),
                              isRunning_(false),
+                             isSysSrc_(false),
                              updateTimeProcess_(nullptr) {}
 
 void AudioPlayer::ForkUpdateTimeThread()
@@ -184,6 +190,25 @@ void *AudioPlayer::UpdateTimeHandler(void *arg)
     return nullptr;
 }
 
+int AudioPlayer::GetSrcInnerPrefix(char *src, char *dest)
+{
+    int ret;
+    ElementName* topAbility = OHOS::AbilityMsClient::GetInstance().GetTopAbility();
+    if (topAbility != nullptr) {
+        BundleInfo bundleInfo;
+        ret = BundleMsClient::GetInstance().GetBundleInfo(topAbility->bundleName, 0, &bundleInfo);
+        if (ret == 0) {
+            (void)sprintf_s(dest, MAX_PATH_LEN - 1, "%s/assets/entry/%s", bundleInfo.codePath, src);
+            return 0;
+        } else {
+            MEDIA_ERR_LOG("failed to get bundleInfo!");
+        }
+    } else {
+        MEDIA_ERR_LOG("failed to get top ability!");
+    }
+    return -1;
+}
+
 void AudioPlayer::StopUpdateTimeThread()
 {
     MediaMutexLock(lock_);
@@ -267,10 +292,14 @@ void AudioPlayer::ReleaseEventListeners()
 
 void AudioPlayer::ReleaseSrc()
 {
-    if (src_ != nullptr) {
+    if (src_ != nullptr && isSysSrc_ == true) {
         ace_free(src_);
         src_ = nullptr;
     }
+    if (srcInner_ != nullptr && isSysSrc_ == false) {
+        ace_free(srcInner_);
+        srcInner_ = nullptr;
+    }
 }
 
 bool AudioPlayer::Play()
@@ -321,9 +350,9 @@ bool AudioPlayer::Stop()
     return true;
 }
 
-char *AudioPlayer::GetSrc() const
+char *AudioPlayer::GetSrc(bool innerFlag) const
 {
-    return src_;
+    return innerFlag ? srcInner_ : src_;
 }
 
 double AudioPlayer::GetCurrentTime() const
@@ -387,7 +416,7 @@ bool AudioPlayer::IsPlaying() const
     return player_->IsPlaying();
 }
 
-bool AudioPlayer::SetSrc(char *src)
+bool AudioPlayer::SetSrc(char *src, bool innerFlag)
 {
     if (src_ != nullptr) {
         if (!DestoryPlayer()) {
@@ -403,14 +432,28 @@ bool AudioPlayer::SetSrc(char *src)
         return true;
     }
 
-    std::string uri(src);
+    std::string uri;
+    if (innerFlag) {
+        srcInner_ = src;
+        (void)memset_s(absPath, MAX_PATH_LEN, 0, MAX_PATH_LEN);
+        if (GetSrcInnerPrefix(src, absPath) != 0) {
+            MEDIA_ERR_LOG("fail to get absolute path of srcInner.");
+            return false;
+        }
+        uri += absPath;
+        src_ = absPath;
+        isSysSrc_ = false;
+    } else {
+        uri += src;
+        src_ = src;
+        isSysSrc_ = true;
+    }
     std::map<std::string, std::string> header;
     Media::Source source(uri, header);
     if (player_->SetSource(source) != 0) {
         MEDIA_ERR_LOG("fail to set audio src property.");
         return false;
     }
-    src_ = src;
     if (player_->Prepare() != 0) {
         MEDIA_ERR_LOG("fail to prepare.");
         return false;
index fab4fe7..42ef36b 100644 (file)
@@ -205,6 +205,7 @@ static int32_t VideoPlay(MediaVideoPlay *videoPlay)
         (void)videoPlay->player_->Release();\r
         return MEDIA_ERR;\r
     }\r
+    videoPlay->player_->EnableSingleLooping(videoPlay->isLoop_);\r
     MediaMutexLock(videoPlay->mutex_);\r
     videoPlay->isPlayed_ = true;\r
     if (videoPlay->button_ != nullptr) {\r
@@ -293,6 +294,24 @@ static Source GetVideoPlaySource(MediaVideoPlay *videoPlay)
     return source;\r
 }\r
 \r
+static int32_t SetAudioSessionIdAndStreamType(MediaVideoPlay *videoPlay)\r
+{\r
+    int32_t ret = MEDIA_OK;\r
+    if (!videoPlay->isPureVideo_) {\r
+        ret = videoPlay->player_->SetAudioSessionId(videoPlay->sessionId_);\r
+        if (ret != MEDIA_OK) {\r
+            MEDIA_ERR_LOG("set audio sessionId failed\n");\r
+            return ret;\r
+        }\r
+        ret = videoPlay->player_->SetAudioStreamType(AUDIO_STREAM_FITNESS_VIDEO);\r
+        if (ret != MEDIA_OK) {\r
+            MEDIA_ERR_LOG("set audio stream type failed\n");\r
+            return ret;\r
+        }\r
+    }\r
+    return ret;\r
+}\r
+\r
 static int32_t RunVideoPlay(MediaVideoPlay *videoPlay)\r
 {\r
     bool success = InitPlayerResources(videoPlay);\r
@@ -301,47 +320,32 @@ static int32_t RunVideoPlay(MediaVideoPlay *videoPlay)
         return MEDIA_ERR;\r
     }\r
     int32_t ret = 0;\r
-    do {\r
-        Source source = GetVideoPlaySource(videoPlay);\r
-        ret = videoPlay->player_->SetSource(source);\r
-        if (ret != 0) {\r
-            MEDIA_ERR_LOG("set source failed\n");\r
-            (void)DeinitPlayerResources(videoPlay);\r
-            return MEDIA_ERR;\r
-        }\r
-        ret = videoPlay->player_->Prepare();\r
-        if (ret != 0) {\r
-            MEDIA_ERR_LOG("prepare failed\n");\r
-            return ReleasePlayer(videoPlay);\r
-        }\r
-        if (!videoPlay->isPureVideo_) {\r
-            ret = videoPlay->player_->SetAudioSessionId(videoPlay->sessionId_);\r
-            if (ret != 0) {\r
-                MEDIA_ERR_LOG("set audio sessionId failed\n");\r
-                return ReleasePlayer(videoPlay);\r
-            }\r
-            ret = videoPlay->player_->SetAudioStreamType(AUDIO_STREAM_FITNESS_VIDEO);\r
-            if (ret != 0) {\r
-                MEDIA_ERR_LOG("set audio stream type failed\n");\r
-                return ReleasePlayer(videoPlay);\r
-            }\r
-        }\r
-        ret = videoPlay->player_->SetVideoSurface(videoPlay->surface_);\r
-        if (ret != 0) {\r
-            MEDIA_ERR_LOG("set video surface failed\n");\r
-            return ReleasePlayer(videoPlay);\r
-        }\r
-        ret = VideoPlay(videoPlay);\r
-        if (ret != 0) {\r
-            return ReleasePlayer(videoPlay);\r
-        }\r
-        VideoStopAndExit(videoPlay);\r
-        if (videoPlay->isPlaybackStopped_ ||\r
-            videoPlay->playError_ ||\r
-            videoPlay->interruptHintStop_) {\r
-            break;\r
-        }\r
-    } while (videoPlay->isLoop_);\r
+    Source source = GetVideoPlaySource(videoPlay);\r
+    ret = videoPlay->player_->SetSource(source);\r
+    if (ret != 0) {\r
+        MEDIA_ERR_LOG("set source failed\n");\r
+        (void)DeinitPlayerResources(videoPlay);\r
+        return MEDIA_ERR;\r
+    }\r
+    ret = videoPlay->player_->Prepare();\r
+    if (ret != 0) {\r
+        MEDIA_ERR_LOG("prepare failed\n");\r
+        return ReleasePlayer(videoPlay);\r
+    }\r
+    ret = SetAudioSessionIdAndStreamType(videoPlay);\r
+    if (ret != 0) {\r
+        return ReleasePlayer(videoPlay);\r
+    }\r
+    ret = videoPlay->player_->SetVideoSurface(videoPlay->surface_);\r
+    if (ret != 0) {\r
+        MEDIA_ERR_LOG("set video surface failed\n");\r
+        return ReleasePlayer(videoPlay);\r
+    }\r
+    ret = VideoPlay(videoPlay);\r
+    if (ret != 0) {\r
+        return ReleasePlayer(videoPlay);\r
+    }\r
+    VideoStopAndExit(videoPlay);\r
     SendBackgroundFrame(videoPlay);\r
     return 0;\r
 }\r
index 7faba9c..cea092d 100644 (file)
@@ -311,11 +311,6 @@ static void VideoStopAndExit(shared_ptr<Player> player)
     if (ret != 0) {
         MEDIA_ERR_LOG("Reset failed");
     }
-
-    if (g_isNeedLoop) {
-        return;
-    }
-
     ret = player->Release();
     if (ret != 0) {
         MEDIA_ERR_LOG("Release failed");
@@ -376,6 +371,7 @@ static int32_t VideoPlay(VideoPlaySampleContext *context)
         MEDIA_ERR_LOG("Play failed");
         goto RELEASE_PLAYER;
     }
+    context->player->EnableSingleLooping(g_isNeedLoop);
     MediaMutexLock(g_videoPlayContextMutex);
 #if defined(ENABLE_LVGL)
     g_isPlayed = true;
@@ -432,54 +428,50 @@ static int32_t RunVideoPlay(VideoPlaySampleContext *context)
         MEDIA_ERR_LOG("init player resources failed");
         return -1;
     }
-    do {
-        std::string uri(context->filePath);
-        std::map<std::string, std::string> header;
-        Source source(uri, header);
-        int32_t ret = context->player->SetSource(source);
-        if (ret != 0) {
-            MEDIA_ERR_LOG("SetSource failed");
-            goto DEINIT_PLAYER;
-        }
-        ret = context->player->Prepare();
-        if (ret != 0) {
-            MEDIA_ERR_LOG("Prepare failed");
-            goto RELEASE_PLAYER;
-        }
-        ret = context->player->SetAudioSessionId(context->sessionId);
-        if (ret != 0) {
-            MEDIA_ERR_LOG("SetAudioSessionId failed");
-            goto RELEASE_PLAYER;
-        }
-        ret = context->player->SetAudioStreamType(AUDIO_STREAM_FITNESS_VIDEO);
-        if (ret != 0) {
-            MEDIA_ERR_LOG("SetAudioStreamType failed");
-            goto RELEASE_PLAYER;
-        }
+    std::string uri(context->filePath);
+    std::map<std::string, std::string> header;
+    Source source(uri, header);
+    int32_t ret = context->player->SetSource(source);
+    if (ret != 0) {
+        MEDIA_ERR_LOG("SetSource failed");
+        goto DEINIT_PLAYER;
+    }
+    ret = context->player->Prepare();
+    if (ret != 0) {
+        MEDIA_ERR_LOG("Prepare failed");
+        goto RELEASE_PLAYER;
+    }
+    ret = context->player->SetAudioSessionId(context->sessionId);
+    if (ret != 0) {
+        MEDIA_ERR_LOG("SetAudioSessionId failed");
+        goto RELEASE_PLAYER;
+    }
+    ret = context->player->SetAudioStreamType(AUDIO_STREAM_FITNESS_VIDEO);
+    if (ret != 0) {
+        MEDIA_ERR_LOG("SetAudioStreamType failed");
+        goto RELEASE_PLAYER;
+    }
 #if defined(ENABLE_UIKIT)
-        ret = context->player->SetVideoSurface(context->surface);
+    ret = context->player->SetVideoSurface(context->surface);
 #elif defined(ENABLE_LVGL)
-        ret = context->player->SetVideoSurface(g_surface);
+    ret = context->player->SetVideoSurface(g_surface);
 #endif
-        if (ret != 0) {
-            MEDIA_ERR_LOG("SetVideoSurface failed");
-            goto RELEASE_PLAYER;
-        }
-        ret = VideoPlay(context);
-        if (ret != 0) {
-            goto RELEASE_PLAYER;
-        }
-        VideoStopAndExit(context->player);
+    if (ret != 0) {
+        MEDIA_ERR_LOG("SetVideoSurface failed");
+        goto RELEASE_PLAYER;
+    }
+    ret = VideoPlay(context);
+    if (ret != 0) {
+        goto RELEASE_PLAYER;
+    }
+    VideoStopAndExit(context->player);
 #if defined(ENABLE_LVGL)
-        context->isPlaybackCompleted = false;
-        if (g_isNeedLoop) {
-            MediaMutexLock(g_videoPlayContextMutex);
-            g_isPlayed = false;
-            g_pause = false;
-            MediaMutexUnLock(g_videoPlayContextMutex);
-        }
+    context->isPlaybackCompleted = false;
+    MediaMutexLock(g_videoPlayContextMutex);
+    g_isPlayed = false;
+    g_pause = false;
+    MediaMutexUnLock(g_videoPlayContextMutex);
 #endif
-    } while (g_isNeedLoop);
     return 0;
 
 RELEASE_PLAYER:
index 3bf0235..ce9d5b6 100644 (file)
@@ -202,8 +202,13 @@ static int32_t RawFormatFree(HalHandle fmtHandle, FormatPacket *fmtFrame)
 static int32_t RawFormatSeek(__attribute__((unused)) HalHandle fmtHandle, __attribute__((unused))int32_t streamIndex,
     __attribute__((unused)) int64_t toMs, __attribute__((unused)) uint32_t flag)
 {
-    MEDIA_HAL_LOGE(MODULE_NAME, "not support");
-    return ERR_DEMUXER_NOT_SUPPORT;
+    RawFormatMember *member = (RawFormatMember *)fmtHandle;
+    CHK_NULL_RETURN(member, ERR_DEMUXER_INVALID_HANDLE, "input param fmtHandle null");
+    CHK_FAILED_RETURN(member->prepared, true, -1, "not prepared");
+    CHK_NULL_RETURN(member->ops, ERR_DEMUXER_NULL_PTR, "ops null");
+    CHK_NULL_RETURN(member->demuxer, ERR_DEMUXER_NULL_PTR, "demuxer null");
+    CHK_NULL_RETURN(member->ops->Seek, ERR_DEMUXER_NULL_PTR, "Seek null");
+    return member->ops->Seek(member->demuxer, toMs, flag);
 }
 
 static int32_t RawFormatSeekPos(__attribute__((unused)) HalHandle fmtHandle, int64_t pos, uint32_t whence)
index 3f7058b..d48c033 100644 (file)
@@ -104,6 +104,18 @@ static void SBCDemuxerClose(HalHandle fmtHandle)
     free(demuxer);
 }
 
+static void FillFrameCommonInfo(FormatPacket *fmtFrame, int64_t timestamp)
+{
+    fmtFrame->packetType = PACKET_TYPE_AUDIO;
+    fmtFrame->trackId = 0;
+    fmtFrame->isKeyFrame = true;
+    fmtFrame->timestampUs = timestamp;
+    fmtFrame->durationUs = -1;
+    fmtFrame->frameIndex = 0;
+    fmtFrame->itemCnt = 0;
+    fmtFrame->item = NULL;
+}
+
 static int32_t SBCDemuxerReadFrame(HalHandle fmtHandle, FormatPacket *fmtFrame)
 {
     SBCDemuxer *demuxer = (SBCDemuxer *)fmtHandle;
@@ -120,15 +132,7 @@ static int32_t SBCDemuxerReadFrame(HalHandle fmtHandle, FormatPacket *fmtFrame)
         return MEDIA_HAL_NO_MEM;
     }
 
-    size_t readLen = fread(fmtFrame->data, 1, SBC_BLOCK_DATA_SIZE, demuxer->file);
-    if (readLen == -1) {
-        free(fmtFrame->data);
-        fmtFrame->data = NULL;
-        fmtFrame->len = 0;
-        MEDIA_HAL_LOGE(MODULE_NAME, "fread falied");
-        return MEDIA_HAL_ERR;
-    }
-
+    uint32_t readLen = fread(fmtFrame->data, 1, SBC_BLOCK_DATA_SIZE, demuxer->file);
     if (readLen == 0) {
         free(fmtFrame->data);
         fmtFrame->data = NULL;
@@ -136,14 +140,13 @@ static int32_t SBCDemuxerReadFrame(HalHandle fmtHandle, FormatPacket *fmtFrame)
         demuxer->eof = true;
         return RET_FILE_EOF;
     }
-
     fmtFrame->packetType = PACKET_TYPE_AUDIO;
     fmtFrame->len = readLen;
-
+    FillFrameCommonInfo(fmtFrame, -1);
     return MEDIA_HAL_OK;
 }
 
-static int32_t SBCDemuxerFreeFrame(HalHandle fmtHandle, FormatPacket *fmtFrame)
+static int32_t SBCDemuxerFreeFrame(const HalHandle fmtHandle, FormatPacket *fmtFrame)
 {
     MEDIA_HAL_UNUSED(fmtHandle);
     if (fmtFrame->data != NULL) {
@@ -155,11 +158,19 @@ static int32_t SBCDemuxerFreeFrame(HalHandle fmtHandle, FormatPacket *fmtFrame)
 
 static int32_t SBCDemuxerSeek(HalHandle fmtHandle, int64_t toMs, uint32_t flag)
 {
-    MEDIA_HAL_UNUSED(fmtHandle);
-    MEDIA_HAL_UNUSED(toMs);
+    SBCDemuxer *demuxer = (SBCDemuxer *)fmtHandle;
     MEDIA_HAL_UNUSED(flag);
-
-    MEDIA_HAL_LOGE(MODULE_NAME, "not support");
+    if (toMs == 0) {
+        int32_t ret = fseek(demuxer->file, toMs, SEEK_SET);
+        if (ret != 0) {
+            MEDIA_HAL_LOGE(MODULE_NAME, "failed to seek to the sbc file header.");
+            return MEDIA_HAL_ERR;
+        }
+        demuxer->eof = false;
+    } else {
+        MEDIA_HAL_LOGE(MODULE_NAME, "not support");
+        return MEDIA_HAL_ERR;
+    }
     return MEDIA_HAL_OK;
 }
 
index 37c1f3b..b0e14de 100644 (file)
@@ -71,6 +71,7 @@ typedef struct {
     int32_t readLen;
     int32_t prepared;
     FILE *file;
+    int64_t fileSeekStartPosition;
 } SilkRawDemuxer;
 
 static HalHandle SilkDemuxerOpen(const char *url)
@@ -111,6 +112,7 @@ static HalHandle SilkDemuxerOpen(const char *url)
     demuxer->prepared = false;
     demuxer->firstFrame = true;
     demuxer->position = 0;
+    demuxer->fileSeekStartPosition = 0;
     MEDIA_HAL_LOGI(MODULE_NAME, "buffer Demuxer open");
     return (HalHandle)demuxer;
 FREE:
@@ -293,8 +295,21 @@ static int32_t SilkDemuxerFreeFrame(HalHandle fmtHandle, FormatPacket *fmtFrame)
 static int32_t SilkDemuxerSeek(__attribute__((unused)) HalHandle fmtHandle, __attribute__((unused)) int64_t toMs,
     __attribute__((unused)) uint32_t flag)
 {
-    MEDIA_HAL_LOGE(MODULE_NAME, "not support");
-    return MEDIA_HAL_ERR;
+    SilkRawDemuxer *demuxer = (SilkRawDemuxer *)fmtHandle;
+    if (toMs == 0) {
+        int32_t ret = fseek(demuxer->file, demuxer->fileSeekStartPosition, SEEK_SET);
+        if (ret != 0) {
+            MEDIA_HAL_LOGE(MODULE_NAME, "failed to seek to the silk file header.");
+            return MEDIA_HAL_ERR;
+        }
+        demuxer->eof = false;
+        demuxer->position = demuxer->fileSeekStartPosition;
+        MEDIA_HAL_LOGI(MODULE_NAME, "SilkRawDemuxer seek success = %d!!", ftell(demuxer->file));
+    } else {
+        MEDIA_HAL_LOGE(MODULE_NAME, "not support");
+        return MEDIA_HAL_ERR;
+    }
+    return MEDIA_HAL_OK;
 }
 
 static int32_t GetBlockSampleRateAndLength(SilkRawDemuxer *demuxer, int32_t *sampleRate, int16_t *length)
@@ -341,6 +356,7 @@ static int32_t ProbeScore(SilkRawDemuxer *demuxer, int32_t *score, int32_t offse
 {
     demuxer->probeSuccessed = true;
     demuxer->position = offset + SILK_HEAD_SIZE;
+    demuxer->fileSeekStartPosition = offset + SILK_HEAD_SIZE;
     if (fseek(demuxer->file, offset + SILK_HEAD_SIZE, SEEK_SET) != 0) {
         return MEDIA_HAL_ERR;
     }
index dd8765f..d5a904b 100644 (file)
@@ -140,6 +140,11 @@ else()
         ${CMAKE_CURRENT_SOURCE_DIR}/diag_transmit/
     )
 endif()
+set(PRIVATE_HEADER
+    ${PRIVATE_HEADER}
+    ${ROOT_DIR}/middleware/utils/dfx/diag_dfx_cmd/diag_system_cmd/include
+    ${ROOT_DIR}/middleware/utils/dfx/diag_dfx_cmd/diag_system_cmd/dfx_include
+)
 
 set(PRIVATE_DEFINES
 )
@@ -435,6 +440,8 @@ set(PUBLIC_HEADER
 )
 
 set(PRIVATE_HEADER
+    ${ROOT_DIR}/middleware/utils/dfx/diag_dfx_cmd/last_dump/dfx_include
+    ${ROOT_DIR}/middleware/utils/dfx/diag_dfx_cmd/last_dump/include
 )
 
 set(PRIVATE_DEFINES
index f4439d6..f6e492c 100644 (file)
 #include "nandflash_config.h"
 #endif
 
+#if !defined(BUILD_RECOVERY_IMAGE) && !defined(BUILD_APPLICATION_SSB)
+#include "cmsis_os2.h"
+#endif
+
 #if MCU_ONLY
 static cpu_utils_reboot_cb g_reboot_mcu_cb = NULL;
 #endif
@@ -137,6 +141,7 @@ static void exception_test_init(void)
 }
 
 #ifdef SUPPORT_IPC
+
 static bool cpu_utils_sys_reboot_req(ipc_action_t message, const volatile ipc_payload *payload_p,
                                      cores_t src, uint32_t id)
 {
@@ -154,7 +159,7 @@ static bool cpu_utils_sys_reboot_req(ipc_action_t message, const volatile ipc_pa
 #endif
     set_update_reset_cause_on_boot(false);
 #if MCU_ONLY && defined(USE_CMSIS_OS)
-    log_oml_memory_dump();
+    log_bt_req_dump();
 #endif
 #if MCU_ONLY
     if (g_reboot_mcu_cb != NULL) {  // when registering g_reboot_mcu_cb, need to restart chip by yourself.
@@ -167,7 +172,20 @@ static bool cpu_utils_sys_reboot_req(ipc_action_t message, const volatile ipc_pa
     set_trans_type(TRANS_BY_CPU_SINGLE_LINE);
 #endif
     reset_deal_with_fs();
-    cpu_utils_reset_chip_with_log(src, (reboot_cause_t)reboot_reason);
+#if defined(BUILD_APPLICATION_STANDARD) && (USE_COMPRESS_LOG_INSTEAD_OF_SDT_LOG == NO)
+    PRINT("Reboot by core:%d with reason of 0x%x", src, reboot_reason);
+#endif
+
+#if (CORE == MASTER_BY_ALL)
+    set_update_reset_cause_on_boot(false);
+#endif
+    cpu_utils_set_system_status_by_cause(reboot_reason);
+#if !defined(BUILD_RECOVERY_IMAGE) && !defined(BUILD_APPLICATION_SSB)
+    /* Give the semaphore to ensure the main logging task will be active */
+    (void)osSemaphoreRelease(get_save_file_semaphore());
+#else
+    hal_reboot_chip();
+#endif
 
     return true;
 }
index cfe4cba..898bd5c 100644 (file)
@@ -101,6 +101,7 @@ typedef enum {
 
     REBOOT_CAUSE_UPG_COMPLETION = 0x2040, // !< Start of custom reset reasons
     REBOOT_CAUSE_MON_MEM_ALMOST_EMPTY = 0x2041,
+    REBOOT_CAUSE_APPLICATION_SECOND_FAULT = 0x2042,
 
     REBOOT_CAUSE_APPLICATION_RPC_TIMEOUT = 0x2100,       // !< Start of custom reset reasons
 
index 89c3c5b..7da9d33 100644 (file)
@@ -28,6 +28,8 @@
 #define SUB_MOD_ID_OFFSET 8\r
 #define PKT_DATA_CNT_2    2\r
 \r
+static diag_msg_flow_control_hook g_flow_control_hook = NULL;\r
+\r
 STATIC bool zdiag_msg_permit(uint32_t module_id, uint8_t level)\r
 {\r
     if ((zdiag_is_enable() == false) && (uapi_zdiag_offline_log_is_enable() != true)) {\r
@@ -153,6 +155,12 @@ static errcode_t uapi_diag_report_packet_direct_secure(uint16_t cmd_id, diag_opt
     return ERRCODE_SUCC;\r
 }\r
 #endif\r
+\r
+void uapi_diag_register_msg_flow_control_hook(diag_msg_flow_control_hook func)\r
+{\r
+    g_flow_control_hook = func;\r
+}\r
+\r
 errcode_t uapi_diag_report_packet(uint16_t cmd_id, diag_option_t *option, const uint8_t *packet,\r
     uint16_t packet_size, bool sync)\r
 {\r
@@ -308,6 +316,9 @@ errcode_t uapi_zdiag_report_sys_msg_instance(uint32_t module_id, uint32_t msg_id
         return ERRCODE_FAIL;\r
     }\r
 \r
+    if (g_flow_control_hook != NULL && g_flow_control_hook((uint8_t)module_id, level) == false) {\r
+        return ERRCODE_FAIL;\r
+    }\r
     diag_pkt_handle_init(&pkt, 1); /* data_cnt 为1 */\r
 \r
     if (uapi_zdiag_offline_log_is_enable()) {\r
index 0995edf..a9b5e23 100644 (file)
 #include "diag_common.h"\r
 #include "diag_channel.h"\r
 \r
+typedef bool (*diag_msg_flow_control_hook)(uint8_t mid, uint8_t level);\r
+\r
 errcode_t diag_msg_proc(uint16_t msg_id, uint8_t *msg, uint32_t msg_len);\r
 \r
 void uapi_zdiag_set_offline_log_enable(bool enable);\r
 bool uapi_zdiag_offline_log_is_enable(void);\r
 \r
+void uapi_diag_register_msg_flow_control_hook(diag_msg_flow_control_hook func);\r
 #endif\r
index 39443c8..ac54a4e 100644 (file)
@@ -33,6 +33,9 @@ set(SOURCES
 )
 
 set(PUBLIC_HEADER
+)
+
+set(PRIVATE_HEADER
     ${CMAKE_CURRENT_SOURCE_DIR}/diag_system_cmd/include
     ${CMAKE_CURRENT_SOURCE_DIR}/diag_system_cmd/dfx_include
     ${CMAKE_CURRENT_SOURCE_DIR}/diag_mocked_shell/include
@@ -40,9 +43,6 @@ set(PUBLIC_HEADER
     ${CMAKE_CURRENT_SOURCE_DIR}/last_dump/include
     ${CMAKE_CURRENT_SOURCE_DIR}/sample_data/dfx_include
     ${CMAKE_CURRENT_SOURCE_DIR}/sample_data/include
-)
-
-set(PRIVATE_HEADER
     ${CMAKE_SOURCE_DIR}/include/middleware/utils
 )
 set(PRIVATE_DEFINES
index ff233c1..f3d67d8 100644 (file)
@@ -544,10 +544,8 @@ static int32_t dump_open_inst(audio_dump_inst *dump_inst)
     uapi_adp_attr adp_attr;
     osThreadAttr_t task_attr = {0};
     thread_callback func_call = NULL;
-    char *real_path = NULL;
 
-    real_path = realpath(dump_inst->file_path, NULL);
-    dump_inst->h_file = fopen(real_path, "wb");
+    dump_inst->h_file = fopen(dump_inst->file_path, "wb");
     if (dump_inst->h_file == NULL) {
         diag_dump_log("open %s failed.", dump_inst->file_path);
         return ERRCODE_FAIL;
index 905042f..cdf3a55 100644 (file)
@@ -46,6 +46,8 @@
 #include "last_dump_adapt.h"
 #endif
 #endif
+#include "chip_io.h"
+#include "nandflash_config.h"
 
 #define STACK_SIZE 3
 
@@ -446,6 +448,18 @@ static void log_watch_dog_reconfigure(void)
     uapi_watchdog_enable(WDT_MODE_INTERRUPT);
 }
 
+void log_bt_req_dump(void)
+{
+#if (USE_COMPRESS_LOG_INSTEAD_OF_SDT_LOG == NO)
+    log_watch_dog_reconfigure();
+#endif
+
+#ifdef HSO_SUPPORT
+    dfx_last_dump();
+#endif
+    return;
+}
+
 void log_oml_memory_dump(void)
 {
 #if (USE_COMPRESS_LOG_INSTEAD_OF_SDT_LOG == NO)
@@ -453,9 +467,14 @@ void log_oml_memory_dump(void)
 #if CORE == BT
     /* BT core has just one block of ram */
     uapi_tcxo_delay_ms(DUMP_DELAY);
-#elif CORE == APPS
+#elif CORE == APPS && !defined(BUILD_RECOVERY_IMAGE)
 #ifdef HSO_SUPPORT
     dfx_last_dump();
+    nand_driver_init(SPEED_SLOW);
+    set_trans_type(TRANS_BY_CPU_SINGLE_LINE);
+#if defined SAVE_EXC_INFO
+    save_preserve_file_to_nand();
+#endif
 #else
     log_exception_dump_memory(APP_ITCM_ORIGIN, APP_ITCM_LENGTH);
     log_exception_dump_memory(APP_DTCM_ORIGIN, APP_DTCM_LENGTH);
index 85414ec..e26b6d8 100644 (file)
@@ -21,6 +21,8 @@
 #define RESERVED_PC_INDEX 0
 #define RESERVED_LR_INDEX 1
 #define RESERVED_SP_INDEX 2
+#define BTRACE_ADDR_EXEC 0x5900E000
+#define BTRACE_ADDR_EXEC_LEN 0X1FF8
 
 // all security core preserve data here, if want to add new,should add tail for compatible befor version
 #pragma pack(4)
@@ -100,6 +102,31 @@ static void system_set_reboot_status_by_crash_cause(void)
         g_preserve_data_lib.reboot_status = REBOOT_SOFT_PANIC_TRIGGER_STATUS;
     }
 }
+#if defined SAVE_EXC_INFO
+#if !defined(BUILD_RECOVERY_IMAGE)
+void save_preserve_file_to_nand(void)
+{
+    const char *preserve_info_ex_path = "/user/exc/preserve.bin";
+    int32_t ret = exc_info_write(preserve_info_ex_path, 0, (uint8_t *)&g_preserve_data_lib, sizeof(preserve_data_t));
+    printf("save_preserve_file_to_nand ret:%d.\r\n", ret);
+}
+
+void save_btram_file_to_nand(void)
+{
+    const char *btram_info_path = "/user/exc/bt_ram_info.bin";
+    int32_t ret =
+        exc_info_write(btram_info_path, 0, (uint8_t *)BT_RAM_ORIGIN_APP_MAPPING, BT_RAM_ORIGIN_APP_MAPPING_LENGTH);
+    printf("save_btram_file_to_nand ret:%d.\r\n", ret);
+}
+
+void save_btrace_file_to_nand(void)
+{
+    const char *btrace_info_path = "/user/exc/btrace_info.bin";
+    int32_t ret = exc_info_write(btrace_info_path, 0, (uint8_t *)BTRACE_ADDR_EXEC, BTRACE_ADDR_EXEC_LEN);
+    printf("save_btrace_file_to_nand ret:%d.\r\n", ret);
+}
+#endif
+#endif
 
 #ifdef weak
 weak void watchdog_porting_pmu_reboot(void)
@@ -115,8 +142,11 @@ void system_boot_status_init(void)
 {
     bool is_hardwdg_timeout = false;
     if (!hal_reboot_get_ulp_aon_no_poweroff_flag()) {
+        hal_reboot_set_first_power_on_flag();
         hal_reboot_set_ulp_aon_no_poweroff_flag();
         memset_s((void *)&g_preserve_data_lib, sizeof(g_preserve_data_lib), 0, sizeof(g_preserve_data_lib));
+    } else {
+        hal_reboot_clear_first_power_on_flag();
     }
 
     if (g_preserve_data_lib.magic == 0) {    // Hard power-off restart
index 638afd0..8d735fa 100644 (file)
@@ -112,6 +112,13 @@ uint32_t get_system_magic(void);
 
 void show_reboot_info(void);
 
+#if !defined(BUILD_RECOVERY_IMAGE)
+void save_preserve_file_to_nand(void);
+
+void save_btram_file_to_nand(void);
+
+void save_btrace_file_to_nand(void);
+#endif
 /**
  * @}
  */
index 2166b4a..572bdff 100644 (file)
@@ -1,11 +1,11 @@
 set(COMPONENT_NAME "i18n")
 
 set(PUBLIC_HEADER
-    ${CMAKE_CURRENT_SOURCE_DIR}/frameworks/i18n/include
-    ${CMAKE_CURRENT_SOURCE_DIR}/interfaces/kits/i18n/include
 )
 
 set(PRIVATE_HEADER
+    ${CMAKE_CURRENT_SOURCE_DIR}/frameworks/i18n/include
+    ${CMAKE_CURRENT_SOURCE_DIR}/interfaces/kits/i18n/include
 )
 
 set(SOURCES
index 6c4895f..2cf01e0 100644 (file)
@@ -1,11 +1,11 @@
 set(COMPONENT_NAME "resmgr")
 
 set(PUBLIC_HEADER
-    ${CMAKE_CURRENT_SOURCE_DIR}/frameworks/resmgr_lite/include
-    ${CMAKE_CURRENT_SOURCE_DIR}/interfaces/innerkits/include
 )
 
 set(PRIVATE_HEADER
+    ${CMAKE_CURRENT_SOURCE_DIR}/frameworks/resmgr_lite/include
+    ${CMAKE_CURRENT_SOURCE_DIR}/interfaces/innerkits/include
 )
 
 set(SOURCES
index ebb566d..5a38671 100644 (file)
@@ -6,6 +6,8 @@ set(PUBLIC_HEADER
 
 set(PRIVATE_HEADER
     ${ROOT_DIR}/open_source/openharmony/third_party/cJSON
+    ${ROOT_DIR}/open_source/openharmony/base/global/resmgr_lite/frameworks/resmgr_lite/include
+    ${ROOT_DIR}/open_source/openharmony/base/global/resmgr_lite/interfaces/innerkits/include
 )
 
 set(SOURCES
index c05f28b..0e36c59 100644 (file)
@@ -266,12 +266,14 @@ enum {
 #endif // FEATURE_COMPONENT_TABS
     KEYWORD(TEXT, text) // tag name, picker-view attr value
     KEYWORD(TEXT_ALIGN, textAlign) // text style type
+    KEYWORD(TEXT_ALIGN_VERTICAL, textAlignVertical) //text style vertical type
     KEYWORD(TEXT_OVERFLOW, textOverflow) // text style type
     KEYWORD(TIME, time) // picker-view attr value
 #ifdef FEATURE_COMPONENT_VIDEO
     KEYWORD(TIME_UPDATE, timeupdate) // video component timeupdate event tag
 #endif // FEATURE_COMPONENT_VIDEO
     KEYWORD(TOP, top)
+    KEYWORD(BOTTOM, bottom)
     KEYWORD(TOTAL_ANGLE, total-angle) // circle progress style
 #ifdef JS_TOUCH_EVENT_SUPPORT
     KEYWORD(TOUCHCANCEL, touchcancel) // ontouchcancel event
index 16e2979..76ea6a4 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 de42bae..f294d80 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 7a40c02..58a9115 100644 (file)
@@ -43,6 +43,12 @@ const char * const BaiduMapComponent::FUNC_START_LISTEN_MY_GEO_LOCATION = "start
 const char * const BaiduMapComponent::FUNC_STOP_LISTEN_MY_GEO_LOCATION = "stop_listen_my_geo_location";\r
 const char * const BaiduMapComponent::FUNC_GET_MY_GEO_STATUS = "get_my_geo_status";\r
 const char * const BaiduMapComponent::FUNC_GET_MY_GEO_LOCATION = "get_my_geo_location";\r
+const char * const BaiduMapComponent::FUNC_DRAW_CIRCLE = "draw_circle";\r
+const char * const BaiduMapComponent::FUNC_DRAW_NAVI_MARKER = "draw_navi_marker";\r
+const char * const BaiduMapComponent::FUNC_OVERLAYER_CLEAR_CIRCLE = "overlayer_clear_circle";\r
+const char * const BaiduMapComponent::FUNC_OVERLAYER_CLEAR_MARKER = "overlayer_clear_marker";\r
+const char * const BaiduMapComponent::FUNC_OVERLAYER_CLEAR_NAVI_MARKER = "overlayer_clear_navi_marker";\r
+const char * const BaiduMapComponent::FUNC_DESTROY = "destroy";\r
 \r
 const FunctionMap BaiduMapComponent::funcMap[] = {\r
     {FUNC_SET_ZOOM_EVENT_ENABLED, SetZoomEventEnabled},\r
@@ -65,7 +71,13 @@ const FunctionMap BaiduMapComponent::funcMap[] = {
     {FUNC_START_LISTEN_MY_GEO_LOCATION, StartListenMyGeoLocation},\r
     {FUNC_STOP_LISTEN_MY_GEO_LOCATION, StopListenMyGeoLocation},\r
     {FUNC_GET_MY_GEO_STATUS, GetMyGeoStatus},\r
-    {FUNC_GET_MY_GEO_LOCATION, GetMyGeoLocation}\r
+    {FUNC_GET_MY_GEO_LOCATION, GetMyGeoLocation},\r
+    {FUNC_DRAW_CIRCLE, DrawCircle},\r
+    {FUNC_DRAW_NAVI_MARKER, DrawNaviMarker},\r
+    {FUNC_OVERLAYER_CLEAR_CIRCLE, OverlayerClearCircle},\r
+    {FUNC_OVERLAYER_CLEAR_MARKER, OverlayerClearMarker},\r
+    {FUNC_OVERLAYER_CLEAR_NAVI_MARKER, OverlayerClearNaviMarker},\r
+    {FUNC_DESTROY, Destroy}\r
 };\r
 BaiduMapComponent::BaiduMapComponent(jerry_value_t options, jerry_value_t children, AppStyleManager* styleManager)\r
     : Component(options, children, styleManager)\r
@@ -208,6 +220,15 @@ JSValue BaiduMapComponent::DrawMarker(const jerry_value_t func, const jerry_valu
     return UNDEFINED;\r
 }\r
 \r
+JSValue BaiduMapComponent::DrawNaviMarker(const jerry_value_t func, const jerry_value_t context,\r
+    const jerry_value_t args[], const jerry_length_t argsSize)\r
+{\r
+    HILOG_INFO(HILOG_MODULE_ACE,"DrawNaviMarker");\r
+    char *json_navi_marker = MallocStringOf(args[0]);\r
+    MapComponentApi::getInstance().draw_navi_marker(json_navi_marker);\r
+    return UNDEFINED;\r
+}\r
+\r
 JSValue BaiduMapComponent::DrawPolygon(const jerry_value_t func, const jerry_value_t context,\r
     const jerry_value_t args[], const jerry_length_t argsSize)\r
 {\r
@@ -226,6 +247,15 @@ JSValue BaiduMapComponent::DrawPath(const jerry_value_t func, const jerry_value_
     return UNDEFINED;\r
 }\r
 \r
+JSValue BaiduMapComponent::DrawCircle(const jerry_value_t func, const jerry_value_t context,\r
+    const jerry_value_t args[], const jerry_length_t argsSize)\r
+{\r
+    HILOG_INFO(HILOG_MODULE_ACE,"DrawCircle");\r
+    char *json_circle = MallocStringOf(args[0]);\r
+    MapComponentApi::getInstance().draw_circle(json_circle);\r
+    return UNDEFINED;\r
+}\r
+\r
 JSValue BaiduMapComponent::DrawText(const jerry_value_t func, const jerry_value_t context,\r
     const jerry_value_t args[], const jerry_length_t argsSize)\r
 {\r
@@ -263,6 +293,38 @@ JSValue BaiduMapComponent::GetMyGeoLocation(const jerry_value_t func, const jerr
     return UNDEFINED;\r
 }\r
 \r
+JSValue BaiduMapComponent::OverlayerClearCircle(const jerry_value_t func, const jerry_value_t context,\r
+    const jerry_value_t args[], const jerry_length_t argsSize)\r
+{\r
+    HILOG_INFO(HILOG_MODULE_ACE,"OverlayerClearCircle");\r
+    MapComponentApi::getInstance().overlayer_clear_circle();\r
+    return UNDEFINED;\r
+}\r
+\r
+JSValue BaiduMapComponent::OverlayerClearMarker(const jerry_value_t func, const jerry_value_t context,\r
+    const jerry_value_t args[], const jerry_length_t argsSize)\r
+{\r
+    HILOG_INFO(HILOG_MODULE_ACE,"OverlayerClearMarker");\r
+    MapComponentApi::getInstance().overlayer_clear_marker();\r
+    return UNDEFINED;\r
+}\r
+\r
+JSValue BaiduMapComponent::OverlayerClearNaviMarker(const jerry_value_t func, const jerry_value_t context,\r
+    const jerry_value_t args[], const jerry_length_t argsSize)\r
+{\r
+    HILOG_INFO(HILOG_MODULE_ACE,"OverlayerClearNaviMarker");\r
+    MapComponentApi::getInstance().overlayer_clear_navi_marker();\r
+    return UNDEFINED;\r
+}\r
+\r
+JSValue BaiduMapComponent::Destroy(const jerry_value_t func, const jerry_value_t context,\r
+    const jerry_value_t args[], const jerry_length_t argsSize)\r
+{\r
+    HILOG_INFO(HILOG_MODULE_ACE,"Destroy");\r
+    MapComponentApi::getInstance().destroy();\r
+    return UNDEFINED;\r
+}\r
+\r
 } // namespace ACELite\r
 } // namespace OHOS\r
 #endif // FEATURE_COMPONENT_BAIDUMAP
\ No newline at end of file
index dbe9680..af7ca15 100644 (file)
@@ -157,6 +157,24 @@ public:
     static JSValue ClearMapOverlayer(const jerry_value_t func, const jerry_value_t context,\r
                                       const jerry_value_t args[], const jerry_length_t argsSize);\r
 \r
+    /**\r
+     * OverlayerClearCircle\r
+     */\r
+    static JSValue OverlayerClearCircle(const jerry_value_t func, const jerry_value_t context,\r
+                                        const jerry_value_t args[], const jerry_length_t argsSize);\r
+\r
+    /**\r
+     * OverlayerClearMarker\r
+     */\r
+    static JSValue OverlayerClearMarker(const jerry_value_t func, const jerry_value_t context,\r
+                                        const jerry_value_t args[], const jerry_length_t argsSize);\r
+\r
+    /**\r
+     * OverlayerClearNaviMarker\r
+     */\r
+    static JSValue OverlayerClearNaviMarker(const jerry_value_t func, const jerry_value_t context,\r
+                                            const jerry_value_t args[], const jerry_length_t argsSize);\r
+\r
     /**\r
      * DrawMarker, Construction point\r
      *\r
@@ -165,7 +183,17 @@ public:
      * @param argsSize Indicates the size of function arguments\r
      */\r
     static JSValue DrawMarker(const jerry_value_t func, const jerry_value_t context,\r
-                               const jerry_value_t args[], const jerry_length_t argsSize);\r
+                              const jerry_value_t args[], const jerry_length_t argsSize);\r
+\r
+    /**\r
+     * DrawNaviMarker\r
+     *\r
+     * @param thisVal Indicates function execute context\r
+     * @param args Indicates the function arguments\r
+     * @param argsSize Indicates the size of function arguments\r
+     */\r
+    static JSValue DrawNaviMarker(const jerry_value_t func, const jerry_value_t context,\r
+                                  const jerry_value_t args[], const jerry_length_t argsSize);\r
 \r
     /**\r
      * DrawPolygon, Constructing Polygons\r
@@ -185,7 +213,17 @@ public:
      * @param argsSize Indicates the size of function arguments\r
      */\r
     static JSValue DrawPath(const jerry_value_t func, const jerry_value_t context,\r
-                             const jerry_value_t args[], const jerry_length_t argsSize);\r
+                            const jerry_value_t args[], const jerry_length_t argsSize);\r
+\r
+    /**\r
+     * DrawCircle\r
+     *\r
+     * @param thisVal Indicates function execute context\r
+     * @param args Indicates the function arguments\r
+     * @param argsSize Indicates the size of function arguments\r
+     */\r
+    static JSValue DrawCircle(const jerry_value_t func, const jerry_value_t context,\r
+                              const jerry_value_t args[], const jerry_length_t argsSize);\r
 \r
     /**\r
      * DrawText, Constructed text\r
@@ -229,6 +267,16 @@ public:
     static JSValue GetMyGeoLocation(const jerry_value_t func, const jerry_value_t context,\r
                                      const jerry_value_t args[], const jerry_length_t argsSize);\r
 \r
+    /**\r
+     * Destroy\r
+     *\r
+     * @param thisVal Indicates function execute context\r
+     * @param args Indicates the function arguments\r
+     * @param argsSize Indicates the size of function arguments\r
+     */\r
+    static JSValue Destroy(const jerry_value_t func, const jerry_value_t context,\r
+                           const jerry_value_t args[], const jerry_length_t argsSize);\r
+\r
     static const char * const FUNC_SET_ZOOM_EVENT_ENABLED;\r
     static const char * const FUNC_ZOOM_IN;\r
     static const char * const FUNC_ZOOM_OUT;\r
@@ -250,6 +298,12 @@ public:
     static const char * const FUNC_STOP_LISTEN_MY_GEO_LOCATION;\r
     static const char * const FUNC_GET_MY_GEO_STATUS;\r
     static const char * const FUNC_GET_MY_GEO_LOCATION;\r
+    static const char * const FUNC_DRAW_CIRCLE;\r
+    static const char * const FUNC_DRAW_NAVI_MARKER;\r
+    static const char * const FUNC_OVERLAYER_CLEAR_CIRCLE;\r
+    static const char * const FUNC_OVERLAYER_CLEAR_MARKER;\r
+    static const char * const FUNC_OVERLAYER_CLEAR_NAVI_MARKER;\r
+    static const char * const FUNC_DESTROY;\r
     static const FunctionMap funcMap[];\r
 \r
 protected:\r
index 7970fcb..2b0992e 100644 (file)
@@ -26,6 +26,10 @@ using namespace OHOS;
 
 namespace OHOS {
 namespace ACELite {
+
+UITextLanguageAlignment align_horizontal = UITextLanguageAlignment::TEXT_ALIGNMENT_LEFT;
+UITextLanguageAlignment align_vertical = UITextLanguageAlignment::TEXT_ALIGNMENT_TOP;
+
 TextComponent::TextComponent(jerry_value_t options, jerry_value_t children, AppStyleManager *styleManager)
     : Component(options, children, styleManager),
       fontSize_(DEFAULT_FONT_SIZE),
@@ -98,6 +102,9 @@ bool TextComponent::ApplyPrivateStyle(const AppStyleItem *styleItem)
         case K_LETTER_SPACING:
             SetTextLetterSpace(uiLabel_, styleItem);
             break;
+        case K_TEXT_ALIGN_VERTICAL:
+            SetTextAlignVertical(uiLabel_, styleItem);
+            break;
         case K_TEXT_ALIGN:
             SetTextAlign(uiLabel_, styleItem);
             break;
@@ -224,32 +231,60 @@ void TextComponent::PostUpdate(uint16_t attrKeyId)
     }
 }
 
+void TextComponent::SetTextAlignVertical(UILabel &label, const AppStyleItem *styleItem) const
+{
+    if (!IsStyleValueTypeString(styleItem)) {
+        HILOG_ERROR(HILOG_MODULE_ACE, "text text vertical align style value is invalid!");
+        return;
+    }
+
+    const char * const stylePropValue = GetStyleStrValue(styleItem);
+    uint16_t alignId = KeyParser::ParseKeyId(stylePropValue, GetStyleStrValueLen(styleItem));
+    switch (alignId) {
+        case K_CENTER:
+            align_vertical = UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER;
+            break;
+        case K_BOTTOM:
+            align_vertical = UITextLanguageAlignment::TEXT_ALIGNMENT_BOTTOM;
+            break;
+        case K_TOP:
+            align_vertical = UITextLanguageAlignment::TEXT_ALIGNMENT_TOP;
+            break;
+        default:
+            HILOG_WARN(HILOG_MODULE_ACE, "text vertical textAlign style value =%s is invalid, using default instead",
+                       stylePropValue);
+            break;
+    }
+    label.SetAlign(align_horizontal, align_vertical);
+}
+
 void TextComponent::SetTextAlign(UILabel &label, const AppStyleItem *styleItem) const
 {
     if (!IsStyleValueTypeString(styleItem)) {
-        HILOG_ERROR(HILOG_MODULE_ACE, "text text align style value is invalid!");
+        HILOG_ERROR(HILOG_MODULE_ACE, "text text horizontal align style value is invalid!");
         return;
     }
-    // set ui label text align, ALIGN_LEFT, ALIGN_RIGHT, ALIGN_CENTER are support.
+
     const char * const stylePropValue = GetStyleStrValue(styleItem);
     uint16_t alignId = KeyParser::ParseKeyId(stylePropValue, GetStyleStrValueLen(styleItem));
-    UITextLanguageAlignment align = UITextLanguageAlignment::TEXT_ALIGNMENT_LEFT;
     switch (alignId) {
         case K_LEFT:
-            align = UITextLanguageAlignment::TEXT_ALIGNMENT_LEFT;
+            align_horizontal = UITextLanguageAlignment::TEXT_ALIGNMENT_LEFT;
             break;
         case K_RIGHT:
-            align = UITextLanguageAlignment::TEXT_ALIGNMENT_RIGHT;
+            align_horizontal = UITextLanguageAlignment::TEXT_ALIGNMENT_RIGHT;
             break;
         case K_CENTER:
-            align = UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER;
+            align_horizontal = UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER;
             break;
         default:
-            HILOG_WARN(HILOG_MODULE_ACE, "text textAlign style value =%s is invalid, using default instead",
+            HILOG_WARN(HILOG_MODULE_ACE, "text horizontal textAlign style value =%s is invalid, using default instead",
                        stylePropValue);
             break;
     }
-    label.SetAlign(align, UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);
+    label.SetAlign(align_horizontal, align_vertical);
 }
+
+
 } // namespace ACELite
 } // namespace OHOS
index fc9a39f..64778ea 100644 (file)
@@ -44,6 +44,7 @@ protected:
 private:
     // parse js text align style to ui_label
     void SetTextAlign(UILabel& label, const AppStyleItem* styleItem) const;
+    void SetTextAlignVertical(UILabel& label, const AppStyleItem* styleItem) const;
     // parse js text size style to fontSize_
     void SetTextSize(const AppStyleItem* styleItem);
     // parse js text color style to ui_label
index d6959b6..ce1cf77 100644 (file)
@@ -37,6 +37,9 @@ typedef struct : public OHOS::HeapBase {
 
 constexpr char LON[] = "lon";
 constexpr char LAT[] = "lat";
+//BT_CONNECT
+constexpr char CONNECT[] = "connectcallback";
+constexpr char DISCONNECT[] = "disconnectcallback";
 
 namespace OHOS {
 namespace ACELite {
@@ -131,6 +134,10 @@ OHOS::ACELite::JSIValue geocode_search_callbackContext = nullptr;
 OHOS::ACELite::JSIValue regeocode_search_successCallback = nullptr;
 OHOS::ACELite::JSIValue regeocode_search_failCallback = nullptr;
 OHOS::ACELite::JSIValue regeocode_search_callbackContext = nullptr;
+//BT_connect
+OHOS::ACELite::JSIValue bt_connect_successCallback = nullptr;
+OHOS::ACELite::JSIValue bt_connect_failCallback = nullptr;
+OHOS::ACELite::JSIValue bt_connect_callbackContext = nullptr;
 
 static bool CheckIsJsValueDefined(OHOS::ACELite::JSIValue jsValue)
 {
@@ -297,9 +304,17 @@ static void ExecuteSendMsgToJS(void *data)
             fail = regeocode_search_failCallback;
             context = regeocode_search_callbackContext;
             break;
+        case MSGCENTER_TYPE_ID_VECTOR_NAVI_BT_CONNECTED:
+            success = bt_connect_successCallback;
+            context = bt_connect_callbackContext;
+            break;
+        case MSGCENTER_TYPE_ID_VECTOR_NAVI_BT_DISCONNECTED:
+            success = bt_connect_failCallback;
+            context = bt_connect_callbackContext;
+            break;
         default:
-           HILOG_ERROR(HILOG_MODULE_ACE, "Invalid command type");
-           break;
+               HILOG_ERROR(HILOG_MODULE_ACE, "Invalid command type");
+               break;
 
     }
 
@@ -452,6 +467,26 @@ static void ReleaseMsgJsValue(uint8_t type)
             ReleaseJsValue(regeocode_search_failCallback);
             ReleaseJsValue(regeocode_search_callbackContext);
             break;
+        case MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_ROUTE_RIDING_SEARCH:
+            ReleaseJsValue(route_riding_successCallback);
+            ReleaseJsValue(route_riding_failCallback);
+            ReleaseJsValue(route_riding_callbackContext);
+            break;
+        case MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_ROUTE_WALKING_SEARCH:
+            ReleaseJsValue(route_walking_successCallback);
+            ReleaseJsValue(route_walking_failCallback);
+            ReleaseJsValue(route_walking_callbackContext);
+            break;
+        case MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_ROUTE_TRANSIT_SEARCH:
+            ReleaseJsValue(route_transit_successCallback);
+            ReleaseJsValue(route_transit_failCallback);
+            ReleaseJsValue(route_transit_callbackContext);
+            break;
+        case MSGCENTER_TYPE_ID_VECTOR_NAVI_BT_CONNECTED:
+            ReleaseJsValue(bt_connect_successCallback);
+            ReleaseJsValue(bt_connect_failCallback);
+            ReleaseJsValue(bt_connect_callbackContext);
+            break;
         default:
             HILOG_ERROR(HILOG_MODULE_ACE, "ReleaseMsgJsValue Invalid command type");
             break;
@@ -556,6 +591,34 @@ bool setCallbackFunction(OHOS::ACELite::JSIValue callback,uint8_t type,bool isSu
                          regeocode_search_failCallback = OHOS::ACELite::JSI::AcquireValue(callback);
                      }
                      break;
+                 case MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_ROUTE_RIDING_SEARCH:
+                     if (isSuccess) {
+                         route_riding_successCallback = OHOS::ACELite::JSI::AcquireValue(callback);
+                     } else {
+                         route_riding_failCallback = OHOS::ACELite::JSI::AcquireValue(callback);
+                     }
+                     break;
+                 case MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_ROUTE_WALKING_SEARCH:
+                     if (isSuccess) {
+                         route_walking_successCallback = OHOS::ACELite::JSI::AcquireValue(callback);
+                     } else {
+                         route_walking_failCallback = OHOS::ACELite::JSI::AcquireValue(callback);
+                     }
+                     break;
+                 case MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_ROUTE_TRANSIT_SEARCH:
+                     if (isSuccess) {
+                         route_transit_successCallback = OHOS::ACELite::JSI::AcquireValue(callback);
+                     } else {
+                         route_transit_failCallback = OHOS::ACELite::JSI::AcquireValue(callback);
+                     }
+                     break;
+                 case MSGCENTER_TYPE_ID_VECTOR_NAVI_BT_CONNECTED:
+                     if (isSuccess) {
+                         bt_connect_successCallback = OHOS::ACELite::JSI::AcquireValue(callback);
+                     } else {
+                         bt_connect_failCallback = OHOS::ACELite::JSI::AcquireValue(callback);
+                     }
+                     break;
                  default:
                      HILOG_ERROR(HILOG_MODULE_ACE, "setCallbackFunction Invalid command type");
                      return false;
@@ -595,34 +658,13 @@ JSIValue BaiduMapComponentModule::route_riding_search(const JSIValue thisVal, co
     char *data = JSI::JsonStringify(args[0]);
     HILOG_INFO(HILOG_MODULE_ACE,"route_riding_search : %s \n",data);
     //success Callback & failed Callback
-    ReleaseJsValue(route_riding_successCallback);
-    ReleaseJsValue(route_riding_failCallback);
-    ReleaseJsValue(route_riding_callbackContext);
+    ReleaseMsgJsValue(MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_ROUTE_RIDING_SEARCH);
     route_riding_callbackContext = OHOS::ACELite::JSI::AcquireValue(thisVal);
     OHOS::ACELite::JSIValue successCallback = OHOS::ACELite::JSI::GetNamedProperty(args[0], CB_SUCCESS);
     OHOS::ACELite::JSIValue failCallback = OHOS::ACELite::JSI::GetNamedProperty(args[0], CB_FAIL);
-
-    if (!OHOS::ACELite::JSI::ValueIsUndefined(successCallback)) {
-         if (!OHOS::ACELite::JSI::ValueIsFunction(successCallback)) {
-             HILOG_ERROR(HILOG_MODULE_ACE, "route_riding_search Success callback value is not a function");
-         } else {
-             route_riding_successCallback = OHOS::ACELite::JSI::AcquireValue(successCallback);
-         }
-    } else {
-         HILOG_ERROR(HILOG_MODULE_ACE, "route_riding_search Success callback value is undefined");
-    }
-
-    if (!OHOS::ACELite::JSI::ValueIsUndefined(failCallback)) {
-         if (!OHOS::ACELite::JSI::ValueIsFunction(failCallback)) {
-             HILOG_ERROR(HILOG_MODULE_ACE, "route_riding_search Fail callback value is not a function");
-         } else {
-             route_riding_failCallback = OHOS::ACELite::JSI::AcquireValue(failCallback);
-         }
-    } else {
-         HILOG_ERROR(HILOG_MODULE_ACE, "route_riding_search Fail callback value is undefined");
-    }
-
-    msg_center_vector_navi_req_dst_by_text(MSGCENTER_CMD_VECTOR_NAVI,MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_DST_BY_TEST,data,strlen(data));
+    setCallbackFunction(successCallback,MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_ROUTE_RIDING_SEARCH,true);
+    setCallbackFunction(failCallback,MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_ROUTE_RIDING_SEARCH,false);
+    msg_center_vector_navi_req_route_riding_search(MSGCENTER_CMD_VECTOR_NAVI, MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_ROUTE_RIDING_SEARCH,data,strlen(data));
     return JSI::CreateBoolean(0);
 }
 
@@ -632,33 +674,13 @@ JSIValue BaiduMapComponentModule::route_walking_search(const JSIValue thisVal, c
     char *data = JSI::JsonStringify(args[0]);
     HILOG_INFO(HILOG_MODULE_ACE,"route_walking_search : %s \n",data);
     //success Callback & failed Callback
-    ReleaseJsValue(route_walking_successCallback);
-    ReleaseJsValue(route_walking_failCallback);
-    ReleaseJsValue(route_walking_callbackContext);
+    ReleaseMsgJsValue(MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_ROUTE_WALKING_SEARCH);
     route_walking_callbackContext = OHOS::ACELite::JSI::AcquireValue(thisVal);
     OHOS::ACELite::JSIValue successCallback = OHOS::ACELite::JSI::GetNamedProperty(args[0], CB_SUCCESS);
     OHOS::ACELite::JSIValue failCallback = OHOS::ACELite::JSI::GetNamedProperty(args[0], CB_FAIL);
-
-    if (!OHOS::ACELite::JSI::ValueIsUndefined(successCallback)) {
-         if (!OHOS::ACELite::JSI::ValueIsFunction(successCallback)) {
-             HILOG_ERROR(HILOG_MODULE_ACE, "route_walking_search Success callback value is not a function");
-         } else {
-             route_walking_successCallback = OHOS::ACELite::JSI::AcquireValue(successCallback);
-         }
-    } else {
-         HILOG_ERROR(HILOG_MODULE_ACE, "route_walking_search Success callback value is undefined");
-    }
-
-    if (!OHOS::ACELite::JSI::ValueIsUndefined(failCallback)) {
-         if (!OHOS::ACELite::JSI::ValueIsFunction(failCallback)) {
-             HILOG_ERROR(HILOG_MODULE_ACE, "route_walking_search Fail callback value is not a function");
-         } else {
-             route_walking_failCallback = OHOS::ACELite::JSI::AcquireValue(failCallback);
-         }
-    } else {
-         HILOG_ERROR(HILOG_MODULE_ACE, "route_walking_search Fail callback value is undefined");
-    }
-    msg_center_vector_navi_req_dst_by_text(MSGCENTER_CMD_VECTOR_NAVI,MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_DST_BY_TEST,data,strlen(data));
+    setCallbackFunction(successCallback,MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_ROUTE_WALKING_SEARCH,true);
+    setCallbackFunction(failCallback,MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_ROUTE_WALKING_SEARCH,false);
+    msg_center_vector_navi_req_route_walking_search(MSGCENTER_CMD_VECTOR_NAVI,MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_ROUTE_WALKING_SEARCH,data,strlen(data));
     return JSI::CreateBoolean(0);
 }
 
@@ -668,33 +690,13 @@ JSIValue BaiduMapComponentModule::route_transit_search(const JSIValue thisVal, c
     char *data = JSI::JsonStringify(args[0]);
     HILOG_INFO(HILOG_MODULE_ACE,"route_transit_search : %s \n",data);
     //success Callback & failed Callback
-    ReleaseJsValue(route_transit_successCallback);
-    ReleaseJsValue(route_transit_failCallback);
-    ReleaseJsValue(route_transit_callbackContext);
+    ReleaseMsgJsValue(MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_ROUTE_TRANSIT_SEARCH);
     route_transit_callbackContext = OHOS::ACELite::JSI::AcquireValue(thisVal);
     OHOS::ACELite::JSIValue successCallback = OHOS::ACELite::JSI::GetNamedProperty(args[0], CB_SUCCESS);
     OHOS::ACELite::JSIValue failCallback = OHOS::ACELite::JSI::GetNamedProperty(args[0], CB_FAIL);
-
-    if (!OHOS::ACELite::JSI::ValueIsUndefined(successCallback)) {
-         if (!OHOS::ACELite::JSI::ValueIsFunction(successCallback)) {
-             HILOG_ERROR(HILOG_MODULE_ACE, "route_transit_search Success callback value is not a function");
-         } else {
-             route_transit_successCallback = OHOS::ACELite::JSI::AcquireValue(successCallback);
-         }
-    } else {
-         HILOG_ERROR(HILOG_MODULE_ACE, "route_transit_search Success callback value is undefined");
-    }
-
-    if (!OHOS::ACELite::JSI::ValueIsUndefined(failCallback)) {
-         if (!OHOS::ACELite::JSI::ValueIsFunction(failCallback)) {
-             HILOG_ERROR(HILOG_MODULE_ACE, "route_transit_search Fail callback value is not a function");
-         } else {
-             route_transit_failCallback = OHOS::ACELite::JSI::AcquireValue(failCallback);
-         }
-    } else {
-         HILOG_ERROR(HILOG_MODULE_ACE, "route_transit_search Fail callback value is undefined");
-    }
-    msg_center_vector_navi_req_dst_by_text(MSGCENTER_CMD_VECTOR_NAVI,MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_DST_BY_TEST,data,strlen(data));
+    setCallbackFunction(successCallback,MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_ROUTE_TRANSIT_SEARCH,true);
+    setCallbackFunction(failCallback,MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_ROUTE_TRANSIT_SEARCH,false);
+    msg_center_vector_navi_req_route_transit_search(MSGCENTER_CMD_VECTOR_NAVI,MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_ROUTE_TRANSIT_SEARCH,data,strlen(data));
     return JSI::CreateBoolean(0);
 }
 
@@ -1021,6 +1023,36 @@ JSIValue BaiduMapComponentModule::Regeocode_search(const JSIValue thisVal, const
     return JSI::CreateBoolean(0);
 }
 
+/**
+ * destroy page interface
+ */
+JSIValue BaiduMapComponentModule::Destroy_page(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize)
+{
+    HILOG_INFO(HILOG_MODULE_ACE,"Destroy_page");
+    char *data = JSI::JsonStringify(args[0]);
+    HILOG_INFO(HILOG_MODULE_ACE,"Destroy_page : %s \n",data);
+    msg_center_vector_navi_req_destroy_page(MSGCENTER_CMD_VECTOR_NAVI,MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_DESTROY_PAGE,data,strlen(data));
+    return JSI::CreateBoolean(0);
+}
+
+/**
+ * BT connect interface
+ */
+JSIValue BaiduMapComponentModule::onBTConnect(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize)
+{
+    HILOG_INFO(HILOG_MODULE_ACE,"onBTConnect");
+    char *data = JSI::JsonStringify(args[0]);
+    HILOG_INFO(HILOG_MODULE_ACE,"onBTConnect : %s \n",data);
+    //success Callback & failed Callback
+    ReleaseMsgJsValue(MSGCENTER_TYPE_ID_VECTOR_NAVI_BT_CONNECTED);
+    bt_connect_callbackContext = OHOS::ACELite::JSI::AcquireValue(thisVal);
+    OHOS::ACELite::JSIValue connectCallback = OHOS::ACELite::JSI::GetNamedProperty(args[0], CONNECT);
+    OHOS::ACELite::JSIValue disconnectCallback = OHOS::ACELite::JSI::GetNamedProperty(args[0], DISCONNECT);
+    setCallbackFunction(connectCallback,MSGCENTER_TYPE_ID_VECTOR_NAVI_BT_CONNECTED,true);
+    setCallbackFunction(disconnectCallback,MSGCENTER_TYPE_ID_VECTOR_NAVI_BT_CONNECTED,false);
+    return JSI::CreateBoolean(0);
+}
+
 void InitBaiduMapComponentModule(JSIValue exports)
 {
     HILOG_INFO(HILOG_MODULE_ACE,"InitBaiduMapComponentModule");
@@ -1065,6 +1097,16 @@ void InitBaiduMapComponentModule(JSIValue exports)
     JSI::SetModuleAPI(exports, "geocode_search", BaiduMapComponentModule::Geocode_search);
     JSI::SetModuleAPI(exports, "regeocode_search", BaiduMapComponentModule::Regeocode_search);
 
+    /**
+     * destroy page
+     */
+    JSI::SetModuleAPI(exports, "destroy_page", BaiduMapComponentModule::Destroy_page);
+
+    /**
+     * BT connect interface
+     */
+    JSI::SetModuleAPI(exports, "onBTConnect", BaiduMapComponentModule::onBTConnect);
+
 }
 
 } // namespace ACELite
index 8316918..93a3182 100644 (file)
@@ -91,6 +91,17 @@ public:
     static JSIValue Geocode_search(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize);
 
     static JSIValue Regeocode_search(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize);
+
+    /**
+     * destroy page interface
+     */
+    static JSIValue Destroy_page(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize);
+
+    /**
+     * bt connect interface
+     */
+    static JSIValue onBTConnect(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize);
+
 };
 
 void InitBaiduMapComponentModule(JSIValue exports);
index 7c8a415..e49a9a0 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 ba0b066..fd2e760 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
index a49694b..e0740bb 100644 (file)
@@ -8,13 +8,13 @@ set(PUBLIC_HEADER
     ${CMAKE_CURRENT_SOURCE_DIR}/interfaces/kits/communication/broadcast
     ${CMAKE_CURRENT_SOURCE_DIR}/interfaces/kits/registry
     ${CMAKE_CURRENT_SOURCE_DIR}/interfaces/kits/samgr
-    ${CMAKE_CURRENT_SOURCE_DIR}/services/samgr/dependency
-    ${CMAKE_CURRENT_SOURCE_DIR}/services/samgr/registry
 )
 
 set(PRIVATE_HEADER
     ${ROOT_DIR}/application/wearable/ohos_deps
     ${ROOT_DIR}/open_source/openharmony/utils/native/lite/include
+    ${CMAKE_CURRENT_SOURCE_DIR}/services/samgr/dependency
+    ${CMAKE_CURRENT_SOURCE_DIR}/services/samgr/registry
     ${PUBLIC_HEADER}
 
 )
index c4b2f13..23c96bb 100644 (file)
@@ -115,6 +115,15 @@ public:
      */
     static JSIValue SrcGetter(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize);
 
+    /**
+     * the getter of audio srcInner property
+     *
+     * @param thisVal Indicates function execute context
+     * @param args Indicates the function arguments
+     * @param argsSize Indicates the size of function arguments
+     */
+    static JSIValue SrcInnerGetter(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize);
+
     /**
      * the setter of audio src property
      *
@@ -124,6 +133,15 @@ public:
      */
     static JSIValue SrcSetter(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize);
 
+    /**
+     * the setter of audio srcInner property
+     *
+     * @param thisVal Indicates function execute context
+     * @param args Indicates the function arguments
+     * @param argsSize Indicates the size of function arguments
+     */
+    static JSIValue SrcInnerSetter(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize);
+
     /**
      * the getter of audio currentTime property
      *
index 3b71da8..3010548 100644 (file)
@@ -89,7 +89,7 @@ public:
 
     bool Stop();
 
-    char *GetSrc() const;
+    char *GetSrc(bool innerFlag) const;
 
     double GetCurrentTime() const;
 
@@ -107,7 +107,7 @@ public:
 
     bool IsPlaying() const;
 
-    bool SetSrc(char *src);
+    bool SetSrc(char *src, bool innerFlag);
 
     bool SetCurrentTime(double currentTime) const;
 
@@ -159,6 +159,7 @@ private:
     static MediaMutexHandle lock_;
     static MediaThreadCondHandle condition_;
     static void *UpdateTimeHandler(void *arg);
+    static int GetSrcInnerPrefix(char *src, char *dest);
 
     Media::Player *player_;
     std::shared_ptr<AudioPlayerCallback> callback_;
@@ -170,11 +171,13 @@ private:
     AudioEventListener *onErrorListener_;
     AudioEventListener *onTimeUpdateListener_;
     char *src_;
+    char *srcInner_;
     char *status_;
     double volume_;
     bool autoPlay_;
     bool muted_;
     bool isRunning_;
+    bool isSysSrc_;
     MediaThreadIdHandle updateTimeProcess_;
 };
 } // namespace ACELite
index f87abf3..9d650b5 100644 (file)
Binary files a/code/sdk/open_source/openharmony/third_party/jerryscript/brandy-native-js/libjerryscript.a and b/code/sdk/open_source/openharmony/third_party/jerryscript/brandy-native-js/libjerryscript.a differ
index 747f451..fc64215 100644 (file)
Binary files a/code/sdk/open_source/openharmony/third_party/jerryscript/brandy-xts/libjerryscript.a and b/code/sdk/open_source/openharmony/third_party/jerryscript/brandy-xts/libjerryscript.a differ
index d430193..027a02e 100644 (file)
@@ -49,6 +49,7 @@ enum {
     LOCAL_MGR_MSG_ID_READ_REMOTE_RSSI_BLE,
     LOCAL_MGR_MSG_ID_PAIRED_KEYS,           /* 上报BLE配对完成密钥 */
     LOCAL_MGR_MSG_ID_REPORT_TERMINATE_ADV,  /* 上报广播终止结果 */
+    LOCAL_MGR_MSG_ID_CONN_PARAM_UPDATE,     /* 连接参数更新 */
 };
 
 /* 发送本地设备管理模块消息 */
@@ -61,6 +62,7 @@ bool btsrv_is_bluetooth_enable(void);
 bool btsrv_is_bluetooth_disable(void);
 
 bool btsrv_set_local_addr(const bd_addr_t *bd_addr);
+bool is_bts_auto_reconnect_enable(void);
 
 /* 本地设备运行模式设置和查询 */
 uint32_t btsrv_set_local_device_mode(btsrv_local_device_mode mode);
diff --git a/code/sdk/protocol/bt/host/bt/bts/bt_sample/ble_profile/ble_at_sample/include/sample_ble_ams.h b/code/sdk/protocol/bt/host/bt/bts/bt_sample/ble_profile/ble_at_sample/include/sample_ble_ams.h
new file mode 100644 (file)
index 0000000..43ac2d7
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) CompanyNameMagicTag 2024. All rights reserved.
+ *
+ * Description:  AMS Client Test module.
+ */
+/**
+ * @defgroup bluetooth_sample_ble_ams AMS TEST API
+ * @ingroup  bluetooth
+ * @{
+ */
+
+#ifndef SAMPLE_BLE_AMS_H
+#define SAMPLE_BLE_AMS_H
+
+#include <stdint.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void ble_ams_client_at_cmd(uint8_t cmd_id, char **params, uint8_t params_cnt);
+
+/**
+ * @}
+ */
+#ifdef __cplusplus
+}
+#endif
+#endif
\ No newline at end of file
diff --git a/code/sdk/protocol/bt/host/bt/bts/bt_sample/ble_profile/ble_at_sample/include/sample_ble_ancs.h b/code/sdk/protocol/bt/host/bt/bts/bt_sample/ble_profile/ble_at_sample/include/sample_ble_ancs.h
new file mode 100644 (file)
index 0000000..f05e2f9
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) CompanyNameMagicTag 2024. All rights reserved.
+ *
+ * Description:  ANCS Client Test module.
+ */
+/**
+ * @defgroup bluetooth_sample_ble_ancs ANCS TEST API
+ * @ingroup  bluetooth
+ * @{
+ */
+
+#ifndef SAMPLE_BLE_ANCS_H
+#define SAMPLE_BLE_ANCS_H
+
+#include <stdint.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void ble_ancs_client_at_cmd(uint8_t cmd_id, char **params, uint8_t params_cnt);
+
+/**
+ * @}
+ */
+#ifdef __cplusplus
+}
+#endif
+#endif
\ No newline at end of file
index 0008d89..8bdb7ab 100644 (file)
@@ -4,5 +4,7 @@ set(
     ${CMAKE_CURRENT_SOURCE_DIR}/sample_ble_bas.c
     ${CMAKE_CURRENT_SOURCE_DIR}/sample_ble_hid.c
     ${CMAKE_CURRENT_SOURCE_DIR}/sample_ble_fmp.c
+    ${CMAKE_CURRENT_SOURCE_DIR}/sample_ble_ancs.c
+    ${CMAKE_CURRENT_SOURCE_DIR}/sample_ble_ams.c
 )
 set(BTH_SAMPLE_LIST "${BTH_SAMPLE_LIST}" "${bt_comm_src_list}" CACHE INTERNAL "bt ram obj list" FORCE)
diff --git a/code/sdk/protocol/bt/host/bt/bts/bt_sample/ble_profile/ble_at_sample/src/sample_ble_ams.c b/code/sdk/protocol/bt/host/bt/bts/bt_sample/ble_profile/ble_at_sample/src/sample_ble_ams.c
new file mode 100644 (file)
index 0000000..c150a67
--- /dev/null
@@ -0,0 +1,320 @@
+/*
+ * Copyright (c) CompanyNameMagicTag 2024. All rights reserved.
+ * Description: This module include test function of AMS Client module.
+ */
+#include <stdint.h>
+#include <stdlib.h>
+#include <td_base.h>
+#include "datatype.h"
+#include "sdk_general.h"
+#include "mpc_dispatch.h"
+#include "bt_at_cmd_api.h"
+#include "sample_common.h"
+#include "ble_ams_client.h"
+#include "sample_ble_ams.h"
+
+#define HEX_BYTE_CHAR_COUNT 2
+
+/* AMS客户端接口命令id */
+typedef enum {
+    BLE_SAMPLE_AMS_CLIENT_REGISTER_CBK = 1,                 /* 1 注册AMS客户端回调函数 */
+    BLE_SAMPLE_AMS_CLIENT_SETUP,                            /* 2  AMS客户端连接服务端 */
+    BLE_SAMPLE_AMS_CLIENT_SUBSCRIBE_REMOTE_COMMNAD,         /* 3  订阅远端命令 */
+    BLE_SAMPLE_AMS_CLIENT_SUBSCRIBE_ENTITY_UPDATE,          /* 4  订阅实体更新 */
+    BLE_SAMPLE_AMS_CLIENT_SEND_REMOTE_CMD,                  /* 5  发送远端命令 */
+    BLE_SAMPLE_AMS_CLIENT_REGISTER_INTERESTED_ENTITY_ATT,   /* 6  注册感兴趣的实体属性 */
+    BLE_SAMPLE_AMS_CLIENT_RETRIEVE_FULL_ENTITY_ATT,         /* 7  请求加载完整实体属性 */
+    BLE_SAMPLE_AMS_CLIENT_READ_FULL_ENTITY_ATT              /* 8  读取完整实体属性 */
+} ble_ams_client_at_cmd_id_t;
+
+/* 命令处理函数接口 */
+typedef uint8_t (*ble_ams_client_at_func_t)(uint8_t argc, char **argv);
+
+/* AMS客户端AT命令id与接口对应关系 */
+typedef struct {
+    ble_ams_client_at_cmd_id_t id;
+    ble_ams_client_at_func_t func;
+} ble_ams_client_at_hdl_info_t;
+
+/* 当前活跃媒体设备支持的远端命令 */
+ble_ams_remote_cmd_rpt_t *g_remote_cmd_supported = NULL;
+
+/* AMS服务建立结果回调 */
+static void ble_ams_client_setup_result_cbk(uint8_t client_id, uint16_t conn_id, errcode_t status)
+{
+    bts_info("[AMSClientSetupCBK]conn_id:%d status:0x%x\r\n", conn_id, status);
+}
+
+/* AMS服务订阅结果回调 */
+static void ble_ams_client_subscribe_result_cbk(uint8_t client_id, uint16_t conn_id,
+    ams_client_subscribe_type_t type, gatt_status_t status)
+{
+    bts_info("[AMSClientSubscribeResultCBK]conn_id:%d type:%d status:0x%x\r\n", conn_id, type, status);
+}
+
+/* AMS服务远端支持的命令上报 */
+static void ble_ams_client_remote_cmd_cbk(uint8_t client_id, uint16_t conn_id,
+    ble_ams_remote_cmd_rpt_t *remote_cmd, errcode_t status)
+{
+    if (status == ERRCODE_BT_SUCCESS) {
+        bts_sample_log_no_header("[AMSClientRemoteCMDCBK]conn_id:%d status:0x%x cmd_num=%d ",
+            conn_id, status, remote_cmd->cmd_num);
+        if (g_remote_cmd_supported != NULL) {
+            bt_os_free(g_remote_cmd_supported);
+        }
+        uint16_t length = sizeof(ble_ams_remote_cmd_rpt_t) + remote_cmd->cmd_num;
+        g_remote_cmd_supported = bt_os_new(length);
+        g_remote_cmd_supported->cmd_num = remote_cmd->cmd_num;
+        if (memcpy_s(g_remote_cmd_supported->remote_cmd, remote_cmd->cmd_num,
+            remote_cmd->remote_cmd, remote_cmd->cmd_num) != EOK) {
+            bts_error("[AMSClientSample] memcpy error!\r\n");
+            bt_os_free(g_remote_cmd_supported);
+            return;
+        }
+        bts_sample_log_no_header("supported_cmd=");
+        for (int i = 0; i < remote_cmd->cmd_num; i++) {
+            bts_sample_log_no_header("0x%02x", remote_cmd->remote_cmd[i]);
+        }
+        bts_sample_log_no_header("\r\n");
+    } else {
+        bts_info("[AMSClientRemoteCMDCBK]conn_id:%d status:0x%x\r\n", conn_id, status);
+    }
+}
+
+/* AMS服务实体更新上报 */
+static void ble_ams_client_entity_update_cbk(uint8_t client_id, uint16_t conn_id,
+    ble_ams_entity_update_rpt_t *entity_update, errcode_t status)
+{
+    if (status == ERRCODE_BT_SUCCESS) {
+        bts_info(
+            "[AMSClientEntityUpdateCBK]conn_id:%d status:0x%x entityId=%d att_id=%d update_flags=0x%x value=%s\r\n",
+            conn_id, status,
+            entity_update->entity_id,
+            entity_update->att_id,
+            entity_update->entity_update_flags,
+            entity_update->value);
+    } else {
+        bts_info("[AMSClientEntityUpdateCBK]conn_id:%d status:0x%x\r\n", conn_id, status);
+    }
+}
+
+/* AMS客户端写请求响应结果上报 */
+static void ble_ams_client_write_character_rsp_cbk(uint8_t client_id, uint16_t conn_id,
+    ams_client_write_character_type_t type,
+    gatt_status_t status)
+{
+    bts_info("[AMSClientWriteRSPCBK]conn_id:%d type:%d status:0x%x\r\n", conn_id, type, status);
+}
+
+/* AMS客户端读请求响应结果上报 */
+static void ble_ams_client_read_full_attr_result_cbk(uint8_t client_id, uint16_t conn_id,
+    ble_ams_full_attr_value_t *read_result,
+    gatt_status_t status)
+{
+    if (status == ERRCODE_BT_SUCCESS) {
+        bts_info("[AMSClientReadFullAttrCBK]conn_id:%d status:0x%x value_len=%d value=%s\r\n",
+            conn_id, status,
+            read_result->value_len,
+            read_result->value);
+    } else {
+        bts_info("[AMSClientReadFullAttrCBK]conn_id:%d status:0x%x\r\n", conn_id, status);
+    }
+}
+
+/* 注册AMS服务回调 */
+static uint8_t ble_ams_client_at_cmd_register_cbk(uint8_t argc, char **argv)
+{
+    ble_ams_client_callbacks_t cbk = {0};
+    cbk.setup_cb = ble_ams_client_setup_result_cbk;
+    cbk.subscribe_cb = ble_ams_client_subscribe_result_cbk;
+    cbk.remote_cmd_cb = ble_ams_client_remote_cmd_cbk;
+    cbk.entity_update_cb = ble_ams_client_entity_update_cbk;
+    cbk.write_rsp_cb = ble_ams_client_write_character_rsp_cbk;
+    cbk.read_full_attr_result_cb = ble_ams_client_read_full_attr_result_cbk;
+    errcode_t ret = ble_ams_client_register_callbacks(&cbk);
+    bts_info("ble ams client register cbk ret:0x%x\r\n", ret);
+    return MPC_BT_SUCC;
+}
+
+/* AMS客户端发起服务建立 */
+static uint8_t ble_ams_client_at_cmd_setup(uint8_t argc, char **argv)
+{
+    if (argc != BT_AT_PARAM_LEN2) {
+        bts_error("ble ams client argc num invalid :%u\r\n", argc);
+        return MPC_BT_FAIL;
+    }
+    uint8_t client_id = 0;
+    uint16_t conn_id = 0;
+    client_id = (uint8_t)atoi(argv[BT_INDEX_0]);
+    conn_id = (uint16_t)atoi(argv[BT_INDEX_1]);
+    errcode_t ret = ble_ams_client_setup_service(client_id, conn_id);
+    bts_info("ble ams client setup ret:0x%x\r\n", ret);
+    return MPC_BT_SUCC;
+}
+
+/* AMS客户端订阅远端命令特征通知 */
+static uint8_t ble_ams_client_at_cmd_remote_cmd(uint8_t argc, char **argv)
+{
+    if (argc != BT_AT_PARAM_LEN3) {
+        bts_error("ble ams client argc num invalid :%u\r\n", argc);
+        return MPC_BT_FAIL;
+    }
+    uint8_t client_id = 0;
+    uint16_t conn_id = 0;
+    uint8_t sub_flag = 0;
+    client_id = (uint8_t)atoi(argv[BT_INDEX_0]);
+    conn_id = (uint16_t)atoi(argv[BT_INDEX_1]);
+    sub_flag = (uint8_t)atoi(argv[BT_INDEX_2]);
+    if (sub_flag > AMS_CLIENT_NOTIFY_ENABLE) {
+        bts_error("ble ams client argc invalid :%u\r\n", argc);
+        return MPC_BT_FAIL;
+    }
+    errcode_t ret = ble_ams_client_subscribe_remote_cmd(client_id, conn_id, sub_flag);
+    bts_info("ble ams client sub remote cmd ret:0x%x\r\n", ret);
+    return MPC_BT_SUCC;
+}
+
+/* AMS客户端订阅实体更新特征通知 */
+static uint8_t ble_ams_client_at_cmd_entity_update(uint8_t argc, char **argv)
+{
+    if (argc != BT_AT_PARAM_LEN3) {
+        bts_error("ble ams client argc num invalid :%u\r\n", argc);
+        return MPC_BT_FAIL;
+    }
+    uint8_t client_id = 0;
+    uint16_t conn_id = 0;
+    uint8_t sub_flag = 0;
+    client_id = (uint8_t)atoi(argv[BT_INDEX_0]);
+    conn_id = (uint16_t)atoi(argv[BT_INDEX_1]);
+    sub_flag = (uint8_t)atoi(argv[BT_INDEX_2]);
+    if (sub_flag > AMS_CLIENT_NOTIFY_ENABLE) {
+        bts_error("ble ams client argc invalid :%u\r\n", argc);
+        return MPC_BT_FAIL;
+    }
+    errcode_t ret = ble_ams_client_subscribe_entity_update(client_id, conn_id, sub_flag);
+    bts_info("ble ams client sub entity update ret:0x%x\r\n", ret);
+    return MPC_BT_SUCC;
+}
+
+/* AMS客户端发送远端命令 */
+static uint8_t ble_ams_client_at_cmd_send_remote_cmd(uint8_t argc, char **argv)
+{
+    if (argc != BT_AT_PARAM_LEN3) {
+        bts_error("ble ams client argc num invalid :%u\r\n", argc);
+        return MPC_BT_FAIL;
+    }
+    uint8_t client_id = 0;
+    uint16_t conn_id = 0;
+    uint8_t remote_cmd = 0;
+    client_id = (uint8_t)atoi(argv[BT_INDEX_0]);
+    conn_id = (uint16_t)atoi(argv[BT_INDEX_1]);
+    remote_cmd = (uint8_t)atoi(argv[BT_INDEX_2]);
+    if (remote_cmd > AMS_RMT_CMD_ID_BOOKMARK_TRACK) {
+        bts_error("ble ams client argc invalid :%u\r\n", argc);
+        return MPC_BT_FAIL;
+    }
+    errcode_t ret = ble_ams_client_send_remote_cmd(client_id, conn_id, remote_cmd);
+    bts_info("ble ams client send remote cmd ret:0x%x\r\n", ret);
+    return MPC_BT_SUCC;
+}
+
+/* AMS客户端注册感兴趣的实体属性 */
+static uint8_t ble_ams_client_at_cmd_register_interested_entity_att(uint8_t argc, char **argv)
+{
+    if (argc != BT_AT_PARAM_LEN5) {
+        bts_error("ble ams client argc num invalid :%u\r\n", argc);
+        return MPC_BT_FAIL;
+    }
+    uint8_t client_id = 0;
+    uint16_t conn_id = 0;
+    uint16_t att_num = 0;
+    uint8_t entity_id = 0;
+    client_id = (uint8_t)atoi(argv[BT_INDEX_0]);
+    conn_id = (uint16_t)atoi(argv[BT_INDEX_1]);
+    entity_id = (uint8_t)atoi(argv[BT_INDEX_2]);
+    att_num = (uint16_t)atoi(argv[BT_INDEX_3]);
+    uint32_t len = strlen(argv[BT_INDEX_4]);
+    if (len != (att_num * HEX_BYTE_CHAR_COUNT)) {
+        bts_error("ble ams client argc att_num invalid :%u\r\n", att_num);
+        return MPC_BT_FAIL;
+    }
+
+    ble_ams_interested_entity_attr_req_t *attr_req = bt_os_new(sizeof(ble_ams_interested_entity_attr_req_t) + att_num);
+    attr_req->entity_id = entity_id;
+    attr_req->att_num = att_num;
+    if (decode_hex_from_str(argv[BT_INDEX_4], attr_req->att_id) != EXT_ERR_SUCCESS) {
+        bt_os_free(attr_req);
+        bts_error("ble ams client decode attr fail!\r\n");
+        return MPC_BT_FAIL;
+    }
+    errcode_t ret = ble_ams_client_register_interested_entity_attribute(client_id, conn_id, attr_req);
+    bts_info("ble ams client register interested attr ret:0x%x\r\n", ret);
+    bt_os_free(attr_req);
+    return MPC_BT_SUCC;
+}
+
+/* AMS客户端请求加载完整的实体属性 */
+static uint8_t ble_ams_client_at_cmd_retrieve_full_attr(uint8_t argc, char **argv)
+{
+    if (argc != BT_AT_PARAM_LEN4) {
+        bts_error("ble ams client argc num invalid :%u\r\n", argc);
+        return MPC_BT_FAIL;
+    }
+    uint8_t client_id = 0;
+    uint16_t conn_id = 0;
+    uint8_t entity_id = 0;
+    uint8_t attr_id = 0;
+    client_id = (uint8_t)atoi(argv[BT_INDEX_0]);
+    conn_id = (uint16_t)atoi(argv[BT_INDEX_1]);
+    entity_id = (uint8_t)atoi(argv[BT_INDEX_2]);
+    attr_id = (uint8_t)atoi(argv[BT_INDEX_3]);
+
+    ble_ams_full_entity_attr_cmd_t *full_attr = bt_os_new(sizeof(ble_ams_full_entity_attr_cmd_t));
+    full_attr->entity_id = entity_id;
+    full_attr->att_id = attr_id;
+    errcode_t ret = ble_ams_client_retrieve_full_entity_attribute(client_id, conn_id, full_attr);
+    bts_info("ble ams client retrieve full attr ret:0x%x\r\n", ret);
+    bt_os_free(full_attr);
+    return MPC_BT_SUCC;
+}
+
+/* AMS客户端读取完整的实体属性 */
+static uint8_t ble_ams_client_at_cmd_read_full_attr(uint8_t argc, char **argv)
+{
+    if (argc != BT_AT_PARAM_LEN2) {
+        bts_error("ble ams client argc num invalid :%u\r\n", argc);
+        return MPC_BT_FAIL;
+    }
+    uint8_t client_id = 0;
+    uint16_t conn_id = 0;
+    client_id = (uint8_t)atoi(argv[BT_INDEX_0]);
+    conn_id = (uint16_t)atoi(argv[BT_INDEX_1]);
+
+    errcode_t ret = ble_ams_client_read_full_entity_attribute(client_id, conn_id);
+    bts_info("ble ams client read full attr ret:0x%x\r\n", ret);
+    return MPC_BT_SUCC;
+}
+
+/* AMS客户端AT命令与接口对应关系 */
+static ble_ams_client_at_hdl_info_t g_ble_ams_client_at_hdl[] = {
+    { BLE_SAMPLE_AMS_CLIENT_REGISTER_CBK, ble_ams_client_at_cmd_register_cbk },
+    { BLE_SAMPLE_AMS_CLIENT_SETUP, ble_ams_client_at_cmd_setup },
+    { BLE_SAMPLE_AMS_CLIENT_SUBSCRIBE_REMOTE_COMMNAD, ble_ams_client_at_cmd_remote_cmd },
+    { BLE_SAMPLE_AMS_CLIENT_SUBSCRIBE_ENTITY_UPDATE, ble_ams_client_at_cmd_entity_update },
+    { BLE_SAMPLE_AMS_CLIENT_SEND_REMOTE_CMD, ble_ams_client_at_cmd_send_remote_cmd },
+    { BLE_SAMPLE_AMS_CLIENT_REGISTER_INTERESTED_ENTITY_ATT, ble_ams_client_at_cmd_register_interested_entity_att },
+    { BLE_SAMPLE_AMS_CLIENT_RETRIEVE_FULL_ENTITY_ATT, ble_ams_client_at_cmd_retrieve_full_attr },
+    { BLE_SAMPLE_AMS_CLIENT_READ_FULL_ENTITY_ATT, ble_ams_client_at_cmd_read_full_attr },
+};
+
+/* AMS客户端AT命令处理入口函数 */
+void ble_ams_client_at_cmd(uint8_t cmd_id, char **params, uint8_t params_cnt)
+{
+    size_t hdl_cnt = sizeof(g_ble_ams_client_at_hdl) / sizeof(ble_ams_client_at_hdl_info_t);
+    for (uint8_t i = 0; i < hdl_cnt; i++) {
+        if (g_ble_ams_client_at_hdl[i].id == cmd_id && g_ble_ams_client_at_hdl[i].func != NULL) {
+            (void)g_ble_ams_client_at_hdl[i].func(params_cnt, params);
+            return;
+        }
+    }
+}
\ No newline at end of file
diff --git a/code/sdk/protocol/bt/host/bt/bts/bt_sample/ble_profile/ble_at_sample/src/sample_ble_ancs.c b/code/sdk/protocol/bt/host/bt/bts/bt_sample/ble_profile/ble_at_sample/src/sample_ble_ancs.c
new file mode 100644 (file)
index 0000000..560afcd
--- /dev/null
@@ -0,0 +1,401 @@
+/*
+ * Copyright (c) CompanyNameMagicTag 2024. All rights reserved.
+ * Description: This module include test function of ANCS Client module.
+ */
+#include <stdint.h>
+#include <stdlib.h>
+#include <td_base.h>
+#include "datatype.h"
+#include "sdk_general.h"
+#include "mpc_dispatch.h"
+#include "bt_at_cmd_api.h"
+#include "ble_ancs_client.h"
+#include "sample_ble_ancs.h"
+
+#define TEN 10
+#define ANCS_ATT_BYTE_LENGTH 6
+#define ANCS_DEC_CHAR_COUNT 2
+#define BYTE_BIT_COUNT 8
+
+/* ANCS客户端接口命令id */
+typedef enum {
+    BLE_SAMPLE_ANCS_CLIENT_REGISTER_CBK = 1, /* 1 注册ANCS客户端回调函数 */
+    BLE_SAMPLE_ANCS_CLIENT_SETUP,            /* 2  ANCS客户端连接服务端 */
+    BLE_SAMPLE_ANCS_CLIENT_SUBSCRIBE_NOTITY, /* 3  订阅通知 */
+    BLE_SAMPLE_ANCS_CLIENT_SUBSCRIBE_DATA,   /* 4  订阅数据 */
+    BLE_SAMPLE_ANCS_CLIENT_PERFORM_ACTION,   /* 5  执行操作 */
+    BLE_SAMPLE_ANCS_CLIENT_NOTIFY_ATT_GET,   /* 6  执行操作 */
+    BLE_SAMPLE_ANCS_CLIENT_APP_ATT_GET       /* 7  执行操作 */
+} ble_ancs_client_at_cmd_id_t;
+
+/* 命令处理函数接口 */
+typedef uint8_t (*ble_ancs_client_at_func_t)(uint8_t argc, char **argv);
+
+/* ANCS客户端AT命令id与接口对应关系 */
+typedef struct {
+    ble_ancs_client_at_cmd_id_t id;
+    ble_ancs_client_at_func_t func;
+} ble_ancs_client_at_hdl_info_t;
+
+/* ANCS服务建立结果回调 */
+static void ble_ancs_client_setup_result_cbk(uint8_t client_id, uint16_t conn_id, errcode_t status)
+{
+    bts_info("[ANCSClientSetupCBK]conn_id:%d status:0x%x\r\n", conn_id, status);
+}
+
+/* ANCS服务订阅结果回调 */
+static void ble_ancs_client_subscribe_result_cbk(uint8_t client_id, uint16_t conn_id,
+    ancs_client_subscribe_type_t type, gatt_status_t status)
+{
+    bts_info("[ANCSClientSubscribeResultCBK]conn_id:%d type:%d status:0x%x\r\n", conn_id, type, status);
+}
+
+/* ANCS服务命令执行结果回调 */
+static void ble_ancs_client_write_result_cbk(uint8_t client_id, uint16_t conn_id, gatt_status_t status)
+{
+    bts_info("[ANCSClientCMDResultCBK]conn_id:%d status:0x%x\r\n", conn_id, status);
+}
+
+/* ANCS服务消息通知回调 */
+static void ble_ancs_client_notify_source_cbk(uint8_t client_id, uint16_t conn_id,
+    ble_ancs_notification_src_t *notify_src, errcode_t status)
+{
+    if (status == ERRCODE_BT_SUCCESS) {
+        bts_info(
+            "[ANCSClientNotifySRCCBK]conn_id:%d status:0x%x notify_id:%lu "
+            "eventId:%d eventFlags:0x%x category_id:%d\r\n",
+            conn_id, status,
+            notify_src->notification_uid,
+            notify_src->event_id,
+            notify_src->event_flags,
+            notify_src->category_id);
+    } else {
+        bts_error("[ANCSClientNotifySRCCBK]conn_id:%d status:0x%x.\r\n",
+            conn_id, status);
+    }
+}
+
+/* ANCS服务通知属性响应结果回调 */
+static void ble_ancs_client_notification_attr_rsp_cbk(uint8_t client_id, uint16_t conn_id,
+    ble_ancs_notification_attr_rsp_t *notify_attr_rsp, errcode_t status)
+{
+    if (status == ERRCODE_BT_SUCCESS) {
+        bts_info("[ANCSClientNotifyATTRSPCBK]conn_id:%d status:0x%x notify_uid:%lu\r\n",
+            conn_id, status, notify_attr_rsp->notification_uid);
+
+        ble_ancs_attr_rsp_t *node = (ble_ancs_attr_rsp_t *)notify_attr_rsp->attr_rsp_lst.head;
+        uint16_t att_num = 1;
+        while (node != NULL) {
+            if (node != NULL) {
+                bts_info_no_header("[ANCSClientNotifyATTRSPCBK]att id:%d length:%lu att_value:%s\r\n",
+                    node->att_id, node->att_length, node->att);
+            }
+            node = lnext(node);
+            if (att_num == notify_attr_rsp->att_num) {
+                break;
+            }
+            att_num = att_num + 1;
+        }
+    } else {
+        bts_error("[ANCSClientNotifyATTRSPCBK]conn_id:%d status:0x%x.\r\n",
+            conn_id, status);
+    }
+}
+
+/* ANCS服务应用属性响应结果回调 */
+static void ble_ancs_client_app_attr_rsp_cbk(uint8_t client_id, uint16_t conn_id,
+    ble_ancs_app_attr_rsp_t *app_attr_rsp, errcode_t status)
+{
+    bts_info("[ANCSClientAPPATTRSPCBK]conn_id:%d status:0x%x\r\n", conn_id, status);
+    if (status == ERRCODE_BT_SUCCESS) {
+        ble_ancs_attr_rsp_t *node = (ble_ancs_attr_rsp_t *)app_attr_rsp->attr_rsp_lst.head;
+        uint16_t att_num = 1;
+        while (node != NULL) {
+            if (node != NULL && node->att_id == ANCS_APP_ATT_DISPLAY_NAME) {
+                bts_info_no_header("[ANCSClientAPPATTRSPCBK]app id:%s length:%lu app name:%s\r\n",
+                    app_attr_rsp->app_id.id, node->att_length, node->att);
+            }
+            node = lnext(node);
+            if (att_num == app_attr_rsp->att_num) {
+                break;
+            }
+            att_num = att_num + 1;
+        }
+    } else {
+        bts_error("[ANCSClientAPPATTRSPCBK]conn_id:%d status:0x%x.\r\n",
+            conn_id, status);
+    }
+}
+
+/* 注册ancs服务回调 */
+static uint8_t ble_ancs_client_at_cmd_register_cbk(uint8_t argc, char **argv)
+{
+    ble_ancs_client_callbacks_t cbk = {0};
+    cbk.setup_cb = ble_ancs_client_setup_result_cbk;
+    cbk.subscribe_cb = ble_ancs_client_subscribe_result_cbk;
+    cbk.write_result_cb = ble_ancs_client_write_result_cbk;
+    cbk.notify_source_cb = ble_ancs_client_notify_source_cbk;
+    cbk.notify_attr_cb = ble_ancs_client_notification_attr_rsp_cbk;
+    cbk.app_attr_cb = ble_ancs_client_app_attr_rsp_cbk;
+    errcode_t ret = ble_ancs_client_register_callbacks(&cbk);
+    bts_info("ble ancs client register cbk ret:0x%x\r\n", ret);
+    return MPC_BT_SUCC;
+}
+
+/* ANCS服务建立 */
+static uint8_t ble_ancs_client_at_cmd_setup(uint8_t argc, char **argv)
+{
+    if (argc != BT_AT_PARAM_LEN2) {
+        bts_error("ble ancs client argc num invalid :%u\r\n", argc);
+        return MPC_BT_FAIL;
+    }
+    uint8_t client_id = 0;
+    uint16_t conn_id = 0;
+    client_id = (uint8_t)atoi(argv[BT_INDEX_0]);
+    conn_id = (uint16_t)atoi(argv[BT_INDEX_1]);
+    errcode_t ret = ble_ancs_client_setup_service(client_id, conn_id);
+    bts_info("ble ancs client setup ret:0x%x\r\n", ret);
+    return MPC_BT_SUCC;
+}
+
+/* 订阅通知 */
+static uint8_t ble_ancs_client_at_cmd_subscribe_notify(uint8_t argc, char **argv)
+{
+    if (argc != BT_AT_PARAM_LEN3) {
+        bts_error("ble ancs client argc num invalid :%u\r\n", argc);
+        return MPC_BT_FAIL;
+    }
+    uint8_t client_id = 0;
+    uint16_t conn_id = 0;
+    uint8_t sub_flag = 0;
+    client_id = (uint8_t)atoi(argv[BT_INDEX_0]);
+    conn_id = (uint16_t)atoi(argv[BT_INDEX_1]);
+    sub_flag = (uint8_t)atoi(argv[BT_INDEX_2]);
+    if (sub_flag > ANCS_CLIENT_NOTIFY_ENABLE) {
+        bts_error("ble ancs client argc invalid :%u\r\n", argc);
+        return MPC_BT_FAIL;
+    }
+    errcode_t ret = ble_ancs_client_subscribe_notification_source(client_id, conn_id, sub_flag);
+    bts_info("ble ancs client sub notify ret:0x%x\r\n", ret);
+    return MPC_BT_SUCC;
+}
+
+/* 订阅数据 */
+static uint8_t ble_ancs_client_at_cmd_subscribe_data(uint8_t argc, char **argv)
+{
+    if (argc != BT_AT_PARAM_LEN3) {
+        bts_error("ble ancs client argc num invalid :%u\r\n", argc);
+        return MPC_BT_FAIL;
+    }
+    uint8_t client_id = 0;
+    uint16_t conn_id = 0;
+    uint8_t sub_flag = 0;
+    client_id = (uint8_t)atoi(argv[BT_INDEX_0]);
+    conn_id = (uint16_t)atoi(argv[BT_INDEX_1]);
+    sub_flag = (uint8_t)atoi(argv[BT_INDEX_2]);
+    if (sub_flag > ANCS_CLIENT_NOTIFY_ENABLE) {
+        bts_error("ble ancs client argc invalid :%u\r\n", argc);
+        return MPC_BT_FAIL;
+    }
+
+    errcode_t ret = ble_ancs_client_subscribe_data_source(client_id, conn_id, sub_flag);
+    bts_info("ble ancs client sub data ret:0x%x\r\n", ret);
+    return MPC_BT_SUCC;
+}
+
+/* 执行消息行为(积极或消极行为) */
+static uint8_t ble_ancs_client_at_cmd_perform_action(uint8_t argc, char **argv)
+{
+    if (argc != BT_AT_PARAM_LEN4) {
+        bts_error("ble ancs client argc num invalid :%u\r\n", argc);
+        return MPC_BT_FAIL;
+    }
+    uint8_t client_id = 0;
+    uint16_t conn_id = 0;
+    uint32_t notify_uid = 0;
+    uint8_t action_id = 0;
+    client_id = (uint8_t)atoi(argv[BT_INDEX_0]);
+    conn_id = (uint16_t)atoi(argv[BT_INDEX_1]);
+    notify_uid = (uint32_t)atoi(argv[BT_INDEX_2]);
+    action_id = (uint8_t)atoi(argv[BT_INDEX_3]);
+    if (action_id > ANCS_ACTION_RESERVED) {
+        bts_error("ble ancs client argc invalid :%u\r\n", argc);
+        return MPC_BT_FAIL;
+    }
+    ble_ancs_notification_action_req_t action_cmd = {0};
+    action_cmd.notification_uid = notify_uid;
+    action_cmd.action_id = action_id;
+    errcode_t ret = ble_ancs_client_send_perform_notify_action_cmd(client_id, conn_id, &action_cmd);
+    bts_info("ble ancs client perform action ret:0x%x\r\n", ret);
+    return MPC_BT_SUCC;
+}
+
+/* 十六进制字符转数值 */
+static uint8_t char_2_num(int8_t c)
+{
+    if (c >= '0' && c <= '9') {
+        return (uint8_t)(c - '0');
+    } else if (c >= 'A' && c <= 'F') {
+        return (uint8_t)(c - 'A' + TEN);
+    } else if (c >= 'a' && c <= 'f') {
+        return (uint8_t)(c - 'a' + TEN);
+    } else {
+        return TD_U8_MAX;
+    }
+}
+
+/* 十六进制字符转数值 */
+static uint8_t str_2_byte(const char *str)
+{
+    return ((char_2_num(str[0]) << TD_U4_BITS) + char_2_num(str[1]));
+}
+
+/* 十六进制字符转属性请求参数结构体 */
+static void decode_att_req_from_str(const char *str,  ble_ancs_attr_req_t *nums)
+{
+    uint32_t len = strlen(str);
+    uint32_t cnt = 0;
+    char *ptr_str = NULL;
+    uint16_t length_big_byte = 0;
+    uint16_t length_little_byte = 0;
+    ptr_str = str;
+    for (uint32_t i = 0; i < len - 1; i += ANCS_ATT_BYTE_LENGTH) { /* 6个字符为1组,2个字符为一个字节 */
+        nums[cnt].att_id = str_2_byte(ptr_str);
+        ptr_str += ANCS_DEC_CHAR_COUNT;
+        length_big_byte = (((uint16_t)str_2_byte(ptr_str)) << BYTE_BIT_COUNT);
+        ptr_str += ANCS_DEC_CHAR_COUNT;
+        length_little_byte = ((uint16_t)str_2_byte(ptr_str));
+        nums[cnt].att_max_length = (uint16_t)(length_big_byte | length_little_byte);
+        ptr_str += ANCS_DEC_CHAR_COUNT;
+        cnt++;
+    }
+}
+
+/* 获取通知属性 */
+static uint8_t ble_ancs_client_at_cmd_get_notify_att(uint8_t argc, char **argv)
+{
+    if (argc != BT_AT_PARAM_LEN5) {
+        bts_error("ble ancs client argc num invalid :%u\r\n", argc);
+        return MPC_BT_FAIL;
+    }
+
+    uint8_t client_id = 0;
+    uint16_t conn_id = 0;
+    uint32_t notify_uid = 0;
+    uint8_t att_num = 0;
+    client_id = (uint8_t)atoi(argv[BT_INDEX_0]);
+    conn_id = (uint16_t)atoi(argv[BT_INDEX_1]);
+    notify_uid = (uint32_t)atoi(argv[BT_INDEX_2]);
+    att_num = (uint8_t)atoi(argv[BT_INDEX_3]);
+    if (att_num == 0) {
+        bts_error("ble ancs client notify att req att num is zero!\r\n");
+        return MPC_BT_FAIL;
+    }
+    uint32_t len = strlen(argv[BT_INDEX_4]);
+    if ((att_num * ANCS_ATT_BYTE_LENGTH) != len) {
+        bts_error("ble ancs client notify att req att num is wrong!\r\n");
+        return MPC_BT_FAIL;
+    }
+
+    /* 获取来电通知属性 */
+    ble_ancs_notification_attr_req_t *notify_attr_req = bt_os_new(
+        sizeof(ble_ancs_notification_attr_req_t) + (att_num * sizeof(ble_ancs_attr_req_t)));
+    notify_attr_req->att_num = att_num;
+    notify_attr_req->notification_uid = notify_uid;
+    decode_att_req_from_str(argv[BT_INDEX_4], notify_attr_req->attr);
+    errcode_t ret = ble_ancs_client_send_get_notify_att_cmd(client_id, conn_id, notify_attr_req);
+    bt_os_free(notify_attr_req);
+    bts_info("ble ancs client notify att get ret:0x%x\r\n", ret);
+    return MPC_BT_SUCC;
+}
+
+/* 解析应用属性参数 */
+static uint8_t parse_app_att_req_param(ble_ancs_app_attr_req_t *app_attr_req,
+    uint16_t app_id_len, uint16_t att_num, char **argv)
+{
+    app_attr_req->att_num = att_num;
+    app_attr_req->app_id.len = app_id_len + 1;
+    uint8_t *id = bt_os_new(app_attr_req->app_id.len);
+    if (id == NULL) {
+        bts_error("[ANCSClientSample]app id memnew error!\r\n");
+        app_attr_req->app_id.id = NULL;
+        return MPC_BT_FAIL;
+    }
+    if (memcpy_s(id, app_attr_req->app_id.len, (uint8_t *)argv[BT_INDEX_2], app_id_len) != EOK) {
+        bts_error("[ANCSClientSample]app id memcpy error!\r\n");
+        bt_os_free(id);
+        app_attr_req->app_id.id = NULL;
+        return MPC_BT_FAIL;
+    }
+    *(id + app_id_len) = 0; /* This string is NULL-terminated */
+    app_attr_req->app_id.id = id;
+
+    /* 解析应用属性参数 */
+    decode_att_req_from_str(argv[BT_INDEX_4], app_attr_req->attr_id);
+    return MPC_BT_SUCC;
+}
+
+/* 获取应用属性 */
+static uint8_t ble_ancs_client_at_cmd_get_app_att(uint8_t argc, char **argv)
+{
+    if (argc != BT_AT_PARAM_LEN5) {
+        bts_error("ble ancs client argc num invalid :%u\r\n", argc);
+        return MPC_BT_FAIL;
+    }
+
+    uint8_t client_id = 0;
+    uint16_t conn_id = 0;
+    uint8_t att_num = 0;
+    uint16_t app_id_len = 0;
+    client_id = (uint8_t)atoi(argv[BT_INDEX_0]);
+    conn_id = (uint16_t)atoi(argv[BT_INDEX_1]);
+    app_id_len = strlen(argv[BT_INDEX_2]);
+    att_num = (uint8_t)atoi(argv[BT_INDEX_3]);
+    if (att_num == 0) {
+        bts_error("ble ancs client notify att req att num is zero!\r\n");
+        return MPC_BT_FAIL;
+    }
+    uint32_t len = strlen(argv[BT_INDEX_4]);
+    if ((att_num * ANCS_ATT_BYTE_LENGTH) != len) {
+        bts_error("ble ancs client notify att req att num is wrong!\r\n");
+        return MPC_BT_FAIL;
+    }
+
+    /* 获取应用属性 */
+    ble_ancs_app_attr_req_t *app_attr_req = bt_os_new(sizeof(ble_ancs_app_attr_req_t) + (att_num * sizeof(uint8_t)));
+    uint8_t result = parse_app_att_req_param(app_attr_req, app_id_len, att_num, argv);
+    if (result != MPC_BT_SUCC) {
+        if (app_attr_req->app_id.id != NULL) {
+            bt_os_free(app_attr_req->app_id.id);
+        }
+        bt_os_free(app_attr_req);
+        return result;
+    }
+    errcode_t ret = ble_ancs_client_send_get_app_att_cmd(client_id, conn_id, app_attr_req);
+    bts_info("ble ancs client app att get ret:0x%x\r\n", ret);
+    bt_os_free(app_attr_req->app_id.id);
+    bt_os_free(app_attr_req);
+    return MPC_BT_SUCC;
+}
+
+/* ANCS客户端AT命令与接口对应关系 */
+static ble_ancs_client_at_hdl_info_t g_ble_ancs_client_at_hdl[] = {
+    { BLE_SAMPLE_ANCS_CLIENT_REGISTER_CBK, ble_ancs_client_at_cmd_register_cbk },
+    { BLE_SAMPLE_ANCS_CLIENT_SETUP, ble_ancs_client_at_cmd_setup },
+    { BLE_SAMPLE_ANCS_CLIENT_SUBSCRIBE_NOTITY, ble_ancs_client_at_cmd_subscribe_notify },
+    { BLE_SAMPLE_ANCS_CLIENT_SUBSCRIBE_DATA, ble_ancs_client_at_cmd_subscribe_data },
+    { BLE_SAMPLE_ANCS_CLIENT_NOTIFY_ATT_GET, ble_ancs_client_at_cmd_get_notify_att },
+    { BLE_SAMPLE_ANCS_CLIENT_APP_ATT_GET, ble_ancs_client_at_cmd_get_app_att },
+    { BLE_SAMPLE_ANCS_CLIENT_PERFORM_ACTION, ble_ancs_client_at_cmd_perform_action },
+};
+
+void ble_ancs_client_at_cmd(uint8_t cmd_id, char **params, uint8_t params_cnt)
+{
+    size_t hdl_cnt = sizeof(g_ble_ancs_client_at_hdl) / sizeof(ble_ancs_client_at_hdl_info_t);
+    for (uint8_t i = 0; i < hdl_cnt; i++) {
+        if (g_ble_ancs_client_at_hdl[i].id == cmd_id && g_ble_ancs_client_at_hdl[i].func != NULL) {
+            (void)g_ble_ancs_client_at_hdl[i].func(params_cnt, params);
+            return;
+        }
+    }
+}
diff --git a/code/sdk/protocol/bt/host/bt/bts/bt_sample/ble_profile/profiles/include/ble_ams_client.h b/code/sdk/protocol/bt/host/bt/bts/bt_sample/ble_profile/profiles/include/ble_ams_client.h
new file mode 100644 (file)
index 0000000..39169e5
--- /dev/null
@@ -0,0 +1,977 @@
+/*
+ * Copyright (c) @CompanyNameMagicTag 2024. All rights reserved.
+ * Description: BLE Apple Media Service Client module.
+ */
+
+/**
+ * @defgroup bluetooth_bts_ams_client AMS CLIENT API
+ * @ingroup  bluetooth
+ * @{
+ */
+#ifndef BLE_AMS_CLIENT_H
+#define BLE_AMS_CLIENT_H
+#include "errcode.h"
+#include "bth_stack.h"
+#include "bth_stack_gatt.h"
+#include "bts_gatt_client.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/**
+ * @if Eng
+ * @brief  Default value of Client Characteristic Configuration.
+ * @else
+ * @brief  客户端特征配置描述符的默认值。
+ * @endif
+ */
+#define BLE_AMS_CLIENT_CHARACTERISTIC_CONFIGURATION_DEFAULT 0x0000
+
+/**
+ * @if Eng
+ * @brief  Client Characteristic Configuration value is notification.
+ * @else
+ * @brief  客户端特征配置描述符的值为通知。
+ * @endif
+ */
+#define BLE_AMS_CLIENT_CHARACTERISTIC_CONFIGURATION_NOTIFICATION 0x0001
+
+/**
+ * @if Eng
+ * @brief  Enum of ams notify switch.
+ * @else
+ * @brief  通知开关
+ * @endif
+ */
+typedef enum {
+    AMS_CLIENT_NOTIFY_DISABLE, /*!< @if Eng disable notify @else 关闭通知 @endif */
+    AMS_CLIENT_NOTIFY_ENABLE,  /*!< @if Eng enable notify @else 开启通知 @endif */
+} ams_client_notify_enable_t;
+
+/**
+ * @if Eng
+ * @brief  Enum of remote command
+ * @else
+ * @brief  远端命令ID
+ * @endif
+ */
+typedef enum {
+    AMS_RMT_CMD_ID_PLAY = 0,                  /*!< @if Eng play  @else 播放 @endif */
+    AMS_RMT_CMD_ID_PAUSE = 1,                 /*!< @if Eng pause  @else 暂停 @endif */
+    AMS_RMT_CMD_ID_TOGGLE_PLAY_PAUSE = 2,     /*!< @if Eng toggle play or pause @else 切换播放/暂停 @endif */
+    AMS_RMT_CMD_ID_NEXT_TRACK = 3,            /*!< @if Eng next track  @else 下一首 @endif */
+    AMS_RMT_CMD_ID_PREVIOUS_TRACK = 4,        /*!< @if Eng previous track  @else 上一首 @endif */
+    AMS_RMT_CMD_ID_VOLUME_UP = 5,             /*!< @if Eng volume up  @else 调高音量 @endif */
+    AMS_RMT_CMD_ID_VOLUME_DOWN = 6,           /*!< @if Eng volume down  @else 调低音量 @endif */
+    AMS_RMT_CMD_ID_ADVANCE_REPEAT_MODE = 7,   /*!< @if Eng advance repeat mode  @else 高级重复模式 @endif */
+    AMS_RMT_CMD_ID_ADVANCE_SHUFFLE_MODE = 8,  /*!< @if Eng advance shuffle mode  @else 高级随机模式 @endif */
+    AMS_RMT_CMD_ID_SKIP_FORWARD = 9,          /*!< @if Eng skip forward  @else 跳过前一个 @endif */
+    AMS_RMT_CMD_ID_SKIP_BACKWARD = 10,        /*!< @if Eng skip backward  @else 跳过后一个 @endif */
+    AMS_RMT_CMD_ID_LIKE_TRACK = 11,           /*!< @if Eng like track  @else 喜欢 @endif */
+    AMS_RMT_CMD_ID_DISLIKE_TRACK = 12,        /*!< @if Eng dislike track  @else 取消喜欢 @endif */
+    AMS_RMT_CMD_ID_BOOKMARK_TRACK = 13,       /*!< @if Eng bookmark track @else 标记喜欢或取消喜欢 @endif */
+    AMS_RMT_CMD_ID_RESERVED                   /*!< @if Eng reserved  @else 预留命令ID @endif */
+} ams_remote_cmd_id_t;
+
+/**
+ * @if Eng
+ * @brief  Enum of entity id
+ * @else
+ * @brief  实体ID
+ * @endif
+ */
+typedef enum {
+    AMS_ENTITY_ID_PLAYER = 0,  /*!< @if Eng player  @else 播放器 @endif */
+    AMS_ENTITY_ID_QUEUE = 1,   /*!< @if Eng queue   @else 播放列表 @endif */
+    AMS_ENTITY_ID_TRACK = 2,   /*!< @if Eng track   @else 曲目 @endif */
+    AMS_ENTITY_ID_RESERVED     /*!< @if Eng reserved  @else 预留实体ID @endif */
+} ams_entity_id_t;
+
+/**
+ * @if Eng
+ * @brief  Enum of entity update flags
+ * @else
+ * @brief  实体更新标记
+ * @endif
+ */
+typedef enum {
+    AMS_ENTITY_UPDATE_FLAG_TRUNCATED = (1 << 0),  /*!< @if Eng truncated  @else 销毁 @endif */
+    AMS_ENTITY_UPDATE_FLAG_RESERVED               /*!< @if Eng reserved  @else 预留标记 @endif */
+} ams_entity_updata_flag_t;
+
+/**
+ * @if Eng
+ * @brief  Enum of player attribute id
+ * @else
+ * @brief  播放器属性ID
+ * @endif
+ */
+typedef enum {
+    AMS_PALYER_ATT_ID_NAME = 0,                /*!< @if Eng name  @else 播放器名称 @endif */
+    AMS_PALYER_ATT_ID_PLAYBACK_INFO = 1,       /*!< @if Eng playback info  @else 播放信息 @endif */
+    AMS_PALYER_ATT_ID_VOLUME = 2,              /*!< @if Eng volume  @else 音量,0-1的浮点数 @endif */
+    AMS_PALYER_ATT_ID_RESERVED                 /*!< @if Eng reserved  @else 预留属性ID @endif */
+} ams_player_att_id_t;
+
+/**
+ * @if Eng
+ * @brief  Enum of queue attribute id
+ * @else
+ * @brief  队列属性ID
+ * @endif
+ */
+typedef enum {
+    AMS_QUEUE_ATT_ID_INDEX = 0,          /*!< @if Eng index  @else 序号,从0开始 @endif */
+    AMS_QUEUE_ATT_ID_COUNT = 1,          /*!< @if Eng count  @else 列表个数 @endif */
+    AMS_QUEUE_ATT_ID_SHUFFLE_MODE = 2,   /*!< @if Eng shuffle mode  @else 随机模式 @endif */
+    AMS_QUEUE_ATT_ID_REPEAT_MODE = 3,    /*!< @if Eng repeat mode  @else 重复模式 @endif */
+    AMS_QUEUE_ATT_ID_RESERVED            /*!< @if Eng reserved  @else 预留属性ID @endif */
+} ams_queue_att_id_t;
+
+
+/**
+ * @if Eng
+ * @brief  Enum of track attribute id
+ * @else
+ * @brief  曲目属性ID
+ * @endif
+ */
+typedef enum {
+    AMS_TRACK_ATT_ID_ARTIST = 0,        /*!< @if Eng artist  @else 艺术家 @endif */
+    AMS_TRACK_ATT_ID_ALBUM = 1,         /*!< @if Eng album  @else 专辑 @endif */
+    AMS_TRACK_ATT_ID_TITLE = 2,         /*!< @if Eng title  @else 标题 @endif */
+    AMS_TRACK_ATT_ID_DURATION = 3,      /*!< @if Eng duration  @else 音乐时长,秒级,浮点数 @endif */
+    AMS_TRACK_ATT_ID_RESERVED           /*!< @if Eng reserved  @else 预留属性ID @endif */
+} ams_track_att_id_t;
+
+/**
+ * @if Eng
+ * @brief  Enum of shuffle mode
+ * @else
+ * @brief  随机模式
+ * @endif
+ */
+typedef enum {
+    AMS_SHUFFLE_MODE_OFF = 0,        /*!< @if Eng off  @else 关闭 @endif */
+    AMS_SHUFFLE_MODE_ONE = 1,        /*!< @if Eng one  @else 随机模式1 @endif */
+    AMS_SHUFFLE_MODE_ALL = 2,        /*!< @if Eng all  @else 随机模式2 @endif */
+    AMS_SHUFFLE_MODE_RESERVED        /*!< @if Eng reserved  @else 预留随机模式 @endif */
+} ams_shuffle_mode_t;
+
+/**
+ * @if Eng
+ * @brief  Enum of repeat mode
+ * @else
+ * @brief  重复模式
+ * @endif
+ */
+typedef enum {
+    AMS_REPEAT_MODE_OFF = 0,        /*!< @if Eng off  @else 关闭 @endif */
+    AMS_REPEAT_MODE_ONE = 1,        /*!< @if Eng one  @else 重复模式1 @endif */
+    AMS_REPEAT_MODE_ALL = 2,        /*!< @if Eng all  @else 重复模式2 @endif */
+    AMS_REPEAT_MODE_RESERVED        /*!< @if Eng reserved  @else 预留重复模式 @endif */
+} ams_repeat_mode_t;
+
+/**
+ * @if Eng
+ * @brief  Enum of subscribe type
+ * @else
+ * @brief  订阅类型
+ * @endif
+ */
+typedef enum {
+    AMS_CLIENT_SUBSCRIBE_REMOTE_CMD = 0,          /*!< @if Eng subscribe remote command @else 订阅远端命令 @endif */
+    AMS_CLIENT_SUBSCRIBE_ENTITY_UPDATE = 1,      /*!< @if Eng subscribe entity update @else 订阅实体更新 @endif */
+} ams_client_subscribe_type_t;
+
+
+/**
+ * @if Eng
+ * @brief  Enum of write character
+ * @else
+ * @brief  写特征类型
+ * @endif
+ */
+typedef enum {
+    AMS_CLIENT_WRITE_REMOTE_CMD = 0,          /*!< @if Eng write remote command   @else 写远端命令 @endif */
+    AMS_CLIENT_WRITE_ENTITY_UPDATE = 1,      /*!< @if Eng write entity update    @else 写实体更新 @endif */
+    AMS_CLIENT_WRITE_ENTITY_ATTRIBUTE = 2,   /*!< @if Eng write entity attribute @else 写实体属性 @endif */
+} ams_client_write_character_type_t;
+
+/**
+ * @if Eng
+ * @brief  Enum of ams character.
+ * @else
+ * @brief  AMS服务特征。
+ * @endif
+ */
+typedef enum {
+    AMS_CHAR_REMOTE_CMD,         /*!< @if Eng remote command @else 远端命令 @endif */
+    AMS_CHAR_ENTITY_UPDATE,      /*!< @if Eng entity update @else 实体更新 @endif */
+    AMS_CHAR_ENTITY_ATTR,        /*!< @if Eng entity update @else 实体更新 @endif */
+    AMS_CHAR_INVALID,            /*!< @if Eng invalid @else 无效特征 @endif */
+} ams_character_t;
+
+/**
+ * @if Eng
+ * @brief  Enum of ams error codes.
+ * @else
+ * @brief  AMS客户端写和读特征响应错误码。
+ * @endif
+ */
+typedef enum {
+    AMS_ERROR_CODE_INVALID_STATE = 0xA0,        /*!< @if Eng Invalid State
+                                                     @else 无效状态,客户端未发起服务建立 @endif */
+    AMS_ERROR_CODE_INVALID_CMD = 0xA1,          /*!< @if Eng Invalid command @else 无效命令 @endif */
+    AMS_ERROR_CODE_ABSENT_ATTRIBUTE = 0xA2     /*!< @if Eng Absent attribute @else 属性为空 @endif */
+} ams_write_error_code_t;
+ 
+/**
+ * @if Eng
+ * @brief  Struct of ams service.
+ * @else
+ * @brief  AMS服务。
+ * @endif
+ */
+typedef struct {
+    uint8_t client_id;                                   /*!< @if Eng client id @else 客户端ID @endif */
+    uint16_t conn_id;                                    /*!< @if Eng connect id @else 连接ID @endif */
+    uint16_t start_handle;                               /*!< @if Eng start handle @else 服务开始handle @endif */
+    uint16_t end_handle;                                 /*!< @if Eng end handle @else   服务结束handle @endif */
+    gattc_discovery_character_result_t remote_cmd;       /*!< @if Eng remote command @else 远端命令特征 @endif */
+    gattc_discovery_character_result_t entity_update;    /*!< @if Eng entity update @else 实体更新特征 @endif */
+    gattc_discovery_character_result_t entity_attr;      /*!< @if Eng entity attribute @else 实体属性特征 @endif */
+    uint16_t remote_cmd_ccc_handle;                      /*!< @if Eng remote command ccc
+                                                              @else 远端命令特征ccc描述符handle @endif */
+    uint16_t entity_update_ccc_handle;                   /*!< @if Eng entity update ccc
+                                                              @else 实体更新特征ccc描述符handle @endif */
+} ble_ams_service_t;
+
+/**
+ * @if Eng
+ * @brief  Struct of interested entity attribute request.
+ * @else
+ * @brief  感兴趣实体属性请求。
+ * @endif
+ */
+typedef struct {
+    uint8_t entity_id;                   /*!< @if Eng entity id @else 实体ID @endif */
+    uint16_t att_num;                    /*!< @if Eng the count of attribute @else 属性个数 @endif */
+    uint8_t att_id[0];                   /*!< @if Eng the array of attribute @else 属性ID数组 @endif */
+} ble_ams_interested_entity_attr_req_t;
+
+/**
+ * @if Eng
+ * @brief  Struct of full entity attribute request.
+ * @else
+ * @brief  完整实体属性请求。
+ * @endif
+ */
+typedef struct {
+    uint8_t entity_id;    /*!< @if Eng entity id @else 实体ID @endif */
+    uint8_t att_id;       /*!< @if Eng attribute id @else 属性ID @endif */
+} ble_ams_full_entity_attr_cmd_t;
+
+/**
+ * @if Eng
+ * @brief Struct of supported remote command.
+ * @else
+ * @brief  支持的远端命令。
+ * @endif
+ */
+typedef struct {
+    uint16_t cmd_num;      /*!< @if Eng the count of command @else 支持的远端命令个数 @endif */
+    uint8_t remote_cmd[0]; /*!< @if Eng the array of remote command @else 支持的远端命令数组 @endif */
+} ble_ams_remote_cmd_rpt_t;
+
+/**
+ * @if Eng
+ * @brief Struct of entity update info.
+ * @else
+ * @brief  实体更新信息。
+ * @endif
+ */
+typedef struct {
+    uint8_t entity_id;               /*!< @if Eng entity id @else 实体ID @endif */
+    uint8_t att_id;                  /*!< @if Eng attribute id @else 属性ID @endif */
+    uint8_t entity_update_flags;     /*!< @if Eng entity update flags @else 实体更新标记 @endif */
+    uint16_t value_length;           /*!< @if Eng the length of entity value @else 属性值长度 @endif */
+    uint8_t value[0];                /*!< @if Eng entity value @else 属性值字节序(字符串,以0结尾),上层应用根据协议解析 @endif */
+} ble_ams_entity_update_rpt_t;
+
+/**
+ * @if Eng
+ * @brief Struct of full entity attribute.
+ * @else
+ * @brief  完整实体属性信息。
+ * @endif
+ */
+typedef struct {
+    uint8_t entity_id;      /*!< @if Eng entity id @else 实体ID @endif */
+    uint8_t att_id;         /*!< @if Eng attribute id @else 属性ID @endif */
+    uint16_t value_len;     /*!< @if Eng the length of entity value @else 属性值长度 @endif */
+    uint8_t value[0];       /*!< @if Eng entity value @else 属性值字节序(字符串,以0结尾) @endif */
+} ble_ams_full_attr_value_t;
+
+
+/**
+ * @if Eng
+ * @brief Callback invoked when client setup service complete.
+ * @par Callback invoked when client setup service complete.
+ * @attention
+ * @param [in] client_id  client ID.
+ * @param [in] conn_id    connect id.
+ * @param [in] status    error code{ @ref errcode_bt_t }.
+ * @retval #void no return value.
+ * @par Dependency:
+ * @li  bts_def.h
+ * @see ble_ams_client_callbacks_t
+ * @else
+ * @brief  AMS客户端服务建立完成回调函数。
+ * @par    AMS客户端服务建立完成回调函数。
+ * @attention
+ * @param [in] client_id 客户端ID。
+ * @param [in] conn_id   连接ID。
+ * @param [in] status    执行结果错误码{ @ref errcode_bt_t }。
+ * @retval 无返回值。
+ * @par 依赖:
+ * @li  bts_def.h
+ * @see ble_ams_client_callbacks_t
+ * @endif
+ */
+typedef void (*ams_client_setup_result_cbk)(uint8_t client_id, uint16_t conn_id, errcode_t status);
+
+/**
+ * @if Eng
+ * @brief Callback invoked when client subscribe character notify complete.
+ * @par Callback invoked when client subscribe character notify complete.
+ * @attention
+ * @param [in] client_id  client ID.
+ * @param [in] conn_id    connect id.
+ * @param [in] type       subscribe type{ @ref ams_client_subscribe_type_t }.
+ * @param [in] status    gatt error code{ @ref gatt_status_t }.
+ * @retval #void no return value.
+ * @par Dependency:
+ * @li  bts_gatt_stru.h
+ * @see ble_ams_client_callbacks_t
+ * @else
+ * @brief  AMS客户端订阅特征通知结果回调函数。
+ * @par    AMS客户端订阅特征通知结果回调函数。
+ * @attention
+ * @param [in] client_id 客户端ID。
+ * @param [in] conn_id   连接ID。
+ * @param [in] type      订阅类型{ @ref ams_client_subscribe_type_t }.
+ * @param [in] status    gatt操作错误码{ @ref gatt_status_t }。
+ * @retval 无返回值。
+ * @par 依赖:
+ * @li  bts_gatt_stru.h
+ * @see ble_ams_client_callbacks_t
+ * @endif
+ */
+typedef void (*ams_client_subscribe_result_cbk)(uint8_t client_id, uint16_t conn_id,
+    ams_client_subscribe_type_t type, gatt_status_t status);
+
+/**
+ * @if Eng
+ * @brief Callback invoked when remote service notify supported remote command.
+ * @par Callback invoked when remote service notify supported remote command.
+ * @attention
+ * @param [in] client_id  client ID.
+ * @param [in] conn_id    connect id.
+ * @param [in] remote_cmd supported remote command{ @ref ble_ams_remote_cmd_rpt_t }.
+ * @param [in] status    error code{ @ref errcode_bt_t }.
+ * @retval #void no return value.
+ * @par Dependency:
+ * @li  bts_def.h
+ * @see ble_ams_client_callbacks_t
+ * @else
+ * @brief  AMS远端服务通知支持的远端命令回调函数。
+ * @par    AMS远端服务通知支持的远端命令回调函数。
+ * @attention
+ * @param [in] client_id       客户端ID。
+ * @param [in] conn_id         连接ID。
+ * @param [in] remote_cmd      支持的远端命令{ @ref ble_ams_remote_cmd_rpt_t }.
+ * @param [in] status    操作错误码{ @ref errcode_bt_t }。
+ * @retval 无返回值。
+ * @par 依赖:
+ * @li  bts_def.h
+ * @see ble_ams_client_callbacks_t
+ * @endif
+ */
+typedef void (*ams_client_remote_command_rpt_cbk)(uint8_t client_id, uint16_t conn_id,
+    ble_ams_remote_cmd_rpt_t *remote_cmd, errcode_t status);
+
+/**
+ * @if Eng
+ * @brief Callback invoked when remote service notify entity update info.
+ * @par Callback invoked when remote service notify entity update info.
+ * @attention
+ * @param [in] client_id  client ID.
+ * @param [in] conn_id    connect id.
+ * @param [in] entity_update entity update info{ @ref ble_ams_entity_update_rpt_t }.
+ * @param [in] status    error code{ @ref errcode_bt_t }.
+ * @retval #void no return value.
+ * @par Dependency:
+ * @li  bts_def.h
+ * @see ble_ams_client_callbacks_t
+ * @else
+ * @brief  AMS远端服务通知实体更新信息回调函数。
+ * @par    AMS远端服务通知实体更新信息回调函数。
+ * @attention
+ * @param [in] client_id       客户端ID。
+ * @param [in] conn_id         连接ID。
+ * @param [in] entity_update   实体更新信息{ @ref ble_ams_entity_update_rpt_t }.
+ * @param [in] status    操作错误码{ @ref errcode_bt_t }。
+ * @retval 无返回值。
+ * @par 依赖:
+ * @li  bts_def.h
+ * @see ble_ams_client_callbacks_t
+ * @endif
+ */
+typedef void (*ams_client_entity_update_rpt_cbk)(uint8_t client_id, uint16_t conn_id,
+    ble_ams_entity_update_rpt_t *entity_update, errcode_t status);
+
+/**
+ * @if Eng
+ * @brief Callback invoked when client write remote character complete.
+ * @par Callback invoked when client write remote character complete.
+ * @attention
+ * @param [in] client_id  client ID.
+ * @param [in] conn_id    connect id.
+ * @param [in] type       character type{ @ref ams_client_write_character_type_t }.
+ * @param [in] status    gatt error code{ @ref gatt_status_t }.
+ * @retval #void no return value.
+ * @par Dependency:
+ * @li  bts_gatt_stru.h
+ * @see ble_ams_client_callbacks_t
+ * @else
+ * @brief  AMS客户端写对端特征响应回调函数。
+ * @par    AMS客户端写对端特征响应回调函数。
+ * @attention
+ * @param [in] client_id      客户端ID。
+ * @param [in] conn_id        连接ID。
+ * @param [in] type           特征类型{ @ref ams_client_write_character_type_t }.
+ * @param [in] status         gatt操作错误码{ @ref gatt_status_t }。
+ * @retval 无返回值。
+ * @par 依赖:
+ * @li  bts_gatt_stru.h
+ * @see ble_ams_client_callbacks_t
+ * @endif
+ */
+typedef void (*ams_client_write_character_rsp_cbk)(uint8_t client_id, uint16_t conn_id,
+    ams_client_write_character_type_t type,
+    gatt_status_t status);
+
+/**
+ * @if Eng
+ * @brief Callback invoked when client read remote character complete.
+ * @par Callback invoked when client read remote character complete.
+ * @attention
+ * @param [in] client_id  client ID.
+ * @param [in] conn_id    connect id.
+ * @param [in] read_result full attribute value{ @ref ble_ams_full_attr_value_t }.
+ * @param [in] status    gatt error code{ @ref gatt_status_t }.
+ * @retval #void no return value.
+ * @par Dependency:
+ * @li  bts_gatt_stru.h
+ * @see ble_ams_client_callbacks_t
+ * @else
+ * @brief  AMS客户端读对端特征响应回调函数。
+ * @par    AMS客户端读对端特征响应回调函数。
+ * @attention
+ * @param [in] client_id       客户端ID。
+ * @param [in] conn_id         连接ID。
+ * @param [in] read_result     特征值{ @ref ble_ams_full_attr_value_t }.
+ * @param [in] status    gatt操作错误码{ @ref gatt_status_t }。
+ * @retval 无返回值。
+ * @par 依赖:
+ * @li  bts_gatt_stru.h
+ * @see ble_ams_client_callbacks_t
+ * @endif
+ */
+typedef void (*ams_client_read_full_attr_result_cbk)(uint8_t client_id, uint16_t conn_id,
+    ble_ams_full_attr_value_t *read_result,
+    gatt_status_t status);
+
+/**
+ * @if Eng
+ * @brief Struct of AMS client callback function.
+ * @else
+ * @brief AMS 客户端回调函数接口定义。
+ * @endif
+ */
+typedef struct {
+    ams_client_setup_result_cbk               setup_cb;          /*!< @if Eng setup callback @else 客户端服务建立完成回调 @endif */
+    ams_client_subscribe_result_cbk           subscribe_cb;      /*!< @if Eng subscribe callback
+                                                                      @else 订阅特征通知结果回调 @endif */
+    ams_client_remote_command_rpt_cbk         remote_cmd_cb;     /*!< @if Eng suppported remote command callback
+                                                                      @else 远端服务通知支持的远端命令回调 @endif */
+    ams_client_entity_update_rpt_cbk          entity_update_cb;  /*!< @if Eng entity update callback
+                                                                      @else 远端服务通知实体更新信息回调 @endif */
+    ams_client_write_character_rsp_cbk        write_rsp_cb;      /*!< @if Eng write response callback
+                                                                      @else 客户端写请求响应回调 @endif */
+    ams_client_read_full_attr_result_cbk      read_full_attr_result_cb; /*!< @if Eng read response callback
+                                                                             @else 客户端读请求响应回调 @endif */
+} ble_ams_client_callbacks_t;
+
+/**
+ * @if Eng
+ * @brief The interface of AMS client setup service.
+ * @par The interface of AMS client setup service.
+ * @attention
+ * @param [in] client_id  client ID.
+ * @param [in] conn_id    connect id.
+ * @retval errcode_t {@ref errcode_bt_t}.
+ * @par Dependency:
+ * @li  bts_def.h
+ * @see
+ * @else
+ * @brief  AMS客户端发起服务建立。
+ * @par    AMS客户端发起服务建立。
+ * @attention
+ * @param [in] client_id       客户端ID。
+ * @param [in] conn_id         连接ID。
+ * @retval 操作错误码 {@ref errcode_bt_t}.
+ * @par 依赖:
+ * @li  bts_def.h
+ * @see
+ * @endif
+ */
+errcode_t ble_ams_client_setup_service(uint8_t client_id, uint16_t conn_id);
+
+/**
+ * @if Eng
+ * @brief The interface of AMS client discovery service result callback.
+ * @par The interface of AMS client discovery service result callback.
+ * @attention
+ * @param [in] client_id  client ID.
+ * @param [in] conn_id    connect id.
+ * @param [in] service    service info.
+ * @retval #void no return value.
+ * @par Dependency:
+ * @li  bts_gatt_client.h
+ * @see
+ * @else
+ * @brief  AMS客户端发现服务结果处理接口。
+ * @par    AMS客户端发现服务结果处理接口。
+ * @attention
+ * @param [in] client_id  客户端ID。
+ * @param [in] conn_id    连接ID。
+ * @param [in] service    AMS 服务信息。
+ * @retval 无返回值。
+ * @par 依赖:
+ * @li  bts_gatt_client.h
+ * @see
+ * @endif
+ */
+void ble_ams_client_discovery_service_cbk(uint8_t client_id, uint16_t conn_id,
+    gattc_discovery_service_result_t *service);
+
+/**
+ * @if Eng
+ * @brief The interface of AMS client discovery character result callback.
+ * @par The interface of AMS client discovery character result callback.
+ * @attention
+ * @param [in] client_id  client ID.
+ * @param [in] conn_id    connect id.
+ * @param [in] character    character info.
+ * @retval #void no return value.
+ * @par Dependency:
+ * @li  bts_gatt_client.h
+ * @see
+ * @else
+ * @brief  AMS客户端发现特征结果处理接口。
+ * @par    AMS客户端发现特征结果处理接口。
+ * @attention
+ * @param [in] client_id  客户端ID。
+ * @param [in] conn_id    连接ID。
+ * @param [in] character    AMS 服务特征信息。
+ * @retval 无返回值。
+ * @par 依赖:
+ * @li  bts_gatt_client.h
+ * @see
+ * @endif
+ */
+void ble_ams_client_discovery_character_cbk(uint8_t client_id, uint16_t conn_id,
+    gattc_discovery_character_result_t *character);
+
+/**
+ * @if Eng
+ * @brief The interface of AMS client discovery descriptor result callback.
+ * @par The interface of AMS client discovery descriptor result callback.
+ * @attention
+ * @param [in] client_id  client ID.
+ * @param [in] conn_id    connect id.
+ * @param [in] descriptor    descriptor info.
+ * @retval #void no return value.
+ * @par Dependency:
+ * @li  bts_gatt_client.h
+ * @see
+ * @else
+ * @brief  AMS客户端发现描述符结果处理接口。
+ * @par    AMS客户端发现描述符结果处理接口。
+ * @attention
+ * @param [in] client_id  客户端ID。
+ * @param [in] conn_id    连接ID。
+ * @param [in] descriptor    AMS 服务特征描述符信息。
+ * @retval 无返回值。
+ * @par 依赖:
+ * @li  bts_gatt_client.h
+ * @see
+ * @endif
+ */
+void ble_ams_client_discovery_descriptor_cbk(uint8_t client_id, uint16_t conn_id,
+    gattc_discovery_descriptor_result_t *descriptor);
+
+/**
+ * @if Eng
+ * @brief The interface of AMS client receive notify info callback.
+ * @par The interface of AMS client receive notify info callback.
+ * @attention
+ * @param [in] client_id  client ID.
+ * @param [in] conn_id    connect id.
+ * @param [in] data       notify info.
+ * @retval #void no return value.
+ * @par Dependency:
+ * @li  bts_gatt_client.h
+ * @see
+ * @else
+ * @brief  AMS客户端接收对端通知信息处理接口。
+ * @par    AMS客户端接收对端通知信息处理接口。
+ * @attention
+ * @param [in] client_id  客户端ID。
+ * @param [in] conn_id    连接ID。
+ * @param [in] data       对端通知信息。
+ * @retval 无返回值。
+ * @par 依赖:
+ * @li  bts_gatt_client.h
+ * @see
+ * @endif
+ */
+void ble_ams_client_notify_cbk(uint8_t client_id, uint16_t conn_id, gattc_handle_value_t *data);
+
+/**
+ * @if Eng
+ * @brief The interface of AMS client write response callback.
+ * @par The interface of AMS client write response callback.
+ * @attention
+ * @param [in] client_id  client ID.
+ * @param [in] conn_id    connect id.
+ * @param [in] status     gatt status {@ref gatt_status_t}.
+ * @retval #void no return value.
+ * @par Dependency:
+ * @li  bts_gatt_stru.h
+ * @see
+ * @else
+ * @brief  AMS客户端写请求响应结果处理接口。
+ * @par    AMS客户端写请求响应结果处理接口。
+ * @attention
+ * @param [in] client_id  客户端ID。
+ * @param [in] conn_id    连接ID。
+ * @param [in] status     gatt 操作结果码 {@ref gatt_status_t}.
+ * @retval 无返回值。
+ * @par 依赖:
+ * @li  bts_gatt_stru.h
+ * @see
+ * @endif
+ */
+void ble_ams_client_write_cbk(uint8_t client_id, uint16_t conn_id, uint16_t handle, gatt_status_t status);
+
+/**
+ * @if Eng
+ * @brief The interface of AMS client read response callback.
+ * @par The interface of AMS client read response callback.
+ * @attention
+ * @param [in] client_id      client ID.
+ * @param [in] conn_id        connect id.
+ * @param [in] read_result    read response result.
+ * @param [in] status         gatt status {@ref gatt_status_t}.
+ * @retval #void no return value.
+ * @par Dependency:
+ * @li  bts_gatt_stru.h
+ * @li  bts_gatt_client.h
+ * @see
+ * @else
+ * @brief  AMS客户端读请求响应结果处理接口。
+ * @par    AMS客户端读请求响应结果处理接口。
+ * @attention
+ * @param [in] client_id      客户端ID。
+ * @param [in] conn_id        连接ID。
+ * @param [in] read_result    读请求响应结果.
+ * @param [in] status         gatt 操作结果码 {@ref gatt_status_t}.
+ * @retval 无返回值。
+ * @par 依赖:
+ * @li  bts_gatt_stru.h
+ * @li  bts_gatt_client.h
+ * @see
+ * @endif
+ */
+void ble_ams_client_read_cbk(uint8_t client_id, uint16_t conn_id, gattc_handle_value_t *read_result,
+    gatt_status_t status);
+
+/**
+ * @if Eng
+ * @brief The interface of AMS client subscribe remote command character notify.
+ * @par The interface of AMS client subscribe remote command character notify.
+ * @attention
+ * @param [in] client_id      client ID.
+ * @param [in] conn_id        connect id.
+ * @param [in] enable_flag    enable/disable flag {@ref ams_client_notify_enable_t}.
+ * @retval errcode_t {@ref errcode_bt_t}.
+ * @par Dependency:
+ * @li  bts_def.h
+ * @see
+ * @else
+ * @brief  AMS客户端订阅远端命令特征通知接口。
+ * @par    AMS客户端订阅远端命令特征通知接口。
+ * @attention
+ * @param [in] client_id       客户端ID。
+ * @param [in] conn_id         连接ID。
+ * @param [in] enable_flag     开启/关闭标记。 {@ref ams_client_notify_enable_t}.
+ * @retval 操作错误码 {@ref errcode_bt_t}.
+ * @par 依赖:
+ * @li  bts_def.h
+ * @see
+ * @endif
+ */
+errcode_t ble_ams_client_subscribe_remote_cmd(uint8_t client_id, uint16_t conn_id,
+    ams_client_notify_enable_t enable_flag);
+
+/**
+ * @if Eng
+ * @brief The interface of AMS client subscribe entity update character notify.
+ * @par The interface of AMS client subscribe entity update character notify.
+ * @attention
+ * @param [in] client_id      client ID.
+ * @param [in] conn_id        connect id.
+ * @param [in] enable_flag    enable/disable flag {@ref ams_client_notify_enable_t}.
+ * @retval errcode_t {@ref errcode_bt_t}.
+ * @par Dependency:
+ * @li  bts_def.h
+ * @see
+ * @else
+ * @brief  AMS客户端订阅实体更新特征通知接口。
+ * @par    AMS客户端订阅实体更新特征通知接口。
+ * @attention
+ * @param [in] client_id       客户端ID。
+ * @param [in] conn_id         连接ID。
+ * @param [in] enable_flag     开启/关闭标记。 {@ref ams_client_notify_enable_t}.
+ * @retval 操作错误码 {@ref errcode_bt_t}.
+ * @par 依赖:
+ * @li  bts_def.h
+ * @see
+ * @endif
+ */
+errcode_t ble_ams_client_subscribe_entity_update(uint8_t client_id, uint16_t conn_id,
+    ams_client_notify_enable_t enable_flag);
+
+/**
+ * @if Eng
+ * @brief The interface of AMS client send remote command.
+ * @par The interface of AMS client send remote command, it is used for operating remote media action.
+ * @attention
+ * @param [in] client_id      client ID.
+ * @param [in] conn_id        connect id.
+ * @param [in] cmd_id         command id {@ref ams_remote_cmd_id_t}.
+ * @retval errcode_t {@ref errcode_bt_t}.
+ * @par Dependency:
+ * @li  bts_def.h
+ * @see
+ * @else
+ * @brief  AMS客户端发送远端命令接口。
+ * @par    AMS客户端发送远端命令接口,该接口用来控制对端媒体行为,例如播放/暂停,调节音量等
+ * @attention
+ * @param [in] client_id  客户端ID。
+ * @param [in] conn_id    连接ID。
+ * @param [in] cmd_id     命令ID。 {@ref ams_remote_cmd_id_t}.
+ * @retval 操作错误码 {@ref errcode_bt_t}.
+ * @par 依赖:
+ * @li  bts_def.h
+ * @see
+ * @endif
+ */
+errcode_t ble_ams_client_send_remote_cmd(uint8_t client_id, uint16_t conn_id,
+    ams_remote_cmd_id_t cmd_id);
+
+/**
+ * @if Eng
+ * @brief The interface of AMS client register interested entity attribute.
+ * @par The interface of AMS client register interested entity attribute.
+ * @attention
+ * @param [in] client_id         client ID.
+ * @param [in] conn_id           connect id.
+ * @param [in] entity_attr_req   interested entity attribute list.
+ * @retval errcode_t {@ref errcode_bt_t}.
+ * @par Dependency:
+ * @li  bts_def.h
+ * @see
+ * @else
+ * @brief  AMS客户端注册感兴趣的实体属性接口。
+ * @par    AMS客户端注册感兴趣的实体属性,当该实体属性更新时,对端会发送通知到本端。
+ * @attention
+ * @param [in] client_id           客户端ID。
+ * @param [in] conn_id             连接ID。
+ * @param [in] entity_attr_req     感兴趣的实体属性列表。
+ * @retval 操作错误码 {@ref errcode_bt_t}.
+ * @par 依赖:
+ * @li  bts_def.h
+ * @see
+ * @endif
+ */
+errcode_t ble_ams_client_register_interested_entity_attribute(uint8_t client_id, uint16_t conn_id,
+    ble_ams_interested_entity_attr_req_t *entity_attr_req);
+
+/**
+ * @if Eng
+ * @brief The interface of AMS client retrieve full entity attribute.
+ * @par The interface of AMS client retrieve full entity attribute.
+ * @attention
+ * @param [in] client_id         client ID.
+ * @param [in] conn_id           connect id.
+ * @param [in] full_attr_req     entity attribute.
+ * @retval errcode_t {@ref errcode_bt_t}.
+ * @par Dependency:
+ * @li  bts_def.h
+ * @see
+ * @else
+ * @brief  AMS客户端请求对端加载完整的实体属性信息接口。
+ * @par    AMS客户端请求对端加载完整的实体属性信息接口,稍后AMS客户端再发起读请求,读取完整的实体属性信息。
+ * @attention
+ * @param [in] client_id         客户端ID。
+ * @param [in] conn_id           连接ID。
+ * @param [in] full_attr_req     实体属性。
+ * @retval 操作错误码 {@ref errcode_bt_t}.
+ * @par 依赖:
+ * @li  bts_def.h
+ * @see
+ * @endif
+ */
+errcode_t ble_ams_client_retrieve_full_entity_attribute(uint8_t client_id, uint16_t conn_id,
+    ble_ams_full_entity_attr_cmd_t *full_attr_req);
+
+/**
+ * @if Eng
+ * @brief The interface of AMS client read full entity attribute.
+ * @par The interface of AMS client read full entity attribute.
+ * @attention
+ * @param [in] client_id         client ID.
+ * @param [in] conn_id           connect id.
+ * @retval errcode_t {@ref errcode_bt_t}.
+ * @par Dependency:
+ * @li  bts_def.h
+ * @see
+ * @else
+ * @brief  AMS客户端读取完整实体属性信息接口。
+ * @par    AMS客户端读取完整完整实体属性信息接口。
+ * @attention
+ * @param [in] client_id         客户端ID。
+ * @param [in] conn_id           连接ID。
+ * @retval 操作错误码 {@ref errcode_bt_t}.
+ * @par 依赖:
+ * @li  bts_def.h
+ * @see
+ * @endif
+ */
+errcode_t ble_ams_client_read_full_entity_attribute(uint8_t client_id, uint16_t conn_id);
+
+/**
+ * @if Eng
+ * @brief The interface of AMS client register callback.
+ * @par The interface of AMS client register callback.
+ * @attention
+ * @param [in] func        the pointer of callback struct.
+ * @retval errcode_t {@ref errcode_bt_t}.
+ * @par Dependency:
+ * @li  bts_def.h
+ * @see
+ * @else
+ * @brief  AMS客户端注册回调接口。
+ * @par    AMS客户端注册回调接口。
+ * @attention
+ * @param [in] func         回调函数结构体指针。
+ * @retval 操作错误码 {@ref errcode_bt_t}.
+ * @par 依赖:
+ * @li  bts_def.h
+ * @see
+ * @endif
+ */
+errcode_t ble_ams_client_register_callbacks(ble_ams_client_callbacks_t *func);
+
+/**
+ * @if Eng
+ * @brief The interface of check service uuid whether or not AMS service.
+ * @par The interface of check service uuid whether or not AMS service.
+ * @attention
+ * @param [in] uuid         service uuid.
+ * @retval true or false    true:Yes, false:No.
+ * @par Dependency:
+ * @li
+ * @see
+ * @else
+ * @brief  AMS客户端注册回调接口。
+ * @par    AMS客户端注册回调接口。
+ * @attention
+ * @param [in] uuid         服务uuid。
+ * @retval 是或否 是:是AMS服务,否:不是AMS服务.
+ * @par 依赖:
+ * @li
+ * @see
+ * @endif
+ */
+bool is_ble_ams_service(bt_uuid_t *uuid);
+
+/**
+ * @if Eng
+ * @brief The interface of AMS client clear stored remote ams service info by connect id.
+ * @par The interface of AMS client clear stored remote ams service info by connect id.
+ * @attention
+ * @param [in] client_id         client ID.
+ * @param [in] conn_id           connect id.
+ * @retval #void no return value.
+ * @par Dependency:
+ * @li
+ * @see
+ * @else
+ * @brief  AMS客户端根据连接ID清理存储的对端AMS服务信息。
+ * @par    AMS客户端根据连接ID清理存储的对端AMS服务信息。
+ * @attention
+ * @param [in] client_id         客户端ID。
+ * @param [in] conn_id           连接ID。
+ * @retval 无返回值。
+ * @par 依赖:
+ * @li
+ * @see
+ * @endif
+ */
+void ble_ams_client_clear_remote_by_conn(uint8_t client_id, uint16_t conn_id);
+
+/**
+ * @if Eng
+ * @brief The interface of AMS client clear all stored remote ams service info.
+ * @par The interface of AMS client clear all stored remote ams service info.
+ * @attention
+ * @retval #void no return value.
+ * @par Dependency:
+ * @li
+ * @see
+ * @else
+ * @brief  AMS客户端清理所有存储的对端AMS服务信息。
+ * @par    AMS客户端清理所有存储的对端AMS服务信息。
+ * @attention
+ * @retval 无返回值。
+ * @par 依赖:
+ * @li
+ * @see
+ * @endif
+ */
+void ble_ams_client_clear_remote_all(void);
+
+/**
+ * @}
+ */
+#ifdef __cplusplus
+}
+#endif
+#endif
\ No newline at end of file
diff --git a/code/sdk/protocol/bt/host/bt/bts/bt_sample/ble_profile/profiles/include/ble_ancs_client.h b/code/sdk/protocol/bt/host/bt/bts/bt_sample/ble_profile/profiles/include/ble_ancs_client.h
new file mode 100644 (file)
index 0000000..4a71909
--- /dev/null
@@ -0,0 +1,947 @@
+/*
+ * Copyright (c) @CompanyNameMagicTag 2024. All rights reserved.
+ * Description: BLE Apple Notification Center Service Client module.
+ */
+
+/**
+ * @defgroup bluetooth_bts_ancs_client ANCS CLIENT API
+ * @ingroup  bluetooth
+ * @{
+ */
+#ifndef BLE_ANCS_CLIENT_H
+#define BLE_ANCS_CLIENT_H
+#include "errcode.h"
+#include "sdk_list.h"
+#include "bth_stack.h"
+#include "bth_stack_gatt.h"
+#include "bts_gatt_client.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @if Eng
+ * @brief  Default value of Client Characteristic Configuration.
+ * @else
+ * @brief  客户端特征配置描述符的默认值。
+ * @endif
+ */
+#define BLE_ANCS_CLIENT_CHARACTERISTIC_CONFIGURATION_DEFAULT 0x0000
+
+/**
+ * @if Eng
+ * @brief  Client Characteristic Configuration value is notification.
+ * @else
+ * @brief  客户端特征配置描述符的值为通知。
+ * @endif
+ */
+#define BLE_ANCS_CLIENT_CHARACTERISTIC_CONFIGURATION_NOTIFICATION 0x0001
+
+/**
+ * @if Eng
+ * @brief  Enum of ancs notify switch.
+ * @else
+ * @brief  通知开关枚举值。
+ * @endif
+ */
+typedef enum {
+    ANCS_CLIENT_NOTIFY_DISABLE, /*!< @if Eng disable notify @else 关闭通知 @endif */
+    ANCS_CLIENT_NOTIFY_ENABLE,  /*!< @if Eng enable notify @else 开启通知 @endif */
+} ancs_client_notify_enable_t;
+
+/**
+ * @if Eng
+ * @brief  Enum of event id
+ * @else
+ * @brief  事件ID枚举值
+ * @endif
+ */
+typedef enum {
+    ANCS_EVENT_ADDED = 0,     /*!< @if Eng add @else 新增通知 @endif */
+    ANCS_EVENT_MODIFIED = 1,  /*!< @if Eng modify @else  修改通知 @endif */
+    ANCS_EVENT_REMOEVD = 2,   /*!< @if Eng remove @else  移除通知 @endif */
+    ANCS_EVENT_RESERVED       /*!< @if Eng reserved  @else 预留事件ID @endif */
+} ancs_event_id_t;
+
+/**
+ * @if Eng
+ * @brief  Enum of event flags
+ * @else
+ * @brief  事件标记枚举值
+ * @endif
+ */
+typedef enum {
+    ANCS_EVENT_FLAG_SILENT = (1 << 0),            /*!< @if Eng silent          @else  安静  @endif */
+    ANCS_EVENT_FLAG_IMPORTANT = (1 << 1),         /*!< @if Eng important       @else  重要 @endif */
+    ANCS_EVENT_FLAG_PREEXISTING = (1 << 2),       /*!< @if Eng preexisting     @else   先存的   @endif */
+    ANCS_EVENT_FLAG_POSITIVE_ACTION = (1 << 3),   /*!< @if Eng positive action @else  积极活动 @endif */
+    ANCS_EVENT_FLAG_NEGATIVE_ACTION = (1 << 4),   /*!< @if Eng negative action @else  消极活动 @endif */
+    ANCS_EVENT_FLAG_RESERVED                      /*!< @if Eng reserved        @else 预留事件标记 @endif */
+} ancs_event_flags_t;
+
+/**
+ * @if Eng
+ * @brief  Enum of command id
+ * @else
+ * @brief  命令ID枚举值
+ * @endif
+ */
+typedef enum {
+    ANCS_CMD_GET_NOTIFY_ATT = 0,          /*!< @if Eng Get notify attribute  @else 获取通知属性  @endif */
+    ANCS_CMD_GET_APP_ATT = 1,             /*!< @if Eng Get app attribute     @else  获取应用属性 @endif */
+    ANCS_CMD_PERFORM_NOTIFY_ACTION = 2,   /*!< @if Eng Perform notify action @else  处理通知     @endif */
+    ANCS_CMD_RESERVED                     /*!< @if Eng reserved              @else 预留命令ID    @endif */
+} ancs_command_id_t;
+
+/**
+ * @if Eng
+ * @brief  Enum of category id
+ * @else
+ * @brief  分类ID枚举值
+ * @endif
+ */
+typedef enum {
+    ANCS_CATEGORY_OTHER = 0,            /*!< @if Eng Other            @else 其他 @endif */
+    ANCS_CATEGORY_INCOMING_CALL = 1,    /*!< @if Eng Incoming call    @else  来电 @endif */
+    ANCS_CATEGORY_MISSED_CALL = 2,      /*!< @if Eng Missed call      @else  未接来电 @endif */
+    ANCS_CATEGORY_VOICE_MAIL = 3,       /*!< @if Eng Voice mail       @else  语音消息 @endif */
+    ANCS_CATEGORY_SOCIAL = 4,           /*!< @if Eng Social           @else  社交 @endif */
+    ANCS_CATEGORY_SCHEDULE = 5,         /*!< @if Eng Schedule         @else  计划 @endif */
+    ANCS_CATEGORY_EMAIL = 6,            /*!< @if Eng Email            @else  邮件 @endif */
+    ANCS_CATEGORY_NEWS = 7,             /*!< @if Eng News             @else  新闻 @endif */
+    ANCS_CATEGORY_HEALTH_FITNESS = 8,   /*!< @if Eng Health fitness   @else  运动健康 @endif */
+    ANCS_CATEGORY_BUSINESS_FINANCE = 9, /*!< @if Eng Business finance @else  商业金融 @endif */
+    ANCS_CATEGORY_LOCATION = 10,        /*!< @if Eng Location         @else  位置 @endif */
+    ANCS_CATEGORY_ENTERTAINMENT = 11,   /*!< @if Eng Entertainment    @else  娱乐 @endif */
+    ANCS_CATEGORY_RESERVED              /*!< @if Eng reserved         @else 预留分类ID    @endif */
+} ancs_category_id_t;
+
+
+/**
+ * @if Eng
+ * @brief  Enum of notify attribute id
+ * @else
+ * @brief  通知属性ID枚举值
+ * @endif
+ */
+typedef enum {
+    ANCS_NOTIFY_ATT_APP_ID = 0,          /*!< @if Eng App id         @else 应用编号 @endif */
+    ANCS_NOTIFY_ATT_TITLE = 1,           /*!< @if Eng Title          @else  标题 @endif */
+    ANCS_NOTIFY_ATT_SUBTITLE = 2,        /*!< @if Eng Subtitle       @else 副标题 @endif */
+    ANCS_NOTIFY_ATT_MESSAGE = 3,         /*!< @if Eng Message        @else 消息 @endif */
+    ANCS_NOTIFY_ATT_MSG_SIZE = 4,        /*!< @if Eng Message size   @else 消息大小 @endif */
+    ANCS_NOTIFY_ATT_DATE = 5,            /*!< @if Eng Date           @else 日期 @endif */
+    ANCS_NOTIFY_ATT_POSITIVE_LABEL = 6,  /*!< @if Eng Positive lable @else  积极活动标签 @endif */
+    ANCS_NOTIFY_ATT_NEGATIVE_LABEL = 7,  /*!< @if Eng Negative lable @else  消极活动标签 @endif */
+    ANCS_NOTIFY_ATT_RESERVED             /*!< @if Eng reserved       @else 预留通知属性ID @endif */
+} ancs_notification_att_id_t;
+
+/**
+ * @if Eng
+ * @brief  Enum of app attribute id
+ * @else
+ * @brief  应用属性ID枚举值
+ * @endif
+ */
+typedef enum {
+    ANCS_APP_ATT_DISPLAY_NAME = 0,          /*!< @if Eng Display name @else 应用显示名称 @endif */
+    ANCS_APP_ATT_RESERVED                   /*!< @if Eng reserved     @else 预留应用属性ID @endif */
+} ancs_app_att_id_t;
+
+/**
+ * @if Eng
+ * @brief  Enum of action id
+ * @else
+ * @brief  活动ID枚举值
+ * @endif
+ */
+typedef enum {
+    ANCS_ACTION_POSITIVE = 0,          /*!< @if Eng Positive   @else 积极活动 @endif */
+    ANCS_ACTION_NEGATIVE = 1,          /*!< @if Eng Negative   @else 消极活动 @endif */
+    ANCS_ACTION_RESERVED               /*!< @if Eng Reserved   @else 预留活动ID @endif */
+} ancs_action_id_t;
+
+/**
+ * @if Eng
+ * @brief  Enum of subscribe type
+ * @else
+ * @brief  订阅类型
+ * @endif
+ */
+typedef enum {
+    ANCS_CLIENT_SUBSCRIBE_NOTIFY = 0,        /*!< @if Eng Subscribe notify @else 订阅通知 @endif */
+    ANCS_CLIENT_SUBSCRIBE_DATA = 1,          /*!< @if Eng Subscribe data @else 订阅数据 @endif */
+} ancs_client_subscribe_type_t;
+
+/**
+ * @if Eng
+ * @brief  Enum of ancs servie character.
+ * @else
+ * @brief  ANCS服务特征。
+ * @endif
+ */
+typedef enum {
+    ANCS_CHAR_NOTIFY_SRC = 0,   /*!< @if Eng Notify source @else 通知源 @endif */
+    ANCS_CHAR_CTRL_POINT = 1,   /*!< @if Eng Control point @else 控制点 @endif */
+    ANCS_CHAR_DATA_SRC = 2,     /*!< @if Eng Data Source   @else 数据源 @endif */
+    ANCS_CHAR_INVALID,
+} ancs_character_t;
+
+/**
+ * @if Eng
+ * @brief  Enum of ancs error codes.
+ * @else
+ * @brief  ANCS客户端写特征响应错误码。
+ * @endif
+ */
+typedef enum {
+    ANCS_ERROR_CODE_UNKNOW_CMD = 0xA0,        /*!< @if Eng Unknown command @else 未知命令 @endif */
+    ANCS_ERROR_CODE_INVALID_CMD = 0xA1,       /*!< @if Eng Invalid command @else 无效命令 @endif */
+    ANCS_ERROR_CODE_INVALID_PARAM = 0xA2,     /*!< @if Eng Invalid parameter @else 无效参数 @endif */
+    ANCS_ERROR_CODE_ACTION_FAILED = 0xA3      /*!< @if Eng The action was not performed @else 行为没有被执行 @endif */
+} ancs_write_error_code_t;
+
+/**
+ * @if Eng
+ * @brief  Struct of ancs servie.
+ * @else
+ * @brief  ANCS服务。
+ * @endif
+ */
+typedef struct {
+    uint8_t client_id;                                 /*!< @if Eng Client id @else    客户端ID @endif */
+    uint16_t conn_id;                                  /*!< @if Eng Connect id @else   连接ID @endif */
+    uint16_t start_handle;                             /*!< @if Eng Start handle @else 开始handle @endif */
+    uint16_t end_handle;                               /*!< @if Eng End handle @else   结束handle @endif */
+    gattc_discovery_character_result_t notify_src;     /*!< @if Eng Notify source @else 通知源 @endif */
+    gattc_discovery_character_result_t ctl_point;      /*!< @if Eng Control point @else 控制点 @endif */
+    gattc_discovery_character_result_t data_src;       /*!< @if Eng Data Source   @else 数据源 @endif */
+    uint16_t notify_src_ccc_handle;                    /*!< @if Eng Notify source CCC handle
+                                                            @else 通知源CCC描述符handle @endif */
+    uint16_t data_src_ccc_handle;                      /*!< @if Eng Data source CCC handle
+                                                            @else 数据源CCC描述符handle @endif */
+} ble_ancs_service_t;
+
+
+/**
+ * @if Eng
+ * @brief  Struct of notification info.
+ * @else
+ * @brief  通知消息结构体。
+ * @endif
+ */
+typedef struct {
+    uint8_t event_id;                   /*!< @if Eng Event id {@ref ancs_event_id_t}
+                                             @else 事件ID {@ref ancs_event_id_t} @endif */
+    uint8_t event_flags;                /*!< @if Eng Event flags {@ref ancs_event_flags_t}
+                                             @else 事件标记 {@ref ancs_event_flags_t} @endif */
+    uint8_t category_id;                /*!< @if Eng Category id {@ref ancs_category_id_t}
+                                             @else 分类ID {@ref ancs_category_id_t} @endif */
+    uint8_t category_count;             /*!< @if Eng Category count @else 分类消息个数 @endif */
+    uint32_t notification_uid;          /*!< @if Eng Notify uuid @else 通知ID @endif */
+} ble_ancs_notification_src_t;
+
+/**
+ * @if Eng
+ * @brief Struct of attribute request
+ * @else
+ * @brief  属性请求结构体。
+ * @endif
+ */
+typedef struct {
+    uint8_t att_id;                 /*!< @if Eng Attribute id @else 属性ID @endif */
+    uint16_t att_max_length;        /*!< @if Eng Attribute max length
+                                         @else 属性值最大长度,仅用于通知属性【标题】【子标题】【消息】属性,其他属性传0 @endif */
+} ble_ancs_attr_req_t;
+
+/**
+ * @if Eng
+ * @brief  Struct of notify attribute request
+ * @else
+ * @brief  通知属性请求结构体。
+ * @endif
+ */
+typedef struct {
+    uint32_t notification_uid;          /*!< @if Eng Notify uuid @else 通知ID @endif */
+    uint16_t att_num;                   /*!< @if Eng Attribute num @else 属性个数 @endif */
+    ble_ancs_attr_req_t attr[0];        /*!< @if Eng Attribute array @else 属性ID数组 @endif */
+} ble_ancs_notification_attr_req_t;
+
+/**
+ * @if Eng
+ * @brief  Struct of attribute response
+ * @else
+ * @brief  属性响应结构体。
+ * @endif
+ */
+typedef struct {
+    uint8_t att_id;                 /*!< @if Eng Attribute id     @else 属性ID @endif */
+    uint16_t att_length;            /*!< @if Eng Attribute length @else 属性长度 @endif */
+    uint8_t *att;                   /*!< @if Eng Attribute value  @else 属性值 @endif */
+} ble_ancs_attr_rsp_t;
+
+/**
+ * @if Eng
+ * @brief  Struct of notify attribute response
+ * @else
+ * @brief  通知属性响应结构体。
+ * @endif
+ */
+typedef struct {
+    uint32_t notification_uid;     /*!< @if Eng Notify uuid @else 通知ID @endif */
+    uint16_t att_num;              /*!< @if Eng Attribute num @else 属性个数 @endif */
+    struct list_stru attr_rsp_lst; /*!< @if Eng Attribute list {@ref ble_ancs_attr_rsp_t}
+                                        @else 属性列表 {@ref ble_ancs_attr_rsp_t} @endif */
+} ble_ancs_notification_attr_rsp_t;
+
+/**
+ * @if Eng
+ * @brief  Struct of APP id
+ * @else
+ * @brief  应用ID
+ * @endif
+ */
+typedef struct {
+    uint16_t len;         /*!< @if Eng Length @else 长度 @endif */
+    uint8_t *id;          /*!< @if Eng Id @else ID @endif */
+} ble_ancs_app_id_t;
+
+/**
+ * @if Eng
+ * @brief  Struct of app attribute request
+ * @else
+ * @brief  应用属性请求结构体。
+ * @endif
+ */
+typedef struct {
+    ble_ancs_app_id_t app_id;      /*!< @if Eng App id @else 应用ID @endif */
+    uint16_t att_num;              /*!< @if Eng Attribute num @else 属性个数 @endif */
+    uint8_t attr_id[0];            /*!< @if Eng Attribute Array {@ref ancs_app_att_id_t}
+                                        @else 属性ID数组 {@ref ancs_app_att_id_t} @endif */
+} ble_ancs_app_attr_req_t;
+
+/**
+ * @if Eng
+ * @brief Struct of app attribute response
+ * @else
+ * @brief  应用属性响应结构体。
+ * @endif
+ */
+typedef struct {
+    ble_ancs_app_id_t app_id;      /*!< @if Eng App id @else 应用ID @endif */
+    uint16_t att_num;              /*!< @if Eng Attribute num @else 属性个数 @endif */
+    struct list_stru attr_rsp_lst; /*!< @if Eng Attribute list {@ref ble_ancs_attr_rsp_t}
+                                        @else 属性列表 {@ref ble_ancs_attr_rsp_t} @endif */
+} ble_ancs_app_attr_rsp_t;
+
+
+/**
+ * @if Eng
+ * @brief Struct of perform action request
+ * @else
+ * @brief  通知处理请求结构体。
+ * @endif
+ */
+typedef struct {
+    uint32_t notification_uid;        /*!< @if Eng Notify uuid @else 通知ID @endif */
+    uint8_t action_id;                /*!< @if Eng Action id {@ref ancs_action_id_t}
+                                           @else 行为ID {@ref ancs_action_id_t} @endif */
+} ble_ancs_notification_action_req_t;
+
+/**
+ * @if Eng
+ * @brief Callback invoked when client setup service complete.
+ * @par Callback invoked when client setup service complete.
+ * @attention
+ * @param [in] client_id  client ID.
+ * @param [in] conn_id    connect id.
+ * @param [in] status    error code{ @ref errcode_bt_t }.
+ * @retval #void no return value.
+ * @par Dependency:
+ * @li  bts_def.h
+ * @see ble_ancs_client_callbacks_t
+ * @else
+ * @brief  ANCS客户端服务建立完成回调函数。
+ * @par    ANCS客户端服务建立完成回调函数。
+ * @attention
+ * @param [in] client_id 客户端ID。
+ * @param [in] conn_id   连接ID。
+ * @param [in] status    执行结果错误码{ @ref errcode_bt_t }。
+ * @retval 无返回值。
+ * @par 依赖:
+ * @li  bts_def.h
+ * @see ble_ancs_client_callbacks_t
+ * @endif
+ */
+typedef void (*ancs_client_setup_result_cbk)(uint8_t client_id, uint16_t conn_id, errcode_t status);
+
+/**
+ * @if Eng
+ * @brief Callback invoked when client subscribe character notify complete.
+ * @par Callback invoked when client subscribe character notify complete.
+ * @attention
+ * @param [in] client_id  client ID.
+ * @param [in] conn_id    connect id.
+ * @param [in] type       subscribe type{ @ref ancs_client_subscribe_type_t }.
+ * @param [in] status    gatt error code{ @ref gatt_status_t }.
+ * @retval #void no return value.
+ * @par Dependency:
+ * @li  bts_gatt_stru.h
+ * @see ble_ancs_client_callbacks_t
+ * @else
+ * @brief  ANCS客户端订阅特征通知结果回调函数。
+ * @par    ANCS客户端订阅特征通知结果回调函数。
+ * @attention
+ * @param [in] client_id 客户端ID。
+ * @param [in] conn_id   连接ID。
+ * @param [in] type      订阅类型{ @ref ancs_client_subscribe_type_t }.
+ * @param [in] status    gatt操作错误码{ @ref gatt_status_t }。
+ * @retval 无返回值。
+ * @par 依赖:
+ * @li  bts_gatt_stru.h
+ * @see ble_ancs_client_callbacks_t
+ * @endif
+ */
+typedef void (*ancs_client_subscribe_result_cbk)(uint8_t client_id, uint16_t conn_id,
+    ancs_client_subscribe_type_t type, gatt_status_t status);
+
+/**
+ * @if Eng
+ * @brief Callback invoked when remote service push notify message.
+ * @par Callback invoked when remote service push notify message.
+ * @attention
+ * @param [in] client_id  client ID.
+ * @param [in] conn_id    connect id.
+ * @param [in] notify_src notify message { @ref ble_ancs_notification_src_t }.
+ * @param [in] status    error code{ @ref errcode_bt_t }.
+ * @retval #void no return value.
+ * @par Dependency:
+ * @li  bts_def.h
+ * @see ble_ancs_client_callbacks_t
+ * @else
+ * @brief  ANCS远端服务推送通知消息回调函数。
+ * @par    ANCS远端服务推送通知消息回调函数。
+ * @attention
+ * @param [in] client_id       客户端ID。
+ * @param [in] conn_id         连接ID。
+ * @param [in] notify_src      通知消息 { @ref ble_ancs_notification_src_t }.
+ * @param [in] status    操作错误码{ @ref errcode_bt_t }。
+ * @retval 无返回值。
+ * @par 依赖:
+ * @li  bts_def.h
+ * @see ble_ancs_client_callbacks_t
+ * @endif
+ */
+typedef void (*ancs_client_notify_source_cbk)(uint8_t client_id, uint16_t conn_id,
+    ble_ancs_notification_src_t *notify_src, errcode_t status);
+
+/**
+ * @if Eng
+ * @brief Callback invoked when remote service push notify attribute info.
+ * @par Callback invoked when remote service push notify attribute info.
+ * @attention
+ * @param [in] client_id       client ID.
+ * @param [in] conn_id         connect id.
+ * @param [in] notify_attr_rsp notify attribute info { @ref ble_ancs_notification_attr_rsp_t }.
+ * @param [in] status    error code{ @ref errcode_bt_t }.
+ * @retval #void no return value.
+ * @par Dependency:
+ * @li  bts_def.h
+ * @see ble_ancs_client_callbacks_t
+ * @else
+ * @brief  ANCS远端服务推送通知属性信息回调函数。
+ * @par    ANCS远端服务推送通知属性信息回调函数。
+ * @attention
+ * @param [in] client_id            客户端ID。
+ * @param [in] conn_id              连接ID。
+ * @param [in] notify_attr_rsp      通知属性信息 { @ref ble_ancs_notification_attr_rsp_t }.
+ * @param [in] status    操作错误码{ @ref errcode_bt_t }。
+ * @retval 无返回值。
+ * @par 依赖:
+ * @li  bts_def.h
+ * @see ble_ancs_client_callbacks_t
+ * @endif
+ */
+typedef void (*ancs_client_notification_attr_rsp_cbk)(uint8_t client_id, uint16_t conn_id,
+    ble_ancs_notification_attr_rsp_t *notify_attr_rsp, errcode_t status);
+
+/**
+ * @if Eng
+ * @brief Callback invoked when remote service push app attribute info.
+ * @par Callback invoked when remote service push app attribute info.
+ * @attention
+ * @param [in] client_id  client ID.
+ * @param [in] conn_id    connect id.
+ * @param [in] app_attr_rsp app attribute info { @ref ble_ancs_app_attr_rsp_t }.
+ * @param [in] status    error code{ @ref errcode_bt_t }.
+ * @retval #void no return value.
+ * @par Dependency:
+ * @li  bts_def.h
+ * @see ble_ancs_client_callbacks_t
+ * @else
+ * @brief  ANCS远端服务推送应用属性信息回调函数。
+ * @par    ANCS远端服务推送应用属性信息回调函数。
+ * @attention
+ * @param [in] client_id       客户端ID。
+ * @param [in] conn_id         连接ID。
+ * @param [in] app_attr_rsp    应用属性信息 { @ref ble_ancs_app_attr_rsp_t }.
+ * @param [in] status    操作错误码{ @ref errcode_bt_t }。
+ * @retval 无返回值。
+ * @par 依赖:
+ * @li  bts_def.h
+ * @see ble_ancs_client_callbacks_t
+ * @endif
+ */
+typedef void (*ancs_client_app_attr_rsp_cbk)(uint8_t client_id, uint16_t conn_id,
+    ble_ancs_app_attr_rsp_t *app_attr_rsp, errcode_t status);
+
+/**
+ * @if Eng
+ * @brief Callback invoked when client write contro point complete.
+ * @par Callback invoked when client write contro point complete.
+ * @attention
+ * @param [in] client_id  client ID.
+ * @param [in] conn_id    connect id.
+ * @param [in] status    gatt error code{ @ref gatt_status_t }.
+ * @retval #void no return value.
+ * @par Dependency:
+ * @li  bts_gatt_stru.h
+ * @see ble_ancs_client_callbacks_t
+ * @else
+ * @brief  AMS客户端写控制点特征响应回调函数。
+ * @par    AMS客户端写控制点特征响应回调函数。
+ * @attention
+ * @param [in] client_id      客户端ID。
+ * @param [in] conn_id        连接ID。
+ * @param [in] status         gatt操作错误码{ @ref gatt_status_t }。
+ * @retval 无返回值。
+ * @par 依赖:
+ * @li  bts_gatt_stru.h
+ * @see ble_ancs_client_callbacks_t
+ * @endif
+ */
+typedef void (*ancs_client_write_result_cbk)(uint8_t client_id, uint16_t conn_id, gatt_status_t status);
+
+/**
+ * @if Eng
+ * @brief Struct of GATT client callback function.
+ * @else
+ * @brief GATT client回调函数接口定义。
+ * @endif
+ */
+typedef struct {
+    ancs_client_setup_result_cbk           setup_cb;          /*!< @if Eng setup callback @else 客户端服务建立完成回调 @endif */
+    ancs_client_subscribe_result_cbk        subscribe_cb;     /*!< @if Eng subscribe callback @else 订阅特征通知结果回调 @endif */
+    ancs_client_notify_source_cbk           notify_source_cb; /*!< @if Eng notify source callback
+                                                                   @else 远端服务推送通知消息回调 @endif */
+    ancs_client_notification_attr_rsp_cbk   notify_attr_cb;   /*!< @if Eng notify attribute callback
+                                                                   @else 远端服务推送通知属性信息回调 @endif */
+    ancs_client_app_attr_rsp_cbk            app_attr_cb;      /*!< @if Eng app attribute callback
+                                                                   @else 远端服务推送应用属性信息回调 @endif */
+    ancs_client_write_result_cbk            write_result_cb;  /*!< @if Eng write result callback
+                                                                   @else 客户端写控制点特征请求响应回调 @endif */
+} ble_ancs_client_callbacks_t;
+
+/**
+ * @if Eng
+ * @brief The interface of ANCS client setup service.
+ * @par The interface of ANCS client setup service.
+ * @attention
+ * @param [in] client_id  client ID.
+ * @param [in] conn_id    connect id.
+ * @retval errcode_t {@ref errcode_bt_t}.
+ * @par Dependency:
+ * @li  bts_def.h
+ * @see
+ * @else
+ * @brief  ANCS客户端发起服务建立。
+ * @par    ANCS客户端发起服务建立。
+ * @attention
+ * @param [in] client_id       客户端ID。
+ * @param [in] conn_id         连接ID。
+ * @retval 操作错误码 {@ref errcode_bt_t}.
+ * @par 依赖:
+ * @li  bts_def.h
+ * @see
+ * @endif
+ */
+errcode_t ble_ancs_client_setup_service(uint8_t client_id, uint16_t conn_id);
+
+/**
+ * @if Eng
+ * @brief The interface of ANCS client discovery service result callback.
+ * @par The interface of ANCS client discovery service result callback.
+ * @attention
+ * @param [in] client_id  client ID.
+ * @param [in] conn_id    connect id.
+ * @param [in] service    service info.
+ * @retval #void no return value.
+ * @par Dependency:
+ * @li  bts_gatt_client.h
+ * @see
+ * @else
+ * @brief  ANCS客户端发现服务结果处理接口。
+ * @par    ANCS客户端发现服务结果处理接口。
+ * @attention
+ * @param [in] client_id  客户端ID。
+ * @param [in] conn_id    连接ID。
+ * @param [in] service    ANCS 服务信息。
+ * @retval 无返回值。
+ * @par 依赖:
+ * @li  bts_gatt_client.h
+ * @see
+ * @endif
+ */
+void ble_ancs_client_discovery_service_cbk(uint8_t client_id, uint16_t conn_id,
+    gattc_discovery_service_result_t *service);
+
+/**
+ * @if Eng
+ * @brief The interface of ANCS client discovery character result callback.
+ * @par The interface of ANCS client discovery character result callback.
+ * @attention
+ * @param [in] client_id  client ID.
+ * @param [in] conn_id    connect id.
+ * @param [in] character    character info.
+ * @retval #void no return value.
+ * @par Dependency:
+ * @li  bts_gatt_client.h
+ * @see
+ * @else
+ * @brief  ANCS客户端发现特征结果处理接口。
+ * @par    ANCS客户端发现特征结果处理接口。
+ * @attention
+ * @param [in] client_id  客户端ID。
+ * @param [in] conn_id    连接ID。
+ * @param [in] character    ANCS 服务特征信息。
+ * @retval 无返回值。
+ * @par 依赖:
+ * @li  bts_gatt_client.h
+ * @see
+ * @endif
+ */
+void ble_ancs_client_discovery_character_cbk(uint8_t client_id, uint16_t conn_id,
+    gattc_discovery_character_result_t *character);
+
+/**
+ * @if Eng
+ * @brief The interface of ANCS client discovery descriptor result callback.
+ * @par The interface of ANCS client discovery descriptor result callback.
+ * @attention
+ * @param [in] client_id  client ID.
+ * @param [in] conn_id    connect id.
+ * @param [in] descriptor    descriptor info.
+ * @retval #void no return value.
+ * @par Dependency:
+ * @li  bts_gatt_client.h
+ * @see
+ * @else
+ * @brief  ANCS客户端发现描述符结果处理接口。
+ * @par    ANCS客户端发现描述符结果处理接口。
+ * @attention
+ * @param [in] client_id     客户端ID。
+ * @param [in] conn_id       连接ID。
+ * @param [in] descriptor    ANCS服务特征描述符信息。
+ * @retval 无返回值。
+ * @par 依赖:
+ * @li  bts_gatt_client.h
+ * @see
+ * @endif
+ */
+void ble_ancs_client_discovery_descriptor_cbk(uint8_t client_id, uint16_t conn_id,
+    gattc_discovery_descriptor_result_t *descriptor);
+
+/**
+ * @if Eng
+ * @brief The interface of ANCS client receive notify info callback.
+ * @par The interface of ANCS client receive notify info callback.
+ * @attention
+ * @param [in] client_id  client ID.
+ * @param [in] conn_id    connect id.
+ * @param [in] data       notify info.
+ * @retval #void no return value.
+ * @par Dependency:
+ * @li  bts_gatt_client.h
+ * @see
+ * @else
+ * @brief  ANCS客户端接收对端通知信息处理接口。
+ * @par    ANCS客户端接收对端通知信息处理接口。
+ * @attention
+ * @param [in] client_id  客户端ID。
+ * @param [in] conn_id    连接ID。
+ * @param [in] data       对端通知信息。
+ * @retval 无返回值。
+ * @par 依赖:
+ * @li  bts_gatt_client.h
+ * @see
+ * @endif
+ */
+void ble_ancs_client_notify_cbk(uint8_t client_id, uint16_t conn_id, gattc_handle_value_t *data);
+
+/**
+ * @if Eng
+ * @brief The interface of ANCS client write response callback.
+ * @par The interface of ANCS client write response callback.
+ * @attention
+ * @param [in] client_id  client ID.
+ * @param [in] conn_id    connect id.
+ * @param [in] status     gatt status {@ref gatt_status_t}.
+ * @retval #void no return value.
+ * @par Dependency:
+ * @li  bts_gatt_stru.h
+ * @see
+ * @else
+ * @brief  ANCS客户端写请求响应结果处理接口。
+ * @par    ANCS客户端写请求响应结果处理接口。
+ * @attention
+ * @param [in] client_id  客户端ID。
+ * @param [in] conn_id    连接ID。
+ * @param [in] status     gatt 操作结果码 {@ref gatt_status_t}.
+ * @retval 无返回值。
+ * @par 依赖:
+ * @li  bts_gatt_stru.h
+ * @see
+ * @endif
+ */
+void ble_ancs_client_write_cbk(uint8_t client_id, uint16_t conn_id, uint16_t handle, gatt_status_t status);
+
+/**
+ * @if Eng
+ * @brief The interface of ANCS client subscribe notify source character notify.
+ * @par The interface of ANCS client subscribe notify source character notify.
+ * @attention
+ * @param [in] client_id      client ID.
+ * @param [in] conn_id        connect id.
+ * @param [in] enable_flag    enable/disable flag {@ref ancs_client_notify_enable_t}.
+ * @retval errcode_t {@ref errcode_bt_t}.
+ * @par Dependency:
+ * @li  bts_def.h
+ * @see
+ * @else
+ * @brief  ANCS客户端订阅通知源特征通知接口。
+ * @par    ANCS客户端订阅通知源特征通知接口。
+ * @attention
+ * @param [in] client_id       客户端ID。
+ * @param [in] conn_id         连接ID。
+ * @param [in] enable_flag     开启/关闭标记。 {@ref ancs_client_notify_enable_t}.
+ * @retval 操作错误码 {@ref errcode_bt_t}.
+ * @par 依赖:
+ * @li  bts_def.h
+ * @see
+ * @endif
+ */
+errcode_t ble_ancs_client_subscribe_notification_source(uint8_t client_id, uint16_t conn_id,
+    ancs_client_notify_enable_t enable_flag);
+
+/**
+ * @if Eng
+ * @brief The interface of ANCS client subscribe data source character notify.
+ * @par The interface of ANCS client subscribe data source character notify.
+ * @attention
+ * @param [in] client_id      client ID.
+ * @param [in] conn_id        connect id.
+ * @param [in] enable_flag    enable/disable flag {@ref ancs_client_notify_enable_t}.
+ * @retval errcode_t {@ref errcode_bt_t}.
+ * @par Dependency:
+ * @li  bts_def.h
+ * @see
+ * @else
+ * @brief  ANCS客户端订阅数据源特征通知接口。
+ * @par    ANCS客户端订阅数据源特征通知接口。
+ * @attention
+ * @param [in] client_id       客户端ID。
+ * @param [in] conn_id         连接ID。
+ * @param [in] enable_flag     开启/关闭标记。 {@ref ancs_client_notify_enable_t}.
+ * @retval 操作错误码 {@ref errcode_bt_t}.
+ * @par 依赖:
+ * @li  bts_def.h
+ * @see
+ * @endif
+ */
+errcode_t ble_ancs_client_subscribe_data_source(uint8_t client_id, uint16_t conn_id,
+    ancs_client_notify_enable_t enable_flag);
+
+/**
+ * @if Eng
+ * @brief The interface of ANCS client send get notify attribute command.
+ * @par The interface of ANCS client send get notify attribute command.
+ * @attention
+ * @param [in] client_id      client ID.
+ * @param [in] conn_id        connect id.
+ * @param [in] notify_att_req   notify attribute request {@ref ble_ancs_notification_attr_req_t}.
+ * @retval errcode_t {@ref errcode_bt_t}.
+ * @par Dependency:
+ * @li  bts_def.h
+ * @see
+ * @else
+ * @brief  ANCS客户端发送获取通知属性命令接口。
+ * @par    ANCS客户端发送获取通知属性命令接口。
+ * @attention
+ * @param [in] client_id       客户端ID。
+ * @param [in] conn_id         连接ID。
+ * @param [in] notify_att_req  通知属性请求。 {@ref ble_ancs_notification_attr_req_t}.
+ * @retval 操作错误码 {@ref errcode_bt_t}.
+ * @par 依赖:
+ * @li  bts_def.h
+ * @see
+ * @endif
+ */
+errcode_t ble_ancs_client_send_get_notify_att_cmd(uint8_t client_id, uint16_t conn_id,
+    ble_ancs_notification_attr_req_t *notify_att_req);
+
+/**
+ * @if Eng
+ * @brief The interface of ANCS client send get app attribute command.
+ * @par The interface of ANCS client send get app attribute command.
+ * @attention
+ * @param [in] client_id      client ID.
+ * @param [in] conn_id        connect id.
+ * @param [in] app_att_req   app attribute request {@ref ble_ancs_app_attr_req_t}.
+ * @retval errcode_t {@ref errcode_bt_t}.
+ * @par Dependency:
+ * @li  bts_def.h
+ * @see
+ * @else
+ * @brief  ANCS客户端发送获取应用属性命令接口。
+ * @par    ANCS客户端发送获取应用属性命令接口。
+ * @attention
+ * @param [in] client_id       客户端ID。
+ * @param [in] conn_id         连接ID。
+ * @param [in] app_att_req  应用属性请求。 {@ref ble_ancs_app_attr_req_t}.
+ * @retval 操作错误码 {@ref errcode_bt_t}.
+ * @par 依赖:
+ * @li  bts_def.h
+ * @see
+ * @endif
+ */
+errcode_t ble_ancs_client_send_get_app_att_cmd(uint8_t client_id, uint16_t conn_id,
+    ble_ancs_app_attr_req_t *app_att_req);
+
+/**
+ * @if Eng
+ * @brief The interface of ANCS client send perform notify action command.
+ * @par The interface of ANCS client send perform notify action command.
+ * @attention
+ * @param [in] client_id      client ID.
+ * @param [in] conn_id        connect id.
+ * @param [in] action_req     perform action request {@ref ble_ancs_notification_action_req_t}.
+ * @retval errcode_t {@ref errcode_bt_t}.
+ * @par Dependency:
+ * @li  bts_def.h
+ * @see
+ * @else
+ * @brief  ANCS客户端发送执行通知行为命令接口。
+ * @par    ANCS客户端发送执行通知行为命令接口。
+ * @attention
+ * @param [in] client_id       客户端ID。
+ * @param [in] conn_id         连接ID。
+ * @param [in] action_req      执行行为请求。 {@ref ble_ancs_notification_action_req_t}.
+ * @retval 操作错误码 {@ref errcode_bt_t}.
+ * @par 依赖:
+ * @li  bts_def.h
+ * @see
+ * @endif
+ */
+errcode_t ble_ancs_client_send_perform_notify_action_cmd(uint8_t client_id, uint16_t conn_id,
+    ble_ancs_notification_action_req_t *action_req);
+
+/**
+ * @if Eng
+ * @brief The interface of ANCS client register callback.
+ * @par The interface of ANCS client register callback.
+ * @attention
+ * @param [in] func        the pointer of callback struct.
+ * @retval errcode_t {@ref errcode_bt_t}.
+ * @par Dependency:
+ * @li  bts_def.h
+ * @see
+ * @else
+ * @brief  ANCS客户端注册回调接口。
+ * @par    ANCS客户端注册回调接口。
+ * @attention
+ * @param [in] func         回调函数结构体指针。
+ * @retval 操作错误码 {@ref errcode_bt_t}.
+ * @par 依赖:
+ * @li  bts_def.h
+ * @see
+ * @endif
+ */
+errcode_t ble_ancs_client_register_callbacks(ble_ancs_client_callbacks_t *func);
+
+/**
+ * @if Eng
+ * @brief The interface of check service uuid whether or not ANCS service.
+ * @par The interface of check service uuid whether or not ANCS service.
+ * @attention
+ * @param [in] uuid         service uuid.
+ * @retval true or false    true:Yes, false:No.
+ * @par Dependency:
+ * @li
+ * @see
+ * @else
+ * @brief  ANCS客户端注册回调接口。
+ * @par    ANCS客户端注册回调接口。
+ * @attention
+ * @param [in] uuid         服务uuid。
+ * @retval 是或否 是:是ANCS服务,否:不是ANCS服务.
+ * @par 依赖:
+ * @li
+ * @see
+ * @endif
+ */
+bool is_ble_ancs_service(bt_uuid_t *uuid);
+
+/**
+ * @if Eng
+ * @brief The interface of ANCS client clear stored remote ANCS service info by connect id.
+ * @par The interface of ANCS client clear stored remote ANCS service info by connect id.
+ * @attention
+ * @param [in] client_id         client ID.
+ * @param [in] conn_id           connect id.
+ * @retval #void no return value.
+ * @par Dependency:
+ * @li
+ * @see
+ * @else
+ * @brief  ANCS客户端根据连接ID清理存储的对端ANCS服务信息。
+ * @par    ANCS客户端根据连接ID清理存储的对端ANCS服务信息。
+ * @attention
+ * @param [in] client_id         客户端ID。
+ * @param [in] conn_id           连接ID。
+ * @retval 无返回值。
+ * @par 依赖:
+ * @li
+ * @see
+ * @endif
+ */
+void ble_ancs_client_clear_remote_by_conn(uint8_t client_id, uint16_t conn_id);
+
+/**
+ * @if Eng
+ * @brief The interface of ANCS client clear all stored remote ANCS service info.
+ * @par The interface of ANCS client clear all stored remote ANCS service info.
+ * @attention
+ * @retval #void no return value.
+ * @par Dependency:
+ * @li
+ * @see
+ * @else
+ * @brief  ANCS客户端清理所有存储的对端ANCS服务信息。
+ * @par    ANCS客户端清理所有存储的对端ANCS服务信息。
+ * @attention
+ * @retval 无返回值。
+ * @par 依赖:
+ * @li
+ * @see
+ * @endif
+ */
+void ble_ancs_client_clear_remote_all(void);
+
+/**
+ * @}
+ */
+#ifdef __cplusplus
+}
+#endif
+#endif
\ No newline at end of file
index 1473bfd..b626a1d 100644 (file)
@@ -8,5 +8,7 @@ set(
     ${CMAKE_CURRENT_SOURCE_DIR}/ble_fmp_target.c
     ${CMAKE_CURRENT_SOURCE_DIR}/ble_fmp_locator.c
     ${CMAKE_CURRENT_SOURCE_DIR}/ble_gatts_callbacks.c
+    ${CMAKE_CURRENT_SOURCE_DIR}/ble_ancs_client.c
+    ${CMAKE_CURRENT_SOURCE_DIR}/ble_ams_client.c
 )
 set(BTH_SAMPLE_LIST "${BTH_SAMPLE_LIST}" "${bt_comm_src_list}" CACHE INTERNAL "bt ram obj list" FORCE)
diff --git a/code/sdk/protocol/bt/host/bt/bts/bt_sample/ble_profile/profiles/src/ble_ams_client.c b/code/sdk/protocol/bt/host/bt/bts/bt_sample/ble_profile/profiles/src/ble_ams_client.c
new file mode 100644 (file)
index 0000000..56f352e
--- /dev/null
@@ -0,0 +1,593 @@
+/*
+ * Copyright (c) @CompanyNameMagicTag 2024. All rights reserved.
+ * Description: BLE Apple Media Service Client module.
+ */
+
+#include <string.h>
+#include "sdk_list.h"
+#include "errcode.h"
+#include "btsrv_log.h"
+#include "bts_le_gap.h"
+#include "sdk_general.h"
+#include "bts_uuid.h"
+#include "ble_ams_client.h"
+
+#define BLE_CLIENT_CHARACTERISTIC_CONFIGURATION_UUID 0x2902
+#define AMS_ENTITY_UPDATE_NOTIFY_VALUE_OFFSET 3
+#define AMS_ENTITY_UPDATE_NOTIFY_FLAGS_OFFSET 2
+#define AMS_STRING_SUFFIX_ZERO_BYTE 1
+
+#define u16_low_byte(uuid) ((uint8_t)((uuid) & 0x00FF))
+#define u16_high_byte(uuid) ((uint8_t)(((uuid) & 0xFF00) >> 8))
+
+/* AMS服务UUID,小端序 */
+uint8_t ams_uuid[BT_UUID_MAX_LEN] = {
+    0xDC, 0xF8, 0x55, 0xAD, 0x02, 0xC5, 0xF4, 0x8E, 0x3A, 0x43, 0x36, 0x0F, 0x2B, 0x50, 0xD3, 0x89};
+
+/* AMS服务特征UUID-Remote Command,小端序 */
+uint8_t rmt_cmd_uuid[BT_UUID_MAX_LEN] = {
+    0xC2, 0x51, 0xCA, 0xF7, 0x56, 0x0E, 0xDF, 0xB8, 0x8A, 0x4A, 0xB1, 0x57, 0xD8, 0x81, 0x3C, 0x9B};
+
+/* AMS服务特征UUID-Entity Update,小端序 */
+uint8_t entity_update_uuid[BT_UUID_MAX_LEN] = {
+    0x02, 0xC1, 0x96, 0xBA, 0x92, 0xBB, 0x0C, 0x9A, 0x1F, 0x41, 0x8D, 0x80, 0xCE, 0xAB, 0x7C, 0x2F};
+
+/* AMS服务特征UUID-Entity Attribute,小端序 */
+uint8_t entity_att_uuid[BT_UUID_MAX_LEN] = {
+    0xD7, 0xD5, 0xBB, 0x70, 0xA8, 0xA3, 0xAB, 0xA6, 0xD8, 0x46, 0xAB, 0x23, 0x8C, 0xF3, 0xB2, 0xC6};
+
+/* AMS客户端回调函数结构体 */
+ble_ams_client_callbacks_t g_ams_callbacks_t = {0};
+
+/* 对端AMS服务信息 */
+struct list_stru g_ble_ams_service_list = {NULL, NULL};
+
+/* 根据连接ID查询存储的对端AMS服务信息 */
+static ble_ams_service_t* ams_service_remote_by_conn(uint8_t client_id, uint16_t conn_id)
+{
+    ble_ams_service_t *node = (ble_ams_service_t *)g_ble_ams_service_list.head;
+    while (node != NULL) {
+        if ((node->client_id == client_id) && (node->conn_id == conn_id)) {
+            return node;
+        }
+        node = lnext(node);
+    }
+
+    return NULL;
+}
+
+/* AMS客户端发起服务建立 */
+errcode_t ble_ams_client_setup_service(uint8_t client_id, uint16_t conn_id)
+{
+    ble_ams_service_t *remote = ams_service_remote_by_conn(client_id, conn_id);
+    if (remote != NULL) {
+        bts_error("ams client remote service is already exist,client_id:%u, conn_id:%u.\r\n",
+            client_id, conn_id);
+        return ERRCODE_BT_DONE;
+    }
+
+    bt_uuid_t service_uuid = {0};
+    service_uuid.uuid_len = BT_UUID_MAX_LEN;
+    if (memcpy_s(service_uuid.uuid, BT_UUID_MAX_LEN, ams_uuid, BT_UUID_MAX_LEN) != EOK) {
+        bts_error("[btsrv][ERROR] uuid memcpy fail!\r\n");
+        return ERRCODE_BT_FAIL;
+    }
+    return gattc_discovery_service(client_id, conn_id, &service_uuid);
+}
+
+/* 发现服务回调函数 */
+void ble_ams_client_discovery_service_cbk(uint8_t client_id, uint16_t conn_id,
+    gattc_discovery_service_result_t *service)
+{
+    ble_ams_service_t *remote = ams_service_remote_by_conn(client_id, conn_id);
+    if (remote != NULL) {
+        bts_error("ams client remote service is already exist,client_id:%u, conn_id:%u.\r\n",
+            client_id, conn_id);
+        return;
+    }
+    remote = bt_sdk_list_node_create(sizeof(ble_ams_service_t));
+    if (remote == NULL) {
+        bts_info("ams client remote node create fail.\r\n");
+        return;
+    }
+    remote->client_id = client_id;
+    remote->conn_id = conn_id;
+    remote->start_handle = service->start_hdl;
+    remote->end_handle = service->end_hdl;
+    bt_sdk_list_add_tail(&g_ble_ams_service_list, remote);
+
+    /* 发现特征 */
+    gattc_discovery_character_param_t param = {0};
+    param.service_handle = remote->start_handle;
+    errcode_t ret = gattc_discovery_character(client_id, conn_id, &param);
+    bts_info("ams client discovery character ret:%u.\r\n", ret);
+}
+
+/* AMS服务特征匹配 */
+static ams_character_t ams_char_match(bt_uuid_t *uuid)
+{
+    if (uuid->uuid_len != BT_UUID_MAX_LEN) {
+        return AMS_CHAR_INVALID;
+    }
+    bt_uuid_t char_uuid = {0};
+    char_uuid.uuid_len = BT_UUID_MAX_LEN;
+    if (memcpy_s(char_uuid.uuid, BT_UUID_MAX_LEN, rmt_cmd_uuid, BT_UUID_MAX_LEN) != EOK) {
+        bts_error("[btsrv][ERROR] remote cmd uuid memcpy fail!\r\n");
+        return AMS_CHAR_INVALID;
+    }
+    if (memcmp(&char_uuid, uuid, sizeof(bt_uuid_t)) == 0) {
+        return AMS_CHAR_REMOTE_CMD;
+    }
+    if (memcpy_s(char_uuid.uuid, BT_UUID_MAX_LEN, entity_update_uuid, BT_UUID_MAX_LEN) != EOK) {
+        bts_error("[btsrv][ERROR] entity update uuid memcpy fail!\r\n");
+        return AMS_CHAR_INVALID;
+    }
+    if (memcmp(&char_uuid, uuid, sizeof(bt_uuid_t)) == 0) {
+        return AMS_CHAR_ENTITY_UPDATE;
+    }
+    if (memcpy_s(char_uuid.uuid, BT_UUID_MAX_LEN, entity_att_uuid, BT_UUID_MAX_LEN) != EOK) {
+        bts_error("[btsrv][ERROR] entity att uuid memcpy fail!\r\n");
+        return AMS_CHAR_INVALID;
+    }
+    if (memcmp(&char_uuid, uuid, sizeof(bt_uuid_t)) == 0) {
+        return AMS_CHAR_ENTITY_ATTR;
+    }
+    return AMS_CHAR_INVALID;
+}
+
+/* 发现特征回调函数 */
+void ble_ams_client_discovery_character_cbk(uint8_t client_id, uint16_t conn_id,
+    gattc_discovery_character_result_t *character)
+{
+    ble_ams_service_t *remote = ams_service_remote_by_conn(client_id, conn_id);
+    if (remote == NULL) {
+        return;
+    }
+
+    if ((character->declare_handle < remote->start_handle) ||
+        (character->declare_handle > remote->end_handle)) {
+        bts_error("ams client remote service did not have this character_handle:%u conn_id:%u\n",
+            character->declare_handle, conn_id);
+        return;
+    }
+
+    switch (ams_char_match(&(character->uuid))) {
+        case AMS_CHAR_REMOTE_CMD: {
+            remote->remote_cmd.declare_handle = character->declare_handle;
+            remote->remote_cmd.value_handle = character->value_handle;
+            remote->remote_cmd.properties = character->properties;
+
+            /* 发现描述符 */
+            gattc_discovery_descriptor(client_id, conn_id, character->declare_handle);
+            break;
+        }
+
+        case AMS_CHAR_ENTITY_UPDATE: {
+            remote->entity_update.declare_handle = character->declare_handle;
+            remote->entity_update.value_handle = character->value_handle;
+            remote->entity_update.properties = character->properties;
+
+            /* 发现描述符 */
+            gattc_discovery_descriptor(client_id, conn_id, character->declare_handle);
+            break;
+        }
+
+        case AMS_CHAR_ENTITY_ATTR: {
+            remote->entity_attr.declare_handle = character->declare_handle;
+            remote->entity_attr.value_handle = character->value_handle;
+            remote->entity_attr.properties = character->properties;
+            break;
+        }
+
+        default:
+            bts_error("[btsrv][INFO] invalid character!\r\n");
+            break;
+    }
+}
+
+/* 发现描述符回调函数 */
+void ble_ams_client_discovery_descriptor_cbk(uint8_t client_id, uint16_t conn_id,
+    gattc_discovery_descriptor_result_t *descriptor)
+{
+    ble_ams_service_t *remote = ams_service_remote_by_conn(client_id, conn_id);
+    if (remote == NULL) {
+        return;
+    }
+
+    if (descriptor->descriptor_hdl < remote->start_handle ||
+        descriptor->descriptor_hdl > remote->end_handle) {
+        bts_error("ams client remote service did not have this descriptor_handle:%u conn_id:%u\n",
+            descriptor->descriptor_hdl, conn_id);
+        return;
+    }
+
+    /* 客户端特征配置描述符 */
+    bt_uuid_t ccc_uuid = {0};
+    bts_data_to_uuid_len2(BLE_CLIENT_CHARACTERISTIC_CONFIGURATION_UUID, &ccc_uuid);
+    if (!bts_uuid_is_equal(&ccc_uuid, &(descriptor->uuid))) {
+        return;
+    }
+
+    uint16_t cmd_ccc_max_handle = remote->end_handle;
+    uint16_t entity_ccc_max_handle = remote->end_handle;
+
+    if ((remote->entity_update.value_handle != 0) &&
+        (remote->remote_cmd.value_handle != 0) &&
+        (remote->remote_cmd.value_handle < remote->entity_update.value_handle)) {
+        cmd_ccc_max_handle = remote->entity_update.value_handle - 1;
+    } else if ((remote->remote_cmd.value_handle != 0) &&
+        (remote->entity_update.value_handle != 0) &&
+        (remote->remote_cmd.value_handle > remote->entity_update.value_handle)) {
+        entity_ccc_max_handle = remote->remote_cmd.value_handle - 1;
+    }
+
+    if ((remote->remote_cmd.value_handle != 0) &&
+        (descriptor->descriptor_hdl > remote->remote_cmd.value_handle) &&
+        (descriptor->descriptor_hdl <= cmd_ccc_max_handle)) {
+        remote->remote_cmd_ccc_handle = descriptor->descriptor_hdl;
+    } else if ((remote->entity_update.value_handle != 0) &&
+        (descriptor->descriptor_hdl > remote->entity_update.value_handle) &&
+        (descriptor->descriptor_hdl <= entity_ccc_max_handle)) {
+        remote->entity_update_ccc_handle = descriptor->descriptor_hdl;
+    }
+
+    if ((remote->remote_cmd_ccc_handle != 0) &&
+        (remote->entity_update_ccc_handle != 0)) {
+        if (g_ams_callbacks_t.setup_cb != NULL) {
+            g_ams_callbacks_t.setup_cb(client_id, conn_id, ERRCODE_BT_SUCCESS);
+        }
+    }
+}
+
+/* 处理远端命令上报信息 */
+static void remote_cmd_rpt_handle(uint8_t client_id, uint16_t conn_id, gattc_handle_value_t *data)
+{
+    errcode_t status = ERRCODE_BT_SUCCESS;
+    ble_ams_remote_cmd_rpt_t *rpt_data = bt_os_new(sizeof(ble_ams_remote_cmd_rpt_t) + data->data_len);
+    rpt_data->cmd_num = data->data_len;
+    if (memcpy_s(rpt_data->remote_cmd, rpt_data->cmd_num, data->data, rpt_data->cmd_num) != EOK) {
+        bts_error("[btsrv][ERROR] remote cmd rpt memcpy fail!\r\n");
+        status = ERRCODE_BT_MEMCPY_FAIL;
+    }
+
+    if (g_ams_callbacks_t.remote_cmd_cb != NULL) {
+        g_ams_callbacks_t.remote_cmd_cb(client_id, conn_id, rpt_data, status);
+    }
+    bt_os_free(rpt_data);
+}
+
+/* 处理实体更新上报信息 */
+static void entity_update_rpt_handle(uint8_t client_id, uint16_t conn_id, gattc_handle_value_t *data)
+{
+    errcode_t status = ERRCODE_BT_SUCCESS;
+    uint16_t value_len = data->data_len - AMS_ENTITY_UPDATE_NOTIFY_VALUE_OFFSET;
+    ble_ams_entity_update_rpt_t *rpt_data = bt_os_new(
+        sizeof(ble_ams_entity_update_rpt_t) + value_len + AMS_STRING_SUFFIX_ZERO_BYTE);
+    rpt_data->entity_id = *(data->data);
+    rpt_data->att_id = *(data->data + sizeof(uint8_t));
+    rpt_data->entity_update_flags = *(data->data + AMS_ENTITY_UPDATE_NOTIFY_FLAGS_OFFSET);
+    rpt_data->value_length = value_len + AMS_STRING_SUFFIX_ZERO_BYTE;
+    if (memcpy_s(rpt_data->value, rpt_data->value_length,
+        (data->data + AMS_ENTITY_UPDATE_NOTIFY_VALUE_OFFSET), value_len) != EOK) {
+        bts_error("[btsrv][ERROR] entity update rpt memcpy fail!\r\n");
+        status = ERRCODE_BT_MEMCPY_FAIL;
+    }
+    rpt_data->value[rpt_data->value_length - 1] = 0; /* 字符串拼接末尾0 */
+
+    if (g_ams_callbacks_t.entity_update_cb != NULL) {
+        g_ams_callbacks_t.entity_update_cb(client_id, conn_id, rpt_data, status);
+    }
+    bt_os_free(rpt_data);
+}
+
+/* 特征通知回调函数 */
+void ble_ams_client_notify_cbk(uint8_t client_id, uint16_t conn_id, gattc_handle_value_t *data)
+{
+    ble_ams_service_t *remote = ams_service_remote_by_conn(client_id, conn_id);
+    if (remote == NULL) {
+        return;
+    }
+
+    /* Remote Command */
+    /* 数据格式:RemoteCommandID 1(1B)|RemoteCommandID 2(1B)|... */
+    if (data->handle == remote->remote_cmd.value_handle) {
+        remote_cmd_rpt_handle(client_id, conn_id, data);
+
+    /* Entity Update */
+    /* 数据格式:EntityID(1B)|AttributeID(1B)|EntityUpdateFlags(1B)|Value(动态) */
+    } else if (data->handle == remote->entity_update.value_handle) {
+        entity_update_rpt_handle(client_id, conn_id, data);
+    }
+}
+
+/* AMS客户端订阅结果处理函数 */
+static void ble_ams_client_subscribe_result(uint8_t client_id, uint16_t conn_id,
+    ams_client_subscribe_type_t type, gatt_status_t status)
+{
+    if (g_ams_callbacks_t.subscribe_cb != NULL) {
+        g_ams_callbacks_t.subscribe_cb(client_id, conn_id, type, status);
+    }
+}
+
+/* 注册感兴趣实体属性响应结果处理 */
+static void ble_ams_client_write_character_rsp(uint8_t client_id, uint16_t conn_id,
+    ams_client_write_character_type_t type,
+    gatt_status_t status)
+{
+    if (g_ams_callbacks_t.write_rsp_cb != NULL) {
+        g_ams_callbacks_t.write_rsp_cb(client_id, conn_id, type, status);
+    }
+}
+
+/* 写请求响应回调函数 */
+void ble_ams_client_write_cbk(uint8_t client_id, uint16_t conn_id, uint16_t handle, gatt_status_t status)
+{
+    ble_ams_service_t *remote = ams_service_remote_by_conn(client_id, conn_id);
+    if (remote == NULL) {
+        return;
+    }
+
+    if (handle == (remote->remote_cmd_ccc_handle)) {
+        ble_ams_client_subscribe_result(client_id, conn_id, AMS_CLIENT_SUBSCRIBE_REMOTE_CMD, status);
+    } else if (handle == (remote->entity_update_ccc_handle)) {
+        ble_ams_client_subscribe_result(client_id, conn_id, AMS_CLIENT_SUBSCRIBE_ENTITY_UPDATE, status);
+    } else if (handle == (remote->entity_update.value_handle)) {
+        ble_ams_client_write_character_rsp(client_id, conn_id, AMS_CLIENT_WRITE_ENTITY_UPDATE, status);
+    } else if (handle == (remote->remote_cmd.value_handle)) {
+        ble_ams_client_write_character_rsp(client_id, conn_id, AMS_CLIENT_WRITE_REMOTE_CMD, status);
+    } else if (handle == (remote->entity_attr.value_handle)) {
+        ble_ams_client_write_character_rsp(client_id, conn_id, AMS_CLIENT_WRITE_ENTITY_ATTRIBUTE, status);
+    }
+}
+
+/* 读请求响应回调函数 */
+void ble_ams_client_read_cbk(uint8_t client_id, uint16_t conn_id, gattc_handle_value_t *read_result,
+    gatt_status_t status)
+{
+    ble_ams_service_t *remote = ams_service_remote_by_conn(client_id, conn_id);
+    if (remote == NULL) {
+        return;
+    }
+
+    if (read_result->handle != remote->entity_attr.value_handle) {
+        return;
+    }
+ 
+    ble_ams_full_attr_value_t *full_value = bt_os_new(sizeof(ble_ams_full_attr_value_t) + read_result->data_len + 1);
+    full_value->value_len = read_result->data_len + 1;
+    if (read_result->data_len != 0) {
+        if (memcpy_s(full_value->value, full_value->value_len, read_result->data, read_result->data_len) != EOK) {
+            bts_error("[btsrv][ERROR] read result memcpy fail!\r\n");
+            bt_os_free(full_value);
+            return;
+        }
+    }
+    *(full_value->value + full_value->value_len - 1) = 0; /* 字符串末尾拼接0 */
+
+    if (g_ams_callbacks_t.read_full_attr_result_cb != NULL) {
+        g_ams_callbacks_t.read_full_attr_result_cb(client_id, conn_id, full_value, status);
+    }
+    bt_os_free(full_value);
+}
+
+/* 订阅远端命令特征通知 */
+errcode_t ble_ams_client_subscribe_remote_cmd(uint8_t client_id, uint16_t conn_id,
+    ams_client_notify_enable_t enable_flag)
+{
+    ble_ams_service_t *remote = ams_service_remote_by_conn(client_id, conn_id);
+    if (remote == NULL) {
+        bts_error("ams client remote service is not exist, client_id:%u conn_id:%u\n",
+            client_id, conn_id);
+        return ERRCODE_BT_NOT_READY;
+    }
+
+    if (remote->remote_cmd_ccc_handle == 0) {
+        bts_error("ams client remote service did not discovery notify ccc, client_id:%u conn_id:%u\n",
+            client_id, conn_id);
+        return ERRCODE_BT_NOT_READY;
+    }
+
+    uint16_t ccc_value = BLE_AMS_CLIENT_CHARACTERISTIC_CONFIGURATION_DEFAULT;
+    if (enable_flag == AMS_CLIENT_NOTIFY_ENABLE) {
+        ccc_value = BLE_AMS_CLIENT_CHARACTERISTIC_CONFIGURATION_NOTIFICATION;
+    }
+    uint8_t notify_ccc_val[] = {
+        u16_low_byte(ccc_value),
+        u16_high_byte(ccc_value)
+    };
+    gattc_handle_value_t value = {0};
+    value.data_len = (uint16_t)sizeof(notify_ccc_val);
+    value.data = notify_ccc_val;
+    value.handle = remote->remote_cmd_ccc_handle;
+    return gattc_write_req(client_id, conn_id, &value);
+}
+
+/* 订阅实体更新特征通知 */
+errcode_t ble_ams_client_subscribe_entity_update(uint8_t client_id, uint16_t conn_id,
+    ams_client_notify_enable_t enable_flag)
+{
+    ble_ams_service_t *remote = ams_service_remote_by_conn(client_id, conn_id);
+    if (remote == NULL) {
+        bts_error("ams client remote service is not exist, client_id:%u conn_id:%u\n",
+            client_id, conn_id);
+        return ERRCODE_BT_NOT_READY;
+    }
+
+    if (remote->entity_update_ccc_handle == 0) {
+        bts_error("ams client remote service did not discovery notify ccc, client_id:%u conn_id:%u\n",
+            client_id, conn_id);
+        return ERRCODE_BT_NOT_READY;
+    }
+
+    uint16_t ccc_value = BLE_AMS_CLIENT_CHARACTERISTIC_CONFIGURATION_DEFAULT;
+    if (enable_flag == AMS_CLIENT_NOTIFY_ENABLE) {
+        ccc_value = BLE_AMS_CLIENT_CHARACTERISTIC_CONFIGURATION_NOTIFICATION;
+    }
+    uint8_t notify_ccc_val[] = {
+        u16_low_byte(ccc_value),
+        u16_high_byte(ccc_value)
+    };
+    gattc_handle_value_t value = {0};
+    value.data_len = (uint16_t)sizeof(notify_ccc_val);
+    value.data = notify_ccc_val;
+    value.handle = remote->entity_update_ccc_handle;
+    return gattc_write_req(client_id, conn_id, &value);
+}
+
+/* 发送远端命令 */
+errcode_t ble_ams_client_send_remote_cmd(uint8_t client_id, uint16_t conn_id,
+    ams_remote_cmd_id_t cmd_id)
+{
+    ble_ams_service_t *remote = ams_service_remote_by_conn(client_id, conn_id);
+    if (remote == NULL) {
+        bts_error("ams client remote service is not exist, client_id:%u conn_id:%u\n",
+            client_id, conn_id);
+        return ERRCODE_BT_NOT_READY;
+    }
+
+    if (remote->remote_cmd.value_handle == 0) {
+        bts_error("ams client did not discovery character, client_id:%u conn_id:%u\n",
+            client_id, conn_id);
+        return ERRCODE_BT_NOT_READY;
+    }
+
+    uint8_t data = (uint8_t)cmd_id;
+    gattc_handle_value_t value = {0};
+    value.data_len = (uint16_t)sizeof(uint8_t);
+    value.data = &data;
+    value.handle = remote->remote_cmd.value_handle;
+    return gattc_write_req(client_id, conn_id, &value);
+}
+
+/* 注册感兴趣的实体属性 */
+errcode_t ble_ams_client_register_interested_entity_attribute(uint8_t client_id, uint16_t conn_id,
+    ble_ams_interested_entity_attr_req_t *entity_attr_req)
+{
+    ble_ams_service_t *remote = ams_service_remote_by_conn(client_id, conn_id);
+    if (remote == NULL) {
+        bts_error("ams client remote service is not exist, client_id:%u conn_id:%u\n",
+            client_id, conn_id);
+        return ERRCODE_BT_NOT_READY;
+    }
+
+    if (remote->entity_update.value_handle == 0) {
+        bts_error("ams client did not discovery character, client_id:%u conn_id:%u\n",
+            client_id, conn_id);
+        return ERRCODE_BT_NOT_READY;
+    }
+
+    if (entity_attr_req->att_num == 0) {
+        bts_error("ams client attr req param error, client_id:%u conn_id:%u\n",
+            client_id, conn_id);
+        return ERRCODE_BT_PARAM_ERR;
+    }
+
+    uint16_t data_length = sizeof(uint8_t) + (entity_attr_req->att_num) * sizeof(uint8_t);
+    uint8_t *data = bt_os_new(data_length);
+    uint8_t *pt_data = data;
+    *pt_data = entity_attr_req->entity_id;
+    pt_data = pt_data + 1;
+    for (int i = 0; i < entity_attr_req->att_num; i++) {
+        *(pt_data + i) = entity_attr_req->att_id[i];
+    }
+
+    gattc_handle_value_t value = {0};
+    value.data_len = data_length;
+    value.data = data;
+    value.handle = remote->entity_update.value_handle;
+    errcode_t result = gattc_write_req(client_id, conn_id, &value);
+    bt_os_free(data);
+    return result;
+}
+
+/* 获取完整的实体属性 */
+errcode_t ble_ams_client_retrieve_full_entity_attribute(uint8_t client_id, uint16_t conn_id,
+    ble_ams_full_entity_attr_cmd_t *full_attr_req)
+{
+    ble_ams_service_t *remote = ams_service_remote_by_conn(client_id, conn_id);
+    if (remote == NULL) {
+        bts_error("ams client remote service is not exist, client_id:%u conn_id:%u\n",
+            client_id, conn_id);
+        return ERRCODE_BT_NOT_READY;
+    }
+
+    if (remote->entity_attr.value_handle == 0) {
+        bts_error("ams client did not discovery character, client_id:%u conn_id:%u\n",
+            client_id, conn_id);
+        return ERRCODE_BT_NOT_READY;
+    }
+
+    gattc_handle_value_t value = {0};
+    value.data_len = (uint16_t)sizeof(ble_ams_full_entity_attr_cmd_t);
+    value.data = full_attr_req;
+    value.handle = remote->entity_attr.value_handle;
+    return gattc_write_req(client_id, conn_id, &value);
+}
+
+/* 读取完整的实体属性 */
+errcode_t ble_ams_client_read_full_entity_attribute(uint8_t client_id, uint16_t conn_id)
+{
+    ble_ams_service_t *remote = ams_service_remote_by_conn(client_id, conn_id);
+    if (remote == NULL) {
+        bts_error("ams client remote service is not exist, client_id:%u conn_id:%u\n",
+            client_id, conn_id);
+        return ERRCODE_BT_NOT_READY;
+    }
+
+    if (remote->entity_attr.value_handle == 0) {
+        bts_error("ams client did not discovery character, client_id:%u conn_id:%u\n",
+            client_id, conn_id);
+        return ERRCODE_BT_NOT_READY;
+    }
+    return gattc_read_req_by_handle(client_id, conn_id, remote->entity_attr.value_handle);
+}
+
+/* 注册AMS客户端回调函数 */
+errcode_t ble_ams_client_register_callbacks(ble_ams_client_callbacks_t *func)
+{
+    if (memcpy_s(&g_ams_callbacks_t, sizeof(g_ams_callbacks_t), func, sizeof(ble_ams_client_callbacks_t)) != EOK) {
+        return ERRCODE_BT_MEMCPY_FAIL;
+    }
+    return ERRCODE_BT_SUCCESS;
+}
+
+/* AMS服务判断 */
+bool is_ble_ams_service(bt_uuid_t *uuid)
+{
+    bt_uuid_t ams_service_uuid = {0};
+    ams_service_uuid.uuid_len = BT_UUID_MAX_LEN;
+    if (memcpy_s(ams_service_uuid.uuid, BT_UUID_MAX_LEN, ams_uuid, BT_UUID_MAX_LEN) != EOK) {
+        bts_error("[BLE]service uuid memcpy error! \n");
+        return false;
+    }
+    if (ams_service_uuid.uuid_len != uuid->uuid_len) {
+        return false;
+    }
+
+    return (memcmp(uuid, &ams_service_uuid, sizeof(bt_uuid_t)) == 0 ? true : false);
+}
+
+/* 根据连接ID清理存储的对端AMS服务信息 */
+void ble_ams_client_clear_remote_by_conn(uint8_t client_id, uint16_t conn_id)
+{
+    ble_ams_service_t *node = NULL;
+    node = ams_service_remote_by_conn(client_id, conn_id);
+    if (node != NULL) {
+        bt_sdk_list_remove(&g_ble_ams_service_list, node);
+        sdk_list_node_free(node);
+    }
+}
+
+/* 清理所有存储的对端AMS服务信息 */
+void ble_ams_client_clear_remote_all(void)
+{
+    ble_ams_service_t *node = (ble_ams_service_t *)g_ble_ams_service_list.head;
+    ble_ams_service_t *cur_node = NULL;
+    while (node != NULL) {
+        cur_node = node;
+        node = lnext(node);
+        bt_sdk_list_remove(&g_ble_ams_service_list, cur_node);
+        sdk_list_node_free(cur_node);
+        cur_node = NULL;
+    }
+}
diff --git a/code/sdk/protocol/bt/host/bt/bts/bt_sample/ble_profile/profiles/src/ble_ancs_client.c b/code/sdk/protocol/bt/host/bt/bts/bt_sample/ble_profile/profiles/src/ble_ancs_client.c
new file mode 100644 (file)
index 0000000..244b8ad
--- /dev/null
@@ -0,0 +1,896 @@
+/*
+ * Copyright (c) @CompanyNameMagicTag 2024. All rights reserved.
+ * Description: BLE Apple Notification Center Service Client module.
+ */
+
+#include <string.h>
+#include "sdk_list.h"
+#include "datatype.h"
+#include "errcode.h"
+#include "btsrv_log.h"
+#include "bts_le_gap.h"
+#include "sdk_general.h"
+#include "bts_uuid.h"
+#include "ble_gatts_callbacks.h"
+#include "ble_ancs_client.h"
+
+#define BLE_CLIENT_CHARACTERISTIC_CONFIGURATION_UUID 0x2902
+#define ANCS_NOTIFY_ATT_ID_OFFSET 5
+#define ANCS_NOTIFY_ATT_MAX_LENGTH_BYTE 2
+#define ANCS_NOTIFY_ACTION_ID_OFFSET 5
+#define ANCS_NOTIFY_ATT_VALUE_OFFSET 3
+#define BLE_ATT_HEADER_LEN 3
+#define BLE_ANCS_DATA_MAX_LEN 512
+#define ANCS_NOTIFY_UUID_BYTE_LENGTH 4
+#define ANCS_NOTIFY_SOURCE_LENGTH 8
+#define ANCS_NOTIFY_ATT_DATA_HEADER_LENGTH 8
+
+#define u16_low_byte(data) ((uint8_t)((data) & 0x00FF))
+#define u16_high_byte(data) ((uint8_t)(((data) & 0xFF00) >> 8))
+#define little_u8_2_u16(p)   ((((uint16_t)(*((p) + 1))) << 8) | ((uint16_t)(*(p))))
+#define u32_2_little_first_byte(uuid) ((uint8_t)((uuid) & 0x000000FF))
+#define u32_2_little_second_byte(uuid) ((uint8_t)(((uuid) & 0x0000FF00) >> 8))
+#define u32_2_little_three_byte(uuid) ((uint8_t)(((uuid) & 0x00FF0000) >> 16))
+#define u32_2_little_four_byte(uuid) ((uint8_t)(((uuid) & 0xFF000000) >> 24))
+#define little_byte_2_u32(data) (((uint32_t)(*(data))) | \
+    ((uint32_t)(((uint32_t)*((data) + BT_INDEX_1)) << 8)) | \
+    ((uint32_t)(((uint32_t)*((data) + BT_INDEX_2)) << 16)) | \
+    ((uint32_t)(((uint32_t)*((data) + BT_INDEX_3)) << 24)))
+
+/* ANCS服务UUID,小端序 */
+uint8_t ancs_uuid[BT_UUID_MAX_LEN] = {
+    0xD0, 0x00, 0x2D, 0x12, 0x1E, 0x4B, 0x0F, 0xA4, 0x99, 0x4E, 0xCE, 0xB5, 0x31, 0xF4, 0x05, 0x79};
+
+/* ANCS服务特征UUID-Notification Source,小端序 */
+uint8_t notify_src_uuid[BT_UUID_MAX_LEN] = {
+    0xBD, 0x1D, 0xA2, 0x99, 0xE6, 0x25, 0x58, 0x8C, 0xD9, 0x42, 0x01, 0x63, 0x0D, 0x12, 0xBF, 0x9F};
+
+/* ANCS服务特征UUID-Control Point,小端序 */
+uint8_t ctl_point_uuid[BT_UUID_MAX_LEN] = {
+    0xD9, 0xD9, 0xAA, 0xFD, 0xBD, 0x9B, 0x21, 0x98, 0xA8, 0x49, 0xE1, 0x45, 0xF3, 0xD8, 0xD1, 0x69};
+
+/* ANCS服务特征UUID-Data Source,小端序 */
+uint8_t data_src_uuid[BT_UUID_MAX_LEN] = {
+    0xFB, 0x7B, 0x7C, 0xCE, 0x6A, 0xB3, 0x44, 0xBE, 0xB5, 0x4B, 0xD6, 0x24, 0xE9, 0xC6, 0xEA, 0x22};
+
+ble_ancs_client_callbacks_t g_ancs_callbacks_t = {0};
+struct list_stru g_ble_ancs_service_list = {NULL, NULL}; /* ble_ancs_service_t */
+
+/* 根据连接ID查询ANCS服务信息 */
+static ble_ancs_service_t* ancs_service_remote_by_conn(uint8_t client_id, uint16_t conn_id)
+{
+    ble_ancs_service_t *node = (ble_ancs_service_t *)g_ble_ancs_service_list.head;
+    while (node != NULL) {
+        if ((node->client_id == client_id) && (node->conn_id == conn_id)) {
+            return node;
+        }
+        node = lnext(node);
+    }
+
+    return NULL;
+}
+
+/* ANCS服务特征匹配 */
+static ancs_character_t ancs_char_match(bt_uuid_t *uuid)
+{
+    if (uuid->uuid_len != BT_UUID_MAX_LEN) {
+        return ANCS_CHAR_INVALID;
+    }
+    bt_uuid_t char_uuid = {0};
+    char_uuid.uuid_len = BT_UUID_MAX_LEN;
+    if (memcpy_s(char_uuid.uuid, BT_UUID_MAX_LEN, notify_src_uuid, BT_UUID_MAX_LEN) != EOK) {
+        bts_error("[btsrv][ERROR] notify src uuid memcpy fail!\r\n");
+        return ANCS_CHAR_INVALID;
+    }
+    if (memcmp(&char_uuid, uuid, sizeof(bt_uuid_t)) == 0) {
+        return ANCS_CHAR_NOTIFY_SRC;
+    }
+    if (memcpy_s(char_uuid.uuid, BT_UUID_MAX_LEN, ctl_point_uuid, BT_UUID_MAX_LEN) != EOK) {
+        bts_error("[btsrv][ERROR] ctl point uuid memcpy fail!\r\n");
+        return ANCS_CHAR_INVALID;
+    }
+    if (memcmp(&char_uuid, uuid, sizeof(bt_uuid_t)) == 0) {
+        return ANCS_CHAR_CTRL_POINT;
+    }
+    if (memcpy_s(char_uuid.uuid, BT_UUID_MAX_LEN, data_src_uuid, BT_UUID_MAX_LEN) != EOK) {
+        bts_error("[btsrv][ERROR] data src uuid memcpy fail!\r\n");
+        return ANCS_CHAR_INVALID;
+    }
+    if (memcmp(&char_uuid, uuid, sizeof(bt_uuid_t)) == 0) {
+        return ANCS_CHAR_DATA_SRC;
+    }
+    return ANCS_CHAR_INVALID;
+}
+
+/* ANCS客户端发起服务建立 */
+errcode_t ble_ancs_client_setup_service(uint8_t client_id, uint16_t conn_id)
+{
+    ble_ancs_service_t *remote = ancs_service_remote_by_conn(client_id, conn_id);
+    if (remote != NULL) {
+        bts_error("ancs client remote service is already exist,client_id:%u, conn_id:%u.\r\n",
+            client_id, conn_id);
+        return ERRCODE_BT_DONE;
+    }
+    bt_uuid_t service_uuid = {0};
+    service_uuid.uuid_len = BT_UUID_MAX_LEN;
+    if (memcpy_s(service_uuid.uuid, BT_UUID_MAX_LEN, ancs_uuid, BT_UUID_MAX_LEN) != EOK) {
+        bts_error("[btsrv][ERROR] uuid memcpy fail!\r\n");
+        return ERRCODE_BT_FAIL;
+    }
+    return gattc_discovery_service(client_id, conn_id, &service_uuid);
+}
+
+/* ANCS客户端发现服务回调处理函数 */
+void ble_ancs_client_discovery_service_cbk(uint8_t client_id, uint16_t conn_id,
+    gattc_discovery_service_result_t *service)
+{
+    ble_ancs_service_t *remote = ancs_service_remote_by_conn(client_id, conn_id);
+    if (remote != NULL) {
+        bts_error("ancs client remote service is already exist,client_id:%u, conn_id:%u.\r\n",
+            client_id, conn_id);
+        return;
+    }
+    remote = bt_sdk_list_node_create(sizeof(ble_ancs_service_t));
+    if (remote == NULL) {
+        bts_info("ancs client remote node create fail.\r\n");
+        return;
+    }
+    remote->client_id = client_id;
+    remote->conn_id = conn_id;
+    remote->start_handle = service->start_hdl;
+    remote->end_handle = service->end_hdl;
+    bt_sdk_list_add_tail(&g_ble_ancs_service_list, remote);
+
+    /* 发现特征 */
+    gattc_discovery_character_param_t param = {0};
+    param.service_handle = remote->start_handle;
+    errcode_t ret = gattc_discovery_character(client_id, conn_id, &param);
+    bts_info("ancs client discovery character ret:%u.\r\n", ret);
+}
+
+/* ANCS客户端发现特征回调处理函数 */
+void ble_ancs_client_discovery_character_cbk(uint8_t client_id, uint16_t conn_id,
+    gattc_discovery_character_result_t *character)
+{
+    ble_ancs_service_t *remote = ancs_service_remote_by_conn(client_id, conn_id);
+    if (remote == NULL) {
+        return;
+    }
+
+    if ((character->declare_handle < remote->start_handle) ||
+        (character->declare_handle > remote->end_handle)) {
+        bts_error("ancs client remote service did not have this character_handle:%u conn_id:%u\n",
+            character->declare_handle, conn_id);
+        return;
+    }
+
+    switch (ancs_char_match(&(character->uuid))) {
+        case ANCS_CHAR_NOTIFY_SRC: {
+            remote->notify_src.declare_handle = character->declare_handle;
+            remote->notify_src.value_handle = character->value_handle;
+            remote->notify_src.properties = character->properties;
+
+            /* 发现描述符 */
+            gattc_discovery_descriptor(client_id, conn_id, character->declare_handle);
+            break;
+        }
+
+        case ANCS_CHAR_DATA_SRC: {
+            remote->data_src.declare_handle = character->declare_handle;
+            remote->data_src.value_handle = character->value_handle;
+            remote->data_src.properties = character->properties;
+
+            /* 发现描述符 */
+            gattc_discovery_descriptor(client_id, conn_id, character->declare_handle);
+            break;
+        }
+
+        case ANCS_CHAR_CTRL_POINT: {
+            remote->ctl_point.declare_handle = character->declare_handle;
+            remote->ctl_point.value_handle = character->value_handle;
+            remote->ctl_point.properties = character->properties;
+            break;
+        }
+
+        default:
+            bts_error("[btsrv][INFO] invalid character!\r\n");
+            break;
+    }
+}
+
+/* ANCS客户端发现描述符回调处理函数 */
+void ble_ancs_client_discovery_descriptor_cbk(uint8_t client_id, uint16_t conn_id,
+    gattc_discovery_descriptor_result_t *descriptor)
+{
+    ble_ancs_service_t *remote = ancs_service_remote_by_conn(client_id, conn_id);
+    if (remote == NULL) {
+        return;
+    }
+
+    if (descriptor->descriptor_hdl < remote->start_handle ||
+        descriptor->descriptor_hdl > remote->end_handle) {
+        bts_error("ancs client remote service did not have this descriptor_handle:%u conn_id:%u\n",
+            descriptor->descriptor_hdl, conn_id);
+        return;
+    }
+
+    /* 客户端特征配置描述符 */
+    bt_uuid_t ccc_uuid = {0};
+    bts_data_to_uuid_len2(BLE_CLIENT_CHARACTERISTIC_CONFIGURATION_UUID, &ccc_uuid);
+    if (!bts_uuid_is_equal(&ccc_uuid, &(descriptor->uuid))) {
+        return;
+    }
+
+    uint16_t notify_ccc_max_handle = remote->end_handle;
+    uint16_t data_ccc_max_handle = remote->end_handle;
+    if ((remote->data_src.value_handle != 0) &&
+        (remote->notify_src.value_handle != 0) &&
+        (remote->notify_src.value_handle < remote->data_src.value_handle)) {
+        notify_ccc_max_handle = remote->data_src.value_handle - 1;
+    } else if ((remote->notify_src.value_handle != 0) &&
+        (remote->data_src.value_handle != 0) &&
+        (remote->notify_src.value_handle > remote->data_src.value_handle)) {
+        data_ccc_max_handle = remote->notify_src.value_handle - 1;
+    }
+
+    if ((remote->notify_src.value_handle != 0) &&
+        (descriptor->descriptor_hdl > remote->notify_src.value_handle) &&
+        (descriptor->descriptor_hdl <= notify_ccc_max_handle)) {
+        remote->notify_src_ccc_handle = descriptor->descriptor_hdl;
+    } else if ((remote->data_src.value_handle != 0) &&
+        (descriptor->descriptor_hdl > remote->data_src.value_handle) &&
+        (descriptor->descriptor_hdl <= data_ccc_max_handle)) {
+        remote->data_src_ccc_handle = descriptor->descriptor_hdl;
+    }
+
+    if ((remote->notify_src_ccc_handle != 0) &&
+        (remote->data_src_ccc_handle != 0)) {
+        if (g_ancs_callbacks_t.setup_cb != NULL) {
+            g_ancs_callbacks_t.setup_cb(client_id, conn_id, ERRCODE_BT_SUCCESS);
+        }
+    }
+}
+
+/* ANCS客户端订阅通知源特征通知 */
+errcode_t ble_ancs_client_subscribe_notification_source(uint8_t client_id, uint16_t conn_id,
+    ancs_client_notify_enable_t enable_flag)
+{
+    ble_ancs_service_t *remote = ancs_service_remote_by_conn(client_id, conn_id);
+    if (remote == NULL) {
+        bts_error("ancs client remote service is not exist, client_id:%u conn_id:%u\n",
+            client_id, conn_id);
+        return ERRCODE_BT_NOT_READY;
+    }
+
+    if (remote->notify_src_ccc_handle == 0) {
+        bts_error("ancs client remote service did not discovery notify ccc, client_id:%u conn_id:%u\n",
+            client_id, conn_id);
+        return ERRCODE_BT_NOT_READY;
+    }
+
+    uint16_t ccc_value = BLE_ANCS_CLIENT_CHARACTERISTIC_CONFIGURATION_DEFAULT;
+    if (enable_flag == ANCS_CLIENT_NOTIFY_ENABLE) {
+        ccc_value = BLE_ANCS_CLIENT_CHARACTERISTIC_CONFIGURATION_NOTIFICATION;
+    }
+    uint8_t notify_ccc_val[] = {
+        u16_low_byte(ccc_value),
+        u16_high_byte(ccc_value)
+    };
+    gattc_handle_value_t value = {0};
+    value.data_len = (uint16_t)sizeof(notify_ccc_val);
+    value.data = notify_ccc_val;
+    value.handle = remote->notify_src_ccc_handle;
+    return gattc_write_req(client_id, conn_id, &value);
+}
+
+/* ANCS客户端订阅数据源特征通知 */
+errcode_t ble_ancs_client_subscribe_data_source(uint8_t client_id, uint16_t conn_id,
+    ancs_client_notify_enable_t enable_flag)
+{
+    ble_ancs_service_t *remote = ancs_service_remote_by_conn(client_id, conn_id);
+    if (remote == NULL) {
+        bts_error("ancs client remote service is not exist, client_id:%u conn_id:%u\n",
+            client_id, conn_id);
+        return ERRCODE_BT_NOT_READY;
+    }
+
+    if (remote->data_src_ccc_handle == 0) {
+        bts_error("ancs client remote service did not discovery data ccc, client_id:%u conn_id:%u\n",
+            client_id, conn_id);
+        return ERRCODE_BT_NOT_READY;
+    }
+
+    uint16_t ccc_value = BLE_ANCS_CLIENT_CHARACTERISTIC_CONFIGURATION_DEFAULT;
+    if (enable_flag == ANCS_CLIENT_NOTIFY_ENABLE) {
+        ccc_value = BLE_ANCS_CLIENT_CHARACTERISTIC_CONFIGURATION_NOTIFICATION;
+    }
+    uint8_t notify_ccc_val[] = {
+        u16_low_byte(ccc_value),
+        u16_high_byte(ccc_value)
+    };
+    gattc_handle_value_t value = {0};
+    value.data_len = (uint16_t)sizeof(notify_ccc_val);
+    value.data = notify_ccc_val;
+    value.handle = remote->data_src_ccc_handle;
+    return gattc_write_req(client_id, conn_id, &value);
+}
+
+/* u32转小端序字节流 */
+static uint32_t convert_little_2_u32(uint8_t *data)
+{
+    return little_byte_2_u32(data);
+}
+
+/* 释放【通知属性响应数据】申请的内存 */
+static void notify_att_rsp_free(ble_ancs_notification_attr_rsp_t *notify_att_rsp)
+{
+    ble_ancs_attr_rsp_t *node = notify_att_rsp->attr_rsp_lst.head;
+    ble_ancs_attr_rsp_t *cur_node = NULL;
+    /* 校验失败,清空队列 */
+    while (node != NULL) {
+        cur_node = node;
+        node = lnext(node);
+        bt_sdk_list_remove(&notify_att_rsp->attr_rsp_lst, cur_node); /* 出队 */
+        bt_os_free(cur_node->att);
+        sdk_list_node_free(cur_node);
+        cur_node = NULL;
+    }
+    bt_os_free(notify_att_rsp);
+    return;
+}
+
+/* 组装属性响应数据,兼容分包场景,只解析第一包 */
+static uint16_t ancs_att_rsp_package(ble_ancs_attr_rsp_t *attr_rsp,
+    uint8_t *data, uint16_t total_length, uint16_t offset_byte)
+{
+    if ((total_length - offset_byte) <= ANCS_NOTIFY_ATT_VALUE_OFFSET) { /* 最后一个属性只包含属性id或者属性长度 */
+        attr_rsp->att_id = *data;
+        attr_rsp->att_length = 0;
+        attr_rsp->att = 0;
+        return 0;
+    }
+    attr_rsp->att_id = *data;
+    uint16_t data_length = little_u8_2_u16(data + 1);
+    attr_rsp->att_length = data_length + 1; /* 字符串以0结尾 */
+    if (data_length != 0) {
+        uint8_t *att_data = bt_os_new(attr_rsp->att_length);
+        if (memset_s(att_data, attr_rsp->att_length, 0, attr_rsp->att_length) != EOK) {
+            bt_os_free(att_data);
+            attr_rsp->att_length = 0;
+            attr_rsp->att = 0;
+            return data_length;
+        }
+        uint16_t copy_length = data_length;
+        if ((total_length - offset_byte) < (data_length + ANCS_NOTIFY_ATT_VALUE_OFFSET)) { /* 最后一个属性 */
+            copy_length = total_length - offset_byte - ANCS_NOTIFY_ATT_VALUE_OFFSET;
+        }
+        if (memcpy_s(att_data, attr_rsp->att_length, data + ANCS_NOTIFY_ATT_VALUE_OFFSET, copy_length) != EOK) {
+            bts_error("[btsrv][ERROR] addr memcpy fail!\r\n");
+            bt_os_free(att_data);
+            attr_rsp->att_length = 0;
+            attr_rsp->att = 0;
+            return data_length;
+        }
+        att_data[attr_rsp->att_length - 1] = 0; /* 字符串以0结尾 */
+        attr_rsp->att = att_data;
+    } else {
+        attr_rsp->att_length = 0;
+        attr_rsp->att = 0;
+    }
+    return data_length;
+}
+
+/* 解析属性响应数据 */
+static uint16_t parse_att_rsp(uint8_t *data, uint16_t data_length, struct list_stru *attr_rsp_lst)
+{
+    uint16_t offset_byte = 0;
+    uint16_t att_num = 0;
+    uint16_t att_data_len = 0;
+    while (offset_byte < data_length) {
+        ble_ancs_attr_rsp_t *attr_rsp = (ble_ancs_attr_rsp_t *)bt_sdk_list_node_create(sizeof(ble_ancs_attr_rsp_t));
+        if (attr_rsp != NULL) {
+            att_data_len = ancs_att_rsp_package(attr_rsp, data, data_length, offset_byte);
+            att_num += 1;
+            bt_sdk_list_add_tail(attr_rsp_lst, attr_rsp);
+            offset_byte = offset_byte + 1 + sizeof(uint16_t) + att_data_len;
+            data = data + 1 + sizeof(uint16_t) + att_data_len;
+        }
+    }
+    return att_num;
+}
+
+/* 解析通知属性响应数据,响应数据格式:cmd_id(1B)|notify_uid(4B)|att_id1(1B)|att_id1_length(2B)|att_id1_data(动态)|... */
+static void notify_att_data_parse(uint8_t client_id, uint16_t conn_id, uint8_t *data, uint16_t data_length)
+{
+    ble_ancs_notification_attr_rsp_t *notify_att_rsp = NULL;
+    errcode_t result = ERRCODE_BT_SUCCESS;
+    if (data_length <= (ANCS_NOTIFY_ATT_DATA_HEADER_LENGTH - 1)) {
+        result = ERRCODE_BT_PARAM_ERR;
+    } else {
+        notify_att_rsp = bt_os_new(sizeof(ble_ancs_notification_attr_rsp_t));
+        notify_att_rsp->notification_uid = convert_little_2_u32(data);
+        notify_att_rsp->att_num = 0;
+        notify_att_rsp->attr_rsp_lst.head = NULL;
+        notify_att_rsp->attr_rsp_lst.tail = NULL;
+        data = data + ANCS_NOTIFY_UUID_BYTE_LENGTH;
+        notify_att_rsp->att_num = parse_att_rsp(data,
+            data_length - ANCS_NOTIFY_UUID_BYTE_LENGTH, &notify_att_rsp->attr_rsp_lst);
+    }
+
+    if (g_ancs_callbacks_t.notify_attr_cb != NULL) {
+        g_ancs_callbacks_t.notify_attr_cb(client_id, conn_id, notify_att_rsp, result);
+    }
+
+    if (notify_att_rsp != NULL) {
+        notify_att_rsp_free(notify_att_rsp);
+    }
+}
+
+/* 释放【应用属性响应结果】申请的内存 */
+static void app_att_rsp_free(ble_ancs_app_attr_rsp_t *app_att_rsp)
+{
+    ble_ancs_attr_rsp_t *node = app_att_rsp->attr_rsp_lst.head;
+    ble_ancs_attr_rsp_t *cur_node = NULL;
+    while (node != NULL) {
+        cur_node = node;
+        node = lnext(node);
+        bt_sdk_list_remove(&app_att_rsp->attr_rsp_lst, cur_node); /* 出队 */
+        bt_os_free(cur_node->att);
+        sdk_list_node_free(cur_node);
+        cur_node = NULL;
+    }
+    if (app_att_rsp->app_id.id != NULL) {
+        bt_os_free(app_att_rsp->app_id.id);
+    }
+    bt_os_free(app_att_rsp);
+    return;
+}
+
+/* 解析应用编号 */
+static void app_id_parse(ble_ancs_app_attr_rsp_t *app_att_rsp, uint8_t *data, uint16_t data_length)
+{
+    uint16_t app_id_len = 0;
+    for (int i = 0; i < data_length - 1; i++) {
+        app_id_len = app_id_len + 1;
+        if (*(data + i) == 0) {
+            break;
+        }
+    }
+    if (app_id_len != 0) {
+        app_att_rsp->app_id.len = app_id_len;
+        uint8_t *id = bt_os_new(app_id_len);
+        if (id != NULL) {
+            if (memcpy_s(id, app_id_len, data, app_id_len) != EOK) {
+                bt_os_free(id);
+                app_att_rsp->app_id.id = NULL;
+                return;
+            }
+            app_att_rsp->app_id.id = id;
+            return;
+        }
+    }
+    app_att_rsp->app_id.len = 0;
+    app_att_rsp->app_id.id = NULL;
+}
+
+/* 解析应用属性响应结果,响应格式:cmd_id(1B)|app_id(动态长度,字符串字节流,以NULL结尾)|att_id1(1B)|att_id1_length(2B)|att_id1_data(动态)|... */
+static void app_att_data_parse(uint8_t client_id, uint16_t conn_id, uint8_t *data, uint16_t data_length)
+{
+    ble_ancs_app_attr_rsp_t *app_att_rsp = NULL;
+    errcode_t result = ERRCODE_BT_SUCCESS;
+    if (data_length <= 0) {
+        result = ERRCODE_BT_PARAM_ERR;
+    } else {
+        app_att_rsp = bt_os_new(sizeof(ble_ancs_app_attr_rsp_t));
+        app_id_parse(app_att_rsp, data, data_length);
+        if ((app_att_rsp->app_id.len == 0) || (app_att_rsp->app_id.id == NULL)) {
+            result = ERRCODE_BT_PARAM_ERR;
+        } else {
+            app_att_rsp->att_num = 0;
+            app_att_rsp->attr_rsp_lst.head = NULL;
+            app_att_rsp->attr_rsp_lst.tail = NULL;
+            uint16_t app_id_len = app_att_rsp->app_id.len;
+            data = data + app_id_len;
+            app_att_rsp->att_num = parse_att_rsp(data, data_length - app_id_len, &app_att_rsp->attr_rsp_lst);
+        }
+    }
+
+    if (g_ancs_callbacks_t.app_attr_cb != NULL) {
+        g_ancs_callbacks_t.app_attr_cb(client_id, conn_id, app_att_rsp, result);
+    }
+
+    if (app_att_rsp != NULL) {
+        app_att_rsp_free(app_att_rsp);
+    }
+}
+
+/* ANCS客户端通知消息处理函数,消息格式:event_id(1B)|event_flags(1B)|category_id(1B)|category_count(1B)|notify_uuid(4B) */
+static void notify_src_handle(uint8_t client_id, uint16_t conn_id, gattc_handle_value_t *data)
+{
+    errcode_t result = ERRCODE_BT_SUCCESS;
+    ble_ancs_notification_src_t *notify_src_data = NULL;
+    if (data->data_len != ANCS_NOTIFY_SOURCE_LENGTH) {
+        result = ERRCODE_BT_PARAM_ERR;
+    } else {
+        uint8_t *pt_data = data->data;
+        notify_src_data = bt_os_new(sizeof(ble_ancs_notification_src_t));
+        notify_src_data->event_id = *pt_data;
+        notify_src_data->event_flags = *(pt_data + BT_INDEX_1);
+        notify_src_data->category_id = *(pt_data + BT_INDEX_2);
+        notify_src_data->category_count = *(pt_data + BT_INDEX_3);
+        pt_data = pt_data + BT_INDEX_4;
+        notify_src_data->notification_uid = convert_little_2_u32(pt_data);
+    }
+
+    if (g_ancs_callbacks_t.notify_source_cb != NULL) {
+        g_ancs_callbacks_t.notify_source_cb(client_id, conn_id, notify_src_data, result);
+    }
+    if (notify_src_data != NULL) {
+        bt_os_free(notify_src_data);
+    }
+}
+
+/* ANCS客户端数据消息处理函数 */
+static void data_src_handle(uint8_t client_id, uint16_t conn_id, gattc_handle_value_t *data)
+{
+    uint8_t *pt_data = data->data;
+    uint16_t data_length = data->data_len;
+    if ((data_length == (ble_gatt_mtu_exchange_result_get() - BLE_ATT_HEADER_LEN)) ||
+        (data_length == BLE_ANCS_DATA_MAX_LEN)) {
+        bts_error("response is larger than MTU, please limit attribute length, client_id:%u conn_id:%u\n",
+            client_id, conn_id);
+    }
+    uint8_t cmd_id = *pt_data;
+    pt_data = pt_data + 1;
+    switch (cmd_id) {
+        /* 数据格式:cmd_id(1B)|notify_uid(4B)|att_id1(1B)|att_id1_length(2B)|att_id1_data(动态)|... */
+        case ANCS_CMD_GET_NOTIFY_ATT:{
+            notify_att_data_parse(client_id, conn_id, pt_data, data->data_len - 1);
+            break;
+        }
+        /* 数据格式:cmd_id(1B)|app_id(动态长度,字符串字节流,以NULL结尾)|att_id1(1B)|att_id1_length(2B)|att_id1_data(动态)|... */
+        case ANCS_CMD_GET_APP_ATT:{
+            app_att_data_parse(client_id, conn_id, pt_data, data->data_len - 1);
+            break;
+        }
+        default:
+            break;
+    }
+}
+
+/* ANCS客户端接收对端通知处理函数 */
+void ble_ancs_client_notify_cbk(uint8_t client_id, uint16_t conn_id, gattc_handle_value_t *data)
+{
+    ble_ancs_service_t *remote = ancs_service_remote_by_conn(client_id, conn_id);
+    if (remote == NULL) {
+        return;
+    }
+
+    /* notification source */
+    /* 数据格式:event_id(1B)|event_flags(1B)|category_id(1B)|category_count(1B)|notification_uid(4B) */
+    if (data->handle == remote->notify_src.value_handle) {
+        notify_src_handle(client_id, conn_id, data);
+    /* data source */
+    } else if (data->handle == remote->data_src.value_handle) {
+        data_src_handle(client_id, conn_id, data);
+    }
+}
+
+/* ANCS客户端订阅结果处理函数 */
+static void ble_ancs_client_subscribe_result(uint8_t client_id, uint16_t conn_id,
+    ancs_client_subscribe_type_t type, gatt_status_t status)
+{
+    if (g_ancs_callbacks_t.subscribe_cb != NULL) {
+        g_ancs_callbacks_t.subscribe_cb(client_id, conn_id, type, status);
+    }
+}
+
+/* ANCS客户端写请求响应结果处理函数 */
+static void ble_ancs_client_write_result(uint8_t client_id, uint16_t conn_id, gatt_status_t status)
+{
+    if (g_ancs_callbacks_t.write_result_cb != NULL) {
+        g_ancs_callbacks_t.write_result_cb(client_id, conn_id, status);
+    }
+}
+
+/* ANCS客户端写请求响应处理函数 */
+void ble_ancs_client_write_cbk(uint8_t client_id, uint16_t conn_id, uint16_t handle, gatt_status_t status)
+{
+    ble_ancs_service_t *remote = ancs_service_remote_by_conn(client_id, conn_id);
+    if (remote == NULL) {
+        return;
+    }
+
+    if (handle == (remote->notify_src_ccc_handle)) {
+        ble_ancs_client_subscribe_result(client_id, conn_id, ANCS_CLIENT_SUBSCRIBE_NOTIFY, status);
+    } else if (handle == (remote->data_src_ccc_handle)) {
+        ble_ancs_client_subscribe_result(client_id, conn_id, ANCS_CLIENT_SUBSCRIBE_DATA, status);
+    } else if (handle == (remote->ctl_point.value_handle)) {
+        ble_ancs_client_write_result(client_id, conn_id, status);
+    }
+}
+
+/* 校验通知属性是否需要拼接【最大长度】参数 */
+static bool is_followed_by_max_length_param(uint8_t att_id)
+{
+    bool is_followed = false;
+    switch (att_id) {
+        case ANCS_NOTIFY_ATT_TITLE:
+        case ANCS_NOTIFY_ATT_SUBTITLE:
+        case ANCS_NOTIFY_ATT_MESSAGE:
+            is_followed = true;
+            break;
+        default:
+            break;
+    }
+    return is_followed;
+}
+
+/* u32转小端序 */
+static void u32_2_little(uint32_t notify_uid, uint8_t *pt_data)
+{
+    *(pt_data + BT_INDEX_1) = u32_2_little_first_byte(notify_uid);
+    *(pt_data + BT_INDEX_2) = u32_2_little_second_byte(notify_uid);
+    *(pt_data + BT_INDEX_3) = u32_2_little_three_byte(notify_uid);
+    *(pt_data + BT_INDEX_4) = u32_2_little_four_byte(notify_uid);
+}
+
+/* 组装通知属性请求参数 */
+static errcode_t package_notify_att_req_param(ble_ancs_notification_attr_req_t *notify_att_req, uint8_t *pt_data)
+{
+    /* command id */
+    *pt_data = ANCS_CMD_GET_NOTIFY_ATT;
+
+    /* notification uuid 小端 */
+    u32_2_little(notify_att_req->notification_uid, pt_data);
+
+    /* 拼接ATT ID */
+    pt_data = pt_data + ANCS_NOTIFY_ATT_ID_OFFSET;
+    for (int i = 0; i < notify_att_req->att_num; i++) {
+        /* 校验ATT ID */
+        if (notify_att_req->attr[i].att_id > ANCS_NOTIFY_ATT_NEGATIVE_LABEL) {
+            return ERRCODE_BT_PARAM_ERR;
+        }
+        *(pt_data) = notify_att_req->attr[i].att_id;
+        pt_data = pt_data + 1;
+
+        /* 属性带有最大长度参数,小端传输 */
+        if (is_followed_by_max_length_param(notify_att_req->attr[i].att_id)) {
+            *(pt_data) = u16_low_byte(notify_att_req->attr[i].att_max_length);
+            *(pt_data + 1) = u16_high_byte(notify_att_req->attr[i].att_max_length);
+            pt_data = pt_data + ANCS_NOTIFY_ATT_MAX_LENGTH_BYTE;
+        }
+    }
+    return ERRCODE_BT_SUCCESS;
+}
+
+/* 计算申请内存大小 */
+static uint16_t calc_notify_att_req_param_length(ble_ancs_notification_attr_req_t *notify_att_req)
+{
+    uint16_t data_len = sizeof(uint8_t) + sizeof(uint32_t) +
+        (notify_att_req->att_num) * sizeof(uint8_t);
+    for (int i = 0; i < notify_att_req->att_num; i++) {
+        /* 属性带有最大长度参数 */
+        if (is_followed_by_max_length_param(notify_att_req->attr[i].att_id)) {
+            data_len += sizeof(uint16_t);
+        }
+    }
+    return data_len;
+}
+
+/* 发送获取通知属性命令 */
+errcode_t ble_ancs_client_send_get_notify_att_cmd(uint8_t client_id, uint16_t conn_id,
+    ble_ancs_notification_attr_req_t *notify_att_req)
+{
+    ble_ancs_service_t *remote = ancs_service_remote_by_conn(client_id, conn_id);
+    if (remote == NULL) {
+        bts_error("ancs client remote service is not exist, client_id:%u conn_id:%u\n",
+            client_id, conn_id);
+        return ERRCODE_BT_NOT_READY;
+    }
+
+    if (remote->ctl_point.value_handle == 0) {
+        bts_error("ancs client remote service did not discovery character, client_id:%u conn_id:%u\n",
+            client_id, conn_id);
+        return ERRCODE_BT_NOT_READY;
+    }
+
+    if (notify_att_req->att_num == 0) {
+        bts_error("ancs client att num is invalid, client_id:%u conn_id:%u\n",
+            client_id, conn_id);
+        return ERRCODE_BT_PARAM_ERR;
+    }
+
+    /* 计算请求数据长度 */
+    uint16_t data_len = calc_notify_att_req_param_length(notify_att_req);
+
+    /* 请求数据格式:cmd_id(1B)|notify_uid(4B)|att_id1(1B)|att_id2(1B)|att_id2_max_length(2B)|... */
+    uint8_t *data = (uint8_t *)bt_os_new(data_len);
+
+    /* 指向参数数据的指针,用于拼接参数移动指针 */
+    uint8_t *pt_data = data;
+    errcode_t ret = package_notify_att_req_param(notify_att_req, pt_data);
+    if (ret != ERRCODE_BT_SUCCESS) {
+        bt_os_free(data);
+        return ret;
+    }
+    gattc_handle_value_t value = {0};
+    value.handle = remote->ctl_point.value_handle;
+    value.data_len = data_len;
+    value.data = data;
+    errcode_t result = gattc_write_req(client_id, conn_id, &value);
+    bt_os_free(data);
+    return result;
+}
+
+static errcode_t package_app_att_req_param(ble_ancs_app_attr_req_t *app_att_req, uint8_t *pt_data)
+{
+    /* command id */
+    *pt_data = ANCS_CMD_GET_APP_ATT;
+
+    /* app id ,字符串 */
+    pt_data = pt_data + 1;
+    if (memcpy_s(pt_data, app_att_req->app_id.len, app_att_req->app_id.id, app_att_req->app_id.len) != EOK) {
+        bts_error("[btsrv][ERROR] app id memcpy fail!\r\n");
+        return ERRCODE_BT_MALLOC_FAIL;
+    }
+
+    /* 校验 att id */
+    pt_data = pt_data + app_att_req->app_id.len;
+    for (int i = 0; i < app_att_req->att_num; i++) {
+        if (app_att_req->attr_id[i] > ANCS_APP_ATT_DISPLAY_NAME) {
+            return ERRCODE_BT_PARAM_ERR;
+        }
+        *(pt_data) = app_att_req->attr_id[i];
+        pt_data = pt_data + 1;
+    }
+
+    return ERRCODE_BT_SUCCESS;
+}
+
+/* 发送获取应用属性命令 */
+errcode_t ble_ancs_client_send_get_app_att_cmd(uint8_t client_id, uint16_t conn_id,
+    ble_ancs_app_attr_req_t *app_att_req)
+{
+    ble_ancs_service_t *remote = ancs_service_remote_by_conn(client_id, conn_id);
+    if (remote == NULL) {
+        bts_error("ancs client remote service is not exist, client_id:%u conn_id:%u\n",
+            client_id, conn_id);
+        return ERRCODE_BT_NOT_READY;
+    }
+
+    if (remote->ctl_point.value_handle == 0) {
+        bts_error("ancs client remote service did not discovery character, client_id:%u conn_id:%u\n",
+            client_id, conn_id);
+        return ERRCODE_BT_NOT_READY;
+    }
+
+    if (app_att_req->att_num == 0) {
+        bts_error("ancs client att num is invalid, client_id:%u conn_id:%u\n",
+            client_id, conn_id);
+        return ERRCODE_BT_PARAM_ERR;
+    }
+
+    if (app_att_req->app_id.len != strlen((char *)app_att_req->app_id.id) + 1) {
+        bts_error("[ANCSClient][AppIdentifier]string must be NULL-terminated!\r\n");
+        return ERRCODE_BT_PARAM_ERR;
+    }
+
+    /* 计算数据长度 */
+    uint16_t data_len = sizeof(uint8_t) + app_att_req->app_id.len +
+        (app_att_req->att_num) * sizeof(uint8_t);
+    
+    /* 数据格式:cmd_id(1B)|app_id(动态)|att_id1(1B)|att_id2(1B)|... */
+    uint8_t *data = (uint8_t *)bt_os_new(data_len);
+    /* 指向参数数据的指针,用于拼接参数移动指针 */
+    uint8_t *pt_data = data;
+    errcode_t ret = package_app_att_req_param(app_att_req, pt_data);
+    if (ret != ERRCODE_BT_SUCCESS) {
+        bt_os_free(data);
+        return ret;
+    }
+
+    gattc_handle_value_t value = {0};
+    value.handle = remote->ctl_point.value_handle;
+    value.data_len = data_len;
+    value.data = data;
+    errcode_t result = gattc_write_req(client_id, conn_id, &value);
+    bt_os_free(data);
+    return result;
+}
+
+/* 发送执行通知行为命令 */
+errcode_t ble_ancs_client_send_perform_notify_action_cmd(uint8_t client_id, uint16_t conn_id,
+    ble_ancs_notification_action_req_t *action_req)
+{
+    ble_ancs_service_t *remote = ancs_service_remote_by_conn(client_id, conn_id);
+    if (remote == NULL) {
+        bts_error("ancs client remote service is not exist, client_id:%u conn_id:%u\n",
+            client_id, conn_id);
+        return ERRCODE_BT_NOT_READY;
+    }
+
+    if (remote->ctl_point.value_handle == 0) {
+        bts_error("ancs client remote service did not discovery character, client_id:%u conn_id:%u\n",
+            client_id, conn_id);
+        return ERRCODE_BT_NOT_READY;
+    }
+    if (action_req->action_id >= ANCS_ACTION_RESERVED) {
+        bts_error("ancs client action id is invalid, client_id:%u conn_id:%u\n",
+            client_id, conn_id);
+        return ERRCODE_BT_PARAM_ERR;
+    }
+
+    /* 计算数据长度 */
+    uint16_t data_len = sizeof(uint8_t) + sizeof(uint32_t) + sizeof(uint8_t);
+    
+    /* 数据格式:cmd_id(1B)|notify_uid(4B)|action_id(1B) */
+    uint8_t *data = (uint8_t *)bt_os_new(data_len);
+    /* 指向参数数据的指针,用于拼接参数移动指针 */
+    uint8_t *pt_data = data;
+
+    /* command id */
+    *pt_data = ANCS_CMD_PERFORM_NOTIFY_ACTION;
+
+    /* notification uuid 小端 */
+    u32_2_little(action_req->notification_uid, pt_data);
+    *(pt_data + ANCS_NOTIFY_ACTION_ID_OFFSET) = action_req->action_id;
+
+    gattc_handle_value_t value = {0};
+    value.handle = remote->ctl_point.value_handle;
+    value.data_len = data_len;
+    value.data = data;
+    errcode_t result = gattc_write_req(client_id, conn_id, &value);
+    bt_os_free(data);
+    return result;
+}
+
+/* 注册ANCS客户端回调函数 */
+errcode_t ble_ancs_client_register_callbacks(ble_ancs_client_callbacks_t *func)
+{
+    if (memcpy_s(&g_ancs_callbacks_t, sizeof(g_ancs_callbacks_t), func, sizeof(ble_ancs_client_callbacks_t)) != EOK) {
+        return ERRCODE_BT_MEMCPY_FAIL;
+    }
+    return ERRCODE_BT_SUCCESS;
+}
+
+/* ANCS服务判断 */
+bool is_ble_ancs_service(bt_uuid_t *uuid)
+{
+    bt_uuid_t ancs_service_uuid = {0};
+    ancs_service_uuid.uuid_len = BT_UUID_MAX_LEN;
+    if (memcpy_s(ancs_service_uuid.uuid, BT_UUID_MAX_LEN, ancs_uuid, BT_UUID_MAX_LEN) != EOK) {
+        bts_error("[BLE]client discovery ancs memcpy error! \n");
+        return false;
+    }
+    if (ancs_service_uuid.uuid_len != uuid->uuid_len) {
+        return false;
+    }
+
+    return (memcmp(uuid, &ancs_service_uuid, sizeof(bt_uuid_t)) == 0 ? true : false);
+}
+
+/* 根据连接ID清理本地存储的对端ANCS服务信息 */
+void ble_ancs_client_clear_remote_by_conn(uint8_t client_id, uint16_t conn_id)
+{
+    ble_ancs_service_t *node = NULL;
+    node = ancs_service_remote_by_conn(client_id, conn_id);
+    if (node != NULL) {
+        bt_sdk_list_remove(&g_ble_ancs_service_list, node);
+        sdk_list_node_free(node);
+    }
+}
+
+/* 清理本地存储的所有对端ANCS服务信息 */
+void ble_ancs_client_clear_remote_all(void)
+{
+    ble_ancs_service_t *node = (ble_ancs_service_t *)g_ble_ancs_service_list.head;
+    ble_ancs_service_t *cur_node = NULL;
+    while (node != NULL) {
+        cur_node = node;
+        node = lnext(node);
+        bt_sdk_list_remove(&g_ble_ancs_service_list, cur_node);
+        sdk_list_node_free(cur_node);
+        cur_node = NULL;
+    }
+}
index 6666082..4c649f6 100644 (file)
@@ -304,8 +304,6 @@ void ble_bas_client_read_cbk(uint8_t client_id, uint16_t conn_id, gattc_handle_v
     bts_unused(status);
     ble_bas_client_t *dev = bas_client_get_dev_by_conn(client_id, conn_id);
     if (dev == NULL) {
-        bts_error("bas client remote service is not exist, client_id:%u conn_id:%hu\n",
-            client_id, conn_id);
         return;
     }
 
@@ -324,8 +322,6 @@ void ble_bas_client_notify_characteristic_cbk(uint8_t client_id, uint16_t conn_i
 {
     ble_bas_client_t *dev = bas_client_get_dev_by_conn(client_id, conn_id);
     if (dev == NULL) {
-        bts_error("bas client remote service is not exist, client_id:%u conn_id:%hu\n",
-            client_id, conn_id);
         return;
     }
 
index 839b34d..7ae5536 100644 (file)
 #include "ble_bas_client.h"
 #include "ble_pro_dis_client.h"
 #include "ble_fmp_locator.h"
+#include "ble_ancs_client.h"
+#include "ble_ams_client.h"
 #include "bts_uuid.h"
 #include "ble_gatts_callbacks.h"
 
+uint32_t g_ble_gatt_mtu_size = 23;
+
 static bool bt_gatts_cmp_uuid(const bt_uuid_t *tgt_uuid, const bt_uuid_t *src_uuid)
 {
     uint8_t *tgt = (uint8_t *)bts_init_128bit_uuid(tgt_uuid);
@@ -182,13 +186,16 @@ static void ble_client_discovery_service_cbk(uint8_t client_id, uint16_t conn_id
 
     bt_uuid_t fmp_service_uuid = {0};
     bts_data_to_uuid_len2(FMP_IMMEDIATE_ALERT_SERVICE_UUID, &fmp_service_uuid);
-
     if (bt_gatts_cmp_uuid(&service->uuid, &bas_service_uuid) == true) {
         ble_bas_client_discovery_service_cbk(client_id, conn_id, service);
     } else if (bt_gatts_cmp_uuid(&service->uuid, &dis_service_uuid) == true) {
         ble_dis_client_discovery_service_cbk(client_id, conn_id, service);
     } else if (bt_gatts_cmp_uuid(&service->uuid, &fmp_service_uuid) == true) {
         fmp_locator_discovery_service_cbk(client_id, conn_id, service);
+    } else if (is_ble_ancs_service(&service->uuid)) {
+        ble_ancs_client_discovery_service_cbk(client_id, conn_id, service);
+    } else if (is_ble_ams_service(&service->uuid)) {
+        ble_ams_client_discovery_service_cbk(client_id, conn_id, service);
     }
 }
 
@@ -213,6 +220,8 @@ static void ble_client_discovery_character_cbk(uint8_t client_id, uint16_t conn_
         fmp_locator_discovery_characteristic_cbk(client_id, conn_id, character);
     } else {
         ble_dis_client_discovery_character_cbk(client_id, conn_id, character);
+        ble_ancs_client_discovery_character_cbk(client_id, conn_id, character);
+        ble_ams_client_discovery_character_cbk(client_id, conn_id, character);
     }
 }
 
@@ -225,6 +234,8 @@ static void ble_client_discovery_descriptor_cbk(uint8_t client_id, uint16_t conn
         return;
     }
     ble_bas_client_discovery_descriptor_cbk(client_id, conn_id, descriptor);
+    ble_ancs_client_discovery_descriptor_cbk(client_id, conn_id, descriptor);
+    ble_ams_client_discovery_descriptor_cbk(client_id, conn_id, descriptor);
 }
 
 static void ble_client_read_cbk(uint8_t client_id, uint16_t conn_id, gattc_handle_value_t *read_result,
@@ -232,17 +243,18 @@ static void ble_client_read_cbk(uint8_t client_id, uint16_t conn_id, gattc_handl
 {
     bts_info("[BLE]client read cbk client_id: %u conn_id: %hu status: %d handle: %hu \n",
         client_id, conn_id, status, read_result->handle);
-    if (status != ERRCODE_BT_SUCCESS) {
-        return;
-    }
     ble_bas_client_read_cbk(client_id, conn_id, read_result, status);
     ble_dis_client_read_cbk(client_id, conn_id, read_result, status);
+    ble_ams_client_read_cbk(client_id, conn_id, read_result, status);
 }
 
 static void ble_client_write_cbk(uint8_t client_id, uint16_t conn_id, uint16_t handle, gatt_status_t status)
 {
     bts_info("[BLE]client write cbk client_id: %u conn_id: %hu status: %d handle: %hu \n",
         client_id, conn_id, status, handle);
+
+    ble_ancs_client_write_cbk(client_id, conn_id, handle, status);
+    ble_ams_client_write_cbk(client_id, conn_id, handle, status);
 }
 
 static void ble_client_notification_cbk(uint8_t client_id, uint16_t conn_id, gattc_handle_value_t *data,
@@ -254,8 +266,16 @@ static void ble_client_notification_cbk(uint8_t client_id, uint16_t conn_id, gat
         return;
     }
     ble_bas_client_notify_characteristic_cbk(client_id, conn_id, data);
+    ble_ancs_client_notify_cbk(client_id, conn_id, data);
+    ble_ams_client_notify_cbk(client_id, conn_id, data);
 }
 
+static void ble_client_mtu_exchange_result_cbk(uint8_t client_id, uint16_t conn_id, uint32_t mtu_size, errcode_t status)
+{
+    bts_info("[BLE]client MTU changed cbk: status: %u client_id: %u conn_id: %u mtu:%u.\r\n",
+        status, client_id, conn_id, mtu_size);
+    g_ble_gatt_mtu_size = mtu_size;
+}
 
 errcode_t ble_client_register_gatt_callbacks(void)
 {
@@ -267,6 +287,12 @@ errcode_t ble_client_register_gatt_callbacks(void)
     cb.read_cb = ble_client_read_cbk;
     cb.write_cb = ble_client_write_cbk;
     cb.notification_cb = ble_client_notification_cbk;
+    cb.mtu_changed_cb = ble_client_mtu_exchange_result_cbk;
     ret = gattc_register_callbacks(&cb);
     return ret;
+}
+
+uint32_t ble_gatt_mtu_exchange_result_get(void)
+{
+    return g_ble_gatt_mtu_size;
 }
\ No newline at end of file
index b3fd574..f4196fd 100644 (file)
@@ -11,6 +11,7 @@
 #include "soc_errno.h"
 #include "bts_br_gap.h"
 #include "bts_le_gap.h"
+#include "bts_feature.h"
 #include "bts_a2dp_source.h"
 #include "bts_br_gap.h"
 #include "bts_avrcp_controller.h"
@@ -58,6 +59,11 @@ typedef enum {
 
     BTSRV_SAMPLE_GAP_SHOW_FOUND_LIST,         /* 30 展示发现设备列表 */
     BTSRV_SAMPLE_GAP_SET_CONN_REQ_ANSWER,     /* 31 设置连接请求应答 */
+    BTSRV_SAMPLE_GAP_SET_FEATURE_CONFIG,      /* 32 蓝牙特性配置 */
+    BTSRV_SAMPLE_GAP_GET_FEATURE_CONFIG,      /* 33 蓝牙特性获取 */
+    BTSRV_SAMPLE_GAP_RECONNECT_PHONE,         /* 34 重连手机 */
+
+    BTSRV_SAMPLE_GAP_SET_INQUIRY_PARAM,       /* 35 设置搜到参数 */
 } btsrv_gap_sample_cmd_id;
 
 typedef enum {
@@ -1104,6 +1110,21 @@ static void btsrv_sample_cmd_get_device_class(const char **params, int32_t param
     bts_sample_log("gap_get_device_class device_class: %d\n", ret);
 }
 
+static void btsrv_sample_cmd_set_filter_device_class(const char **params, int32_t params_cnt)
+{
+    if (params_cnt != 2) { /* 2:参数个数 */
+        bts_sample_log("gap_br_set_inquiry_paramters params_cnt error! need: device_class max_number\n");
+        return;
+    }
+
+    uint32_t dev_class = (uint32_t)atoi(params[0]);
+    uint8_t max_num = (uint8_t)atoi(params[1]);
+    bts_sample_log_with_func("dev_class:%u max_num:%u\n", dev_class, max_num);
+    int ret = gap_br_set_inquiry_paramters(dev_class, max_num);
+
+    bts_sample_log("gap_br_set_inquiry_paramters ret: %d\n", ret);
+}
+
 static void btsrv_sample_cmd_update_found_list(const char **params, int32_t params_cnt)
 {
     bts_unused(params);
@@ -1130,6 +1151,44 @@ static void btsrv_sample_cmd_set_connect_req_answer(const char **params, int32_t
     g_sample_gap_accept_conn = (bool)atoi(params[0]);
 }
 
+static void btsrv_sample_cmd_set_feature_config(const char **params, int32_t params_cnt)
+{
+    bts_feature_t feature;
+    if (params_cnt != 1) { /* 1:参数个数 */
+        bts_sample_log("btsrv_sample_cmd_set_feature_config params_cnt error! need: feature_config\n");
+        return;
+    }
+    *(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);
+}
+
+static void btsrv_sample_cmd_get_feature_config(const char **params, int32_t params_cnt)
+{
+    bts_unused(params);
+    bts_unused(params_cnt);
+    bts_feature_t feature = bts_get_features();
+    bts_sample_log("bts get features feature: bt_auto_reconnect_closed:%d.\n", feature.bt_auto_reconnect_closed);
+}
+
+static void btsrv_sample_cmd_reconnect_phone(const char **params, int32_t params_cnt)
+{
+    errcode_t ret;
+    if (params_cnt != 1) { /* 1:参数个数 */
+        bts_sample_log("reconnect phone param error! need: bd_addr.\n");
+        return;
+    }
+
+    bd_addr_t bd_addr;
+    if (decode_bd_addr_from_str(params[0], bd_addr.addr, BD_ADDR_LEN) != EXT_ERR_SUCCESS) {
+        bts_sample_log("reconnect phone decode addr error!\n");
+        return;
+    }
+    ret = gap_reconnect_media_device(&bd_addr);
+    bts_sample_log("reconnect phone ret:%d.\n", ret);
+}
+
 btsrv_sample_cmd_hdl_info g_btsrv_gap_sample_hdls[] = {
     /* 0 */
     { BTSRV_SAMPLE_GAP_ENABLE_BLE,  btsrv_sample_cmd_enable_ble },
@@ -1166,12 +1225,23 @@ btsrv_sample_cmd_hdl_info g_btsrv_gap_sample_hdls[] = {
     { BTSRV_SAMPLE_GAP_GET_DEVICE_NAME, btsrv_sample_cmd_get_device_name },
     { BTSRV_SAMPLE_GAP_GET_DEVICE_CLASS, btsrv_sample_cmd_get_device_class },
 
+    /* 25 */
+    { BTSRV_SAMPLE_GAP_PAIR_REQUEST_RELY, NULL },
+    { BTSRV_SAMPLE_GAP_SET_DEVICE_PIN, NULL },
+    { BTSRV_SAMPLE_GAP_SET_DEVICE_PAIRING_CONFIRMATION, NULL },
+    { BTSRV_SAMPLE_GAP_SET_DEVICE_PASSKEY, NULL },
     /* 29 */
     { BTSRV_SAMPLE_GAP_UPDATE_FOUND_LIST, btsrv_sample_cmd_update_found_list },
 
     /* 30 */
     { BTSRV_SAMPLE_GAP_SHOW_FOUND_LIST, btsrv_sample_cmd_show_found_list },
-    { BTSRV_SAMPLE_GAP_SET_CONN_REQ_ANSWER, btsrv_sample_cmd_set_connect_req_answer }
+    { BTSRV_SAMPLE_GAP_SET_CONN_REQ_ANSWER, btsrv_sample_cmd_set_connect_req_answer },
+    { BTSRV_SAMPLE_GAP_SET_FEATURE_CONFIG, btsrv_sample_cmd_set_feature_config },
+    { BTSRV_SAMPLE_GAP_GET_FEATURE_CONFIG, btsrv_sample_cmd_get_feature_config },
+    { BTSRV_SAMPLE_GAP_RECONNECT_PHONE, btsrv_sample_cmd_reconnect_phone },
+
+    /* 35 */
+    { BTSRV_SAMPLE_GAP_SET_INQUIRY_PARAM, btsrv_sample_cmd_set_filter_device_class },
 };
 
 void btsrv_gap_sample_cmd(uint32_t cmd_id, const char **params, int32_t params_cnt)
index f1c4921..99ff62f 100644 (file)
@@ -24,6 +24,8 @@
 #include "ble_pro_dis_client.h"
 #include "ble_bas_client.h"
 #include "ble_fmp_locator.h"
+#include "ble_ancs_client.h"
+#include "ble_ams_client.h"
 #include "osal_task.h"
 
 #define BTSRV_LOG_DEBUG
@@ -1499,8 +1501,8 @@ static void sample_gap_ble_scan_result_cbk(const gap_scan_result_data_t *scan_re
         scan_result_data->addr.addr[BT_INDEX_5]);
 }
 
-static void sample_gap_ble_conn_state_change_cbk(uint16_t conn_id, bd_addr_t *addr, gap_acl_state_t conn_state,
-    gap_pair_state_t pair_state, gap_ble_disc_reason_t disc_reason)
+static void sample_gap_ble_conn_state_change_cbk(uint16_t conn_id, bd_addr_t *addr, gap_ble_conn_state_t conn_state,
+    gap_ble_pair_state_t pair_state, gap_ble_disc_reason_t disc_reason)
 {
     bts_sample_log("ConnectStateChanged conn_id:%u addr:0x%02x:**:**:**:%02x:%02x addr_type:%u"
         "conn_state:%d pair_state:%d\r\n", conn_id, addr->addr[BT_INDEX_0], addr->addr[BT_INDEX_4],
@@ -1510,6 +1512,8 @@ static void sample_gap_ble_conn_state_change_cbk(uint16_t conn_id, bd_addr_t *ad
         ble_dis_client_clear_remote_by_conn(1, conn_id);
         ble_bas_client_clear_remote_by_conn(1, conn_id);
         ble_fmp_locator_clear_remote_by_conn(1, conn_id);
+        ble_ancs_client_clear_remote_by_conn(1, conn_id);
+        ble_ams_client_clear_remote_by_conn(1, conn_id);
     }
 }
 
@@ -1549,6 +1553,15 @@ static void sample_gap_ble_read_remote_rssi_cbk(uint16_t conn_id, int8_t rssi, e
     bts_sample_log("read remote rssi conn_id:%u rssi:%d status:%u\r\n", conn_id, rssi, status);
 }
 
+static void sample_gap_ble_connect_param_update_cbk(uint16_t conn_id, errcode_t status,
+    const gap_ble_conn_param_update_t *param)
+{
+    bts_sample_log("connect param changed conn_id:%u status:%u", conn_id, status);
+    if (param != NULL) {
+        bts_sample_log(" interval:%u latency:%u timeout:%u\r\n", param->interval, param->latency, param->timeout);
+    }
+}
+
 /* 注册GATT回调 params: sample_mode fill_callbacks */
 static void sample_gatt_cmd_ble_gatt_reg_cbk(char **params, int32_t params_cnt)
 {
@@ -1578,7 +1591,7 @@ static void sample_gatt_cmd_ble_gatt_reg_cbk(char **params, int32_t params_cnt)
             sample_gap_ble_read_remote_rssi_cbk,
             sample_gap_ble_terminate_adv_cbk,
             sample_gap_ble_auth_complete_cbk,
-            NULL,
+            sample_gap_ble_connect_param_update_cbk,
         };
         ret = gap_ble_register_callbacks(&cb);
         bts_sample_log("gap_ble_register_callbacks with funcs ret(errcode_t): %x\n", ret);
index 5304e5b..745461c 100644 (file)
@@ -22,6 +22,8 @@
 #include "sample_bt_audio_hal.h"
 #include "sample_ble_fmp.h"
 #include "sample_pan_service.h"
+#include "sample_ble_ancs.h"
+#include "sample_ble_ams.h"
 
 #define BT_SRV_SAMPLE_CMD_ARGC_MIN 2
 
@@ -57,6 +59,9 @@ typedef enum {
     BTSRV_SAMPLE_CMD_GROUP_PAN = 22, /* 22 PAN 测试命令 */
     BTSRV_SAMPLE_CMD_GROUP_HFP_AG = 23, /* 23 HFP-AG 测试命令 */
 #endif
+
+    BTSRV_SAMPLE_CMD_GROUP_ANCS_CLIENT = 24, /* 24 ANCS CLIENT 测试命令 */
+    BTSRV_SAMPLE_CMD_GROUP_AMS_CLIENT = 25, /* 25  AMS CLIENT 测试命令 */
 } btsrv_sample_cmd_group;
 #if (BTH_LE_ONLY == YES) || (BTH_BREDR_LE_DOUBLE == YES)
 static void ble_service_sample_cmd(int32_t module_id, int32_t cmd_id, char **params, int32_t params_num)
@@ -101,6 +106,12 @@ static void ble_service_sample_cmd(int32_t module_id, int32_t cmd_id, char **par
         case BTSRV_SAMPLE_CMD_GROUP_FMP:
             ble_at_fmp_srv_cmd(cmd_id, params, params_num);
             break;
+        case BTSRV_SAMPLE_CMD_GROUP_ANCS_CLIENT:
+            ble_ancs_client_at_cmd(cmd_id, params, params_num);
+            break;
+        case BTSRV_SAMPLE_CMD_GROUP_AMS_CLIENT:
+            ble_ams_client_at_cmd(cmd_id, params, params_num);
+            break;
         default:
             bts_sample_log_with_func("invalid cmd group id\n");
             break;
index 9d60c12..bfef91a 100644 (file)
@@ -482,7 +482,7 @@ int32_t btsdk_un_pair_device(uintptr_t dev_hdl);
 uintptr_t btsdk_add_remote_device(uint8_t *bd_addr, uint8_t addr_len);
 int32_t btsdk_update_remote_device_name(uintptr_t dev_hdl, uint8_t *name, uint16_t *plen);
 int32_t btsdk_update_remote_device_name_async(uintptr_t dev_hdl, gap_execute_command_cfm_cbk *cfm_cbk);
-int32_t btsdk_start_device_discovery(uint32_t dev_class);
+int32_t btsdk_start_device_discovery(uint32_t dev_class, uint8_t max_num,  uint8_t max_seconds);
 int32_t btsdk_get_remote_device_address(uintptr_t dev_hdl, uint8_t *bd_addr, uint8_t addr_len);
 int32_t btsdk_create_acl_link(uintptr_t dev_hdl, uint8_t link_type);
 int32_t btsdk_create_acl_link_async(uintptr_t dev_hdl, uint8_t link_type, gap_create_connection_cfm_cbk *cfm_cbk);
diff --git a/code/sdk/tools/bin/ohos_tools/ace-loader/jerry-snapshot.exe b/code/sdk/tools/bin/ohos_tools/ace-loader/jerry-snapshot.exe
new file mode 100644 (file)
index 0000000..895c74c
Binary files /dev/null and b/code/sdk/tools/bin/ohos_tools/ace-loader/jerry-snapshot.exe differ
diff --git a/code/sdk/tools/bin/ohos_tools/ace-loader/jerry.exe b/code/sdk/tools/bin/ohos_tools/ace-loader/jerry.exe
new file mode 100644 (file)
index 0000000..3bdadfb
Binary files /dev/null and b/code/sdk/tools/bin/ohos_tools/ace-loader/jerry.exe differ
index 780c42f..5573470 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 0fa8988..9a9b975 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 c1a7f2f..6475926 100644 (file)
Binary files a/code/sdk/tools/pkg/bin/brandy/dsp/max/dsp_overlay.bin and b/code/sdk/tools/pkg/bin/brandy/dsp/max/dsp_overlay.bin differ
index c66cf33..7785263 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 b335c6a..ee819d6 100644 (file)
Binary files a/code/sdk/tools/pkg/bin/brandy/dsp/mini/dsp_overlay.bin and b/code/sdk/tools/pkg/bin/brandy/dsp/mini/dsp_overlay.bin differ
index 7c4ebc4..4e0a8a0 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
index cea3f9d..46c5134 100644 (file)
Binary files a/code/sdk/tools/pkg/bin/brandy/dsp/normal/dsp_overlay.bin and b/code/sdk/tools/pkg/bin/brandy/dsp/normal/dsp_overlay.bin differ
index c6a9dec..4d35eed 100644 (file)
Binary files a/code/sdk/tools/pkg/bin/brandy/ssb.bin and b/code/sdk/tools/pkg/bin/brandy/ssb.bin differ
index 9a74cf5..a7ce8a1 100644 (file)
@@ -24,14 +24,18 @@ from param_packet import gen_flash_part_bin
 from nv_binary import nv_begin
 
 # brandy packet
-def build_brandy_other_bin():
+def build_brandy_other_bin(pack_style_str):
     ''' build brandy partition and nv '''
     chip_dir = os.path.join(SDK_DIR, "build", "config", "target_config", "brandy")
     # 分区配置文件路径
     partition_cfg = os.path.join(chip_dir, "param_sector", "param_sector.json")
     partition_bin = os.path.join(SDK_DIR, "output", "brandy", "partition_table.bin")
     # nv配置文件路径
-    nv_config_json = os.path.join(chip_dir, "nv_bin_cfg", "mk_nv_bin_cfg.json")
+    nv_config_json = os.path.join(chip_dir, "nv_bin_cfg")
+    if pack_style_str.endswith("-user"):
+        nv_config_json = os.path.join(nv_config_json, "mk_nv_bin_cfg_user.json")
+    else:
+        nv_config_json = os.path.join(nv_config_json, "mk_nv_bin_cfg_eng.json")
     targets = ["acore"]
     # 输出路径
     nv_output_path = os.path.join(SDK_DIR, "output", "brandy", "nv_bin")
@@ -45,7 +49,7 @@ def build_brandy_other_bin():
 
 def make_all_in_one_packet(pack_style_str):
     # make all in one packet
-    build_brandy_other_bin()
+    build_brandy_other_bin(pack_style_str)
 
     bin_dir = os.path.join(PKG_DIR, "bin", "brandy")
     application_dir = os.path.join(SDK_DIR,
@@ -54,6 +58,7 @@ def make_all_in_one_packet(pack_style_str):
                                    "acore",
                                    pack_style_str)
     recovery_target = "%s-r" % pack_style_str
+    recovery_target = recovery_target.replace('-user', '')
     recovery_bin = os.path.join(SDK_DIR,
                                 "output",
                                 "brandy",
diff --git a/jsapp/music/.gitignore b/jsapp/music/.gitignore
new file mode 100644 (file)
index 0000000..50948c8
--- /dev/null
@@ -0,0 +1,11 @@
+*.iml\r
+.gradle\r
+/local.properties\r
+/.idea\r
+.DS_Store\r
+/build\r
+/captures\r
+.externalNativeBuild\r
+/entry/.preview\r
+/entry/build\r
+.cxx\r
diff --git a/jsapp/music/README.md b/jsapp/music/README.md
new file mode 100644 (file)
index 0000000..9b7ab98
--- /dev/null
@@ -0,0 +1,3 @@
+# Lite_Himalayas
+
+3321 喜马拉雅demo
\ No newline at end of file
diff --git a/jsapp/music/build.gradle b/jsapp/music/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/music/entry/.gitignore b/jsapp/music/entry/.gitignore
new file mode 100644 (file)
index 0000000..3543521
--- /dev/null
@@ -0,0 +1 @@
+/build\r
diff --git a/jsapp/music/entry/build.gradle b/jsapp/music/entry/build.gradle
new file mode 100644 (file)
index 0000000..88bfe60
--- /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 "python3","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/music/entry/proguard-rules.pro b/jsapp/music/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/music/entry/src/main/config.json b/jsapp/music/entry/src/main/config.json
new file mode 100644 (file)
index 0000000..d915f84
--- /dev/null
@@ -0,0 +1,39 @@
+{
+  "app": {
+    "bundleName": "cn.tingshu",
+    "vendor": "vendor",
+    "version": {
+      "code": 1000000,
+      "name": "1.0.0"
+    }
+  },
+  "deviceConfig": {},
+  "module": {
+    "deviceType": [
+      "liteWearable"
+    ],
+    "distro": {
+      "deliveryWithInstall": true,
+      "moduleName": "entry",
+      "moduleType": "entry"
+    },
+    "abilities": [
+      {
+        "name": "default",
+        "icon": "$media:icon",
+        "label": "$string:entry_MainAbility",
+        "type": "page"
+      }
+    ],
+    "js": [
+      {
+        "name": "default",
+        "pages": [
+          "pages/index/index",
+          "pages/play/play",
+          "pages/playlist/playlist"
+        ]
+      }
+    ]
+  }
+}
\ No newline at end of file
diff --git a/jsapp/music/entry/src/main/js/default/app.js b/jsapp/music/entry/src/main/js/default/app.js
new file mode 100644 (file)
index 0000000..6d060ff
--- /dev/null
@@ -0,0 +1,8 @@
+export default {
+    onCreate() {
+        console.info("Application onCreate");
+    },
+    onDestroy() {
+        console.info("Application onDestroy");
+    }
+};
diff --git a/jsapp/music/entry/src/main/js/default/common/images/A055_001.png b/jsapp/music/entry/src/main/js/default/common/images/A055_001.png
new file mode 100644 (file)
index 0000000..0068ef8
Binary files /dev/null and b/jsapp/music/entry/src/main/js/default/common/images/A055_001.png differ
diff --git a/jsapp/music/entry/src/main/js/default/common/images/A055_006.png b/jsapp/music/entry/src/main/js/default/common/images/A055_006.png
new file mode 100644 (file)
index 0000000..4423913
Binary files /dev/null and b/jsapp/music/entry/src/main/js/default/common/images/A055_006.png differ
diff --git a/jsapp/music/entry/src/main/js/default/common/images/A055_007.png b/jsapp/music/entry/src/main/js/default/common/images/A055_007.png
new file mode 100644 (file)
index 0000000..9c8579d
Binary files /dev/null and b/jsapp/music/entry/src/main/js/default/common/images/A055_007.png differ
diff --git a/jsapp/music/entry/src/main/js/default/common/images/A055_008.png b/jsapp/music/entry/src/main/js/default/common/images/A055_008.png
new file mode 100644 (file)
index 0000000..3ae91b5
Binary files /dev/null and b/jsapp/music/entry/src/main/js/default/common/images/A055_008.png differ
diff --git a/jsapp/music/entry/src/main/js/default/common/images/A055_009.png b/jsapp/music/entry/src/main/js/default/common/images/A055_009.png
new file mode 100644 (file)
index 0000000..66afc51
Binary files /dev/null and b/jsapp/music/entry/src/main/js/default/common/images/A055_009.png differ
diff --git a/jsapp/music/entry/src/main/js/default/common/images/A055_010.png b/jsapp/music/entry/src/main/js/default/common/images/A055_010.png
new file mode 100644 (file)
index 0000000..8973d8f
Binary files /dev/null and b/jsapp/music/entry/src/main/js/default/common/images/A055_010.png differ
diff --git a/jsapp/music/entry/src/main/js/default/common/images/A055_013.png b/jsapp/music/entry/src/main/js/default/common/images/A055_013.png
new file mode 100644 (file)
index 0000000..02e90d5
Binary files /dev/null and b/jsapp/music/entry/src/main/js/default/common/images/A055_013.png differ
diff --git a/jsapp/music/entry/src/main/js/default/common/images/A055_014.png b/jsapp/music/entry/src/main/js/default/common/images/A055_014.png
new file mode 100644 (file)
index 0000000..fb15a72
Binary files /dev/null and b/jsapp/music/entry/src/main/js/default/common/images/A055_014.png differ
diff --git a/jsapp/music/entry/src/main/js/default/common/images/A055_015.png b/jsapp/music/entry/src/main/js/default/common/images/A055_015.png
new file mode 100644 (file)
index 0000000..c5ff8cb
Binary files /dev/null and b/jsapp/music/entry/src/main/js/default/common/images/A055_015.png differ
diff --git a/jsapp/music/entry/src/main/js/default/common/images/A055_016.png b/jsapp/music/entry/src/main/js/default/common/images/A055_016.png
new file mode 100644 (file)
index 0000000..ab9b635
Binary files /dev/null and b/jsapp/music/entry/src/main/js/default/common/images/A055_016.png differ
diff --git a/jsapp/music/entry/src/main/js/default/common/images/A055_017.png b/jsapp/music/entry/src/main/js/default/common/images/A055_017.png
new file mode 100644 (file)
index 0000000..d97e4c3
Binary files /dev/null and b/jsapp/music/entry/src/main/js/default/common/images/A055_017.png differ
diff --git a/jsapp/music/entry/src/main/js/default/common/images/A055_024.png b/jsapp/music/entry/src/main/js/default/common/images/A055_024.png
new file mode 100644 (file)
index 0000000..e1d8e5a
Binary files /dev/null and b/jsapp/music/entry/src/main/js/default/common/images/A055_024.png differ
diff --git a/jsapp/music/entry/src/main/js/default/common/images/A055_047.png b/jsapp/music/entry/src/main/js/default/common/images/A055_047.png
new file mode 100644 (file)
index 0000000..87566a5
Binary files /dev/null and b/jsapp/music/entry/src/main/js/default/common/images/A055_047.png differ
diff --git a/jsapp/music/entry/src/main/js/default/common/images/A055_050.png b/jsapp/music/entry/src/main/js/default/common/images/A055_050.png
new file mode 100644 (file)
index 0000000..1fbb91e
Binary files /dev/null and b/jsapp/music/entry/src/main/js/default/common/images/A055_050.png differ
diff --git a/jsapp/music/entry/src/main/js/default/common/images/A055_051.png b/jsapp/music/entry/src/main/js/default/common/images/A055_051.png
new file mode 100644 (file)
index 0000000..284ed8d
Binary files /dev/null and b/jsapp/music/entry/src/main/js/default/common/images/A055_051.png differ
diff --git a/jsapp/music/entry/src/main/js/default/common/images/A055_060.png b/jsapp/music/entry/src/main/js/default/common/images/A055_060.png
new file mode 100644 (file)
index 0000000..8667248
Binary files /dev/null and b/jsapp/music/entry/src/main/js/default/common/images/A055_060.png differ
diff --git a/jsapp/music/entry/src/main/js/default/common/images/A055_061.png b/jsapp/music/entry/src/main/js/default/common/images/A055_061.png
new file mode 100644 (file)
index 0000000..87e0ac3
Binary files /dev/null and b/jsapp/music/entry/src/main/js/default/common/images/A055_061.png differ
diff --git a/jsapp/music/entry/src/main/js/default/common/images/A055_063.png b/jsapp/music/entry/src/main/js/default/common/images/A055_063.png
new file mode 100644 (file)
index 0000000..15e68f0
Binary files /dev/null and b/jsapp/music/entry/src/main/js/default/common/images/A055_063.png differ
diff --git a/jsapp/music/entry/src/main/js/default/common/images/A055_064.png b/jsapp/music/entry/src/main/js/default/common/images/A055_064.png
new file mode 100644 (file)
index 0000000..d0129ef
Binary files /dev/null and b/jsapp/music/entry/src/main/js/default/common/images/A055_064.png differ
diff --git a/jsapp/music/entry/src/main/js/default/common/images/A055_065.png b/jsapp/music/entry/src/main/js/default/common/images/A055_065.png
new file mode 100644 (file)
index 0000000..22189f8
Binary files /dev/null and b/jsapp/music/entry/src/main/js/default/common/images/A055_065.png differ
diff --git a/jsapp/music/entry/src/main/js/default/common/images/A055_066.png b/jsapp/music/entry/src/main/js/default/common/images/A055_066.png
new file mode 100644 (file)
index 0000000..c1bb02d
Binary files /dev/null and b/jsapp/music/entry/src/main/js/default/common/images/A055_066.png differ
diff --git a/jsapp/music/entry/src/main/js/default/common/images/A055_067.png b/jsapp/music/entry/src/main/js/default/common/images/A055_067.png
new file mode 100644 (file)
index 0000000..7f8a9f4
Binary files /dev/null and b/jsapp/music/entry/src/main/js/default/common/images/A055_067.png differ
diff --git a/jsapp/music/entry/src/main/js/default/common/images/quit.png b/jsapp/music/entry/src/main/js/default/common/images/quit.png
new file mode 100644 (file)
index 0000000..5190588
Binary files /dev/null and b/jsapp/music/entry/src/main/js/default/common/images/quit.png differ
diff --git a/jsapp/music/entry/src/main/js/default/common/images/xima_logo.png b/jsapp/music/entry/src/main/js/default/common/images/xima_logo.png
new file mode 100644 (file)
index 0000000..00a1cc6
Binary files /dev/null and b/jsapp/music/entry/src/main/js/default/common/images/xima_logo.png differ
diff --git a/jsapp/music/entry/src/main/js/default/i18n/en-US.json b/jsapp/music/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/music/entry/src/main/js/default/i18n/zh-CN.json b/jsapp/music/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/music/entry/src/main/js/default/pages/index/index.css b/jsapp/music/entry/src/main/js/default/pages/index/index.css
new file mode 100644 (file)
index 0000000..8e18294
--- /dev/null
@@ -0,0 +1,34 @@
+.stack {\r
+    width: 100%;\r
+    height: 100%;\r
+}\r
+\r
+.container {\r
+    display: flex;\r
+    flex-direction: column;\r
+    justify-content: center;\r
+    align-items: center;\r
+    width: 100%;\r
+    height: 100%;\r
+}\r
+\r
+.logo_img {\r
+    width: 180px;\r
+    height: 180px;\r
+    border-radius: 90px;\r
+}\r
+\r
+.logo_text {\r
+    margin-top: 15px;\r
+    width: 180px;\r
+    font-size: 40px;\r
+    text-align: center;\r
+}\r
+\r
+.logo_mini {\r
+    margin-top: 5px;\r
+    letter-spacing: 4px;\r
+    width: 180px;\r
+    font-size: 16px;\r
+    text-align: center;\r
+}\r
diff --git a/jsapp/music/entry/src/main/js/default/pages/index/index.hml b/jsapp/music/entry/src/main/js/default/pages/index/index.hml
new file mode 100644 (file)
index 0000000..efed5d6
--- /dev/null
@@ -0,0 +1,7 @@
+<stack class="stack">\r
+    <div class="container">\r
+        <image class="logo_img" src="/common/images/xima_logo.png"></image>\r
+        <text class="logo_text">JS听书</text>\r
+        <text class="logo_mini">每一天的精神食粮</text>\r
+    </div>\r
+</stack>\r
diff --git a/jsapp/music/entry/src/main/js/default/pages/index/index.js b/jsapp/music/entry/src/main/js/default/pages/index/index.js
new file mode 100644 (file)
index 0000000..261f094
--- /dev/null
@@ -0,0 +1,22 @@
+import app from '@system.app';\r
+import router from '@system.router';\r
+\r
+export default {\r
+    data: {},\r
+    onInit() {\r
+    },\r
+    onShow() {\r
+        setTimeout(this.toNav, 2000)\r
+    },\r
+    toNav() {\r
+        router.replace({\r
+            uri: "pages/playlist/playlist"\r
+        })\r
+    },\r
+    swipeEvent(e) {\r
+        if (e.direction == "right") {\r
+            app.terminate()\r
+            console.log("Xima exit");\r
+        }\r
+    },\r
+}
\ No newline at end of file
diff --git a/jsapp/music/entry/src/main/js/default/pages/play/play.css b/jsapp/music/entry/src/main/js/default/pages/play/play.css
new file mode 100644 (file)
index 0000000..9e72a64
--- /dev/null
@@ -0,0 +1,149 @@
+.stack {
+    width: 100%;
+    height: 100%;
+}
+
+.top_record {
+    left: 198px;
+    width: 256px;
+    height: 256px;
+}
+
+.bottom_record {
+    top: 198px;
+    width: 256px;
+    height: 256px;
+}
+
+.album_div {
+    width: 100%;
+    height: 120px;
+    align-items: center;
+    padding-top: 40px;
+    flex-direction: column;
+    background-color: transparent;
+}
+
+.song_div {
+    width: 70%;
+    height: 37px;
+    background-color: transparent;
+}
+
+.device_img {
+    width: 26px;
+    height: 37px;
+    background-color: transparent;
+}
+
+.song_text {
+    font-size: 30px;
+    width: 100%;
+    text-align: center;
+    background-color: transparent;
+}
+
+.singer_name {
+    font-size: 24px;
+    margin-top: 5px;
+    width: 60%;
+    height: 32px;
+    background-color: transparent;
+}
+
+.play_stack {
+    width: 118px;
+    height: 118px;
+    left: 168px;
+    top: 168px;
+}
+
+.play_img {
+    width: 118px;
+    height: 118px;
+}
+
+.left_btn {
+    width: 78px;
+    height: 78px;
+    left: 40px;
+    top: 188px;
+}
+
+.right_btn {
+    width: 78px;
+    height: 78px;
+    left: 336px;
+    top: 188px;
+}
+
+.order_stack {
+    width: 48px;
+    height: 48px;
+    left: 100px;
+    top: 346px;
+    background-color: transparent;
+}
+
+.order_img {
+    width: 48px;
+    height: 48px;
+    background-color: transparent;
+}
+
+.volume_img {
+    width: 48px;
+    height: 48px;
+    left: 140px;
+    top: 346px;
+}
+
+.settings_img {
+    width: 26px;
+    height: 37px;
+    left: 277px;
+    top: 351px;
+}
+
+.progress {
+    center-x: 227px;
+    center-y: 227px;
+    width: 100%;
+    height: 100%;
+    start-angle: 120;
+    total-angle: -60;
+    stroke-width: 8px;
+    radius: 220px;
+    color: steelblue;
+    background-color: #333333;
+}
+
+.volume_div {
+    width: 100%;
+    height: 100%;
+    align-items: center;
+    justify-content: center;
+    flex-direction: column;
+    background-color: black;
+}
+
+.volume_div_2 {
+    width: 80%;
+    height: 60px;
+    border-radius: 30px;
+    align-items: center;
+    justify-content: center;
+    background-color: #2CFFFFFF;
+}
+
+.hide_div {
+    width: 100%;
+    height: 197px;
+}
+
+.volume_slider {
+    height: 20px;
+    width: 70%;
+    selected-color: steelblue;
+    color: aliceblue;
+}
\ No newline at end of file
diff --git a/jsapp/music/entry/src/main/js/default/pages/play/play.hml b/jsapp/music/entry/src/main/js/default/pages/play/play.hml
new file mode 100644 (file)
index 0000000..5d6fae9
--- /dev/null
@@ -0,0 +1,38 @@
+<stack class="stack">
+
+    <stack class="stack" on:swipe="swipeExit">
+
+    <!--  top album  -->
+        <div class="album_div">
+            <div class="song_div">
+                <text class="song_text">{{ curMusic.curMusicName }}</text>
+            </div>
+            <marquee scrollamount="10" class="singer_name">{{ curMusic.singer }}</marquee>
+        </div>
+
+    <!--  center images  -->
+        <stack class="play_stack" on:click="playMusic">
+            <image class="play_img" src="/common/images/A055_010.png" if="{{ playStatus != 0 }}"/>
+            <image class="play_img" src="/common/images/A055_009.png" if="{{ playStatus == 0 }}"/>
+        </stack>
+
+        <image src="/common/images/A055_006.png" style="object-fit : contain;"
+               class="left_btn" on:click="changeSong"/>
+        <image src="/common/images/A055_007.png" style="object-fit : contain;"
+               class="right_btn" on:click="changeSong"/>
+
+        <image src="/common/images/A055_001.png" class="volume_img" on:click="showVolume"/>
+
+        <image src="/common/images/A055_024.png" class="settings_img" on:click="exitApp"/>
+
+        <progress type="arc" class="progress" percent="{{ progress }}"></progress>
+
+    </stack>
+    <div class="volume_div" if="{{ showVolume }}">
+        <div class="hide_div" on:swipe="swipeQuitVolume" on:click="hideVolume"></div>
+        <div class="volume_div_2" on:click="clickVolumeDiv">
+            <slider class="volume_slider" value="{{ volume }}" on:change="changeVolume" on:swipe="swipeSliderVolume"/>
+        </div>
+        <div class="hide_div" on:swipe="swipeQuitVolume" on:click="hideVolume"></div>
+    </div>
+</stack>
diff --git a/jsapp/music/entry/src/main/js/default/pages/play/play.js b/jsapp/music/entry/src/main/js/default/pages/play/play.js
new file mode 100644 (file)
index 0000000..f4ef0da
--- /dev/null
@@ -0,0 +1,161 @@
+import player from '@system.audio'
+import router from '@system.router';
+
+var timestamp = 0
+var lastVolume = 0
+
+export default {
+    data: {
+        playStatus: 2, //0:play,1:pause,2:stop
+        duration: 0,
+        currentTime: 0,
+        curIndex: 0,
+        progress: 0,
+        showVolume: false,
+        canExit: true,
+        volume: 0,
+        musicList: [
+            {
+                src: "/user/music/chun_feng_chu.mp3",
+                name: "运动听单",
+                singer: "今日畅听歌曲,春风吹 欢迎收听",
+                pathType: 0 // 0: system path, 1: inner path
+            },
+            {
+                src: "resources/base/media/alarm.mp3",
+                name: "运动听单",
+                singer: "日本最神秘歌曲,Lemon 欢迎收听",
+                pathType: 1
+            },
+            {
+                src: "/user/music/lan_jing.mp3",
+                name: "运动听单",
+                singer: "今日畅听歌曲,化身孤岛的鲸 欢迎收听",
+                pathType: 0
+            }
+        ],
+        curMusic: { //current music info
+            curMusicName: "",
+            singer: "",
+        },
+    },
+    onInit() {
+        this.curMusic.curMusicName = this.musicList[this.curIndex].name;
+        this.curMusic.singer = this.musicList[this.curIndex].singer;
+        //get music duration
+        player.onplay = () => {
+            console.log("MusicDemo onplay start");
+            this.playStatus = 0;
+        };
+        player.onended = () => {
+            console.log("MusicDemo onended start");
+            this.playStatus = 2;
+
+            // reset player
+            player.reset();
+
+            this.changeSong()
+            console.log("MusicDemo onended start");
+        }
+        player.ontimeupdate = () => {
+            this.duration = player.duration;
+            this.currentTime = player.currentTime
+            console.info("MusicDemo dur:" + this.duration + ", cur:" + this.currentTime)
+            if (this.duration != 0) {
+                this.progress = this.currentTime * 100.0 / this.duration;
+            } else {
+                this.progress = 0;
+            }
+        }
+    },
+    playMusic() {
+        console.info("MusicDemo getPlayState: " + this.playStatus)
+        if (this.playStatus == 1) {
+            player.play();
+            this.playStatus = 0;
+            console.log("MusicDemo playMusic:play");
+            return;
+        } else if (this.playStatus == 0) {
+            this.playImage = "common/ic_music_play.png";
+            player.pause();
+            this.playStatus = 1;
+            console.log("MusicDemo playMusic:pause");
+            return;
+        }
+
+        this.curMusic.curMusicName = this.musicList[this.curIndex].name;
+        this.curMusic.singer = this.musicList[this.curIndex].singer;
+        if (this.musicList[this.curIndex].pathType == 0) {
+            player.src = this.musicList[this.curIndex].src;
+        } else {
+            player.srcInner = this.musicList[this.curIndex].src;
+        }
+        player.play();
+        this.playStatus = 0;
+        console.log("MusicDemo playMusic:play");
+    },
+    changeSong() {
+        console.log("MusicDemo ChangeSong:start");
+        if (this.playStatus == 0 || this.playStatus == 1) {
+            this.playStatus = 2;
+        }
+        this.curIndex = (this.curIndex + 1) % 3;
+
+        this.playMusic();
+        console.log("MusicDemo ChangeSong:end");
+    },
+    stopPlay() {
+        console.log("stopPlay");
+        player.onplay = null;
+        player.onended = null;
+        player.ontimeupdate = null;
+    },
+    changeVolume(e) {
+        console.log("MusicDemo ChangeVolume: " + e.progress)
+        let temp_timestamp = new Date().getTime()
+        if (temp_timestamp - timestamp > 250) {
+            timestamp = temp_timestamp
+            player.volume = e.progress / 100.0
+        } else {
+            lastVolume = e.progress / 100.0
+        }
+    },
+    swipeSliderVolume(e){
+        player.volume = lastVolume
+    },
+    showVolume() {
+        this.showVolume = true
+        this.canExit = false
+        this.volume = player.volume * 100
+    },
+    hideVolume() {
+        this.showVolume = false
+        setTimeout(this.setCanExit, 500)
+    },
+    clickVolumeDiv() {
+    },
+    setCanExit() {
+        this.canExit = true
+    },
+    swipeQuitVolume(e) {
+        if (e.direction == "right") {
+            if (this.showVolume) {
+                this.hideVolume()
+            }
+        }
+    },
+    swipeExit(e) {
+        if (e.direction == "right" && this.canExit) {
+            this.exitApp()
+        }
+    },
+    exitApp() {
+        console.log("MusicDemo start back");
+        player.reset();
+        this.stopPlay();
+        router.replace({
+            uri: "pages/playlist/playlist"
+        })
+        console.log("MusicDemo end back");
+    },
+}
diff --git a/jsapp/music/entry/src/main/js/default/pages/playlist/playlist.css b/jsapp/music/entry/src/main/js/default/pages/playlist/playlist.css
new file mode 100644 (file)
index 0000000..3a7f1af
--- /dev/null
@@ -0,0 +1,53 @@
+/* index.css */\r
+.container {\r
+    display: flex;\r
+    justify-content: center;\r
+    align-items: center;\r
+    width: 100%;\r
+    height: 100%;\r
+    flex-direction: column;\r
+}\r
+\r
+.todo-wrapper {\r
+    margin-top: 40px;\r
+    width: 100%;\r
+    height: 300px;\r
+}\r
+\r
+.todo-item {\r
+    width: 100%;\r
+    height: 80px;\r
+    flex-direction: column;\r
+    justify-content: center;\r
+    align-items: center;\r
+}\r
+\r
+.item_divider {\r
+    height: 1px;\r
+    width: 70%;\r
+    background-color: #333333;\r
+}\r
+\r
+.item_div_wrapper {\r
+    flex-direction: row;\r
+    align-items: center;\r
+    justify-content: center;\r
+    width: 70%;\r
+    height: 60px;\r
+}\r
+\r
+.index-title {\r
+    margin-top: 20px;\r
+    width: 15%;\r
+    height: 40px;\r
+    font-size: 30px;\r
+    color: #666666;\r
+}\r
+\r
+.todo-title {\r
+    margin-top: 20px;\r
+    width: 85%;\r
+    height: 40px;\r
+    text-overflow: ellipsis;\r
+    font-size: 30px;\r
+}
\ No newline at end of file
diff --git a/jsapp/music/entry/src/main/js/default/pages/playlist/playlist.hml b/jsapp/music/entry/src/main/js/default/pages/playlist/playlist.hml
new file mode 100644 (file)
index 0000000..f84e68e
--- /dev/null
@@ -0,0 +1,15 @@
+<!-- index.hml -->\r
+<div class="container">\r
+\r
+    <text>运动听单</text>\r
+\r
+    <list class="todo-wrapper" on:swipe="swipeExit">\r
+        <list-item for="{{ musicList }}" class="todo-item" on:click="goPlay({{ $item.index }})">\r
+            <div class="item_divider"></div>\r
+            <div class="item_div_wrapper">\r
+                <text class="index-title">{{ $item.index }}</text>\r
+                <text class="todo-title">{{ $item.singer }}</text>\r
+            </div>\r
+        </list-item>\r
+    </list>\r
+</div>\r
diff --git a/jsapp/music/entry/src/main/js/default/pages/playlist/playlist.js b/jsapp/music/entry/src/main/js/default/pages/playlist/playlist.js
new file mode 100644 (file)
index 0000000..137fce2
--- /dev/null
@@ -0,0 +1,46 @@
+import app from '@system.app';\r
+import router from '@system.router';\r
+\r
+// index.js\r
+export default {\r
+    data: {\r
+        musicList: [\r
+            {\r
+                index: 1,\r
+                src: "/user/music/chun_feng_chu.mp3",\r
+                name: "运动听单",\r
+                singer: "今日畅听歌曲,春风吹 欢迎收听"\r
+            },\r
+            {\r
+                index: 2,\r
+                src: "/user/music/alarm.mp3",\r
+                name: "运动听单",\r
+                singer: "日本最神秘歌曲,Lemon 欢迎收听"\r
+            },\r
+            {\r
+                index: 3,\r
+                src: "/user/music/lan_jing.mp3",\r
+                name: "运动听单",\r
+                singer: "今日畅听歌曲,化身孤岛的鲸 欢迎收听"\r
+            }\r
+        ],\r
+    },\r
+    goPlay(index) {\r
+        router.replace({\r
+            uri: "pages/play/play",\r
+            params: {\r
+                curIndex: index - 1\r
+            }\r
+        })\r
+    },\r
+    swipeExit(e) {\r
+        if (e.direction == "right") {\r
+            this.exitApp()\r
+        }\r
+    },\r
+    exitApp() {\r
+        console.log("MusicDemo start exit");\r
+        app.terminate();\r
+        console.log("MusicDemo end exit");\r
+    },\r
+}
\ No newline at end of file
diff --git a/jsapp/music/entry/src/main/resources/base/element/string.json b/jsapp/music/entry/src/main/resources/base/element/string.json
new file mode 100644 (file)
index 0000000..ddc776b
--- /dev/null
@@ -0,0 +1,8 @@
+{\r
+  "string": [\r
+    {\r
+      "name": "entry_MainAbility",\r
+      "value": "JS听书"\r
+    }\r
+  ]\r
+}\r
diff --git a/jsapp/music/entry/src/main/resources/base/media/alarm.mp3 b/jsapp/music/entry/src/main/resources/base/media/alarm.mp3
new file mode 100644 (file)
index 0000000..06e0caa
Binary files /dev/null and b/jsapp/music/entry/src/main/resources/base/media/alarm.mp3 differ
diff --git a/jsapp/music/entry/src/main/resources/base/media/icon.png b/jsapp/music/entry/src/main/resources/base/media/icon.png
new file mode 100644 (file)
index 0000000..bfe7d71
Binary files /dev/null and b/jsapp/music/entry/src/main/resources/base/media/icon.png differ
diff --git a/jsapp/music/entry/src/main/resources/base/media/icon_small.png b/jsapp/music/entry/src/main/resources/base/media/icon_small.png
new file mode 100644 (file)
index 0000000..e5cc3f3
Binary files /dev/null and b/jsapp/music/entry/src/main/resources/base/media/icon_small.png differ
diff --git a/jsapp/music/gradle.properties b/jsapp/music/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/music/gradle/wrapper/gradle-wrapper.jar b/jsapp/music/gradle/wrapper/gradle-wrapper.jar
new file mode 100644 (file)
index 0000000..490fda8
Binary files /dev/null and b/jsapp/music/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/jsapp/music/gradle/wrapper/gradle-wrapper.properties b/jsapp/music/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/music/gradlew b/jsapp/music/gradlew
new file mode 100644 (file)
index 0000000..536f027
--- /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/music/gradlew.bat b/jsapp/music/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/music/settings.gradle b/jsapp/music/settings.gradle
new file mode 100644 (file)
index 0000000..28d595f
--- /dev/null
@@ -0,0 +1 @@
+include ':entry'\r
diff --git a/patch_602_base_to_0521.txt b/patch_602_base_to_0521.txt
new file mode 100644 (file)
index 0000000..28667ea
--- /dev/null
@@ -0,0 +1,87 @@
+【补丁名称】patch_602_base_to_0521\r
+【基础版本】b602\r
+【修复问题】\r
+BT合入内容\r
+    1、解决调用a2dp snk接口断开失败问题。\r
+    2、解决手表与android手机通过WRTM连接后取消配对后能搜到手表BT但是连接不上的问题。\r
+    3、客户需求:BT自动回连开关、BT回连接口。\r
+    4、解决BLE数传触发流控丢包后A核无感知的问题。\r
+    5、优化B核BLE GAP事件上报流程,解决断连事件上报慢的问题。\r
+    6、解决BLE GATT断连处理中内存泄漏问题。\r
+    7、解决BR回连失败问题。\r
+    8、优化GATT服务发现、写请求等阻塞流程,从死等优化成60s超时。 \r
+    9、配置MTU默认值为23,解决ios mut更新失败兼容性问题。\r
+    10、客户需求合入:inquiry参数配置接口,可配置参数:设备类型、最大设备数量。\r
+    11、新增维测日志。\r
+    12、配合btc解决BLE数传和通话共存场景下通话卡顿问题,具体方案是:BT通话和BLE共存时,BT通话结束,连接参数恢复成原先的值。\r
+    13、解决ble地址变化时BLE write响应上报不成功问题。\r
+    14、增加默认广播数据名字长度限制。 \r
+    15、解决BT回连过程中,BLE数传ipc error问题。\r
+    16、解决MMI扫描内存不足问题\r
+    17、解决BLE配置广播数据后未清理内存导致系统内存资源不足问题\r
+    18、新增BLE ANCS/AMS Client功能\r
+PLT合入内容\r
+    1、dfx维测增强,增加bt panic场景bt ram,bt trace,preserve信息。\r
+    2、A核到B核IPC消息判断B核深睡flag。\r
+    3、复位前保护,复位等待B核响应。\r
+    4、QSPI指针越界\r
+    5、解决屏幕概率显示黑线,增加gpu memretention配置    \r
+    6、解决efuse写bit问题\r
+    7、SEC sha hash运算错误\r
+    8、适配2G NANDflash\r
+    9、RTC定时问题\r
+    10、解决log dump重新配置狗超时\r
+    11、增加user target,默认开启离线日志\r
+    12、离线日志增加流控功能\r
+    13、优化windows编译路径长问题\r
+    14、nv配置区分user和eng版本,解决nv升级未生效问题\r
+GUI合入内容\r
+    1、支持蜂窝进入退出仿苹果动效\r
+    2、支持CoverFlow的松手惯性动效\r
+    3、支持Dump图片资源使用信息\r
+    4、优化视频页面截图以及跳转进入动效方案\r
+    5、解决图片资源加卸载过程中的内存异常问题\r
+    6、解决SVG解析失败问题\r
+    7、解决页面跳转崩溃问题\r
+    8、解决跑马灯因精度导致的抖动问题\r
+    9、解决触摸事件因不同页面控件地址相同导致的异常处理问题\r
+    10、关闭MapBuffer节省图形占用内存\r
+    11、解决弧形列表内存泄漏问题\r
+    12、解决UICrossView 已对齐时松手不上报ScrollEnd回调\r
+    13、预防通过UIView清除了其他焦点控件\r
+    14、修复内存分配时内存没对齐问题\r
+    15、修复问题:Text绘制应取交集,否则可能传超大区域导致VAU绘制报错\r
+    16、修复corssview UIMenuItem截图失败\r
+AUDIO&MEDIA合入内容\r
+    1、解决3A算法无法调参的问题\r
+    2、解决HSO命令行无法dump数据的问题,删去多余的realpath操作\r
+    3、支持使用seek的方式进行音视频的循环播放,提升性能\r
+    4、解决从本地音乐切换到蓝牙音乐频率不改变的问题\r
+    5、支持设置视频退出的同步和异步模式\r
+OHOS合入内容\r
+    1、支持音频资源文件打包到JS应用的需求\r
+    2、支持百度矢量地图,合入百度JSI接口的修改\r
+    3、解决自定义地图控件场景ref count反转导致挂死问题\r
+GPU合入内容:\r
+    1、解决视频播放花屏问题以及低功耗时访问GPU寄存器问题\r
+    2、解决多线程场景下低功耗时GPU寄存器访问挂死问题\r
+NATIVE-JS sample合入内容\r
+    1、增加表盘管理\r
+    2、增加卡片管理\r
+    3、增加列表蜂窝切换\r
+    4、解决概率通话无声、耳机回连失败问题\r
+【修改影响】NA\r
+【使用方法】\r
+    1、手动删除sdk_602版本以下文件:\r
+    code\sdk\application\wearable\nativeapp\nativeui\main\src\dial\parser\DialBinTypes.h\r
+    code\sdk\application\wearable\nativeapp\nativeui\main\src\dial\parser\DialBinParser.h\r
+    code\sdk\open_source\openharmony\third_party\jerryscript\r
+    2、合入补丁内容到sdk_602版本目录\r
+    3、离线表盘工具、js开发配套工具存放在tools,视频表盘制作变更具体参考tools\dial_converter_tool\视频表盘制作变更.txt\r
+    4、nativeapp新增资源存放在res目录\r
+【自测情况】\r
+    自验证范围:\r
+       全功能冒烟\r
+    自验证target:\r
+       Native-js、target3 rc版本\r
+【是否合入版本】根据测试结果确定
\ No newline at end of file