更新sdk602 patch 0812 to 0911 973/1 973/head 974/target/1
authorSnickerSun <snickersun@163.com>
Sat, 14 Sep 2024 05:53:41 +0000 (13:53 +0800)
committerSnickerSun <snickersun@163.com>
Sat, 14 Sep 2024 05:53:41 +0000 (13:53 +0800)
241 files changed:
code/sdk/application/wearable/fd230app/CMakeLists.txt
code/sdk/application/wearable/fd230app/nativelauncher/src/NativeLauncher.cpp
code/sdk/application/wearable/fd230app/nativeui/bluetooth/src/BluetoothHeadsetEvent.cpp
code/sdk/application/wearable/fd230app/nativeui/bluetooth/src/BluetoothModel.cpp
code/sdk/application/wearable/fd230app/nativeui/main/include/ModelListenerSample.h
code/sdk/application/wearable/fd230app/nativeui/main/include/PresenterTask.h [deleted file]
code/sdk/application/wearable/fd230app/nativeui/main/src/MainPresenterSample.cpp
code/sdk/application/wearable/fd230app/nativeui/main/src/ModelListenerSample.cpp
code/sdk/application/wearable/fd230app/nativeui/main/src/PresenterTask.cpp [deleted file]
code/sdk/application/wearable/fd230app/nativeui/phoneservice/src/PhoneService.cpp
code/sdk/application/wearable/fd230app/nativeui/player/src/PlayersPresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/uisample/uitest/framework/src/test_case_list_adapter.cpp
code/sdk/application/wearable/fd230app/nativeui/uisample/uitest/framework/src/ui_test_group.cpp
code/sdk/application/wearable/nativeabilityfwk/src/Ability.cpp
code/sdk/application/wearable/nativeapp/CMakeLists.txt
code/sdk/application/wearable/nativeapp/nativelauncher/src/NativeLauncher.cpp
code/sdk/application/wearable/nativeapp/nativeui/bluetooth/src/BluetoothEarPhoneView.cpp
code/sdk/application/wearable/nativeapp/nativeui/bluetooth/src/BluetoothHeadsetEvent.cpp
code/sdk/application/wearable/nativeapp/nativeui/bluetooth/src/BluetoothModel.cpp
code/sdk/application/wearable/nativeapp/nativeui/main/include/ModelListenerSample.h
code/sdk/application/wearable/nativeapp/nativeui/main/include/PresenterTask.h [deleted file]
code/sdk/application/wearable/nativeapp/nativeui/main/src/MainPresenterSample.cpp
code/sdk/application/wearable/nativeapp/nativeui/main/src/ModelListenerSample.cpp
code/sdk/application/wearable/nativeapp/nativeui/main/src/PresenterTask.cpp [deleted file]
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/uisample/uitest/framework/src/test_case_list_adapter.cpp
code/sdk/application/wearable/nativeapp/nativeui/uisample/uitest/framework/src/ui_test_group.cpp
code/sdk/application/wearable/service/ble_service/bleservice/bleEvent.c
code/sdk/application/wearable/service/msg_center/CMakeLists.txt
code/sdk/application/wearable/service/msg_center/brandy-auto-ota-cli/libmsg_center.a
code/sdk/application/wearable/service/msg_center/brandy-auto-ota-ser/libmsg_center.a
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/common/msg_center_common.h [new file with mode: 0644]
code/sdk/application/wearable/service/msg_center/include/msg_center_customer.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/src/common/msg_center_common.cpp [new file with mode: 0644]
code/sdk/application/wearable/service/msg_center/src/msg_center_cmd.cpp
code/sdk/application/wearable/service/msg_center/src/msg_center_customer.cpp
code/sdk/application/wstp/at_service/ohosfwk/ohosfwk_at_process.cpp
code/sdk/build/config/target_config/brandy/config.py
code/sdk/build/config/target_config/brandy/param_sector/param_sector_16M.json [new file with mode: 0644]
code/sdk/build/config/target_config/brandy/param_sector/param_sector_fd230.json [new file with mode: 0644]
code/sdk/build/script/cmake_builder.py
code/sdk/drivers/boards/brandy_evb/memory_config/include/flash_16M.h [new file with mode: 0644]
code/sdk/drivers/boards/brandy_evb/memory_config/include/flash_16M_FD230.h [new file with mode: 0644]
code/sdk/drivers/boards/brandy_evb/memory_config/include/flash_8M.h [new file with mode: 0644]
code/sdk/drivers/boards/brandy_evb/memory_config/include/memory_config_common.h
code/sdk/drivers/boards/brandy_evb/product/product_evb4_standard.h
code/sdk/drivers/chips/brandy/porting/systick/systick_porting.c
code/sdk/drivers/drivers/driver/button/button.c [new file with mode: 0644]
code/sdk/drivers/drivers/driver/mmc/host/sdhci/brandy/mmc_sdhci.c
code/sdk/drivers/drivers/driver/mmc/include/soc_mmc.h
code/sdk/drivers/peripheral/ppg/hx3695/hx3695.c
code/sdk/include/middleware/services/bts/common/bts_def.h
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/btsrv_task.c.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_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_router.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/map_svg_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/spp_service.c.xml
code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/ui_coverflow_view2.cpp.xml
code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/ui_icosahedron_view.cpp.xml
code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/ui_map_view.cpp.xml
code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/ui_roller_view.cpp.xml
code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/ui_slipflow_view.cpp.xml [new file with mode: 0644]
code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/ui_transform_group.cpp.xml
code/sdk/interim_binary/brandy/audio/build_hso_cfg/hso_database/xml/base/dsp_core/core_sea.c.xml
code/sdk/interim_binary/brandy/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/hci_core_ram.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_audio_manager_wrapper.a [new file with mode: 0644]
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/include/log_def_app.h
code/sdk/middleware/chips/brandy/dfx/include/log_def_gui.h
code/sdk/middleware/chips/brandy/dfx/include/log_def_ohos.h
code/sdk/middleware/chips/brandy/nv/include/nv_config.h
code/sdk/middleware/services/gpu/api/rm/brandy-auto-ota-cli/libgfx_rm.a
code/sdk/middleware/services/gpu/api/rm/brandy-auto-ota-ser/libgfx_rm.a
code/sdk/middleware/services/gpu/api/rm/brandy-native-js-r/libgfx_rm.a
code/sdk/middleware/services/gpu/api/rm/brandy-native-js/libgfx_rm.a
code/sdk/middleware/services/gpu/api/rm/brandy-target1-r/libgfx_rm.a
code/sdk/middleware/services/gpu/api/rm/brandy-target1/libgfx_rm.a
code/sdk/middleware/services/gpu/api/rm/brandy-target3-r/libgfx_rm.a
code/sdk/middleware/services/gpu/api/rm/brandy-target3/libgfx_rm.a
code/sdk/middleware/services/gpu/api/rm/brandy-target4-r/libgfx_rm.a
code/sdk/middleware/services/gpu/api/rm/brandy-target4/libgfx_rm.a
code/sdk/middleware/services/gpu/api/rm/brandy-target5-r/libgfx_rm.a
code/sdk/middleware/services/gpu/api/rm/brandy-target5/libgfx_rm.a
code/sdk/middleware/services/gpu/api/rm/brandy-xts/libgfx_rm.a
code/sdk/middleware/services/gpu/api/rm/testsuite-brandy-sdk/libgfx_rm.a
code/sdk/middleware/services/gui/hal/display/brandy-auto-ota-cli/libdisplay_gfx.a
code/sdk/middleware/services/gui/hal/display/brandy-auto-ota-ser/libdisplay_gfx.a
code/sdk/middleware/services/gui/hal/display/brandy-native-js/libdisplay_gfx.a
code/sdk/middleware/services/gui/hal/display/brandy-target1/libdisplay_gfx.a
code/sdk/middleware/services/gui/hal/display/brandy-target3/libdisplay_gfx.a
code/sdk/middleware/services/gui/hal/display/brandy-target5/libdisplay_gfx.a
code/sdk/middleware/services/gui/hal/display/brandy-xts/libdisplay_gfx.a
code/sdk/middleware/services/gui/hal/display/src/display_gralloc.c
code/sdk/middleware/services/gui/lvgl/brandy-target1/liblvgl_proprietary_mini.a
code/sdk/middleware/services/gui/lvgl/brandy-target5/liblvgl_proprietary.a
code/sdk/middleware/services/gui/lvgl/proprietary/src/misc/lv_turn_page_effect.c
code/sdk/middleware/services/gui/uikit/CMakeLists.txt
code/sdk/middleware/services/gui/uikit/brandy-auto-ota-cli/libuikit_ext.a
code/sdk/middleware/services/gui/uikit/brandy-auto-ota-ser/libuikit_ext.a
code/sdk/middleware/services/gui/uikit/brandy-native-js/libuikit_ext.a
code/sdk/middleware/services/gui/uikit/brandy-target3/libuikit_ext.a
code/sdk/middleware/services/gui/uikit/brandy-xts/libuikit_ext.a
code/sdk/middleware/services/gui/uikit/proprietary/include/components/ui_cross_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_slipflow_view.h [new file with mode: 0644]
code/sdk/middleware/services/gui/uikit/proprietary/include/components/ui_transform_group.h
code/sdk/middleware/services/gui/uikit/proprietary/include/dfx/dfx_frame_trace.h
code/sdk/middleware/services/gui/uikit/proprietary/include/gfx_utils/mem_check.h
code/sdk/middleware/services/gui/uikit/proprietary/src/ui/frameworks/common/lite_surface.cpp
code/sdk/middleware/services/gui/uikit/proprietary/src/ui/frameworks/components/ui_custom_hexagons_list.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/engines/gfx/lite_m_gfx_engine.h
code/sdk/middleware/services/gui/uikit/proprietary/src/utils/frameworks/hals/display_dev.cpp
code/sdk/middleware/services/gui/uikit/proprietary/src/utils/frameworks/hals/lite_input_distributer.cpp
code/sdk/middleware/services/gui/uikit/proprietary/src/utils/frameworks/mem_check.cpp
code/sdk/middleware/services/gui/uikit/proprietary/src/utils/frameworks/mem_custom.cpp
code/sdk/middleware/services/gui/uikit/proprietary/src/utils/innerkits/hals/display_dev.h
code/sdk/middleware/services/gui/uikit/proprietary/src/utils/innerkits/hals/lite_input_distributer.h
code/sdk/middleware/services/gui/uikit/res/image_background_circle.bin [new file with mode: 0644]
code/sdk/middleware/services/gui/uikit/res/kaleidoscope_circle.bin [new file with mode: 0644]
code/sdk/middleware/services/gui/uikit/res/planet_circle.bin [new file with mode: 0644]
code/sdk/middleware/services/gui/uikit/res/rainbow_circle.bin [new file with mode: 0644]
code/sdk/middleware/services/gui/uikit/sample/uitest/components/ui_test_icosahedron/ui_test_icosahedron.cpp
code/sdk/middleware/services/gui/uikit/sample/uitest/components/ui_test_slipflow/ui_test_slipflow.cpp [new file with mode: 0644]
code/sdk/middleware/services/gui/uikit/sample/uitest/components/ui_test_slipflow/ui_test_slipflow.h [new file with mode: 0644]
code/sdk/middleware/services/gui/uikit/sample/uitest/framework/src/test_case_list_adapter.cpp
code/sdk/middleware/services/gui/uikit/ui/frameworks/common/input_device_manager.cpp
code/sdk/middleware/services/gui/uikit/ui/frameworks/common/screen.cpp
code/sdk/middleware/services/gui/uikit/ui/frameworks/components/ui_abstract_scroll.cpp
code/sdk/middleware/services/gui/uikit/ui/frameworks/components/ui_canvas.cpp
code/sdk/middleware/services/gui/uikit/ui/frameworks/components/ui_label.cpp
code/sdk/middleware/services/gui/uikit/ui/frameworks/components/ui_list.cpp
code/sdk/middleware/services/gui/uikit/ui/frameworks/components/ui_qrcode.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/frameworks/dock/focus_manager.cpp
code/sdk/middleware/services/gui/uikit/ui/interfaces/innerkits/common/input_device_manager.h
code/sdk/middleware/services/gui/uikit/ui/interfaces/innerkits/dock/rotate_input_device.h
code/sdk/middleware/services/gui/uikit/ui/interfaces/kits/components/ui_abstract_scroll.h
code/sdk/middleware/services/gui/uikit/ui/interfaces/kits/components/ui_canvas.h
code/sdk/middleware/services/gui/uikit/ui/interfaces/kits/components/ui_label.h
code/sdk/middleware/services/gui/uikit/ui/interfaces/kits/components/ui_view.h
code/sdk/middleware/services/gui/uikit/utils/frameworks/trans_affine.cpp [new file with mode: 0644]
code/sdk/middleware/services/gui/uikit/utils/interfaces/kits/gfx_utils/graphic_math.h
code/sdk/middleware/services/gui/uikit/utils/interfaces/kits/gfx_utils/image_info.h
code/sdk/middleware/services/gui/uikit/utils/interfaces/kits/gfx_utils/trans_affine.h [new file with mode: 0644]
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/utils/codeloader/private/codeloader_execute_command_memory_commands.c
code/sdk/middleware/utils/fs/vfs/brandy-auto-ota-cli/libx_vfs_private.a
code/sdk/middleware/utils/fs/vfs/brandy-auto-ota-ser/libx_vfs_private.a
code/sdk/middleware/utils/fs/vfs/brandy-native-js-r/libx_vfs_private.a
code/sdk/middleware/utils/fs/vfs/brandy-native-js/libx_vfs_private.a
code/sdk/middleware/utils/fs/vfs/brandy-target1-r/libx_vfs_private.a
code/sdk/middleware/utils/fs/vfs/brandy-target1/libx_vfs_private.a
code/sdk/middleware/utils/fs/vfs/brandy-target3-r/libx_vfs_private.a
code/sdk/middleware/utils/fs/vfs/brandy-target3/libx_vfs_private.a
code/sdk/middleware/utils/fs/vfs/brandy-target4-r/libx_vfs_private.a
code/sdk/middleware/utils/fs/vfs/brandy-target4/libx_vfs_private.a
code/sdk/middleware/utils/fs/vfs/brandy-target5-r/libx_vfs_private.a
code/sdk/middleware/utils/fs/vfs/brandy-target5/libx_vfs_private.a
code/sdk/middleware/utils/fs/vfs/brandy-xts-r/libx_vfs_private.a
code/sdk/middleware/utils/fs/vfs/brandy-xts/libx_vfs_private.a
code/sdk/middleware/utils/fs/vfs/testsuite-brandy-sdk/libx_vfs_private.a
code/sdk/middleware/utils/fs/yaffs2/brandy-auto-ota-cli/libfs_yaffs2.a
code/sdk/middleware/utils/fs/yaffs2/brandy-auto-ota-ser/libfs_yaffs2.a
code/sdk/middleware/utils/fs/yaffs2/brandy-native-js-r/libfs_yaffs2.a
code/sdk/middleware/utils/fs/yaffs2/brandy-native-js/libfs_yaffs2.a
code/sdk/middleware/utils/fs/yaffs2/brandy-target1-r/libfs_yaffs2.a
code/sdk/middleware/utils/fs/yaffs2/brandy-target1/libfs_yaffs2.a
code/sdk/middleware/utils/fs/yaffs2/brandy-target3-r/libfs_yaffs2.a
code/sdk/middleware/utils/fs/yaffs2/brandy-target3/libfs_yaffs2.a
code/sdk/middleware/utils/fs/yaffs2/brandy-target4-r/libfs_yaffs2.a
code/sdk/middleware/utils/fs/yaffs2/brandy-target4/libfs_yaffs2.a
code/sdk/middleware/utils/fs/yaffs2/brandy-target5-r/libfs_yaffs2.a
code/sdk/middleware/utils/fs/yaffs2/brandy-target5/libfs_yaffs2.a
code/sdk/middleware/utils/fs/yaffs2/brandy-xts-r/libfs_yaffs2.a
code/sdk/middleware/utils/fs/yaffs2/brandy-xts/libfs_yaffs2.a
code/sdk/middleware/utils/fs/yaffs2/testsuite-brandy-sdk/libfs_yaffs2.a
code/sdk/middleware/utils/nv/nv_storage_lib/nv_async_store.c
code/sdk/middleware/utils/nv/nv_storage_lib/nv_async_store.h
code/sdk/open_source/openharmony/foundation/aafwk/aafwk_lite/brandy-auto-ota-cli/libams.a
code/sdk/open_source/openharmony/foundation/aafwk/aafwk_lite/brandy-auto-ota-ser/libams.a
code/sdk/open_source/openharmony/foundation/aafwk/aafwk_lite/brandy-native-js/libams.a
code/sdk/open_source/openharmony/foundation/aafwk/aafwk_lite/brandy-xts/libams.a
code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/CMakeLists.txt
code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/base/js_fwk_common.h
code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/brandy-auto-ota-cli/libace.a
code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/brandy-auto-ota-ser/libace.a
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/canvas_component.cpp
code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/components/canvas_component.h
code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/components/component.cpp
code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/components/image_component.cpp
code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/components/image_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/ace/ace_engine_lite/modules/network_module.cpp [new file with mode: 0644]
code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/network_module.h [new file with mode: 0644]
code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/ohos_module_config.h
code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/presets/image_module.cpp [new file with mode: 0644]
code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/presets/image_module.h [new file with mode: 0644]
code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/presets/intl_module.cpp
code/sdk/open_source/openharmony/foundation/appexecfwk/appexecfwk_lite/brandy-auto-ota-cli/libbms.a
code/sdk/open_source/openharmony/foundation/appexecfwk/appexecfwk_lite/brandy-auto-ota-ser/libbms.a
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/third_party/jerryscript/brandy-auto-ota-cli/libjerryscript.a
code/sdk/open_source/openharmony/third_party/jerryscript/brandy-auto-ota-ser/libjerryscript.a
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/bt_sample/br_profile/sample_hfp_hf_service.c
code/sdk/protocol/bt/host/bt/bts/bt_sample/br_profile/sample_spp_service.c
code/sdk/protocol/bt/host/bt/bts/bt_sample/bt_core/sample_bts_gap.c
code/sdk/tools/pkg/bin/brandy/bt.bin
code/sdk/tools/pkg/bin/brandy/dsp/max/dsp_main.bin
code/sdk/tools/pkg/bin/brandy/dsp/mini/dsp_main.bin
code/sdk/tools/pkg/bin/brandy/dsp/normal/dsp_main.bin
code/sdk/tools/pkg/chip_packet/brandy/packet.py
code/sdk/tools/pkg/packet.py
patch_602_0812_to_0911.txt [new file with mode: 0644]

index de8c7f7..f96632f 100644 (file)
@@ -148,7 +148,6 @@ set(SOURCES
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/dropdown/DropDownCardPage1.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/dropdown/DropDownCardPage2.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/ModelListenerSample.cpp
-    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/PresenterTask.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/HealthModel.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/PullUpDownView.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/ConnectedStatusView.cpp
@@ -555,6 +554,7 @@ set(SOURCES
     ${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_slipflow/ui_test_slipflow.cpp
     ${UI_SAMPLE_ROOT}/components/ui_test_kaleidoscope/ui_test_kaleidoscope.cpp
 
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/dial/DialRotateImgView.cpp
index 0d0d069..15a3e09 100644 (file)
@@ -41,7 +41,6 @@
 #include "BluetoothPresenter.h"
 #include "PlayersModel.h"
 #include "HealthModel.h"
-#include "PresenterTask.h"
 #include "MainCompassPresenter.h"
 #include "MainCompassView.h"
 #include "CallerLogModel.h"
@@ -479,7 +478,7 @@ namespace OHOS
             /*加载安全模式Slice*/
             InitSafeModeSlice();
             NativeAbility::GetInstance().SetDefaultSliceId(VIEW_SAFE_MODE);
-            PresenterTask::GetInstance()->Init();
+            // PresenterTask::GetInstance()->Init();
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "safe_mode is enter!");
         }
         else if (mode == LaunchMode::NORMAL_MODE)
@@ -505,7 +504,7 @@ namespace OHOS
             InitBtHeadsetEvent(); // 蓝牙ct和tg适配初始化
             InitAllNativeSlices();
             CallerLogModel::GetInstance()->InitPhoneService();
-            PresenterTask::GetInstance()->Init();
+            // PresenterTask::GetInstance()->Init();
             PlayersModel::GetInstance()->AudioInit();
             ActivityModel::GetInstance()->Init();
             ScreenModels::GetInstance()->InitKvStorage();
index 00057bc..cc25e60 100644 (file)
@@ -226,7 +226,7 @@ static bd_addr_t *BtAvrcpSrvGetActiveAddr(void)
 \r
 void ConnectTgStateChangedCallback(const bd_addr_t *bdAddr, profile_connect_state_t state)\r
 {\r
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "avrcp tg update conn stat:%u", state);\r
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "avrcp tg update conn stat:%u", state);\r
     if (bdAddr == nullptr) {\r
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bdaddr nullptr");\r
         return;\r
@@ -325,15 +325,19 @@ static void BtAvrcpCtSupportEventCallback(const bd_addr_t *bd_addr, avrcp_ct_sup
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "null pointer\n");\r
         return;\r
     }\r
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "get event list:");\r
+\r
     for (uint8_t i = 0; i < event->event_num; i++) {\r
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, " 0x%x ", event->event_id[i]);\r
+        if (event->event_id[i] == AVRCP_NOTIFY_EVENT_VOLUME_CHANGED) {\r
+            int ret = avrcp_ct_register_notification(bd_addr, event->event_id[i], 0);\r
+            WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "register event_id: 0x%x, ret = 0x%x", event->event_id[i], ret);\r
+        }\r
     }\r
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "\n");\r
 \r
     for (uint8_t i = 0; i < event->event_num; i++) {\r
-        avrcp_ct_register_notification(bd_addr, event->event_id[i], 0);\r
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "register event_id: 0x%x\n", event->event_id[i]);\r
+        if (event->event_id[i] != AVRCP_NOTIFY_EVENT_VOLUME_CHANGED) {\r
+            int ret = avrcp_ct_register_notification(bd_addr, event->event_id[i], 0);\r
+            WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "register event_id: 0x%x, ret = 0x%x", event->event_id[i], ret);\r
+        }\r
     }\r
 }\r
 \r
index 68612e5..79067de 100644 (file)
@@ -655,6 +655,11 @@ void BluetoothModel::SetAdvStartState(bool state)
 \r
 int BluetoothModel::ConnectRemoteDevice(const bd_addr_t *addr)\r
 {\r
+    /* 恢厂后耳机连接要开启BT广播否则会导致AVRCP无法音量控制 */\r
+    bool ret = gap_br_set_bt_scan_mode(GAP_SCAN_MODE_CONNECTABLE, 60);\r
+    if (!ret) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ConnectRemoteDevice gap_br_set_bt_scan_mode ret = 0x%x", ret);\r
+    }\r
     errcode_t retVal = gap_connect_remote_device(addr);\r
     (void)memcpy_s(&remoteConnectAddr, sizeof(bd_addr_t), addr, sizeof(bd_addr_t));\r
     return retVal;\r
@@ -785,7 +790,7 @@ void BtGapPairStatusChangedCallback(const bd_addr_t *bdAddr, int status)
     // }\r
     // uapi_a2dp_snk_connect();\r
     // a2dp_snk_connect(bdAddr);\r
-    if(cm_custom_ble_service_on_flag() && !get_ble_pair()&& (status == GAP_PAIR_PAIRED))\r
+    if(uapi_dev_runtime_get_bt_powerstat() && !get_ble_pair()&& (status == GAP_PAIR_PAIRED))\r
     {\r
         send_pair_succ((bd_addr_t*)bdAddr);\r
     //     if(cm_get_A2DP_switch() || cm_get_HFP_switch())\r
@@ -1075,13 +1080,15 @@ void GapAclStateChangedCallback(const bd_addr_t *bdAddr, gap_acl_state_t state,
     //     ALC_connect_A2DP_flag=0;\r
     // }\r
 \r
-    if ((gap_get_device_class(bdAddr) & 0x200) != 0) {\r
+    static bd_addr_t gapAclConnectAddr{0}; /* 连接后保存手机地址,手表清除手机配对后查询不到class比较手机地址 */\r
+    if ((gap_get_device_class(bdAddr) & 0x200) != 0 || memcmp(gapAclConnectAddr.addr, bdAddr->addr, BD_ADDR_LEN) == 0) {\r
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GapAclStateChangedCallback: Mobile Phone Device");\r
         if (state == GAP_ACL_STATE_DISCONNECTED) {\r
             /* 通知msg_center,ble状态仍用bt状态,此处不区分 */\r
             SendMsgToMsgCenterService(BT_DISCONNECTED_TO_MSGCENTER, 0, nullptr, 0);\r
             SendMsgToUIService(BT_DISCONNECTED_TO_UI, 0, nullptr, 0);\r
         } else if (state == GAP_ACL_STATE_CONNECTED) {\r
+            (void)memcpy_s(gapAclConnectAddr.addr, BD_ADDR_LEN, bdAddr->addr, BD_ADDR_LEN);\r
             SendMsgToMsgCenterService(BT_CONNECTED_TO_MSGCENTER, 0, nullptr, 0);\r
             SendMsgToUIService(BT_CONNECTED_TO_UI, 0, nullptr, 0);\r
         }\r
@@ -1134,7 +1141,8 @@ static void A2dpSrcConnectstateChanged(bd_addr_t *bdAddr, int connState)
         return;\r
     }\r
     if (connState == PROFILE_STATE_CONNECTED) {\r
-        avrcp_ct_connect(bdAddr);\r
+        uint32_t ret = avrcp_ct_connect(bdAddr);\r
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "avrcp_ct_connect ret = 0x%x", ret);\r
         PhoneAudioManagerSetDeviceConnState(OUT_BLUETOOTH_A2DP, AUDIO_DEVICE_CONNECTED);\r
         GraphicService::GetInstance()->PostGraphicEvent(std::bind(ACLConnectionSuss, *bdAddr));\r
         SendMsgToUIService(EARPHONE_CONNECTED_TO_UI, 0, nullptr, 0);\r
index b6d37a3..9e14a51 100644 (file)
 #include "common/task.h"
 
 namespace OHOS {
-class ModelListenerSample : public HeapBase {
+class ModelListenerSample : public Task {
 public:
     ModelListenerSample();
     virtual ~ModelListenerSample();
     virtual void Notify(void) = 0;
     virtual void OnTickEvent(void) {};
-    void Callback();
+    void Callback() override;
 };
 }
 #endif
diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/include/PresenterTask.h b/code/sdk/application/wearable/fd230app/nativeui/main/include/PresenterTask.h
deleted file mode 100644 (file)
index e655268..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-/*\r
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
- * Description: Presenter task\r
- * Create: 2021-12-22\r
- */\r
-\r
-#ifndef PRESENTER_TASK_H\r
-#define PRESENTER_TASK_H\r
-#include "common/task.h"\r
-\r
-namespace OHOS {\r
-class ModelListenerSample;\r
-class PresenterTask : public Task {\r
-public:\r
-    void SetModelListener(ModelListenerSample* listener);\r
-    void Callback() override;\r
-    static PresenterTask* GetInstance();\r
-    void Init() override;\r
-    ModelListenerSample* taskListener{nullptr};\r
-};\r
-}\r
-#endif
\ No newline at end of file
index ba20d79..6792762 100644 (file)
@@ -21,7 +21,6 @@
 #include <iostream>
 #include <map>
 #include "ModelDialDataFactory.h"
-#include "PresenterTask.h"
 #include "DialModelTime.h"
 #include "DialModelPower.h"
 #include "heartrate/include/HeartModel.h"
@@ -268,7 +267,7 @@ namespace OHOS
     {
         if (cardId == COMPASS)
         {
-            PresenterTask::GetInstance()->SetPeriod(DEFAULT_TASK_PERIOD);
+            SetPeriod(DEFAULT_TASK_PERIOD);
         }
         else if (cardId == WATCH_FACE)
         {
@@ -282,15 +281,15 @@ namespace OHOS
             {
                 time = DEFAULT_TASK_PERIOD;
             }
-            PresenterTask::GetInstance()->SetPeriod(time);
+            SetPeriod(time);
         }
         else if (cardId == MUSIC_PLAYER)
         {
-            PresenterTask::GetInstance()->SetPeriod(PLAYER_PERIOD);
+            SetPeriod(PLAYER_PERIOD);
         }
         else
         {
-            PresenterTask::GetInstance()->SetPeriod(MAX_PERIOD);
+            SetPeriod(MAX_PERIOD);
         }
     }
 
index 060ada9..d0d3575 100644 (file)
  */
 
 #include "ModelListenerSample.h"
-#include "PresenterTask.h"
 
 #include "wearable_log.h"
-namespace OHOS
+namespace OHOS {
+ModelListenerSample::ModelListenerSample()
 {
-    ModelListenerSample::ModelListenerSample()
-    {
-        PresenterTask::GetInstance()->SetModelListener(this);
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ModelListenerSample::ModelListenerSample");
-    }
-    ModelListenerSample::~ModelListenerSample()
-    {
-        PresenterTask::GetInstance()->SetModelListener(nullptr);
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ModelListenerSample::~ModelListenerSample");
-    }
+    Init();
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ModelListenerSample::ModelListenerSample");
+}
+ModelListenerSample::~ModelListenerSample()
+{
+    Deinit();
+    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ModelListenerSample::~ModelListenerSample");
+}
 
     void ModelListenerSample::Callback()
     {
diff --git a/code/sdk/application/wearable/fd230app/nativeui/main/src/PresenterTask.cpp b/code/sdk/application/wearable/fd230app/nativeui/main/src/PresenterTask.cpp
deleted file mode 100644 (file)
index 8707b3b..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-
-#include "ModelListenerSample.h"
-#include "PresenterTask.h"
-
-namespace OHOS {
-
-PresenterTask* PresenterTask::GetInstance() {
-    static PresenterTask PresenterTask;
-    return &PresenterTask;
-}
-
-void PresenterTask::SetModelListener(ModelListenerSample* listener)
-{
-    taskListener = listener;
-}
-
-void PresenterTask::Callback()
-{
-    if (taskListener != nullptr) {
-        taskListener->Callback();
-    }
-}
-
-void PresenterTask::Init()
-{
-    Task::Init();
-}
-
-}
\ No newline at end of file
index c0bdf7d..8dd9556 100644 (file)
@@ -401,10 +401,7 @@ static void AudioDn(void)
 
     // 建立音频下行通路
     AudioDnStart();
-    if (g_audioState == AUDIO_STREAM_START_DN) {
-        // 同步音量
-        SyncVolume();
-    }
+
     WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "[AudioDn] audioState:%d", g_audioState);
 }
 
@@ -712,6 +709,8 @@ static void ScoStateChanged(const bd_addr_t *bdAddr, hfp_sco_connect_state_t sta
             }
             break;
         case HFP_SCO_STATE_CONNECTED:
+            // 同步音量
+            SyncVolume();
             WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ScoStateChanged] SCO connected!");
             break;
 
index 3d5c1cb..de3a7f0 100644 (file)
@@ -769,13 +769,15 @@ void PlayerCallbackImpl::OnPlaybackComplete()
 {\r
     // 此处实现代码用于处理文件播放完成的事件\r
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OnPlaybackCompleten");\r
-    PlayersView *playersView = PlayersView::GetInstance();\r
-    if (playersView != nullptr) {\r
-        if (playersView->GetPlaybackProgress() != nullptr) {\r
-            playersView->GetPlaybackProgress()->SetValue(100); // 100:进度100%\r
-            playersView->GetPlaybackProgress()->Invalidate();\r
+    GraphicService::GetInstance()->PostGraphicEvent([] {\r
+        PlayersView *playersView = PlayersView::GetInstance();\r
+        if (playersView != nullptr) {\r
+            if (playersView->GetPlaybackProgress() != nullptr) {\r
+                playersView->GetPlaybackProgress()->SetValue(100); // 100:进度100%\r
+                playersView->GetPlaybackProgress()->Invalidate();\r
+            }\r
         }\r
-    }\r
+    });\r
     usleep(20000);\r
     GraphicService::GetInstance()->PostGraphicEvent(std::bind(&PlayersModel::PlaySwitching, PlayersModel::GetInstance()));\r
 }\r
index d4562b6..d352da9 100644 (file)
@@ -79,13 +79,13 @@ public:
             tempView->SetViewId(view.GetViewId());
             tempView->SetPosition(tempView->GetX(), tempView->GetY());
             rootView->Add(tempView);
-            if (backBtn_ == nullptr) {
-                backBtn_ = new TransparentBackButton();
-                backBtn_->SetPosition(0, 202, 50, 50); // 0: x position, 202: y position, 50: width and height
-            }
-            backBtn_->SetViewId(view.GetViewId());
-            rootView->Add(backBtn_);
         }
+        if (backBtn_ == nullptr) {
+            backBtn_ = new TransparentBackButton();
+            backBtn_->SetPosition(0, 202, 50, 50); // 0: x position, 202: y position, 50: width and height
+        }
+        backBtn_->SetViewId(view.GetViewId());
+        rootView->Add(backBtn_);
         rootView->Invalidate();
         return true;
     }
index 3e4da3c..326a0fb 100644 (file)
@@ -31,6 +31,7 @@
 #include "ui_test_hexagons_list/ui_test_hexagons_list.h"
 #include "ui_test_video_play/ui_test_video_play.h"
 #include "ui_test_coverflow/ui_test_coverflow.h"
+#include "ui_test_slipflow/ui_test_slipflow.h"
 #include "ui_test_kaleidoscope/ui_test_kaleidoscope.h"
 
 namespace OHOS {
@@ -57,6 +58,7 @@ void UITestGroup::SetUpTestCase()
     testCaseList_->PushBack(TestCaseInfo{"消息", new UITestMessage()});
     testCaseList_->PushBack(TestCaseInfo{"呼吸效果", new UITestBreath()});
     testCaseList_->PushBack(TestCaseInfo{"覆盖流", new UITestCoverflow()});
+       testCaseList_->PushBack(TestCaseInfo{"滑动流", new UITestSlipflow()});
     testCaseList_->PushBack(TestCaseInfo{"万花筒", new UITestKaleidoscope()});
 
 #if ENABLE_VGU_ENGINE && CAPABILITY_HWDRAW_PATH
index f62809e..d2fed71 100755 (executable)
@@ -67,7 +67,7 @@ namespace OHOS
         {
             return;
         }
-        InputDeviceManager::GetInstance()->ClearPressableViews();
+        InputDeviceManager::GetInstance()->ClearInputDeviceState();
         Slice *nextSlice = node->value_.proxy->CreateSlice();
         if (nextSlice == nullptr)
         {
@@ -143,18 +143,38 @@ namespace OHOS
             return;
             }
         */
-        if (osal_atomic_read(&transitionCount_) <= 0)
-        {
-            osal_atomic_inc(&transitionCount_);
-            // onStop释放当前页面需要和当前页面的事件监听异步执行,否则会出现自己杀掉自己的情况
-            // 使用图形服务的PostGraphicEvent方法异步执行PostChangeSlice,以避免在页面事件监听时出现当前页面自我销毁的情况。
-            GraphicService::GetInstance()->PostGraphicEvent(std::bind(&Ability::PostChangeSlice, this, targetSliceId,
-                                                                      type, priority));
-        }
+               
+               if (type == TransitionType::TRANSITION_INVALID) {
+        GraphicService::GetInstance()->PostGraphicEvent(std::bind(&Ability::PostChangeSlice, this, targetSliceId,
+            type, priority));
+       } else {
+               if (osal_atomic_read(&transitionCount_) <= 0) {
+                   osal_atomic_inc(&transitionCount_);
+                   // onStop释放当前页面需要和当前页面的事件监听异步执行,否则会出现自己杀掉自己的情况
+                   // 使用图形服务的PostGraphicEvent方法异步执行PostChangeSlice,以避免在页面事件监听时出现当前页面自我销毁的情况。
+                   GraphicService::GetInstance()->PostGraphicEvent(std::bind(&Ability::PostChangeSlice, this, targetSliceId,
+                                                                             type, priority));
+               } else {
+                   GRAPHIC_LOGE("ChangeSlice failed! targetSliceId = %u, transitionCount_ = %d",
+                       targetSliceId, osal_atomic_read(&transitionCount_));
+               }
+               }
     }
 
     void Ability::PostChangeSlice(const uint16_t targetSliceId, TransitionType type, const uint16_t priority)
     {
+       
+#ifdef JS_ENABLE
+    ElementName *elementName = OHOS::AbilityMsClient::GetInstance().GetTopAbility();
+    if (elementName != nullptr && strcmp(elementName->bundleName, "com.huawei.launcher") != 0) {
+        OHOS::AbilityMsClient::GetInstance().ForceStop(elementName->bundleName);
+        targetSliceIdFromJS_ = targetSliceId;
+        if (type != TransitionType::TRANSITION_INVALID) {
+            osal_atomic_dec(&transitionCount_);
+        }
+        return;
+    }
+#endif
         /*
             1.首先检查当前Slice是否存在,并验证transitionId的有效性。
             如果当前存在一个有效的Slice,并且transitionId合法,则调用sliceTransition_的SaveCurrentSnapshot方法保存当前Slice的快照,
@@ -183,6 +203,7 @@ namespace OHOS
             if (!sliceTransition_.SaveCurrentSnapshot(curSlice_.slice->GetSliceContainer()))
             {
                 useTransition = false;
+            osal_atomic_dec(&transitionCount_);
             }
             StopSlice();
         }
@@ -196,16 +217,7 @@ namespace OHOS
         printf("*******************next slice id is %d*****************\r\n", targetSliceId);
 #endif
         // slice页面跳转,先onstop,再onstart.在一个线程同步执行绘制,不会出现闪屏现象
-#ifdef JS_ENABLE
-        ElementName *elementName = OHOS::AbilityMsClient::GetInstance().GetTopAbility();
-        if (elementName != nullptr && strcmp(elementName->bundleName, "com.huawei.launcher") != 0)
-        {
-            OHOS::AbilityMsClient::GetInstance().ForceStop(elementName->bundleName);
-            targetSliceIdFromJS_ = targetSliceId;
-            osal_atomic_dec(&transitionCount_);
-            return;
-        }
-#endif
+
         /*
             调用StartSlice函数以启动新的指定的Slice。
             StartSlice函数内部会先检查是否存在目标Slice的Proxy,并通过Proxy创建新的实例,
@@ -223,11 +235,7 @@ namespace OHOS
             {
                 sliceTransition_.Transition(prevSlice_.slice->GetSliceContainer(), curSlice_.slice->GetSliceContainer());
             }
-        }
-        else
-        {
-            osal_atomic_dec(&transitionCount_);
-        }
+       }
     }
 
     void Ability::OnTransitionEnd()
index 85ce56b..3dfc09e 100755 (executable)
@@ -99,7 +99,6 @@ set(SOURCES
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/MainModel.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/MainPresenterSample.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/ModelListenerSample.cpp
-    ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/PresenterTask.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/HealthModel.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/PullUpDownView.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/applist/src/AppItemView.cpp
@@ -274,6 +273,7 @@ set(SOURCES
     ${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_slipflow/ui_test_slipflow.cpp
     ${UI_SAMPLE_ROOT}/components/ui_test_kaleidoscope/ui_test_kaleidoscope.cpp
 
     ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/dial/DialRotateImgView.cpp
index 034db97..4762862 100755 (executable)
@@ -40,7 +40,6 @@
 #include "BluetoothPresenter.h"
 #include "PlayersModel.h"
 #include "HealthModel.h"
-#include "PresenterTask.h"
 #include "MainCompassPresenter.h"
 #include "MainCompassView.h"
 #include "CallerLogModel.h"
index c3e8a52..c5773ba 100755 (executable)
@@ -228,8 +228,6 @@ void BluetoothEarPhoneView::BtEnable()
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BluetoothEarPhoneView::BtEnable Bt is Discovering");\r
         return;\r
     } else {\r
-        results = gap_br_set_bt_scan_mode(GAP_SCAN_MODE_NONE, 0);\r
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "gap_br_set_bt_scan_mode results %d", results);\r
         results = gap_br_set_inquiry_paramters(DEVICE_MAJOR_CLASS_AUDIO_VIDEO, 0);\r
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "gap_br_set_inquiry_paramters results %d", results);\r
         results = gap_br_start_discovery();\r
index 00057bc..cc25e60 100755 (executable)
@@ -226,7 +226,7 @@ static bd_addr_t *BtAvrcpSrvGetActiveAddr(void)
 \r
 void ConnectTgStateChangedCallback(const bd_addr_t *bdAddr, profile_connect_state_t state)\r
 {\r
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "avrcp tg update conn stat:%u", state);\r
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "avrcp tg update conn stat:%u", state);\r
     if (bdAddr == nullptr) {\r
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bdaddr nullptr");\r
         return;\r
@@ -325,15 +325,19 @@ static void BtAvrcpCtSupportEventCallback(const bd_addr_t *bd_addr, avrcp_ct_sup
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "null pointer\n");\r
         return;\r
     }\r
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "get event list:");\r
+\r
     for (uint8_t i = 0; i < event->event_num; i++) {\r
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, " 0x%x ", event->event_id[i]);\r
+        if (event->event_id[i] == AVRCP_NOTIFY_EVENT_VOLUME_CHANGED) {\r
+            int ret = avrcp_ct_register_notification(bd_addr, event->event_id[i], 0);\r
+            WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "register event_id: 0x%x, ret = 0x%x", event->event_id[i], ret);\r
+        }\r
     }\r
-    WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "\n");\r
 \r
     for (uint8_t i = 0; i < event->event_num; i++) {\r
-        avrcp_ct_register_notification(bd_addr, event->event_id[i], 0);\r
-        WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "register event_id: 0x%x\n", event->event_id[i]);\r
+        if (event->event_id[i] != AVRCP_NOTIFY_EVENT_VOLUME_CHANGED) {\r
+            int ret = avrcp_ct_register_notification(bd_addr, event->event_id[i], 0);\r
+            WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "register event_id: 0x%x, ret = 0x%x", event->event_id[i], ret);\r
+        }\r
     }\r
 }\r
 \r
index 55620f9..57bdeff 100755 (executable)
@@ -503,6 +503,11 @@ void BluetoothModel::SetAdvStartState(bool state)
 \r
 int BluetoothModel::ConnectRemoteDevice(const bd_addr_t *addr)\r
 {\r
+    /* 恢厂后耳机连接要开启BT广播否则会导致AVRCP无法音量控制 */\r
+    bool ret = gap_br_set_bt_scan_mode(GAP_SCAN_MODE_CONNECTABLE, 60);\r
+    if (!ret) {\r
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ConnectRemoteDevice gap_br_set_bt_scan_mode ret = 0x%x", ret);\r
+    }\r
     errcode_t retVal = gap_connect_remote_device(addr);\r
     (void)memcpy_s(&remoteConnectAddr, sizeof(bd_addr_t), addr, sizeof(bd_addr_t));\r
     return retVal;\r
@@ -845,13 +850,15 @@ void GapAclStateChangedCallback(const bd_addr_t *bdAddr, gap_acl_state_t state,
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "addr: %02x%02x%02x%02x%02x%02x",\r
         bdAddr->addr[5], bdAddr->addr[4], bdAddr->addr[3], /* mac下标 0 1 2 3 4 5 */\r
         bdAddr->addr[2], bdAddr->addr[1], bdAddr->addr[0]); /* mac下标 0 1 2 3 4 5 */\r
-    if ((gap_get_device_class(bdAddr) & 0x200) != 0) {\r
+    static bd_addr_t gapAclConnectAddr{0}; /* 连接后保存手机地址,手表清除手机配对后查询不到class比较手机地址 */\r
+    if ((gap_get_device_class(bdAddr) & 0x200) != 0 || memcmp(gapAclConnectAddr.addr, bdAddr->addr, BD_ADDR_LEN) == 0) {\r
         WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "GapAclStateChangedCallback: Mobile Phone Device");\r
         if (state == GAP_ACL_STATE_DISCONNECTED) {\r
             /* 通知msg_center,ble状态仍用bt状态,此处不区分 */\r
             SendMsgToMsgCenterService(BT_DISCONNECTED_TO_MSGCENTER, 0, nullptr, 0);\r
             SendMsgToUIService(BT_DISCONNECTED_TO_UI, 0, nullptr, 0);\r
         } else if (state == GAP_ACL_STATE_CONNECTED) {\r
+            (void)memcpy_s(gapAclConnectAddr.addr, BD_ADDR_LEN, bdAddr->addr, BD_ADDR_LEN);\r
             SendMsgToMsgCenterService(BT_CONNECTED_TO_MSGCENTER, 0, nullptr, 0);\r
             SendMsgToUIService(BT_CONNECTED_TO_UI, 0, nullptr, 0);\r
         }\r
@@ -904,7 +911,8 @@ static void A2dpSrcConnectstateChanged(bd_addr_t *bdAddr, int connState)
         return;\r
     }\r
     if (connState == PROFILE_STATE_CONNECTED) {\r
-        avrcp_ct_connect(bdAddr);\r
+        uint32_t ret = avrcp_ct_connect(bdAddr);\r
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "avrcp_ct_connect ret = 0x%x", ret);\r
         PhoneAudioManagerSetDeviceConnState(OUT_BLUETOOTH_A2DP, AUDIO_DEVICE_CONNECTED);\r
         GraphicService::GetInstance()->PostGraphicEvent(std::bind(ACLConnectionSuss, *bdAddr));\r
     }\r
index 6444c4f..3484cb6 100755 (executable)
 #include "common/task.h"\r
 \r
 namespace OHOS {\r
-class ModelListenerSample : public HeapBase {\r
+class ModelListenerSample : public Task {\r
 public:\r
     ModelListenerSample();\r
     virtual ~ModelListenerSample();\r
     virtual void Notify(void) = 0;\r
     virtual void OnTickEvent(void) {};\r
-    void Callback();\r
+    void Callback() override;\r
 };\r
 }\r
 #endif\r
diff --git a/code/sdk/application/wearable/nativeapp/nativeui/main/include/PresenterTask.h b/code/sdk/application/wearable/nativeapp/nativeui/main/include/PresenterTask.h
deleted file mode 100755 (executable)
index e655268..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-/*\r
- * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.\r
- * Description: Presenter task\r
- * Create: 2021-12-22\r
- */\r
-\r
-#ifndef PRESENTER_TASK_H\r
-#define PRESENTER_TASK_H\r
-#include "common/task.h"\r
-\r
-namespace OHOS {\r
-class ModelListenerSample;\r
-class PresenterTask : public Task {\r
-public:\r
-    void SetModelListener(ModelListenerSample* listener);\r
-    void Callback() override;\r
-    static PresenterTask* GetInstance();\r
-    void Init() override;\r
-    ModelListenerSample* taskListener{nullptr};\r
-};\r
-}\r
-#endif
\ No newline at end of file
index adc6424..23ca42c 100755 (executable)
@@ -21,7 +21,6 @@
 #include <iostream>
 #include <map>
 #include "ModelDialDataFactory.h"
-#include "PresenterTask.h"
 #include "DialModelTime.h"
 #include "DialViewGroup.h"
 #include "ui_service.h"
@@ -154,7 +153,7 @@ void MainPresenterSample::SetPage(int8_t id)
 void MainPresenterSample::SetTaskPeroid(CardId cardId)
 {
     if (cardId == COMPASS) {
-        PresenterTask::GetInstance()->SetPeriod(DEFAULT_TASK_PERIOD);
+        SetPeriod(DEFAULT_TASK_PERIOD);
     } else if (cardId == WATCH_FACE) {
         uint32_t time;
         DialSetting &setting = GetDialSetting();
@@ -163,11 +162,11 @@ void MainPresenterSample::SetTaskPeroid(CardId cardId)
         } else {
             time = DEFAULT_TASK_PERIOD;
         }
-        PresenterTask::GetInstance()->SetPeriod(time);
+        SetPeriod(time);
     } else if (cardId == MUSIC_PLAYER) {
-        PresenterTask::GetInstance()->SetPeriod(PLAYER_PERIOD);
+        SetPeriod(PLAYER_PERIOD);
     } else {
-        PresenterTask::GetInstance()->SetPeriod(MAX_PERIOD);
+        SetPeriod(MAX_PERIOD);
     }
 }
 
index ab4844c..26c67fb 100755 (executable)
  */
 
 #include "ModelListenerSample.h"
-#include "PresenterTask.h"
 
 #include "wearable_log.h"
 namespace OHOS {
 ModelListenerSample::ModelListenerSample()
 {
-    PresenterTask::GetInstance()->SetModelListener(this);
-    PresenterTask::GetInstance()->Init();
+    Init();
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ModelListenerSample::ModelListenerSample");
 }
 ModelListenerSample::~ModelListenerSample()
 {
-    PresenterTask::GetInstance()->Deinit();
-    PresenterTask::GetInstance()->SetModelListener(nullptr);
+    Deinit();
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ModelListenerSample::~ModelListenerSample");
 }
 
diff --git a/code/sdk/application/wearable/nativeapp/nativeui/main/src/PresenterTask.cpp b/code/sdk/application/wearable/nativeapp/nativeui/main/src/PresenterTask.cpp
deleted file mode 100755 (executable)
index 1b1c619..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-\r
-#include "ModelListenerSample.h"\r
-#include "PresenterTask.h"\r
-\r
-namespace OHOS {\r
-\r
-PresenterTask* PresenterTask::GetInstance()\r
-{\r
-    static PresenterTask PresenterTask;\r
-    return &PresenterTask;\r
-}\r
-\r
-void PresenterTask::SetModelListener(ModelListenerSample* listener)\r
-{\r
-    taskListener = listener;\r
-}\r
-\r
-void PresenterTask::Callback()\r
-{\r
-    if (taskListener != nullptr) {\r
-        taskListener->Callback();\r
-    }\r
-}\r
-\r
-void PresenterTask::Init()\r
-{\r
-    Task::Init();\r
-}\r
-\r
-}
\ No newline at end of file
index 9e1920f..091647e 100755 (executable)
@@ -390,10 +390,7 @@ static void AudioDn(void)
 
     // 建立音频下行通路
     AudioDnStart();
-    if (g_audioState == AUDIO_STREAM_START_DN) {
-        // 同步音量
-        SyncVolume();
-    }
+
     WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "[AudioDn] audioState:%d", g_audioState);
 }
 
@@ -674,6 +671,8 @@ static void ScoStateChanged(const bd_addr_t *bdAddr, hfp_sco_connect_state_t sta
             }
             break;
         case HFP_SCO_STATE_CONNECTED:
+            // 同步音量
+            SyncVolume();
             WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[ScoStateChanged] SCO connected!");
             break;
 
index 98510eb..6ee51a4 100755 (executable)
@@ -660,13 +660,15 @@ void PlayerCallbackImpl::OnPlaybackComplete()
 {
     // 此处实现代码用于处理文件播放完成的事件
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "OnPlaybackCompleten");
-    PlayersView *playersView = PlayersView::GetInstance();
-    if (playersView != nullptr) {
-        if (playersView->GetPlaybackProgress() != nullptr) {
-            playersView->GetPlaybackProgress()->SetValue(100); // 100:进度100%
-            playersView->GetPlaybackProgress()->Invalidate();
+    GraphicService::GetInstance()->PostGraphicEvent([] {
+        PlayersView *playersView = PlayersView::GetInstance();
+        if (playersView != nullptr) {
+            if (playersView->GetPlaybackProgress() != nullptr) {
+                playersView->GetPlaybackProgress()->SetValue(100); // 100:进度100%
+                playersView->GetPlaybackProgress()->Invalidate();
+            }
         }
-    }
+    });
     usleep(20000);
     GraphicService::GetInstance()->PostGraphicEvent(std::bind(&PlayersModel::PlaySwitching, PlayersModel::GetInstance()));
 }
index d4562b6..d352da9 100755 (executable)
@@ -79,13 +79,13 @@ public:
             tempView->SetViewId(view.GetViewId());
             tempView->SetPosition(tempView->GetX(), tempView->GetY());
             rootView->Add(tempView);
-            if (backBtn_ == nullptr) {
-                backBtn_ = new TransparentBackButton();
-                backBtn_->SetPosition(0, 202, 50, 50); // 0: x position, 202: y position, 50: width and height
-            }
-            backBtn_->SetViewId(view.GetViewId());
-            rootView->Add(backBtn_);
         }
+        if (backBtn_ == nullptr) {
+            backBtn_ = new TransparentBackButton();
+            backBtn_->SetPosition(0, 202, 50, 50); // 0: x position, 202: y position, 50: width and height
+        }
+        backBtn_->SetViewId(view.GetViewId());
+        rootView->Add(backBtn_);
         rootView->Invalidate();
         return true;
     }
index 3e4da3c..326a0fb 100755 (executable)
@@ -31,6 +31,7 @@
 #include "ui_test_hexagons_list/ui_test_hexagons_list.h"
 #include "ui_test_video_play/ui_test_video_play.h"
 #include "ui_test_coverflow/ui_test_coverflow.h"
+#include "ui_test_slipflow/ui_test_slipflow.h"
 #include "ui_test_kaleidoscope/ui_test_kaleidoscope.h"
 
 namespace OHOS {
@@ -57,6 +58,7 @@ void UITestGroup::SetUpTestCase()
     testCaseList_->PushBack(TestCaseInfo{"消息", new UITestMessage()});
     testCaseList_->PushBack(TestCaseInfo{"呼吸效果", new UITestBreath()});
     testCaseList_->PushBack(TestCaseInfo{"覆盖流", new UITestCoverflow()});
+       testCaseList_->PushBack(TestCaseInfo{"滑动流", new UITestSlipflow()});
     testCaseList_->PushBack(TestCaseInfo{"万花筒", new UITestKaleidoscope()});
 
 #if ENABLE_VGU_ENGINE && CAPABILITY_HWDRAW_PATH
index 4c527ad..126a7c8 100644 (file)
@@ -2208,12 +2208,12 @@ uint8_t parse_jsonCheck_weather(uint8_t *buf,uint8_t *check)//json 格式解析
 \r
     }\r
 \r
-    if( cm_custom_ble_service_on_flag() && cm_get_HFP_switch())\r
+    if( uapi_dev_runtime_get_bt_powerstat() && cm_get_HFP_switch())\r
     uapi_pbap_cmd_start_client();\r
 \r
     bd_addr_t bdaddr={0};\r
     uapi_get_br_address(&bdaddr);\r
-    if( cm_custom_ble_service_on_flag() && (cm_get_HFP_switch()||cm_get_A2DP_switch()))\r
+    if( uapi_dev_runtime_get_bt_powerstat() && (cm_get_HFP_switch()||cm_get_A2DP_switch()))\r
     {\r
         if (false==bt_is_acl_connected(&bdaddr))\r
         {\r
index 7d580d3..a388cb1 100644 (file)
@@ -59,17 +59,16 @@ set(PRIVATE_HEADER
     ${CMAKE_CURRENT_SOURCE_DIR}/../../nativeapp/nativelauncher/include   
 )
 endif()
-if("JS_ENABLE" IN_LIST DEFINES)
 set(SOURCES
     ${CMAKE_CURRENT_SOURCE_DIR}/src/msg_center.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/src/notify/notification_manager.cpp
-    ${CMAKE_CURRENT_SOURCE_DIR}/src/jsi_utils.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/src/msg_center_protocol.cpp
 )
-else()
+
+if("JS_ENABLE" IN_LIST DEFINES)
 set(SOURCES
-    ${CMAKE_CURRENT_SOURCE_DIR}/src/msg_center.cpp
-    ${CMAKE_CURRENT_SOURCE_DIR}/src/notify/notification_manager.cpp
+    ${SOURCES}
+    ${CMAKE_CURRENT_SOURCE_DIR}/src/jsi_utils.cpp
 )
 endif()
 
@@ -118,6 +117,8 @@ set(PUBLIC_HEADER
     ${CMAKE_CURRENT_SOURCE_DIR}/include
     ${CMAKE_CURRENT_SOURCE_DIR}/include/vendor_app
     ${CMAKE_CURRENT_SOURCE_DIR}/include/ota
+    ${CMAKE_CURRENT_SOURCE_DIR}/include/hc_demo
+    ${CMAKE_CURRENT_SOURCE_DIR}/include/common
 )
 if("FD230" IN_LIST DEFINES)
 
@@ -147,7 +148,6 @@ set(PRIVATE_HEADER
     ${CMAKE_CURRENT_SOURCE_DIR}/../../fd230app/nativeui/bluetooth/include
     ${CMAKE_CURRENT_SOURCE_DIR}/../../fd230app/nativelauncher/include
     ${CMAKE_CURRENT_SOURCE_DIR}/../../fd230app/nativeui/goal/include
-    # ${CMAKE_CURRENT_SOURCE_DIR}/../../fd230app/nativelauncher/include
     ${CMAKE_CURRENT_SOURCE_DIR}/../../ohos_deps
     ${CMAKE_CURRENT_SOURCE_DIR}/../../CustomUIComponentTool/uicomponents/
     ${ROOT_DIR}/middleware/services/gui/uikit/proprietary/include
@@ -182,6 +182,7 @@ set(PRIVATE_HEADER
     ${CMAKE_CURRENT_SOURCE_DIR}/../../nativeapp/nativeui/main/include
     ${CMAKE_CURRENT_SOURCE_DIR}/../../nativeapp/nativeui/player/include
     ${CMAKE_CURRENT_SOURCE_DIR}/../../nativeapp/nativeui/bluetooth/include
+    ${CMAKE_CURRENT_SOURCE_DIR}/../../nativeapp/nativeui/key/include
     ${CMAKE_CURRENT_SOURCE_DIR}/../../nativeapp/nativelauncher/include
     ${CMAKE_CURRENT_SOURCE_DIR}/../../ohos_deps
     ${CMAKE_CURRENT_SOURCE_DIR}/../../CustomUIComponentTool/uicomponents/
@@ -223,6 +224,7 @@ set(SOURCES
     ${CMAKE_CURRENT_SOURCE_DIR}/src/notify/message_notification.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/src/notify/sleep_notification.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/src/notify/motion_recognition_notification.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/src/common/msg_center_common.cpp
 )
 else()
 set(SOURCES
index 25f166f..1587d8f 100644 (file)
Binary files a/code/sdk/application/wearable/service/msg_center/brandy-auto-ota-cli/libmsg_center.a and b/code/sdk/application/wearable/service/msg_center/brandy-auto-ota-cli/libmsg_center.a differ
index 1ed3a3d..23c0b7c 100644 (file)
Binary files a/code/sdk/application/wearable/service/msg_center/brandy-auto-ota-ser/libmsg_center.a and b/code/sdk/application/wearable/service/msg_center/brandy-auto-ota-ser/libmsg_center.a differ
index e319004..84ab43b 100755 (executable)
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 159b848..a43043a 100755 (executable)
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
diff --git a/code/sdk/application/wearable/service/msg_center/include/common/msg_center_common.h b/code/sdk/application/wearable/service/msg_center/include/common/msg_center_common.h
new file mode 100644 (file)
index 0000000..3d4bf1a
--- /dev/null
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) CompanyNameMagicTag 2021-2021. All rights reserved.
+ * Description: broadcast service api
+ * Author: CompanyName
+ * Create: 2021-11-11
+ */
+
+#ifndef MSG_CENTER_COMMON_H
+#define MSG_CENTER_COMMON_H
+
+#include "msg_center_protocol.h"
+
+#ifdef __cplusplus
+#if __cplusplus
+extern "C" {
+#endif
+#endif
+
+errcode_t msg_center_ping_rec(uint8_t cmd_id, uint8_t type, void *usr_data, uint16_t usr_len);
+
+#ifdef __cplusplus
+#if __cplusplus
+}
+#endif
+#endif
+#endif /* MSG_CENTER_COMMON_H */
diff --git a/code/sdk/application/wearable/service/msg_center/include/msg_center_customer.h b/code/sdk/application/wearable/service/msg_center/include/msg_center_customer.h
new file mode 100644 (file)
index 0000000..b150c52
--- /dev/null
@@ -0,0 +1,39 @@
+/*\r
+ * Copyright (c) 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 MSG_CENTER_CUSTOMER_H\r
+#define MSG_CENTER_CUSTOMER_H\r
+\r
+#include <cstdint>\r
+#include "service.h"\r
+#include "iunknown.h"\r
+#include "broadcast_feature.h"\r
+#include "graphic_service.h"\r
+#include "jsi/jsi_types.h"\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+\r
+#ifdef JS_ENABLE\r
+void StartJsApp(char *bundleName);\r
+void StopJsApp(char *bundleName);\r
+void MsgCenterReportBtStatusToJS(uint16_t msgId);\r
+#endif\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+#endif // MSG_CENTER_CUSTOMER_H\r
index de09054..1b2812c 100755 (executable)
@@ -13,6 +13,7 @@
 #include "soc_osal.h"
 #include "baidu_app.h"
 #include "cmsis_os2.h"
+#include "bts_le_gap.h"
 
 #ifdef __cplusplus
 #if __cplusplus
@@ -217,12 +218,19 @@ typedef enum msg_center_ota_type_id {
 
 } msg_center_ota_type_id_t;
 
+typedef enum msg_center_ping_type_id {
+    MSGCENTER_TYPE_ID_PING_REC = 0x1,
+    MSGCENTER_TYPE_ID_PING_RSP = 0x2,
+} msg_center_ping_type_id_t;
+
 typedef enum msg_center_cmd_id {
     MSGCENTER_CMD_XIAODU             = 0x1,
     MSGCENTER_CMD_NAVIGATION         = 0x2,
     MSGCENTER_CMD_VECTOR_NAVI        = 0x3,
     MSGCENTER_CMD_ALIPAY             = 0x4,
     MSGCENTER_CMD_OTA                = 0x5,
+    MSGCENTER_CMD_HC                 = 0x6,
+    MSGCENTER_CMD_PING               = 0x7,
     MSGCENTER_CMD_MAX
 } msg_center_cmd_id_t;
 
@@ -331,6 +339,8 @@ void msg_center_split_file(char *origin_file, int size, char *flist);
 void msg_center_combine_file(char *flist, char *target_file_name);
 diag_frame_fid_t msg_center_get_trans_channel(void);
 void msg_center_set_trans_channel(diag_frame_fid_t select);
+void msg_center_set_ble_conn_state(gap_ble_conn_state_t state);
+gap_ble_conn_state_t msg_center_get_ble_conn_state(void);
 
 #ifdef __cplusplus
 #if __cplusplus
diff --git a/code/sdk/application/wearable/service/msg_center/src/common/msg_center_common.cpp b/code/sdk/application/wearable/service/msg_center/src/common/msg_center_common.cpp
new file mode 100644 (file)
index 0000000..0aa7dc3
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+ * Copyright (c) CompanyNameMagicTag 2023-2023. All rights reserved.
+ * Description: ota upgrade handle.
+ * This file should be changed only infrequently and with great care.
+ */
+#include <stdio.h>
+#include "securec.h"
+#include "bts_br_gap.h"
+#include "bts_spp.h"
+#include "msg_center.h"
+#include "msg_center_protocol.h"
+#include "msg_center_cmd.h"
+#include "wearable_log.h"
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+errcode_t msg_center_ping_rec(uint8_t cmd_id, uint8_t type, void *usr_data, uint16_t usr_len)
+{
+    uint8_t tl_len = msg_center_get_tlv_tl_len(usr_data);
+    uint16_t payload_len = usr_len - tl_len;
+    uint8_t *tlv_payload = (uint8_t *)msg_center_get_tlv_payload(usr_data);
+    errcode_t ret = ERRCODE_SUCC;
+    uint8_t ping_result = 0;
+
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_MSG_CENTER, "rec_ping_from_phone\r\n");
+
+    if (msg_center_get_trans_channel() == DIAG_FRAME_FID_PHONE) {
+        ping_result = is_spp_connected(0) == true ? 1 : 0;
+    } else if (msg_center_get_trans_channel() == DIAG_FRAME_FID_BT) {
+        ping_result = msg_center_get_ble_conn_state();
+    } else {
+        ping_result = 2; /* 2用来表示异常值 */
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_MSG_CENTER, "ble or spp not connected!\r\n");
+    }
+
+    /* ping req ack */
+    ret = msg_center_send_data(cmd_id, type + 1, &ping_result, sizeof(ping_result));
+    if (ret != ERRCODE_SUCC) {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_MSG_CENTER, "send_ping_ack fail, ret = %d\r\n", ret);
+        return ERRCODE_FAIL;
+    }
+
+    return ERRCODE_SUCC;
+}
+
+#ifdef __cplusplus
+}
+#endif
\ No newline at end of file
index f5d952a..fb09588 100755 (executable)
 #include "baidu_app.h"
 #include "alipay_app.h"
 #include "msg_center_ota.h"
+#ifdef SUPPORT_HC_DEMO
+#include "msg_center_hc_demo.h"
+#endif
+#include "msg_center_common.h"
 
 #ifdef __cplusplus
 extern "C" {
@@ -111,6 +115,10 @@ msg_center_cmd_map_t g_msg_center_type_tbl[] = {
     { MSGCENTER_CMD_OTA,         MSGCENTER_TYPE_ID_OTA_UPG_CHECK,               msg_center_ota_rec_upg_check},
     { MSGCENTER_CMD_OTA,         MSGCENTER_TYPE_ID_OTA_UPG_CHECK_RESULT,        msg_center_ota_rec_upg_check_result},
 #endif
+#ifdef JS_ENABLE
+    { MSGCENTER_CMD_PING,       MSGCENTER_TYPE_ID_PING_REC,           msg_center_ping_rec},
+    { MSGCENTER_CMD_PING,       MSGCENTER_TYPE_ID_PING_RSP,           NULL},
+#endif
 };
 
 msg_center_cmd_map_t *msg_center_get_cmd_tbl_ops(uint8_t idx)
@@ -127,17 +135,15 @@ char *msg_center_get_bundle_name(uint8_t cmd_id)
 {
     switch (cmd_id) {
         case MSGCENTER_CMD_XIAODU:
-            return "com.vendor.voiceassistant";
+            return (char *)"com.vendor.voiceassistant";
         case MSGCENTER_CMD_NAVIGATION:
-            return "cn.navigate";
+            return (char *)"cn.navigate";
         case MSGCENTER_CMD_VECTOR_NAVI:
-            return "com.baidu.BaiduMap";
+            return (char *)"com.baidu.BaiduMap";
         default:
             WEARABLE_LOGI(WEARABLE_LOG_MODULE_MSG_CENTER,"msg_center_get_bundle_name: wrong cmd_id[%d]", cmd_id);
-            break;
+            return (char*)"wrong";
     }
-
-    return NULL;
 }
 
 static errcode_t msg_center_pkt_dispatch(uint8_t cmd_id, uint8_t type, void *usr_data, uint16_t usr_len)
index aa954be..d44b43a 100644 (file)
@@ -24,6 +24,9 @@
 #include "element_name.h"
 #include "want.h"
 #include "msg_center.h"
+#include "msg_center_msg.h"
+#include "msg_center_protocol.h"
+#include "baidumap.h"
 #include "common_def.h"
 #include "PhoneService.h"
 #include "power_display_service.h"
@@ -121,7 +124,7 @@ const PriorityMapper PRI_MAPPER[] = {
 #endif
     {TOPIC_EVENT_FIND_WATCH,PRIORITY_TWO},// 找手表 [2]
     {TOPIC_EVENT_CANCEL_FIND_WATCH,PRIORITY_TWO},// 取消找手表 [2]
-    {TOPIC_EVENT_DRINKREMINDER,PRIORITY_TWO},//喝水提醒 [2]
+    {TOPIC_EVENT_DRINKREMINDER,PRIORITY_THREE},//喝水提醒 [3]
     {TOPIC_EVENT_MESSAGENOTE,PRIORITY_THREE},//消息提醒 [3]
     {TOPIC_EVENT_MESSAGE_UPDATA,PRIORITY_TWO},//消息更新提醒 [3]
     {TOPIC_EVENT_SLEEPNOTE,PRIORITY_THREE},//睡眠弹窗 [3]
@@ -502,7 +505,6 @@ static SLEEP_T sleep_data = {0};
 static NAP_T nap_data = {0};
 static int state_num = 0;
 static uint32_t day_timestamp = 0;
-static uint32_t current_day = 0;
 static uint8_t fall_asleep_state_num = 0;
 #endif
 
@@ -1127,7 +1129,7 @@ void MsgCenterNotifyDrinkReminderProc(const Topic topic, Request *req)
    // unused(topic);
     unused(req);
     WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "MsgCenterNotifyDrinkReminderProc !");
-    // DrinkReminderViewEventListener::GetInstance().set_screen_on_and_vibration();
+    DrinkReminderViewEventListener::GetInstance().set_screen_on_and_vibration();
     if (CheckPriority(topic))
     {
         NotificationManager::GetInstance()->SetNotifyPriority(PRIORITY_TWO);
@@ -1248,7 +1250,6 @@ void MsgCenterNotifyInactivityProc(const Topic topic, Request *req)
         timeinfo = localtime(&rawtime);
         uapi_get_timestampe_ss(&timestamp);
         day_timestamp = timestamp - (timeinfo->tm_hour * 60 * 60 + timeinfo->tm_min * 60 + timeinfo->tm_sec);
-        current_day = timeinfo->tm_mday;
     }
 #endif
     OHOS::SLEEP_STATE_T state_data = {0};
@@ -1308,10 +1309,6 @@ void MsgCenterNotifyInactivityProc(const Topic topic, Request *req)
             if(state_num < SLEEP_STATUS_LENGTH)
             {
                 sleep_data.sleep_status[state_num].timestamp = day_timestamp + cywee_Inactivity_Info->hour * 60 * 60 + cywee_Inactivity_Info->minute * 60;
-                if(current_day != cywee_Inactivity_Info->day)
-                {
-                    sleep_data.sleep_status[state_num].timestamp -= 24 * 60 * 60;
-                }
                 sleep_data.sleep_status[state_num].stat = cywee_Inactivity_Info->status;
                 if(sleep_data.sleep_status[state_num].stat == 7 || sleep_data.sleep_status[state_num].stat == 13)
                 {
@@ -1321,7 +1318,7 @@ void MsgCenterNotifyInactivityProc(const Topic topic, Request *req)
                 if(sleep_data.sleep_status[state_num].stat == 0) //0进入睡眠  1潜睡 2深睡 3清醒 4结束睡眠 6入睡 7出睡最后一笔输出 8未出睡最后一笔输出 12快速动眼 13取消入睡
                 {
                     sleep_data.fall_asleep_timestamp = sleep_data.sleep_status[state_num].timestamp;
-                    //fall_asleep_state_num = state_num;
+                    fall_asleep_state_num = state_num;
                 }
                 else if(sleep_data.sleep_status[state_num].stat == 4)
                 {
@@ -1364,7 +1361,7 @@ void MsgCenterNotifyInactivityAccumulateTimeProc(const Topic topic, Request* req
     {
         memset(&sleep_data,0,sizeof(SLEEP_T));
         state_num = 0;
-        //fall_asleep_state_num = 0;
+        fall_asleep_state_num = 0;
         uapi_dev_runtime_set_absolute_static_status(0);
         return;
     }
@@ -1393,11 +1390,11 @@ void MsgCenterNotifyInactivityAccumulateTimeProc(const Topic topic, Request* req
     }
     else if(cywee_Inactivity_Accumulate_Time_Info->output_number == INACTIVITY_MODE_SLEEPING_ACCUMULATE_TIME_OUTPUT)
     {
-        // if(sleep_data.fall_asleep_timestamp > sleep_data.wake_up_timestamp && sleep_data.wake_up_timestamp != 0)
-        // {
-        //     sleep_data.fall_asleep_timestamp -= 24 * 60 * 60;
-        //     sleep_data.sleep_status[fall_asleep_state_num].timestamp = sleep_data.fall_asleep_timestamp;
-        // }
+        if(sleep_data.fall_asleep_timestamp > sleep_data.wake_up_timestamp)
+        {
+            sleep_data.fall_asleep_timestamp -= 24 * 60 * 60;
+            sleep_data.sleep_status[fall_asleep_state_num].timestamp = sleep_data.fall_asleep_timestamp;
+        }
 
         sleep_data.total_time = cywee_Inactivity_Accumulate_Time_Info->total_time;
         sleep_data.total_deep_sleep_time = cywee_Inactivity_Accumulate_Time_Info->total_deep_sleep_time;
@@ -1409,7 +1406,7 @@ void MsgCenterNotifyInactivityAccumulateTimeProc(const Topic topic, Request* req
         set_sleep_data(&sleep_data);
         memset(&sleep_data,0,sizeof(SLEEP_T));
         state_num = 0;
-        //fall_asleep_state_num = 0;
+        fall_asleep_state_num = 0;
     }
 #endif
     free(cywee_Inactivity_Accumulate_Time_Info);
@@ -1557,6 +1554,76 @@ bool MsgCenterNotifyProc(const Topic topic, Request* req)
     return false;
 }
 
+#ifdef JS_ENABLE
+void StartJsApp(char *bundleName)
+{
+    ElementName* topAbility = OHOS::AbilityMsClient::GetInstance().GetTopAbility();
+    if (topAbility == nullptr) {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "topAbility is null");
+        return;
+    }
+
+    if (strcmp(topAbility->bundleName, bundleName) == 0) {
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "%s is active", bundleName);
+        return;
+    }
+    // If the alarm notification is being processed, we need to disable the alarm notification first.
+    if (OHOS::NotificationManager::GetInstance()->GetNotifyPriority() == PRIORITY_TWO &&
+        OHOS::NotificationManager::GetInstance()->HasNotifyShowing()) {
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "Alarm notification needs to be disabled first.");
+        AlarmClockModel::GetInstance()->AlarmGetClockNum();
+        OHOS::AlarmPopUpPresenter::GetInstance()->DelayAlarmRing();
+        OHOS::NotificationManager::GetInstance()->StopNotify();
+    }
+    Want *want = new Want();
+    memset_s(want, sizeof(Want), 0, sizeof(Want));
+
+    ElementName startElement = {};
+    startElement.abilityName = (char *)"default";
+    startElement.bundleName = bundleName;
+    startElement.deviceId = nullptr;
+    SetWantElement(want, startElement);
+
+    StartAbility(want);
+
+    delete want;
+}
+
+void StopJsApp(char *bundleName)
+{
+    ElementName* topAbility = OHOS::AbilityMsClient::GetInstance().GetTopAbility();
+    if (topAbility == nullptr) {
+        WEARABLE_LOGE(HILOG_MODULE_AAFWK, "topAbility is null");
+        return;
+    }
+
+    if (strcmp(topAbility->bundleName, bundleName) != 0) {
+        WEARABLE_LOGE(HILOG_MODULE_AAFWK, "%s is not top active", bundleName);
+        return;
+    }
+
+    int token = 0;
+    OHOS::AbilityMsClient::GetInstance().TerminateAbility(token);
+}
+
+void MsgCenterReportBtStatusToJS(uint16_t msgId)
+{
+    ElementName *elementName = OHOS::AbilityMsClient::GetInstance().GetTopAbility();
+    if (!(elementName != nullptr && strcmp(elementName->bundleName, "com.huawei.launcher") != 0)) {
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_MSG_CENTER, "JS is not on top, ignore report");
+        return;
+    }
+
+    if (msgId == BT_DISCONNECTED_TO_MSGCENTER) {
+        BaidumapSendMsgToJS("0", MSGCENTER_TYPE_ID_VECTOR_NAVI_BT_DISCONNECTED);
+    } else if (msgId == BT_CONNECTED_TO_MSGCENTER) {
+        BaidumapSendMsgToJS("1", MSGCENTER_TYPE_ID_VECTOR_NAVI_BT_CONNECTED);
+    } else {
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_MSG_CENTER, "unexpected msgId %d", msgId);
+    }
+}
+#endif
+
 #ifdef __cplusplus
 }
 #endif
index bbba86e..1da4f92 100755 (executable)
@@ -17,6 +17,7 @@
 #include "sign_mode.h"
 #include "NativeAbility.h"
 #include "ability_manager.h"
+#include "js_fwk_common.h"
 
 #define ARRAY_COUNT(array) (sizeof(array) / sizeof(array[0]))
 #define OHOSFWK_MAX_ARGC            8
@@ -223,6 +224,12 @@ static uint32_t OhosfwkATCmdAmStartJsApp(uint8_t *para, uint32_t paraLen, char *
     return ERRCODE_SUCC;
 }
 
+static uint32_t OhosfwkATCmdDfxJsMemoryInfo(uint8_t *para, uint32_t paraLen, char *strCommonCmd)
+{
+    OHOS::ACELite::DumpPrintMemoryInfo();
+    return ERRCODE_SUCC;
+}
+
 static const at_cmd_table_t g_ohosfwk_cmd[] = {
     { (char *)"AT^OHOSFWK_AM_EXIT_JSAPP",      OhosfwkATCmdAmExitJsApp, (char *)"00 00 00 00" },
     { (char *)"AT^OHOSFWK_BM_INSTALL",         OhosfwkATCmdBmInstall,   (char *)"00 00 00 01" },
@@ -230,6 +237,7 @@ static const at_cmd_table_t g_ohosfwk_cmd[] = {
     { (char *)"AT^OHOSFWK_BM_UNINSTALL",       OhosfwkATCmdBmUninstall, (char *)"00 00 00 03" },
     { (char *)"AT^OHOSFWK_AM_CHANGENATIVESLICE", OhosfwkATCmdAmChangeNativeSlice, (char *)"00 00 00 04" },
     { (char *)"AT^OHOSFWK_AM_START_JS_APP",    OhosfwkATCmdAmStartJsApp, (char *)"00 00 00 05" },
+    { (char *)"AT^OHOSFWK_DFX_JS_MEMORY_INFO",    OhosfwkATCmdDfxJsMemoryInfo, (char *)"00 00 00 06" },
 };
 
 at_cmd_table_t *get_ohosfwk_cmd_table(uint32_t *cmd_count)
index eb756b6..ba857cd 100755 (executable)
@@ -26,7 +26,7 @@ target = {
                           'pm_service', 'pm_brandy', 'cmn_header', 'at_cmd', 'graphic_at_service', 'app_at_service',
                           'audio_at_service', 'media_at_service', 'bt_manager_at_service',
                           "audio_proc", "audio_dump", "audio_probe", "gpu_proc", 'bts_header'],
-        'ram_component_set': ['bgh', 'media_mini', 'gpu', 'graphic_lvgl_mini', 'dfx_set'],
+        'ram_component_set': ['bgh', 'media_mini', 'gpu', 'graphic_lvgl_mini', 'bgh_audio', 'dfx_set'],
         'image_analysis': True,
         'dsp_version': 'mini',
         'packet': True,
@@ -143,11 +143,11 @@ target = {
                     #"MEM_CHECK",
                     #'ENABLE_WEBSOCKET',
                     'CYWEE_SPORT',
-                    'CYWEE_MAC_ACTIVE',
+                    #'CYWEE_MAC_ACTIVE',
                     'SUPPORT_TCPIP',                                   
                     'SUPPORT_HID_SERVICE',
-                    #'LEANTEST',
-                    'SUPPORT_BAIDU_MAP'
+                    'SUPPORT_BAIDU_MAP',
+                    'CFG_FLASH_SIZE=16'
                     ],
         'ram_component': ["algorithm", "dfx_port_brandy", "dfx_update", 'dfx_nv', "osal", "arch_port", "-:testsuite",
                           "liteos_port", 'lcd', 'qspi_display', 'dfx_file_operation',
@@ -184,7 +184,6 @@ target = {
                            "bleservice",
                            "blemoder",
                            "factorytest_service",
-                           #"leantest",
                            "hid_service"
                                                  ],
         'ram_component_set': ['bgh', 'media', 'gpu', 'graphic_uikit', 'bgh_audio', 'dfx_set', 'ohos_set', 'wearable_set', 'alipay_set'],
diff --git a/code/sdk/build/config/target_config/brandy/param_sector/param_sector_16M.json b/code/sdk/build/config/target_config/brandy/param_sector/param_sector_16M.json
new file mode 100644 (file)
index 0000000..bd4ec2f
--- /dev/null
@@ -0,0 +1,58 @@
+{
+   "Partition_Tbl":{
+      "image_id" : "0x4B87A52D",
+      "stru_ver" : "0x00010000",
+      "version"  : "0x00000000",
+      "param_info_description" : [
+         "Address Constraints: flash type must fill with relative address, RAM regions must fill with absolute address.",
+         "Item ID Constraints: ssb type:                       0x00 ~ 0x0F, Relative address, Size",
+         "                     root public key and signature:  0x10 ~ 0x1F, Relative address, Size",
+         "                     firmware on flash:              0x20 ~ 0x2F, Relative address, Size",
+         "                     data on flash:                  0x30 ~ 0x3F, Relative address, Size",
+
+         "Fixed item id:  0x00: ssb",
+         "                0x01: ssb_backup",
+         "                0x10: configure RootPubKey",
+         "                0x11: signature certificate",
+         "                0x12: ssb image signature",
+         "                0x13: signature certificate backup",
+         "                0x14: ssb image backup signature",
+         "                0x15: algorithm signature",
+         "                0x16: recovery signature",
+         "                0x17: bt_image signature",
+         "                0x18: dsp_main_image signature",
+         "                0x19: dsp_overlay_image signature",
+         "                0x1A: acpu_image signature",
+         "                0x20: recovery",
+         "                0x21: bt_image",
+         "                0x22: dsp_main_image",
+         "                0x23: dsp_overlay_image",
+         "                0x24: acpu_image",
+         "                0x30: nv_data",
+         "                0x31: fota_data"
+      ],
+      "param_info" : [
+         ["0x00", "0x00000000", "0x00020000"],
+         ["0x01", "0x00020000", "0x00020000"],
+         ["0x10", "0x00040000", "0x00001000"],
+         ["0x11", "0x00041000", "0x00001000"],
+         ["0x12", "0x00042000", "0x00001000"],
+         ["0x13", "0x00043000", "0x00001000"],
+         ["0x14", "0x00044000", "0x00001000"],
+         ["0x15", "0x00045000", "0x00001000"],
+         ["0x16", "0x00046000", "0x00001000"],
+         ["0x17", "0x00047000", "0x00001000"],
+         ["0x18", "0x00048000", "0x00001000"],
+         ["0x19", "0x00049000", "0x00001000"],
+         ["0x1a", "0x0004A000", "0x00001000"],
+         ["0x20", "0x00B80000", "0x00100000"],
+         ["0x21", "0x00090000", "0x00070000"],
+         ["0x22", "0x00100000", "0x000C0000"],
+         ["0x23", "0x001C0000", "0x001C0000"],
+         ["0x24", "0x00380000", "0x00800000"],
+         ["0x30", "0x00C80000", "0x00004000"],
+         ["0x31", "0x00C84000", "0x00003000"]
+      ]
+   },
+   "Output_file_prefix":"AIoT"
+}
diff --git a/code/sdk/build/config/target_config/brandy/param_sector/param_sector_fd230.json b/code/sdk/build/config/target_config/brandy/param_sector/param_sector_fd230.json
new file mode 100644 (file)
index 0000000..3e60469
--- /dev/null
@@ -0,0 +1,58 @@
+{
+   "Partition_Tbl":{
+      "image_id" : "0x4B87A52D",
+      "stru_ver" : "0x00010000",
+      "version"  : "0x00000000",
+      "param_info_description" : [
+         "Address Constraints: flash type must fill with relative address, RAM regions must fill with absolute address.",
+         "Item ID Constraints: ssb type:                       0x00 ~ 0x0F, Relative address, Size",
+         "                     root public key and signature:  0x10 ~ 0x1F, Relative address, Size",
+         "                     firmware on flash:              0x20 ~ 0x2F, Relative address, Size",
+         "                     data on flash:                  0x30 ~ 0x3F, Relative address, Size",
+
+         "Fixed item id:  0x00: ssb",
+         "                0x01: ssb_backup",
+         "                0x10: configure RootPubKey",
+         "                0x11: signature certificate",
+         "                0x12: ssb image signature",
+         "                0x13: signature certificate backup",
+         "                0x14: ssb image backup signature",
+         "                0x15: algorithm signature",
+         "                0x16: recovery signature",
+         "                0x17: bt_image signature",
+         "                0x18: dsp_main_image signature",
+         "                0x19: dsp_overlay_image signature",
+         "                0x1A: acpu_image signature",
+         "                0x20: recovery",
+         "                0x21: bt_image",
+         "                0x22: dsp_main_image",
+         "                0x23: dsp_overlay_image",
+         "                0x24: acpu_image",
+         "                0x30: nv_data",
+         "                0x31: fota_data"
+      ],
+      "param_info" : [
+         ["0x00", "0x00000000", "0x00020000"],
+         ["0x01", "0x00020000", "0x00020000"],
+         ["0x10", "0x00040000", "0x00001000"],
+         ["0x11", "0x00041000", "0x00001000"],
+         ["0x12", "0x00042000", "0x00001000"],
+         ["0x13", "0x00043000", "0x00001000"],
+         ["0x14", "0x00044000", "0x00001000"],
+         ["0x15", "0x00045000", "0x00001000"],
+         ["0x16", "0x00046000", "0x00001000"],
+         ["0x17", "0x00047000", "0x00001000"],
+         ["0x18", "0x00048000", "0x00001000"],
+         ["0x19", "0x00049000", "0x00001000"],
+         ["0x1a", "0x0004A000", "0x00001000"],
+         ["0x20", "0x00050000", "0x00040000"],
+         ["0x21", "0x00090000", "0x00070000"],
+         ["0x22", "0x00100000", "0x00070000"],
+         ["0x23", "0x00170000", "0x00140000"],
+         ["0x24", "0x002B0000", "0x00D49000"],
+         ["0x30", "0x00FF9000", "0x00004000"],
+         ["0x31", "0x00FFD000", "0x00003000"]
+      ]
+   },
+   "Output_file_prefix":"AIoT"
+}
index 9d0e78a..a0e5da8 100755 (executable)
@@ -173,7 +173,11 @@ class CMakeBuilder(BuildEnvironment):
                 print("copy file.bin to application dir over!\n")
 
         if env.get('packet'):
-            self.pack_fwpkg(env.get('chip'), target)
+            defines = env.get("defines")
+            if "CFG_FLASH_SIZE=16" in defines:
+                self.pack_fwpkg(env.get('chip'), target, "0x1000000")
+            else:
+                self.pack_fwpkg(env.get('chip'), target, "0x800000")
         
         if not run_custom_cmd(env, target, 'build_post'):
             self.print_build_result(target, 1)
@@ -381,11 +385,11 @@ class CMakeBuilder(BuildEnvironment):
                 print(f"ERROR! :{bin1} is not same with {bin2}")
                 sys.exit(1)
     
-    def pack_fwpkg(self, chip, target_name):
+    def pack_fwpkg(self, chip, target_name, flash_size):
         # bin packet all in one
         packet_script_path = os.path.join(pkg_tools_path, 'packet.py')
         print("packet ing...")
-        errcode = exec_shell([self.python_path, packet_script_path, chip, target_name], None, True)
+        errcode = exec_shell([self.python_path, packet_script_path, chip, target_name, flash_size], None, True)
         if errcode != 0:
             print("packet error!")
             self.print_build_result(target_name, errcode)
diff --git a/code/sdk/drivers/boards/brandy_evb/memory_config/include/flash_16M.h b/code/sdk/drivers/boards/brandy_evb/memory_config/include/flash_16M.h
new file mode 100644 (file)
index 0000000..a4506f7
--- /dev/null
@@ -0,0 +1,184 @@
+/*\r
+ * Copyright (c) @CompanyNameMagicTag 2021-2022. All rights reserved.\r
+ * Description:  Default memory configurations\r
+ * Author: @CompanyNameTag\r
+ * Create:  2022-03-09\r
+ */\r
+\r
+#ifndef FLASH_16M_H\r
+#define FLASH_16M_H\r
+\r
+/*\r
+ * ********************* FLASH ALLOCATION *********************\r
+ * Flash is shared between the cores, and also handles a limited number of\r
+ * non-volatile storage areas.\r
+ *\r
+ * Flash is split into 2 main areas\r
+ * IMAGE Area\r
+ *  Managed by the BT core\r
+ *  This contains, in order from the bottom of Flash:\r
+ *      SSB - SSB image starting at the bottom of flash. Variable size depending on the SSB on the chip that\r
+ *            the package is loaded on. The values in this file only apply to the SSB built with this file.\r
+ *      RECOVERY_Image   - starts in the page after the SSB.\r
+ *      BT_Image         - starts in the page after the RECOVERY_Image\r
+ *      DSP_Image        - starts in the page after the BT_Image\r
+ *      APP_Image        - starts in the page after the DSP_Image\r
+ *      System On-demand region - dynamically allocated flash for FOTA etc\r
+ * NV Area\r
+ *  Ends at the last page of flash, is configurable in size above a minimum allocation.\r
+ *  NV Area, of 12 pages, is allocated, from the lowest address:\r
+ *      8 pages of general use (pages are not fixed and self-identifying), consisting of\r
+ *          1 Page for Asset Store defragmentation\r
+ *          3 pages for Asset Store\r
+ *          2 Pages for App and DSP Core KV defragmentation\r
+ *          1 page for DSP Core KV\r
+ *          1 page for App Core KV\r
+ *      2 pages for BT core use (last 2 pages in Flash)\r
+ *          1 page for BT Core KV\r
+ *          1 page for BT Core KV defragmentation\r
+ */\r
+\r
+#define FLASH_START     0x70000000\r
+#define FLASH_LENGTH    0x1000000\r
+#define FLASH_MAX_END   (FLASH_START + FLASH_LENGTH)\r
+\r
+#define FLASH_PAGE_SIZE 4096\r
+/* APP ITCM config */\r
+#define MCU_ITCM_END    (APP_ITCM_ORIGIN + APP_ITCM_LENGTH)\r
+\r
+#define SSB_BOOT_RAM_ORIGIN APP_ITCM_ORIGIN\r
+#define SSB_BOOT_RAM_LENGTH APP_ITCM_LENGTH\r
+\r
+/* ----------------------------------------------------------------------------------------------------------------- */\r
+/* IMAGE Area Defines */\r
+/* MCU SSB Region */\r
+#define SSB_FLASH_REGION_PAGES  (SSB_IMAGE_PAGES + 5)\r
+#define KV_PAGES 0\r
+#define SSB_FLASH_REGION_START  (FLASH_START)\r
+#define SSB_FLASH_REGION_LENGTH (SSB_FLASH_REGION_PAGES * FLASH_PAGE_SIZE)\r
+\r
+#define SSB_VECTORS_LOAD_ORIGIN (SSB_FLASH_REGION_START)\r
+#define SSB_VERSION_LOAD_ORIGIN (SSB_VECTORS_LOAD_ORIGIN + APP_VECTORS_LENGTH)\r
+#define SSB_CHANGEID_LOAD_ORIGIN (SSB_VERSION_LOAD_ORIGIN + VERSION_LENGTH)\r
+\r
+#define SSB_PROGRAM_ORIGIN (SSB_CHANGEID_LOAD_ORIGIN + CHANGE_ID_LENGTH)\r
+#define SSB_PROGRAM_LENGTH ((SSB_FLASH_REGION_LENGTH) - (APP_VECTORS_LENGTH + VERSION_LENGTH + CHANGE_ID_LENGTH))\r
+\r
+/* MCU SSB BACK-UP Region */\r
+#define SSB_BACKUP_FLASH_REGION_PAGES  32\r
+#define SSB_BACKUP_FLASH_REGION_START  (SSB_FLASH_REGION_START + SSB_FLASH_REGION_LENGTH + KV_PAGES * FLASH_PAGE_SIZE)\r
+#define SSB_BACKUP_FLASH_REGION_LENGTH (SSB_BACKUP_FLASH_REGION_PAGES * FLASH_PAGE_SIZE)\r
+\r
+/* SEC_BOOT Region for Signature Certificate */\r
+#define SEC_BOOT_FLASH_REGION_PAGES  15\r
+#define SEC_BOOT_FLASH_REGION_START  (SSB_BACKUP_FLASH_REGION_START + SSB_BACKUP_FLASH_REGION_LENGTH)\r
+#define SEC_BOOT_FLASH_REGION_LENGTH (SEC_BOOT_FLASH_REGION_PAGES * FLASH_PAGE_SIZE)\r
+\r
+#define PARTITION_TABLE_REGSION_PAGE  1\r
+#define PARTITION_TABLE_REGION_START  (SEC_BOOT_FLASH_REGION_START + SEC_BOOT_FLASH_REGION_LENGTH)\r
+#define PARTITION_TABLE_REGION_LENGTH  (PARTITION_TABLE_REGSION_PAGE * FLASH_PAGE_SIZE)\r
+\r
+/* DTB Region */\r
+#define DTB_FLASH_REGION_PAGES  (DTB_IMAGE_PAGES)\r
+#define DTB_FLASH_REGION_START  (PARTITION_TABLE_REGION_START + PARTITION_TABLE_REGION_LENGTH)\r
+#define DTB_FLASH_REGION_LENGTH (DTB_FLASH_REGION_PAGES * FLASH_PAGE_SIZE)\r
+\r
+/* RESERVE Region */\r
+#define RESERVE_FLASH_REGION_PAGES  (RESERVE_IMAGE_PAGES)\r
+#define RESERVE_FLASH_REGION_START  (DTB_FLASH_REGION_START + DTB_FLASH_REGION_LENGTH)\r
+#define RESERVE_FLASH_REGION_LENGTH (RESERVE_FLASH_REGION_PAGES * FLASH_PAGE_SIZE)\r
+\r
+/* BT Region */\r
+#define BT_FLASH_REGION_PAGES  (BT_IMAGE_PAGES)\r
+#define BT_FLASH_REGION_START  (RESERVE_FLASH_REGION_START + RESERVE_FLASH_REGION_LENGTH)\r
+#define BT_FLASH_REGION_LENGTH (BT_FLASH_REGION_PAGES * FLASH_PAGE_SIZE)\r
+\r
+#define BT_BUILD_INFO_ORIGIN (BT_FLASH_REGION_START)\r
+#define BT_VECTORS_LOAD_ORIGIN (BT_BUILD_INFO_ORIGIN + BUILD_INFO_LENGRH)\r
+#define BT_VERSION_LOAD_ORIGIN (BT_VECTORS_LOAD_ORIGIN + BT_VECTORS_LENGTH)\r
+#define BT_CHANGEID_LOAD_ORIGIN (BT_VERSION_LOAD_ORIGIN + VERSION_LENGTH)\r
+#define DSP_CHANGEID_LOAD_ORIGIN (BT_CHANGEID_LOAD_ORIGIN + CHANGE_ID_LENGTH)\r
+\r
+/* Fill 4 byte to align flash 8 byte */\r
+#define BT_PROGRAM_ORIGIN (DSP_CHANGEID_LOAD_ORIGIN + CHANGE_ID_LENGTH)\r
+#define BT_PROGRAM_LENGTH ((BT_FLASH_REGION_LENGTH) - (BT_VECTORS_LENGTH + \\r
+                           VERSION_LENGTH + CHANGE_ID_LENGTH + CHANGE_ID_LENGTH))\r
+\r
+/* DSP Region */\r
+#define DSP_FLASH_REGION_PAGES  (HIFI0_IMAGE_PAGES)\r
+#define DSP_FLASH_REGION_START  (BT_FLASH_REGION_START + BT_FLASH_REGION_LENGTH)\r
+#define DSP_FLASH_REGION_LENGTH (DSP_FLASH_REGION_PAGES * FLASH_PAGE_SIZE)\r
+\r
+/* DSP1 Region */\r
+#define DSP_CODEC_FLASH_REGION_PAGES  (HIFI0_CODEC_PAGES)\r
+#define DSP_CODEC_FLASH_REGION_START  (DSP_FLASH_REGION_START + DSP_FLASH_REGION_LENGTH)\r
+#define DSP_CODEC_FLASH_REGION_LENGTH (DSP_CODEC_FLASH_REGION_PAGES * FLASH_PAGE_SIZE)\r
+\r
+/* APP Region */\r
+#define APP_FLASH_REGION_PAGES  (APP_IMAGE_PAGES)\r
+#define APP_FLASH_REGION_START  (DSP_CODEC_FLASH_REGION_START + DSP_CODEC_FLASH_REGION_LENGTH)\r
+#define APP_FLASH_REGION_LENGTH (APP_FLASH_REGION_PAGES * FLASH_PAGE_SIZE)\r
+\r
+/* RECOVERY Region */\r
+#define RECOVERY_FLASH_REGION_PAGES  (RECOVERY_IMAGE_PAGES)\r
+#define RECOVERY_FLASH_REGION_START  (APP_FLASH_REGION_START + APP_FLASH_REGION_LENGTH)\r
+#define RECOVERY_FLASH_REGION_LENGTH (RECOVERY_FLASH_REGION_PAGES * FLASH_PAGE_SIZE)\r
+\r
+#define RECOVERY_VECTORS_LOAD_ORIGIN (RECOVERY_FLASH_REGION_START)\r
+#define RECOVERY_VERSION_LOAD_ORIGIN (RECOVERY_VECTORS_LOAD_ORIGIN + BT_VECTORS_LENGTH)\r
+#define RECOVERY_CHANGEID_LOAD_ORIGIN (RECOVERY_VERSION_LOAD_ORIGIN + VERSION_LENGTH)\r
+\r
+#define RECOVERY_PROGRAM_ORIGIN (RECOVERY_CHANGEID_LOAD_ORIGIN + CHANGE_ID_LENGTH)\r
+#define RECOVERY_PROGRAM_LENGTH ((RECOVERY_FLASH_REGION_LENGTH) - \\r
+                                 (BT_VECTORS_LENGTH + VERSION_LENGTH + CHANGE_ID_LENGTH))\r
+\r
+/* NV data Region */\r
+#define NV_FLASH_REGION_PAGES  (NV_IMAGE_PAGES)\r
+#define NV_FLASH_REGION_START  (RECOVERY_FLASH_REGION_START + RECOVERY_FLASH_REGION_LENGTH)\r
+#define NV_FLASH_REGION_LENGTH (NV_FLASH_REGION_PAGES * FLASH_PAGE_SIZE)\r
+\r
+/* Fota data Region */\r
+#define FOTA_FLASH_REGION_PAGES  (FOTA_IMAGE_PAGES)\r
+#define FOTA_FLASH_REGION_START  (NV_FLASH_REGION_START + NV_FLASH_REGION_LENGTH)\r
+#define FOTA_FLASH_REGION_LENGTH (FOTA_FLASH_REGION_PAGES * FLASH_PAGE_SIZE)\r
+\r
+#define APP_VECTORS_LOAD_ORIGIN (APP_FLASH_REGION_START)\r
+#define APP_VERSION_LOAD_ORIGIN (APP_VECTORS_LOAD_ORIGIN + APP_VECTORS_LENGTH)\r
+\r
+#define APP_PROGRAM_ORIGIN (APP_VERSION_LOAD_ORIGIN + VERSION_LENGTH)\r
+#define APP_PROGRAM_LENGTH ((APP_FLASH_REGION_LENGTH) - (APP_VECTORS_LENGTH + VERSION_LENGTH))\r
+\r
+/* cores image flash region start */\r
+#define FLASH_CORE_IMAGES_START (FLASH_START + SSB_FLASH_REGION_LENGTH + SSB_BACKUP_FLASH_REGION_LENGTH + \\r
+                                 SEC_BOOT_FLASH_REGION_LENGTH + \\r
+                                 KV_PAGES * FLASH_PAGE_SIZE + PARTITION_TABLE_REGION_LENGTH)\r
+/* ----------------------------------------------------------------------------------------------------------------- */\r
+/* KV Region Defines */\r
+/* Minimum System Configuration pages in FLASH reserved */\r
+#define SYSTEM_RESERVED_FLASH_PAGES 0\r
+/* Minimum reserved Non Volatile storage + Config Data. */\r
+#define FLASH_RESERVED_LENGTH (SYSTEM_RESERVED_FLASH_PAGES * FLASH_PAGE_SIZE)\r
+\r
+/*\r
+ * ********************* SEC BOOT REGION *********************\r
+ */\r
+#define MCU_ROOT_PUBKEY_START           SEC_BOOT_FLASH_REGION_START\r
+#define MCU_SUB_PUBKEY_START            (MCU_ROOT_PUBKEY_START + FLASH_PAGE_SIZE)\r
+#define MCU_SSB_IMAGE_SIGN_START        (MCU_SUB_PUBKEY_START + FLASH_PAGE_SIZE)\r
+#define MCU_SUB_PUBKEY_BACKUP_START     (MCU_SSB_IMAGE_SIGN_START + FLASH_PAGE_SIZE)\r
+#define MCU_SSB_IMAGE_SIGN_BACKUP_START (MCU_SUB_PUBKEY_BACKUP_START + FLASH_PAGE_SIZE)\r
+\r
+#define MCU_SEC_BOOT_SIGN_BACKUP_START  MCU_SUB_PUBKEY_BACKUP_START\r
+#define MCU_SEC_BOOT_SIGN_BACKUP_LEN    (2 * FLASH_PAGE_SIZE)\r
+\r
+#define MCU_CFCT_START                  (MCU_SEC_BOOT_SIGN_BACKUP_START + MCU_SEC_BOOT_SIGN_BACKUP_LEN)\r
+#define MCU_CFCT_LEN                    FLASH_PAGE_SIZE\r
+\r
+#define MCU_RECOVERY_IMAGE_SIGN_START   (MCU_CFCT_START + MCU_CFCT_LEN)\r
+#define MCU_BT_IMAGE_SIGN_START         (MCU_RECOVERY_IMAGE_SIGN_START + FLASH_PAGE_SIZE)\r
+#define MCU_DSP_IMAGE_SIGN_START        (MCU_BT_IMAGE_SIGN_START + FLASH_PAGE_SIZE)\r
+#define MCU_DSP1_IMAGE_SIGN_START       (MCU_DSP_IMAGE_SIGN_START + FLASH_PAGE_SIZE)\r
+#define MCU_APP_IMAGE_SIGN_START        (MCU_DSP1_IMAGE_SIGN_START + FLASH_PAGE_SIZE)\r
+#define MCU_PARTITION_TABLE_SIGN_START  (MCU_APP_IMAGE_SIGN_START + FLASH_PAGE_SIZE)\r
+\r
+#endif
\ No newline at end of file
diff --git a/code/sdk/drivers/boards/brandy_evb/memory_config/include/flash_16M_FD230.h b/code/sdk/drivers/boards/brandy_evb/memory_config/include/flash_16M_FD230.h
new file mode 100644 (file)
index 0000000..1bc76d9
--- /dev/null
@@ -0,0 +1,173 @@
+\r
+/*\r
+ * ********************* FLASH ALLOCATION *********************\r
+ * Flash is shared between the cores, and also handles a limited number of\r
+ * non-volatile storage areas.\r
+ *\r
+ * Flash is split into 2 main areas\r
+ * IMAGE Area\r
+ *  Managed by the BT core\r
+ *  This contains, in order from the bottom of Flash:\r
+ *      SSB - SSB image starting at the bottom of flash. Variable size depending on the SSB on the chip that\r
+ *            the package is loaded on. The values in this file only apply to the SSB built with this file.\r
+ *      RECOVERY_Image   - starts in the page after the SSB.\r
+ *      BT_Image         - starts in the page after the RECOVERY_Image\r
+ *      DSP_Image        - starts in the page after the BT_Image\r
+ *      APP_Image        - starts in the page after the DSP_Image\r
+ *      System On-demand region - dynamically allocated flash for FOTA etc\r
+ * NV Area\r
+ *  Ends at the last page of flash, is configurable in size above a minimum allocation.\r
+ *  NV Area, of 12 pages, is allocated, from the lowest address:\r
+ *      8 pages of general use (pages are not fixed and self-identifying), consisting of\r
+ *          1 Page for Asset Store defragmentation\r
+ *          3 pages for Asset Store\r
+ *          2 Pages for App and DSP Core KV defragmentation\r
+ *          1 page for DSP Core KV\r
+ *          1 page for App Core KV\r
+ *      2 pages for BT core use (last 2 pages in Flash)\r
+ *          1 page for BT Core KV\r
+ *          1 page for BT Core KV defragmentation\r
+ */\r
+\r
+#define FLASH_START     0x70000000\r
+#define FLASH_LENGTH    0x1000000\r
+#define FLASH_MAX_END   (FLASH_START + FLASH_LENGTH)\r
+\r
+#define FLASH_PAGE_SIZE 4096\r
+/* APP ITCM config */\r
+#define MCU_ITCM_END    (APP_ITCM_ORIGIN + APP_ITCM_LENGTH)\r
+\r
+#define SSB_BOOT_RAM_ORIGIN APP_ITCM_ORIGIN\r
+#define SSB_BOOT_RAM_LENGTH APP_ITCM_LENGTH\r
+\r
+/* ----------------------------------------------------------------------------------------------------------------- */\r
+/* IMAGE Area Defines */\r
+/* MCU SSB Region */\r
+#define SSB_FLASH_REGION_PAGES  (SSB_IMAGE_PAGES + 5)\r
+#define KV_PAGES 0\r
+#define SSB_FLASH_REGION_START  (FLASH_START)\r
+#define SSB_FLASH_REGION_LENGTH (SSB_FLASH_REGION_PAGES * FLASH_PAGE_SIZE)\r
+\r
+#define SSB_VECTORS_LOAD_ORIGIN (SSB_FLASH_REGION_START)\r
+#define SSB_VERSION_LOAD_ORIGIN (SSB_VECTORS_LOAD_ORIGIN + APP_VECTORS_LENGTH)\r
+#define SSB_CHANGEID_LOAD_ORIGIN (SSB_VERSION_LOAD_ORIGIN + VERSION_LENGTH)\r
+\r
+#define SSB_PROGRAM_ORIGIN (SSB_CHANGEID_LOAD_ORIGIN + CHANGE_ID_LENGTH)\r
+#define SSB_PROGRAM_LENGTH ((SSB_FLASH_REGION_LENGTH) - (APP_VECTORS_LENGTH + VERSION_LENGTH + CHANGE_ID_LENGTH))\r
+\r
+/* MCU SSB BACK-UP Region */\r
+#define SSB_BACKUP_FLASH_REGION_PAGES  32\r
+#define SSB_BACKUP_FLASH_REGION_START  (SSB_FLASH_REGION_START + SSB_FLASH_REGION_LENGTH + KV_PAGES * FLASH_PAGE_SIZE)\r
+#define SSB_BACKUP_FLASH_REGION_LENGTH (SSB_BACKUP_FLASH_REGION_PAGES * FLASH_PAGE_SIZE)\r
+\r
+/* SEC_BOOT Region for Signature Certificate */\r
+#define SEC_BOOT_FLASH_REGION_PAGES  15\r
+#define SEC_BOOT_FLASH_REGION_START  (SSB_BACKUP_FLASH_REGION_START + SSB_BACKUP_FLASH_REGION_LENGTH)\r
+#define SEC_BOOT_FLASH_REGION_LENGTH (SEC_BOOT_FLASH_REGION_PAGES * FLASH_PAGE_SIZE)\r
+\r
+#define PARTITION_TABLE_REGSION_PAGE  1\r
+#define PARTITION_TABLE_REGION_START  (SEC_BOOT_FLASH_REGION_START + SEC_BOOT_FLASH_REGION_LENGTH)\r
+#define PARTITION_TABLE_REGION_LENGTH  (PARTITION_TABLE_REGSION_PAGE * FLASH_PAGE_SIZE)\r
+\r
+/* DTB Region */\r
+#define DTB_FLASH_REGION_PAGES  (DTB_IMAGE_PAGES)\r
+#define DTB_FLASH_REGION_START  (PARTITION_TABLE_REGION_START + PARTITION_TABLE_REGION_LENGTH)\r
+#define DTB_FLASH_REGION_LENGTH (DTB_FLASH_REGION_PAGES * FLASH_PAGE_SIZE)\r
+\r
+/* RECOVERY Region */\r
+#define RECOVERY_FLASH_REGION_PAGES  (RECOVERY_IMAGE_PAGES)\r
+#define RECOVERY_FLASH_REGION_START  (DTB_FLASH_REGION_START + DTB_FLASH_REGION_LENGTH)\r
+#define RECOVERY_FLASH_REGION_LENGTH (RECOVERY_FLASH_REGION_PAGES * FLASH_PAGE_SIZE)\r
+\r
+#define RECOVERY_VECTORS_LOAD_ORIGIN (RECOVERY_FLASH_REGION_START)\r
+#define RECOVERY_VERSION_LOAD_ORIGIN (RECOVERY_VECTORS_LOAD_ORIGIN + BT_VECTORS_LENGTH)\r
+#define RECOVERY_CHANGEID_LOAD_ORIGIN (RECOVERY_VERSION_LOAD_ORIGIN + VERSION_LENGTH)\r
+\r
+#define RECOVERY_PROGRAM_ORIGIN (RECOVERY_CHANGEID_LOAD_ORIGIN + CHANGE_ID_LENGTH)\r
+#define RECOVERY_PROGRAM_LENGTH ((RECOVERY_FLASH_REGION_LENGTH) - \\r
+                                 (BT_VECTORS_LENGTH + VERSION_LENGTH + CHANGE_ID_LENGTH))\r
+\r
+/* RESERVE Region */\r
+#define RESERVE_FLASH_REGION_PAGES  (RESERVE_IMAGE_PAGES)\r
+#define RESERVE_FLASH_REGION_START  (RECOVERY_FLASH_REGION_START + RECOVERY_FLASH_REGION_LENGTH)\r
+#define RESERVE_FLASH_REGION_LENGTH (RESERVE_FLASH_REGION_PAGES * FLASH_PAGE_SIZE)\r
+\r
+/* BT Region */\r
+#define BT_FLASH_REGION_PAGES  (BT_IMAGE_PAGES)\r
+#define BT_FLASH_REGION_START  (RESERVE_FLASH_REGION_START + RESERVE_FLASH_REGION_LENGTH)\r
+#define BT_FLASH_REGION_LENGTH (BT_FLASH_REGION_PAGES * FLASH_PAGE_SIZE)\r
+\r
+#define BT_BUILD_INFO_ORIGIN (BT_FLASH_REGION_START)\r
+#define BT_VECTORS_LOAD_ORIGIN (BT_BUILD_INFO_ORIGIN + BUILD_INFO_LENGRH)\r
+#define BT_VERSION_LOAD_ORIGIN (BT_VECTORS_LOAD_ORIGIN + BT_VECTORS_LENGTH)\r
+#define BT_CHANGEID_LOAD_ORIGIN (BT_VERSION_LOAD_ORIGIN + VERSION_LENGTH)\r
+#define DSP_CHANGEID_LOAD_ORIGIN (BT_CHANGEID_LOAD_ORIGIN + CHANGE_ID_LENGTH)\r
+\r
+/* Fill 4 byte to align flash 8 byte */\r
+#define BT_PROGRAM_ORIGIN (DSP_CHANGEID_LOAD_ORIGIN + CHANGE_ID_LENGTH)\r
+#define BT_PROGRAM_LENGTH ((BT_FLASH_REGION_LENGTH) - (BT_VECTORS_LENGTH + \\r
+                           VERSION_LENGTH + CHANGE_ID_LENGTH + CHANGE_ID_LENGTH))\r
+\r
+/* DSP Region */\r
+#define DSP_FLASH_REGION_PAGES  (HIFI0_IMAGE_PAGES)\r
+#define DSP_FLASH_REGION_START  (BT_FLASH_REGION_START + BT_FLASH_REGION_LENGTH)\r
+#define DSP_FLASH_REGION_LENGTH (DSP_FLASH_REGION_PAGES * FLASH_PAGE_SIZE)\r
+\r
+/* DSP1 Region */\r
+#define DSP_CODEC_FLASH_REGION_PAGES  (HIFI0_CODEC_PAGES)\r
+#define DSP_CODEC_FLASH_REGION_START  (DSP_FLASH_REGION_START + DSP_FLASH_REGION_LENGTH)\r
+#define DSP_CODEC_FLASH_REGION_LENGTH (DSP_CODEC_FLASH_REGION_PAGES * FLASH_PAGE_SIZE)\r
+\r
+/* APP Region */\r
+#define APP_FLASH_REGION_PAGES  (APP_IMAGE_PAGES)\r
+#define APP_FLASH_REGION_START  (DSP_CODEC_FLASH_REGION_START + DSP_CODEC_FLASH_REGION_LENGTH)\r
+#define APP_FLASH_REGION_LENGTH (APP_FLASH_REGION_PAGES * FLASH_PAGE_SIZE)\r
+\r
+/* NV data Region */\r
+#define NV_FLASH_REGION_PAGES  (NV_IMAGE_PAGES)\r
+#define NV_FLASH_REGION_START  (APP_FLASH_REGION_START + APP_FLASH_REGION_LENGTH)\r
+#define NV_FLASH_REGION_LENGTH (NV_FLASH_REGION_PAGES * FLASH_PAGE_SIZE)\r
+\r
+/* Fota data Region */\r
+#define FOTA_FLASH_REGION_PAGES  (FOTA_IMAGE_PAGES)\r
+#define FOTA_FLASH_REGION_START  (NV_FLASH_REGION_START + NV_FLASH_REGION_LENGTH)\r
+#define FOTA_FLASH_REGION_LENGTH (FOTA_FLASH_REGION_PAGES * FLASH_PAGE_SIZE)\r
+\r
+#define APP_VECTORS_LOAD_ORIGIN (APP_FLASH_REGION_START)\r
+#define APP_VERSION_LOAD_ORIGIN (APP_VECTORS_LOAD_ORIGIN + APP_VECTORS_LENGTH)\r
+\r
+#define APP_PROGRAM_ORIGIN (APP_VERSION_LOAD_ORIGIN + VERSION_LENGTH)\r
+#define APP_PROGRAM_LENGTH ((APP_FLASH_REGION_LENGTH) - (APP_VECTORS_LENGTH + VERSION_LENGTH))\r
+\r
+/* cores image flash region start */\r
+#define FLASH_CORE_IMAGES_START (FLASH_START + SSB_FLASH_REGION_LENGTH + SSB_BACKUP_FLASH_REGION_LENGTH + \\r
+                                 SEC_BOOT_FLASH_REGION_LENGTH + \\r
+                                 KV_PAGES * FLASH_PAGE_SIZE + PARTITION_TABLE_REGION_LENGTH)\r
+/* ----------------------------------------------------------------------------------------------------------------- */\r
+/* KV Region Defines */\r
+/* Minimum System Configuration pages in FLASH reserved */\r
+#define SYSTEM_RESERVED_FLASH_PAGES 0\r
+/* Minimum reserved Non Volatile storage + Config Data. */\r
+#define FLASH_RESERVED_LENGTH (SYSTEM_RESERVED_FLASH_PAGES * FLASH_PAGE_SIZE)\r
+\r
+/*\r
+ * ********************* SEC BOOT REGION *********************\r
+ */\r
+#define MCU_ROOT_PUBKEY_START           SEC_BOOT_FLASH_REGION_START\r
+#define MCU_SUB_PUBKEY_START            (MCU_ROOT_PUBKEY_START + FLASH_PAGE_SIZE)\r
+#define MCU_SSB_IMAGE_SIGN_START        (MCU_SUB_PUBKEY_START + FLASH_PAGE_SIZE)\r
+#define MCU_SUB_PUBKEY_BACKUP_START     (MCU_SSB_IMAGE_SIGN_START + FLASH_PAGE_SIZE)\r
+#define MCU_SSB_IMAGE_SIGN_BACKUP_START (MCU_SUB_PUBKEY_BACKUP_START + FLASH_PAGE_SIZE)\r
+\r
+#define MCU_SEC_BOOT_SIGN_BACKUP_START  MCU_SUB_PUBKEY_BACKUP_START\r
+#define MCU_SEC_BOOT_SIGN_BACKUP_LEN    (2 * FLASH_PAGE_SIZE)\r
+\r
+#define MCU_CFCT_START                  (MCU_SEC_BOOT_SIGN_BACKUP_START + MCU_SEC_BOOT_SIGN_BACKUP_LEN)\r
+#define MCU_CFCT_LEN                    FLASH_PAGE_SIZE\r
+\r
+#define MCU_RECOVERY_IMAGE_SIGN_START   (MCU_CFCT_START + MCU_CFCT_LEN)\r
+#define MCU_BT_IMAGE_SIGN_START         (MCU_RECOVERY_IMAGE_SIGN_START + FLASH_PAGE_SIZE)\r
+#define MCU_DSP_IMAGE_SIGN_START        (MCU_BT_IMAGE_SIGN_START + FLASH_PAGE_SIZE)\r
+#define MCU_DSP1_IMAGE_SIGN_START       (MCU_DSP_IMAGE_SIGN_START + FLASH_PAGE_SIZE)\r
+#define MCU_APP_IMAGE_SIGN_START        (MCU_DSP1_IMAGE_SIGN_START + FLASH_PAGE_SIZE)\r
+#define MCU_PARTITION_TABLE_SIGN_START  (MCU_APP_IMAGE_SIGN_START + FLASH_PAGE_SIZE)\r
diff --git a/code/sdk/drivers/boards/brandy_evb/memory_config/include/flash_8M.h b/code/sdk/drivers/boards/brandy_evb/memory_config/include/flash_8M.h
new file mode 100644 (file)
index 0000000..9729162
--- /dev/null
@@ -0,0 +1,184 @@
+/*\r
+ * Copyright (c) @CompanyNameMagicTag 2021-2022. All rights reserved.\r
+ * Description:  Default memory configurations\r
+ * Author: @CompanyNameTag\r
+ * Create:  2022-03-09\r
+ */\r
+\r
+#ifndef FLASH_8M_H\r
+#define FLASH_8M_H\r
+\r
+/*\r
+ * ********************* FLASH ALLOCATION *********************\r
+ * Flash is shared between the cores, and also handles a limited number of\r
+ * non-volatile storage areas.\r
+ *\r
+ * Flash is split into 2 main areas\r
+ * IMAGE Area\r
+ *  Managed by the BT core\r
+ *  This contains, in order from the bottom of Flash:\r
+ *      SSB - SSB image starting at the bottom of flash. Variable size depending on the SSB on the chip that\r
+ *            the package is loaded on. The values in this file only apply to the SSB built with this file.\r
+ *      RECOVERY_Image   - starts in the page after the SSB.\r
+ *      BT_Image         - starts in the page after the RECOVERY_Image\r
+ *      DSP_Image        - starts in the page after the BT_Image\r
+ *      APP_Image        - starts in the page after the DSP_Image\r
+ *      System On-demand region - dynamically allocated flash for FOTA etc\r
+ * NV Area\r
+ *  Ends at the last page of flash, is configurable in size above a minimum allocation.\r
+ *  NV Area, of 12 pages, is allocated, from the lowest address:\r
+ *      8 pages of general use (pages are not fixed and self-identifying), consisting of\r
+ *          1 Page for Asset Store defragmentation\r
+ *          3 pages for Asset Store\r
+ *          2 Pages for App and DSP Core KV defragmentation\r
+ *          1 page for DSP Core KV\r
+ *          1 page for App Core KV\r
+ *      2 pages for BT core use (last 2 pages in Flash)\r
+ *          1 page for BT Core KV\r
+ *          1 page for BT Core KV defragmentation\r
+ */\r
+\r
+#define FLASH_START     0x70000000\r
+#define FLASH_LENGTH    0x800000\r
+#define FLASH_MAX_END   (FLASH_START + FLASH_LENGTH)\r
+\r
+#define FLASH_PAGE_SIZE 4096\r
+/* APP ITCM config */\r
+#define MCU_ITCM_END    (APP_ITCM_ORIGIN + APP_ITCM_LENGTH)\r
+\r
+#define SSB_BOOT_RAM_ORIGIN APP_ITCM_ORIGIN\r
+#define SSB_BOOT_RAM_LENGTH APP_ITCM_LENGTH\r
+\r
+/* ----------------------------------------------------------------------------------------------------------------- */\r
+/* IMAGE Area Defines */\r
+/* MCU SSB Region */\r
+#define SSB_FLASH_REGION_PAGES  (SSB_IMAGE_PAGES + 5)\r
+#define KV_PAGES 0\r
+#define SSB_FLASH_REGION_START  (FLASH_START)\r
+#define SSB_FLASH_REGION_LENGTH (SSB_FLASH_REGION_PAGES * FLASH_PAGE_SIZE)\r
+\r
+#define SSB_VECTORS_LOAD_ORIGIN (SSB_FLASH_REGION_START)\r
+#define SSB_VERSION_LOAD_ORIGIN (SSB_VECTORS_LOAD_ORIGIN + APP_VECTORS_LENGTH)\r
+#define SSB_CHANGEID_LOAD_ORIGIN (SSB_VERSION_LOAD_ORIGIN + VERSION_LENGTH)\r
+\r
+#define SSB_PROGRAM_ORIGIN (SSB_CHANGEID_LOAD_ORIGIN + CHANGE_ID_LENGTH)\r
+#define SSB_PROGRAM_LENGTH ((SSB_FLASH_REGION_LENGTH) - (APP_VECTORS_LENGTH + VERSION_LENGTH + CHANGE_ID_LENGTH))\r
+\r
+/* MCU SSB BACK-UP Region */\r
+#define SSB_BACKUP_FLASH_REGION_PAGES  32\r
+#define SSB_BACKUP_FLASH_REGION_START  (SSB_FLASH_REGION_START + SSB_FLASH_REGION_LENGTH + KV_PAGES * FLASH_PAGE_SIZE)\r
+#define SSB_BACKUP_FLASH_REGION_LENGTH (SSB_BACKUP_FLASH_REGION_PAGES * FLASH_PAGE_SIZE)\r
+\r
+/* SEC_BOOT Region for Signature Certificate */\r
+#define SEC_BOOT_FLASH_REGION_PAGES  15\r
+#define SEC_BOOT_FLASH_REGION_START  (SSB_BACKUP_FLASH_REGION_START + SSB_BACKUP_FLASH_REGION_LENGTH)\r
+#define SEC_BOOT_FLASH_REGION_LENGTH (SEC_BOOT_FLASH_REGION_PAGES * FLASH_PAGE_SIZE)\r
+\r
+#define PARTITION_TABLE_REGSION_PAGE  1\r
+#define PARTITION_TABLE_REGION_START  (SEC_BOOT_FLASH_REGION_START + SEC_BOOT_FLASH_REGION_LENGTH)\r
+#define PARTITION_TABLE_REGION_LENGTH  (PARTITION_TABLE_REGSION_PAGE * FLASH_PAGE_SIZE)\r
+\r
+/* DTB Region */\r
+#define DTB_FLASH_REGION_PAGES  (DTB_IMAGE_PAGES)\r
+#define DTB_FLASH_REGION_START  (PARTITION_TABLE_REGION_START + PARTITION_TABLE_REGION_LENGTH)\r
+#define DTB_FLASH_REGION_LENGTH (DTB_FLASH_REGION_PAGES * FLASH_PAGE_SIZE)\r
+\r
+/* RECOVERY Region */\r
+#define RECOVERY_FLASH_REGION_PAGES  (RECOVERY_IMAGE_PAGES)\r
+#define RECOVERY_FLASH_REGION_START  (DTB_FLASH_REGION_START + DTB_FLASH_REGION_LENGTH)\r
+#define RECOVERY_FLASH_REGION_LENGTH (RECOVERY_FLASH_REGION_PAGES * FLASH_PAGE_SIZE)\r
+\r
+#define RECOVERY_VECTORS_LOAD_ORIGIN (RECOVERY_FLASH_REGION_START)\r
+#define RECOVERY_VERSION_LOAD_ORIGIN (RECOVERY_VECTORS_LOAD_ORIGIN + BT_VECTORS_LENGTH)\r
+#define RECOVERY_CHANGEID_LOAD_ORIGIN (RECOVERY_VERSION_LOAD_ORIGIN + VERSION_LENGTH)\r
+\r
+#define RECOVERY_PROGRAM_ORIGIN (RECOVERY_CHANGEID_LOAD_ORIGIN + CHANGE_ID_LENGTH)\r
+#define RECOVERY_PROGRAM_LENGTH ((RECOVERY_FLASH_REGION_LENGTH) - \\r
+                                 (BT_VECTORS_LENGTH + VERSION_LENGTH + CHANGE_ID_LENGTH))\r
+\r
+/* RESERVE Region */\r
+#define RESERVE_FLASH_REGION_PAGES  (RESERVE_IMAGE_PAGES)\r
+#define RESERVE_FLASH_REGION_START  (RECOVERY_FLASH_REGION_START + RECOVERY_FLASH_REGION_LENGTH)\r
+#define RESERVE_FLASH_REGION_LENGTH (RESERVE_FLASH_REGION_PAGES * FLASH_PAGE_SIZE)\r
+\r
+/* BT Region */\r
+#define BT_FLASH_REGION_PAGES  (BT_IMAGE_PAGES)\r
+#define BT_FLASH_REGION_START  (RESERVE_FLASH_REGION_START + RESERVE_FLASH_REGION_LENGTH)\r
+#define BT_FLASH_REGION_LENGTH (BT_FLASH_REGION_PAGES * FLASH_PAGE_SIZE)\r
+\r
+#define BT_BUILD_INFO_ORIGIN (BT_FLASH_REGION_START)\r
+#define BT_VECTORS_LOAD_ORIGIN (BT_BUILD_INFO_ORIGIN + BUILD_INFO_LENGRH)\r
+#define BT_VERSION_LOAD_ORIGIN (BT_VECTORS_LOAD_ORIGIN + BT_VECTORS_LENGTH)\r
+#define BT_CHANGEID_LOAD_ORIGIN (BT_VERSION_LOAD_ORIGIN + VERSION_LENGTH)\r
+#define DSP_CHANGEID_LOAD_ORIGIN (BT_CHANGEID_LOAD_ORIGIN + CHANGE_ID_LENGTH)\r
+\r
+/* Fill 4 byte to align flash 8 byte */\r
+#define BT_PROGRAM_ORIGIN (DSP_CHANGEID_LOAD_ORIGIN + CHANGE_ID_LENGTH)\r
+#define BT_PROGRAM_LENGTH ((BT_FLASH_REGION_LENGTH) - (BT_VECTORS_LENGTH + \\r
+                           VERSION_LENGTH + CHANGE_ID_LENGTH + CHANGE_ID_LENGTH))\r
+\r
+/* DSP Region */\r
+#define DSP_FLASH_REGION_PAGES  (HIFI0_IMAGE_PAGES)\r
+#define DSP_FLASH_REGION_START  (BT_FLASH_REGION_START + BT_FLASH_REGION_LENGTH)\r
+#define DSP_FLASH_REGION_LENGTH (DSP_FLASH_REGION_PAGES * FLASH_PAGE_SIZE)\r
+\r
+/* DSP1 Region */\r
+#define DSP_CODEC_FLASH_REGION_PAGES  (HIFI0_CODEC_PAGES)\r
+#define DSP_CODEC_FLASH_REGION_START  (DSP_FLASH_REGION_START + DSP_FLASH_REGION_LENGTH)\r
+#define DSP_CODEC_FLASH_REGION_LENGTH (DSP_CODEC_FLASH_REGION_PAGES * FLASH_PAGE_SIZE)\r
+\r
+/* APP Region */\r
+#define APP_FLASH_REGION_PAGES  (APP_IMAGE_PAGES)\r
+#define APP_FLASH_REGION_START  (DSP_CODEC_FLASH_REGION_START + DSP_CODEC_FLASH_REGION_LENGTH)\r
+#define APP_FLASH_REGION_LENGTH (APP_FLASH_REGION_PAGES * FLASH_PAGE_SIZE)\r
+\r
+/* NV data Region */\r
+#define NV_FLASH_REGION_PAGES  (NV_IMAGE_PAGES)\r
+#define NV_FLASH_REGION_START  (APP_FLASH_REGION_START + APP_FLASH_REGION_LENGTH)\r
+#define NV_FLASH_REGION_LENGTH (NV_FLASH_REGION_PAGES * FLASH_PAGE_SIZE)\r
+\r
+/* Fota data Region */\r
+#define FOTA_FLASH_REGION_PAGES  (FOTA_IMAGE_PAGES)\r
+#define FOTA_FLASH_REGION_START  (NV_FLASH_REGION_START + NV_FLASH_REGION_LENGTH)\r
+#define FOTA_FLASH_REGION_LENGTH (FOTA_FLASH_REGION_PAGES * FLASH_PAGE_SIZE)\r
+\r
+#define APP_VECTORS_LOAD_ORIGIN (APP_FLASH_REGION_START)\r
+#define APP_VERSION_LOAD_ORIGIN (APP_VECTORS_LOAD_ORIGIN + APP_VECTORS_LENGTH)\r
+\r
+#define APP_PROGRAM_ORIGIN (APP_VERSION_LOAD_ORIGIN + VERSION_LENGTH)\r
+#define APP_PROGRAM_LENGTH ((APP_FLASH_REGION_LENGTH) - (APP_VECTORS_LENGTH + VERSION_LENGTH))\r
+\r
+/* cores image flash region start */\r
+#define FLASH_CORE_IMAGES_START (FLASH_START + SSB_FLASH_REGION_LENGTH + SSB_BACKUP_FLASH_REGION_LENGTH + \\r
+                                 SEC_BOOT_FLASH_REGION_LENGTH + \\r
+                                 KV_PAGES * FLASH_PAGE_SIZE + PARTITION_TABLE_REGION_LENGTH)\r
+/* ----------------------------------------------------------------------------------------------------------------- */\r
+/* KV Region Defines */\r
+/* Minimum System Configuration pages in FLASH reserved */\r
+#define SYSTEM_RESERVED_FLASH_PAGES 0\r
+/* Minimum reserved Non Volatile storage + Config Data. */\r
+#define FLASH_RESERVED_LENGTH (SYSTEM_RESERVED_FLASH_PAGES * FLASH_PAGE_SIZE)\r
+\r
+/*\r
+ * ********************* SEC BOOT REGION *********************\r
+ */\r
+#define MCU_ROOT_PUBKEY_START           SEC_BOOT_FLASH_REGION_START\r
+#define MCU_SUB_PUBKEY_START            (MCU_ROOT_PUBKEY_START + FLASH_PAGE_SIZE)\r
+#define MCU_SSB_IMAGE_SIGN_START        (MCU_SUB_PUBKEY_START + FLASH_PAGE_SIZE)\r
+#define MCU_SUB_PUBKEY_BACKUP_START     (MCU_SSB_IMAGE_SIGN_START + FLASH_PAGE_SIZE)\r
+#define MCU_SSB_IMAGE_SIGN_BACKUP_START (MCU_SUB_PUBKEY_BACKUP_START + FLASH_PAGE_SIZE)\r
+\r
+#define MCU_SEC_BOOT_SIGN_BACKUP_START  MCU_SUB_PUBKEY_BACKUP_START\r
+#define MCU_SEC_BOOT_SIGN_BACKUP_LEN    (2 * FLASH_PAGE_SIZE)\r
+\r
+#define MCU_CFCT_START                  (MCU_SEC_BOOT_SIGN_BACKUP_START + MCU_SEC_BOOT_SIGN_BACKUP_LEN)\r
+#define MCU_CFCT_LEN                    FLASH_PAGE_SIZE\r
+\r
+#define MCU_RECOVERY_IMAGE_SIGN_START   (MCU_CFCT_START + MCU_CFCT_LEN)\r
+#define MCU_BT_IMAGE_SIGN_START         (MCU_RECOVERY_IMAGE_SIGN_START + FLASH_PAGE_SIZE)\r
+#define MCU_DSP_IMAGE_SIGN_START        (MCU_BT_IMAGE_SIGN_START + FLASH_PAGE_SIZE)\r
+#define MCU_DSP1_IMAGE_SIGN_START       (MCU_DSP_IMAGE_SIGN_START + FLASH_PAGE_SIZE)\r
+#define MCU_APP_IMAGE_SIGN_START        (MCU_DSP1_IMAGE_SIGN_START + FLASH_PAGE_SIZE)\r
+#define MCU_PARTITION_TABLE_SIGN_START  (MCU_APP_IMAGE_SIGN_START + FLASH_PAGE_SIZE)\r
+\r
+#endif
\ No newline at end of file
index 3edc736..64bd965 100755 (executable)
 #endif
 
 /*
- * ********************* FLASH ALLOCATION *********************
- * Flash is shared between the cores, and also handles a limited number of
- * non-volatile storage areas.
- *
- * Flash is split into 2 main areas
- * IMAGE Area
- *  Managed by the BT core
- *  This contains, in order from the bottom of Flash:
- *      SSB - SSB image starting at the bottom of flash. Variable size depending on the SSB on the chip that
- *            the package is loaded on. The values in this file only apply to the SSB built with this file.
- *      RECOVERY_Image   - starts in the page after the SSB.
- *      BT_Image         - starts in the page after the RECOVERY_Image
- *      DSP_Image        - starts in the page after the BT_Image
- *      APP_Image        - starts in the page after the DSP_Image
- *      System On-demand region - dynamically allocated flash for FOTA etc
- * NV Area
- *  Ends at the last page of flash, is configurable in size above a minimum allocation.
- *  NV Area, of 12 pages, is allocated, from the lowest address:
- *      8 pages of general use (pages are not fixed and self-identifying), consisting of
- *          1 Page for Asset Store defragmentation
- *          3 pages for Asset Store
- *          2 Pages for App and DSP Core KV defragmentation
- *          1 page for DSP Core KV
- *          1 page for App Core KV
- *      2 pages for BT core use (last 2 pages in Flash)
- *          1 page for BT Core KV
- *          1 page for BT Core KV defragmentation
- */
-
-#define FLASH_START     0x70000000
-#define FLASH_LENGTH    0x1000000
-#define FLASH_MAX_END   (FLASH_START + FLASH_LENGTH)
-
-#define FLASH_PAGE_SIZE 4096
-/* APP ITCM config */
-#define MCU_ITCM_END    (APP_ITCM_ORIGIN + APP_ITCM_LENGTH)
-
-#define SSB_BOOT_RAM_ORIGIN APP_ITCM_ORIGIN
-#define SSB_BOOT_RAM_LENGTH APP_ITCM_LENGTH
-
-/* ----------------------------------------------------------------------------------------------------------------- */
-/* IMAGE Area Defines */
-/* MCU SSB Region */
-#define SSB_FLASH_REGION_PAGES  (SSB_IMAGE_PAGES + 5)
-#define KV_PAGES 0
-#define SSB_FLASH_REGION_START  (FLASH_START)
-#define SSB_FLASH_REGION_LENGTH (SSB_FLASH_REGION_PAGES * FLASH_PAGE_SIZE)
-
-#define SSB_VECTORS_LOAD_ORIGIN (SSB_FLASH_REGION_START)
-#define SSB_VERSION_LOAD_ORIGIN (SSB_VECTORS_LOAD_ORIGIN + APP_VECTORS_LENGTH)
-#define SSB_CHANGEID_LOAD_ORIGIN (SSB_VERSION_LOAD_ORIGIN + VERSION_LENGTH)
-
-#define SSB_PROGRAM_ORIGIN (SSB_CHANGEID_LOAD_ORIGIN + CHANGE_ID_LENGTH)
-#define SSB_PROGRAM_LENGTH ((SSB_FLASH_REGION_LENGTH) - (APP_VECTORS_LENGTH + VERSION_LENGTH + CHANGE_ID_LENGTH))
-
-/* MCU SSB BACK-UP Region */
-#define SSB_BACKUP_FLASH_REGION_PAGES  32
-#define SSB_BACKUP_FLASH_REGION_START  (SSB_FLASH_REGION_START + SSB_FLASH_REGION_LENGTH + KV_PAGES * FLASH_PAGE_SIZE)
-#define SSB_BACKUP_FLASH_REGION_LENGTH (SSB_BACKUP_FLASH_REGION_PAGES * FLASH_PAGE_SIZE)
-
-/* SEC_BOOT Region for Signature Certificate */
-#define SEC_BOOT_FLASH_REGION_PAGES  15
-#define SEC_BOOT_FLASH_REGION_START  (SSB_BACKUP_FLASH_REGION_START + SSB_BACKUP_FLASH_REGION_LENGTH)
-#define SEC_BOOT_FLASH_REGION_LENGTH (SEC_BOOT_FLASH_REGION_PAGES * FLASH_PAGE_SIZE)
-
-#define PARTITION_TABLE_REGSION_PAGE  1
-#define PARTITION_TABLE_REGION_START  (SEC_BOOT_FLASH_REGION_START + SEC_BOOT_FLASH_REGION_LENGTH)
-#define PARTITION_TABLE_REGION_LENGTH  (PARTITION_TABLE_REGSION_PAGE * FLASH_PAGE_SIZE)
-
-/* DTB Region */
-#define DTB_FLASH_REGION_PAGES  (DTB_IMAGE_PAGES)
-#define DTB_FLASH_REGION_START  (PARTITION_TABLE_REGION_START + PARTITION_TABLE_REGION_LENGTH)
-#define DTB_FLASH_REGION_LENGTH (DTB_FLASH_REGION_PAGES * FLASH_PAGE_SIZE)
-
-/* RECOVERY Region */
-#define RECOVERY_FLASH_REGION_PAGES  (RECOVERY_IMAGE_PAGES)
-#define RECOVERY_FLASH_REGION_START  (DTB_FLASH_REGION_START + DTB_FLASH_REGION_LENGTH)
-#define RECOVERY_FLASH_REGION_LENGTH (RECOVERY_FLASH_REGION_PAGES * FLASH_PAGE_SIZE)
-
-#define RECOVERY_VECTORS_LOAD_ORIGIN (RECOVERY_FLASH_REGION_START)
-#define RECOVERY_VERSION_LOAD_ORIGIN (RECOVERY_VECTORS_LOAD_ORIGIN + BT_VECTORS_LENGTH)
-#define RECOVERY_CHANGEID_LOAD_ORIGIN (RECOVERY_VERSION_LOAD_ORIGIN + VERSION_LENGTH)
-
-#define RECOVERY_PROGRAM_ORIGIN (RECOVERY_CHANGEID_LOAD_ORIGIN + CHANGE_ID_LENGTH)
-#define RECOVERY_PROGRAM_LENGTH ((RECOVERY_FLASH_REGION_LENGTH) - \
-                                 (BT_VECTORS_LENGTH + VERSION_LENGTH + CHANGE_ID_LENGTH))
-
-/* RESERVE Region */
-#define RESERVE_FLASH_REGION_PAGES  (RESERVE_IMAGE_PAGES)
-#define RESERVE_FLASH_REGION_START  (RECOVERY_FLASH_REGION_START + RECOVERY_FLASH_REGION_LENGTH)
-#define RESERVE_FLASH_REGION_LENGTH (RESERVE_FLASH_REGION_PAGES * FLASH_PAGE_SIZE)
-
-/* BT Region */
-#define BT_FLASH_REGION_PAGES  (BT_IMAGE_PAGES)
-#define BT_FLASH_REGION_START  (RESERVE_FLASH_REGION_START + RESERVE_FLASH_REGION_LENGTH)
-#define BT_FLASH_REGION_LENGTH (BT_FLASH_REGION_PAGES * FLASH_PAGE_SIZE)
-
-#define BT_BUILD_INFO_ORIGIN (BT_FLASH_REGION_START)
-#define BT_VECTORS_LOAD_ORIGIN (BT_BUILD_INFO_ORIGIN + BUILD_INFO_LENGRH)
-#define BT_VERSION_LOAD_ORIGIN (BT_VECTORS_LOAD_ORIGIN + BT_VECTORS_LENGTH)
-#define BT_CHANGEID_LOAD_ORIGIN (BT_VERSION_LOAD_ORIGIN + VERSION_LENGTH)
-#define DSP_CHANGEID_LOAD_ORIGIN (BT_CHANGEID_LOAD_ORIGIN + CHANGE_ID_LENGTH)
-
-/* Fill 4 byte to align flash 8 byte */
-#define BT_PROGRAM_ORIGIN (DSP_CHANGEID_LOAD_ORIGIN + CHANGE_ID_LENGTH)
-#define BT_PROGRAM_LENGTH ((BT_FLASH_REGION_LENGTH) - (BT_VECTORS_LENGTH + \
-                           VERSION_LENGTH + CHANGE_ID_LENGTH + CHANGE_ID_LENGTH))
-
-/* DSP Region */
-#define DSP_FLASH_REGION_PAGES  (HIFI0_IMAGE_PAGES)
-#define DSP_FLASH_REGION_START  (BT_FLASH_REGION_START + BT_FLASH_REGION_LENGTH)
-#define DSP_FLASH_REGION_LENGTH (DSP_FLASH_REGION_PAGES * FLASH_PAGE_SIZE)
-
-/* DSP1 Region */
-#define DSP_CODEC_FLASH_REGION_PAGES  (HIFI0_CODEC_PAGES)
-#define DSP_CODEC_FLASH_REGION_START  (DSP_FLASH_REGION_START + DSP_FLASH_REGION_LENGTH)
-#define DSP_CODEC_FLASH_REGION_LENGTH (DSP_CODEC_FLASH_REGION_PAGES * FLASH_PAGE_SIZE)
-
-/* APP Region */
-#define APP_FLASH_REGION_PAGES  (APP_IMAGE_PAGES)
-#define APP_FLASH_REGION_START  (DSP_CODEC_FLASH_REGION_START + DSP_CODEC_FLASH_REGION_LENGTH)
-#define APP_FLASH_REGION_LENGTH (APP_FLASH_REGION_PAGES * FLASH_PAGE_SIZE)
-
-/* NV data Region */
-#define NV_FLASH_REGION_PAGES  (NV_IMAGE_PAGES)
-#define NV_FLASH_REGION_START  (APP_FLASH_REGION_START + APP_FLASH_REGION_LENGTH)
-#define NV_FLASH_REGION_LENGTH (NV_FLASH_REGION_PAGES * FLASH_PAGE_SIZE)
-
-/* Fota data Region */
-#define FOTA_FLASH_REGION_PAGES  (FOTA_IMAGE_PAGES)
-#define FOTA_FLASH_REGION_START  (NV_FLASH_REGION_START + NV_FLASH_REGION_LENGTH)
-#define FOTA_FLASH_REGION_LENGTH (FOTA_FLASH_REGION_PAGES * FLASH_PAGE_SIZE)
-
-#define APP_VECTORS_LOAD_ORIGIN (APP_FLASH_REGION_START)
-#define APP_VERSION_LOAD_ORIGIN (APP_VECTORS_LOAD_ORIGIN + APP_VECTORS_LENGTH)
-
-#define APP_PROGRAM_ORIGIN (APP_VERSION_LOAD_ORIGIN + VERSION_LENGTH)
-#define APP_PROGRAM_LENGTH ((APP_FLASH_REGION_LENGTH) - (APP_VECTORS_LENGTH + VERSION_LENGTH))
-
-/* cores image flash region start */
-#define FLASH_CORE_IMAGES_START (FLASH_START + SSB_FLASH_REGION_LENGTH + SSB_BACKUP_FLASH_REGION_LENGTH + \
-                                 SEC_BOOT_FLASH_REGION_LENGTH + \
-                                 KV_PAGES * FLASH_PAGE_SIZE + PARTITION_TABLE_REGION_LENGTH)
-/* ----------------------------------------------------------------------------------------------------------------- */
-/* KV Region Defines */
-/* Minimum System Configuration pages in FLASH reserved */
-#define SYSTEM_RESERVED_FLASH_PAGES 0
-/* Minimum reserved Non Volatile storage + Config Data. */
-#define FLASH_RESERVED_LENGTH (SYSTEM_RESERVED_FLASH_PAGES * FLASH_PAGE_SIZE)
-
-/*
- * ********************* SEC BOOT REGION *********************
- */
-#define MCU_ROOT_PUBKEY_START           SEC_BOOT_FLASH_REGION_START
-#define MCU_SUB_PUBKEY_START            (MCU_ROOT_PUBKEY_START + FLASH_PAGE_SIZE)
-#define MCU_SSB_IMAGE_SIGN_START        (MCU_SUB_PUBKEY_START + FLASH_PAGE_SIZE)
-#define MCU_SUB_PUBKEY_BACKUP_START     (MCU_SSB_IMAGE_SIGN_START + FLASH_PAGE_SIZE)
-#define MCU_SSB_IMAGE_SIGN_BACKUP_START (MCU_SUB_PUBKEY_BACKUP_START + FLASH_PAGE_SIZE)
-
-#define MCU_SEC_BOOT_SIGN_BACKUP_START  MCU_SUB_PUBKEY_BACKUP_START
-#define MCU_SEC_BOOT_SIGN_BACKUP_LEN    (2 * FLASH_PAGE_SIZE)
-
-#define MCU_CFCT_START                  (MCU_SEC_BOOT_SIGN_BACKUP_START + MCU_SEC_BOOT_SIGN_BACKUP_LEN)
-#define MCU_CFCT_LEN                    FLASH_PAGE_SIZE
-
-#define MCU_RECOVERY_IMAGE_SIGN_START   (MCU_CFCT_START + MCU_CFCT_LEN)
-#define MCU_BT_IMAGE_SIGN_START         (MCU_RECOVERY_IMAGE_SIGN_START + FLASH_PAGE_SIZE)
-#define MCU_DSP_IMAGE_SIGN_START        (MCU_BT_IMAGE_SIGN_START + FLASH_PAGE_SIZE)
-#define MCU_DSP1_IMAGE_SIGN_START       (MCU_DSP_IMAGE_SIGN_START + FLASH_PAGE_SIZE)
-#define MCU_APP_IMAGE_SIGN_START        (MCU_DSP1_IMAGE_SIGN_START + FLASH_PAGE_SIZE)
-#define MCU_PARTITION_TABLE_SIGN_START  (MCU_APP_IMAGE_SIGN_START + FLASH_PAGE_SIZE)
+ * norflash 分区修改会导致已商用版本OTA失败,此处修改需谨慎
+ * norflash修改请同时修改以下文件:
+ *  分区表配置:
+ *   16M:build\config\target_config\brandy\param_sector\param_sector_16M.json
+ *   8M:build\config\target_config\brandy\param_sector\param_sector.json
+ *  打包脚本:
+ *  tools\pkg\chip_packet\brandy\packet.py
+*/
+#if defined(CFG_FLASH_SIZE) && (CFG_FLASH_SIZE == 16)
+#ifdef FD230
+#include "flash_16M_FD230.h"
+#else
+#include "flash_16M.h"
+#endif
+#else
+#include "flash_8M.h"
+#endif
 
 /*
  * ********************* RAM ALLOCATION *********************
index 24d6e2b..c0a6c37 100755 (executable)
@@ -25,6 +25,8 @@
 #else
 #define ENABLE_LOW_POWER                    NO
 #endif
+#if defined(CFG_FLASH_SIZE) && (CFG_FLASH_SIZE == 16)
+#ifdef FD230
 #define DTB_IMAGE_PAGES                     0
 #define RECOVERY_IMAGE_PAGES                64
 #define RESERVE_IMAGE_PAGES                 0
 #define HIFI0_IMAGE_PAGES                   112
 #define HIFI0_CODEC_PAGES                   320
 #define APP_IMAGE_PAGES                     3401
+#else
+#define DTB_IMAGE_PAGES                     0
+#define RECOVERY_IMAGE_PAGES                256
+#define RESERVE_IMAGE_PAGES                 64
+#define BT_IMAGE_PAGES                      112
+#define HIFI0_IMAGE_PAGES                   192
+#define HIFI0_CODEC_PAGES                   448
+#define APP_IMAGE_PAGES                     2048
+#endif
+#else
+#define DTB_IMAGE_PAGES                     0
+#define RECOVERY_IMAGE_PAGES                64
+#define RESERVE_IMAGE_PAGES                 0
+#define BT_IMAGE_PAGES                      112
+#define HIFI0_IMAGE_PAGES                   112
+#define HIFI0_CODEC_PAGES                   320
+#define APP_IMAGE_PAGES                     1353
+#endif
 #define NV_IMAGE_PAGES                      4
 #define FOTA_IMAGE_PAGES                    3
+#ifdef FD230
 #define FOTA_IMAGE_START                    0xFFD000
+#else
+#define FOTA_IMAGE_START                    0x770000
+#endif
 #define SSB_FOTA_OFFSET                     0x0
 #define XO_CTRIM_VALUR_DEFAULT              0x56
 #define DSP1_IPC_ENABLE                     NO
index 27ce6ab..878077f 100755 (executable)
@@ -42,13 +42,14 @@ uint64_t uapi_systick_get_time(systick_time_t time_type)
     volatile uint64_t now_count = 0;
     volatile uint64_t ret_time = 0;
     volatile uint64_t cost_msec = 0;
+    uint64_t pre_count = g_pre_systick_count;
 
     if (g_pre_systick_count == 0) {
-        g_pre_systick_count = uapi_systick_get_count();
-        g_pre_systick_msec = (g_pre_systick_count * OS_SYS_MS_PER_SECOND) / CLOCK_32K_CALI_FREQ;
+        pre_count = uapi_systick_get_count();
+        g_pre_systick_msec = (pre_count * OS_SYS_MS_PER_SECOND) / CLOCK_32K_CALI_FREQ;
     } else {
         now_count = uapi_systick_get_count();
-        cost_msec = ((now_count - g_pre_systick_count) * OS_SYS_MS_PER_SECOND) / CLOCK_32K_CALI_FREQ;
+        cost_msec = ((now_count - pre_count) * OS_SYS_MS_PER_SECOND) / CLOCK_32K_CALI_FREQ;
 
         g_pre_systick_count = now_count;
         g_pre_systick_msec = g_pre_systick_msec + cost_msec;
diff --git a/code/sdk/drivers/drivers/driver/button/button.c b/code/sdk/drivers/drivers/driver/button/button.c
new file mode 100644 (file)
index 0000000..6e0fb2a
--- /dev/null
@@ -0,0 +1,359 @@
+/**
+ * Copyright (c) @CompanyNameMagicTag 2023-2023. All rights reserved. \n
+ *
+ * Description: Button driver source file \n
+ * Author: @CompanyNameTag \n
+ * History: \n
+ * 2023-02-24, Create file. \n
+ */
+
+#include "pinctrl.h"
+#include "button_porting.h"
+#include "platform_core.h"
+#include "gpio.h"
+#include "gpio_porting.h"
+#include "debug_print.h"
+#include "rtc.h"
+#include "timer.h"
+#include "systick.h"
+#include "chip_core_irq.h"
+
+#define BUTTON_PWREN_ID 1
+/**
+ * @if Eng
+ * @brief  Button debounce struct
+ * @else
+ * @brief  按键去抖动结构体定义
+ * @endif
+ */
+typedef struct {
+    uint8_t debounced;         /*!< @if Eng Recording debounced group.
+                                    @else   记录产生抖动的按键组  @endif */
+    uint32_t debounced_time;   /*!< @if Eng Debounced time.
+                                    @else   抖动计时  @endif */
+} button_debounced_t;
+
+/**
+ * @if Eng
+ * @brief  Button information struct
+ * @else
+ * @brief  按键信息结构体定义
+ * @endif
+ */
+typedef struct {
+    uint8_t pressed_group;   /*!< @if Eng Recording button pressed group.
+                                  @else   记录被按下的按键组  @endif */
+    uint8_t which_pressed;   /*!< @if Eng Pressed button bit turns to 1
+                                  @else   被按下的按键置1  @endif */
+    uint8_t which_released;  /*!< @if Eng Releaesd button bit turns to 1
+                                  @else   被松开的按键置1  @endif */
+} button_info_t;
+
+button_debounced_t g_button_debounced = {0};
+button_map_t g_button_pin_map[BUTTON_PIN_MAP_MAX] = {0};
+timer_handle_t g_button_timer = {0};
+timer_handle_t g_gpio_button_timer = {0};
+button_info_t g_button_info = {0};
+bool g_timer_is_running = false;
+bool g_gpio_timer_is_running = false;
+msg_send_callback_t g_msg_send_cb = NULL;
+
+static const char* g_state_str[PRESSED_MAX] = {
+    "BUTTON_PRESSED",
+    "BUTTON_RESLASED",
+};
+
+static void button_debounced_timer_callback(uint32_t data);
+static void button_check_released_timer_callback(uint32_t data);
+
+void button_group_set_bit(uint8_t* group, uint8_t bit)
+{
+    (*group) |= (1 << bit);
+}
+
+static void button_group_clear_bit(uint8_t* group, uint8_t bit)
+{
+    (*group) &= ~(1 << bit);
+}
+
+static button_press_state_t button_get_press_state(pin_t pin)
+{
+    button_peripheral_api *button_api = button_port_get_api();
+    return button_api->button_get_state(pin);
+}
+
+static bool button_group_find_bit(uint8_t group, uint8_t* bit)
+{
+    if (bit == NULL) {
+        return false;
+    }
+    for (uint8_t i = 0; i < BUTTON_PIN_MAP_MAX; i++) {
+        if ((group & (1 << i)) != 0) {
+            *bit = i;
+            return true;
+        }
+    }
+    return false;
+}
+
+static void button_send_msg(uint8_t pin_group, button_press_state_t state)
+{
+    if (g_msg_send_cb == NULL) {
+        PRINT("button %d is %s\r\n", pin_group, g_state_str[state]);
+    } else {
+        g_msg_send_cb(pin_group, state);
+    }
+}
+
+static void button_timer_start(void)
+{
+    bool start = false;
+    if (!g_gpio_timer_is_running) {
+        g_gpio_timer_is_running = true;
+        start = true;
+    }
+
+    if (start) {
+        uapi_rtc_stop(g_gpio_button_timer);
+        uapi_rtc_start(g_gpio_button_timer, BUTTON_TIMER_INTERVAL, button_debounced_timer_callback, 0);
+    }
+}
+
+static void button_timer_start_check_released(void)
+{
+    bool start = false;
+    if (!g_timer_is_running) {
+        g_timer_is_running = true;
+        start = true;
+    }
+
+    if (start) {
+        uapi_rtc_stop(g_button_timer);
+        uapi_rtc_start(g_button_timer, BUTTON_CHECK_RELEADSED, button_check_released_timer_callback, 0);
+    }
+}
+
+static void button_irq_callback(pin_t pin)
+{
+    pin = PIN_NONE;
+    uapi_ulp_wkup_type_record();
+    button_peripheral_api *button_api = button_port_get_api();
+    // if not vbus or pwren interrupt return
+    if (button_api->button_check_interrupt(pin) == false) {
+        button_api->button_clear_interrupt(pin);
+        return;
+    }
+    // deal with vbus interrupt
+    if (button_api->button_check_vbus_interrupt()) {
+        button_api->button_deal_vbus_event();
+        button_api->button_clear_interrupt(pin);
+        return;
+    }
+
+    // deal with pwren interrupt
+    button_api->button_clear_interrupt(pin);
+    button_press_state_t press_state = button_get_press_state(pin);
+    button_send_msg(BUTTON_PWREN_ID, press_state);
+    button_api->button_add_veto();
+    button_timer_start_check_released();
+}
+
+static void button_gpio_callback(pin_t pin, uintptr_t param)
+{
+    unused(param);
+    uint8_t bit = 0;
+    for (uint8_t index = 0; index < BUTTON_PIN_MAP_MAX; index++) {
+        if (pin == g_button_pin_map[index].pin) {
+            bit = index;
+            break;
+        }
+    }
+
+    uapi_gpio_clear_interrupt(pin);
+    button_press_state_t press_state = button_get_press_state(pin);
+    unsigned int irq_sts = osal_irq_lock();
+    if (press_state == PRESSED) {
+        button_group_set_bit(&g_button_debounced.debounced, bit);
+        g_button_debounced.debounced_time = (uint32_t)uapi_systick_get_ms();
+    }
+    osal_irq_restore(irq_sts);
+
+    button_peripheral_api *button_api = button_port_get_api();
+    button_api->button_add_veto();
+    button_timer_start();
+}
+
+static void button_debounced_handler(void)
+{
+    pin_t pin = 0;
+    uint32_t time = (uint32_t)uapi_systick_get_ms();
+    uint8_t pressed_group = 0;
+    uint8_t bit = 0;
+    uint8_t debounced = g_button_debounced.debounced;
+
+    while (debounced > 0) {
+        if (button_group_find_bit(debounced, &bit)) {
+            button_group_clear_bit(&debounced, bit);
+            pin = g_button_pin_map[bit].pin;
+            if ((button_get_press_state(pin) == PRESSED) &&
+                (time - g_button_debounced.debounced_time >= DEBOUNCED_INTERVAL)) {
+                /* Debounce */
+                button_group_set_bit(&pressed_group, bit);
+                button_group_clear_bit(&g_button_debounced.debounced, bit);
+            }
+        }
+    }
+
+    /* Comparing with the old pressed state to figure out which buttons are pressed or released */
+    g_button_info.which_pressed = pressed_group & ~g_button_info.pressed_group;
+    g_button_info.which_released = ~pressed_group & g_button_info.pressed_group;
+
+    /* Recording pressed_group */
+    g_button_info.pressed_group = pressed_group;
+}
+
+static void button_debounced_timer_callback(uint32_t data)
+{
+    unused(data);
+    g_gpio_timer_is_running = false;
+
+    button_debounced_handler();
+
+    if (g_button_info.which_pressed != 0) {
+        button_send_msg(g_button_info.which_pressed, PRESSED);
+    } else if (g_button_info.which_released != 0) {
+        button_send_msg(g_button_info.which_released, RELEASED);
+    }
+    if (g_button_debounced.debounced != 0) {
+        button_timer_start();
+    } else {
+        button_peripheral_api *button_api = button_port_get_api();
+        button_api->button_remove_veto();
+    }
+}
+
+static void button_check_released_timer_callback(uint32_t data)
+{
+    unused(data);
+
+    g_timer_is_running = false;
+
+    button_peripheral_api *button_api = button_port_get_api();
+    button_press_state_t press_state;
+    press_state = button_get_press_state(PIN_NONE);
+    if (press_state == 1) {
+        button_send_msg(1, RELEASED);
+        button_api->button_remove_veto();
+    } else {
+        button_timer_start_check_released();
+    }
+}
+
+errcode_t uapi_button_gpio_register(pin_t pin)
+{
+    errcode_t ret;
+    ret = uapi_gpio_unregister_isr_func(pin);
+    if (ret != ERRCODE_SUCC) {
+        return ret;
+    }
+    /* GPIO set input and pull up */
+    if ((uapi_pin_set_mode(pin, (pin_mode_t)HAL_PIO_FUNC_GPIO) != ERRCODE_SUCC) ||
+        (uapi_pin_set_pull(pin, (pin_pull_t)HAL_PIO_PULL_UP) != ERRCODE_SUCC) ||
+        (uapi_gpio_set_dir(pin, GPIO_DIRECTION_INPUT) != ERRCODE_SUCC)) {
+        PRINT("gpio config failed\r\n");
+        return ERRCODE_FAIL;
+    }
+    ret = uapi_gpio_register_isr_func(pin, GPIO_INTERRUPT_DEDGE, button_gpio_callback);
+    if (ret != ERRCODE_SUCC) {
+        PRINT("button gpio register failed\r\n");
+        return ret;
+    }
+    return ERRCODE_SUCC;
+}
+
+errcode_t uapi_button_deregister(pin_t pin)
+{
+    errcode_t ret;
+    button_peripheral_api *button_api = button_port_get_api();
+    ret = button_api->button_unregister_callback(pin);
+    if (ret != ERRCODE_SUCC) {
+        PRINT("button deregister failed\r\n");
+        return ret;
+    }
+
+    return ERRCODE_SUCC;
+}
+
+errcode_t uapi_button_register(button_map_t* button_map)
+{
+    errcode_t ret = 0;
+    if (button_map == NULL) {
+        return ERRCODE_FAIL;
+    }
+
+    button_peripheral_api *button_api = button_port_get_api();
+    for (uint8_t i = 0; i < BUTTON_PIN_MAP_MAX; i++) {
+        g_button_pin_map[i].pin = button_map[i].pin;
+        g_button_pin_map[i].button = button_map[i].button;
+        if (button_map[i].pin != PIN_NONE && button_map[i].button != BUTTON_MAX) {
+            if (button_map[i].button == BUTTON_PWR) {
+                button_api->button_pmu_pwr_cfg(true);
+            }
+            ret |= uapi_button_gpio_register(g_button_pin_map[i].pin);
+        } else if (button_map[i].pin == PIN_NONE && button_map[i].button == BUTTON_PWR) {
+            ret = button_api->button_register_callback(g_button_pin_map[i].pin, (osal_irq_handler)button_irq_callback);
+            if (ret != ERRCODE_SUCC) {
+                PRINT("button register failed\r\n");
+                return ret;
+            }
+            continue;
+        }
+    }
+
+    return ret;
+}
+
+void uapi_button_deinit(void)
+{
+    /* Stop the time and clear the pin map */
+    uapi_rtc_stop(g_button_timer);
+    uapi_rtc_delete(g_button_timer);
+    g_button_timer = NULL;
+    uapi_rtc_stop(g_gpio_button_timer);
+    uapi_rtc_delete(g_gpio_button_timer);
+    g_gpio_button_timer = NULL;
+    for (uint8_t i = 0; i < BUTTON_PIN_MAP_MAX; i++) {
+        g_button_pin_map[i].pin = PIN_NONE;
+        g_button_pin_map[i].button = BUTTON_MAX;
+    }
+}
+
+errcode_t uapi_button_init(void)
+{
+    errcode_t ret = 0;
+    ret = uapi_rtc_init();
+
+    ret |= uapi_rtc_adapter(0, RTC_0_IRQN, irq_prio(RTC_0_IRQN)); /* 1: using timer1 */
+    if (ret != ERRCODE_SUCC) {
+        PRINT("uapi_rtc_init FAILED 0x%x", ret);
+        return ret;
+    }
+    ret = uapi_rtc_create(0, &g_button_timer); /* 1: using timer1 */
+    if (ret != ERRCODE_SUCC) {
+        PRINT("uapi_rtc_create FAILED 0x%x", ret);
+        return ret;
+    }
+    ret = uapi_rtc_create(0, &g_gpio_button_timer); /* 1: using timer1 */
+    if (ret != ERRCODE_SUCC) {
+        PRINT("uapi_rtc_create FAILED 0x%x", ret);
+        return ret;
+    }
+    return ERRCODE_SUCC;
+}
+
+void uapi_button_send_msg_register(msg_send_callback_t cb)
+{
+    if (cb != NULL) {
+        g_msg_send_cb = cb;
+    }
+}
\ No newline at end of file
index 9f66457..5eec00b 100755 (executable)
@@ -77,6 +77,7 @@ typedef struct {
 static mmc_save_info_t g_mmc_cur_info = { 0 };
 bool g_mmc_sleep_inited = false;
 bool g_mmc_inited = false;
+static enum mmc_bus_timing g_max_timing = bus_timing_normal;
 
 void mmc_set_first_init_flag(bool flag)
 {
@@ -694,24 +695,50 @@ static void sdhci_use_pll_clk(void)
     DPAL_WRITE_UINT16(GLB_CLKEN_ENABLE, GLB_CLKEN_REG);
 }
 
+static uint32_t sdhci_get_config_clock(struct hci_softc *sc, uint32_t clock)
+{
+    uint32_t actual_clock = clock;
+    if (clock > sc->caps.max_clk) {
+#if EMMC_BOARD_DEBUG_ON
+        dprintf("%s, clock:[%u] is greater than the max_clk:[%u]!\n", __FUNCTION__, clock, sc->caps.max_clk);
+#endif
+        actual_clock = sc->caps.max_clk;
+    }
+    switch (g_max_timing) {
+        case bus_timing_mmc_hs:
+        case bus_timing_uhs_sdr50:
+        case bus_timing_uhs_ddr50:
+        case bus_timing_mmc_ddr52:
+        case bus_timing_sd_hs:
+            if (actual_clock >= SDIOM_SRC_CLK_FREQ_LVL_50M_VAL) {
+                actual_clock = SDIOM_SRC_CLK_FREQ_LVL_49M_VAL;
+            }
+            break;
+        default:
+            break;
+    }
+    return actual_clock;
+}
+
 uint32_t sdhci_set_clock(struct hci_softc *sc, uint32_t clock)
 {
     unsigned int ret;
     static uint8_t inited = false;
-
+    uint32_t actual_clk = 0;
     if (clock == 0) {
         device_printf(sc->dev, "set clock invalid param!\n");
         return clock;
     }
+    actual_clk = sdhci_get_config_clock(sc, clock);
 #if EMMC_BOARD_DEBUG_ON
-    dprintf("%s, clock: [%u], resource:[0x%x]!\n", __FUNCTION__, clock, DPAL_GET_UINT16(SDIOM_CR_REG));
+    dprintf("%s, clk:%u,a_clk:%u,resource:[0x%x]!\n", __FUNCTION__, clock, actual_clk, DPAL_GET_UINT16(SDIOM_CR_REG));
 #endif
-    if (clock <= SDIOM_SRC_CLK_FREQ_LVL_50M_VAL) {
+    if (actual_clk <= SDIOM_SRC_CLK_FREQ_LVL_50M_VAL) {
         brandy_reg16_clrbit(BRANDY_EXTERNAL_EMMC_CCLK_DIV, EMMC_TUNING_COARSE_MODE_BIT);
     } else {
         brandy_reg16_setbit(BRANDY_EXTERNAL_EMMC_CCLK_DIV, EMMC_TUNING_COARSE_MODE_BIT);
     }
-    ret = hal_mmc_set_soc_clock(sc, clock);
+    ret = hal_mmc_set_soc_clock(sc, actual_clk);
     if (ret != 0) {
         device_printf(sc->dev, "set clock fail!\n");
         return 0;
@@ -727,17 +754,24 @@ uint32_t sdhci_set_clock(struct hci_softc *sc, uint32_t clock)
 #ifdef CFG_SDIO_EMMC_COEXIST
     if (sc->num == 0) {
 #endif
-        // After the tuning phase value is configured, the tuning clk function is automatically enabled.
-        uint32_t phase = dpal_readl(AT_STAT);
-        dpal_writel(phase, AT_STAT);
+    // After the tuning phase value is configured, the tuning clk function is automatically enabled.
+    if (actual_clk > SDIOM_SRC_CLK_FREQ_LVL_50M_VAL) {
+        brandy_reg16_clrbit(HOST_CTRL2, SAMPLE_CLK_SEL_BIT);
+        brandy_reg16_clrbit(AT_CTRL, 0x4); // 0x4 means SW_TUNE_EN
+        dpal_writel(sc->tuning_phase, AT_STAT);
+        brandy_reg16_setbit(HOST_CTRL2, SAMPLE_CLK_SEL_BIT);
         // The fixed clock is less than or equal to 52 MHz, and the tuning clock is not used.
-        if (clock <= SDIOM_SRC_CLK_FREQ_LVL_50M_VAL) {
-            brandy_reg16_clrbit(HOST_CTRL2, SAMPLE_CLK_SEL_BIT);
-        }
+    } else {
+        brandy_reg16_clrbit(HOST_CTRL2, SAMPLE_CLK_SEL_BIT);
+    }
 #ifdef CFG_SDIO_EMMC_COEXIST
     }
 #endif
-    return clock;
+#if EMMC_BOARD_DEBUG_ON
+    dprintf("%s,clk_src=0x%X, at_ctrl=0x%X, at_stat=0x%X, host2_ctrl=0x%X, tuning_phase=0x%X\r\n", __FUNCTION__,
+            readw(SDIOM_CR_REG), readw(AT_CTRL), readw(AT_STAT), readw(HOST_CTRL2), sc->tuning_phase);
+#endif
+    return actual_clk;
 }
 
 void mmc_set_internal_clk(uint16_t clk_level)
@@ -1118,6 +1152,7 @@ static void sdhci_set_mmc_io_driver(const struct hci_softc *sc, uint32_t host_id
 
 static bool sdhci_judge_dll_sample(uint32_t timing)
 {
+    if (g_max_timing < timing) { g_max_timing = timing; }
     if (timing == bus_timing_mmc_hs || timing == bus_timing_sd_hs || timing == bus_timing_normal ||
         timing == bus_timing_uhs_sdr25) {
         return false;
@@ -1162,8 +1197,7 @@ static void sdhci_set_phase(struct hci_softc *sc, uint32_t timing)
         }
     } else {
         /* SDIO device */
-        if ((timing == bus_timing_sd_hs) ||
-            (timing == bus_timing_uhs_sdr25)) {
+        if ((timing == bus_timing_sd_hs) || (timing == bus_timing_uhs_sdr25)) {
             drv_phase = DRV_PHASE_180_DEGREE;
             phase = SAMPLE_PHASE;
         } else {
@@ -1174,7 +1208,8 @@ static void sdhci_set_phase(struct hci_softc *sc, uint32_t timing)
     }
     en_flag = sdhci_judge_dll_sample(timing);
 #if EMMC_BOARD_DEBUG_ON
-    device_printf(sc->dev, "timing:%u, phase:0x%x, drv_phase:0x%x, en_flag:%d \n", timing, phase, drv_phase, en_flag);
+    device_printf(sc->dev, "timing:%u, g_max_timing =%u, phase:0x%x, drv_phase:0x%x, en_flag:%d \n", timing,
+                  g_max_timing, phase, drv_phase, en_flag);
 #endif
     sdhci_set_drv_phase(sc->num, drv_phase);
     sdhci_en_drv_dll_sample(sc, en_flag);
index 3cc5cc2..da82d30 100755 (executable)
@@ -177,8 +177,8 @@ extern "C" {
 #define SD_BUS_DIV_NUM_MASK 0xF8 // bit3---bit7
 #define SD_BUS_DIV_NUM_POST_SHIFT 3
 
-#define EMMC_TUNING_BM0_VAL (0x4210)
-#define EMMC_TUNING_BM1_VAL (0x707)
+#define EMMC_TUNING_BM0_VAL (0x4244)
+#define EMMC_TUNING_BM1_VAL (0x777)
 #define EMMC_TUNING_COARSE_MODE BIT(13)
 
 #define DWC_MSHC_PTR_VENDOR1 0x500
index 6c24c0f..44ef95d 100644 (file)
@@ -3031,7 +3031,7 @@ void hx3695_hrs_ppg_Int_handle(void)
             encoded_hrm[15] = ppg_s_data.green_cur;//绿灯电流\r
             encoded_hrm[16] = ppg_s_data.ir_cur;//红外电流\r
 \r
-            if(cm_custom_ble_service_on_flag())\r
+            if(uapi_dev_runtime_get_bt_powerstat())\r
               ble_ppgtest_server_send_input_report(encoded_hrm,PPG_DATA_LEN_MAX);\r
 \r
             // ble_op_att_send_data(ATT_CHARACTERISTIC_2a37_01_VALUE_HANDLE,encoded_hrm, \\r
@@ -3477,7 +3477,7 @@ void hx3695_spo2_ppg_Int_handle(void)
             \r
             encoded_hrm[15] = cal.R_LED;\r
             encoded_hrm[16] = cal.IR_LED1;\r
-            if(cm_custom_ble_service_on_flag())\r
+            if(uapi_dev_runtime_get_bt_powerstat())\r
               ble_ppgtest_server_send_input_report(encoded_hrm,PPG_DATA_LEN_MAX);\r
         }\r
     }\r
index cd14ba1..fc6b0a7 100755 (executable)
@@ -158,6 +158,31 @@ typedef struct {
                                         @else    UUID字段。 @endif */
 } bt_uuid_t;
 
+/**
+ * @if Eng
+ * @brief Set BT_SERVICE_TASK priority.
+ * @par   Set BT_SERVICE_TASK priority.
+ * @attention NULL
+ * @param  [in] task_priority task priority, range is 0 to 31, 0 is highest priority, 31 is lowest priority.
+ * @retval #ERRCODE_BT_SUCCESS   Excute successfully.
+ * @retval #Other               Error code, @ref errcode_bt_t
+ * @par Dependency:
+ * @li  bts_def.h
+ * @see
+ * @else
+ * @brief  设置BT_SERVICE_TASK任务优先级。
+ * @par    设置BT_SERVICE_TASK任务优先级。
+ * @attention 无
+ * @param  [in] 任务优先级, 0为最大优先级,31为最小优先级.
+ * @retval #ERRCODE_BT_SUCCESS   执行成功。
+ * @retval #Other               错误码, @ref errcode_bt_t
+ * @par 依赖:
+ * @li  bts_def.h
+ * @see
+ * @endif
+ */
+errcode_bt_t bts_set_service_task_priority(uint16_t task_priority);
+
 /**
  * @}
  */
index 814768b..4747eda 100644 (file)
@@ -1,10 +1,10 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="create style_name failed. @app_style.cpp(29),ERROR" ID="0xe11400ea" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="style_name set string value error @app_style.cpp(33),ERROR" ID="0xe114010a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="transform prop value must be set. @app_style.cpp(169),ERROR" ID="0xe114054a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="None style to parse. @app_style.cpp(187),ERROR" ID="0xe11405da" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="None style to parse. @app_style.cpp(193),ERROR" ID="0xe114060a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc space error @app_style.cpp(265),ERROR" ID="0xe114084a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="convert style name to char failed, will be dropped @app_style.cpp(295),ERROR" ID="0xe114093a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="style name length is 0 or max, will be dropped @app_style.cpp(300),ERROR" ID="0xe1140962" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="create style error @app_style.cpp(308),ERROR" ID="0xe11409a2" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="create style_name failed. @app_style.cpp(29),ERROR" ID="0xe11800ea" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="style_name set string value error @app_style.cpp(33),ERROR" ID="0xe118010a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="transform prop value must be set. @app_style.cpp(169),ERROR" ID="0xe118054a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="None style to parse. @app_style.cpp(187),ERROR" ID="0xe11805da" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="None style to parse. @app_style.cpp(193),ERROR" ID="0xe118060a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc space error @app_style.cpp(265),ERROR" ID="0xe118084a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="convert style name to char failed, will be dropped @app_style.cpp(295),ERROR" ID="0xe118093a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="style name length is 0 or max, will be dropped @app_style.cpp(300),ERROR" ID="0xe1180962" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="create style error @app_style.cpp(308),ERROR" ID="0xe11809a2" />
                        </MSG_LOG>
\ No newline at end of file
index 616ce6d..b094ecb 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="0xe11601d2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="app_style set string value error @app_style_item.cpp(62),ERROR" ID="0xe11601f2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="style item transform num to string fail @app_style_item.cpp(77),ERROR" ID="0xe116026a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="convert style prop name to char failed, will be dropped @app_style_item.cpp(90),ERROR" ID="0xe11602d2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="style prop name length is 0, will be dropped @app_style_item.cpp(95),ERROR" ID="0xe11602fa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="new styleItem error @app_style_item.cpp(114),ERROR" ID="0xe1160392" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="convert style value to char failed, will be dropped @app_style_item.cpp(135),ERROR" ID="0xe116043a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="new styleItem error @app_style_item.cpp(161),ERROR" ID="0xe116050a" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="create style item string failed. @app_style_item.cpp(58),ERROR" ID="0xe11a01d2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="app_style set string value error @app_style_item.cpp(62),ERROR" ID="0xe11a01f2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="style item transform num to string fail @app_style_item.cpp(77),ERROR" ID="0xe11a026a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="convert style prop name to char failed, will be dropped @app_style_item.cpp(90),ERROR" ID="0xe11a02d2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="style prop name length is 0, will be dropped @app_style_item.cpp(95),ERROR" ID="0xe11a02fa" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="new styleItem error @app_style_item.cpp(114),ERROR" ID="0xe11a0392" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="convert style value to char failed, will be dropped @app_style_item.cpp(135),ERROR" ID="0xe11a043a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="new styleItem error @app_style_item.cpp(161),ERROR" ID="0xe11a050a" />
                        </MSG_LOG>
\ No newline at end of file
index f56cf39..037fdca 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="0xe11a01f2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="convert id value to char failed, will be dropped @app_style_manager.cpp(227),ERROR" ID="0xe11a071a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="not supported yet @app_style_manager.cpp(243),WARNING" ID="0xe11a079b" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="invalid prop count @app_style_manager.cpp(283),ERROR" ID="0xe11a08da" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="malloc flags data buffer failed @app_style_manager.cpp(62),ERROR" ID="0xe11e01f2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="convert id value to char failed, will be dropped @app_style_manager.cpp(227),ERROR" ID="0xe11e071a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="not supported yet @app_style_manager.cpp(243),WARNING" ID="0xe11e079b" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="invalid prop count @app_style_manager.cpp(283),ERROR" ID="0xe11e08da" />
                        </MSG_LOG>
\ No newline at end of file
index 7f8007a..8528e7a 100644 (file)
@@ -1,9 +1,9 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg1" NAME="btsrv_init: create msg queue fail ret:%08x @btsrv_task.c(42),ERROR" ID="0xd8020152" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="btsrv_init: create task fail ret:%08x @btsrv_task.c(52),ERROR" ID="0xd80201a2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="btsrv_init: set pri error:%08x @btsrv_task.c(57),ERROR" ID="0xd80201ca" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="btsrv_init: task create success @btsrv_task.c(60),INFO" ID="0xd80201e5" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="msg id %d not register @btsrv_task.c(86),WARNING" ID="0xd80202b3" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="btsrv_send_simple_msg: send fail msg_id: %d ret: %08x @btsrv_task.c(94),ERROR" ID="0xd80202f2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="invalid msg id %d @btsrv_task.c(110),WARNING" ID="0xd8020373" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="handle funcs is null @btsrv_task.c(115),WARNING" ID="0xd802039b" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg1" NAME="btsrv_init: create msg queue fail ret:%08x @btsrv_task.c(44),ERROR" ID="0xd8020162" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="btsrv_init: create task fail ret:%08x @btsrv_task.c(54),ERROR" ID="0xd80201b2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="btsrv_init: set pri error:%08x @btsrv_task.c(59),ERROR" ID="0xd80201da" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="btsrv_init: task create success @btsrv_task.c(62),INFO" ID="0xd80201f5" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="msg id %d not register @btsrv_task.c(88),WARNING" ID="0xd80202c3" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="btsrv_send_simple_msg: send fail msg_id: %d ret: %08x @btsrv_task.c(96),ERROR" ID="0xd8020302" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="invalid msg id %d @btsrv_task.c(112),WARNING" ID="0xd8020383" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="handle funcs is null @btsrv_task.c(117),WARNING" ID="0xd80203ab" />
                        </MSG_LOG>
\ No newline at end of file
index 076b14e..a62c263 100644 (file)
@@ -8,8 +8,8 @@
                        <MSG STRUCTURE="diag_log_msg0" NAME="multiImgInfo is nullptr! @image_cache_manager.cpp(110),ERROR" ID="0xcb1c0372" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="UIMalloc node failed! @image_cache_manager.cpp(120),ERROR" ID="0xcb1c03c2" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="multiImgInfo.info is nullptr @image_cache_manager.cpp(130),ERROR" ID="0xcb1c0412" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="LRU free short term image %s resid:%d @image_cache_manager.cpp(148),WARNING" ID="0xcb1c04a3" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="LRU free long term image %s resid:%d @image_cache_manager.cpp(157),WARNING" ID="0xcb1c04eb" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="LRU free short term image %s resid: 0x%x @image_cache_manager.cpp(148),DBG" ID="0xcb1c04a6" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="LRU free long term image %s resid: 0x%x @image_cache_manager.cpp(157),DBG" ID="0xcb1c04ee" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="UIMalloc for node failed! @image_cache_manager.cpp(170),ERROR" ID="0xcb1c0552" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="ImageCacheMalloc for img data failed! @image_cache_manager.cpp(178),ERROR" ID="0xcb1c0592" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="File is not loaded. File: %s. @image_cache_manager.cpp(216),ERROR" ID="0xcb1c06c2" />
index 83155ae..39339db 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="0xe10e00ed" />
-                       <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="0xe10e014a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="init state -&gt; ready state @js_page_state.cpp(49),INFO" ID="0xe10e018d" />
-                       <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="0xe10e01e2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="current state(%d) -&gt; show state @js_page_state.cpp(68),INFO" ID="0xe10e0225" />
-                       <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="0xe10e026a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="current state(%d) -&gt; background state @js_page_state.cpp(85),INFO" ID="0xe10e02ad" />
-                       <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="0xe10e02ea" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="current state(%d) -&gt; destroy state @js_page_state.cpp(102),INFO" ID="0xe10e0335" />
-                       <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="0xe10e037a" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="undefined state -&gt; init state @js_page_state.cpp(29),INFO" ID="0xe11200ed" />
+                       <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="0xe112014a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="init state -&gt; ready state @js_page_state.cpp(49),INFO" ID="0xe112018d" />
+                       <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="0xe11201e2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="current state(%d) -&gt; show state @js_page_state.cpp(68),INFO" ID="0xe1120225" />
+                       <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="0xe112026a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="current state(%d) -&gt; background state @js_page_state.cpp(85),INFO" ID="0xe11202ad" />
+                       <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="0xe11202ea" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="current state(%d) -&gt; destroy state @js_page_state.cpp(102),INFO" ID="0xe1120335" />
+                       <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="0xe112037a" />
                        </MSG_LOG>
\ No newline at end of file
index 8798793..2b6d5b6 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="0xe110029a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc path memory heap failed. @js_page_state_machine.cpp(116),ERROR" ID="0xe11003a2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="delete $page property failed from global object. @js_page_state_machine.cpp(148),ERROR" ID="0xe11004a2" />
-                       <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="0xe1100502" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="statemachine init failed as object is invalid. @js_page_state_machine.cpp(177),ERROR" ID="0xe110058a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="statemachine init failed as uri is invalid. @js_page_state_machine.cpp(186),ERROR" ID="0xe11005d2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="statemachine init failed as uri is invalid. @js_page_state_machine.cpp(194),ERROR" ID="0xe1100612" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="statemachine init failed as uri is empty. @js_page_state_machine.cpp(201),ERROR" ID="0xe110064a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="statemachine init failed as generating js file's path failed. @js_page_state_machine.cpp(211),ERROR" ID="0xe110069a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="statemachine init failed as js file isn't existed. @js_page_state_machine.cpp(220),ERROR" ID="0xe11006e2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="error input state:%d @js_page_state_machine.cpp(278),ERROR" ID="0xe11008b2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="relocat page JS file failed @js_page_state_machine.cpp(295),ERROR" ID="0xe110093a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Eval JS file failed @js_page_state_machine.cpp(301),ERROR" ID="0xe110096a" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="JS Heap allocBytes[%d], peakAllocBytes[%d] @js_page_state_machine.cpp(333),DBG" ID="0xe1100a6e" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="StateMachine::ShowPage @js_page_state_machine.cpp(365),INFO" ID="0xe1100b6d" />
-                       <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="0xe1100b7b" />
-                       <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="0xe1100bf3" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="input parameter is invalid when invoking page life cycle callback. @js_page_state_machine.cpp(399),ERROR" ID="0xe1100c7a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="delete $page property failed from global object. @js_page_state_machine.cpp(424),ERROR" ID="0xe1100d42" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="delete $root property failed from global object. @js_page_state_machine.cpp(433),ERROR" ID="0xe1100d8a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[%d] components leaked! @js_page_state_machine.cpp(475),ERROR" ID="0xe1100eda" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg1" NAME="error input state:%d @js_page_state_machine.cpp(83),ERROR" ID="0xe114029a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc path memory heap failed. @js_page_state_machine.cpp(116),ERROR" ID="0xe11403a2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="delete $page property failed from global object. @js_page_state_machine.cpp(148),ERROR" ID="0xe11404a2" />
+                       <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="0xe1140502" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="statemachine init failed as object is invalid. @js_page_state_machine.cpp(177),ERROR" ID="0xe114058a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="statemachine init failed as uri is invalid. @js_page_state_machine.cpp(186),ERROR" ID="0xe11405d2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="statemachine init failed as uri is invalid. @js_page_state_machine.cpp(194),ERROR" ID="0xe1140612" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="statemachine init failed as uri is empty. @js_page_state_machine.cpp(201),ERROR" ID="0xe114064a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="statemachine init failed as generating js file's path failed. @js_page_state_machine.cpp(211),ERROR" ID="0xe114069a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="statemachine init failed as js file isn't existed. @js_page_state_machine.cpp(220),ERROR" ID="0xe11406e2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="error input state:%d @js_page_state_machine.cpp(278),ERROR" ID="0xe11408b2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="relocat page JS file failed @js_page_state_machine.cpp(295),ERROR" ID="0xe114093a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="Eval JS file failed @js_page_state_machine.cpp(301),ERROR" ID="0xe114096a" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="JS Heap allocBytes[%d], peakAllocBytes[%d] @js_page_state_machine.cpp(333),DBG" ID="0xe1140a6e" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="StateMachine::ShowPage @js_page_state_machine.cpp(365),INFO" ID="0xe1140b6d" />
+                       <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="0xe1140b7b" />
+                       <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="0xe1140bf3" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="input parameter is invalid when invoking page life cycle callback. @js_page_state_machine.cpp(399),ERROR" ID="0xe1140c7a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="delete $page property failed from global object. @js_page_state_machine.cpp(424),ERROR" ID="0xe1140d42" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="delete $root property failed from global object. @js_page_state_machine.cpp(433),ERROR" ID="0xe1140d8a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[%d] components leaked! @js_page_state_machine.cpp(475),ERROR" ID="0xe1140eda" />
                        </MSG_LOG>
\ No newline at end of file
index b28742c..d6361bb 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="0xe11200fa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="router is replacing, can not handle the new request @js_router.cpp(43),ERROR" ID="0xe112015a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc state machine memory heap failed. @js_router.cpp(48),ERROR" ID="0xe1120182" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="dispatch replacing request failed @js_router.cpp(64),ERROR" ID="0xe1120202" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="replace sync failed, new sm should be prepared @js_router.cpp(78),ERROR" ID="0xe1120272" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="the whole application is in background, move to HIDE state directly @js_router.cpp(94),DBG" ID="0xe11202f6" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="no SM when performing show @js_router.cpp(110),ERROR" ID="0xe1120372" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="no SM when performing background @js_router.cpp(122),ERROR" ID="0xe11203d2" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="replace async failed with null input parameter @js_router.cpp(31),ERROR" ID="0xe11600fa" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="router is replacing, can not handle the new request @js_router.cpp(43),ERROR" ID="0xe116015a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc state machine memory heap failed. @js_router.cpp(48),ERROR" ID="0xe1160182" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="dispatch replacing request failed @js_router.cpp(64),ERROR" ID="0xe1160202" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="replace sync failed, new sm should be prepared @js_router.cpp(78),ERROR" ID="0xe1160272" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="the whole application is in background, move to HIDE state directly @js_router.cpp(94),DBG" ID="0xe11602f6" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="no SM when performing show @js_router.cpp(110),ERROR" ID="0xe1160372" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="no SM when performing background @js_router.cpp(122),ERROR" ID="0xe11603d2" />
                        </MSG_LOG>
\ No newline at end of file
index 58d336d..1bdf5bd 100644 (file)
@@ -1,33 +1,33 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg1" NAME="unsupported BlendMode: %u. @lite_m_gfx_engine.cpp(84),ERROR" ID="0xcb0e02a2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="unsupported color format: %d @lite_m_gfx_engine.cpp(128),ERROR" ID="0xcb0e0402" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Convert2VGUCap failed! Invalid Capstyle! @lite_m_gfx_engine.cpp(141),ERROR" ID="0xcb0e046a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Convert2VGUBuffer failed. @lite_m_gfx_engine.cpp(172),ERROR" ID="0xcb0e0562" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Fill operation failed. @lite_m_gfx_engine.cpp(203),ERROR" ID="0xcb0e065a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="font weight %u was not support @lite_m_gfx_engine.cpp(325),ERROR" ID="0xcb0e0a2a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="VGUPathAppendData failed. @lite_m_gfx_engine.cpp(366),ERROR" ID="0xcb0e0b72" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="VGUPathSetData failed. @lite_m_gfx_engine.cpp(377),ERROR" ID="0xcb0e0bca" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Convert2VGUBuffer failed. @lite_m_gfx_engine.cpp(404),ERROR" ID="0xcb0e0ca2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="RenderPath failed. @lite_m_gfx_engine.cpp(415),ERROR" ID="0xcb0e0cfa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Convert2VGUBuffer failed. @lite_m_gfx_engine.cpp(436),ERROR" ID="0xcb0e0da2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="RenderPath failed. @lite_m_gfx_engine.cpp(447),ERROR" ID="0xcb0e0dfa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Convert2VGUBuffer failed. @lite_m_gfx_engine.cpp(463),ERROR" ID="0xcb0e0e7a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="RenderPath failed. @lite_m_gfx_engine.cpp(489),ERROR" ID="0xcb0e0f4a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Convert2VGUBuffer failed. @lite_m_gfx_engine.cpp(504),ERROR" ID="0xcb0e0fc2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="RenderPath failed. @lite_m_gfx_engine.cpp(516),ERROR" ID="0xcb0e1022" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Convert2VGUBuffer failed. @lite_m_gfx_engine.cpp(626),ERROR" ID="0xcb0e1392" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Convert2VGUBuffer failed. @lite_m_gfx_engine.cpp(653),ERROR" ID="0xcb0e146a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="RenderBlur failed! @lite_m_gfx_engine.cpp(669),ERROR" ID="0xcb0e14ea" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="RenderBlit failed! @lite_m_gfx_engine.cpp(728),ERROR" ID="0xcb0e16c2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="DrawTransform failed. Software can only process uncompressed data. @lite_m_gfx_engine.cpp(763),ERROR" ID="0xcb0e17da" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="vguFuncs_ is null! @lite_m_gfx_engine.cpp(818),ERROR" ID="0xcb0e1992" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="InitVgu or RenderClearRect is null! @lite_m_gfx_engine.cpp(822),ERROR" ID="0xcb0e19b2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="VGUPathInit, VGUPathAppendData, VGUPathClear or RenderPath is nullptr! @lite_m_gfx_engine.cpp(829),ERROR" ID="0xcb0e19ea" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="VGUPathInit, VGUPathAppendData, VGUPathClear or RenderPath is nullptr! @lite_m_gfx_engine.cpp(835),ERROR" ID="0xcb0e1a1a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="InitVgu failed! @lite_m_gfx_engine.cpp(840),ERROR" ID="0xcb0e1a42" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="vguFuncs_ is null! @lite_m_gfx_engine.cpp(851),INFO" ID="0xcb0e1a9d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="DeinitVgu failed! @lite_m_gfx_engine.cpp(856),ERROR" ID="0xcb0e1ac2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="AllocBuffer failed. @lite_m_gfx_engine.cpp(875),ERROR" ID="0xcb0e1b5a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="unsupported PixelFormat: %d @lite_m_gfx_engine.cpp(902),ERROR" ID="0xcb0e1c32" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="bufferInfo_ is not inited. @lite_m_gfx_engine.cpp(1021),ERROR" ID="0xcb0e1fea" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="set value: %d @lite_m_gfx_engine.cpp(1066),DBG" ID="0xcb0e2156" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg1" NAME="unsupported BlendMode: %u. @lite_m_gfx_engine.cpp(73),ERROR" ID="0xcb0e024a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="unsupported color format: %d @lite_m_gfx_engine.cpp(117),ERROR" ID="0xcb0e03aa" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="Convert2VGUCap failed! Invalid Capstyle! @lite_m_gfx_engine.cpp(130),ERROR" ID="0xcb0e0412" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="Convert2VGUBuffer failed. @lite_m_gfx_engine.cpp(161),ERROR" ID="0xcb0e050a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="Fill operation failed. @lite_m_gfx_engine.cpp(192),ERROR" ID="0xcb0e0602" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="font weight %u was not support @lite_m_gfx_engine.cpp(314),ERROR" ID="0xcb0e09d2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="VGUPathAppendData failed. @lite_m_gfx_engine.cpp(355),ERROR" ID="0xcb0e0b1a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="VGUPathSetData failed. @lite_m_gfx_engine.cpp(366),ERROR" ID="0xcb0e0b72" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="Convert2VGUBuffer failed. @lite_m_gfx_engine.cpp(393),ERROR" ID="0xcb0e0c4a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="RenderPath failed. @lite_m_gfx_engine.cpp(404),ERROR" ID="0xcb0e0ca2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="Convert2VGUBuffer failed. @lite_m_gfx_engine.cpp(425),ERROR" ID="0xcb0e0d4a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="RenderPath failed. @lite_m_gfx_engine.cpp(436),ERROR" ID="0xcb0e0da2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="Convert2VGUBuffer failed. @lite_m_gfx_engine.cpp(452),ERROR" ID="0xcb0e0e22" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="RenderPath failed. @lite_m_gfx_engine.cpp(478),ERROR" ID="0xcb0e0ef2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="Convert2VGUBuffer failed. @lite_m_gfx_engine.cpp(493),ERROR" ID="0xcb0e0f6a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="RenderPath failed. @lite_m_gfx_engine.cpp(505),ERROR" ID="0xcb0e0fca" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="Convert2VGUBuffer failed. @lite_m_gfx_engine.cpp(615),ERROR" ID="0xcb0e133a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="Convert2VGUBuffer failed. @lite_m_gfx_engine.cpp(642),ERROR" ID="0xcb0e1412" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="RenderBlur failed! @lite_m_gfx_engine.cpp(658),ERROR" ID="0xcb0e1492" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="RenderBlit failed! @lite_m_gfx_engine.cpp(711),ERROR" ID="0xcb0e163a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="DrawTransform failed. Software can only process uncompressed data. @lite_m_gfx_engine.cpp(746),ERROR" ID="0xcb0e1752" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="vguFuncs_ is null! @lite_m_gfx_engine.cpp(801),ERROR" ID="0xcb0e190a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="InitVgu or RenderClearRect is null! @lite_m_gfx_engine.cpp(805),ERROR" ID="0xcb0e192a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="VGUPathInit, VGUPathAppendData, VGUPathClear or RenderPath is nullptr! @lite_m_gfx_engine.cpp(812),ERROR" ID="0xcb0e1962" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="VGUPathInit, VGUPathAppendData, VGUPathClear or RenderPath is nullptr! @lite_m_gfx_engine.cpp(818),ERROR" ID="0xcb0e1992" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="InitVgu failed! @lite_m_gfx_engine.cpp(823),ERROR" ID="0xcb0e19ba" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="vguFuncs_ is null! @lite_m_gfx_engine.cpp(834),INFO" ID="0xcb0e1a15" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="DeinitVgu failed! @lite_m_gfx_engine.cpp(839),ERROR" ID="0xcb0e1a3a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="AllocBuffer failed. @lite_m_gfx_engine.cpp(858),ERROR" ID="0xcb0e1ad2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="unsupported PixelFormat: %d @lite_m_gfx_engine.cpp(885),ERROR" ID="0xcb0e1baa" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="bufferInfo_ is not inited. @lite_m_gfx_engine.cpp(989),ERROR" ID="0xcb0e1eea" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="set value: %d @lite_m_gfx_engine.cpp(1042),DBG" ID="0xcb0e2096" />
                        </MSG_LOG>
\ No newline at end of file
index fdff056..4a02f36 100644 (file)
@@ -1,72 +1,72 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="set svg faild, path len is 0 @map_svg_parser.cpp(54),ERROR" ID="0xcb4801b2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Invalid file path. @map_svg_parser.cpp(67),ERROR" ID="0xcb48021a" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="File(%s) can not open. errno: %d @map_svg_parser.cpp(73),ERROR" ID="0xcb48024a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="read map header faild @map_svg_parser.cpp(78),ERROR" ID="0xcb480272" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="parser map success @map_svg_parser.cpp(97),DBG" ID="0xcb48030e" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="parser map failed @map_svg_parser.cpp(104),DBG" ID="0xcb480346" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s map header faild @map_svg_parser.cpp(113),ERROR" ID="0xcb48038a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="The remaining data is insufficient. The read ends. @map_svg_parser.cpp(118),WARNING" ID="0xcb4803b3" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="parser map success @map_svg_parser.cpp(153),DBG" ID="0xcb4804ce" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[%s] param error! @map_svg_parser.cpp(160),ERROR" ID="0xcb480502" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc map node array faild! @map_svg_parser.cpp(167),ERROR" ID="0xcb48053a" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="read map node array faild, readLen:%d, realReadLen:%d @map_svg_parser.cpp(174),ERROR" ID="0xcb480572" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[%s] param error! @map_svg_parser.cpp(187),ERROR" ID="0xcb4805da" />
-                       <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="0xcb48060a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc map node array faild! @map_svg_parser.cpp(198),ERROR" ID="0xcb480632" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="memcpy_s map node array faild, nodeLen: 0x%x @map_svg_parser.cpp(205),ERROR" ID="0xcb48066a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[%s] param error! @map_svg_parser.cpp(215),ERROR" ID="0xcb4806ba" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc path style array faild! @map_svg_parser.cpp(222),ERROR" ID="0xcb4806f2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s path style array faild @map_svg_parser.cpp(229),ERROR" ID="0xcb48072a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[%s] param error! @map_svg_parser.cpp(242),ERROR" ID="0xcb480792" />
-                       <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="0xcb4807c2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc path style array faild! @map_svg_parser.cpp(254),ERROR" ID="0xcb4807f2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s path style array faild @map_svg_parser.cpp(261),ERROR" ID="0xcb48082a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Alloc buffer for buffer failed. @map_svg_parser.cpp(275),ERROR" ID="0xcb48089a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Alloc buffer for buffer failed. @map_svg_parser.cpp(284),ERROR" ID="0xcb4808e2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[%s] param error! @map_svg_parser.cpp(295),ERROR" ID="0xcb48093a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc map path array faild! @map_svg_parser.cpp(302),ERROR" ID="0xcb480972" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="read map path array faild @map_svg_parser.cpp(311),ERROR" ID="0xcb4809ba" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="alloc path faild @map_svg_parser.cpp(318),ERROR" ID="0xcb4809f2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="read path cmd faild @map_svg_parser.cpp(324),ERROR" ID="0xcb480a22" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="read path data faild @map_svg_parser.cpp(330),ERROR" ID="0xcb480a52" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[%s] param error! @map_svg_parser.cpp(341),ERROR" ID="0xcb480aaa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc map path array faild! @map_svg_parser.cpp(348),ERROR" ID="0xcb480ae2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s map path array faild @map_svg_parser.cpp(356),ERROR" ID="0xcb480b22" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="alloc path faild @map_svg_parser.cpp(366),ERROR" ID="0xcb480b72" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s path cmd faild @map_svg_parser.cpp(371),ERROR" ID="0xcb480b9a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s path data faild @map_svg_parser.cpp(378),ERROR" ID="0xcb480bd2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[%s] param error! @map_svg_parser.cpp(413),ERROR" ID="0xcb480cea" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc map path array faild! @map_svg_parser.cpp(420),ERROR" ID="0xcb480d22" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="read map text array faild @map_svg_parser.cpp(429),ERROR" ID="0xcb480d6a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc map path cmd faild @map_svg_parser.cpp(436),ERROR" ID="0xcb480da2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="read text faild @map_svg_parser.cpp(443),ERROR" ID="0xcb480dda" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc text offset faild @map_svg_parser.cpp(451),ERROR" ID="0xcb480e1a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="read text offset faild @map_svg_parser.cpp(457),ERROR" ID="0xcb480e4a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[%s] param error! @map_svg_parser.cpp(468),ERROR" ID="0xcb480ea2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc map path array faild! @map_svg_parser.cpp(475),ERROR" ID="0xcb480eda" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s map text array faild @map_svg_parser.cpp(483),ERROR" ID="0xcb480f1a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc map path cmd faild @map_svg_parser.cpp(492),ERROR" ID="0xcb480f62" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s text faild @map_svg_parser.cpp(497),ERROR" ID="0xcb480f8a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc text offset faild @map_svg_parser.cpp(507),ERROR" ID="0xcb480fda" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s text offset faild @map_svg_parser.cpp(512),ERROR" ID="0xcb481002" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[%s] param error! @map_svg_parser.cpp(546),ERROR" ID="0xcb481112" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc map path array faild! @map_svg_parser.cpp(553),ERROR" ID="0xcb48114a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="read map image array faild @map_svg_parser.cpp(558),ERROR" ID="0xcb481172" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc map path array faild! @map_svg_parser.cpp(566),ERROR" ID="0xcb4811b2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[%s] param error! @map_svg_parser.cpp(595),ERROR" ID="0xcb48129a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc map path array faild! @map_svg_parser.cpp(602),ERROR" ID="0xcb4812d2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s map text array faild @map_svg_parser.cpp(607),ERROR" ID="0xcb4812fa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc map path array faild! @map_svg_parser.cpp(615),ERROR" ID="0xcb48133a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[%s] param error! @map_svg_parser.cpp(647),ERROR" ID="0xcb48143a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc map path array faild! @map_svg_parser.cpp(654),ERROR" ID="0xcb481472" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="read map road array faild @map_svg_parser.cpp(659),ERROR" ID="0xcb48149a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[%s] param error! @map_svg_parser.cpp(669),ERROR" ID="0xcb4814ea" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc map path array faild! @map_svg_parser.cpp(676),ERROR" ID="0xcb481522" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s map text array faild @map_svg_parser.cpp(681),ERROR" ID="0xcb48154a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[%s] param error! @map_svg_parser.cpp(700),ERROR" ID="0xcb4815e2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc map path array faild! @map_svg_parser.cpp(707),ERROR" ID="0xcb48161a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="read map poi array faild @map_svg_parser.cpp(712),ERROR" ID="0xcb481642" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[%s] param error! @map_svg_parser.cpp(722),ERROR" ID="0xcb481692" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc map path array faild! @map_svg_parser.cpp(729),ERROR" ID="0xcb4816ca" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s map text array faild @map_svg_parser.cpp(734),ERROR" ID="0xcb4816f2" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="set svg faild, path len is 0 @map_svg_parser.cpp(54),ERROR" ID="0xcb4a01b2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="Invalid file path. @map_svg_parser.cpp(67),ERROR" ID="0xcb4a021a" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="File(%s) can not open. errno: %d @map_svg_parser.cpp(73),ERROR" ID="0xcb4a024a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="read map header faild @map_svg_parser.cpp(78),ERROR" ID="0xcb4a0272" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="parser map success @map_svg_parser.cpp(97),DBG" ID="0xcb4a030e" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="parser map failed @map_svg_parser.cpp(104),DBG" ID="0xcb4a0346" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s map header faild @map_svg_parser.cpp(113),ERROR" ID="0xcb4a038a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="The remaining data is insufficient. The read ends. @map_svg_parser.cpp(118),WARNING" ID="0xcb4a03b3" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="parser map success @map_svg_parser.cpp(153),DBG" ID="0xcb4a04ce" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[%s] param error! @map_svg_parser.cpp(160),ERROR" ID="0xcb4a0502" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc map node array faild! @map_svg_parser.cpp(167),ERROR" ID="0xcb4a053a" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="read map node array faild, readLen:%d, realReadLen:%d @map_svg_parser.cpp(174),ERROR" ID="0xcb4a0572" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[%s] param error! @map_svg_parser.cpp(187),ERROR" ID="0xcb4a05da" />
+                       <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="0xcb4a060a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc map node array faild! @map_svg_parser.cpp(198),ERROR" ID="0xcb4a0632" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="memcpy_s map node array faild, nodeLen: 0x%x @map_svg_parser.cpp(205),ERROR" ID="0xcb4a066a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[%s] param error! @map_svg_parser.cpp(215),ERROR" ID="0xcb4a06ba" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc path style array faild! @map_svg_parser.cpp(222),ERROR" ID="0xcb4a06f2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s path style array faild @map_svg_parser.cpp(229),ERROR" ID="0xcb4a072a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[%s] param error! @map_svg_parser.cpp(242),ERROR" ID="0xcb4a0792" />
+                       <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="0xcb4a07c2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc path style array faild! @map_svg_parser.cpp(254),ERROR" ID="0xcb4a07f2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s path style array faild @map_svg_parser.cpp(261),ERROR" ID="0xcb4a082a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="Alloc buffer for buffer failed. @map_svg_parser.cpp(275),ERROR" ID="0xcb4a089a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="Alloc buffer for buffer failed. @map_svg_parser.cpp(284),ERROR" ID="0xcb4a08e2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[%s] param error! @map_svg_parser.cpp(295),ERROR" ID="0xcb4a093a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc map path array faild! @map_svg_parser.cpp(302),ERROR" ID="0xcb4a0972" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="read map path array faild @map_svg_parser.cpp(311),ERROR" ID="0xcb4a09ba" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="alloc path faild @map_svg_parser.cpp(318),ERROR" ID="0xcb4a09f2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="read path cmd faild @map_svg_parser.cpp(324),ERROR" ID="0xcb4a0a22" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="read path data faild @map_svg_parser.cpp(330),ERROR" ID="0xcb4a0a52" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[%s] param error! @map_svg_parser.cpp(341),ERROR" ID="0xcb4a0aaa" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc map path array faild! @map_svg_parser.cpp(348),ERROR" ID="0xcb4a0ae2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s map path array faild @map_svg_parser.cpp(356),ERROR" ID="0xcb4a0b22" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="alloc path faild @map_svg_parser.cpp(366),ERROR" ID="0xcb4a0b72" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s path cmd faild @map_svg_parser.cpp(371),ERROR" ID="0xcb4a0b9a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s path data faild @map_svg_parser.cpp(378),ERROR" ID="0xcb4a0bd2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[%s] param error! @map_svg_parser.cpp(413),ERROR" ID="0xcb4a0cea" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc map path array faild! @map_svg_parser.cpp(420),ERROR" ID="0xcb4a0d22" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="read map text array faild @map_svg_parser.cpp(429),ERROR" ID="0xcb4a0d6a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc map path cmd faild @map_svg_parser.cpp(436),ERROR" ID="0xcb4a0da2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="read text faild @map_svg_parser.cpp(443),ERROR" ID="0xcb4a0dda" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc text offset faild @map_svg_parser.cpp(451),ERROR" ID="0xcb4a0e1a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="read text offset faild @map_svg_parser.cpp(457),ERROR" ID="0xcb4a0e4a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[%s] param error! @map_svg_parser.cpp(468),ERROR" ID="0xcb4a0ea2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc map path array faild! @map_svg_parser.cpp(475),ERROR" ID="0xcb4a0eda" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s map text array faild @map_svg_parser.cpp(483),ERROR" ID="0xcb4a0f1a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc map path cmd faild @map_svg_parser.cpp(492),ERROR" ID="0xcb4a0f62" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s text faild @map_svg_parser.cpp(497),ERROR" ID="0xcb4a0f8a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc text offset faild @map_svg_parser.cpp(507),ERROR" ID="0xcb4a0fda" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s text offset faild @map_svg_parser.cpp(512),ERROR" ID="0xcb4a1002" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[%s] param error! @map_svg_parser.cpp(546),ERROR" ID="0xcb4a1112" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc map path array faild! @map_svg_parser.cpp(553),ERROR" ID="0xcb4a114a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="read map image array faild @map_svg_parser.cpp(558),ERROR" ID="0xcb4a1172" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc map path array faild! @map_svg_parser.cpp(566),ERROR" ID="0xcb4a11b2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[%s] param error! @map_svg_parser.cpp(595),ERROR" ID="0xcb4a129a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc map path array faild! @map_svg_parser.cpp(602),ERROR" ID="0xcb4a12d2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s map text array faild @map_svg_parser.cpp(607),ERROR" ID="0xcb4a12fa" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc map path array faild! @map_svg_parser.cpp(615),ERROR" ID="0xcb4a133a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[%s] param error! @map_svg_parser.cpp(647),ERROR" ID="0xcb4a143a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc map path array faild! @map_svg_parser.cpp(654),ERROR" ID="0xcb4a1472" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="read map road array faild @map_svg_parser.cpp(659),ERROR" ID="0xcb4a149a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[%s] param error! @map_svg_parser.cpp(669),ERROR" ID="0xcb4a14ea" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc map path array faild! @map_svg_parser.cpp(676),ERROR" ID="0xcb4a1522" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s map text array faild @map_svg_parser.cpp(681),ERROR" ID="0xcb4a154a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[%s] param error! @map_svg_parser.cpp(700),ERROR" ID="0xcb4a15e2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc map path array faild! @map_svg_parser.cpp(707),ERROR" ID="0xcb4a161a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="read map poi array faild @map_svg_parser.cpp(712),ERROR" ID="0xcb4a1642" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[%s] param error! @map_svg_parser.cpp(722),ERROR" ID="0xcb4a1692" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="malloc map path array faild! @map_svg_parser.cpp(729),ERROR" ID="0xcb4a16ca" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="memcpy_s map text array faild @map_svg_parser.cpp(734),ERROR" ID="0xcb4a16f2" />
                        </MSG_LOG>
\ No newline at end of file
index b988bc9..5df549e 100644 (file)
@@ -1,4 +1,4 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg1" NAME="ACELite version: %s @platform_adapter.cpp(34),DBG" ID="0xe11e0116" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ACELite commit: %s @platform_adapter.cpp(35),DBG" ID="0xe11e011e" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="ACELite build stamp: %s @platform_adapter.cpp(36),DBG" ID="0xe11e0126" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg1" NAME="ACELite version: %s @platform_adapter.cpp(34),DBG" ID="0xe1220116" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ACELite commit: %s @platform_adapter.cpp(35),DBG" ID="0xe122011e" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="ACELite build stamp: %s @platform_adapter.cpp(36),DBG" ID="0xe1220126" />
                        </MSG_LOG>
\ No newline at end of file
index b0ce8ca..8666eca 100644 (file)
@@ -1,52 +1,58 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg1" NAME="osal_sem_init error %x @spp_service.c(85),ERROR" ID="0xd82a02aa" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="osal_sem_down error %x @spp_service.c(111),ERROR" ID="0xd82a037a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="client num reached max limit @spp_service.c(135),ERROR" ID="0xd82a043a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="client malloc fail @spp_service.c(141),ERROR" ID="0xd82a046a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="uuid memcpy fail @spp_service.c(148),ERROR" ID="0xd82a04a2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="spp client %x add success @spp_service.c(159),INFO" ID="0xd82a04fd" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="uuid=%s @spp_service.c(183),INFO" ID="0xd82a05bd" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="client_id invalid @spp_service.c(238),ERROR" ID="0xd82a0772" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="sleep too long. %d ms. @spp_service.c(251),WARNING" ID="0xd82a07db" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="spp client %x delete success @spp_service.c(257),INFO" ID="0xd82a080d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="add client fail @spp_service.c(266),ERROR" ID="0xd82a0852" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg1" NAME="osal_sem_init error %x @spp_service.c(86),ERROR" ID="0xd82a02b2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="osal_sem_down error %x @spp_service.c(110),ERROR" ID="0xd82a0372" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="client num reached max limit @spp_service.c(134),ERROR" ID="0xd82a0432" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="client malloc fail @spp_service.c(140),ERROR" ID="0xd82a0462" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="uuid memcpy fail @spp_service.c(147),ERROR" ID="0xd82a049a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="spp client %x add success @spp_service.c(158),INFO" ID="0xd82a04f5" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="uuid=%s @spp_service.c(182),INFO" ID="0xd82a05b5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="client_id invalid @spp_service.c(237),ERROR" ID="0xd82a076a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="sleep too long. %d ms. @spp_service.c(250),WARNING" ID="0xd82a07d3" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="spp client %x delete success @spp_service.c(256),INFO" ID="0xd82a0805" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="add client fail @spp_service.c(265),ERROR" ID="0xd82a084a" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="spp server %x add success @spp_service.c(295),INFO" ID="0xd82a093d" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="spp server %x add fail @spp_service.c(298),ERROR" ID="0xd82a0952" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="sleep too long. %d ms. @spp_service.c(339),WARNING" ID="0xd82a0a9b" />
                        <MSG STRUCTURE="diag_log_msg1" NAME="unregister spp service ret: %x @spp_service.c(346),WARNING" ID="0xd82a0ad3" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="spp server %x delete success @spp_service.c(353),INFO" ID="0xd82a0b0d" />
-                       <MSG STRUCTURE="diag_log_msg3" NAME="spp connect connHdl: %x devHdl: %x svcHdl: %x @spp_service.c(358),INFO" ID="0xd82a0b35" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="server not exist @spp_service.c(364),WARNING" ID="0xd82a0b63" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="client not exist @spp_service.c(371),WARNING" ID="0xd82a0b9b" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="spp disconnect connHdl: %x @spp_service.c(385),INFO" ID="0xd82a0c0d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="client not exist @spp_service.c(389),WARNING" ID="0xd82a0c2b" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="server %x disconnected @spp_service.c(401),INFO" ID="0xd82a0c8d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="unhandled msg id %x @spp_service.c(426),WARNING" ID="0xd82a0d53" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="params socket_para invalid. @spp_service.c(434),ERROR" ID="0xd82a0d92" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="uuid invalid @spp_service.c(439),ERROR" ID="0xd82a0dba" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="params name len invalid. @spp_service.c(445),ERROR" ID="0xd82a0dea" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="exist same uuid client @spp_service.c(452),ERROR" ID="0xd82a0e22" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="add server fail @spp_service.c(458),ERROR" ID="0xd82a0e52" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="btsdk_register_spp_service fail @spp_service.c(474),WARNING" ID="0xd82a0ed3" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="server %x create success. svc_hdl: %x @spp_service.c(478),INFO" ID="0xd82a0ef5" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="BTSDK_DisconnectConnection fail retCode: %x @spp_service.c(525),ERROR" ID="0xd82a106a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="access_cnt=%d @spp_service.c(531),INFO" ID="0xd82a109d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="socket_type invalid @spp_service.c(543),ERROR" ID="0xd82a10fa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="uuid invalid @spp_service.c(548),ERROR" ID="0xd82a1122" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="acl not connected @spp_service.c(553),ERROR" ID="0xd82a114a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="dev_hdl invalid @spp_service.c(559),ERROR" ID="0xd82a117a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="add client fail @spp_service.c(573),INFO" ID="0xd82a11ed" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="connect spp fail. ret: %x @spp_service.c(582),INFO" ID="0xd82a1235" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="BTSDK_DisconnectConnection fail retCode: %x @spp_service.c(607),ERROR" ID="0xd82a12fa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="spp read data failed @spp_service.c(693),ERROR" ID="0xd82a15aa" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="client is null. client id %d @spp_service.c(717),ERROR" ID="0xd82a166a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="client not connected. client id %d @spp_service.c(721),ERROR" ID="0xd82a168a" />
-                       <MSG STRUCTURE="diag_log_msg4" NAME="connHdl: %x dataLen: %d writeRet: %d writeLen: %d @spp_service.c(736),WARNING" ID="0xd82a1703" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="hdl 0x%x not exist @spp_service.c(750),WARNING" ID="0xd82a1773" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="no recieve function registered @spp_service.c(757),INFO" ID="0xd82a17ad" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="hdl 0x%x not exist @spp_service.c(772),WARNING" ID="0xd82a1823" />
-                       <MSG STRUCTURE="diag_log_msg2" NAME="no match client id for hdl 0x%x, try %d times @spp_service.c(776),INFO" ID="0xd82a1845" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="BTSDK_SPP_EVT_CONNECTED hdl=0x%x @spp_service.c(792),INFO" ID="0xd82a18c5" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="BTSDK_SPP_EVT_DISCONNECTED hdl=0x%x @spp_service.c(796),INFO" ID="0xd82a18e5" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="BTSDK_SPP_EVT_FC_ON hdl=0x%x @spp_service.c(803),INFO" ID="0xd82a191d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="unknown msg hdl=0x%x @spp_service.c(806),WARNING" ID="0xd82a1933" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="spp server %x delete success @spp_service.c(357),INFO" ID="0xd82a0b2d" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="spp connect connHdl: %x devHdl: %x svcHdl: %x @spp_service.c(362),INFO" ID="0xd82a0b55" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="server not exist @spp_service.c(368),WARNING" ID="0xd82a0b83" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="client not exist @spp_service.c(375),WARNING" ID="0xd82a0bbb" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="spp disconnect connHdl: %x @spp_service.c(396),INFO" ID="0xd82a0c65" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="client not exist @spp_service.c(400),WARNING" ID="0xd82a0c83" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="server %x disconnected @spp_service.c(412),INFO" ID="0xd82a0ce5" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="unhandled msg id %x @spp_service.c(437),WARNING" ID="0xd82a0dab" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="params socket_para invalid. @spp_service.c(445),ERROR" ID="0xd82a0dea" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="uuid invalid @spp_service.c(450),ERROR" ID="0xd82a0e12" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="params name len invalid. @spp_service.c(456),ERROR" ID="0xd82a0e42" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="exist same uuid client @spp_service.c(463),ERROR" ID="0xd82a0e7a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="add server fail @spp_service.c(469),ERROR" ID="0xd82a0eaa" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="btsdk_register_spp_service fail @spp_service.c(485),WARNING" ID="0xd82a0f2b" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="server %x create success. svc_hdl: %x @spp_service.c(489),INFO" ID="0xd82a0f4d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="server id %d invalid @spp_service.c(498),ERROR" ID="0xd82a0f92" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="server not exist. server id %d @spp_service.c(505),ERROR" ID="0xd82a0fca" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="server is already waiting to accept. server id %d @spp_service.c(510),ERROR" ID="0xd82a0ff2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="client not exist. server id %d @spp_service.c(522),ERROR" ID="0xd82a1052" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="server waiting for accept timeout. server id %d @spp_service.c(536),ERROR" ID="0xd82a10c2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="server not exist. server id %d @spp_service.c(553),ERROR" ID="0xd82a114a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="BTSDK_DisconnectConnection fail retCode: %x @spp_service.c(563),ERROR" ID="0xd82a119a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="access_cnt=%d @spp_service.c(569),INFO" ID="0xd82a11cd" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="socket_type invalid @spp_service.c(581),ERROR" ID="0xd82a122a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="uuid invalid @spp_service.c(586),ERROR" ID="0xd82a1252" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="acl not connected @spp_service.c(591),ERROR" ID="0xd82a127a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="dev_hdl invalid @spp_service.c(597),ERROR" ID="0xd82a12aa" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="add client fail @spp_service.c(611),INFO" ID="0xd82a131d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="connect spp fail. ret: %x @spp_service.c(620),INFO" ID="0xd82a1365" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="BTSDK_DisconnectConnection fail retCode: %x @spp_service.c(645),ERROR" ID="0xd82a142a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="spp read data failed @spp_service.c(731),ERROR" ID="0xd82a16da" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="client is null. client id %d @spp_service.c(755),ERROR" ID="0xd82a179a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="client not connected. client id %d @spp_service.c(759),ERROR" ID="0xd82a17ba" />
+                       <MSG STRUCTURE="diag_log_msg4" NAME="connHdl: %x dataLen: %d writeRet: %d writeLen: %d @spp_service.c(774),WARNING" ID="0xd82a1833" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="hdl 0x%x not exist @spp_service.c(788),WARNING" ID="0xd82a18a3" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="no recieve function registered @spp_service.c(795),INFO" ID="0xd82a18dd" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="hdl 0x%x not exist @spp_service.c(810),WARNING" ID="0xd82a1953" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="no match client id for hdl 0x%x, try %d times @spp_service.c(814),INFO" ID="0xd82a1975" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="BTSDK_SPP_EVT_CONNECTED hdl=0x%x @spp_service.c(830),INFO" ID="0xd82a19f5" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="BTSDK_SPP_EVT_DISCONNECTED hdl=0x%x @spp_service.c(834),INFO" ID="0xd82a1a15" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="BTSDK_SPP_EVT_FC_ON hdl=0x%x @spp_service.c(841),INFO" ID="0xd82a1a4d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="unknown msg hdl=0x%x @spp_service.c(844),WARNING" ID="0xd82a1a63" />
                        </MSG_LOG>
\ No newline at end of file
index cf81c86..a5a0035 100644 (file)
@@ -3,5 +3,6 @@
                        <MSG STRUCTURE="diag_log_msg0" NAME="insert failed, view is nullptr @ui_coverflow_view2.cpp(76),ERROR" ID="0xcb400262" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="add failed, the view type is not support, only suppot UITransformGroup. @ui_coverflow_view2.cpp(81),ERROR" ID="0xcb40028a" />
                        <MSG STRUCTURE="diag_log_msg0" NAME="remove failed, view is nullptr @ui_coverflow_view2.cpp(99),ERROR" ID="0xcb40031a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="remove failed, view parent is nullptr @ui_coverflow_view2.cpp(104),ERROR" ID="0xcb400342" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="remove failed, the view type is not support, only suppot UITransformGroup. @ui_coverflow_view2.cpp(104),ERROR" ID="0xcb400342" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="remove failed, view parent is nullptr @ui_coverflow_view2.cpp(110),ERROR" ID="0xcb400372" />
                        </MSG_LOG>
\ No newline at end of file
index c474fb1..7b69562 100644 (file)
@@ -1,2 +1,2 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="A maximum of 20 records can be added. @ui_icosahedron_view.cpp(108),ERROR" ID="0xcb440362" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="A maximum of 20 records can be added. @ui_icosahedron_view.cpp(108),ERROR" ID="0xcb460362" />
                        </MSG_LOG>
\ No newline at end of file
index ee2cc76..0a05ed5 100644 (file)
@@ -1,3 +1,3 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="pois_ malloc fail @ui_map_view.cpp(79),ERROR" ID="0xcb46027a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="roads_ malloc fail @ui_map_view.cpp(130),ERROR" ID="0xcb460412" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="pois_ malloc fail @ui_map_view.cpp(79),ERROR" ID="0xcb48027a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="roads_ malloc fail @ui_map_view.cpp(130),ERROR" ID="0xcb480412" />
                        </MSG_LOG>
\ No newline at end of file
index 2645a8d..dfbff85 100644 (file)
@@ -1,12 +1,12 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="RollerItemInfo is nullptr! @ui_roller_view.cpp(180),ERROR" ID="0xcb4205a2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Already add an item with the same name. Remove it before adding this. @ui_roller_view.cpp(224),ERROR" ID="0xcb420702" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="name is empty! @ui_roller_view.cpp(267),ERROR" ID="0xcb42085a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Should remove an item in DISPLAY mode @ui_roller_view.cpp(272),ERROR" ID="0xcb420882" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="RollerItemInfo is null! @ui_roller_view.cpp(453),ERROR" ID="0xcb420e2a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Cannot set align item when mode is about to change. @ui_roller_view.cpp(506),ERROR" ID="0xcb420fd2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Should SetCurrentItem in DISPLAY mode. @ui_roller_view.cpp(510),ERROR" ID="0xcb420ff2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="Cannot find an item with name: %s @ui_roller_view.cpp(525),ERROR" ID="0xcb42106a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Cannot set mode when AlignAnim is running @ui_roller_view.cpp(620),ERROR" ID="0xcb421362" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="mode is already set. @ui_roller_view.cpp(625),ERROR" ID="0xcb42138a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="Cannot Set mode during transition or cannot set TRANSITION mode. @ui_roller_view.cpp(630),ERROR" ID="0xcb4213b2" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="RollerItemInfo is nullptr! @ui_roller_view.cpp(180),ERROR" ID="0xcb4405a2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="Already add an item with the same name. Remove it before adding this. @ui_roller_view.cpp(224),ERROR" ID="0xcb440702" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="name is empty! @ui_roller_view.cpp(267),ERROR" ID="0xcb44085a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="Should remove an item in DISPLAY mode @ui_roller_view.cpp(272),ERROR" ID="0xcb440882" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="RollerItemInfo is null! @ui_roller_view.cpp(453),ERROR" ID="0xcb440e2a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="Cannot set align item when mode is about to change. @ui_roller_view.cpp(506),ERROR" ID="0xcb440fd2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="Should SetCurrentItem in DISPLAY mode. @ui_roller_view.cpp(510),ERROR" ID="0xcb440ff2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="Cannot find an item with name: %s @ui_roller_view.cpp(525),ERROR" ID="0xcb44106a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="Cannot set mode when AlignAnim is running @ui_roller_view.cpp(620),ERROR" ID="0xcb441362" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="mode is already set. @ui_roller_view.cpp(625),ERROR" ID="0xcb44138a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="Cannot Set mode during transition or cannot set TRANSITION mode. @ui_roller_view.cpp(630),ERROR" ID="0xcb4413b2" />
                        </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_slipflow_view.cpp.xml b/code/sdk/interim_binary/brandy/acore/build_hso_cfg/hso_database/xml/base/closed_comp/ui_slipflow_view.cpp.xml
new file mode 100644 (file)
index 0000000..9bd50c7
--- /dev/null
@@ -0,0 +1,3 @@
+<MSG_LOG><MSG STRUCTURE="diag_log_msg0" NAME="add failed, view is nullptr @ui_slipflow_view.cpp(60),ERROR" ID="0xcb4201e2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="remove faild, Input parameter error. @ui_slipflow_view.cpp(135),ERROR" ID="0xcb42043a" />
+                       </MSG_LOG>
\ No newline at end of file
index a9391cb..31f7899 100644 (file)
@@ -1,3 +1,3 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg1" NAME="Failed to create the child control. The control of this [%d] cannot be copied. @ui_transform_group.cpp(35),WARNING" ID="0xcb54011b" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="add failed, the view type %d is not support @ui_transform_group.cpp(49),ERROR" ID="0xcb54018a" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg1" NAME="Failed to create the child control. The control of this [%d] cannot be copied. @ui_transform_group.cpp(35),WARNING" ID="0xcb56011b" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="add failed, the view type %d is not support @ui_transform_group.cpp(49),ERROR" ID="0xcb56018a" />
                        </MSG_LOG>
\ No newline at end of file
index 2541a89..b826476 100755 (executable)
@@ -1,88 +1,88 @@
-<MSG_LOG><MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call connector_list_output_event_callback Failed, Error Code: [0x%08X] @core_sea.c(164),ERROR" ID="0x98600522" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]event = %d @core_sea.c(180),INFO" ID="0x986005a5" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]mode = %u @core_sea.c(239),ERROR" ID="0x9860077a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]eng_ind.type = 0x%08X @core_sea.c(251),ERROR" ID="0x986007da" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]eng_ind.lib_id = %u @core_sea.c(256),ERROR" ID="0x98600802" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]eng_ind.type = 0x%08X @core_sea.c(271),ERROR" ID="0x9860087a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]eng_ind.lib_id = %u @core_sea.c(276),ERROR" ID="0x986008a2" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]All lib_id of afe and aai are null. @core_sea.c(307),ERROR" ID="0x9860099a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]in_pcm-&gt;samples_per_frame = %u @core_sea.c(335),ERROR" ID="0x98600a7a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]in_pcm-&gt;sample_rate = %u @core_sea.c(336),ERROR" ID="0x98600a82" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]entry = %p,  Null Pointer! @core_sea.c(371),ERROR" ID="0x98600b9a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call create Failed, Error Code: [0x%08X] @core_sea.c(384),ERROR" ID="0x98600c02" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call get_eng_attr Failed, Error Code: [0x%08X] @core_sea.c(396),WARNING" ID="0x98600c63" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call core_mod_get_module Failed, Error Code: [0x%08X] @core_sea.c(586),ERROR" ID="0x98601252" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]sea = 0x%08X @core_sea.c(587),INFO" ID="0x9860125d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call core_mod_init Failed, Error Code: [0x%08X] @core_sea.c(684),ERROR" ID="0x98601562" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call core_mod_deinit Failed, Error Code: [0x%08X] @core_sea.c(706),ERROR" ID="0x98601612" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(728),INFO" ID="0x986016c5" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Error Code: [0x%08X] @core_sea.c(739),ERROR" ID="0x9860171a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call get_eng_caps Failed, Error Code: [0x%08X] @core_sea.c(747),ERROR" ID="0x9860175a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(752),INFO" ID="0x98601785" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(761),INFO" ID="0x986017cd" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call get_def_pcm_attr Failed, Error Code: [0x%08X] @core_sea.c(773),ERROR" ID="0x9860182a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(777),INFO" ID="0x9860184d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(787),INFO" ID="0x9860189d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call core_mod_alloc Failed, Error Code: [0x%08X] @core_sea.c(799),ERROR" ID="0x986018fa" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call sea_entry_create Failed, Error Code: [0x%08X] @core_sea.c(807),ERROR" ID="0x9860193a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call sea_set_input_stream Failed, Error Code: [0x%08X] @core_sea.c(816),ERROR" ID="0x98601982" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(836),INFO" ID="0x98601a25" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(847),INFO" ID="0x98601a7d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]ret = %d @core_sea.c(852),ERROR" ID="0x98601aa2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call sea_entry_destroy Failed, Error Code: [0x%08X] @core_sea.c(859),ERROR" ID="0x98601ada" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(871),INFO" ID="0x98601b3d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(880),INFO" ID="0x98601b85" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(885),INFO" ID="0x98601bad" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(895),INFO" ID="0x98601bfd" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call sea_entry_set_enable Failed, Error Code: [0x%08X] @core_sea.c(899),ERROR" ID="0x98601c1a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(905),INFO" ID="0x98601c4d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(915),INFO" ID="0x98601c9d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call sea_entry_set_enable Failed, Error Code: [0x%08X] @core_sea.c(919),ERROR" ID="0x98601cba" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(925),INFO" ID="0x98601ced" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(934),INFO" ID="0x98601d35" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(936),INFO" ID="0x98601d45" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(946),INFO" ID="0x98601d95" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(960),INFO" ID="0x98601e05" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(971),INFO" ID="0x98601e5d" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call sea_entry_set_attr Failed, Error Code: [0x%08X] @core_sea.c(991),ERROR" ID="0x98601efa" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(996),INFO" ID="0x98601f25" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(1005),INFO" ID="0x98601f6d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(1008),INFO" ID="0x98601f85" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(1020),INFO" ID="0x98601fe5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(1039),INFO" ID="0x9860207d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(1050),INFO" ID="0x986020d5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(1069),INFO" ID="0x9860216d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(1080),INFO" ID="0x986021c5" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Error Code: [0x%08X] @core_sea.c(1084),ERROR" ID="0x986021e2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call sea_set_input_stream Failed, Error Code: [0x%08X] @core_sea.c(1095),ERROR" ID="0x9860223a" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call sea_entry_set_input_pcm Failed, Error Code: [0x%08X] @core_sea.c(1102),ERROR" ID="0x98602272" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(1113),INFO" ID="0x986022cd" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(1123),INFO" ID="0x9860231d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(1131),INFO" ID="0x9860235d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(1144),INFO" ID="0x986023c5" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call sea_set_input_stream Failed, Error Code: [0x%08X] @core_sea.c(1160),ERROR" ID="0x98602442" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call sea_entry_set_input_pcm Failed, Error Code: [0x%08X] @core_sea.c(1166),ERROR" ID="0x98602472" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(1170),INFO" ID="0x98602495" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(1180),INFO" ID="0x986024e5" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]data_port_id = %u @core_sea.c(1184),ERROR" ID="0x98602502" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(1194),INFO" ID="0x98602555" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(1205),INFO" ID="0x986025ad" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call sea_entry_get_items Failed, Error Code: [0x%08X] @core_sea.c(1211),ERROR" ID="0x986025da" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(1216),INFO" ID="0x98602605" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(1226),INFO" ID="0x98602655" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call sea_entry_get_items Failed, Error Code: [0x%08X] @core_sea.c(1231),ERROR" ID="0x9860267a" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(1235),INFO" ID="0x9860269d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(1244),INFO" ID="0x986026e5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(1247),INFO" ID="0x986026fd" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(1256),INFO" ID="0x98602745" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(1259),INFO" ID="0x9860275d" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(1268),INFO" ID="0x986027a5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(1270),INFO" ID="0x986027b5" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(1280),INFO" ID="0x98602805" />
-                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(1288),INFO" ID="0x98602845" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Error Code: [0x%08X] @core_sea.c(1302),ERROR" ID="0x986028b2" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call connector_get_buffer_info Failed, Error Code: [0x%08X] @core_sea.c(1333),ERROR" ID="0x986029aa" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call sea_get_proc_info Failed, Error Code: [0x%08X] @core_sea.c(1380),ERROR" ID="0x98602b22" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]load_type = %u @core_sea.c(1394),ERROR" ID="0x98602b92" />
-                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]load_type = %u @core_sea.c(1406),ERROR" ID="0x98602bf2" />
+<MSG_LOG><MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call connector_list_output_event_callback Failed, Error Code: [0x%08X] @core_sea.c(191),ERROR" ID="0x986005fa" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]event = %d @core_sea.c(207),INFO" ID="0x9860067d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]mode = %u @core_sea.c(266),ERROR" ID="0x98600852" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]eng_ind.type = 0x%08X @core_sea.c(278),ERROR" ID="0x986008b2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]eng_ind.lib_id = %u @core_sea.c(283),ERROR" ID="0x986008da" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]eng_ind.type = 0x%08X @core_sea.c(298),ERROR" ID="0x98600952" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]eng_ind.lib_id = %u @core_sea.c(303),ERROR" ID="0x9860097a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]All lib_id of afe and aai are null. @core_sea.c(334),ERROR" ID="0x98600a72" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]in_pcm-&gt;samples_per_frame = %u @core_sea.c(362),ERROR" ID="0x98600b52" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]in_pcm-&gt;sample_rate = %u @core_sea.c(363),ERROR" ID="0x98600b5a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]entry = %p,  Null Pointer! @core_sea.c(398),ERROR" ID="0x98600c72" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call create Failed, Error Code: [0x%08X] @core_sea.c(411),ERROR" ID="0x98600cda" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call get_eng_attr Failed, Error Code: [0x%08X] @core_sea.c(423),WARNING" ID="0x98600d3b" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call core_mod_get_module Failed, Error Code: [0x%08X] @core_sea.c(585),ERROR" ID="0x9860124a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]sea = 0x%08X @core_sea.c(586),INFO" ID="0x98601255" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call core_mod_init Failed, Error Code: [0x%08X] @core_sea.c(683),ERROR" ID="0x9860155a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call core_mod_deinit Failed, Error Code: [0x%08X] @core_sea.c(705),ERROR" ID="0x9860160a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(727),INFO" ID="0x986016bd" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Error Code: [0x%08X] @core_sea.c(738),ERROR" ID="0x98601712" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call get_eng_caps Failed, Error Code: [0x%08X] @core_sea.c(746),ERROR" ID="0x98601752" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(751),INFO" ID="0x9860177d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(760),INFO" ID="0x986017c5" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call get_def_pcm_attr Failed, Error Code: [0x%08X] @core_sea.c(772),ERROR" ID="0x98601822" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(776),INFO" ID="0x98601845" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(786),INFO" ID="0x98601895" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call core_mod_alloc Failed, Error Code: [0x%08X] @core_sea.c(798),ERROR" ID="0x986018f2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call sea_entry_create Failed, Error Code: [0x%08X] @core_sea.c(806),ERROR" ID="0x98601932" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call sea_set_input_stream Failed, Error Code: [0x%08X] @core_sea.c(815),ERROR" ID="0x9860197a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(835),INFO" ID="0x98601a1d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(846),INFO" ID="0x98601a75" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]ret = %d @core_sea.c(851),ERROR" ID="0x98601a9a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call sea_entry_destroy Failed, Error Code: [0x%08X] @core_sea.c(858),ERROR" ID="0x98601ad2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(870),INFO" ID="0x98601b35" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(879),INFO" ID="0x98601b7d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(884),INFO" ID="0x98601ba5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(894),INFO" ID="0x98601bf5" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call sea_entry_set_enable Failed, Error Code: [0x%08X] @core_sea.c(898),ERROR" ID="0x98601c12" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(904),INFO" ID="0x98601c45" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(914),INFO" ID="0x98601c95" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call sea_entry_set_enable Failed, Error Code: [0x%08X] @core_sea.c(918),ERROR" ID="0x98601cb2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(924),INFO" ID="0x98601ce5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(933),INFO" ID="0x98601d2d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(935),INFO" ID="0x98601d3d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(945),INFO" ID="0x98601d8d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(959),INFO" ID="0x98601dfd" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(970),INFO" ID="0x98601e55" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call sea_entry_set_attr Failed, Error Code: [0x%08X] @core_sea.c(990),ERROR" ID="0x98601ef2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(995),INFO" ID="0x98601f1d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(1004),INFO" ID="0x98601f65" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(1007),INFO" ID="0x98601f7d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(1019),INFO" ID="0x98601fdd" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(1038),INFO" ID="0x98602075" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(1049),INFO" ID="0x986020cd" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(1068),INFO" ID="0x98602165" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(1079),INFO" ID="0x986021bd" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Error Code: [0x%08X] @core_sea.c(1083),ERROR" ID="0x986021da" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call sea_set_input_stream Failed, Error Code: [0x%08X] @core_sea.c(1094),ERROR" ID="0x98602232" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call sea_entry_set_input_pcm Failed, Error Code: [0x%08X] @core_sea.c(1101),ERROR" ID="0x9860226a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(1112),INFO" ID="0x986022c5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(1122),INFO" ID="0x98602315" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(1130),INFO" ID="0x98602355" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(1143),INFO" ID="0x986023bd" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call sea_set_input_stream Failed, Error Code: [0x%08X] @core_sea.c(1159),ERROR" ID="0x9860243a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call sea_entry_set_input_pcm Failed, Error Code: [0x%08X] @core_sea.c(1165),ERROR" ID="0x9860246a" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(1169),INFO" ID="0x9860248d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(1179),INFO" ID="0x986024dd" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]data_port_id = %u @core_sea.c(1183),ERROR" ID="0x986024fa" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(1193),INFO" ID="0x9860254d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(1204),INFO" ID="0x986025a5" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call sea_entry_get_items Failed, Error Code: [0x%08X] @core_sea.c(1210),ERROR" ID="0x986025d2" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(1215),INFO" ID="0x986025fd" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(1225),INFO" ID="0x9860264d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call sea_entry_get_items Failed, Error Code: [0x%08X] @core_sea.c(1230),ERROR" ID="0x98602672" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(1234),INFO" ID="0x98602695" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(1243),INFO" ID="0x986026dd" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(1246),INFO" ID="0x986026f5" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(1255),INFO" ID="0x9860273d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(1258),INFO" ID="0x98602755" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(1267),INFO" ID="0x9860279d" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(1269),INFO" ID="0x986027ad" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]enter... @core_sea.c(1279),INFO" ID="0x986027fd" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[hifi]exit... @core_sea.c(1287),INFO" ID="0x9860283d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Error Code: [0x%08X] @core_sea.c(1301),ERROR" ID="0x986028aa" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call connector_get_buffer_info Failed, Error Code: [0x%08X] @core_sea.c(1332),ERROR" ID="0x986029a2" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]Call sea_get_proc_info Failed, Error Code: [0x%08X] @core_sea.c(1379),ERROR" ID="0x98602b1a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]load_type = %u @core_sea.c(1393),ERROR" ID="0x98602b8a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hifi]load_type = %u @core_sea.c(1405),ERROR" ID="0x98602bea" />
                        </MSG_LOG>
\ No newline at end of file
index b1d8c6a..189bb53 100755 (executable)
                        <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(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_msg0" NAME="[GAP][HCI]memcpy failed @hci_core_ram.c(167),ERROR" ID="0x8ba6053a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[HCI] cmd_opcode 0x%x @hci_core_ram.c(896),ERROR" ID="0x8ba61c02" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hci][len] %02x @hci_core_ram.c(899),INFO" ID="0x8ba61c1d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[HCI][H--&gt;C] %02x @hci_core_ram.c(902),INFO" ID="0x8ba61c35" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[T%x][TIMEOUT] OPCODE=0x%x, TIMER=0x%x @hci_core_ram.c(1250),WARNING" ID="0x8ba62713" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[HCI][TIMEOUT] OPCODE=0x%x, TIMER=0x%x @hci_core_ram.c(1254),ERROR" ID="0x8ba62732" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[MEMCPY_FAILED]RecvDataBuff Memcpy fail @hci_core_ram.c(1483),DBG" ID="0x8ba62e5e" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[MEMCPY_FAILED]RecvDataBuff Memcpy fail @hci_core_ram.c(1501),DBG" ID="0x8ba62eee" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[HCI][RX]fsm buff overflow,white type pass! limit=%lu type=%d. @hci_core_ram.c(1515),ERROR" ID="0x8ba62f5a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[HCI][RX]fsm buff overflow!,invalid acl drop! limit=%lu. @hci_core_ram.c(1521),ERROR" ID="0x8ba62f8a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[HCI][RX]fsm buff overflow,continue acl drop! limit=%lu. @hci_core_ram.c(1529),ERROR" ID="0x8ba62fca" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[HCI][RX]fsm buff overflow,white acl pass! limit=%lu cid=0x%x. @hci_core_ram.c(1539),ERROR" ID="0x8ba6301a" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[HCI][RX]fsm buff overflow,black acl drop! limit=%lu cid=0x%x. @hci_core_ram.c(1543),ERROR" ID="0x8ba6303a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[NO GLE]Gle %d! @hci_core_ram.c(1584),INFO" ID="0x8ba63185" />
                        <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" />
index 0bdff1a..1f5869e 100755 (executable)
@@ -1,12 +1,15 @@
-<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><MSG STRUCTURE="diag_log_msg0" NAME="[GAP][HCI]memcpy failed @hci_core_ram.c(167),ERROR" ID="0x8ba6053a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[HCI] cmd_opcode 0x%x @hci_core_ram.c(896),ERROR" ID="0x8ba61c02" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[hci][len] %02x @hci_core_ram.c(899),INFO" ID="0x8ba61c1d" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[HCI][H--&gt;C] %02x @hci_core_ram.c(902),INFO" ID="0x8ba61c35" />
+                       <MSG STRUCTURE="diag_log_msg3" NAME="[T%x][TIMEOUT] OPCODE=0x%x, TIMER=0x%x @hci_core_ram.c(1250),WARNING" ID="0x8ba62713" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[HCI][TIMEOUT] OPCODE=0x%x, TIMER=0x%x @hci_core_ram.c(1254),ERROR" ID="0x8ba62732" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[MEMCPY_FAILED]RecvDataBuff Memcpy fail @hci_core_ram.c(1483),DBG" ID="0x8ba62e5e" />
+                       <MSG STRUCTURE="diag_log_msg0" NAME="[MEMCPY_FAILED]RecvDataBuff Memcpy fail @hci_core_ram.c(1501),DBG" ID="0x8ba62eee" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[HCI][RX]fsm buff overflow,white type pass! limit=%lu type=%d. @hci_core_ram.c(1515),ERROR" ID="0x8ba62f5a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[HCI][RX]fsm buff overflow!,invalid acl drop! limit=%lu. @hci_core_ram.c(1521),ERROR" ID="0x8ba62f8a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[HCI][RX]fsm buff overflow,continue acl drop! limit=%lu. @hci_core_ram.c(1529),ERROR" ID="0x8ba62fca" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[HCI][RX]fsm buff overflow,white acl pass! limit=%lu cid=0x%x. @hci_core_ram.c(1539),ERROR" ID="0x8ba6301a" />
+                       <MSG STRUCTURE="diag_log_msg2" NAME="[HCI][RX]fsm buff overflow,black acl drop! limit=%lu cid=0x%x. @hci_core_ram.c(1543),ERROR" ID="0x8ba6303a" />
+                       <MSG STRUCTURE="diag_log_msg1" NAME="[NO GLE]Gle %d! @hci_core_ram.c(1584),INFO" ID="0x8ba63185" />
                        </MSG_LOG>
\ No newline at end of file
index c5a5e72..ddc954d 100755 (executable)
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 dc7c4de..11fadca 100755 (executable)
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 54c9596..b31ab9d 100755 (executable)
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 1ddd57e..3d7ba6d 100755 (executable)
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 e396688..f451d2f 100755 (executable)
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 b58bd0e..86a5398 100755 (executable)
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
diff --git a/code/sdk/interim_binary/brandy/libs/bt/evb_standard/liteos/mini/br/libbt_host_audio_manager_wrapper.a b/code/sdk/interim_binary/brandy/libs/bt/evb_standard/liteos/mini/br/libbt_host_audio_manager_wrapper.a
new file mode 100644 (file)
index 0000000..08d29c5
Binary files /dev/null and b/code/sdk/interim_binary/brandy/libs/bt/evb_standard/liteos/mini/br/libbt_host_audio_manager_wrapper.a differ
index d2214bc..ddf58f0 100755 (executable)
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 ca04ee8..a3c43bf 100755 (executable)
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 4f8fda3..d171afa 100755 (executable)
@@ -188,6 +188,7 @@ typedef enum {
     MSG_CENTER_OTA_CPP,
     MSG_CENTER_CUSTOMER_CPP,
     MSG_CENTER_PROTOCOL_CPP,
+    MSG_CENTER_COMMON_CPP,
     ALARM_NOTIFICATION_CPP,
     MAKEPHONE_NOTIFICATION_CPP,
     NOTIFICATION_MANAGER_CPP,
index eadd451..5375914 100755 (executable)
@@ -426,6 +426,7 @@ typedef enum {
     KALEIDOSCOPE_UTILS_CPP,
     UI_COVERFLOW_VIEW_CPP,
     UI_COVERFLOW_VIEW2_CPP,
+       UI_SLIPFLOW_VIEW_CPP,
     UI_ROLLER_VIEW_CPP,
     UI_ICOSAHEDRON_VIEW_CPP,
     UI_MAP_VIEW_CPP,
index 2d1e3bd..fa8b790 100644 (file)
@@ -120,6 +120,7 @@ typedef enum {
     JSI_CPP,
     APP_MODULE_CPP,
     DEVICE_MODULE_CPP,
+    NETWORK_MODULE_CPP,
     NFC_MODULE_CPP,
     GEOLOCATION_MODULE_CPP,
     VIBRATOR_MODULE_CPP,
@@ -134,6 +135,7 @@ typedef enum {
     CONSOLE_MODULE_CPP,
     DATE_TIME_FORMAT_MODULE_CPP,
     FEATURE_ABILITY_MODULE_CPP,
+    IMAGE_MODULE_CPP,
     INTL_MODULE_CPP,
     JSTEST_MODULE_CPP,
     LOCALIZATION_MODULE_CPP,
index 6a01d64..f053e88 100755 (executable)
@@ -6,20 +6,22 @@
 #ifndef NV_CONFIG_H
 #define NV_CONFIG_H
 
+#include "memory_config.h"
+
 #define NV_TASKS_MAX_NUM             64             /* 可支持的NV保存任务的最大数(多核系统使用) */
 #define NV_NORMAL_KVALUE_MAX_LEN     4060           /* 普通NV的最大数据长度 */
 #define NV_ENCRYPTED_KVALUE_MAX_LEN  4048           /* 加密NV的最大数据长度 */
 
 /* Flash 物理地址起始和结束 */
-#define FLASH_PHYSICAL_ADDR_START     0x70000000
-#define FLASH_PHYSICAL_ADDR_END       0x80000000
+#define FLASH_PHYSICAL_ADDR_START     (FLASH_START)
+#define FLASH_PHYSICAL_ADDR_END       (FLASH_START + FLASH_LENGTH)
 
 #define KV_PAGE_SIZE                  FLASH_PAGE_SIZE
 
 /* NV运行区默认起始地址(物理地址) */
-#define KV_STORE_START_ADDR           (FLASH_PHYSICAL_ADDR_START + 0xFF9000)
+#define KV_STORE_START_ADDR           (NV_FLASH_REGION_START)
 /* NV运行区page数 */
-#define KV_STORE_DATA_PAGE_NUM        4
+#define KV_STORE_DATA_PAGE_NUM        (NV_FLASH_REGION_PAGES)
 /* NV运行区默认长度(不包含备份区) */
 #define KV_STORE_DATA_SIZE            (KV_STORE_DATA_PAGE_NUM * KV_PAGE_SIZE)
 
index 74bab2e..b561e81 100644 (file)
Binary files a/code/sdk/middleware/services/gpu/api/rm/brandy-auto-ota-cli/libgfx_rm.a and b/code/sdk/middleware/services/gpu/api/rm/brandy-auto-ota-cli/libgfx_rm.a differ
index 0c18f1d..ad93d85 100644 (file)
Binary files a/code/sdk/middleware/services/gpu/api/rm/brandy-auto-ota-ser/libgfx_rm.a and b/code/sdk/middleware/services/gpu/api/rm/brandy-auto-ota-ser/libgfx_rm.a differ
index 901f59c..ccac945 100644 (file)
Binary files a/code/sdk/middleware/services/gpu/api/rm/brandy-native-js-r/libgfx_rm.a and b/code/sdk/middleware/services/gpu/api/rm/brandy-native-js-r/libgfx_rm.a differ
index 1f2f82e..4347741 100644 (file)
Binary files a/code/sdk/middleware/services/gpu/api/rm/brandy-native-js/libgfx_rm.a and b/code/sdk/middleware/services/gpu/api/rm/brandy-native-js/libgfx_rm.a differ
index 0406d16..f82ee73 100644 (file)
Binary files a/code/sdk/middleware/services/gpu/api/rm/brandy-target1-r/libgfx_rm.a and b/code/sdk/middleware/services/gpu/api/rm/brandy-target1-r/libgfx_rm.a differ
index c72f493..99705e6 100644 (file)
Binary files a/code/sdk/middleware/services/gpu/api/rm/brandy-target1/libgfx_rm.a and b/code/sdk/middleware/services/gpu/api/rm/brandy-target1/libgfx_rm.a differ
index ed20488..5730c16 100644 (file)
Binary files a/code/sdk/middleware/services/gpu/api/rm/brandy-target3-r/libgfx_rm.a and b/code/sdk/middleware/services/gpu/api/rm/brandy-target3-r/libgfx_rm.a differ
index 4188f34..4ce2807 100644 (file)
Binary files a/code/sdk/middleware/services/gpu/api/rm/brandy-target3/libgfx_rm.a and b/code/sdk/middleware/services/gpu/api/rm/brandy-target3/libgfx_rm.a differ
index 0056cd0..782640b 100644 (file)
Binary files a/code/sdk/middleware/services/gpu/api/rm/brandy-target4-r/libgfx_rm.a and b/code/sdk/middleware/services/gpu/api/rm/brandy-target4-r/libgfx_rm.a differ
index 3b99282..30510b2 100644 (file)
Binary files a/code/sdk/middleware/services/gpu/api/rm/brandy-target4/libgfx_rm.a and b/code/sdk/middleware/services/gpu/api/rm/brandy-target4/libgfx_rm.a differ
index a0f017f..8858311 100644 (file)
Binary files a/code/sdk/middleware/services/gpu/api/rm/brandy-target5-r/libgfx_rm.a and b/code/sdk/middleware/services/gpu/api/rm/brandy-target5-r/libgfx_rm.a differ
index 4500b51..6cff651 100644 (file)
Binary files a/code/sdk/middleware/services/gpu/api/rm/brandy-target5/libgfx_rm.a and b/code/sdk/middleware/services/gpu/api/rm/brandy-target5/libgfx_rm.a differ
index 7ca96c1..47b9d40 100644 (file)
Binary files a/code/sdk/middleware/services/gpu/api/rm/brandy-xts/libgfx_rm.a and b/code/sdk/middleware/services/gpu/api/rm/brandy-xts/libgfx_rm.a differ
index db044ac..cd4bc86 100644 (file)
Binary files a/code/sdk/middleware/services/gpu/api/rm/testsuite-brandy-sdk/libgfx_rm.a and b/code/sdk/middleware/services/gpu/api/rm/testsuite-brandy-sdk/libgfx_rm.a differ
index c43a607..253ac7e 100644 (file)
Binary files a/code/sdk/middleware/services/gui/hal/display/brandy-auto-ota-cli/libdisplay_gfx.a and b/code/sdk/middleware/services/gui/hal/display/brandy-auto-ota-cli/libdisplay_gfx.a differ
index f556eaf..11f9446 100644 (file)
Binary files a/code/sdk/middleware/services/gui/hal/display/brandy-auto-ota-ser/libdisplay_gfx.a and b/code/sdk/middleware/services/gui/hal/display/brandy-auto-ota-ser/libdisplay_gfx.a differ
index 4406327..9727828 100755 (executable)
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 49605af..2113c20 100755 (executable)
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 6c3cb9c..655e253 100755 (executable)
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 746d092..220209d 100755 (executable)
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 6346e30..b912171 100755 (executable)
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 0efd01d..bc30410 100755 (executable)
@@ -229,13 +229,14 @@ static int32_t AllocMem(const AllocInfo *info, BufferHandle **handle)
     }
 
     uint8_t *addr = LosAllocMem(pool, (uint32_t)(buffer->size));
-    if ((pool == g_poolId) && (g_tryToFreeImgCallback != NULL)) {
+    if (((info->usage & HBM_USE_MEM_YUV) != HBM_USE_MEM_YUV) &&
+        (pool == g_poolId) && (g_tryToFreeImgCallback != NULL)) {
         while (addr == NULL) {
             if (g_tryToFreeImgCallback()) {
-                DISP_LOGW("Success to free image during AllocMem size:%d\n", buffer->size);
+                DISP_LOGW("Success to free image during AllocMem size: %u\n", buffer->size);
                 addr = LosAllocMem(pool, (uint32_t)(buffer->size));
             } else {
-                DISP_LOGE("Failed to AllocMem size:%d and no image can be free\n", buffer->size);
+                DISP_LOGE("Failed to AllocMem size: %u and no image can be free\n", buffer->size);
                 break;
             }
         }
index 4e1c4b4..542fd6b 100755 (executable)
Binary files a/code/sdk/middleware/services/gui/lvgl/brandy-target1/liblvgl_proprietary_mini.a and b/code/sdk/middleware/services/gui/lvgl/brandy-target1/liblvgl_proprietary_mini.a differ
index 729723d..22fc4d0 100755 (executable)
Binary files a/code/sdk/middleware/services/gui/lvgl/brandy-target5/liblvgl_proprietary.a and b/code/sdk/middleware/services/gui/lvgl/brandy-target5/liblvgl_proprietary.a differ
index 0e71b48..df828b2 100644 (file)
@@ -29,7 +29,7 @@ static bool LvInitImgDsc(lv_img_dsc_t* imgDsc, lv_coord_t width, lv_coord_t heig
     }\r
     uint32_t buffSize = LV_ALIGN_BYTE((uint32_t)width, LV_BYTE_ALIGNMENT) * height *\r
         (lv_img_cf_get_px_size((lv_img_cf_t)cf) >> 3); // 3: shift by 3 bits\r
-    uint8_t* buf = LvAllocBufferForImg(buffSize);\r
+    uint8_t* buf = (uint8_t*)LvAllocBufferForImg(buffSize);\r
     if (buf == NULL) {\r
         LV_LOGE("[%s: %d] AllocBuffer failed, size = %u.\n", __FUNCTION__, __LINE__, buffSize);\r
         return false;\r
index 0e621de..826b856 100755 (executable)
@@ -217,6 +217,7 @@ set(COMPONENT_SRC
     ${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_slipflow_view.cpp\r
     ${PROP_UI_SRC}/components_ext/ui_coverflow_view.cpp\r
     ${PROP_UI_SRC}/components_ext/ui_coverflow_view2.cpp\r
     ${PROP_UI_SRC}/components_ext/ui_icosahedron_view.cpp\r
index ce7f417..33533df 100644 (file)
Binary files a/code/sdk/middleware/services/gui/uikit/brandy-auto-ota-cli/libuikit_ext.a and b/code/sdk/middleware/services/gui/uikit/brandy-auto-ota-cli/libuikit_ext.a differ
index af9e8fe..800ab87 100644 (file)
Binary files a/code/sdk/middleware/services/gui/uikit/brandy-auto-ota-ser/libuikit_ext.a and b/code/sdk/middleware/services/gui/uikit/brandy-auto-ota-ser/libuikit_ext.a differ
index 8ee2fe1..807b8f2 100755 (executable)
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 f23626d..3e30869 100755 (executable)
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 8abc14e..3d2a269 100755 (executable)
Binary files a/code/sdk/middleware/services/gui/uikit/brandy-xts/libuikit_ext.a and b/code/sdk/middleware/services/gui/uikit/brandy-xts/libuikit_ext.a differ
index 128e271..77d459e 100755 (executable)
@@ -27,6 +27,7 @@
 #ifndef UI_CROSS_VIEW_H
 #define UI_CROSS_VIEW_H
 
+#include <memory>
 #include "components/ui_swipe_view.h"
 #include "components/card_swipe.h"
 #include "components_ext/hor_swipe_view.h"
@@ -234,6 +235,7 @@ private:
     UIView* tailView_ = nullptr;
     UISwipeView::OnSwipeListener *swipeListener_ = nullptr;
     bool isNeedClip_ = false;
+    std::shared_ptr<bool> exists_;
 
     void RemoveAllInner(UISwipeView& view);
     void ProcessRes(void);
index 7d287c5..d214d95 100644 (file)
@@ -145,7 +145,7 @@ public:
      * @brief Get the Index Of View object in this view group
      *
      * @param view, Indicates the view to search
-     * @return Returns the index, -1 if not exsit
+     * @return Returns the view, nullptr if not exsit
      */
     UIView* GetViewByIndex(uint8_t index);
 
diff --git a/code/sdk/middleware/services/gui/uikit/proprietary/include/components/ui_slipflow_view.h b/code/sdk/middleware/services/gui/uikit/proprietary/include/components/ui_slipflow_view.h
new file mode 100644 (file)
index 0000000..975e5a3
--- /dev/null
@@ -0,0 +1,256 @@
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2024. All rights reserved.\r
+ * Description: UISlipFlow\r
+ * Author:\r
+ * Create: 2024-08\r
+ */\r
+\r
+#ifndef UI_SLIPFLOW_VIEW_H\r
+#define UI_SLIPFLOW_VIEW_H\r
+#include <string>\r
+#include <map>\r
+#include "gfx_utils/vector.h"\r
+#include "components/ui_image_view.h"\r
+#include "components/ui_label.h"\r
+#include "components/ui_abstract_scroll.h"\r
+\r
+namespace OHOS {\r
+struct TempXoffsetInfo {\r
+    int16_t tempMasterXoffset;\r
+    int16_t tempSlaveXoffset;\r
+    int16_t tempMasterYoffset;\r
+    int16_t tempSlaveYoffset;\r
+};\r
+\r
+class UISlipflowView : public UIAbstractScroll {\r
+public:\r
+    explicit UISlipflowView();\r
+    ~UISlipflowView() override;\r
+\r
+    /**\r
+     * @brief Adds a child view.\r
+     *\r
+     * @param view Indicates the pointer to the child view to add.\r
+     * @since 1.0\r
+     * @version 1.0\r
+     */\r
+    void Add(UIView* view) override;\r
+\r
+    /**\r
+     * @brief remove a child view from slipflow.\r
+     *\r
+     * @param id Indicates the pointer to the child view to remove.\r
+     */\r
+    void Remove(UIView* view) override;\r
+\r
+    /**\r
+     * @brief Set page size.\r
+     *\r
+     * @param width setting page width.\r
+     * @param height setting page height.\r
+     */\r
+    void SetPageSize(uint16_t width, uint16_t height);\r
+\r
+    /**\r
+     * @brief Get page width.\r
+     */\r
+    uint16_t GetPageWidth() const\r
+    {\r
+        return pageWidth_;\r
+    }\r
+\r
+    /**\r
+     * @brief Get page height.\r
+     */\r
+    uint16_t GetPageHeight() const\r
+    {\r
+        return pageHeight_;\r
+    }\r
+\r
+    /**\r
+     * @brief Sets the index for the current tab.\r
+     *\r
+     * @param index Indicates the index of a view.\r
+     * @param needAnimator Specifies whether a flip animation is needed. <b>false</b> (default value) indicates a flip\r
+     * animation is not needed, and <b>true</b> indicates the opposite case.\r
+     * @since 1.0\r
+     * @version 1.0\r
+     */\r
+    void SetCurrentPage(uint16_t index, bool needAnimator = false);\r
+\r
+    /**\r
+     * @brief Obtains the current tab index.\r
+     *\r
+     * @return Returns the current tab index.\r
+     * @since 1.0\r
+     * @version 1.0\r
+     */\r
+    uint16_t GetCurrentPage() const\r
+    {\r
+        return curIndex_;\r
+    }\r
+\r
+    /**\r
+     * @brief Obtains the current view.\r
+     *\r
+     * @return Returns the current view.\r
+     * @since 1.0\r
+     * @version 1.0\r
+     */\r
+    UIView* GetCurrentView() const\r
+    {\r
+        return curView_;\r
+    }\r
+\r
+    /**\r
+     * @brief Obtains the component type.\r
+     *\r
+     * @return Returns the component type, as defined in {@link UIViewType}.\r
+     * @since 1.0\r
+     * @version 1.0\r
+     */\r
+    UIViewType GetViewType() const override\r
+    {\r
+        return UI_SLIP_FLOW;\r
+    }\r
+\r
+    /**\r
+     * @brief Obtains a view based on its index.\r
+     *\r
+     * @param Indicates the index of a view.\r
+     * @return Returns the view.\r
+     * @since 1.0\r
+     * @version 1.0\r
+     */\r
+    UIView* GetViewByIndex(uint16_t index) const;\r
+\r
+    /**\r
+     * @brief Indicates that the animation duration is 12 ticks.\r
+     *\r
+     * @since 1.0\r
+     * @version 1.0\r
+     */\r
+    constexpr static uint16_t ANIMATOR_TIME = 12;\r
+\r
+    /**\r
+     * @brief Sets the time for the page being animated. The page will go beyond the blank during this time.\r
+     *\r
+     * @param time Indicates the time of the page being animated.\r
+     * @since 1.0\r
+     * @version 1.0\r
+     */\r
+    void SetAnimatorTime(uint16_t time);\r
+\r
+    /**\r
+     * @brief Set the movement coefficient of the current page and the page on the right compared to other pages.\r
+     *\r
+     * @param coefficient The moving speed of the current page and the page on the right is coefficient times\r
+     * that of other pages.\r
+     * @since 1.0\r
+     * @version 1.0\r
+     */\r
+    void SetMoveCoefficient(uint16_t coefficient);\r
+\r
+    /**\r
+     * @fn void OnDragEvent(const DragEvent& event) override\r
+     *\r
+     * @brief realize drag event, Switch to specified view when drag\r
+     *\r
+     * @param event The drag event\r
+     */\r
+    bool OnDragEvent(const DragEvent& event) override;\r
+\r
+    /**\r
+     * @fn void OnDragStartEvent(const DragEvent& event) override\r
+     *\r
+     * @brief realize drag start event, Switch to specified view when drag start\r
+     *\r
+     * @param event The drag event start\r
+     */\r
+\r
+    bool OnDragStartEvent(const DragEvent& event) override;\r
+\r
+    /**\r
+     * @fn void OnDragEndEvent(const DragEvent& event) override\r
+     *\r
+     * @brief realize drag end event, Switch to specified view when drag end\r
+     *\r
+     * @param event The drag event end\r
+     */\r
+    bool OnDragEndEvent(const DragEvent& event) override;\r
+\r
+    /**\r
+     * @brief Represents a listener for swipe of the slipflow view.\r
+     */\r
+    class OnSlipflowScrollListener : public HeapBase {\r
+    public:\r
+        virtual bool OnScroll(int16_t distance) { return true; }\r
+        virtual void OnScrollUpStart() {};\r
+        virtual void OnScrollUpEnd() {};\r
+        virtual bool OnRemove(UIView* view) { return true; }\r
+        virtual void OnRefreshPageOpaScale(UIView* view, int16_t xOffset, int16_t yOffset) {}\r
+        virtual ~OnSlipflowScrollListener() {}\r
+    };\r
+\r
+    /**\r
+     * @brief Sets the listener that contains a callback to be invoked upon a swipe event.\r
+     *\r
+     * @param onSlipflowListener Indicates the listener to set.\r
+     * @since 1.0\r
+     * @version 1.0\r
+     */\r
+    void SetOnSlipflowListener(OnSlipflowScrollListener* onSlipflowListener)\r
+    {\r
+        slipflowListener_ = onSlipflowListener;\r
+    }\r
+\r
+    void SetDirection(uint8_t direction) = delete;\r
+    uint8_t GetDirection() const = delete;\r
+protected:\r
+    void SortChild();\r
+    bool DragXInner(int16_t distance) override;\r
+    bool DragYInner(int16_t distance) override;\r
+    void StopAnimator() override;\r
+    void RefreshCurrentView(int16_t distance, uint8_t dragDirection);\r
+    void SwitchToPage(int16_t dst, bool needAnimator = true);\r
+    void MoveChildByXOffset(int16_t xOffset);\r
+    void DeleteMoveChild(int16_t distance);\r
+    void SwipUpReleaseOperation();\r
+    void SwipUpDeleteOperation();\r
+    void SwipUpRebound();\r
+    void CalculateInvalidate();\r
+\r
+private:\r
+    void DeleteGroup(UIViewGroup* group);\r
+    void AddTempXoffsetInfo();\r
+    void ResetTempOffsetInfo();\r
+    bool CalCurViewInfo();\r
+    void RefreshChildIndex();\r
+    void RefreshScreen();\r
+    void RefreshPageOpaScale(UIView* view);\r
+    int16_t GetPreViewOffsetToCenter();\r
+\r
+    OnSlipflowScrollListener* slipflowListener_;\r
+    Graphic::Vector<TempXoffsetInfo> pageTempOffsetInfo_;\r
+    int16_t totalTempXoffset_{0};\r
+    int16_t totalTempYoffset_{0};\r
+    int16_t xMoveCoefficient_;\r
+    int16_t yMoveCoefficient_;\r
+    bool isSwipUpDelete_{false};\r
+\r
+    uint16_t tickTime_;\r
+    uint16_t curIndex_;\r
+    uint16_t blankSize_;\r
+    UIView* curView_;\r
+    UIView* deleteView_;\r
+    uint16_t lastIndex_;\r
+    uint16_t pageWidth_;\r
+    uint16_t pageHeight_;\r
+    UIView* lastView_;\r
+    uint16_t swipeMid_;\r
+    int8_t dragDirection_;\r
+    bool isMoveTotal_;\r
+    bool isSetPage_;\r
+};\r
+} // namespace OHOS\r
+#endif // UI_SLIPFLOW_VIEW_H\r
index ade79f6..6ff2e11 100644 (file)
@@ -60,6 +60,14 @@ public:
      * @version 1.0\r
      */\r
     void SetStyle(uint8_t key, int64_t value) override;\r
+\r
+    /**\r
+     * @brief Called when a view is drawn.\r
+     * @param invalidatedArea Indicates the area to draw.\r
+     * @since 1.0\r
+     * @version 1.0\r
+     */\r
+    void OnDraw(BufferInfo& gfxDstBuffer, const Rect& invalidatedArea) override;\r
 private:\r
     void ReMeasure() override;\r
     void DeleteMirrorView();\r
index e1a266d..241793d 100755 (executable)
 #define GRAPHIC_LITE_MEM_CHECK_H
 
 #include <cstdio>
-#include <cstdlib>
-#include <ctime>
-#include <new>
 #include <list>
 #include "gfx_utils/mem_api.h"
 #include "graphic_thread.h"
+#include "graphic_mutex.h"
+#include "soc_osal.h"
 
 #if ENABLE_MEMORY_CHECK
 namespace OHOS {
-/**
- * @brief Mem opt, add or delete
- *
- */
-enum class Opt {
-    ADD,
-    DEL
-};
-
-/**
- * @brief Memory record info.
- *
- */
-struct MemRecord {
-    int32_t size;
-    uintptr_t address;
-    Opt opt;
-    time_t time;
-    int32_t total;
-    struct MemRecord* next;
-};
-
 /**
  * @brief Memory alloc info.
  *
@@ -103,7 +80,7 @@ public:
      * @since 1.0
      * @version 1.0
      */
-    int MemAdd(int size, uintptr_t address);
+    bool MemAdd(int size, uintptr_t address);
 
     /**
      * @brief Reduce dynamic memory. You can call it when reduce dynamic memory.
@@ -112,7 +89,7 @@ public:
      * @since 1.0
      * @version 1.0
      */
-    int MemDelete(uintptr_t address);
+    bool MemDelete(uintptr_t address);
 
     /**
      * @brief print current memory info
@@ -138,32 +115,19 @@ public:
         leakSize_ = sz;
     }
 
-#ifndef VERSION_IOT
-    void CollectMemory(uint32_t delayTime);
-    void SaveRecordInfo();
-#endif
-
 private:
     MemCheck() {}
     ~MemCheck();
     MemCheck(const MemCheck &) = delete;
     MemCheck &operator=(const MemCheck &) = delete;
-#ifndef VERSION_IOT
-    bool InsertRecord(uintptr_t address, Opt opt, int32_t size, int32_t total);
-    bool CreateRecordFile();
-    bool isBeyondTime();
-#endif
-    bool initSuc = false;
-    FILE* fp = nullptr;
-    MemRecord* recordHead = nullptr;
-    MemAllocInfo* allocHead = nullptr;
-    MemRecord* recordTail = nullptr;
-    MemAllocInfo* allocTail = nullptr;
 
-    time_t setTime_ = 0;
-    int32_t delayTime_ = 0;
-    ThreadId recordThreadId = nullptr;
-    int32_t totalSize = 0;
+    bool InitMemInfoList();
+    void ClearMemInfoList();
+
+    MemAllocInfo* allocHead_ = nullptr;
+    MemAllocInfo* allocTail_ = nullptr;
+    GraphicMutex lock_;
+    osal_atomic totalCnt_;
     bool enableLeakCheck_ = false;
     MemAllocInfo *leakHead_ = nullptr;
     int16_t crashCnt_ = -1;
index 82c36b1..f0d3f05 100755 (executable)
@@ -95,7 +95,7 @@ void LiteSurface::AddBuffer()
 
 bool LiteSurface::CanRequest(uint8_t wait)
 {
-    bool res = true;
+    bool res = false;
     if (!freeList_.IsEmpty()) {
         res = true;
         goto END;
index 33b1e69..b69f924 100644 (file)
@@ -120,7 +120,7 @@ bool UICustomHexagonsList::OnRotateStartEvent(const RotateEvent& event)
 
 bool UICustomHexagonsList::OnRotateEvent(const RotateEvent& event)
 {
-    float deltaScale = event.GetRotate() * ROTATE_SCALE_FACTOR;
+    float deltaScale = event.GetRotate() * ROTATE_SCALE_FACTOR * GetRotateFactor();
     float targetScale = globalScale_ + deltaScale;
     /* -------------------------------------------------------------------------- */
     int8_t focusIndex = GetFocusedImgIndex();
index 4cfd78f..1c93fb7 100755 (executable)
@@ -59,9 +59,11 @@ UILiteSurfaceView::~UILiteSurfaceView()
         currentBuffer_ = nullptr;\r
     }\r
     surface_->UnregisterConsumerListener();\r
-    LiteMGfxEngine::GetInstance()->ClearHardwareLayer();\r
+    LiteMGfxEngine::GetInstance()->ClearHardwareLayer(this);\r
     GraphicService::GetInstance()->PostGraphicEvent([] {\r
-        GraphicService::GetInstance()->EnableAsyncMode(true);\r
+            if (LiteMGfxEngine::GetInstance()->GetHardwareLayer() == nullptr) {\r
+                GraphicService::GetInstance()->EnableAsyncMode(true);\r
+            }\r
         });\r
 \r
     if (preView_ != nullptr) {\r
@@ -333,8 +335,10 @@ void UILiteSurfaceView::OnBufferAvailable()
             [&, ws] {\r
                 if (!ws.expired()) {\r
                     DisplayDev::GetInstance()->SetLayerColorKey(LAYER_0, false, 0);\r
-                    LiteMGfxEngine::GetInstance()->ClearHardwareLayer();\r
-                    LiteMGfxEngine::GetInstance()->EnableAsyncMode(true);\r
+                    LiteMGfxEngine::GetInstance()->ClearHardwareLayer(this);\r
+                    if (LiteMGfxEngine::GetInstance()->GetHardwareLayer() == nullptr) {\r
+                        GraphicService::GetInstance()->EnableAsyncMode(true);\r
+                    }\r
                     surface_->ClearBuffers();\r
                     currentBuffer_ = nullptr;\r
                     lastFlushedBuffer_ = nullptr;\r
index e7c296d..44efc70 100755 (executable)
@@ -39,6 +39,7 @@ struct EllipseInfo {
 struct AsyncSubmitInfo {
     Rect rect;
     bool hasPendingFrame;
+    bool needSwapToPendingFrame;
 };
 
 class LiteMGfxEngine : public BaseGfxEngine {
@@ -132,13 +133,17 @@ public:
     {
         hardwareView_ = view;
     }
+
     IHardwareView* GetHardwareLayer()
     {
         return hardwareView_;
     }
-    void ClearHardwareLayer()
+
+    void ClearHardwareLayer(IHardwareView* view)
     {
-        hardwareView_ = nullptr;
+        if (hardwareView_ == view) {
+            hardwareView_ = nullptr;
+        }
     }
 
     bool HasPendingFrame()
@@ -164,7 +169,7 @@ private:
     BufferInfo* bufferInfo_ = nullptr;
     BufferInfo* nextBufferInfo_ = nullptr;
 
-    AsyncSubmitInfo lastAsyncInfo_ = {{0, 0, 1, 1}, false};
+    AsyncSubmitInfo lastAsyncInfo_ = {{0, 0, 1, 1}, false, false};
     bool enableAsyncSubmit_ = true;
 
 #if ENABLE_VGU_ENGINE
@@ -183,7 +188,6 @@ private:
     void AddHwDraw(uint16_t cnt);
     void AsyncFlush();
 #endif
-    void FlushInner(const Rect &rect);
 };
 }
 #endif // GRAPHIC_LITE_LITE_M_GFX_ENGINE_H
index 6dbca60..5b29de2 100755 (executable)
 #include "hals/gralloc_engines.h"
 #include "dfx/dfx_frame_trace.h"
 
+#ifndef _WIN32
+#include "tcxo.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+#include "soc_mipi_tx.h"
+#ifdef __cplusplus
+};
+#endif
+#endif
+
 namespace OHOS {
-DisplayDev::DisplayDev() : isDisplayDevInited_{false}, devId_(0), layerFuncs_{nullptr}
+DisplayDev::DisplayDev() : isDisplayDevInited_(false), devId_(0), layerFuncs_(nullptr), exitUlps_(false)
 {
     for (uint8_t i = LAYER_0; i < LAYER_MAX; i++) {
         currentBufferId_[i] = 0;
@@ -44,9 +55,11 @@ void DisplayDev::LcdFlush(uint8_t layerId)
     }
     if (layerFuncs_->Flush != nullptr) {
         if (layerId == LAYER_MAX) {
+            TryExitUlps(true);
             if (layerFuncs_->Flush(0, 0, nullptr) != DISPLAY_SUCCESS) {
                 GRAPHIC_LOGE("flush failed.");
             }
+            exitUlps_ = false;
             return;
         }
         uint8_t currentBufferIndex = currentBufferId_[layerId];
@@ -187,7 +200,7 @@ bool DisplayDev::OpenLayer(uint8_t layerId, const LayerInfo& info, uint8_t buffe
     layer_[layerId].pos.x = 0;
     layer_[layerId].pos.y = 0;
     if (layerFuncs_->CreateLayer(devId_, &layer_[layerId].layerInfo, &layer_[layerId].layerHdl) != DISPLAY_SUCCESS) {
-        free(layer_[layerId].buffer);
+        UIFree(layer_[layerId].buffer);
         layer_[layerId].buffer = nullptr;
         layer_[layerId].layerHdl = 0;
         layer_[layerId].bufferCount = 0;
@@ -221,7 +234,7 @@ void DisplayDev::CloseLayer(uint8_t layerId)
         return;
     }
 
-    free(layer_[layerId].buffer);
+    UIFree(layer_[layerId].buffer);
     layer_[layerId].buffer = nullptr;
 
     layer_[layerId].layerHdl = 0;
@@ -252,6 +265,21 @@ bool DisplayDev::IsUlpsEnabled(void)
 #endif
 }
 
+bool DisplayDev::TryExitUlps(bool isFlushing)
+{
+    if (IsUlpsEnabled() && !exitUlps_) {
+#ifndef _WIN32
+        uapi_mipi_tx_exit_ulps();
+        if (isFlushing) {
+            uapi_tcxo_delay_ms(1);
+        }
+#endif
+        exitUlps_ = true;
+        return true;
+    }
+    return false;
+}
+
 bool DisplayDev::IsDoubleBuffer(void)
 {
 #if DOUBLE_BUFFER
index 02aaf21..f8a9bfc 100755 (executable)
@@ -156,6 +156,21 @@ bool LiteInputDistributer::IsEventEmpty(InputDevType type)
     return true;
 }
 
+void LiteInputDistributer::ClearEvent(InputDevType type)
+{
+    eventLock_.Lock();
+    if (type == InputDevType::INDEV_TYPE_TOUCH) {
+        tpList_.clear();
+        deviceData_.state = 0;
+    } else if (type == InputDevType::INDEV_TYPE_KEY) {
+        keyList_.clear();
+    } else if (type == InputDevType::INDEV_TYPE_ENCODER)
+       {
+               encoderDataList_.clear();
+       }
+    eventLock_.Unlock();
+}
+
 #ifdef CONFIG_SUPPORTED_POWERMGR
 void LiteInputDistributer::SendEventToPM(const RawEvent& event)
 {
index d16d727..9725426 100755 (executable)
 
 #include "gfx_utils/mem_check.h"
 #if ENABLE_MEMORY_CHECK
-#include <cstdlib>
 #include <cstdio>
-#include <iterator>
-#include <pthread.h>
-#include <iostream>
-#include <thread>
-#include <ctime>
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/time.h>
-#include <cstring>
-
 #include "gfx_utils/graphic_log.h"
-#include "hal_tick.h"
-#include "securec.h"
 #include "hals/gralloc_engines.h"
 #ifdef __LITEOS__
 #include "los_exc.h"
 #endif
-#define SUPPRESS_DUMP 0
 
 namespace OHOS {
-using std::string;
-const uint8_t OFFSET_TIME = 3;
-
 MemCheck::~MemCheck()
 {
-    MemAllocInfo* allocPtr = allocHead;
-    while (allocPtr != nullptr && allocPtr->next != nullptr) {
-        MemAllocInfo* allocNote = allocPtr->next;
-        allocPtr->next = allocPtr->next->next;
-        free(allocNote);
-        allocNote = nullptr;
+    ClearMemInfoList();
+}
+
+void MemCheck::MemCheckInit()
+{
+    GRAPHIC_LOGI("MemCheck::MemCheckInit");
+}
+
+bool MemCheck::InitMemInfoList()
+{
+    if ((allocHead_ != nullptr) || (allocTail_ != nullptr)) {
+        GRAPHIC_LOGE("allocHead_ or allocTail_ is already inited.");
+        return false;
     }
-    MemRecord* recordPtr = recordHead;
-    while (recordPtr != nullptr && recordPtr->next != nullptr) {
-        MemRecord* recordNode = recordPtr->next;
-        recordPtr->next = recordPtr->next->next;
-        free(recordNode);
-        recordNode = nullptr;
+    MemAllocInfo* allocNode = (MemAllocInfo*)malloc(sizeof(MemAllocInfo));
+    if (allocNode == nullptr) {
+        GRAPHIC_LOGE("malloc for allocNode failed!");
+        return false;
     }
-    allocHead = nullptr;
-    recordHead = nullptr;
+    allocNode->address = 0;
+    allocNode->next = nullptr;
+    allocNode->size = 0;
 
-    if (fp != nullptr) {
-        fclose(fp);
-        fp = nullptr;
-    }
+    allocHead_ = allocNode;
+    allocTail_ = allocNode;
+    return true;
 }
 
-void MemCheck::MemCheckInit()
+void MemCheck::ClearMemInfoList()
 {
-    GRAPHIC_LOGI("MemCheck::MemCheckInit\n");
-    MemRecord* recordNote = (MemRecord*)malloc(sizeof(MemRecord));
-    if (recordNote == nullptr) {
-        initSuc = false;
+    if (allocHead_ == nullptr) {
         return;
     }
-    recordNote->address = 0;
-    recordNote->size = 0;
-    recordNote->total = 0;
-    recordNote->time = 0;
-    recordNote->next = nullptr;
-    recordHead = recordNote;
-    recordTail = recordNote;
-    MemAllocInfo* allocNote = (MemAllocInfo*)malloc(sizeof(MemAllocInfo));
-    if (allocNote == nullptr) {
-        free(recordNote);
-        recordNote = nullptr;
-        initSuc = false;
-        return;
+    MemAllocInfo* allocPtr = allocHead_;
+    while (allocPtr != nullptr && allocPtr->next != nullptr) {
+        MemAllocInfo* allocNode = allocPtr->next;
+        allocPtr->next = allocPtr->next->next;
+        free(allocNode);
+        allocNode = nullptr;
     }
-    allocNote->address = 0;
-    allocNote->next = nullptr;
-    allocNote->size = 0;
-    allocHead = allocNote;
-    allocTail = allocNote;
-    initSuc = true;
-    return;
+    free(allocHead_);
+    allocHead_ = nullptr;
+    allocTail_ = nullptr;
 }
 
 void MemCheck::EnableLeakCheck(bool enable)
 {
-    enableLeakCheck_ = enable;
-    if (enableLeakCheck_) {
+    lock_.Lock();
+    if (enableLeakCheck_ == enable) {
+        GRAPHIC_LOGE("Already set leak check: %d", enableLeakCheck_);
+        lock_.Unlock();
+        return;
+    }
+    if (enable) {
+        if (!InitMemInfoList()) {
+            GRAPHIC_LOGE("EnableLeakCheck failed!");
+            lock_.Unlock();
+            return;
+        }
         leakCount_ = 0;
         leakHead_ = nullptr;
+        GRAPHIC_LOGP("-----Begin Memory Leak Check----");
     } else {
+        GRAPHIC_LOGP("total count: %d", osal_atomic_read(&totalCnt_));
         MemAllocInfo *info = leakHead_;
         for (; info != nullptr; info = info->next) {
             GRAPHIC_LOGE("leakcheck: [%d] addr %p size %d", info->count, info->address, info->size);
         }
         crashCnt_ = -1;
         leakSize_ = 0;
+        ClearMemInfoList();
+        GRAPHIC_LOGP("-----End Memory Leak Check----");
     }
+    enableLeakCheck_ = enable;
+    lock_.Unlock();
 }
 
-int MemCheck::MemAdd(int size, uintptr_t address)
+bool MemCheck::MemAdd(int size, uintptr_t address)
 {
-    if (!initSuc) {
-        return -1;
+    osal_atomic_inc(&totalCnt_);
+
+    lock_.Lock();
+    if (!enableLeakCheck_) {
+        lock_.Unlock();
+        return false;
+    }
+
+    MemAllocInfo* allocNode = (MemAllocInfo*)malloc(sizeof(MemAllocInfo));
+    if (allocNode == nullptr) {
+        GRAPHIC_LOGE("MemAdd malloc failed");
+        lock_.Unlock();
+        return false;
     }
 
-    MemAllocInfo* allocNote = (MemAllocInfo*)malloc(sizeof(MemAllocInfo));
-    if (allocNote == nullptr) {
-        GRAPHIC_LOGE("MemAdd malloc failed\n");
-        return -1;
+    allocNode->address = address;
+    allocNode->size = size;
+    allocNode->next = nullptr;
+    allocNode->count = -1;
+
+    allocTail_->next = allocNode;
+    allocTail_ = allocNode;
+
+    leakCount_++;
+    allocNode->count = leakCount_;
+    if (leakHead_ == nullptr) {
+        leakHead_ = allocNode;
     }
-    allocNote->address = address;
-    allocNote->size = size;
-    allocNote->next = nullptr;
-    allocNote->count = -1;
-    allocTail->next = allocNote;
-    allocTail = allocNote;
-    totalSize += allocNote->size;
-    if (enableLeakCheck_) {
-        leakCount_++;
-        allocNote->count = leakCount_;
-        if (leakHead_ == nullptr) {
-            leakHead_ = allocNote;
+    if (leakCount_ == crashCnt_) {
+        if (leakSize_ != allocNode->size) {
+            GRAPHIC_LOGE("size not right!");
         }
-        if (leakCount_ == crashCnt_) {
-            if (leakSize_ != allocNote->size) {
-                GRAPHIC_LOGE("size not right! %d",allocNote->size);
-            }
+        lock_.Unlock();
 #ifdef __LITEOS__
-            LOS_Panic("mem leak here!\n");
+        LOS_Panic("mem leak here!\n");
 #endif
-        }
     }
 
-#ifndef VERSION_IOT
-    if (!isBeyondTime()) {
-        if (!InsertRecord(address, Opt::ADD, size, totalSize)) {
-            return -1;
-        }
-    }
-#endif
-    return 0;
+    lock_.Unlock();
+    return true;
 }
 
-int MemCheck::MemDelete(uintptr_t address)
+bool MemCheck::MemDelete(uintptr_t address)
 {
+    osal_atomic_dec(&totalCnt_);
+
+    lock_.Lock();
+    if (!enableLeakCheck_) {
+        lock_.Unlock();
+        return false;
+    }
+
     if (address == 0) {
         GRAPHIC_LOGE("MemDelete address is nullptr\n");
-        return -1;
-    }
-    if (!initSuc) {
-        return -1;
+        lock_.Unlock();
+        return false;
     }
 
-    int32_t currNodeSize = 0;
-    MemAllocInfo* allocPtr = allocHead;
+    MemAllocInfo* allocPtr = allocHead_;
     while (allocPtr->next != nullptr) {
         if (allocPtr->next->address == address) {
             MemAllocInfo *cur = allocPtr->next;
-            leakHead_ = (enableLeakCheck_ && (leakHead_ == cur)) ? cur->next : leakHead_;
-            currNodeSize = allocPtr->next->size;
-            totalSize -= currNodeSize;
+            leakHead_ = (leakHead_ == cur) ? cur->next : leakHead_;
             MemAllocInfo* tmpInfo = allocPtr->next;
             allocPtr->next = allocPtr->next->next;
             if (allocPtr->next == nullptr) {
-                allocTail = allocPtr;
+                allocTail_ = allocPtr;
             }
             free(tmpInfo);
             tmpInfo = nullptr;
@@ -186,150 +178,17 @@ int MemCheck::MemDelete(uintptr_t address)
         }
         allocPtr = allocPtr->next;
     }
+    lock_.Unlock();
 
-#ifndef VERSION_IOT
-    if (!isBeyondTime()) {
-        if (!InsertRecord(address, Opt::DEL, currNodeSize, totalSize)) {
-            return -1;
-        }
-    }
-#endif
-    return 0;
+    return true;
 }
 
 void MemCheck::DumpMemInfo()
 {
-    int32_t total = 0;
-    int32_t count = 0;
-    int32_t max = 0;
-#if SUPPRESS_DUMP
     printf("current malloc/new memory:\n");
-#endif
-    if(allocHead == nullptr)
-        return;
-    MemAllocInfo* allocPtr = allocHead;
-    while (allocPtr->next != nullptr) {
-        total += allocPtr->next->size;
-        if (max < allocPtr->next->size) {
-            max = allocPtr->next->size;
-        }
-        count++;
-        allocPtr = allocPtr->next;
-    }
-    printf("total size=%d, max=%d, count=%d\n", total, max, count);
-#if SUPPRESS_DUMP
+    printf("total count: %d\n", osal_atomic_read(&totalCnt_));
     printf("--------\n");
     GrallocEngines::GetInstance()->DumpMem();
-#endif
-}
-
-#ifndef VERSION_IOT
-bool MemCheck::isBeyondTime()
-{
-    time_t currTime = time((time_t *)nullptr);
-    if (currTime - setTime_ > delayTime_) {
-        return true;
-    }
-    return false;
-}
-
-bool MemCheck::InsertRecord(uintptr_t address, Opt opt, int32_t size, int32_t total)
-{
-    MemRecord* recordNote = (MemRecord*)malloc(sizeof(MemRecord));
-    if (recordNote == nullptr) {
-        GRAPHIC_LOGE("MemAdd malloc failed\n");
-        return false;
-    }
-    recordNote->address = address;
-    recordNote->opt = opt;
-    recordNote->size = size;
-    recordNote->time = time(0);
-    recordNote->total = total;
-    recordNote->next = nullptr;
-    recordTail->next = recordNote;
-    recordTail = recordNote;
-    return true;
-}
-
-static void* SaveMemInfo(void* arg)
-{
-    MemCheck::GetInstance()->SaveRecordInfo();
-    return nullptr;
-}
-
-void MemCheck::SaveRecordInfo()
-{
-    // sleep 1s, wait main thread set delaytime
-    sleep(1);
-    time_t currTime = time((time_t *)nullptr);
-    while ((currTime - setTime_) < (delayTime_ + OFFSET_TIME)) {
-        MemRecord* recordPtr = recordHead;
-        while (recordPtr->next != nullptr) {
-            MemRecord* recordNote = recordPtr->next;
-            recordPtr->next = recordPtr->next->next;
-            struct tm *sttm = localtime(&(recordNote->time));
-            // 1900: year
-            fprintf(fp, "%04u-%02u-%02u %02u:%02u:%02u addr=0x%x %s size:%d total:%d\n", sttm->tm_year + 1900,
-                sttm->tm_mon+1, sttm->tm_mday, sttm->tm_hour, sttm->tm_min, sttm->tm_sec, recordNote->address,
-                recordNote->opt == Opt::ADD ? "add" : "del", recordNote->size, recordNote->total);
-            free(recordNote);
-            recordNote = nullptr;
-        }
-        recordTail = recordHead;
-        fflush(fp);
-
-        sleep(2); // 2: sleep time
-        currTime = time((time_t *)nullptr);
-    }
-    fclose(fp);
-    fp = nullptr;
-    recordThreadId = nullptr;
-}
-
-bool MemCheck::CreateRecordFile()
-{
-    char currPath[16] = "/user/mem/";
-    if (access(currPath, F_OK) == -1) {
-        GRAPHIC_LOGD("dir %s not exist, create dir\n", currPath);
-        if (mkdir(currPath, 0777) != 0) { // 0777: permission mode
-            GRAPHIC_LOGE("create dir %s failed , errno = %d : %s\n", currPath, errno, strerror(errno));
-            return false;
-        }
-    }
-    char path[20] = "";
-    if (sprintf_s(path, sizeof(path), "%s%d", currPath, getpid()) == -1) {
-        GRAPHIC_LOGE("MemCheckInit sprintf_s failed\n");
-        return false;
-    }
-    fp = fopen(path, "w+");
-    if (fp == nullptr) {
-        GRAPHIC_LOGE("open mem file %s failed ,errno = %d : %s\n", path, errno, strerror(errno));
-        return false;
-    }
-    return true;
 }
-
-void MemCheck::CollectMemory(uint32_t delayTime)
-{
-    if (!initSuc) {
-        GRAPHIC_LOGE("Init failed!\n");
-        return;
-    }
-    if (fp == nullptr && !CreateRecordFile()) {
-        return;
-    }
-
-    if (recordThreadId == nullptr) {
-        recordThreadId = ThreadCreate(SaveMemInfo, nullptr, nullptr);
-        if (recordThreadId == nullptr) {
-            GRAPHIC_LOGE("create thread failed!!\n");
-            return;
-        }
-    }
-    setTime_ = time(0);
-    delayTime_ = delayTime;
-    DumpMemInfo();
-}
-#endif
 } // namespace OHOS
 #endif
index 7b16562..664c3c9 100755 (executable)
@@ -46,9 +46,6 @@ void ImageCacheFree(ImageInfo& info)
         return;
     }
 
-    if (LiteMGfxEngine::GetInstance()->IsAsyncModeEnabled()) {
-        LiteMGfxEngine::GetInstance()->Flush(Rect(0, 0, 0, 0));
-    }
     LiteMGfxEngine::GetInstance()->SyncHwDraw();
     GrallocEngines::GetInstance()->FreeBuffer(const_cast<uint8_t*>(info.data));
     info.phyAddr = nullptr;
index 7d4094d..fcae1dd 100755 (executable)
@@ -143,6 +143,7 @@ public:
 
     uint32_t CalcStride(uint32_t width, PixelFormat fmt);
     bool IsUlpsEnabled(void);
+    bool TryExitUlps(bool isFlushing);
     bool IsDoubleBuffer(void);
 
     /**
@@ -169,6 +170,7 @@ private:
     uint32_t devId_;
     LayerFuncs* layerFuncs_;
     uint8_t currentBufferId_[LAYER_MAX];
+    bool exitUlps_;
 
     #ifdef LAYER_PF_ARGB1555
     const uint8_t layerBpp_ = 16;
index 7244a44..039b4e9 100755 (executable)
@@ -39,6 +39,7 @@ public:
     void GetEventData(DeviceData& data, InputDevType type);
     void SetEventData(const RawEvent& event);
     bool IsEventEmpty(InputDevType type);
+    void ClearEvent(InputDevType type);
 #ifdef CONFIG_SUPPORTED_POWERMGR
     void SendEventToPM(const RawEvent& event);
 #endif
diff --git a/code/sdk/middleware/services/gui/uikit/res/image_background_circle.bin b/code/sdk/middleware/services/gui/uikit/res/image_background_circle.bin
new file mode 100644 (file)
index 0000000..3998f5c
--- /dev/null
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:129286d49d6097dd71c38311f24ea9cad9da01ea7ea3a1160b45731fbe9eb600
+size 237624
diff --git a/code/sdk/middleware/services/gui/uikit/res/kaleidoscope_circle.bin b/code/sdk/middleware/services/gui/uikit/res/kaleidoscope_circle.bin
new file mode 100644 (file)
index 0000000..15be273
--- /dev/null
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bda994196a6f1887261fad0b0af108eb64dc2be14abc6581ef3ec2c7e1afbbb3
+size 99864
diff --git a/code/sdk/middleware/services/gui/uikit/res/planet_circle.bin b/code/sdk/middleware/services/gui/uikit/res/planet_circle.bin
new file mode 100644 (file)
index 0000000..770fd45
--- /dev/null
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:81d23195839a6cf705c083957b110a235227d40784f3b644b94b795555de2654
+size 95784
diff --git a/code/sdk/middleware/services/gui/uikit/res/rainbow_circle.bin b/code/sdk/middleware/services/gui/uikit/res/rainbow_circle.bin
new file mode 100644 (file)
index 0000000..da8559e
--- /dev/null
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:25263b886947c791d585e3a26f575bc40dcefe85bb733b759f56424d9af2e51a
+size 72184
index 2d23528..e07b3f8 100644 (file)
@@ -100,7 +100,9 @@ void UITestIcosahedron::TearDown()
 \r
 const UIView* UITestIcosahedron::GetTestView()\r
 {\r
-    enterAnimator_->Start();\r
+    if (enterAnimator_ != nullptr) {\r
+        enterAnimator_->Start();\r
+    }\r
     return container_;\r
 }\r
 }
\ No newline at end of file
diff --git a/code/sdk/middleware/services/gui/uikit/sample/uitest/components/ui_test_slipflow/ui_test_slipflow.cpp b/code/sdk/middleware/services/gui/uikit/sample/uitest/components/ui_test_slipflow/ui_test_slipflow.cpp
new file mode 100644 (file)
index 0000000..eb79368
--- /dev/null
@@ -0,0 +1,295 @@
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2024. All rights reserved.\r
+ * Description: UITestSlip\r
+ * Author:\r
+ * Create: 2024-08\r
+ */\r
+\r
+#include "ui_test_slipflow.h"\r
+#include "common/screen.h"\r
+#include "font/ui_font.h"\r
+#include "gfx_utils/graphic_math.h"\r
+#include "gfx_utils/rect.h"\r
+#include "common/image_cache_manager.h"\r
+\r
+namespace OHOS {\r
+namespace {\r
+struct FaceInfo {\r
+    const char* name;\r
+    const char* path;\r
+} ;\r
+\r
+static constexpr uint8_t SLIPFLOW_MAX_PAGE_NUM = 6;\r
+static FaceInfo g_faceInfo[SLIPFLOW_MAX_PAGE_NUM] = {\r
+    {"1 rainbow", RES_PATH"/rainbow_circle.bin"},\r
+    {"2 kaleidoscope", RES_PATH"/kaleidoscope_circle.bin"},\r
+    {"3 planet", RES_PATH"/planet_circle.bin"},\r
+    {"4 rainbow", RES_PATH"/rainbow_circle.bin"},\r
+    {"5 kaleidoscope", RES_PATH"/kaleidoscope_circle.bin"},\r
+    {"6 planet", RES_PATH"/planet_circle.bin"}\r
+};\r
+static constexpr const char* BACK_IMAGE_PATH = RES_PATH"/image_background_circle.bin";\r
+\r
+static constexpr uint8_t SLIPFLOW_PRELOAD_PAGE_NUM = 3;\r
+static constexpr int16_t LABEL_FONT_SIZE = 30;\r
+static constexpr uint8_t DEFAULT_STEP = 10;\r
+static constexpr uint16_t BUTTON_WIDTH = 60;\r
+static constexpr uint16_t BUTTON_HEIGHT = 40;\r
+static constexpr uint16_t BUTTON_GROUP_WIDTH = 300;\r
+static constexpr uint16_t BUTTON_GROUP_HEIGHT = 80;\r
+static constexpr uint8_t DIVISOR_TWO = 2;\r
+static constexpr uint16_t PAGE_WIDTH = 200;\r
+static constexpr uint16_t PAGE_HEIGHT = 200;\r
+} // namespace\r
+\r
+void UITestSlipflow::SetUp()\r
+{\r
+    if (container_ == nullptr) {\r
+        container_ = new UIScrollView();\r
+        container_->SetThrowDrag(true);\r
+        container_->SetHorizontalScrollState(false);\r
+        container_->Resize(Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());\r
+    }\r
+}\r
+\r
+void UITestSlipflow::TearDown()\r
+{\r
+    container_->Remove(slipflow_);\r
+    DeleteChildren(container_);\r
+    if (container_ != nullptr) {\r
+        container_ = nullptr;\r
+    }\r
+    delete slipflow_;\r
+    slipflow_ = nullptr;\r
+\r
+    label_ = nullptr;\r
+    slipUpNoticelabel_ = nullptr;\r
+    lastIndex_ = 0;\r
+    showBtn_ = nullptr;\r
+    isShowBtnGrp_ = false;\r
+    btnGrp_ = nullptr;\r
+    loadNum_ = 0;\r
+\r
+    imgWidthAddBtn_ = nullptr;\r
+    imgWidthSubBtn_ = nullptr;\r
+\r
+    imgWidth_ = 200;        // 200: default value\r
+    imgPadding_ = 50;       // 50: default value\r
+    mirrorOpa_ = 30;        // 30: default value\r
+    rotateAngle_ = 70.0f;   // 70: default value\r
+}\r
+\r
+const UIView* UITestSlipflow::GetTestView()\r
+{\r
+    UITestSlipflowView();\r
+    return container_;\r
+}\r
+\r
+void UITestSlipflow::CreateLabelButton(UILabelButton** btn, const char* tile, int16_t x, int16_t y)\r
+{\r
+    UILabelButton* tempBtn = nullptr;\r
+    if (tempBtn == nullptr) {\r
+        tempBtn = new UILabelButton();\r
+    }\r
+    tempBtn->SetPosition(x, y, BUTTON_WIDTH, BUTTON_HEIGHT);\r
+    tempBtn->SetText(tile);\r
+    tempBtn->SetOnClickListener(this);\r
+    btnGrp_->Add(tempBtn);\r
+    *btn = tempBtn;\r
+}\r
+\r
+void UITestSlipflow::InitButtonGroup()\r
+{\r
+    if (showBtn_ == nullptr) {\r
+        showBtn_ = new UIButton();\r
+        showBtn_->SetPosition(202, 10, BUTTON_WIDTH, BUTTON_HEIGHT);  // 202: x position 10: y position\r
+        showBtn_->SetStyleForState(STYLE_BACKGROUND_OPA, 0, UIButton::ButtonState::RELEASED);\r
+        showBtn_->SetStyleForState(STYLE_BACKGROUND_OPA, 0, UIButton::ButtonState::PRESSED);\r
+        showBtn_->SetOnClickListener(this);\r
+        container_->Add(showBtn_);\r
+    }\r
+    if (btnGrp_ == nullptr) {\r
+        btnGrp_ = new UIViewGroup();\r
+        btnGrp_->SetPosition(77, 40, BUTTON_GROUP_WIDTH, BUTTON_GROUP_HEIGHT); // 77: x position 40: y position\r
+        btnGrp_->SetStyle(STYLE_BACKGROUND_OPA, 0);\r
+        btnGrp_->SetVisible(false);\r
+        container_->Add(btnGrp_);\r
+    }\r
+    CreateLabelButton(&imgWidthAddBtn_, "wid+", 0, 0);\r
+    CreateLabelButton(&imgWidthSubBtn_, "wid-", 60, 0);    // 60: x position\r
+}\r
+\r
+void UITestSlipflow::UITestSlipflowView()\r
+{\r
+    if (container_ != nullptr) {\r
+        if (slipflow_ == nullptr) {\r
+            slipflow_ = new UISlipflowView();\r
+        }\r
+        slipflow_->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());\r
+        slipflow_->SetIntercept(true);\r
+        slipflow_->SetThrowDrag(true);\r
+        slipflow_->SetPageSize(PAGE_WIDTH, PAGE_HEIGHT);\r
+        slipflow_->SetOnSlipflowListener(this);\r
+        UITestSlipflowViewInitFlow();\r
+\r
+        if (label_ == nullptr) {\r
+            label_ = new UILabel();\r
+        }\r
+        label_->SetPosition(127, 50, 200, 50); // 127 50 200 50: label position\r
+        label_->SetTextColor(Color::White());\r
+        label_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+        lastIndex_ = slipflow_->GetCurrentPage();\r
+        label_->SetText(g_faceInfo[lastIndex_].name);\r
+        label_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, LABEL_FONT_SIZE);\r
+        if (slipUpNoticelabel_ == nullptr) {\r
+            slipUpNoticelabel_ = new UILabel();\r
+        }\r
+        slipUpNoticelabel_->SetPosition(127, 400, 200, 50); // 127 400 200 50: label position\r
+        slipUpNoticelabel_->SetTextColor(Color::White());\r
+        slipUpNoticelabel_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+        slipUpNoticelabel_->SetText("继续上滑删除");\r
+        slipUpNoticelabel_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); // 30 : font size\r
+        slipUpNoticelabel_->SetVisible(false);\r
+        container_->Add(slipflow_);\r
+        container_->Add(label_);\r
+        container_->Add(slipUpNoticelabel_);\r
+        InitButtonGroup();\r
+    }\r
+}\r
+\r
+void UITestSlipflow::UITestSlipflowViewInitFlow()\r
+{\r
+    for (uint8_t i = 0; i < SLIPFLOW_MAX_PAGE_NUM; i++) {\r
+        UIImageView* image = new UIImageView();\r
+        ImageInfo* src = ImageCacheManager::GetInstance().LoadSingleRes(std::string(g_faceInfo[i].path));\r
+        image->SetViewId(g_faceInfo[i].name);\r
+        image->SetSrc(src);\r
+        image->Resize(PAGE_WIDTH, PAGE_HEIGHT);\r
+        image->SetResizeMode(UIImageView::ImageResizeMode::FILL);\r
+        image->SetAutoEnable(false);\r
+        UIViewGroup* group = new UIViewGroup();\r
+        group->SetViewId(g_faceInfo[i].name);\r
+        group->SetPosition(0, 0, PAGE_WIDTH, Screen::GetInstance().GetHeight());\r
+        group->SetStyle(STYLE_BACKGROUND_OPA, 0);\r
+        group->SetDragParentInstead(true);\r
+        UIImageView* backImage = new UIImageView();\r
+        backImage->SetSrc(ImageCacheManager::GetInstance().LoadSingleRes(std::string(BACK_IMAGE_PATH)));\r
+        backImage->Resize(PAGE_WIDTH, PAGE_HEIGHT);\r
+        backImage->SetResizeMode(UIImageView::ImageResizeMode::FILL);\r
+        backImage->SetAutoEnable(false);\r
+        group->Add(backImage);\r
+        group->Add(image);\r
+        slipflow_->Add(group);\r
+        backImage->LayoutCenterOfParent();\r
+        image->LayoutCenterOfParent();\r
+        loadNum_++;\r
+    }\r
+}\r
+\r
+bool UITestSlipflow::OnScroll(int16_t distance)\r
+{\r
+    if (slipflow_->GetChildrenNumber() == 0) {\r
+        label_->SetText("");\r
+        return true;\r
+    }\r
+    int16_t contMidX = static_cast<int16_t>(Screen::GetInstance().GetWidth() / DIVISOR_TWO);\r
+    int16_t minOffset = contMidX;\r
+    uint8_t newCenterIndex = lastIndex_;\r
+    for (uint8_t i = 0; i < slipflow_->GetChildrenNumber(); i++) {\r
+        Rect rect =  slipflow_->GetViewByIndex(i)->GetOrigRect();\r
+        int16_t x = rect.GetLeft();\r
+        int16_t x1 = rect.GetRight();\r
+        int16_t xMid = static_cast<int16_t>(x + (x1 - x + 1) / DIVISOR_TWO);\r
+        int16_t distance = MATH_ABS(xMid - contMidX);\r
+        if (distance < minOffset) {\r
+            newCenterIndex = i;\r
+            minOffset = distance;\r
+        }\r
+    }\r
+    if (newCenterIndex != lastIndex_) {\r
+        lastIndex_ = newCenterIndex;\r
+        label_->SetText(slipflow_->GetViewByIndex(lastIndex_)->GetViewId());\r
+    }\r
+\r
+    Rect curViewRect = slipflow_->GetViewByIndex(lastIndex_)->GetOrigRect();\r
+    int16_t centerMid = curViewRect.GetLeft() + curViewRect.GetWidth() / DIVISOR_TWO;\r
+    int16_t offset = MATH_ABS(contMidX - centerMid);\r
+    if (offset > curViewRect.GetWidth() / DIVISOR_TWO) {\r
+        label_->SetStyle(STYLE_TEXT_OPA, 0);\r
+    } else {\r
+        uint8_t alpha =  (uint8_t)((1.0f - ((float)offset / (curViewRect.GetWidth() / DIVISOR_TWO))) * OPA_OPAQUE);\r
+        label_->SetStyle(STYLE_TEXT_OPA, alpha);\r
+    }\r
+    return true;\r
+}\r
+\r
+void UITestSlipflow::OnScrollUpStart()\r
+{\r
+    label_->SetVisible(false);\r
+    slipUpNoticelabel_->SetVisible(true);\r
+}\r
+\r
+void UITestSlipflow::OnScrollUpEnd()\r
+{\r
+    OnScroll(0);\r
+    label_->SetVisible(true);\r
+    slipUpNoticelabel_->SetVisible(false);\r
+}\r
+\r
+void UITestSlipflow::OnRefreshPageOpaScale(UIView* view, int16_t xOffset, int16_t yOffset)\r
+{\r
+    UIView* image = static_cast<UIViewGroup*>(view)->GetChildrenHead()->GetNextSibling();\r
+    if (xOffset < 0) {\r
+        image->SetOpaScale(OPA_OPAQUE);\r
+    } else if (xOffset > slipflow_->GetPageWidth()) {\r
+        image->SetOpaScale(0);\r
+    } else {\r
+        uint8_t alpha = (uint8_t)(OPA_OPAQUE * (1.0f - ((float)xOffset / slipflow_->GetPageWidth())));\r
+        image->SetOpaScale(alpha);\r
+    }\r
+    if (yOffset > 0) {\r
+        if (yOffset > (slipflow_->GetPageHeight() / DIVISOR_TWO)) {\r
+            image->SetOpaScale(OPA_OPAQUE * 0.4f);\r
+        } else {\r
+            uint8_t alpha = (uint8_t)(OPA_OPAQUE *\r
+                            (1.0f - 0.6f * ((float)yOffset / (slipflow_->GetPageHeight() / DIVISOR_TWO))));\r
+            image->SetOpaScale(alpha);\r
+        }\r
+    }\r
+}\r
+\r
+bool UITestSlipflow::OnRemove(UIView* view)\r
+{\r
+    if (view == nullptr) {\r
+        return false;\r
+    }\r
+    UIViewGroup* group = static_cast<UIViewGroup*>(view);\r
+    UIView* curView = group->GetChildrenHead();\r
+    UIView* deleteView = nullptr;\r
+    while (curView != nullptr) {\r
+        deleteView = curView;\r
+        curView = curView->GetNextSibling();\r
+        group->Remove(deleteView);\r
+        delete deleteView;\r
+        deleteView = nullptr;\r
+    }\r
+    delete group;\r
+    group = nullptr;\r
+    return true;\r
+}\r
+\r
+bool UITestSlipflow::OnClick(UIView& view, const ClickEvent& event)\r
+{\r
+    if (&view == showBtn_) {\r
+        btnGrp_->SetVisible(!btnGrp_->IsVisible());\r
+    } else if (&view == imgWidthAddBtn_) {\r
+        imgWidth_ += DEFAULT_STEP;\r
+        slipflow_->SetPageSize(imgWidth_, imgWidth_);\r
+    } else if (&view == imgWidthSubBtn_) {\r
+        imgWidth_ -= DEFAULT_STEP;\r
+        slipflow_->SetPageSize(imgWidth_, imgWidth_);\r
+    }\r
+    slipflow_->Invalidate();\r
+    return true;\r
+}\r
+} // namespace OHOS\r
diff --git a/code/sdk/middleware/services/gui/uikit/sample/uitest/components/ui_test_slipflow/ui_test_slipflow.h b/code/sdk/middleware/services/gui/uikit/sample/uitest/components/ui_test_slipflow/ui_test_slipflow.h
new file mode 100644 (file)
index 0000000..17ee5ad
--- /dev/null
@@ -0,0 +1,68 @@
+/*\r
+ * Copyright (c) CompanyNameMagicTag 2024. All rights reserved.\r
+ * Description: UITestSlip\r
+ * Author:\r
+ * Create: 2024-08\r
+ */\r
+\r
+#ifndef UI_TEST_SLIPFLOW_VIEW_H\r
+#define UI_TEST_SLIPFLOW_VIEW_H\r
+\r
+#include "components/ui_slipflow_view.h"\r
+#include "components/ui_scroll_view.h"\r
+#include "components/ui_label_button.h"\r
+#include "animator/animator.h"\r
+#include "ui_test.h"\r
+\r
+namespace OHOS {\r
+class UITestSlipflow : public UITest,\r
+    public UISlipflowView::OnSlipflowScrollListener, public UIView::OnClickListener {\r
+public:\r
+    UITestSlipflow() {}\r
+    ~UITestSlipflow() override {}\r
+    void SetUp() override;\r
+    void TearDown() override;\r
+    const UIView* GetTestView() override;\r
+    /**\r
+     * @brief Test display UISlipflow\r
+     */\r
+    void UITestSlipflowView();\r
+    void UITestSlipflowViewInitFlow();\r
+\r
+    bool OnScroll(int16_t distance) override;\r
+    void OnScrollUpStart() override;\r
+    void OnScrollUpEnd() override;\r
+    void OnRefreshPageOpaScale(UIView* view, int16_t xOffset, int16_t yOffset) override;\r
+\r
+    bool OnRemove(UIView* view) override;\r
+\r
+    bool OnClick(UIView& view, const ClickEvent& event) override;\r
+private:\r
+    void InitButtonGroup();\r
+    void CreateLabelButton(UILabelButton** btn, const char* tile, int16_t x, int16_t y);\r
+\r
+    UIScrollView* container_ = nullptr;\r
+    UISlipflowView* slipflow_ = nullptr;\r
+    UILabel* label_ = nullptr;\r
+    UILabel* slipUpNoticelabel_ = nullptr;\r
+    uint16_t lastIndex_ = 0;\r
+    UIButton* showBtn_ = nullptr;\r
+    bool isShowBtnGrp_ = false;\r
+    UIViewGroup* btnGrp_ = nullptr;\r
+    uint8_t loadNum_ = 0;\r
+    UILabelButton* addBtn_ = nullptr;\r
+    UILabelButton* removeBtn_ = nullptr;\r
+    UILabelButton* imgWidthAddBtn_ = nullptr;\r
+    UILabelButton* imgWidthSubBtn_ = nullptr;\r
+    UILabelButton* imgPaddingAddBtn_ = nullptr;\r
+    UILabelButton* imgPaddingSubBtn_ = nullptr;\r
+    UILabelButton* maxAngleAddBtn_ = nullptr;\r
+    UILabelButton* maxAngleSubBtn_ = nullptr;\r
+    UILabelButton* loopBtn_ = nullptr;\r
+    uint16_t imgWidth_ = 200;  // 200: default value\r
+    uint16_t imgPadding_ = 50;  // 50: default value\r
+    uint8_t mirrorOpa_ = 30;    // 30: default value\r
+    float rotateAngle_ = 70.0f; // 70: default value\r
+};\r
+} // namespace OHOS\r
+#endif // UI_TEST_SLIPFLOW_VIEW_H\r
index ce6b1e7..156f248 100755 (executable)
@@ -81,14 +81,14 @@ public:
             tempView->SetViewId(view.GetViewId());
             tempView->SetPosition(tempView->GetX(), tempView->GetY());
             rootView->Add(tempView);
-            if (backBtn_ == nullptr) {
-                backBtn_ = new TransparentBackButton();
-                backBtn_->SetPosition(0, (Screen::GetInstance().GetHeight() - BACK_BUTTON_SIZE) / 2, // 2, half size
-                    BACK_BUTTON_SIZE, BACK_BUTTON_SIZE);
-            }
-            backBtn_->SetViewId(view.GetViewId());
-            rootView->Add(backBtn_);
         }
+        if (backBtn_ == nullptr) {
+            backBtn_ = new TransparentBackButton();
+            backBtn_->SetPosition(0, (Screen::GetInstance().GetHeight() - BACK_BUTTON_SIZE) / 2, // 2, half size
+                BACK_BUTTON_SIZE, BACK_BUTTON_SIZE);
+        }
+        backBtn_->SetViewId(view.GetViewId());
+        rootView->Add(backBtn_);
         rootView->Invalidate();
         return true;
     }
index 3e1c2cb..a1d44f4 100755 (executable)
@@ -17,6 +17,9 @@
 #include "common/task_manager.h"
 #include "gfx_utils/graphic_log.h"
 #include "dock/pointer_input_device.h"
+#include "dock/rotate_input_device.h"
+#include "hals/lite_input_distributer.h"
+#include "gfx_utils/input_event_info.h"
 
 namespace OHOS {
 InputDeviceManager* InputDeviceManager::GetInstance()
@@ -94,4 +97,40 @@ void InputDeviceManager::ClearPressableViews()
         node = node->next_;
     }
 }
+
+void InputDeviceManager::ClearRotateState()
+{
+    ListNode<InputDevice*>* node = deviceList_.Begin();
+    while (node != deviceList_.End()) {
+        RotateInputDevice* device = dynamic_cast<RotateInputDevice*>(node->data_);
+        if (device != nullptr) {
+            device->ResetRotateState();
+        }
+        node = node->next_;
+    }
+}
+
+void InputDeviceManager::ClearInputDeviceState(InputDeviceManager::InputDeviceType type)
+{
+    switch (type) {
+        case InputDeviceManager::InputDeviceType::ALL:
+            InputDeviceManager::GetInstance()->ClearPressableViews();
+            InputDeviceManager::GetInstance()->ClearRotateState();
+            LiteInputDistributer::GetInstance()->ClearEvent(InputDevType::INDEV_TYPE_TOUCH);
+            LiteInputDistributer::GetInstance()->ClearEvent(InputDevType::INDEV_TYPE_KEY);
+            break;
+        case InputDeviceManager::InputDeviceType::POINT:
+            LiteInputDistributer::GetInstance()->ClearEvent(InputDevType::INDEV_TYPE_TOUCH);
+            InputDeviceManager::GetInstance()->ClearPressableViews();
+            break;
+        case InputDeviceManager::InputDeviceType::ROTATE:
+            InputDeviceManager::GetInstance()->ClearRotateState();
+            break;
+        case InputDeviceManager::InputDeviceType::KEY:
+            LiteInputDistributer::GetInstance()->ClearEvent(InputDevType::INDEV_TYPE_KEY);
+        default:
+            GRAPHIC_LOGE("Cannot clear state of the input device: %d!", type);
+            break;
+    }
+}
 }  // namespace OHOS
\ No newline at end of file
index 02e33f9..9ad0ce4 100755 (executable)
@@ -106,9 +106,6 @@ bool Screen::GetScreenBitmapByRect(ImageInfo& info, const Rect* rect)
     BlendOption opt;
     opt.opacity = OPA_OPAQUE;
     opt.mode = BLEND_SRC;
-    if (LiteMGfxEngine::GetInstance()->IsAsyncModeEnabled()) {
-        LiteMGfxEngine::GetInstance()->Flush(Rect(0, 0, 0, 0));
-    }
     BaseGfxEngine::GetInstance()->Blit(dstInfo, {0, 0}, srcInfo, dstRect, opt);
 #if ENABLE_VGU_ENGINE
     LiteMGfxEngine::GetInstance()->SyncHwDraw();
index 7f0dc55..00be014 100755 (executable)
@@ -362,7 +362,7 @@ bool UIAbstractScroll::OnRotateEvent(const RotateEvent& event)
 
 bool UIAbstractScroll::OnRotateEndEvent(const RotateEvent& event)
 {
-    if (memset_s(lastDelta_, MAX_DELTA_SIZE, 0, MAX_DELTA_SIZE) != EOK) {
+    if (memset_s(lastDelta_, sizeof(lastDelta_), 0, sizeof(lastDelta_)) != EOK) {
         return UIView::OnRotateEndEvent(event);
     }
 
index ef35024..29ec415 100755 (executable)
 #include "gfx_utils/graphic_log.h"
 
 namespace OHOS {
+void Paint::Scale(float scaleX, float scaleY)
+{
+    this->scaleRadioX_ *= scaleX;
+    this->scaleRadioY_ *= scaleX;
+    if (rotateAngle_ > 0.0f || rotateAngle_ < 0) {
+        transfrom_.Rotate(-rotateAngle_ * UI_PI / BOXER);
+        transfrom_.Scale(scaleX, scaleY);
+        transfrom_.Rotate(rotateAngle_ * UI_PI / BOXER);
+    } else {
+        transfrom_.Scale(scaleX, scaleY);
+    }
+}
+
+void Paint::Rotate(float angle)
+{
+    transfrom_.Rotate(angle * UI_PI / BOXER);
+    rotateAngle_ += angle;
+}
+
+void Paint::Rotate(float angle, int16_t x, int16_t y)
+{
+    transfrom_.Translate(-x, -y);
+    transfrom_.Rotate(angle * UI_PI / BOXER);
+    rotateAngle_ += angle;
+    transfrom_.Translate(x, y);
+}
+
+void Paint::Translate(int16_t x, int16_t y)
+{
+    transfrom_.Translate(x, y);
+    this->translationX_ += x;
+    this->translationY_ += y;
+}
+
+void Paint::SetTransform(float scaleX, float shearX, float shearY,
+                         float scaleY, int16_t transLateX, int16_t transLateY)
+{
+    transfrom_.Reset();
+    rotateAngle_ = 0;
+    Transform(scaleX, shearX, shearY, scaleY, transLateX, transLateY);
+}
+
+void Paint::Transform(float scaleX, float shearX, float shearY, float scaleY, int16_t transLateX, int16_t transLateY)
+{
+    this->translationX_ += transLateX;
+    this->translationY_ += transLateY;
+    transLateX += transfrom_.GetData()[2]; // 2: index
+    transLateY += transfrom_.GetData()[5]; // 5: index
+    transfrom_.Translate(-transfrom_.GetData()[2], -transfrom_.GetData()[5]); // 2 5: index
+    Scale(scaleX, scaleY);
+    transfrom_.Translate(transLateX, transLateY);
+    transfrom_.SetData(1, transfrom_.GetData()[1] + shearX);
+    transfrom_.SetData(3, transfrom_.GetData()[3] + shearY); // 3: index
+}
+
 UICanvas::UICanvasPath::~UICanvasPath()
 {
     points_.Clear();
@@ -395,33 +450,63 @@ void UICanvas::DrawImage(const Point& startPoint, const char* image, const Paint
         return;
     }
 
-    ImageParam* imageParam = new ImageParam;
-    if (imageParam == nullptr) {
-        GRAPHIC_LOGE("new ImageParam fail");
-        return;
+    if (static_cast<uint8_t>(paint.GetStyle()) & Paint::PaintStyle::FILL_STYLE) {
+        UIImageView* imageView = new UIImageView();
+        if (imageView == nullptr) {
+            GRAPHIC_LOGE("new UIImageView fail");
+            return;
+        }
+        imageView->SetPosition(startPoint.x, startPoint.y);
+        imageView->SetSrc(image);
+
+        DrawCmd cmd;
+        cmd.paint = paint;
+        cmd.param = imageView;
+        cmd.DeleteParam = DeleteImageView;
+        cmd.DrawGraphics = DoDrawImage;
+        drawCmdList_.PushBack(cmd);
+
+        Invalidate();
+        SetStartPosition(startPoint);
     }
-    imageParam->image = new Image();
-    if (imageParam->image == nullptr) {
-        delete imageParam;
-        imageParam = nullptr;
+}
+
+void UICanvas::DrawImage(const Point& startPoint, const char* image,
+                         const Paint& paint, int16_t width, int16_t height)
+{
+    if (image == nullptr) {
         return;
     }
+    if (static_cast<uint8_t>(paint.GetStyle()) & Paint::PaintStyle::FILL_STYLE) {
+        UIImageView* imageView = new UIImageView();
+        if (imageView == nullptr) {
+            GRAPHIC_LOGE("new UIImageView fail");
+            return;
+        }
+        imageView->SetPosition(startPoint.x, startPoint.y);
+        imageView->SetSrc(image);
+        float scaleX = 1.0;
+        float scaleY = 1.0;
+        if (width > 0 && imageView->GetWidth() > 0) {
+            scaleX = (float)width / (float)imageView->GetWidth();
+        }
+        if (height > 0 && imageView->GetHeight() > 0) {
+            scaleY = (float)height / (float)imageView->GetHeight();
+        }
+        DrawCmd cmd;
+        cmd.paint = paint;
+        cmd.paint.Scale(scaleX, scaleY);
+        cmd.param = imageView;
+        cmd.DeleteParam = DeleteImageView;
+        cmd.DrawGraphics = DoDrawImage;
+        drawCmdList_.PushBack(cmd);
 
-    imageParam->image->SetSrc(image);
-    ImageHeader header = {0};
-    imageParam->image->GetHeader(header);
-    imageParam->start = startPoint;
-    imageParam->height = header.height;
-    imageParam->width = header.width;
-
-    DrawCmd cmd;
-    cmd.paint = paint;
-    cmd.param = imageParam;
-    cmd.DeleteParam = DeleteImageParam;
-    cmd.DrawGraphics = DoDrawImage;
-    drawCmdList_.PushBack(cmd);
+        Invalidate();
+        SetStartPosition(startPoint);
+    }
 
     Invalidate();
+    SetStartPosition(startPoint);
 }
 
 void UICanvas::DrawPath(const Paint& paint)
@@ -674,21 +759,23 @@ void UICanvas::DoDrawImage(BufferInfo& gfxDstBuffer,
     if (param == nullptr) {
         return;
     }
-    ImageParam* imageParam = static_cast<ImageParam*>(param);
-
-    if (imageParam->image == nullptr) {
-        return;
-    }
-
+    UIImageView* imageView = static_cast<UIImageView*>(param);
+    Point startPos = {imageView->GetX(), imageView->GetY()};
     Point start;
-    GetAbsolutePosition(imageParam->start, rect, style, start);
-
-    Rect cordsTmp;
-    cordsTmp.SetPosition(start.x, start.y);
-    cordsTmp.SetHeight(imageParam->height);
-    cordsTmp.SetWidth(imageParam->width);
-    DrawImage::DrawCommon(gfxDstBuffer, cordsTmp, invalidatedArea,
-                          imageParam->image->GetPath(), style, paint.GetOpacity());
+    GetAbsolutePosition({startPos.x, startPos.y}, rect, style, start);
+    imageView->SetPosition(start.x, start.y);
+    if (!paint.GetTransAffine().IsIdentity()) {
+        float angle = paint.GetRotateAngle();
+        imageView->Rotate(MATH_ROUND(angle), Vector2<float>(0, 0));
+        imageView->Translate(Vector3<int16_t>(paint.GetTranslateX(), paint.GetTranslateY(), 1));
+        Vector2<float> scale(static_cast<float>(paint.GetScaleX()), static_cast<float>(paint.GetScaleY()));
+        imageView->Scale(scale, Vector2<float>(0, 0));
+        TransAffine affine = paint.GetTransAffine();
+        imageView->Shear(Vector2<float>(affine.GetData()[1], 0), Vector2<float>(affine.GetData()[3], 0),
+            Vector2<float>(0, 0));
+    }
+    imageView->OnDraw(gfxDstBuffer, invalidatedArea);
+    imageView->SetPosition(startPos.x, startPos.y);
 }
 
 void UICanvas::DoDrawLabel(BufferInfo& gfxDstBuffer,
index 0fa53ac..c3db5d4 100755 (executable)
@@ -338,7 +338,6 @@ void UILabel::SetTextTransformMap(TransformMap& transMap)
 {
     InitLabelText();
     labelText_->SetTransformMap(transMap);
-    SetTransformMap(transMap);
 }
 
 void UILabel::RefreshLabel()
index 242f67e..86db752 100755 (executable)
@@ -380,10 +380,13 @@ bool UIList::DragYInner(int16_t distance)
                 }
                 distance = CalculateElasticDragLen(reboundSize, offset, distance);
             }
-            if ((childrenTail_->GetRelativeRect().GetBottom() + distance) <
+            if (childrenTail_->GetRelativeRect().GetBottom() <
                 (listHeight - scrollBlankSize_ - reboundSize - childrenTail_->GetStyle(STYLE_MARGIN_BOTTOM))) {
-                    distance = listHeight - scrollBlankSize_ - reboundSize - childrenTail_->GetStyle(STYLE_MARGIN_BOTTOM)
-                        - childrenTail_->GetRelativeRect().GetBottom();
+                distance = 0;
+            } else if ((childrenTail_->GetRelativeRect().GetBottom() + distance) <
+                (listHeight - scrollBlankSize_ - reboundSize - childrenTail_->GetStyle(STYLE_MARGIN_BOTTOM))) {
+                distance = listHeight - scrollBlankSize_ - reboundSize - childrenTail_->GetStyle(STYLE_MARGIN_BOTTOM)
+                    - childrenTail_->GetRelativeRect().GetBottom();
             }
         }
     }
index e3b110b..5cc83f3 100755 (executable)
@@ -154,10 +154,6 @@ void UIQrcode::SetQrcodeVal(const uint8_t* val, uint32_t length)
 
 void UIQrcode::FillImgBackground(ImageInfo& info)
 {
-    if (LiteMGfxEngine::GetInstance()->IsAsyncModeEnabled()) {
-        LiteMGfxEngine::GetInstance()->Flush(Rect(0, 0, 0, 0));
-    }
-
     BufferInfo gfxDstBuffer;
     gfxDstBuffer.virAddr = static_cast<void*>(const_cast<uint8_t*>(info.data));
     gfxDstBuffer.phyAddr = gfxDstBuffer.virAddr;
index 35b3350..47c85fc 100755 (executable)
@@ -254,6 +254,10 @@ bool UISwipeView::OnRotateStartEvent(const RotateEvent& event)
 
 bool UISwipeView::OnRotateEndEvent(const RotateEvent& event)
 {
+    if (memset_s(lastDelta_, sizeof(lastDelta_), 0, sizeof(lastDelta_)) != EOK) {
+        return UIView::OnRotateEndEvent(event);
+    }
+
     uint8_t dir;
     if (direction_ == HORIZONTAL) {
         dir = (lastRotateLen_ >= 0) ? DragEvent::DIRECTION_LEFT_TO_RIGHT : DragEvent::DIRECTION_RIGHT_TO_LEFT;
index 6576e95..ec59ffc 100755 (executable)
@@ -1116,10 +1116,6 @@ bool UIView::GetBitmap(ImageInfo& bitmap)
     uint16_t bufferWidth = static_cast<uint16_t>(mask.GetWidth());
     uint16_t bufferHeight = static_cast<uint16_t>(mask.GetHeight());
 
-    if (LiteMGfxEngine::GetInstance()->IsAsyncModeEnabled()) {
-        LiteMGfxEngine::GetInstance()->Flush(Rect(0, 0, 0, 0));
-    }
-
 #ifdef _WIN32
     bitmap.header.colorMode = ARGB8888;
 #else
index 72b7944..ea66050 100755 (executable)
@@ -18,6 +18,7 @@
 #include "components/root_view.h"
 #include "gfx_utils/graphic_math.h"
 #include "common/input_method_manager.h"
+#include "common/input_device_manager.h"
 
 namespace OHOS {
 FocusManager* FocusManager::GetInstance()
@@ -50,6 +51,7 @@ bool FocusManager::ClearFocus()
     lastFocusView_ = focusView_;
     focusView_->Blur();
     focusView_ = nullptr;
+    InputDeviceManager::GetInstance()->ClearInputDeviceState(InputDeviceManager::InputDeviceType::ROTATE);
     return true;
 }
 
index bd89a19..43d2672 100755 (executable)
@@ -26,6 +26,17 @@ namespace OHOS {
  */
 class InputDeviceManager : public Task {
 public:
+enum class InputDeviceType {
+    /** All registered input device*/
+    ALL = 0,
+    /** Point input device */
+    POINT = 1,
+    /** Key input device */
+    KEY = 2,
+    /** Rotate input device */
+    ROTATE = 3,
+};
+
     /**
      * @brief Get instance of InputDeviceManager.
      * @returns Instance of InputDeviceManager
@@ -53,6 +64,11 @@ public:
      */
     void Clear();
 
+    /**
+     * Clear state of input devices.
+     */
+    void ClearInputDeviceState(InputDeviceManager::InputDeviceType type = InputDeviceManager::InputDeviceType::ALL);
+
     /**
      * Clear pressable views recorded in the pointer input device
      */
@@ -74,6 +90,11 @@ private:
     InputDeviceManager(InputDeviceManager&&) = delete;
     InputDeviceManager& operator=(InputDeviceManager&&) = delete;
 
+    /**
+     * Clear rotate state.
+     */
+    void ClearRotateState();
+
     List<InputDevice*> deviceList_;
 };
 } // namespace OHOS
index b9dddd1..07cc87c 100755 (executable)
@@ -34,6 +34,11 @@ public:
         threshold_ = threshold;
     }
 
+    void ResetRotateState()
+    {
+        rotateStart_ = false;
+    }
+
 protected:
     void DispatchEvent(const DeviceData& data) override;
     bool rotateStart_;
index 6c95fb1..57e7a5c 100755 (executable)
@@ -336,6 +336,16 @@ public:
 
     void OnPostDraw(BufferInfo& gfxDstBuffer, const Rect& invalidatedArea) override;
 
+    /**
+     * @brief Get state of scroll animator.
+     * @since 1.0
+     * @version 1.0
+     */
+    uint8_t GetScrollState()
+    {
+        return scrollAnimator_.GetState();
+    }
+
     static constexpr uint8_t HORIZONTAL = 0;
     static constexpr uint8_t VERTICAL = 1;
 
index a2dece2..6f35a8d 100755 (executable)
@@ -38,7 +38,9 @@
 
 #include "common/image.h"
 #include "components/ui_label.h"
+#include "components/ui_image_view.h"
 #include "gfx_utils/list.h"
+#include "gfx_utils/trans_affine.h"
 
 namespace OHOS {
 /**
@@ -57,7 +59,9 @@ public:
      */
     Paint()
         : style_(PaintStyle::STROKE_FILL_STYLE), fillColor_(Color::Black()),
-          strokeColor_(Color::White()), opacity_(OPA_OPAQUE), strokeWidth_(2) {}
+          strokeColor_(Color::White()), opacity_(OPA_OPAQUE), strokeWidth_(2),
+          rotateAngle_(0), scaleRadioX_(1.0f), scaleRadioY_(1.0f), translationX_(0),
+          translationY_(0) {}
 
     /**
      * @brief A destructor used to delete the <b>Paint</b> instance.
@@ -214,12 +218,133 @@ public:
         return opacity_;
     }
 
+    /* Zooms the current drawing to a larger or smaller size */
+    void Scale(float scaleX, float scaleY);
+
+    /**
+     * @brief get the x coordinate scale value
+     * @since 1.0
+     * @version 1.0
+     */
+    float GetScaleX() const
+    {
+        return this->scaleRadioX_;
+    }
+
+    /**
+     * @brief get the y coordinate scale value
+     * @since 1.0
+     * @version 1.0
+     */
+    float GetScaleY() const
+    {
+        return this->scaleRadioY_;
+    }
+
+        /**
+     * @brief Rotate current drawing
+     * @param angle rotate angle value.
+     * @since 1.0
+     * @version 1.0
+     */
+    void Rotate(float angle);
+
+    /**
+     * @brief Rotate current drawing
+     * @param angle rotate angle value.
+     * @param x translate x coordinate.
+     * @param y translate y coordinate.
+     * @since 1.0
+     * @version 1.0
+     */
+    void Rotate(float angle, int16_t x, int16_t y);
+
+    /**
+     * @brief Remap the (x, y) position on the canvas
+     * @param x translate x coordinate.
+     * @param y translate y coordinate.
+     * @since 1.0
+     * @version 1.0
+     */
+    void Translate(int16_t x, int16_t y);
+
+    /**
+     * @brief Gets the x position on the remapping canvas
+     * @since 1.0
+     * @version 1.0
+     */
+    int16_t GetTranslateX() const
+    {
+        return this->translationX_;
+    }
+
+    /**
+     * @brief Gets the Y position on the remapping canvas
+     * @since 1.0
+     * @version 1.0
+     */
+    int16_t GetTranslateY() const
+    {
+        return this->translationY_;
+    }
+
+    /**
+     * @brief Resets the current conversion to the identity matrix. Then run transform ()
+     * @param scaleX scale x value.
+     * @param shearX shear x value.
+     * @param shearY shear y value.
+     * @param scaleY scale y value
+     * @param transLateX translate x coordinate.
+     * @param transLateY translate y coordinate.
+     * @since 1.0
+     * @version 1.0
+     */
+    void SetTransform(float scaleX, float shearX, float shearY, float scaleY, int16_t transLateX, int16_t transLateY);
+
+    /**
+     * @brief Resets the current conversion to the identity matrix. Then run transform ()
+     * @param scaleX scale x value.
+     * @param shearX shear x value.
+     * @param shearY shear y value.
+     * @param scaleY scale y value
+     * @param transLateX translate x coordinate.
+     * @param transLateY translate y coordinate.
+     * @since 1.0
+     * @version 1.0
+     */
+    void Transform(float scaleX, float shearX, float shearY, float scaleY, int16_t transLateX, int16_t transLateY);
+
+    /**
+     * @brief Gets the Trans Affine
+     * @since 1.0
+     * @version 1.0
+     */
+    TransAffine GetTransAffine() const
+    {
+        return transfrom_;
+    }
+
+    /**
+     * @brief Gets the Rotate Angle
+     * @since 1.0
+     * @version 1.0
+     */
+    float GetRotateAngle() const
+    {
+        return rotateAngle_;
+    }
 private:
     PaintStyle style_;
     ColorType fillColor_;
     ColorType strokeColor_;
     uint8_t opacity_;
     uint16_t strokeWidth_;
+    float rotateAngle_; // Rotation angle in degrees
+    float scaleRadioX_;
+    float scaleRadioY_;
+    int32_t translationX_;
+    int32_t translationY_;
+    TransAffine transfrom_; // matrix.
 };
 
 /**
@@ -420,6 +545,7 @@ public:
      */
     void DrawImage(const Point& startPoint, const char* image, const Paint& paint);
 
+    void DrawImage(const Point& startPoint, const char* image, const Paint& paint, int16_t width, int16_t height);
     /**
      * @brief Defines the font style.
      */
@@ -631,13 +757,10 @@ protected:
         delete arcParam;
     }
 
-    static void DeleteImageParam(void* param)
+    static void DeleteImageView(void* param)
     {
-        ImageParam* imageParam = static_cast<ImageParam*>(param);
-        if (imageParam->image != nullptr) {
-            delete imageParam->image;
-        }
-        delete imageParam;
+        UIImageView* imageView = static_cast<UIImageView*>(param);
+        delete imageView;
     }
 
     static void DeleteLabel(void* param)
index 71d3d13..b3c67eb 100755 (executable)
@@ -78,14 +78,14 @@ public:
         LINE_BREAK_MARQUEE,
         /**
          * The width and height of this label remain unchanged.
-         * If this text is too long, it will be scrolled back and forth to display.
+         * If this text is too long, it will be cropped to display.
          */
-        LINE_BREAK_OSCILLATION,
+        LINE_BREAK_CLIP,
         /**
          * The width and height of this label remain unchanged.
-         * If this text is too long, it will be cropped to display.
+         * If this text is too long, it will be scrolled back and forth to display.
          */
-        LINE_BREAK_CLIP,
+        LINE_BREAK_OSCILLATION,
         /**
          * Maximum value of the line break mode, which is used for validity check.
          */
index 47df1bd..e2b9778 100755 (executable)
@@ -114,6 +114,7 @@ enum UIViewType : uint8_t {
     UI_MENU_ITEM,
     UI_CARD_PAGE,
     UI_COVER_FLOW,
+       UI_SLIP_FLOW,
     UI_CROSS_VIEW,
     UI_BARCODE,
     UI_MAP_VIEW,
@@ -1622,7 +1623,7 @@ public:
      * @since 5.0
      * @version 3.0
      */
-    void Scale(const Vector2<float>& scale, const Vector2<float>& pivot);
+    virtual void Scale(const Vector2<float>& scale, const Vector2<float>& pivot);
 
     /**
      * @brief Scales the view in 3d.
@@ -1632,7 +1633,7 @@ public:
      * @since 5.0
      * @version 3.0
      */
-    void Scale(const Vector3<float>& scale, const Vector3<float>& pivot);
+    virtual void Scale(const Vector3<float>& scale, const Vector3<float>& pivot);
 
     /**
      * @brief Shears the view in 3d.
diff --git a/code/sdk/middleware/services/gui/uikit/utils/frameworks/trans_affine.cpp b/code/sdk/middleware/services/gui/uikit/utils/frameworks/trans_affine.cpp
new file mode 100644 (file)
index 0000000..8083497
--- /dev/null
@@ -0,0 +1,130 @@
+/*
+ * Copyright (c) 2020-2021 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#include "gfx_utils/trans_affine.h"
+#if ENABLE_CMATH
+#include <cmath>
+#endif
+
+namespace OHOS {
+const TransAffine& TransAffine::RectToParl(float x1, float y1,
+                                           float x2, float y2,
+                                           const float* parl)
+{
+    data_[0] = x2 - x1;
+    data_[3] = 0; // 3 : index
+    data_[1] = x2 - x1;
+    data_[4] = y2 - y1; // 4 : index
+    data_[2] = x1; // 2 : index
+    data_[5] = y1; // 5 : index
+    Invert();
+    Multiply(TransAffine(parl[2] - parl[0], parl[3] - parl[1], // 2 3 : index
+                         parl[4] - parl[0], parl[5] - parl[1], // 4 5 : index
+                         parl[0], parl[1]));
+    return *this;
+}
+
+const TransAffine& TransAffine::Multiply(const TransAffine& metrix)
+{
+    float t0 = data_[0] * metrix.data_[0] + data_[3] * metrix.data_[1]; // 3 : index
+    float t2 = data_[1] * metrix.data_[0] + data_[4] * metrix.data_[1]; // 4 : index
+    float t4 = data_[2] * metrix.data_[0] + data_[5] * metrix.data_[1] + metrix.data_[2]; // 2 5 : index
+    data_[3] = data_[0] * metrix.data_[3] + data_[3] * metrix.data_[4]; // 3 4 : index
+    data_[4] = data_[1] * metrix.data_[3] + data_[4] * metrix.data_[4]; // 3 4 5: index
+    data_[5] = data_[2] * metrix.data_[3] + data_[5] * metrix.data_[4] + metrix.data_[5]; // 2 3 4 5 : index
+    data_[0] = t0;
+    data_[1] = t2;
+    data_[2] = t4; // 2 : index
+    return *this;
+}
+
+const TransAffine& TransAffine::Invert()
+{
+    float d = DeterminantReciprocal();
+
+    float t0 = data_[4] * d; // 4 : index
+    data_[4] = data_[0] * d; // 4 : index
+    data_[3] = -data_[3] * d; // 3 : index
+    data_[1] = -data_[1] * d;
+
+    float t4 = -data_[2] * t0 - data_[5] * data_[1]; // 2 5 : index
+    data_[5] = -data_[2] * data_[3] - data_[5] * data_[4]; // 2 3 4 5 : index
+
+    data_[0] = t0;
+    data_[2] = t4; // 2 : index
+    return *this;
+}
+
+const TransAffine& TransAffine::Reset()
+{
+    data_[1] = 0;
+    data_[2] = 0; // 2 : index
+    data_[3] = 0; // 3 : index
+    data_[5] = 0; // 5 : index
+    data_[6] = 0; // 6 : index
+    data_[7] = 0; // 7 : index
+    data_[0] = 1;
+    data_[4] = 1; // 4 : index
+    data_[8] = 1; // 8 : index
+    return *this;
+}
+
+bool TransAffine::IsIdentity() const
+{
+    return MATH_FLT_EQUAL(data_[0], 1.0f) &&
+           MATH_FLT_EQUAL(data_[3], 0.0f) && // 3 : index
+           MATH_FLT_EQUAL(data_[1], 0.0f) &&
+           MATH_FLT_EQUAL(data_[4], 1.0f) && // 4 : index
+           MATH_FLT_EQUAL(data_[2], 0.0f) && // 2 : index
+           MATH_FLT_EQUAL(data_[5], 0.0f); // 5 : index
+}
+
+bool TransAffine::IsValid(float epsilon) const
+{
+    return (MATH_ABS(data_[0]) > epsilon) && (MATH_ABS(data_[4]) > epsilon); // 4 : index
+}
+
+TransAffine TransAffine::TransAffineRotation(float angle)
+{
+#if ENABLE_CMATH
+        return TransAffine(std::cos(angle), std::sin(angle), -std::sin(angle), std::cos(angle), 0.0f, 0.0f);
+#else
+        return TransAffine(Sin(QUARTER_IN_DEGREE - angle), Sin(angle), -Sin(angle), Sin(QUARTER_IN_DEGREE - angle),
+            0.0f, 0.0f);
+#endif
+}
+
+const TransAffine& TransAffine::Rotate(float angle)
+{
+#if ENABLE_CMATH
+    float scaleXTemp = data_[0] * std::cos(angle) - data_[3] * std::sin(angle); // 3 : index
+    float shearXTemp = data_[1] * std::cos(angle) - data_[4] * std::sin(angle); // 4 : index
+    float translateXTemp = data_[2] * std::cos(angle) - data_[5] * std::sin(angle); // 5 : index
+    data_[3] = data_[0] * std::sin(angle) + data_[3] * std::cos(angle); // 3 : index
+    data_[4] = data_[1] * std::sin(angle) + data_[4] * std::cos(angle); // 4 : index
+    data_[5] = data_[2] * std::sin(angle) + data_[5] * std::cos(angle); // 5 : index
+#else
+    float scaleXTemp = data_[0] * Sin(QUARTER_IN_DEGREE - angle) - data_[3] * Sin(angle); // 3 : index
+    float shearXTemp = data_[1] * Sin(QUARTER_IN_DEGREE - angle) - data_[4] * Sin(angle); // 4 : index
+    float translateXTemp = data_[2] * Sin(QUARTER_IN_DEGREE - angle) - data_[5] * Sin(angle); // 2 5 : index
+    data_[3] = data_[0] * Sin(angle) + data_[3] * Sin(QUARTER_IN_DEGREE - angle); // 3 : index
+    data_[4] = data_[1] * Sin(angle) + data_[4] * Sin(QUARTER_IN_DEGREE - angle); // 4 : index
+    data_[5] = data_[2] * Sin(angle) + data_[5] * Sin(QUARTER_IN_DEGREE - angle); // 2 5 : index
+#endif
+    data_[0] = scaleXTemp;
+    data_[1] = shearXTemp;
+    data_[2] = translateXTemp; // 2 : index
+    return *this;
+}
+} // namespace OHOS
index 748c81d..e0a4e37 100755 (executable)
@@ -75,13 +75,15 @@ static constexpr uint16_t THREE_QUARTER_IN_DEGREE = 270;
 /** A full rotation: 360 degrees */
 static constexpr uint16_t CIRCLE_IN_DEGREE = 360;
 /** Pi value */
-static constexpr double UI_PI = 3.14159265358979;
+static constexpr double UI_PI = 3.14159265358979f;
 static constexpr float ATAN2_P3 = -0.3258775;
 static constexpr float ATAN2_P5 = 0.1556117;
 static constexpr float ATAN2_P7 = -0.0443360;
 static constexpr float RADIAN_TO_ANGLE = 57.295779513;
 static constexpr float UI_FLT_EPSILON = 1E-5;
 static constexpr int16_t ORDER_MATRIX_4 = 4;
+static constexpr float VERTEX_DIST_EPSILON = 1e-14;
+static constexpr float BOXER = 180.0f;
 
 float Sin(float angle);
 float Acos(float value);
index 681721b..536af1f 100755 (executable)
@@ -38,7 +38,7 @@
 #include <cstdint>
 #include "graphic_config.h"
 namespace OHOS {
-#define MAX_IMG_PATH_LEN 64
+#define MAX_IMG_PATH_LEN 128
 /**
  * @brief Defines image head node information.
  */
diff --git a/code/sdk/middleware/services/gui/uikit/utils/interfaces/kits/gfx_utils/trans_affine.h b/code/sdk/middleware/services/gui/uikit/utils/interfaces/kits/gfx_utils/trans_affine.h
new file mode 100644 (file)
index 0000000..596043d
--- /dev/null
@@ -0,0 +1,272 @@
+/*
+ * Copyright (c) 2020-2021 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#ifndef GRAPHIC_LTE_TRANS_AFFINE_H
+#define GRAPHIC_LTE_TRANS_AFFINE_H
+
+#include "gfx_utils/graphic_math.h"
+
+namespace OHOS {
+const float affineEpsilon = 1e-14;
+const uint16_t parlIndexSize = 6;
+/**
+ * @brief Map source transformation
+ * @since 1.0
+ * @version 1.0
+ */
+class TransAffine : public Matrix3<float> {
+public:
+    /**
+     * @brief Initialize to identity matrix
+     * @since 1.0
+     * @version 1.0
+     */
+    TransAffine() : Matrix3<float>() {}
+    /**
+     * @brief Custom matrix
+     * @since 1.0
+     * @version 1.0
+     */
+    TransAffine(float v0, float v1, float v2, float v3, float v4, float v5)
+        : Matrix3<float>(v0, v2, v4, v1, v3, v5, 0, 0, 1) {}
+    /**
+     * @brief Converts a rectangle to a parallelogram
+     * @since 1.0
+     * @version 1.0
+     */
+    TransAffine(float x1, float y1, float x2, float y2, const float* parl)
+    {
+        RectToParl(x1, y1, x2, y2, parl);
+    }
+
+    void SetData(int32_t index, float value)
+    {
+        data_[index] = value;
+    }
+    /**
+     * @brief Convert the original parallelogram to the target parallelogram
+     * @param x1 x-axis coordinate of the upper left corner of the rectangle
+     * @param y1 y-axis coordinate of the upper left corner of the rectangle
+     * @param x2 x-axis coordinates of the lower right corner of the rectangle
+     * @param y2 y-axis coordinates of the lower right corner of the rectangle
+     * @param parl Target parallelogram
+     * @since 1.0
+     * @version 1.0
+     */
+    const TransAffine& RectToParl(float x1, float y1,
+                                  float x2, float y2,
+                                  const float* parl);
+
+    /**
+     * @brief reset TransAffine
+     * @since 1.0
+     * @version 1.0
+     */
+    const TransAffine& Reset();
+
+    /**
+     * @brief Element offset
+     * @param deltaX x-axis offset
+     * @param deltaY y-axis offset
+     * @since 1.0
+     * @version 1.0
+     */
+    const TransAffine& Translate(float x, float y);
+    /**
+     * @brief Element rotation
+     * @param angle Rotate angle
+     * @since 1.0
+     * @version 1.0
+     */
+    const TransAffine& Rotate(float angle);
+    /**
+     * @brief Element Scale
+     * @param scale Overall amplification factor
+     * @since 1.0
+     * @version 1.0
+     */
+    const TransAffine& Scale(float scale);
+    /**
+     * @brief Element Scale
+     * @param x x-axis magnification factor
+     * @param y y-axis magnification factor
+     * @since 1.0
+     * @version 1.0
+     */
+    const TransAffine& Scale(float x, float y);
+
+    /**
+     * @brief Transformation matrix multiplication
+     * @param metrix
+     * @since 1.0
+     * @version 1.0
+     */
+    const TransAffine& Multiply(const TransAffine& metrix);
+
+    /**
+     * @brief Matrix flip
+     * @since 1.0
+     * @version 1.0
+     */
+    const TransAffine& Invert();
+
+    const TransAffine& operator*=(const TransAffine& metrix)
+    {
+        return Multiply(metrix);
+    }
+
+    /**
+     * @brief Convert x, y
+     * @param x x-coordinate
+     * @param y y-coordinate
+     * @since 1.0
+     * @version 1.0
+     */
+    void Transform(float* x, float* y) const;
+
+    /**
+     * @brief inverse transformation
+     * @param x x-coordinate
+     * @param y y-coordinate
+     * @since 1.0
+     * @version 1.0
+     */
+    void InverseTransform(float* x, float* y) const;
+
+    /**
+     * @brief Computes the reciprocal of a determinant
+     * @since 1.0
+     * @version 1.0
+     */
+    float DeterminantReciprocal() const
+    {
+        float reciprocal = data_[0] * data_[4] - data_[3] * data_[1];
+        if (reciprocal == 0) {
+            return VERTEX_DIST_EPSILON;
+        }
+        return 1.0f / reciprocal;
+    }
+
+    /**
+     * @brief Check the matrix for degradation
+     * @since 1.0
+     * @version 1.0
+     */
+    bool IsValid(float epsilon = affineEpsilon) const;
+
+    /**
+     * @brief Check whether it is an identity matrix
+     * @since 1.0
+     * @version 1.0
+     */
+    bool IsIdentity() const;
+
+    /**
+     * @brief zoom
+     * @param x x-coordinate
+     * @param y y-coordinate
+     * @since 1.0
+     * @version 1.0
+     */
+    void ScalingAbs(float* x, float* y) const;
+
+    /**
+     * @brief Set rotation matrix
+     * @since 1.0
+     * @version 1.0
+     */
+    static TransAffine TransAffineRotation(float angle);
+
+    /**
+     * @brief Set scaling matrix
+     * @since 1.0
+     * @version 1.0
+     */
+    static TransAffine TransAffineScaling(float x, float y)
+    {
+        return TransAffine(x, 0.0f, 0.0f, y, 0.0f, 0.0f);
+    }
+
+    /**
+     * @brief Set scaling matrix
+     * @since 1.0
+     * @version 1.0
+     */
+    static TransAffine TransAffineScaling(float scale)
+    {
+        return TransAffine(scale, 0.0f, 0.0f, scale, 0.0f, 0.0f);
+    }
+    /**
+     * @brief Set translation matrix
+     * @since 1.0
+     * @version 1.0
+     */
+    static TransAffine TransAffineTranslation(float x, float y)
+    {
+        return TransAffine(1.0f, 0.0f, 0.0f, 1.0f, x, y);
+    }
+};
+
+inline void TransAffine::Transform(float* x, float* y) const
+{
+    float tmp = *x;
+    *x = tmp * data_[0] + *y * data_[1] + data_[2];
+    *y = tmp * data_[3] + *y * data_[4] + data_[5];
+}
+
+inline void TransAffine::InverseTransform(float* x, float* y) const
+{
+    float reciprocal = DeterminantReciprocal();
+    float a = (*x - data_[2]) * reciprocal;
+    float b = (*y - data_[5]) * reciprocal;
+    *x = a * data_[4] - b * data_[1];
+    *y = b * data_[0] - a * data_[3];
+}
+
+inline const TransAffine& TransAffine::Translate(float deltaX, float deltaY)
+{
+    data_[2] += deltaX;
+    data_[5] += deltaY;
+    return *this;
+}
+
+inline const TransAffine& TransAffine::Scale(float scaleX, float scaleY)
+{
+    data_[0] *= scaleX;
+    data_[1] *= scaleX;
+    data_[2] *= scaleX;
+    data_[3] *= scaleY;
+    data_[4] *= scaleY;
+    data_[5] *= scaleY;
+    return *this;
+}
+
+inline const TransAffine& TransAffine::Scale(float scale)
+{
+    data_[0] *= scale;
+    data_[1] *= scale;
+    data_[2] *= scale;
+    data_[3] *= scale;
+    data_[4] *= scale;
+    data_[5] *= scale;
+    return *this;
+}
+
+inline void TransAffine::ScalingAbs(float* x, float* y) const
+{
+    *x = Sqrt(data_[0] * data_[0] + data_[1] * data_[1]);
+    *y = Sqrt(data_[3] * data_[3] + data_[4] * data_[4]);
+}
+} // namespace OHOS
+#endif
index a94b564..ac804a0 100755 (executable)
@@ -47,6 +47,10 @@ static Audio::AudioManager& g_amInstance = Audio::AudioManager::GetInstance();
 
 void TriggerEventListener(const AudioEventListener *listener)
 {
+    if (listener == nullptr) {
+        // listener is nullptr
+        return;
+    }
     if (!JsAsyncWork::DispatchAsyncWork(AsyncExecuteCallback, const_cast<AudioEventListener *>(listener))) {
         MEDIA_ERR_LOG("dispatch async work failed.");
     }
index 89c3399..62a4c95 100644 (file)
@@ -174,7 +174,6 @@ static bool InitPlayerResources(MediaVideoPlay *videoPlay)
     videoPlay->player_ = player;\r
 \r
     videoPlay->isPlaybackCompleted_ = false;\r
-    videoPlay->isPlaybackStopped_ = false;\r
     videoPlay->interruptHintStop_ = false;\r
     videoPlay->playError_ = false;\r
 \r
@@ -499,10 +498,6 @@ int32_t MediaVideoPlay::StopVideoPlay(void)
 {\r
     MEDIA_ERR_LOG("StopVideoPlay start!");\r
     MediaMutexLock(mutex_);\r
-    if (!isPlayed_) {\r
-        MEDIA_INFO_LOG("video play is not start,can not stop!");\r
-        goto EXIT;\r
-    }\r
     if (isPlaybackStopped_ || isPlaybackCompleted_ || interruptHintStop_) {\r
         if (isLoop_) {\r
             if (!isPlaybackCompleted_) {\r
@@ -516,12 +511,12 @@ int32_t MediaVideoPlay::StopVideoPlay(void)
             return MEDIA_OK;\r
         }\r
     }\r
-EXIT:\r
     isPlaybackStopped_ = true;\r
     MediaThreadCondSignal(cond_);\r
     MediaMutexUnLock(mutex_);\r
     if (isSyncExitMode_) {\r
         MediaThreadJoin(&threadHandle_);\r
+        isPlaybackStopped_ = false;\r
         dynamic_cast<LiteSurface*>(surface_)->ClearBuffers(); // clear buffers safely in sync mode to reduce peak memory\r
     }\r
     play = nullptr;\r
@@ -551,15 +546,6 @@ void MediaVideoPlay::SetSyncExitMode(bool isSyncExitMode)
 \r
 void MediaVideoPlay::DestroyVideoPlaySource(void)\r
 {\r
-    if (!isEntered_) {\r
-        if (isSyncExitMode_) {\r
-            MediaThreadJoin(&threadHandle_);\r
-            // clear buffers safely in sync mode to reduce peak memory\r
-            dynamic_cast<LiteSurface *>(surface_)->ClearBuffers();\r
-        }\r
-        MEDIA_ERR_LOG("video is not played\n");\r
-        return;\r
-    }\r
     needSendBackgroundFrame_ = false;\r
     StopVideoPlay();\r
     uint32_t count = 0;\r
index 0fed0d7..1c71f18 100755 (executable)
@@ -372,42 +372,36 @@ static bool codeloader_command_processor_set_flash_limits_common_helper(
     bool ret_value = true;
     uint16_t apps_area_pages;
 
-    // Core Images always starts at end of the SSB.
-    start_address = (uint32_t)((uintptr_t)(g_hal_sectors_flash_region_end));
-    // make sure we can never put system images in the Application Area
-    if ((start_address + ((bt_code_length + recovery_code_length + dsp_code_length + extern0_code_length) *
-                          FLASH_PAGE_SIZE)) > APP_FLASH_REGION_START) {
+    // set recover region
+    start_address = RECOVERY_FLASH_REGION_START;
+    core_section_length = FLASH_PAGE_SIZE * recovery_code_length;
+    codeloader_command_set_core_region(CORE_IMAGES_RECOVERY, core_section_length, start_address);
+
+    // set bt region
+    start_address = BT_FLASH_REGION_START;
+    core_section_length = FLASH_PAGE_SIZE * bt_code_length;
+    codeloader_command_set_core_region(CORE_IMAGES_BT, core_section_length, start_address);
+
+    // set dsp region
+    start_address = DSP_FLASH_REGION_START;
+    core_section_length = FLASH_PAGE_SIZE * dsp_code_length;
+    codeloader_command_set_core_region(CORE_IMAGES_PROTOCOL, core_section_length, start_address);
+ 
+    // set extern0 region
+    start_address = DSP_CODEC_FLASH_REGION_START;
+    core_section_length = FLASH_PAGE_SIZE * extern0_code_length;
+    codeloader_command_set_core_region(CORE_IMAGES_EXTERN0, core_section_length, start_address);
+
+    // set apps region
+    apps_area_pages = (uint16_t)APP_FLASH_REGION_PAGES;
+    start_address = (uint32_t)APP_FLASH_REGION_START;
+
+    // check apps images will fit into allocated area
+    if (apps_code_length > apps_area_pages) {
         ret_value = false;
     } else {
-        // set recover region
-        core_section_length = FLASH_PAGE_SIZE * recovery_code_length;
-        codeloader_command_set_core_region(CORE_IMAGES_RECOVERY, core_section_length, start_address);
-        start_address += core_section_length;
-        // set bt region
-        core_section_length = FLASH_PAGE_SIZE * bt_code_length;
-        codeloader_command_set_core_region(CORE_IMAGES_BT, core_section_length, start_address);
-        start_address += core_section_length;
-
-        // set dsp region
-        core_section_length = FLASH_PAGE_SIZE * dsp_code_length;
-        codeloader_command_set_core_region(CORE_IMAGES_PROTOCOL, core_section_length, start_address);
-        start_address += core_section_length;
-
-        // set extern0 region
-        core_section_length = FLASH_PAGE_SIZE * extern0_code_length;
-        codeloader_command_set_core_region(CORE_IMAGES_EXTERN0, core_section_length, start_address);
-
-        // set apps region
-        apps_area_pages = (uint16_t)APP_FLASH_REGION_PAGES;
-        start_address = (uint32_t)APP_FLASH_REGION_START;
-
-        // check apps images will fit into allocated area
-        if (apps_code_length > apps_area_pages) {
-            ret_value = false;
-        } else {
-            core_section_length = FLASH_PAGE_SIZE * apps_code_length;
-            codeloader_command_set_core_region(CORE_IMAGES_APPS, core_section_length, start_address);
-        }
+        core_section_length = FLASH_PAGE_SIZE * apps_code_length;
+        codeloader_command_set_core_region(CORE_IMAGES_APPS, core_section_length, start_address);
     }
     return ret_value;
 }
index 8811498..ef880f2 100644 (file)
Binary files a/code/sdk/middleware/utils/fs/vfs/brandy-auto-ota-cli/libx_vfs_private.a and b/code/sdk/middleware/utils/fs/vfs/brandy-auto-ota-cli/libx_vfs_private.a differ
index 2b088cc..9b01f98 100644 (file)
Binary files a/code/sdk/middleware/utils/fs/vfs/brandy-auto-ota-ser/libx_vfs_private.a and b/code/sdk/middleware/utils/fs/vfs/brandy-auto-ota-ser/libx_vfs_private.a differ
index d4ad575..bcb9c68 100755 (executable)
Binary files a/code/sdk/middleware/utils/fs/vfs/brandy-native-js-r/libx_vfs_private.a and b/code/sdk/middleware/utils/fs/vfs/brandy-native-js-r/libx_vfs_private.a differ
index 9af3d9c..54aaff3 100755 (executable)
Binary files a/code/sdk/middleware/utils/fs/vfs/brandy-native-js/libx_vfs_private.a and b/code/sdk/middleware/utils/fs/vfs/brandy-native-js/libx_vfs_private.a differ
index 0c91717..2099720 100755 (executable)
Binary files a/code/sdk/middleware/utils/fs/vfs/brandy-target1-r/libx_vfs_private.a and b/code/sdk/middleware/utils/fs/vfs/brandy-target1-r/libx_vfs_private.a differ
index 71587fc..f860b0b 100755 (executable)
Binary files a/code/sdk/middleware/utils/fs/vfs/brandy-target1/libx_vfs_private.a and b/code/sdk/middleware/utils/fs/vfs/brandy-target1/libx_vfs_private.a differ
index 8b6acb9..b4bba35 100755 (executable)
Binary files a/code/sdk/middleware/utils/fs/vfs/brandy-target3-r/libx_vfs_private.a and b/code/sdk/middleware/utils/fs/vfs/brandy-target3-r/libx_vfs_private.a differ
index 23468d2..f273319 100755 (executable)
Binary files a/code/sdk/middleware/utils/fs/vfs/brandy-target3/libx_vfs_private.a and b/code/sdk/middleware/utils/fs/vfs/brandy-target3/libx_vfs_private.a differ
index 1fa6576..a086e05 100755 (executable)
Binary files a/code/sdk/middleware/utils/fs/vfs/brandy-target4-r/libx_vfs_private.a and b/code/sdk/middleware/utils/fs/vfs/brandy-target4-r/libx_vfs_private.a differ
index b856b1a..075398e 100755 (executable)
Binary files a/code/sdk/middleware/utils/fs/vfs/brandy-target4/libx_vfs_private.a and b/code/sdk/middleware/utils/fs/vfs/brandy-target4/libx_vfs_private.a differ
index ba9c391..618de3f 100755 (executable)
Binary files a/code/sdk/middleware/utils/fs/vfs/brandy-target5-r/libx_vfs_private.a and b/code/sdk/middleware/utils/fs/vfs/brandy-target5-r/libx_vfs_private.a differ
index 6ade713..9d753ef 100755 (executable)
Binary files a/code/sdk/middleware/utils/fs/vfs/brandy-target5/libx_vfs_private.a and b/code/sdk/middleware/utils/fs/vfs/brandy-target5/libx_vfs_private.a differ
index d3ffd47..b610a44 100755 (executable)
Binary files a/code/sdk/middleware/utils/fs/vfs/brandy-xts-r/libx_vfs_private.a and b/code/sdk/middleware/utils/fs/vfs/brandy-xts-r/libx_vfs_private.a differ
index 2ac65c0..0f5adb4 100755 (executable)
Binary files a/code/sdk/middleware/utils/fs/vfs/brandy-xts/libx_vfs_private.a and b/code/sdk/middleware/utils/fs/vfs/brandy-xts/libx_vfs_private.a differ
index f29bef2..fcf3d99 100755 (executable)
Binary files a/code/sdk/middleware/utils/fs/vfs/testsuite-brandy-sdk/libx_vfs_private.a and b/code/sdk/middleware/utils/fs/vfs/testsuite-brandy-sdk/libx_vfs_private.a differ
index 24138d8..1cf0bc6 100644 (file)
Binary files a/code/sdk/middleware/utils/fs/yaffs2/brandy-auto-ota-cli/libfs_yaffs2.a and b/code/sdk/middleware/utils/fs/yaffs2/brandy-auto-ota-cli/libfs_yaffs2.a differ
index 80921f3..a74ab73 100644 (file)
Binary files a/code/sdk/middleware/utils/fs/yaffs2/brandy-auto-ota-ser/libfs_yaffs2.a and b/code/sdk/middleware/utils/fs/yaffs2/brandy-auto-ota-ser/libfs_yaffs2.a differ
index f120d29..41f28ea 100755 (executable)
Binary files a/code/sdk/middleware/utils/fs/yaffs2/brandy-native-js-r/libfs_yaffs2.a and b/code/sdk/middleware/utils/fs/yaffs2/brandy-native-js-r/libfs_yaffs2.a differ
index f9f27b7..5ae1a87 100755 (executable)
Binary files a/code/sdk/middleware/utils/fs/yaffs2/brandy-native-js/libfs_yaffs2.a and b/code/sdk/middleware/utils/fs/yaffs2/brandy-native-js/libfs_yaffs2.a differ
index f21bf59..a084637 100755 (executable)
Binary files a/code/sdk/middleware/utils/fs/yaffs2/brandy-target1-r/libfs_yaffs2.a and b/code/sdk/middleware/utils/fs/yaffs2/brandy-target1-r/libfs_yaffs2.a differ
index 39ededc..ec9c604 100755 (executable)
Binary files a/code/sdk/middleware/utils/fs/yaffs2/brandy-target1/libfs_yaffs2.a and b/code/sdk/middleware/utils/fs/yaffs2/brandy-target1/libfs_yaffs2.a differ
index d30d0ab..3709bc3 100755 (executable)
Binary files a/code/sdk/middleware/utils/fs/yaffs2/brandy-target3-r/libfs_yaffs2.a and b/code/sdk/middleware/utils/fs/yaffs2/brandy-target3-r/libfs_yaffs2.a differ
index 8c44918..9272dca 100755 (executable)
Binary files a/code/sdk/middleware/utils/fs/yaffs2/brandy-target3/libfs_yaffs2.a and b/code/sdk/middleware/utils/fs/yaffs2/brandy-target3/libfs_yaffs2.a differ
index 99adba0..68aaae6 100755 (executable)
Binary files a/code/sdk/middleware/utils/fs/yaffs2/brandy-target4-r/libfs_yaffs2.a and b/code/sdk/middleware/utils/fs/yaffs2/brandy-target4-r/libfs_yaffs2.a differ
index 721fb7c..abe70ce 100755 (executable)
Binary files a/code/sdk/middleware/utils/fs/yaffs2/brandy-target4/libfs_yaffs2.a and b/code/sdk/middleware/utils/fs/yaffs2/brandy-target4/libfs_yaffs2.a differ
index 24f1ab1..2e6dc12 100755 (executable)
Binary files a/code/sdk/middleware/utils/fs/yaffs2/brandy-target5-r/libfs_yaffs2.a and b/code/sdk/middleware/utils/fs/yaffs2/brandy-target5-r/libfs_yaffs2.a differ
index 0f6afbc..43186e7 100755 (executable)
Binary files a/code/sdk/middleware/utils/fs/yaffs2/brandy-target5/libfs_yaffs2.a and b/code/sdk/middleware/utils/fs/yaffs2/brandy-target5/libfs_yaffs2.a differ
index ec02bba..32c2de0 100755 (executable)
Binary files a/code/sdk/middleware/utils/fs/yaffs2/brandy-xts-r/libfs_yaffs2.a and b/code/sdk/middleware/utils/fs/yaffs2/brandy-xts-r/libfs_yaffs2.a differ
index fe9825e..da076b7 100755 (executable)
Binary files a/code/sdk/middleware/utils/fs/yaffs2/brandy-xts/libfs_yaffs2.a and b/code/sdk/middleware/utils/fs/yaffs2/brandy-xts/libfs_yaffs2.a differ
index 139ea69..4d9a96a 100755 (executable)
Binary files a/code/sdk/middleware/utils/fs/yaffs2/testsuite-brandy-sdk/libfs_yaffs2.a and b/code/sdk/middleware/utils/fs/yaffs2/testsuite-brandy-sdk/libfs_yaffs2.a differ
index a132b79..2835988 100644 (file)
@@ -52,6 +52,7 @@ static errcode_t nv_asynv_send_msg_to_write_flash(nv_key_map_t* cur_key)
     if (ret != OSAL_SUCCESS) {
         return ERRCODE_FAIL;
     }
+    cur_key->flush_flag = false;
     return ERRCODE_SUCC;
 }
 
@@ -202,6 +203,7 @@ static errcode_t nv_async_store_init_keys_one_page(kv_page_handle_t *page)
                 nv_psram_free(cur_key);
                 return ERRCODE_FAIL;
             }
+            cur_key->flush_flag = true;
             (void)nv_async_hash_add(cur_key);
         }
         key_found = kv_page_find_next_key(page, NULL, &key);
@@ -344,6 +346,8 @@ static errcode_t nv_async_msg_process(nv_queue_msg_handle_t *msg_data_t)
     }
 
     g_nv_async_flash_space = status.max_key_space;
+    /* 当前key已刷新到flush上 */
+    msg_data->flush_flag = true;
     osal_sem_up(&nv_async_sem);
     return res;
 }
@@ -386,14 +390,20 @@ static errcode_t nv_async_thread_msg_event_init(void)
 errcode_t nv_async_flush(void)
 {
     nv_queue_msg_handle_t msg_data_t;
-    uint32_t msg_data_size = sizeof(nv_queue_msg_handle_t);
-    uint8_t cur_queue_num = (uint8_t)osal_msg_queue_get_msg_num(g_nv_msg_queue_id);
-
-    while (cur_queue_num > 0) {
-        (void)memset_s(&msg_data_t, msg_data_size, 0, msg_data_size);
-        osal_msg_queue_read_copy(g_nv_msg_queue_id, &msg_data_t, &msg_data_size, OSAL_MSGQ_NO_WAIT);
-        nv_async_msg_process(&msg_data_t);
-        cur_queue_num--;
+    CstlHashIterator it;
+    errcode_t res;
+    /* 遍历hash表,将当前还没刷新到flash上的NV刷新到flash */
+    for (it = CstlHashIterBegin(g_hash_table); it != CstlHashIterEnd(g_hash_table);
+        it = CstlHashIterNext(g_hash_table, it)) {
+        nv_key_map_t *cur_data =  (nv_key_map_t *)CstlHashIterValue(g_hash_table, it);
+        if (cur_data->flush_flag == false) {
+            msg_data_t.key_id = cur_data->key_id;
+            msg_data_t.key_ram_location = (uintptr_t)cur_data;
+            res = nv_async_msg_process(&msg_data_t);
+            if (res != ERRCODE_SUCC) {
+                nv_log_err("[NV] nv_async_flush fail! key_id=0x%x", msg_data_t.key_id);
+            }
+        }
     }
 
     return ERRCODE_SUCC;
index 46a5192..782b035 100644 (file)
@@ -16,10 +16,11 @@ extern "C" {
 
 typedef struct nv_key_map {
     uint16_t key_id;                /* Key ID */
-    uint16_t key_len    : 13;       /* Key length */
+    uint16_t key_len    : 12;       /* Key length */
     uint16_t permanent  : 1;        /* 是否是永久Key */
     uint16_t encrypted  : 1;        /* 是否是加密Key */
     uint16_t non_upgrade : 1;        /* 是否不可以升级 */
+    uint16_t flush_flag  : 1;        /* 是否已刷新到flash */
     uint8_t  kvalue[0];             /* key value */
 } nv_key_map_t;
 
index 8dccc78..11942bd 100644 (file)
Binary files a/code/sdk/open_source/openharmony/foundation/aafwk/aafwk_lite/brandy-auto-ota-cli/libams.a and b/code/sdk/open_source/openharmony/foundation/aafwk/aafwk_lite/brandy-auto-ota-cli/libams.a differ
index 67622a6..addd26e 100644 (file)
Binary files a/code/sdk/open_source/openharmony/foundation/aafwk/aafwk_lite/brandy-auto-ota-ser/libams.a and b/code/sdk/open_source/openharmony/foundation/aafwk/aafwk_lite/brandy-auto-ota-ser/libams.a differ
index c3b361c..fd47414 100755 (executable)
Binary files a/code/sdk/open_source/openharmony/foundation/aafwk/aafwk_lite/brandy-native-js/libams.a and b/code/sdk/open_source/openharmony/foundation/aafwk/aafwk_lite/brandy-native-js/libams.a differ
index fd74cca..ecee409 100755 (executable)
Binary files a/code/sdk/open_source/openharmony/foundation/aafwk/aafwk_lite/brandy-xts/libams.a and b/code/sdk/open_source/openharmony/foundation/aafwk/aafwk_lite/brandy-xts/libams.a differ
index d259e49..321df8b 100755 (executable)
@@ -260,6 +260,7 @@ set(SOURCES
     ${CMAKE_CURRENT_SOURCE_DIR}/components/baidu_map_component.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/modules/app_module.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/modules/device_module.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/modules/network_module.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/modules/vibrator_module.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/modules/battery_module.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/modules/sensor_module.cpp
@@ -272,6 +273,7 @@ set(SOURCES
     ${CMAKE_CURRENT_SOURCE_DIR}/modules/presets/console_module.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/modules/presets/date_time_format_module.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/modules/presets/feature_ability_module.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/modules/presets/image_module.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/modules/presets/intl_module.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/modules/presets/jstest_module.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/modules/presets/localization_module.cpp
index 664f57f..553f2e8 100755 (executable)
@@ -86,7 +86,7 @@ void ThrowError();
 constexpr uint16_t PATH_LENGTH_MAX = 1024;
 constexpr uint8_t NAME_LENGTH_MAX = 255;
 constexpr uint8_t DEVICE_ID_LENGTH_MAX = 65;
-constexpr uint16_t FILE_CONTENT_LENGTH_MAX = 1024 * 30;
+constexpr uint16_t FILE_CONTENT_LENGTH_MAX = 1024 * 48;
 
 // hex code
 constexpr uint8_t DEC = 10;
@@ -277,7 +277,7 @@ jerry_value_t *ConvertDragEventInfo(const DragEvent &event, const uint16_t id);
 jerry_value_t *ConvertKeyEventInfo(const KeyEvent &event);
 #endif
 void ClearEventListener(const jerry_value_t args[], uint8_t argc);
-
+bool DumpPrintMemoryInfo();
 jerry_value_t *ConvertRotateEventInfo(const RotateEvent &event);
 JSValue GetRootAbilitySlice();
 JSValue CallWithRootAbilitySlice(JSValue func, JSValue args[], JSSize size);
index 19cfb84..ab19c8d 100644 (file)
Binary files a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/brandy-auto-ota-cli/libace.a and b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/brandy-auto-ota-cli/libace.a differ
index 9788f97..99c4b38 100644 (file)
Binary files a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/brandy-auto-ota-ser/libace.a and b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/brandy-auto-ota-ser/libace.a differ
index 8fdfdbf..c090187 100755 (executable)
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 ce01aba..4d3eb24 100755 (executable)
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 63cea7b..6d9a3ad 100755 (executable)
@@ -20,6 +20,8 @@
 #include "js_fwk_common.h"
 #include "product_adapter.h"
 #include "securec.h"
+#include "modules/presets/image_module.h"
+#include "image_component.h"
 
 namespace OHOS {
 namespace ACELite {
@@ -50,6 +52,11 @@ const char * const CanvasComponent::FUNC_ARC = "arc";
 const char * const CanvasComponent::FUNC_CLOSEPATH = "closePath";
 const char * const CanvasComponent::FUNC_STROKE = "stroke";
 const char * const CanvasComponent::FUNC_CLEAR = "clear";
+const char * const CanvasComponent::FUNC_DRAWIMAGE = "drawImage";
+const char * const CanvasComponent::FUNC_TRANFORM = "transform";
+const char * const CanvasComponent::FUNC_SETTRANFORM = "setTransform";
+const char * const CanvasComponent::FUNC_ROTATE = "rotate";
+const char * const CanvasComponent::FUNC_SCALE = "scale";
 
 // create canvas draw attribute-callback mapping
 const AttrMap CanvasComponent::attrMap_[] = {
@@ -73,7 +80,12 @@ const MethodMap CanvasComponent::methodMap_[] = {
     {FUNC_ARC, Arc},
     {FUNC_CLOSEPATH, ClosePath},
     {FUNC_STROKE, Stroke},
-    {FUNC_CLEAR, Clear}
+    {FUNC_CLEAR, Clear},
+       {FUNC_DRAWIMAGE, DrawImage},
+    {FUNC_TRANFORM, Transform},
+    {FUNC_SETTRANFORM, SetTransform},
+    {FUNC_ROTATE, Rotate},
+    {FUNC_SCALE, Scale}
 };
 
 CanvasComponent::CanvasComponent(jerry_value_t options, jerry_value_t children, AppStyleManager *styleManager)
@@ -824,6 +836,162 @@ jerry_value_t CanvasComponent::Stroke(const jerry_value_t func,
     return UNDEFINED;
 }
 
+jerry_value_t CanvasComponent::DrawImage(const jerry_value_t func,
+                                      const jerry_value_t context,
+                                      const jerry_value_t args[],
+                                      const jerry_length_t argsNum)
+{
+    CanvasComponent *component = static_cast<CanvasComponent *>(ComponentUtils::GetComponentFromBindingObject(context));
+    if (component == nullptr) {
+        HILOG_ERROR(HILOG_MODULE_ACE, "canvas_component: get canvas component from js object failed!");
+        return jerry_create_error(JERRY_ERROR_TYPE,
+                                  reinterpret_cast<const jerry_char_t *>("get canvas component from js object failed"));
+    }
+    if (argsNum < ArgsCount::NUM_1) {
+        HILOG_ERROR(HILOG_MODULE_ACE, "canvas_component: DrawImage arg error!");
+        return jerry_create_error(JERRY_ERROR_TYPE,
+                                  reinterpret_cast<const jerry_char_t *>("canvas_component: DrawImage arg error!"));
+    }
+    char* imageName = nullptr;
+    int16_t startX = 0;
+    int16_t startY = 0;
+    int16_t width = -1;
+    int16_t height = -1;
+    if (ParseImageName(args, imageName, width, height) != UNDEFINED) {
+        return jerry_create_error(JERRY_ERROR_TYPE,
+                                  reinterpret_cast<const jerry_char_t *>("parse Imagename function error"));
+    }
+    if (argsNum >= ArgsCount::NUM_2) {
+        startX = IntegerOf(args[ArgsIndex::IDX_1]);
+    }
+    if (argsNum >= ArgsCount::NUM_3) {
+        startY = IntegerOf(args[ArgsIndex::IDX_2]);
+    }
+    if (argsNum >= ArgsCount::NUM_4) {
+        width = IntegerOf(args[ArgsIndex::IDX_3]);
+    }
+    if (argsNum >= ArgsCount::NUM_5) {
+        height = IntegerOf(args[ArgsIndex::IDX_4]);
+    }
+    Point startLocat = {startX, startY};
+    
+    if (width > 0 || height > 0) {
+        component->canvas_.DrawImage(startLocat, imageName, component->paint_, width, height);
+    } else {
+        component->canvas_.DrawImage(startLocat, imageName, component->paint_);
+    }
+    ACE_FREE(imageName);
+    return UNDEFINED;
+}
+
+jerry_value_t CanvasComponent::Transform(const jerry_value_t func,
+                                         const jerry_value_t dom,
+                                         const jerry_value_t args[],
+                                         const jerry_length_t argsNum)
+{
+    (void)func;
+    if (argsNum < ArgsCount::NUM_6) {
+        HILOG_ERROR(HILOG_MODULE_ACE, "canvas_component: the number of rotate method parameter error!");
+        return jerry_create_error(JERRY_ERROR_TYPE,
+                                  reinterpret_cast<const jerry_char_t *>("rotate method parameter error"));
+    }
+
+    CanvasComponent *component = static_cast<CanvasComponent *>(ComponentUtils::GetComponentFromBindingObject(dom));
+    if (component == nullptr) {
+        HILOG_ERROR(HILOG_MODULE_ACE, "canvas_component: get canvas component from js object failed!");
+        return jerry_create_error(JERRY_ERROR_TYPE,
+                                  reinterpret_cast<const jerry_char_t *>("get canvas component from js object failed"));
+    }
+
+    float scaleX  = FloatOf(args[ArgsIndex::IDX_0]);
+    float shearX  = FloatOf(args[ArgsIndex::IDX_1]);
+    float shearY  = FloatOf(args[ArgsIndex::IDX_2]);
+    float scaleY  = FloatOf(args[ArgsIndex::IDX_3]);
+    int16_t translateX = IntegerOf(args[ArgsIndex::IDX_4]);
+    int16_t translateY = IntegerOf(args[ArgsIndex::IDX_5]);  
+    component->paint_.Transform(scaleX, shearX, shearY, scaleY, translateX, translateY);
+    return UNDEFINED;
+}
+
+
+jerry_value_t CanvasComponent::SetTransform(const jerry_value_t func,
+                                            const jerry_value_t dom,
+                                            const jerry_value_t args[],
+                                            const jerry_length_t argsNum)
+{
+    (void)func;
+    if (argsNum < ArgsCount::NUM_6) {
+        HILOG_ERROR(HILOG_MODULE_ACE, "canvas_component: the number of rotate method parameter error!");
+        return jerry_create_error(JERRY_ERROR_TYPE,
+                                  reinterpret_cast<const jerry_char_t *>("rotate method parameter error"));
+    }
+
+    CanvasComponent *component = static_cast<CanvasComponent *>(ComponentUtils::GetComponentFromBindingObject(dom));
+    if (component == nullptr) {
+        HILOG_ERROR(HILOG_MODULE_ACE, "canvas_component: get canvas component from js object failed!");
+        return jerry_create_error(JERRY_ERROR_TYPE,
+                                  reinterpret_cast<const jerry_char_t *>("get canvas component from js object failed"));
+    }
+
+    float scaleX  = FloatOf(args[ArgsIndex::IDX_0]);
+    float shearX  = FloatOf(args[ArgsIndex::IDX_1]);
+    float shearY  = FloatOf(args[ArgsIndex::IDX_2]);
+    float scaleY  = FloatOf(args[ArgsIndex::IDX_3]);
+    int16_t translateX = IntegerOf(args[ArgsIndex::IDX_4]);
+    int16_t translateY = IntegerOf(args[ArgsIndex::IDX_5]);
+    component->paint_.SetTransform(scaleX, shearX, shearY, scaleY, translateX, translateY);
+    return UNDEFINED;
+}
+
+jerry_value_t CanvasComponent::Rotate(const jerry_value_t func,
+                                      const jerry_value_t dom,
+                                      const jerry_value_t args[],
+                                      const jerry_length_t argsNum)
+{
+    (void)func;
+    if (argsNum < ArgsCount::NUM_1) {
+        HILOG_ERROR(HILOG_MODULE_ACE, "canvas_component: the number of rotate method parameter error!");
+        return jerry_create_error(JERRY_ERROR_TYPE,
+                                  reinterpret_cast<const jerry_char_t *>("rotate method parameter error"));
+    }
+
+    CanvasComponent *component = static_cast<CanvasComponent *>(ComponentUtils::GetComponentFromBindingObject(dom));
+    if (component == nullptr) {
+        HILOG_ERROR(HILOG_MODULE_ACE, "canvas_component: get canvas component from js object failed!");
+        return jerry_create_error(JERRY_ERROR_TYPE,
+                                  reinterpret_cast<const jerry_char_t *>("get canvas component from js object failed"));
+    }
+
+    float angle = FloatOf(args[ArgsIndex::IDX_0]);
+    component->paint_.Rotate(angle);
+    return UNDEFINED;
+}
+
+jerry_value_t CanvasComponent::Scale(const jerry_value_t func,
+                                     const jerry_value_t dom,
+                                     const jerry_value_t args[],
+                                     const jerry_length_t argsNum)
+{
+    (void)func;
+    if (argsNum < ArgsCount::NUM_2) {
+        HILOG_ERROR(HILOG_MODULE_ACE, "canvas_component: the number of scale method parameter error!");
+        return jerry_create_error(JERRY_ERROR_TYPE,
+                                  reinterpret_cast<const jerry_char_t *>("scale method parameter error"));
+    }
+
+    CanvasComponent *component = static_cast<CanvasComponent *>(ComponentUtils::GetComponentFromBindingObject(dom));
+    if (component == nullptr) {
+        HILOG_ERROR(HILOG_MODULE_ACE, "canvas_component: get canvas component from js object failed!");
+        return jerry_create_error(JERRY_ERROR_TYPE,
+                                  reinterpret_cast<const jerry_char_t *>("get canvas component from js object failed"));
+    }
+
+    float scaleX  = FloatOf(args[ArgsIndex::IDX_0]);
+    float scaleY  = FloatOf(args[ArgsIndex::IDX_1]);
+    component->paint_.Scale(scaleX, scaleY);
+    return UNDEFINED;
+}
+
 jerry_value_t CanvasComponent::Clear(const jerry_value_t func,
                                       const jerry_value_t context,
                                       const jerry_value_t args[],
@@ -843,6 +1011,67 @@ jerry_value_t CanvasComponent::Clear(const jerry_value_t func,
     return UNDEFINED;
 }
 
+jerry_value_t CanvasComponent::ParseImageName(const jerry_value_t args[],
+                                              char*& imageName,
+                                              int16_t &width,
+                                              int16_t &height)
+{
+    ImageComponent* imageCom = nullptr;
+    const char *src = nullptr;
+    char* imageNameBuf = nullptr;
+    // The parameter is the file name
+    if (jerry_value_is_string(args[ArgsIndex::IDX_0])) {
+        imageNameBuf = MallocStringOf(args[ArgsIndex::IDX_0]);
+        if (imageNameBuf == nullptr) {
+            HILOG_ERROR(HILOG_MODULE_ACE, "canvas_component: get imageName value failed");
+            return jerry_create_error(JERRY_ERROR_TYPE,
+                                      reinterpret_cast<const jerry_char_t *>("get imageName value failed"));
+        }
+        imageName = imageNameBuf;
+        return UNDEFINED;
+    // Parameters are objects retrieved from HML
+    } else if (jerry_value_is_object(args[ArgsIndex::IDX_0])) {
+        void *nativePtr = nullptr;
+        jerry_get_object_native_pointer(args[ArgsIndex::IDX_0], &nativePtr, nullptr);
+        imageCom = reinterpret_cast<ImageComponent*>(nativePtr);
+        if (imageCom != nullptr) {
+            src = imageCom->GetSrc();
+            if (src == nullptr) {
+                HILOG_ERROR(HILOG_MODULE_ACE, "canvas_component: get imagePath value failed");
+                return jerry_create_error(JERRY_ERROR_TYPE,
+                                          reinterpret_cast<const jerry_char_t *>("get imagePath value failed"));
+            }
+            size_t strLen = strlen(src) + 1;
+            imageName = static_cast<char*>(ace_malloc(strLen));
+            if (memcpy_s(imageName, strLen, src, strLen) != EOK) {
+                HILOG_ERROR(HILOG_MODULE_ACE, "canvas_component: get imagePath value failed");
+                return UNDEFINED;
+            }
+            return UNDEFINED;
+        } else {
+            // The argument is the object passed through the new Image()
+            imageName = GetImageObjectParam(args);
+            if (strlen(imageName) < 1) {
+                return jerry_create_error(JERRY_ERROR_TYPE,
+                                          reinterpret_cast<const jerry_char_t *>("get imageName value failed"));
+            }
+            return UNDEFINED;
+        }
+    } else {
+        HILOG_ERROR(HILOG_MODULE_ACE, "canvas_component: get imageName value failed");
+        return jerry_create_error(JERRY_ERROR_TYPE,
+                                  reinterpret_cast<const jerry_char_t *>("get imageName value failed"));
+    }
+    return UNDEFINED;
+}
+
+char* CanvasComponent::GetImageObjectParam(const jerry_value_t args[])
+{
+    jerry_value_t src = jerryx_get_property_str(args[ArgsIndex::IDX_0], ImageModule::attrSrc);
+    char* srcVal = MallocStringOf(src);
+    return srcVal;
+}
+
 void CanvasComponent::GetSubFont(const char *font, const uint8_t index, char *&subFont) const
 {
     if (font == nullptr || *font == '\0') {
index e7a388d..4cd9b97 100755 (executable)
@@ -173,11 +173,41 @@ private:
                                 const jerry_value_t args[],
                                 const jerry_length_t argsNum);
 
+    static jerry_value_t DrawImage(const jerry_value_t func,
+                                    const jerry_value_t context,
+                                    const jerry_value_t args[],
+                                    const jerry_length_t argsNum);
+                                    
+    static jerry_value_t Transform(const jerry_value_t func,
+                                   const jerry_value_t dom,
+                                   const jerry_value_t args[],
+                                   const jerry_length_t argsNum);
+
+    static jerry_value_t SetTransform(const jerry_value_t func,
+                                      const jerry_value_t dom,
+                                      const jerry_value_t args[],
+                                      const jerry_length_t argsNum);
+
+    static jerry_value_t ParseImageName(const jerry_value_t args[],
+                                        char*& imageName,
+                                        int16_t &width,
+                                        int16_t &height);
     static jerry_value_t Clear(const jerry_value_t func,
                                 const jerry_value_t context,
                                 const jerry_value_t args[],
                                 const jerry_length_t argsNum);
 
+    static jerry_value_t Rotate(const jerry_value_t func,
+                                const jerry_value_t dom,
+                                const jerry_value_t args[],
+                                const jerry_length_t argsNum);
+
+    static jerry_value_t Scale(const jerry_value_t func,
+                               const jerry_value_t dom,
+                               const jerry_value_t args[],
+                               const jerry_length_t argsNum);
+
+    static char* GetImageObjectParam(const jerry_value_t args[]);
     UICanvas canvas_;
     jerry_value_t context_;
     Paint paint_;
@@ -208,7 +238,12 @@ private:
     static const char * const FUNC_ARC;
     static const char * const FUNC_CLOSEPATH;
     static const char * const FUNC_STROKE;
+    static const char * const FUNC_DRAWIMAGE;
+    static const char * const FUNC_TRANFORM;
+    static const char * const FUNC_SETTRANFORM;
     static const char * const FUNC_CLEAR;
+    static const char * const FUNC_ROTATE;
+    static const char * const FUNC_SCALE;
 };
 } // namespace ACELite
 } // namespace OHOS
index 554e826..c5dded9 100755 (executable)
@@ -1314,6 +1314,11 @@ bool Component::RegisterCommonEventListener(UIView &view,
 
 void Component::ReleaseCommonEventListeners()
 {
+    RootView *rootView = RootView::GetInstance();
+    if (rootView != nullptr) {
+        rootView->ClearOnKeyActListener();
+    }
+    ACE_DELETE(onKeyInputListener_);
     ACE_DELETE(onClickListener_);
     ACE_DELETE(onLongPressListener_);
 #ifdef JS_TOUCH_EVENT_SUPPORT
index f794b07..0dc4ad5 100755 (executable)
@@ -32,6 +32,11 @@ ImageComponent::ImageComponent(jerry_value_t options, jerry_value_t children, Ap
     SetComponentName(K_IMAGE);
 }
 
+const char *ImageComponent::GetSrc()
+{
+    return imageView_.GetPath();
+}
+
 bool ImageComponent::CreateNativeViews()
 {
     // set default value
index 0868e21..26fe8c2 100755 (executable)
@@ -30,7 +30,8 @@ public:
     ImageComponent() = delete;
     ImageComponent(jerry_value_t options, jerry_value_t children, AppStyleManager *styleManager);
     ~ImageComponent() override {}
-
+    const char *GetSrc();
+    
 protected:
     bool CreateNativeViews() override;
     UIView *GetComponentRootView() const override;
index ce9a837..c1aae2c 100644 (file)
@@ -329,6 +329,10 @@ static void ExecuteSendMsgToJS(void *data)
     if (flag) {
        if ((!CheckIsJsValueFunction(success)) || (!CheckIsJsValueDefined(context))) {
             HILOG_ERROR(HILOG_MODULE_ACE, "Error in ExecuteSendMsgToJS. Invalid params detected!");
+            if (msgBody != nullptr) {
+                AdapterFree(msgBody);
+                msgBody = nullptr;
+            }
             return;
         }
         OHOS::ACELite::JSIValue successArgv[OHOS::ACELite::ARGC_ONE] = { dataInfo };
@@ -337,6 +341,10 @@ static void ExecuteSendMsgToJS(void *data)
     } else {
         if ((!CheckIsJsValueDefined(context)) || (!CheckIsJsValueFunction(fail))) {
             HILOG_ERROR(HILOG_MODULE_ACE, "Error in ExecuteSendMsgToJS. Invalid params detected!");
+            if (msgBody != nullptr) {
+                AdapterFree(msgBody);
+                msgBody = nullptr;
+            }
             return;
         }
         OHOS::ACELite::JSIValue failArgv[OHOS::ACELite::ARGC_ONE] = { dataInfo };
@@ -499,124 +507,126 @@ bool setCallbackFunction(OHOS::ACELite::JSIValue callback,uint8_t type,bool isSu
     if (!OHOS::ACELite::JSI::ValueIsUndefined(callback)) {
          if (!OHOS::ACELite::JSI::ValueIsFunction(callback)) {
              HILOG_ERROR(HILOG_MODULE_ACE, "Success callback value is not a function");
+             ReleaseJsValue(callback);
+             return false;
          } else {
              switch (type) {
                  case MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_POI:
                      if (isSuccess) {
-                         poi_successCallback = OHOS::ACELite::JSI::AcquireValue(callback);
+                         poi_successCallback = callback;
                      } else {
-                         poi_failCallback = OHOS::ACELite::JSI::AcquireValue(callback);
+                         poi_failCallback = callback;
                      }
                      break;
                  case MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_AUTH_LICENSE:
                      if (isSuccess) {
-                         auth_successCallback = OHOS::ACELite::JSI::AcquireValue(callback);
+                         auth_successCallback = callback;
                      } else {
-                         auth_failCallback = OHOS::ACELite::JSI::AcquireValue(callback);
+                         auth_failCallback = callback;
                      }
                      break;
                  case MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_NAVI_INIT:
                      if (isSuccess) {
-                         nav_successCallback = OHOS::ACELite::JSI::AcquireValue(callback);
+                         nav_successCallback = callback;
                      } else {
-                         nav_failCallback = OHOS::ACELite::JSI::AcquireValue(callback);
+                         nav_failCallback = callback;
                      }
                      break;
                  case MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_POI_SUG_SEARCH:
                      if (isSuccess) {
-                         poi_sug_successCallback = OHOS::ACELite::JSI::AcquireValue(callback);
+                         poi_sug_successCallback = callback;
                      } else {
-                         poi_sug_failCallback = OHOS::ACELite::JSI::AcquireValue(callback);
+                         poi_sug_failCallback = callback;
                      }
                      break;
                  case MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_GEO_LOCATION:
-                     geo_location_Callback = OHOS::ACELite::JSI::AcquireValue(callback);
+                     geo_location_Callback = callback;
                      break;
                  case MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_ROUTE_PLAN_START:
-                     route_plan_start_Callback = OHOS::ACELite::JSI::AcquireValue(callback);
+                     route_plan_start_Callback = callback;
                      break;
                  case MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_ROUTE_PLAN_SUCC:
-                     route_plan_success_Callback = OHOS::ACELite::JSI::AcquireValue(callback);
+                     route_plan_success_Callback = callback;
                      break;
                  case MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_ROUTE_PLAN_FAIL:
-                     route_plan_fail_Callback = OHOS::ACELite::JSI::AcquireValue(callback);
+                     route_plan_fail_Callback = callback;
                      break;
                  case MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_NAVI_START:
-                     navi_start_Callback = OHOS::ACELite::JSI::AcquireValue(callback);
+                     navi_start_Callback = callback;
                      break;
                  case MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_NAVI_DESTROY:
-                     navi_destroy_Callback = OHOS::ACELite::JSI::AcquireValue(callback);
+                     navi_destroy_Callback = callback;
                      break;
                  case MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_ROAD_GUIDE_TEXT_UPDATE:
-                     road_guide_text_update_Callback = OHOS::ACELite::JSI::AcquireValue(callback);
+                     road_guide_text_update_Callback = callback;
                      break;
                  case MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_ROAD_GUIDE_ICON_UPDATE:
-                     road_guide_icon_update_Callback = OHOS::ACELite::JSI::AcquireValue(callback);
+                     road_guide_icon_update_Callback = callback;
                      break;
                  case MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_REMAIN_TIME_UPDATE:
-                     remain_time_Callback = OHOS::ACELite::JSI::AcquireValue(callback);
+                     remain_time_Callback = callback;
                      break;
                  case MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_REMAIN_DISTANCE_UPDATE:
-                     remain_distance_Callback = OHOS::ACELite::JSI::AcquireValue(callback);
+                     remain_distance_Callback = callback;
                      break;
                  case MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_REMAIN_ROUTE_UPDATE:
-                     remain_route_Callback = OHOS::ACELite::JSI::AcquireValue(callback);
+                     remain_route_Callback = callback;
                      break;
                  case MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_GPS_STATUS_CHANGE:
-                     gps_status_Callback = OHOS::ACELite::JSI::AcquireValue(callback);
+                     gps_status_Callback = callback;
                      break;
                  case MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_ROUTE_FARAWAY:
-                     route_far_Callback = OHOS::ACELite::JSI::AcquireValue(callback);
+                     route_far_Callback = callback;
                      break;
                  case MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_ROUTE_PLAN_YAWING:
-                     route_plan_yawing_Callback = OHOS::ACELite::JSI::AcquireValue(callback);
+                     route_plan_yawing_Callback = callback;
                      break;
                  case MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_RE_ROUTE_COMPLETE:
-                     reroute_Callback = OHOS::ACELite::JSI::AcquireValue(callback);
+                     reroute_Callback = callback;
                      break;
                  case MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_ARRIVE_DSTINATION:
-                     arrivedest_Callback = OHOS::ACELite::JSI::AcquireValue(callback);
+                     arrivedest_Callback = callback;
                      break;
                  case MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_GEOCODE_SEARCH:
                      if (isSuccess) {
-                         geocode_search_successCallback = OHOS::ACELite::JSI::AcquireValue(callback);
+                         geocode_search_successCallback = callback;
                      } else {
-                         geocode_search_failCallback = OHOS::ACELite::JSI::AcquireValue(callback);
+                         geocode_search_failCallback = callback;
                      }
                      break;
                  case MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_REGEOCODE_SEARCH:
                      if (isSuccess) {
-                         regeocode_search_successCallback = OHOS::ACELite::JSI::AcquireValue(callback);
+                         regeocode_search_successCallback = callback;
                      } else {
-                         regeocode_search_failCallback = OHOS::ACELite::JSI::AcquireValue(callback);
+                         regeocode_search_failCallback = callback;
                      }
                      break;
                  case MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_ROUTE_RIDING_SEARCH:
                      if (isSuccess) {
-                         route_riding_successCallback = OHOS::ACELite::JSI::AcquireValue(callback);
+                         route_riding_successCallback = callback;
                      } else {
-                         route_riding_failCallback = OHOS::ACELite::JSI::AcquireValue(callback);
+                         route_riding_failCallback = callback;
                      }
                      break;
                  case MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_ROUTE_WALKING_SEARCH:
                      if (isSuccess) {
-                         route_walking_successCallback = OHOS::ACELite::JSI::AcquireValue(callback);
+                         route_walking_successCallback = callback;
                      } else {
-                         route_walking_failCallback = OHOS::ACELite::JSI::AcquireValue(callback);
+                         route_walking_failCallback = callback;
                      }
                      break;
                  case MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_ROUTE_TRANSIT_SEARCH:
                      if (isSuccess) {
-                         route_transit_successCallback = OHOS::ACELite::JSI::AcquireValue(callback);
+                         route_transit_successCallback = callback;
                      } else {
-                         route_transit_failCallback = OHOS::ACELite::JSI::AcquireValue(callback);
+                         route_transit_failCallback = callback;
                      }
                      break;
                  case MSGCENTER_TYPE_ID_VECTOR_NAVI_BT_CONNECTED:
                      if (isSuccess) {
-                         bt_connect_successCallback = OHOS::ACELite::JSI::AcquireValue(callback);
+                         bt_connect_successCallback = callback;
                      } else {
-                         bt_connect_failCallback = OHOS::ACELite::JSI::AcquireValue(callback);
+                         bt_connect_failCallback = callback;
                      }
                      break;
                  default:
@@ -646,10 +656,13 @@ JSIValue BaiduMapComponentModule::poi_nearby_search(const JSIValue thisVal, cons
     poi_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);
-    setCallbackFunction(successCallback,MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_POI,true);
-    setCallbackFunction(failCallback,MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_POI,false);
-    msg_center_vector_navi_req_poi(MSGCENTER_CMD_VECTOR_NAVI,MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_POI,data,strlen(data));
-    return JSI::CreateBoolean(0);
+    bool hasSuccessCallback = setCallbackFunction(successCallback,MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_POI,true);
+    bool hasFailCallback = setCallbackFunction(failCallback,MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_POI,false);
+    if (hasSuccessCallback || hasFailCallback) {
+        msg_center_vector_navi_req_poi(MSGCENTER_CMD_VECTOR_NAVI,MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_POI,data,strlen(data));
+    }
+    ace_free(data);
+    return JSI::CreateBoolean(true);
 }
 
 JSIValue BaiduMapComponentModule::route_riding_search(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize)
@@ -662,10 +675,13 @@ JSIValue BaiduMapComponentModule::route_riding_search(const JSIValue thisVal, co
     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);
-    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);
+    bool hasSuccessCallback = setCallbackFunction(successCallback,MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_ROUTE_RIDING_SEARCH,true);
+    bool hasFailCallback = setCallbackFunction(failCallback,MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_ROUTE_RIDING_SEARCH,false);
+    if (hasSuccessCallback || hasFailCallback) {
+        msg_center_vector_navi_req_route_riding_search(MSGCENTER_CMD_VECTOR_NAVI, MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_ROUTE_RIDING_SEARCH,data,strlen(data));
+    }
+    ace_free(data);
+    return JSI::CreateBoolean(true);
 }
 
 JSIValue BaiduMapComponentModule::route_walking_search(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize)
@@ -678,10 +694,13 @@ JSIValue BaiduMapComponentModule::route_walking_search(const JSIValue thisVal, c
     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);
-    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);
+    bool hasSuccessCallback = setCallbackFunction(successCallback,MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_ROUTE_WALKING_SEARCH,true);
+    bool hasFailCallback = setCallbackFunction(failCallback,MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_ROUTE_WALKING_SEARCH,false);
+    if (hasSuccessCallback || hasFailCallback) {
+        msg_center_vector_navi_req_route_walking_search(MSGCENTER_CMD_VECTOR_NAVI,MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_ROUTE_WALKING_SEARCH,data,strlen(data));
+    }
+    ace_free(data);
+    return JSI::CreateBoolean(true);
 }
 
 JSIValue BaiduMapComponentModule::route_transit_search(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize)
@@ -694,10 +713,13 @@ JSIValue BaiduMapComponentModule::route_transit_search(const JSIValue thisVal, c
     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);
-    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);
+    bool hasSuccessCallback = setCallbackFunction(successCallback,MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_ROUTE_TRANSIT_SEARCH,true);
+    bool hasFailCallback = setCallbackFunction(failCallback,MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_ROUTE_TRANSIT_SEARCH,false);
+    if (hasSuccessCallback || hasFailCallback) {
+        msg_center_vector_navi_req_route_transit_search(MSGCENTER_CMD_VECTOR_NAVI,MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_ROUTE_TRANSIT_SEARCH,data,strlen(data));
+    }
+    ace_free(data);
+    return JSI::CreateBoolean(true);
 }
 
 JSIValue BaiduMapComponentModule::auth_license(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize)
@@ -710,10 +732,13 @@ JSIValue BaiduMapComponentModule::auth_license(const JSIValue thisVal, const JSI
     auth_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);
-    setCallbackFunction(successCallback,MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_AUTH_LICENSE,true);
-    setCallbackFunction(failCallback,MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_AUTH_LICENSE,false);
-    msg_center_vector_navi_req_auth_license(MSGCENTER_CMD_VECTOR_NAVI, MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_AUTH_LICENSE,data,strlen(data));
-    return JSI::CreateBoolean(0);
+    bool hasSuccessCallback = setCallbackFunction(successCallback,MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_AUTH_LICENSE,true);
+    bool hasFailCallback = setCallbackFunction(failCallback,MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_AUTH_LICENSE,false);
+    if (hasSuccessCallback || hasFailCallback) {
+        msg_center_vector_navi_req_auth_license(MSGCENTER_CMD_VECTOR_NAVI, MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_AUTH_LICENSE,data,strlen(data));
+    }
+    ace_free(data);
+    return JSI::CreateBoolean(true);
 }
 
 JSIValue BaiduMapComponentModule::getGeolocation(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize)
@@ -724,9 +749,12 @@ JSIValue BaiduMapComponentModule::getGeolocation(const JSIValue thisVal, const J
     ReleaseMsgJsValue(MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_GEO_LOCATION);
     geo_location_callbackContext = OHOS::ACELite::JSI::AcquireValue(thisVal);
     OHOS::ACELite::JSIValue Callback = OHOS::ACELite::JSI::GetNamedProperty(args[0], CB_CALLBACK);
-    setCallbackFunction(Callback,MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_GEO_LOCATION,true);
-    msg_center_vector_navi_req_geo_location(MSGCENTER_CMD_VECTOR_NAVI, MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_GEO_LOCATION,data,strlen(data));
-    return JSI::CreateBoolean(0);
+    bool hasCallback = setCallbackFunction(Callback,MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_GEO_LOCATION,true);
+    if (hasCallback) {
+        msg_center_vector_navi_req_geo_location(MSGCENTER_CMD_VECTOR_NAVI, MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_GEO_LOCATION,data,strlen(data));
+    }
+    ace_free(data);
+    return JSI::CreateBoolean(true);
 }
 
 JSIValue BaiduMapComponentModule::naviInit(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize)
@@ -739,10 +767,13 @@ JSIValue BaiduMapComponentModule::naviInit(const JSIValue thisVal, const JSIValu
     nav_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);
-    setCallbackFunction(successCallback,MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_NAVI_INIT,true);
-    setCallbackFunction(failCallback,MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_NAVI_INIT,false);
-    msg_center_vector_navi_req_navi_init(MSGCENTER_CMD_VECTOR_NAVI, MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_NAVI_INIT,data,strlen(data));
-    return JSI::CreateBoolean(0);
+    bool hasSuccessCallback = setCallbackFunction(successCallback,MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_NAVI_INIT,true);
+    bool hasFailCallback = setCallbackFunction(failCallback,MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_NAVI_INIT,false);
+    if (hasSuccessCallback || hasFailCallback) {
+        msg_center_vector_navi_req_navi_init(MSGCENTER_CMD_VECTOR_NAVI, MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_NAVI_INIT,data,strlen(data));
+    }
+    ace_free(data);
+    return JSI::CreateBoolean(true);
 }
 
 JSIValue BaiduMapComponentModule::onRoutePlanStart(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize)
@@ -752,7 +783,7 @@ JSIValue BaiduMapComponentModule::onRoutePlanStart(const JSIValue thisVal, const
     ReleaseMsgJsValue(MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_ROUTE_PLAN_START);
     route_plan_start_callbackContext = OHOS::ACELite::JSI::AcquireValue(thisVal);
     setCallbackFunction(Callback,MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_ROUTE_PLAN_START,true);
-    return JSI::CreateBoolean(0);
+    return JSI::CreateBoolean(true);
 }
 
 JSIValue BaiduMapComponentModule::onRoutePlanSuccess(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize)
@@ -762,7 +793,7 @@ JSIValue BaiduMapComponentModule::onRoutePlanSuccess(const JSIValue thisVal, con
     ReleaseMsgJsValue(MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_ROUTE_PLAN_SUCC);
     route_plan_success_callbackContext = OHOS::ACELite::JSI::AcquireValue(thisVal);
     setCallbackFunction(Callback,MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_ROUTE_PLAN_SUCC,true);
-    return JSI::CreateBoolean(0);
+    return JSI::CreateBoolean(true);
 }
 
 JSIValue BaiduMapComponentModule::onRoutePlanFail(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize)
@@ -772,7 +803,7 @@ JSIValue BaiduMapComponentModule::onRoutePlanFail(const JSIValue thisVal, const
     ReleaseMsgJsValue(MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_ROUTE_PLAN_FAIL);
     route_plan_fail_callbackContext = OHOS::ACELite::JSI::AcquireValue(thisVal);
     setCallbackFunction(Callback,MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_ROUTE_PLAN_FAIL,true);
-    return JSI::CreateBoolean(0);
+    return JSI::CreateBoolean(true);
 }
 
 JSIValue BaiduMapComponentModule::onNaviStart(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize)
@@ -782,7 +813,7 @@ JSIValue BaiduMapComponentModule::onNaviStart(const JSIValue thisVal, const JSIV
     ReleaseMsgJsValue(MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_NAVI_START);
     navi_start_callbackContext = OHOS::ACELite::JSI::AcquireValue(thisVal);
     setCallbackFunction(Callback,MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_NAVI_START,true);
-    return JSI::CreateBoolean(0);
+    return JSI::CreateBoolean(true);
 }
 
 JSIValue BaiduMapComponentModule::onNaviDestroy(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize)
@@ -792,7 +823,7 @@ JSIValue BaiduMapComponentModule::onNaviDestroy(const JSIValue thisVal, const JS
     ReleaseMsgJsValue(MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_NAVI_DESTROY);
     navi_destroy_callbackContext = OHOS::ACELite::JSI::AcquireValue(thisVal);
     setCallbackFunction(Callback,MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_NAVI_DESTROY,true);
-    return JSI::CreateBoolean(0);
+    return JSI::CreateBoolean(true);
 }
 
 JSIValue BaiduMapComponentModule::onRoadGuideTextUpdate(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize)
@@ -802,7 +833,7 @@ JSIValue BaiduMapComponentModule::onRoadGuideTextUpdate(const JSIValue thisVal,
     ReleaseMsgJsValue(MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_ROAD_GUIDE_TEXT_UPDATE);
     road_guide_text_update_callbackContext = OHOS::ACELite::JSI::AcquireValue(thisVal);
     setCallbackFunction(Callback,MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_ROAD_GUIDE_TEXT_UPDATE,true);
-    return JSI::CreateBoolean(0);
+    return JSI::CreateBoolean(true);
 }
 
 JSIValue BaiduMapComponentModule::onRouteGuideIconUpdate(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize)
@@ -812,7 +843,7 @@ JSIValue BaiduMapComponentModule::onRouteGuideIconUpdate(const JSIValue thisVal,
     ReleaseMsgJsValue(MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_ROAD_GUIDE_ICON_UPDATE);
     road_guide_icon_update_callbackContext = OHOS::ACELite::JSI::AcquireValue(thisVal);
     setCallbackFunction(Callback,MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_ROAD_GUIDE_ICON_UPDATE,true);
-    return JSI::CreateBoolean(0);
+    return JSI::CreateBoolean(true);
 }
 
 JSIValue BaiduMapComponentModule::onRemainTimeUpdate(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize)
@@ -822,7 +853,7 @@ JSIValue BaiduMapComponentModule::onRemainTimeUpdate(const JSIValue thisVal, con
     ReleaseMsgJsValue(MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_REMAIN_TIME_UPDATE);
     remain_time_callbackContext = OHOS::ACELite::JSI::AcquireValue(thisVal);
     setCallbackFunction(Callback,MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_REMAIN_TIME_UPDATE,true);
-    return JSI::CreateBoolean(0);
+    return JSI::CreateBoolean(true);
 }
 
 JSIValue BaiduMapComponentModule::onRemainDistanceUpdate(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize)
@@ -832,7 +863,7 @@ JSIValue BaiduMapComponentModule::onRemainDistanceUpdate(const JSIValue thisVal,
     ReleaseMsgJsValue(MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_REMAIN_DISTANCE_UPDATE);
     remain_distance_callbackContext = OHOS::ACELite::JSI::AcquireValue(thisVal);
     setCallbackFunction(Callback,MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_REMAIN_DISTANCE_UPDATE,true);
-    return JSI::CreateBoolean(0);
+    return JSI::CreateBoolean(true);
 }
 
 JSIValue BaiduMapComponentModule::onRemainRouteUpdate(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize)
@@ -842,7 +873,7 @@ JSIValue BaiduMapComponentModule::onRemainRouteUpdate(const JSIValue thisVal, co
     ReleaseMsgJsValue(MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_REMAIN_ROUTE_UPDATE);
     remain_route_callbackContext = OHOS::ACELite::JSI::AcquireValue(thisVal);
     setCallbackFunction(Callback,MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_REMAIN_ROUTE_UPDATE,true);
-    return JSI::CreateBoolean(0);
+    return JSI::CreateBoolean(true);
 }
 
 JSIValue BaiduMapComponentModule::onGpsStatusChange(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize)
@@ -852,7 +883,7 @@ JSIValue BaiduMapComponentModule::onGpsStatusChange(const JSIValue thisVal, cons
     ReleaseMsgJsValue(MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_GPS_STATUS_CHANGE);
     gps_status_callbackContext = OHOS::ACELite::JSI::AcquireValue(thisVal);
     setCallbackFunction(Callback,MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_GPS_STATUS_CHANGE,true);
-    return JSI::CreateBoolean(0);
+    return JSI::CreateBoolean(true);
 }
 
 JSIValue BaiduMapComponentModule::onRouteFarAway(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize)
@@ -862,7 +893,7 @@ JSIValue BaiduMapComponentModule::onRouteFarAway(const JSIValue thisVal, const J
     ReleaseMsgJsValue(MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_ROUTE_FARAWAY);
     route_far_callbackContext = OHOS::ACELite::JSI::AcquireValue(thisVal);
     setCallbackFunction(Callback,MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_ROUTE_FARAWAY,true);
-    return JSI::CreateBoolean(0);
+    return JSI::CreateBoolean(true);
 }
 
 JSIValue BaiduMapComponentModule::onRoutePlanYawing(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize)
@@ -873,7 +904,7 @@ JSIValue BaiduMapComponentModule::onRoutePlanYawing(const JSIValue thisVal, cons
     route_plan_yawing_callbackContext = OHOS::ACELite::JSI::AcquireValue(thisVal);
     setCallbackFunction(Callback,MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_ROUTE_PLAN_YAWING,true);
     //msg_center_vector_navi_req_route_plan_yawing(MSGCENTER_CMD_VECTOR_NAVI, MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_ROUTE_PLAN_YAWING,Callback,1);
-    return JSI::CreateBoolean(0);
+    return JSI::CreateBoolean(true);
 }
 
 JSIValue BaiduMapComponentModule::onReRouteComplete(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize)
@@ -883,7 +914,7 @@ JSIValue BaiduMapComponentModule::onReRouteComplete(const JSIValue thisVal, cons
     ReleaseMsgJsValue(MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_RE_ROUTE_COMPLETE);
     reroute_callbackContext = OHOS::ACELite::JSI::AcquireValue(thisVal);
     setCallbackFunction(Callback,MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_RE_ROUTE_COMPLETE,true);
-    return JSI::CreateBoolean(0);
+    return JSI::CreateBoolean(true);
 }
 
 JSIValue BaiduMapComponentModule::onArriveDest(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize)
@@ -893,7 +924,7 @@ JSIValue BaiduMapComponentModule::onArriveDest(const JSIValue thisVal, const JSI
     ReleaseMsgJsValue(MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_ARRIVE_DSTINATION);
     arrivedest_callbackContext = OHOS::ACELite::JSI::AcquireValue(thisVal);
     setCallbackFunction(Callback,MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_ARRIVE_DSTINATION,true);
-    return JSI::CreateBoolean(0);
+    return JSI::CreateBoolean(true);
 }
 
 JSIValue BaiduMapComponentModule::poi_sug_search(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize)
@@ -906,10 +937,13 @@ JSIValue BaiduMapComponentModule::poi_sug_search(const JSIValue thisVal, const J
     poi_sug_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);
-    setCallbackFunction(successCallback,MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_POI_SUG_SEARCH,true);
-    setCallbackFunction(failCallback,MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_POI_SUG_SEARCH,false);
-    msg_center_vertor_navi_req_poi_sug_search(MSGCENTER_CMD_VECTOR_NAVI, MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_POI_SUG_SEARCH,data,strlen(data));
-    return JSI::CreateBoolean(0);
+    bool hasSuccessCallback = setCallbackFunction(successCallback,MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_POI_SUG_SEARCH,true);
+    bool hasFailCallback = setCallbackFunction(failCallback,MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_POI_SUG_SEARCH,false);
+    if (hasSuccessCallback || hasFailCallback) {
+        msg_center_vertor_navi_req_poi_sug_search(MSGCENTER_CMD_VECTOR_NAVI, MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_POI_SUG_SEARCH,data,strlen(data));
+    }
+    ace_free(data);
+    return JSI::CreateBoolean(true);
 }
 
 /**
@@ -1000,10 +1034,13 @@ JSIValue BaiduMapComponentModule::Geocode_search(const JSIValue thisVal, const J
     geocode_search_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);
-    setCallbackFunction(successCallback,MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_GEOCODE_SEARCH,true);
-    setCallbackFunction(failCallback,MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_GEOCODE_SEARCH,false);
-    msg_center_vector_navi_req_geocode_search(MSGCENTER_CMD_VECTOR_NAVI, MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_GEOCODE_SEARCH,data,strlen(data));
-    return JSI::CreateBoolean(0);
+    bool hasSuccessCallback = setCallbackFunction(successCallback,MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_GEOCODE_SEARCH,true);
+    bool hasFailCallback = setCallbackFunction(failCallback,MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_GEOCODE_SEARCH,false);
+    if (hasSuccessCallback || hasFailCallback) {
+        msg_center_vector_navi_req_geocode_search(MSGCENTER_CMD_VECTOR_NAVI, MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_GEOCODE_SEARCH,data,strlen(data));
+    }
+       ace_free(data);
+    return JSI::CreateBoolean(true);
 
 }
 
@@ -1017,10 +1054,13 @@ JSIValue BaiduMapComponentModule::Regeocode_search(const JSIValue thisVal, const
     regeocode_search_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);
-    setCallbackFunction(successCallback,MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_REGEOCODE_SEARCH,true);
-    setCallbackFunction(failCallback,MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_REGEOCODE_SEARCH,false);
-    msg_center_vector_navi_req_regeocode_search(MSGCENTER_CMD_VECTOR_NAVI, MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_REGEOCODE_SEARCH,data,strlen(data));
-    return JSI::CreateBoolean(0);
+    bool hasSuccessCallback = setCallbackFunction(successCallback,MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_REGEOCODE_SEARCH,true);
+    bool hasFailCallback = setCallbackFunction(failCallback,MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_REGEOCODE_SEARCH,false);
+    if (hasSuccessCallback || hasFailCallback) {
+        msg_center_vector_navi_req_regeocode_search(MSGCENTER_CMD_VECTOR_NAVI, MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_REGEOCODE_SEARCH,data,strlen(data));
+    }
+       ace_free(data);
+    return JSI::CreateBoolean(true);
 }
 
 /**
@@ -1032,7 +1072,8 @@ JSIValue BaiduMapComponentModule::Destroy_page(const JSIValue thisVal, const JSI
     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);
+       ace_free(data);
+    return JSI::CreateBoolean(true);
 }
 
 /**
@@ -1050,7 +1091,8 @@ JSIValue BaiduMapComponentModule::onBTConnect(const JSIValue thisVal, const JSIV
     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);
+       ace_free(data);
+    return JSI::CreateBoolean(true);
 }
 
 /**
@@ -1062,7 +1104,8 @@ JSIValue BaiduMapComponentModule::NaviDestroy(const JSIValue thisVal, const JSIV
   char *data = JSI::JsonStringify(args[0]);
   HILOG_INFO(HILOG_MODULE_ACE,"exitNavigation : %s \n",data);
   msg_center_vector_navi_req_destroy_from_watch(MSGCENTER_CMD_VECTOR_NAVI,MSGCENTER_TYPE_ID_VECTOR_NAVI_REQ_DESTROY_FROM_WATCH,data,strlen(data));
-  return JSI::CreateBoolean(0);
+  ace_free(data);
+  return JSI::CreateBoolean(true);
 }
 
 /**
@@ -1074,9 +1117,96 @@ JSIValue BaiduMapComponentModule::StopAnswer(const JSIValue thisVal, const JSIVa
   char *data = JSI::JsonStringify(args[0]);
   HILOG_INFO(HILOG_MODULE_ACE,"StopAnswer : %s \n",data);
   msg_center_xiaodu_send_stop_answer(MSGCENTER_CMD_XIAODU,MSGCENTER_TYPE_ID_XIAODU_SEND_JS_EXIT,data,strlen(data));
-  return JSI::CreateBoolean(0);
+  ace_free(data);
+  return JSI::CreateBoolean(true);
 }
 
+void BaiduMapComponentModule::OnDestroy()
+{
+    HILOG_INFO(HILOG_MODULE_ACE, "BaiduMapComponent OnDestroy\n");
+
+    //poi_nearby_search
+    ReleaseJsValue(poi_successCallback);
+    ReleaseJsValue(poi_failCallback);
+    ReleaseJsValue(poi_callbackContext);
+    //route_riding_search
+    ReleaseJsValue(route_riding_successCallback);
+    ReleaseJsValue(route_riding_failCallback);
+    ReleaseJsValue(route_riding_callbackContext);
+    //route_walking_search
+    ReleaseJsValue(route_walking_successCallback);
+    ReleaseJsValue(route_walking_failCallback);
+    ReleaseJsValue(route_walking_callbackContext);
+    //route_transit_search
+    ReleaseJsValue(route_transit_successCallback);
+    ReleaseJsValue(route_transit_failCallback);
+    ReleaseJsValue(route_transit_callbackContext);
+    //auth_license
+    ReleaseJsValue(auth_successCallback);
+    ReleaseJsValue(auth_failCallback);
+    ReleaseJsValue(auth_callbackContext);
+    //onRoutePlanStart
+    ReleaseJsValue(route_plan_start_Callback);
+    ReleaseJsValue(route_plan_start_callbackContext);
+    //onRoutePlanSuccess
+    ReleaseJsValue(route_plan_success_Callback);
+    ReleaseJsValue(route_plan_success_callbackContext);
+    //onRoutePlanFail
+    ReleaseJsValue(route_plan_fail_Callback);
+    ReleaseJsValue(route_plan_fail_callbackContext);
+    //onNaviStart
+    ReleaseJsValue(navi_start_Callback);
+    ReleaseJsValue(navi_start_callbackContext);
+    //onNaviDestroy
+    ReleaseJsValue(navi_destroy_Callback);
+    ReleaseJsValue(navi_destroy_callbackContext);
+    //onRoadGuideTextUpdate
+    ReleaseJsValue(road_guide_text_update_Callback);
+    ReleaseJsValue(road_guide_text_update_callbackContext);
+    //onRouteGuideIconUpdate
+    ReleaseJsValue(road_guide_icon_update_Callback);
+    ReleaseJsValue(road_guide_icon_update_callbackContext);
+    //onRemainTimeUpdate
+    ReleaseJsValue(remain_time_Callback);
+    ReleaseJsValue(remain_time_callbackContext);
+    //onRemainDistanceUpdate
+    ReleaseJsValue(remain_distance_Callback);
+    ReleaseJsValue(remain_distance_callbackContext);
+    //onRemainRouteUpdate
+    ReleaseJsValue(remain_route_Callback);
+    ReleaseJsValue(remain_route_callbackContext);
+    //onGpsStatusChange
+    ReleaseJsValue(gps_status_Callback);
+    ReleaseJsValue(gps_status_callbackContext);
+    //onRouteFarAway
+    ReleaseJsValue(route_far_Callback);
+    ReleaseJsValue(route_far_callbackContext);
+    //onRoutePlanYawing
+    ReleaseJsValue(route_plan_yawing_Callback);
+    ReleaseJsValue(route_plan_yawing_callbackContext);
+    //onReRouteComplete
+    ReleaseJsValue(reroute_Callback);
+    ReleaseJsValue(reroute_callbackContext);
+    //onArriveDest
+    ReleaseJsValue(arrivedest_Callback);
+    ReleaseJsValue(arrivedest_callbackContext);
+    //poi_sug_search
+    ReleaseJsValue(poi_sug_successCallback);
+    ReleaseJsValue(poi_sug_failCallback);
+    ReleaseJsValue(poi_sug_callbackContext);
+    //geocode_search
+    ReleaseJsValue(geocode_search_successCallback);
+    ReleaseJsValue(geocode_search_failCallback);
+    ReleaseJsValue(geocode_search_callbackContext);
+    //regeocode_search
+    ReleaseJsValue(regeocode_search_successCallback);
+    ReleaseJsValue(regeocode_search_failCallback);
+    ReleaseJsValue(regeocode_search_callbackContext);
+    //BT_connect
+    ReleaseJsValue(bt_connect_successCallback);
+    ReleaseJsValue(bt_connect_failCallback);
+    ReleaseJsValue(bt_connect_callbackContext);
+}
 
 void InitBaiduMapComponentModule(JSIValue exports)
 {
@@ -1139,6 +1269,10 @@ void InitBaiduMapComponentModule(JSIValue exports)
      * stop anwser
      */
     JSI::SetModuleAPI(exports, "stopAnswer", BaiduMapComponentModule::StopAnswer);
+       /**
+     * destroy
+     */
+    JSI::SetOnDestroy(exports, BaiduMapComponentModule::OnDestroy);
 }
 
 } // namespace ACELite
index 5c665e1..f3d0e45 100644 (file)
@@ -111,6 +111,11 @@ public:
      * stop answer
      */
     static JSIValue StopAnswer(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize);
+       
+       /**
+     * destroy
+     */
+    static void OnDestroy();
 };
 
 void InitBaiduMapComponentModule(JSIValue exports);
diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/network_module.cpp b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/network_module.cpp
new file mode 100644 (file)
index 0000000..2cd2d4a
--- /dev/null
@@ -0,0 +1,121 @@
+/*\r
+ * Copyright (c) 2020 Huawei Device Co., Ltd.\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *     http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+#include "ace_log.h"\r
+#include "js_app_context.h"\r
+#include "js_async_work.h"\r
+#include "product_adapter.h"\r
+#include <securec.h>\r
+#include <unistd.h>\r
+#include "media_log.h"\r
+#include "network_module.h"\r
+\r
+namespace OHOS {\r
+namespace ACELite {\r
+NetCallBack NetWorkModule::callback_;\r
+\r
+void NetWorkModule::TriggerCallbackListener(char *netConnectStatus, uint32_t Len)\r
+{\r
+    if (netConnectStatus != nullptr) {\r
+        callback_.netParam.Len = Len;\r
+        char *newData = (char *)realloc(callback_.netParam.status, Len + 1);\r
+        memset_s(newData, Len + 1, 0, Len + 1);\r
+        if (newData != nullptr) {\r
+            callback_.netParam.status = newData;\r
+            memcpy_s(callback_.netParam.status, Len, netConnectStatus, Len);\r
+        }\r
+    }\r
+    callback_.netParam.Len = Len;\r
+    if (!JsAsyncWork::DispatchAsyncWork(AsyncExecuteCallback, const_cast<NetParam *>(&callback_.netParam))) {\r
+        MEDIA_ERR_LOG("dispatch async work failed.");\r
+    }\r
+}\r
+\r
+static bool ValidJsValue(JSIValue value)\r
+{\r
+    return (value != nullptr) && (!JSI::ValueIsUndefined(value));\r
+}\r
+\r
+void NetWorkModule::AsyncExecuteCallback(void *arg)\r
+{\r
+    NetParam *netParam = static_cast<NetParam *>(arg);\r
+    if (ValidJsValue(callback_.net_connect_callback) && netParam != nullptr) {\r
+        JSIValue result = JSI::CreateString(static_cast<char *>(netParam->status));\r
+        JSIValue argv[ARGC_ONE] = {result};\r
+        JSI::CallFunction(callback_.net_connect_callback, callback_.net_connect_thisVal, argv, ARGC_ONE);\r
+        JSI::ReleaseValue(result);\r
+    }\r
+}\r
+\r
+JSIValue NetWorkModule::RegisterConnectListener(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum)\r
+{\r
+    if ((args == nullptr) || (argsNum == 0) || JSI::ValueIsUndefined(args[0])) {\r
+        HILOG_ERROR(HILOG_MODULE_ACE, "Invalid arguments for registering net connection callback");\r
+        return JSI::CreateUndefined();\r
+    }\r
+\r
+    if (callback_.net_connect_callback != nullptr) {\r
+        HILOG_WARN(HILOG_MODULE_ACE, "net connection callback already registered");\r
+        return JSI::CreateUndefined();\r
+    }\r
+\r
+    callback_.net_connect_thisVal = JSI::AcquireValue(thisVal);\r
+    callback_.net_connect_callback = JSI::AcquireValue(args[0]);\r
+    if (callback_.net_connect_callback == nullptr) {\r
+        HILOG_ERROR(HILOG_MODULE_ACE, "Failed to register net connection callback");\r
+        return JSI::CreateUndefined();\r
+    }\r
+\r
+    // 可以在注册回调后执行其他必要的操作\r
+    net_connect_status_change("test", strlen("test"));\r
+\r
+    return JSI::CreateUndefined();\r
+}\r
+\r
+JSIValue NetWorkModule::UnregisterConnectListener(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum)\r
+{\r
+    if (callback_.net_connect_callback == nullptr) {\r
+        HILOG_ERROR(HILOG_MODULE_ACE, "No net connection callback registered to unregister");\r
+        return JSI::CreateUndefined();\r
+    }\r
+    JSI::ReleaseValue(callback_.net_connect_thisVal);\r
+    JSI::ReleaseValue(callback_.net_connect_callback);\r
+    callback_.net_connect_thisVal = nullptr;\r
+    callback_.net_connect_callback = nullptr;\r
+\r
+    return JSI::CreateUndefined();\r
+}\r
+\r
+JSIValue NetWorkModule::GetConnectState(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum)\r
+{\r
+\r
+    return JSI::CreateString(callback_.netParam.status);\r
+}\r
+\r
+}\r
+}\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+\r
+void net_connect_status_change(char *netConnectStatus, uint32_t Len)\r
+{\r
+    OHOS::ACELite::NetWorkModule::TriggerCallbackListener(netConnectStatus, Len);\r
+}\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif
\ No newline at end of file
diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/network_module.h b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/network_module.h
new file mode 100644 (file)
index 0000000..2ddad88
--- /dev/null
@@ -0,0 +1,66 @@
+/*\r
+* Copyright (c) CompanyNameMagicTag. 2021-2021. All rights reserved.\r
+* Description: audio capture wrapper\r
+* Author: Media Software Group\r
+* Create: 2021-09-13\r
+*/\r
+\r
+#ifndef NET_CONNECT_MODULE_H\r
+#define NET_CONNECT_MODULE_H\r
+\r
+#include <cJSON.h>\r
+#include "acelite_config.h"\r
+#include "jsi.h"\r
+#include "js_async_work.h"\r
+#include "non_copyable.h"\r
+#include "product_adapter.h"\r
+#include "abilityms_slite_client.h"\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+void net_connect_status_change(char *netConnectStatus, uint32_t Len);\r
+#ifdef __cplusplus\r
+};\r
+#endif\r
+\r
+namespace OHOS {\r
+namespace ACELite {\r
+\r
+struct NetParam {\r
+    char *status = nullptr;\r
+    uint32_t Len = 0;\r
+};\r
+\r
+struct  NetCallBack {\r
+    JSIValue net_connect_callback = nullptr;\r
+    JSIValue net_connect_thisVal = nullptr;\r
+    NetParam netParam;\r
+};\r
+\r
+class NetWorkModule final : public MemoryHeap {\r
+public:\r
+    ACE_DISALLOW_COPY_AND_MOVE(NetWorkModule);\r
+    NetWorkModule() = default;\r
+    ~NetWorkModule() = default;\r
+    static NetCallBack callback_;\r
+    static JSIValue RegisterConnectListener(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum);\r
+    static JSIValue UnregisterConnectListener(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum);\r
+    static JSIValue GetConnectState(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum);\r
+    static void AsyncExecuteCallback(void *arg);\r
+    static void TriggerCallbackListener(char *netConnectStatus, uint32_t Len);\r
+};\r
+\r
+void InitNetWorkModule(JSIValue exports)\r
+{\r
+    JSI::SetModuleAPI(exports, "registerConnectListener", NetWorkModule::RegisterConnectListener);\r
+    JSI::SetModuleAPI(exports, "unregisterConnectListener", NetWorkModule::UnregisterConnectListener);\r
+    JSI::SetModuleAPI(exports, "getConnectState", NetWorkModule::GetConnectState);\r
+}\r
+\r
+\r
+}\r
+}\r
+\r
+\r
+#endif\r
index db16bf3..2779e85 100755 (executable)
@@ -75,6 +75,7 @@ extern void InitBatteryModule(JSIValue exports);
 extern void InitLocaleModule(JSIValue exports);
 #endif
 
+extern void InitNetWorkModule(JSIValue exports);
 // #ifdef FEATURE_ACELITE_SYSTEM_CAPABILITY
 // extern void InitCapabilityModule(JSIValue exports);
 // #endif
@@ -132,6 +133,7 @@ const Module OHOS_MODULES[] = {
 // #ifdef FEATURE_ACELITE_SYSTEM_CAPABILITY
 //     {"capability", InitCapabilityModule},
 // #endif
+    {"network", InitNetWorkModule},
 };
 } // namespace ACELite
 } // namespace OHOS
diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/presets/image_module.cpp b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/presets/image_module.cpp
new file mode 100644 (file)
index 0000000..5e4dbe0
--- /dev/null
@@ -0,0 +1,344 @@
+/*\r
+ * Copyright (c) 2022 Huawei Device Co., Ltd.\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *     http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+#include <cstring>\r
+\r
+#include "ace_log.h"\r
+#include "locale_util.h"\r
+#include "key_parser.h"\r
+#include "keys.h"\r
+#include "image.h"\r
+#include "image_module.h"\r
+#include "common/image_cache_manager.h"\r
+namespace OHOS {\r
+namespace ACELite {\r
+constexpr jerry_object_native_info_t ImageModule::gcCallback;\r
+const char * const ImageModule::attrOnload = "onload";\r
+const char * const ImageModule::attrOnError = "onerror";\r
+const char * const ImageModule::attrSrc = "src";\r
+const char * const ImageModule::attrWidth = "width";\r
+const char * const ImageModule::attrHeight = "height";\r
+const char * const ImageModule::className = "Image";\r
+\r
+void ImageModule::Init(jerry_value_t intlHandle)\r
+{\r
+    (void)intlHandle;\r
+    jerry_value_t gObj = jerry_get_global_object();\r
+    JerrySetFuncProperty(gObj, className, CreateImage);\r
+}\r
+void ImageModule::RegisterAttributeFunc(jerry_value_t canvas2dContext,\r
+                                        const char *attributeName,\r
+                                        jerry_external_handler_t setterHandler,\r
+                                        jerry_external_handler_t getterHandler)\r
+{\r
+    // register canvas js attribute setter property via the jerry_define_own_property method\r
+    jerry_value_t propName = jerry_create_string(reinterpret_cast<const jerry_char_t *>(attributeName));\r
+    jerry_property_descriptor_t desc;\r
+    jerry_init_property_descriptor_fields(&desc);\r
+    desc.is_set_defined = true;\r
+    desc.setter = jerry_create_external_function(setterHandler);\r
+    desc.is_get_defined = true;\r
+    desc.getter = jerry_create_external_function(getterHandler);\r
+    jerry_value_t returnValue = jerry_define_own_property(canvas2dContext, propName, &desc);\r
+    jerry_free_property_descriptor_fields(&desc);\r
+    ReleaseJerryValue(propName, returnValue, VA_ARG_END_FLAG);\r
+}\r
+jerry_value_t ImageModule::CreateImage(const jerry_value_t func,\r
+                                       const jerry_value_t context,\r
+                                       const jerry_value_t args[],\r
+                                       const jerry_length_t argsNum)\r
+{\r
+    if (!jerry_value_is_constructor(func)) {\r
+        return jerry_create_error(JERRY_ERROR_EVAL,\r
+                                  reinterpret_cast<const jerry_char_t *>("use new to create Image"));\r
+    }\r
+    ImageModule *imageModule = new ImageModule();\r
+    if (imageModule == nullptr) {\r
+        return jerry_create_error(JERRY_ERROR_EVAL,\r
+                                  reinterpret_cast<const jerry_char_t *>("memory is not enough"));\r
+    }\r
+\r
+    imageModule->width_ = -1;\r
+    imageModule->height_ = -1;\r
+    if (argsNum >= 1) {\r
+        if (jerry_value_is_number(args[0])) {\r
+            imageModule->width_ = jerry_value_to_number(args[0]);\r
+        } else if (jerry_value_is_string(args[0])) {\r
+            char* val = MallocStringOf(args[0]);\r
+            if (val == nullptr) {\r
+                return jerry_create_error(JERRY_ERROR_EVAL,\r
+                                          reinterpret_cast<const jerry_char_t *>("val is nullptr"));\r
+            }\r
+            imageModule->width_ = atoi(val);\r
+            ACE_FREE(val);\r
+        }\r
+    }\r
+    if (argsNum >= static_cast<uint32_t>(ArgsCount::NUM_2)) {\r
+        if (jerry_value_is_number(args[1])) {\r
+            imageModule->height_ = jerry_value_to_number(args[1]);\r
+        } else if (jerry_value_is_string(args[1])) {\r
+            char* val = MallocStringOf(args[1]);\r
+            if (val == nullptr) {\r
+                return jerry_create_error(JERRY_ERROR_EVAL,\r
+                                          reinterpret_cast<const jerry_char_t *>("val is nullptr"));\r
+            }\r
+            imageModule->height_ = atoi(val);\r
+            ACE_FREE(val);\r
+        }\r
+    }\r
+\r
+    jerry_set_object_native_pointer(context, imageModule, &gcCallback);\r
+    RegisterAttributeFunc(context, attrOnload, OnLoadSetter, OnLoadGetter);\r
+    RegisterAttributeFunc(context, attrOnError, OnErrorSetter, OnErrorGetter);\r
+    RegisterAttributeFunc(context, attrSrc, OnSrcSetter, OnSrcGetter);\r
+    RegisterAttributeFunc(context, attrWidth, OnWidthSetter, OnWidthGetter);\r
+    RegisterAttributeFunc(context, attrHeight, OnHeightSetter, OnHeightGetter);\r
+    return UNDEFINED;\r
+}\r
+\r
+jerry_value_t ImageModule::OnLoadSetter(const jerry_value_t func,\r
+                                        const jerry_value_t context,\r
+                                        const jerry_value_t args[],\r
+                                        const jerry_length_t argsNum)\r
+{\r
+    (void)func;\r
+    ImageModule* imageModel = nullptr;\r
+    jerry_get_object_native_pointer(context, (void**)&imageModel, &gcCallback);\r
+    if (imageModel == nullptr) {\r
+        return jerry_create_error(JERRY_ERROR_EVAL,\r
+                                  reinterpret_cast<const jerry_char_t *>("get imageModel fail"));\r
+    }\r
+    if (argsNum == 1 && jerry_value_is_function(args[0])) {\r
+        jerry_release_value(imageModel->onLoadFunc_);\r
+        imageModel->onLoadFunc_ = args[0];\r
+    } else {\r
+        return jerry_create_error(JERRY_ERROR_EVAL,\r
+                                  reinterpret_cast<const jerry_char_t *>("set imageModel onload arg fail"));\r
+    }\r
+    return UNDEFINED;\r
+}\r
+\r
+jerry_value_t ImageModule::OnLoadGetter(const jerry_value_t func,\r
+                                        const jerry_value_t context,\r
+                                        const jerry_value_t args[],\r
+                                        const jerry_length_t argsNum)\r
+{\r
+    (void)func;\r
+    (void)args;\r
+    (void)argsNum;\r
+    ImageModule* imageModel = nullptr;\r
+    jerry_get_object_native_pointer(context, (void**)&imageModel, &gcCallback);\r
+    if (imageModel == nullptr) {\r
+        return jerry_create_error(JERRY_ERROR_EVAL,\r
+                                  reinterpret_cast<const jerry_char_t *>("get imageModel fail"));\r
+    }\r
+    return imageModel->onLoadFunc_;\r
+}\r
+\r
+jerry_value_t ImageModule::OnErrorSetter(const jerry_value_t func,\r
+                                         const jerry_value_t context,\r
+                                         const jerry_value_t args[],\r
+                                         const jerry_length_t argsNum)\r
+{\r
+    (void)func;\r
+    ImageModule* imageModel = nullptr;\r
+    jerry_get_object_native_pointer(context, (void**)&imageModel, &gcCallback);\r
+    if (imageModel == nullptr) {\r
+        return jerry_create_error(JERRY_ERROR_EVAL,\r
+                                  reinterpret_cast<const jerry_char_t *>("get imageModel fail"));\r
+    }\r
+    if (argsNum >= 1 && jerry_value_is_function(args[0])) {\r
+        jerry_release_value(imageModel->onErrorFunc_);\r
+        imageModel->onErrorFunc_ = args[0];\r
+    } else {\r
+        return jerry_create_error(JERRY_ERROR_EVAL,\r
+                                  reinterpret_cast<const jerry_char_t *>("set imageModel onload arg fail"));\r
+    }\r
+    return UNDEFINED;\r
+}\r
+\r
+jerry_value_t ImageModule::OnErrorGetter(const jerry_value_t func,\r
+                                         const jerry_value_t context,\r
+                                         const jerry_value_t args[],\r
+                                         const jerry_length_t argsNum)\r
+{\r
+    (void)func;\r
+    (void)args;\r
+    (void)argsNum;\r
+    ImageModule* imageModel = nullptr;\r
+    jerry_get_object_native_pointer(context, (void**)&imageModel, &gcCallback);\r
+    if (imageModel == nullptr) {\r
+        return jerry_create_error(JERRY_ERROR_EVAL,\r
+                                  reinterpret_cast<const jerry_char_t *>("get imageModel fail"));\r
+    }\r
+    return imageModel->onErrorFunc_;\r
+}\r
+\r
+jerry_value_t ImageModule::OnSrcSetter(const jerry_value_t func,\r
+                                       const jerry_value_t context,\r
+                                       const jerry_value_t args[],\r
+                                       const jerry_length_t argsNum)\r
+{\r
+    (void)func;\r
+    ImageModule* imageModel = nullptr;\r
+    jerry_get_object_native_pointer(context, (void**)&imageModel, &gcCallback);\r
+    if (imageModel == nullptr) {\r
+        return jerry_create_error(JERRY_ERROR_EVAL,\r
+                                  reinterpret_cast<const jerry_char_t *>("get imageModel fail"));\r
+    }\r
+    \r
+    if (argsNum >= 1) {\r
+        ACE_FREE(imageModel->src_);\r
+        imageModel->src_ = const_cast<char *>(ParseImageSrc(args[0]));\r
+    }\r
+    if (imageModel->src_ == nullptr || strlen(imageModel->src_) == 0) {\r
+        OnCallBack(context, imageModel, false, "src is null");\r
+        return UNDEFINED;\r
+    }\r
+    jerry_release_value(imageModel->jerrySrc_);\r
+    imageModel->jerrySrc_ = jerry_create_string(reinterpret_cast<const jerry_char_t *>(imageModel->src_));\r
+\r
+    ImageInfo* image = ImageCacheManager::GetInstance().LoadSingleRes(imageModel->src_);\r
+    if (!image) {\r
+        OnCallBack(context, imageModel, false, "unknown image");\r
+        return UNDEFINED;\r
+    }\r
+    OnCallBack(context, imageModel, true, "load sucess");\r
+    return UNDEFINED;\r
+}\r
+\r
+jerry_value_t ImageModule::OnSrcGetter(const jerry_value_t func,\r
+                                       const jerry_value_t context,\r
+                                       const jerry_value_t args[],\r
+                                       const jerry_length_t argsNum)\r
+{\r
+    (void)func;\r
+    (void)args;\r
+    (void)argsNum;\r
+    ImageModule* imageModel = nullptr;\r
+    jerry_get_object_native_pointer(context, (void**)&imageModel, &gcCallback);\r
+    if (imageModel == nullptr) {\r
+        return jerry_create_error(JERRY_ERROR_EVAL,\r
+                                  reinterpret_cast<const jerry_char_t *>("get imageModel fail"));\r
+    }\r
+    if (jerry_value_is_string(imageModel->jerrySrc_)) {\r
+        return imageModel->jerrySrc_;\r
+    }\r
+    return UNDEFINED;\r
+}\r
+\r
+jerry_value_t ImageModule::OnHeightSetter(const jerry_value_t func,\r
+                                          const jerry_value_t context,\r
+                                          const jerry_value_t args[],\r
+                                          const jerry_length_t argsNum)\r
+{\r
+    (void)func;\r
+    ImageModule* imageModel = nullptr;\r
+    jerry_get_object_native_pointer(context, (void**)&imageModel, &gcCallback);\r
+    if (imageModel == nullptr) {\r
+        return jerry_create_error(JERRY_ERROR_EVAL,\r
+                                  reinterpret_cast<const jerry_char_t *>("get imageModel fail"));\r
+    }\r
+    if (argsNum < 1) {\r
+        return jerry_create_error(JERRY_ERROR_EVAL,\r
+                                  reinterpret_cast<const jerry_char_t *>("set height fail"));\r
+    }\r
+    imageModel->height_ = IntegerOf(args[0]);\r
+    return UNDEFINED;\r
+}\r
+\r
+jerry_value_t ImageModule::OnHeightGetter(const jerry_value_t func,\r
+                                          const jerry_value_t context,\r
+                                          const jerry_value_t args[],\r
+                                          const jerry_length_t argsNum)\r
+{\r
+    (void)func;\r
+    (void)args;\r
+    (void)argsNum;\r
+    ImageModule* imageModel = nullptr;\r
+    jerry_get_object_native_pointer(context, (void**)&imageModel, &gcCallback);\r
+    if (imageModel == nullptr) {\r
+        return jerry_create_error(JERRY_ERROR_EVAL,\r
+                                  reinterpret_cast<const jerry_char_t *>("get imageModel fail"));\r
+    }\r
+    return imageModel->height_;\r
+}\r
+\r
+jerry_value_t ImageModule::OnWidthSetter(const jerry_value_t func,\r
+                                         const jerry_value_t context,\r
+                                         const jerry_value_t args[],\r
+                                         const jerry_length_t argsNum)\r
+{\r
+    (void)func;\r
+    ImageModule* imageModel = nullptr;\r
+    jerry_get_object_native_pointer(context, (void**)&imageModel, &gcCallback);\r
+    if (imageModel == nullptr) {\r
+        return jerry_create_error(JERRY_ERROR_EVAL,\r
+                                  reinterpret_cast<const jerry_char_t *>("get imageModel fail"));\r
+    }\r
+    if (argsNum < 1) {\r
+        return jerry_create_error(JERRY_ERROR_EVAL,\r
+                                  reinterpret_cast<const jerry_char_t *>("set width fail"));\r
+    }\r
+    imageModel->width_ = IntegerOf(args[0]);\r
+    return UNDEFINED;\r
+}\r
+\r
+jerry_value_t ImageModule::OnWidthGetter(const jerry_value_t func,\r
+                                         const jerry_value_t context,\r
+                                         const jerry_value_t args[],\r
+                                         const jerry_length_t argsNum)\r
+{\r
+    (void)func;\r
+    (void)args;\r
+    (void)argsNum;\r
+    ImageModule* imageModel = nullptr;\r
+    jerry_get_object_native_pointer(context, (void**)&imageModel, &gcCallback);\r
+    if (imageModel == nullptr) {\r
+        return jerry_create_error(JERRY_ERROR_EVAL,\r
+                                  reinterpret_cast<const jerry_char_t *>("get imageModel fail"));\r
+    }\r
+    return imageModel->width_;\r
+}\r
+\r
+void ImageModule::OnCallBack(const jerry_value_t context,\r
+                             const ImageModule *imageModule,\r
+                             bool isSucess,\r
+                             const char* msg)\r
+{\r
+    jerry_value_t  targetFunction;\r
+    if (imageModule == nullptr) {\r
+        return;\r
+    }\r
+    if (isSucess) {\r
+        targetFunction = imageModule->onLoadFunc_;\r
+    } else {\r
+        targetFunction = imageModule->onErrorFunc_;\r
+    }\r
+    if (!jerry_value_is_function(targetFunction)) {\r
+        return;\r
+    }\r
+    const int16_t argcount = 1;\r
+    jerry_value_t arg = jerry_create_string(reinterpret_cast<const jerry_char_t *>(msg));\r
+    jerry_value_t args[argcount] = {arg};\r
+    jerry_value_t ret_val = jerry_call_function (targetFunction, context, args, argcount);\r
+    if (jerry_value_is_error (ret_val)) {\r
+        HILOG_ERROR(HILOG_MODULE_ACE, "call back failed!");\r
+    }\r
+    jerry_release_value(arg);\r
+    jerry_release_value (ret_val);\r
+}\r
+}\r
+}\r
+\r
diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/presets/image_module.h b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/presets/image_module.h
new file mode 100644 (file)
index 0000000..867ebc2
--- /dev/null
@@ -0,0 +1,146 @@
+/*\r
+ * Copyright (c) 2022 Huawei Device Co., Ltd.\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *     http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+#ifndef OHOS_ACELITE_IMAGE_MODEL_H\r
+#define OHOS_ACELITE_IMAGE_MODEL_H\r
+\r
+#include "acelite_config.h"\r
+#include "image_component.h"\r
+#include "gfx_utils/list.h"\r
+#include "js_fwk_common.h"\r
+namespace OHOS {\r
+namespace ACELite {\r
+class ImageModule final : public MemoryHeap {\r
+enum class ArgsCount { NUM_1 = 1, NUM_2, NUM_3, NUM_4, NUM_5, NUM_6 };\r
+public:\r
+    const char*  GetSrc()\r
+    {\r
+        return src_;\r
+    }\r
+\r
+    int16_t GetWidth()\r
+    {\r
+        return width_;\r
+    }\r
+\r
+    int16_t GetHeight()\r
+    {\r
+        return height_;\r
+    }\r
+\r
+    ACE_DISALLOW_COPY(ImageModule);\r
+    /**\r
+     * @brief register Image object\r
+     */\r
+    static void Init(jerry_value_t intlHandle);\r
+\r
+    static void RegisterAttributeFunc(jerry_value_t canvas2dContext,\r
+                                                const char *attributeName,\r
+                                                jerry_external_handler_t setterHandler,\r
+                                                jerry_external_handler_t getterHandler);\r
+#if (defined(ENABLED_DELETE_MODULE_IAMGE) && (ENABLED_DELETE_MODULE_IAMGE == 1))\r
+    static void DeleteImage(void* ptr)\r
+    {\r
+        ImageModule* image = reinterpret_cast<ImageModule*>(ptr);\r
+        ACE_DELETE(image);\r
+    }\r
+#endif\r
+\r
+    static void OnCallBack(const jerry_value_t context, const ImageModule *imageModule, bool isSucess, const char* msg);\r
+    // the handle to release the native value when the js value number format object is not needed.\r
+    static constexpr jerry_object_native_info_t gcCallback = {\r
+#if ENABLED_DELETE_MODULE_IAMGE\r
+        .free_cb = DeleteImage\r
+#endif\r
+    };\r
+    static const char * const attrOnload;\r
+    static const char * const attrOnError;\r
+    static const char * const attrSrc;\r
+    static const char * const attrWidth;\r
+    static const char * const attrHeight;\r
+    static const char * const className;\r
+private:\r
+    ImageModule()\r
+        : src_(nullptr),\r
+          width_(-1),\r
+          height_(-1),\r
+          onLoadFunc_(UNDEFINED),\r
+          onErrorFunc_(UNDEFINED),\r
+          jerrySrc_(UNDEFINED) {}\r
+\r
+    ~ImageModule()\r
+    {\r
+        jerry_release_value(onLoadFunc_);\r
+        jerry_release_value(onErrorFunc_);\r
+        jerry_release_value(jerrySrc_);\r
+        ACE_FREE(src_);\r
+    }\r
+\r
+    static jerry_value_t CreateImage(const jerry_value_t func,\r
+                                const jerry_value_t context,\r
+                                const jerry_value_t args[],\r
+                                const jerry_length_t argsNum);\r
+    static jerry_value_t OnLoadSetter(const jerry_value_t func,\r
+                                const jerry_value_t context,\r
+                                const jerry_value_t args[],\r
+                                const jerry_length_t argsNum);\r
+    static jerry_value_t OnLoadGetter(const jerry_value_t func,\r
+                                const jerry_value_t context,\r
+                                const jerry_value_t args[],\r
+                                const jerry_length_t argsNum);\r
+    static jerry_value_t OnErrorSetter(const jerry_value_t func,\r
+                                const jerry_value_t context,\r
+                                const jerry_value_t args[],\r
+                                const jerry_length_t argsNum);\r
+    static jerry_value_t OnErrorGetter(const jerry_value_t func,\r
+                                const jerry_value_t context,\r
+                                const jerry_value_t args[],\r
+                                const jerry_length_t argsNum);\r
+    static jerry_value_t OnSrcSetter(const jerry_value_t func,\r
+                                const jerry_value_t context,\r
+                                const jerry_value_t args[],\r
+                                const jerry_length_t argsNum);\r
+    static jerry_value_t OnSrcGetter(const jerry_value_t func,\r
+                                const jerry_value_t context,\r
+                                const jerry_value_t args[],\r
+                                const jerry_length_t argsNum);\r
+    static jerry_value_t OnHeightSetter(const jerry_value_t func,\r
+                                const jerry_value_t context,\r
+                                const jerry_value_t args[],\r
+                                const jerry_length_t argsNum);\r
+    static jerry_value_t OnHeightGetter(const jerry_value_t func,\r
+                                const jerry_value_t context,\r
+                                const jerry_value_t args[],\r
+                                const jerry_length_t argsNum);\r
+    static jerry_value_t OnWidthSetter(const jerry_value_t func,\r
+                                const jerry_value_t context,\r
+                                const jerry_value_t args[],\r
+                                const jerry_length_t argsNum);\r
+    static jerry_value_t OnWidthGetter(const jerry_value_t func,\r
+                                const jerry_value_t context,\r
+                                const jerry_value_t args[],\r
+                                const jerry_length_t argsNum);\r
+\r
+private:\r
+    char* src_;\r
+    int16_t width_;\r
+    int16_t height_;\r
+    jerry_value_t onLoadFunc_;\r
+    jerry_value_t onErrorFunc_;\r
+    jerry_value_t jerrySrc_;\r
+};\r
+}\r
+}\r
+#endif // NUMBER_FORMAT_MODEL_H\r
index 40214f0..bbb4da9 100755 (executable)
@@ -21,6 +21,7 @@
 #include "string.h"
 #include "number_format_module.h"
 #include "js_fwk_common.h"
+#include "image_module.h"
 namespace OHOS {
 namespace ACELite {
 void IntlModule::Init()
@@ -33,6 +34,7 @@ void IntlModule::Init()
 #ifdef FEATURE_DATE_FORMAT
     DateTimeFormatModule::Init(baseObj);
 #endif
+    ImageModule::Init(baseObj);
     JerrySetNamedProperty(globalObj, "Intl", baseObj);
     jerry_release_value(globalObj);
 }
index d4ecb8d..5fd9ba6 100644 (file)
Binary files a/code/sdk/open_source/openharmony/foundation/appexecfwk/appexecfwk_lite/brandy-auto-ota-cli/libbms.a and b/code/sdk/open_source/openharmony/foundation/appexecfwk/appexecfwk_lite/brandy-auto-ota-cli/libbms.a differ
index 53a5362..0bdbf22 100644 (file)
Binary files a/code/sdk/open_source/openharmony/foundation/appexecfwk/appexecfwk_lite/brandy-auto-ota-ser/libbms.a and b/code/sdk/open_source/openharmony/foundation/appexecfwk/appexecfwk_lite/brandy-auto-ota-ser/libbms.a differ
index 686c9ea..5cf8f15 100755 (executable)
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 b91cc54..2096170 100755 (executable)
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 bba9869..ee2bb8a 100644 (file)
Binary files a/code/sdk/open_source/openharmony/third_party/jerryscript/brandy-auto-ota-cli/libjerryscript.a and b/code/sdk/open_source/openharmony/third_party/jerryscript/brandy-auto-ota-cli/libjerryscript.a differ
index 5ef2025..9268431 100644 (file)
Binary files a/code/sdk/open_source/openharmony/third_party/jerryscript/brandy-auto-ota-ser/libjerryscript.a and b/code/sdk/open_source/openharmony/third_party/jerryscript/brandy-auto-ota-ser/libjerryscript.a differ
index 73de5fe..75cadbf 100755 (executable)
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 8e4eeec..5bcadaa 100755 (executable)
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 b185581..4bb78f6 100755 (executable)
@@ -12,7 +12,7 @@
 #include "bts_br_gap.h"
 #include "bts_hfp_hf.h"
 #include "sample_common.h"
-#ifdef MEMORY_MINI
+#ifdef MEMORY_MINI_HFP_SUPPORT
 #include "audio_manager.h"
 #else
 #include "bt_audio_manager_wrapper.h"
@@ -59,7 +59,7 @@ typedef struct {
     hfp_hf_sample_cmd_handle_func func;
 } sample_hfp_hf_hdl_info;
 
-#ifdef MEMORY_MINI
+#ifdef MEMORY_MINI_HFP_SUPPORT
 struct AudioManager *g_audio_manager = NULL;
 struct AudioAdapter *g_primary_adapter = NULL;
 struct AudioAdapter *g_bluetooth_adapter = NULL;
@@ -121,7 +121,7 @@ static void sample_handle_hfp_connection_state_changed(const bd_addr_t *bd_addr,
 static int32_t g_hfp_media_status = 0;
 static int32_t g_hfp_media_flag = 0;
 
-#ifdef MEMORY_MINI
+#ifdef MEMORY_MINI_HFP_SUPPORT
 #define MAX_AUDIO_ADAPTER_NUM 2
 #define MAX_KEY_VALUE_LEN 25
 
@@ -143,7 +143,7 @@ static int32_t g_hdl_dn_spk = -1;
 static int32_t g_hdl_dn_sco = -1;
 #endif
 
-#ifdef MEMORY_MINI
+#ifdef MEMORY_MINI_HFP_SUPPORT
 static void audio_sample_attr_init(enum AudioFormat audio_format, struct AudioSampleAttributes *param)
 {
     param->type = AUDIO_IN_COMMUNICATION;
@@ -379,7 +379,7 @@ static int32_t abrogation_audio_capture_render_pipeline(void)
 }
 #endif
 
-#ifndef MEMORY_MINI
+#ifndef MEMORY_MINI_HFP_SUPPORT
 static int32_t audio_stream_init(void)
 {
     /* 请求音频焦点 */
@@ -444,7 +444,7 @@ static int32_t sample_audio_init_start_task_body(const void *data)
     g_hfp_media_flag = HFP_MEDIA_FLAG_BUSY;
 
     int ret;
-#ifdef MEMORY_MINI
+#ifdef MEMORY_MINI_HFP_SUPPORT
     ret = audio_capture_render_init();
     if (ret != 0) {
         bts_sample_log("{%s():%d} audio capture render init failed\n", __FUNCTION__, __LINE__);
@@ -458,7 +458,7 @@ static int32_t sample_audio_init_start_task_body(const void *data)
     g_hfp_media_status = HFP_MEDIA_STATUS_INIT;
 
     /* 建立电话上下行通路 */
-#ifdef MEMORY_MINI
+#ifdef MEMORY_MINI_HFP_SUPPORT
     ret = establish_audio_capture_render_pipeline();
     if (ret != 0) {
         bts_sample_log("{%s():%d} establish audio capture render pipeline failed\n", __FUNCTION__, __LINE__);
@@ -490,7 +490,7 @@ static int32_t sample_audio_deinit_task_body(const void *data)
     /* 设置媒体状态繁忙 */
     g_hfp_media_flag = HFP_MEDIA_FLAG_BUSY;
 
-#ifdef MEMORY_MINI
+#ifdef MEMORY_MINI_HFP_SUPPORT
     abrogation_audio_capture_render_pipeline();
 #else
     abrogation_audio_stream_pipeline();
@@ -651,7 +651,7 @@ static void sample_handle_hfp_call_state_changed(const bd_addr_t *bd_addr, const
 
 void sample_hfp_hf_set_spk_volume(uint8_t volume)
 {
-#ifdef MEMORY_MINI
+#ifdef MEMORY_MINI_HFP_SUPPORT
     /* vol range [0, 1.0] */
     float vol = (float)volume / SAMPLE_HFP_PROF_VOL_LEVEL;
     if (g_audio_render_down_link != NULL) {
@@ -686,13 +686,13 @@ static void sample_handle_hfp_codec_changed(const bd_addr_t *bd_addr, int codec)
     sample_hfp_hf_print_addr(bd_addr);
     bts_sample_log_with_func("codec : %d\n", codec);
     if (codec == HFP_HF_CODEC_ID_CVSD) {
-#ifdef MEMORY_MINI
+#ifdef MEMORY_MINI_HFP_SUPPORT
         g_hfp_codec = AUDIO_FORMAT_PCM_16_BIT;
 #else
         g_hfp_codec = PCM;
 #endif
     } else if (codec == HFP_HF_CODEC_ID_MSBC) {
-#ifdef MEMORY_MINI
+#ifdef MEMORY_MINI_HFP_SUPPORT
         g_hfp_codec = AUDIO_FORMAT_mSBC;
 #else
         g_hfp_codec = mSBC;
@@ -756,7 +756,7 @@ static void sample_hfp_hf_cmd_00_reg_callback(const char **params, int32_t param
 // 蓝牙通话注册回调
 void wstp_hfp_hf_reg_callback(void)
 {
-#ifdef MEMORY_MINI
+#ifdef MEMORY_MINI_HFP_SUPPORT
     audio_hal_init();
 #endif
     errcode_t ret = ERRCODE_BT_SUCCESS;
index af41b6e..618e1e9 100755 (executable)
@@ -158,6 +158,8 @@ static void sample_spp_cmd_server_create(const char **params, int32_t params_cnt
     bts_sample_log_with_func("spp_server_create ret: %x\n", ret);
 }
 
+static osal_task *g_spp_server_accept_task = NULL;
+static bool g_spp_server_wait_accept = false;
 static int sample_spp_server_accept_task_body(const void *data)
 {
     int server_id = (int)(intptr_t)data;
@@ -166,6 +168,13 @@ static int sample_spp_server_accept_task_body(const void *data)
     int ret = spp_server_accept(server_id);
 
     bts_sample_log_with_func("spp_server_accept ret: %x\n", ret);
+    g_spp_server_wait_accept = false;
+    bts_sample_log_with_func("spp_server_accept task %x task.task %x\n",
+        g_spp_server_accept_task, g_spp_server_accept_task->task);
+    if (g_spp_server_accept_task != NULL && g_spp_server_accept_task->task != NULL) {
+        osal_kthread_destroy(g_spp_server_accept_task, 0);
+        g_spp_server_accept_task = NULL;
+    }
 
     return OSAL_SUCCESS;
 }
@@ -173,15 +182,20 @@ static int sample_spp_server_accept_task_body(const void *data)
 /* 等待client连接 */
 void wstp_spp_cmd_server_accept(uint32_t server_id)
 {
-    osal_task *task = osal_kthread_create(sample_spp_server_accept_task_body,
+    if (g_spp_server_wait_accept == true) {
+        bts_sample_log_with_func("create task fail. exsit running task.\n");
+        return;
+    }
+    g_spp_server_wait_accept = true;
+    g_spp_server_accept_task = osal_kthread_create(sample_spp_server_accept_task_body,
         (void *)(uintptr_t)server_id,
         "spp_server_accept_task",
         SAMPLE_SPP_TASK_STACK_SIZE);
-    if (task == NULL) {
+    if (g_spp_server_accept_task == NULL) {
         bts_sample_log_with_func("create task fail\n");
         return;
     }
-    int ret = osal_kthread_set_priority(task, SAMPLE_SPP_TASK_PRI);
+    int ret = osal_kthread_set_priority(g_spp_server_accept_task, SAMPLE_SPP_TASK_PRI);
     if (ret != OSAL_SUCCESS) {
         bts_sample_log_with_func("set pri error: %08x\n", ret);
     }
index d118c69..3689a56 100755 (executable)
@@ -63,7 +63,8 @@ typedef enum {
     BTSRV_SAMPLE_GAP_GET_FEATURE_CONFIG,      /* 33 蓝牙特性获取 */
     BTSRV_SAMPLE_GAP_RECONNECT_PHONE,         /* 34 重连手机 */
 
-    BTSRV_SAMPLE_GAP_SET_INQUIRY_PARAM,       /* 35 设置搜到参数 */
+    BTSRV_SAMPLE_GAP_SET_INQUIRY_PARAM,         /* 35 设置搜到参数 */
+    BTSRV_SAMPLE_GAP_SET_SERVICE_TASK_PRIORITY, /* 36 设置BT_SERVICE_TASK优先级 */
 } btsrv_gap_sample_cmd_id;
 
 typedef enum {
@@ -680,6 +681,8 @@ static void btsrv_sample_cmd_disconnect_remote_device(const char **params, int32
     errcode_t ret = gap_ble_disconnect_remote_device(&bd_addr);
     bts_sample_log("gap_disconnect_remote_device ret(bool): %u\n", ret);
 }
+
+bd_addr_t g_remote_connect_addr = {0};
 acl_conn_ext_mode g_acl_conn_ext_mode = ACL_EXT_MODE_CONNECT_A2DP;
 /* 连接设备 params: addr addr_type */
 static void btsrv_sample_cmd_connect_remote_device(const char **params, int32_t params_cnt)
@@ -715,6 +718,7 @@ bool wstp_connect_remote_device(const bd_addr_t *bd_addr)
         return false;
     }
     errcode_t ret = gap_connect_remote_device(bd_addr);
+    (void)memcpy_s(&g_remote_connect_addr, sizeof(bd_addr_t), bd_addr, sizeof(bd_addr_t));
     bts_sample_log("gap_connect_remote_device ret(errcode_t): %x\n", ret);
     return (ret == ERRCODE_BT_SUCCESS) ? true : false;
 }
@@ -724,6 +728,17 @@ static void sample_gap_state_changed_callback(const int transport, const int sta
     bts_sample_log("gap_state_changed_callback transport: %d status: %d\n", transport, status);
 }
 
+/* 主动发起连接 */
+static bool is_active_connection(const bd_addr_t *bd_addr)
+{
+    if (memcmp(g_remote_connect_addr.addr, bd_addr->addr, BD_ADDR_LEN) == 0) {
+        (void)memset_s(g_remote_connect_addr.addr, sizeof(bd_addr_t), 0, sizeof(bd_addr_t));
+        return true;
+    } else {
+        return false;
+    }
+}
+
 static void sample_gap_acl_state_changed_callback(const bd_addr_t *bd_addr, gap_acl_state_t state, unsigned int reason)
 {
     bts_sample_log("gap_acl_state_changed_callback addr: ");
@@ -738,7 +753,7 @@ static void sample_gap_acl_state_changed_callback(const bd_addr_t *bd_addr, gap_
     }
 #ifndef MEMORY_MINI
 #if (BTH_BREDR_ONLY == YES) || (BTH_BREDR_LE_DOUBLE == YES)
-    if (state == GAP_ACL_STATE_CONNECTED && ((uint32_t)device_class & 0x200) == 0) {
+    if (state == GAP_ACL_STATE_CONNECTED && ((uint32_t)device_class & 0x200) == 0 && is_active_connection(bd_addr)) {
         /* 只要是非手机设备,连接成功后就先初始化audio manager为音乐播放 */
         bts_sample_log("sample_gap_acl_state_changed_callback call AudioManagerInit - AUDIO_STREAM_MUSIC\n");
 
@@ -1191,6 +1206,17 @@ static void btsrv_sample_cmd_reconnect_phone(const char **params, int32_t params
     bts_sample_log("reconnect phone ret:%d.\n", ret);
 }
 
+static void btsrv_sample_cmd_set_service_task_priority(const char **params, int32_t params_cnt)
+{
+    if (params_cnt != 1) { /* 1:参数个数 */
+        bts_sample_log("params_cnt error! need one param!\n");
+        return;
+    }
+    uint16_t task_priority = (uint16_t)atoi(params[0]);
+    errcode_t ret = bts_set_service_task_priority(task_priority);
+    bts_sample_log("bts set service task priority ret:0x%x priority:%d\n", ret, task_priority);
+}
+
 btsrv_sample_cmd_hdl_info g_btsrv_gap_sample_hdls[] = {
     /* 0 */
     { BTSRV_SAMPLE_GAP_ENABLE_BLE,  btsrv_sample_cmd_enable_ble },
@@ -1244,6 +1270,7 @@ btsrv_sample_cmd_hdl_info g_btsrv_gap_sample_hdls[] = {
 
     /* 35 */
     { BTSRV_SAMPLE_GAP_SET_INQUIRY_PARAM, btsrv_sample_cmd_set_filter_device_class },
+    { BTSRV_SAMPLE_GAP_SET_SERVICE_TASK_PRIORITY, btsrv_sample_cmd_set_service_task_priority}
 };
 
 void btsrv_gap_sample_cmd(uint32_t cmd_id, const char **params, int32_t params_cnt)
index 7e312ac..41c634d 100755 (executable)
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:23a8ebf4fe1e677662ba96dd9882af0c8247ecfee9fcb7c5c79666128b66f125
-size 425536
+oid sha256:1c2c6e827eb257e312c39c379615dc65f4d340df62244627fe0f2502f55ed513
+size 425632
index 0769cfb..5df93c6 100755 (executable)
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:52718d4082ae98fca23b0b5e19bd01a07bcb42bb9f7f152e203854f8bac7bd7a
+oid sha256:c132d7fb64e2064b3f823e2415fda1ccf6c490c84c89651397f51823b8d72782
 size 350088
index bf844e9..1c60a82 100755 (executable)
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:37c3879f164d520afa160bee7505eabd501840aca871b3077033ebc3bfbe0c23
+oid sha256:955fa51b4e669f5c6730cdb6a1af28a886593e312c7de19a294be3416f37f09e
 size 331008
index 5208ee4..c0b77b0 100755 (executable)
@@ -1,3 +1,3 @@
 version https://git-lfs.github.com/spec/v1
-oid sha256:7ef85fa292de2d6ccfd8009f7a758234cf2fa4d5a2df9def4e8fc46f0765ba6b
+oid sha256:3cbcb5af41b109af9b8385fb4dd2412013115cd287c7b7fa88e4752a2d9dee23
 size 344736
index b4451d3..2a9345e 100755 (executable)
@@ -24,11 +24,17 @@ from param_packet import gen_flash_part_bin
 from nv_binary import nv_begin
 
 # brandy packet
-def build_brandy_other_bin(pack_style_str):
+def build_brandy_other_bin(pack_style_str, flash_size):
     ''' 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_cfg = os.path.join(chip_dir, "param_sector")
+    if flash_size.endswith("0x1000000"):
+        # partition_cfg = os.path.join(partition_cfg, "param_sector_16M.json")
+        partition_cfg = os.path.join(partition_cfg, "param_sector_fd230.json")
+    else:
+        partition_cfg = os.path.join(partition_cfg, "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")
@@ -46,11 +52,71 @@ def build_brandy_other_bin(pack_style_str):
     gen_flash_part_bin(partition_cfg, partition_bin)
     nv_begin(nv_config_json, targets, 0)
 
-
-def make_all_in_one_packet(pack_style_str):
+def make_all_in_one_packet_8M(pack_style_str):
     # make all in one packet
-    build_brandy_other_bin(pack_style_str)
+    bin_dir = os.path.join(PKG_DIR, "bin", "brandy")
+    application_dir = os.path.join(SDK_DIR,
+                                   "output",
+                                   "brandy",
+                                   "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",
+                                "acore",
+                                recovery_target,
+                                "recovery.bin")
+    recovery_bx = recovery_bin + "|0x70050000|0x40000|100"
+
+    upload_app_fwpkg = os.path.join(PKG_DIR, "fwpkg", "brandy", "upload_app.fwpkg")
+
+    ssb = os.path.join(SDK_DIR, "output", "brandy", "acore", "brandy-ssb", "ssb.bin")
+    if not os.path.exists(ssb):
+        ssb = os.path.join(bin_dir, "ssb.bin")
+    print("ssb_path: ", ssb)
+    ssb_bx = ssb + "|0x70000000|0x20000|0"
+
+    partition = os.path.join(SDK_DIR, "output", "brandy", "partition_table.bin")
+    partition_bx = partition + "|0x7004F000|0x1000|100"
+    nv = os.path.join(SDK_DIR, "output", "brandy", "nv_bin", "brandy_all_nv.bin")
+    nv_bx = nv + "|0x707F9000|0x4000|100"
+
+    app = os.path.join(application_dir, "application.bin")
+    app_bx = app + "|0x702B0000|0x549000|18"
 
+    bt = os.path.join(bin_dir, "bt.bin")
+    bt_bx = bt + "|0x70090000|0x70000|20"
+
+    target_env = TargetEnvironment(pack_style_str)
+    dsp_version = target_env.get("dsp_version")
+    dsp_main = os.path.join(bin_dir, "dsp", dsp_version, "dsp_main.bin")
+    dsp_main_bx = dsp_main + "|0x70100000|0x70000|22"
+    dsp_overlay = os.path.join(bin_dir, "dsp", dsp_version, "dsp_overlay.bin")
+    dsp_overlay_bx = dsp_overlay + "|0x70170000|0x140000|26"
+
+    fs = os.path.join(application_dir, "file.bin")
+    fs_bx = fs + "|0xFFFFFFFF|0xFFFFFFFF|101"
+
+    try:
+        packet_post_agvs = list()
+        packet_post_agvs.append(ssb_bx)
+        packet_post_agvs.append(partition_bx)
+        packet_post_agvs.append(app_bx)
+        packet_post_agvs.append(recovery_bx)
+        packet_post_agvs.append(bt_bx)
+        packet_post_agvs.append(dsp_main_bx)
+        packet_post_agvs.append(dsp_overlay_bx)
+        packet_post_agvs.append(nv_bx)
+        packet_post_agvs.append(fs_bx)
+        packet_bin(upload_app_fwpkg, packet_post_agvs)
+    except Exception as e:
+        print(e)
+        exit(-1)
+
+def make_all_in_one_packet_fd230(pack_style_str):
+    # make all in one packet
     bin_dir = os.path.join(PKG_DIR, "bin", "brandy")
     application_dir = os.path.join(SDK_DIR,
                                    "output",
@@ -116,6 +182,79 @@ def make_all_in_one_packet(pack_style_str):
         print(e)
         exit(-1)
 
+def make_all_in_one_packet_16M(pack_style_str):
+    # make all in one packet
+    bin_dir = os.path.join(PKG_DIR, "bin", "brandy")
+    application_dir = os.path.join(SDK_DIR,
+                                   "output",
+                                   "brandy",
+                                   "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",
+                                "acore",
+                                recovery_target,
+                                "recovery.bin")
+    recovery_bx = recovery_bin + "|0x70B80000|0x100000|100"
+
+    upload_app_fwpkg = os.path.join(PKG_DIR, "fwpkg", "brandy", "upload_app.fwpkg")
+
+    ssb = os.path.join(SDK_DIR, "output", "brandy", "acore", "brandy-ssb", "ssb.bin")
+    if not os.path.exists(ssb):
+        ssb = os.path.join(bin_dir, "ssb.bin")
+    print("ssb_path: ", ssb)
+    ssb_bx = ssb + "|0x70000000|0x20000|0"
+
+    partition = os.path.join(SDK_DIR, "output", "brandy", "partition_table.bin")
+    partition_bx = partition + "|0x7004F000|0x1000|100"
+    nv = os.path.join(SDK_DIR, "output", "brandy", "nv_bin", "brandy_all_nv.bin")
+    nv_bx = nv + "|0x70C80000|0x4000|100"
+
+    app = os.path.join(application_dir, "application.bin")
+    app_bx = app + "|0x70380000|0x800000|18"
+
+    bt = os.path.join(bin_dir, "bt.bin")
+    bt_bx = bt + "|0x70090000|0x70000|20"
+
+    target_env = TargetEnvironment(pack_style_str)
+    dsp_version = target_env.get("dsp_version")
+    dsp_main = os.path.join(bin_dir, "dsp", dsp_version, "dsp_main.bin")
+    dsp_main_bx = dsp_main + "|0x70100000|0xC0000|22"
+    dsp_overlay = os.path.join(bin_dir, "dsp", dsp_version, "dsp_overlay.bin")
+    dsp_overlay_bx = dsp_overlay + "|0x701C0000|0x1C0000|26"
+
+    fs = os.path.join(application_dir, "file.bin")
+    fs_bx = fs + "|0xFFFFFFFF|0xFFFFFFFF|101"
+
+    try:
+        packet_post_agvs = list()
+        packet_post_agvs.append(ssb_bx)
+        packet_post_agvs.append(partition_bx)
+        packet_post_agvs.append(app_bx)
+        packet_post_agvs.append(recovery_bx)
+        packet_post_agvs.append(bt_bx)
+        packet_post_agvs.append(dsp_main_bx)
+        packet_post_agvs.append(dsp_overlay_bx)
+        packet_post_agvs.append(nv_bx)
+        packet_post_agvs.append(fs_bx)
+        packet_bin(upload_app_fwpkg, packet_post_agvs)
+    except Exception as e:
+        print(e)
+        exit(-1)
+
+
+def make_all_in_one_packet(pack_style_str, flash_size):
+    # make all in one packet
+    build_brandy_other_bin(pack_style_str, flash_size)
+    if flash_size.endswith("0x1000000"):
+        make_all_in_one_packet_fd230(pack_style_str)
+        # make_all_in_one_packet_16M(pack_style_str)
+    else:
+        make_all_in_one_packet_8M(pack_style_str)
+
 def is_packing_files_exist(soc, pack_style_str):
     """
     判断打包文件是否存在
index a50d62e..1f4fe7c 100755 (executable)
@@ -17,6 +17,7 @@ def main():
         print("Parameter error")
     build_soc = sys.argv[1]
     build_target = sys.argv[2]
+    flash_size = sys.argv[3]
 
     load_fmt = "chip_packet.%s.packet" %build_soc
     load_mod = importlib.import_module(load_fmt)
@@ -26,7 +27,7 @@ def main():
         lost = ";".join(lost_file)
         print(f"cannot find {lost}")
         exit(-1)
-    load_mod.make_all_in_one_packet(build_target)
+    load_mod.make_all_in_one_packet(build_target, flash_size)
 
 if __name__ == "__main__":
     main()
diff --git a/patch_602_0812_to_0911.txt b/patch_602_0812_to_0911.txt
new file mode 100644 (file)
index 0000000..cf713ec
--- /dev/null
@@ -0,0 +1,49 @@
+【补丁名称】patch_602_0812_to_0911\r
+【基础版本】b602 + 0521 + 0626 + 7020 + 0812\r
+【修复问题】\r
+BT合入内容\r
+    1、提供配置BT_SERVICE_TASK任务优先级的接口。\r
+    2、白名单流控方案,解决BLE配对B核数据积压导致内存不足问题。\r
+    3、解决T1来电未打断音乐的问题。    \r
+    4、解决task创建过多导致通话通路未创建的问题。\r
+    5、屏蔽bt睡眠唤醒统计日志。\r
+PLT合入内容\r
+    1、msgcenter与native app代码解耦。\r
+    2、nv flash下电前刷新机制调整。\r
+    3、支持16M norFlash部署。\r
+MEDIA合入内容\r
+    1、解决视频停播问题。\r
+GUI合入内容\r
+    1、修复MemCheck挂死问题\r
+    2、修复UIKIT SAMPLE选择足球效果死机重启\r
+    3、UICrossView优化\r
+    4、针对无动画的ChangeSlice优化\r
+    5、异步及ULPS优化\r
+    6、支持切换页面时清除设备分发状态和缓存数据\r
+    7、支持SlipFlow\r
+    8、修复视频表盘滑动到指南针不转动问题\r
+OHOS合入内容\r
+    1、解决jsapp内多次跳转page内存持续增长OOM问题。\r
+    2、增加network jsi,方便客户native对接。\r
+    3、解决贪吃蛇性能问题,提供drawImage方式。\r
+NATIVE-JS sample合入内容\r
+    1、解决美人鱼耳机无法控制音量问题。\r
+    2、解决取消配对后连接状态未刷新问题。\r
+    3、调整音量同步逻辑。\r
+    4、音乐播放结束回调不能直接操作UI。\r
+    5、刪除PresenterTask类。\r
+    6、解决蜂窝list内存泄露。\r
+【修改影响】NA\r
+\r
+【使用方法】\r
+    1、合入0521补丁\r
+    2、合入0626补丁\r
+    3、合入0720补丁\r
+    4、合入0812补丁\r
+    4、合入0909补丁\r
+【自测情况】\r
+    自验证范围:\r
+       全功能冒烟\r
+    自验证target:\r
+       Native-js、target3 rc版本\r
+【是否合入版本】根据测试结果确定\r