From 02faf88b799971aba855544f2b921f35ddcfc685 Mon Sep 17 00:00:00 2001 From: luozheng <1732036298@qq.com> Date: Thu, 16 Apr 2026 16:36:48 +0800 Subject: [PATCH] =?utf8?q?open=5Fsource=E6=96=87=E4=BB=B6=E5=A4=B91201patc?= =?utf8?q?h=E5=90=88=E5=B9=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../open_source/openharmony/CMakeLists.txt | 5 +- .../frameworks/resmgr_lite/src/global_utils.c | 2 +- .../security/appverify/app_mbedtls_pkcs7.c | 1171 +++++++++++++--- .../appverify/include/app_verify_pub.h | 6 +- .../appverify/include/mbedtls_pkcs7.h | 23 + .../crypto_lite/cipher/CMakeLists.txt | 5 + .../crypto_lite/cipher/include/cipher.h | 21 + .../crypto_lite/cipher/include/cipher_log.h | 6 + .../crypto_lite/cipher/src/cipher_aes.c | 18 + .../crypto_lite/cipher/src/cipher_base64.c | 35 + .../cipher/src/cipher_hmac_sha256.c | 35 + .../crypto_lite/cipher/src/cipher_md5.c | 43 + .../crypto_lite/cipher/src/cipher_nv_store.c | 398 ++++++ .../crypto_lite/js/builtin/CMakeLists.txt | 1 + .../js/builtin/include/cipher_module.h | 20 +- .../js/builtin/src/cipher_module.cpp | 963 ++++++++++++- .../sensors/frameworks/src/sensor_agent.c | 11 +- .../frameworks/src/sensor_agent_proxy.c | 13 + .../kits/native/include/sensor_agent.h | 15 +- .../kits/native/include/sensor_agent_type.h | 14 +- .../native/include/sensor_agent_type_ext.h | 12 + .../interfaces/kits/include/location.h | 44 + .../location/sample/location_sample.cpp | 6 +- .../gnss/source/gnss_event_callback.cpp | 4 + .../services/utils/source/location.cpp | 12 + .../base/sensors/sample/sensor_sample.cpp | 35 + .../sensors/services/include/sensor_service.h | 3 + .../services/include/sensor_service_impl.h | 3 + .../sensors/services/src/sensor_service.c | 3 + .../services/src/sensor_service_impl.c | 12 + .../startup/syspara_lite/src/hal_sys_param.c | 4 +- .../syspara_lite/src/parameter_common.c | 12 +- ...0\210\345\271\266\346\217\220\344\272\244" | 1 + .../format/interfaces/include/format_type.h | 4 +- .../source/gnss_emulator_vendor_impl.cpp | 102 +- .../hdi_service/include/location_vendor_lib.h | 12 + .../source/gnss_interface_impl.cpp | 4 + .../gnss/utils/include/gnss_nmea_parse.h | 29 +- .../location/gnss/utils/include/gnss_utils.h | 2 +- .../gnss/utils/source/gnss_nmea_parse.cpp | 105 +- .../location/gnss/utils/source/gnss_utils.cpp | 61 +- .../location/interface/gnss/v2_0/gnss_types.h | 8 + .../drivers/peripheral/sensor/CMakeLists.txt | 13 + .../sensor/hal_lite/sensor_mgr/CMakeLists.txt | 79 ++ .../sensor_mgr/include/sensor_common.h | 180 +++ .../sensor_mgr/include/sensor_manager.h | 38 + .../sensor_mgr/include/sensor_typedef.h | 150 +++ .../include/hsensor_data_service.h | 25 + .../src/hsensor_data_service.c | 113 ++ .../include/hsensormgr_service.h | 100 ++ .../src/hsensormgr_service.c | 833 ++++++++++++ .../sensor_mgr/src/sensor_interface_impl.c | 164 +++ .../hal_lite/sensor_mgr/src/sensor_manager.c | 133 ++ .../sensor_mgr/src/task/include/sensor_task.h | 76 ++ .../sensor_mgr/src/task/include/sensor_tmsg.h | 55 + .../sensor_mgr/src/task/src/sensor_task.c | 346 +++++ .../sensor_mgr/src/task/src/sensor_tmsg.c | 80 ++ .../src/utils/include/sensor_memory.h | 28 + .../src/utils/include/sensor_msgqueue.h | 35 + .../src/utils/include/sensor_para_decision.h | 34 + .../src/utils/include/sensor_state.h | 24 + .../src/utils/include/sensor_thread.h | 59 + .../src/utils/include/sensor_utils.h | 55 + .../sensor_mgr/src/utils/src/sensor_log.c | 97 ++ .../sensor_mgr/src/utils/src/sensor_memory.c | 18 + .../src/utils/src/sensor_msgqueue.c | 33 + .../src/utils/src/sensor_para_decision.c | 91 ++ .../sensor_mgr/src/utils/src/sensor_state.c | 50 + .../sensor_mgr/src/utils/src/sensor_thread.c | 147 ++ .../sensor_mgr/src/utils/src/sensor_utils.c | 397 ++++++ .../include/vsensor_task_mgr.h | 27 + .../include/vsensormgr_service.h | 26 + .../include/vsensor_task_class.h | 40 + .../include/vsensor_task_comm.h | 77 ++ .../src/vsensor_task_class.c | 133 ++ .../src/vsensor_task_comm.c | 728 ++++++++++ .../vsensormgr_service/src/vsensor_task_mgr.c | 42 + .../src/vsensormgr_service.c | 262 ++++ .../hsensor/acc_simulator/CMakeLists.txt | 57 + .../hsensor/acc_simulator/acc_simulator.c | 148 ++ .../sensors/hsensor/barometer/CMakeLists.txt | 57 + .../sensors/hsensor/barometer/barometer.c | 105 ++ .../sensors/hsensor/gyroscope/CMakeLists.txt | 57 + .../sensors/hsensor/gyroscope/gyroscope.c | 105 ++ .../hsensor/heart_rate_counter/CMakeLists.txt | 57 + .../heart_rate_counter/heart_rate_counter.c | 99 ++ .../sensors/hsensor/pedometer/CMakeLists.txt | 57 + .../sensors/hsensor/pedometer/pedometer.c | 97 ++ .../hsensor/wear_detection/CMakeLists.txt | 57 + .../hsensor/wear_detection/wear_detection.c | 97 ++ .../vsensor/acc_alg_simulator/CMakeLists.txt | 58 + .../acc_alg_simulator/acc_alg_simulator.c | 227 ++++ .../vsensor/common/include/vsensor_common.h | 21 + .../sensor/interfaces/include/sensor_if.h | 59 +- .../sensor/interfaces/include/sensor_type.h | 136 +- .../aafwk_lite/brandy-auto-ota-cli/libams.a | Bin 180076 -> 180480 bytes .../aafwk_lite/brandy-auto-ota-ser/libams.a | Bin 180076 -> 180480 bytes .../aafwk_lite/brandy-native-js/libams.a | Bin 180076 -> 180480 bytes .../aafwk/aafwk_lite/brandy-xts/libams.a | Bin 180076 -> 180480 bytes .../ace/ace_engine_lite/CMakeLists.txt | 393 +++++- .../ace_ext/list_adapter_ext.h | 51 + .../ace_ext/list_ext_component.h | 55 + .../ace_ext/menu_item_component.h | 35 + .../ace_ext/scroll_component.h | 36 + .../ace/ace_engine_lite/base/keys.h | 11 + .../brandy-auto-ota-cli/libace.a | Bin 545436 -> 547706 bytes .../brandy-auto-ota-cli/libace_ble.a | Bin 0 -> 677354 bytes .../brandy-auto-ota-cli/libace_ext.a | Bin 0 -> 73854 bytes .../brandy-auto-ota-cli/libace_http.a | Bin 71436 -> 78448 bytes .../brandy-auto-ota-cli/libace_websocket.a | Bin 0 -> 59366 bytes .../brandy-auto-ota-cli/libnetstack_http.a | Bin 49228 -> 64222 bytes .../brandy-auto-ota-cli/libwebsocket.a | Bin 417200 -> 64792 bytes .../brandy-auto-ota-ser/libace.a | Bin 545436 -> 547706 bytes .../brandy-auto-ota-ser/libace_ble.a | Bin 0 -> 677354 bytes .../brandy-auto-ota-ser/libace_ext.a | Bin 0 -> 73854 bytes .../brandy-auto-ota-ser/libace_http.a | Bin 71436 -> 78448 bytes .../brandy-auto-ota-ser/libace_websocket.a | Bin 0 -> 59366 bytes .../brandy-auto-ota-ser/libnetstack_http.a | Bin 49228 -> 64222 bytes .../brandy-auto-ota-ser/libwebsocket.a | Bin 417200 -> 64792 bytes .../ace_engine_lite/brandy-native-js/libace.a | Bin 545436 -> 547706 bytes .../brandy-native-js/libace_ble.a | Bin 0 -> 677354 bytes .../brandy-native-js/libace_ext.a | Bin 0 -> 73854 bytes .../brandy-native-js/libace_http.a | Bin 71436 -> 78448 bytes .../brandy-native-js/libace_websocket.a | Bin 0 -> 59366 bytes .../brandy-native-js/libnetstack_http.a | Bin 49228 -> 64222 bytes .../brandy-native-js/libwebsocket.a | Bin 417200 -> 64792 bytes .../brandy-target3/libnetstack_http.a | Bin 49228 -> 64222 bytes .../ace/ace_engine_lite/brandy-xts/libace.a | Bin 545436 -> 547706 bytes .../ace_engine_lite/brandy-xts/libace_ble.a | Bin 0 -> 677354 bytes .../ace_engine_lite/brandy-xts/libace_ext.a | Bin 0 -> 73854 bytes .../ace_engine_lite/brandy-xts/libace_http.a | Bin 71436 -> 78448 bytes .../brandy-xts/libace_websocket.a | Bin 0 -> 59366 bytes .../brandy-xts/libnetstack_http.a | Bin 49228 -> 64222 bytes .../ace_engine_lite/brandy-xts/libwebsocket.a | Bin 417200 -> 64792 bytes .../components/component_factory.h | 20 + .../components/component_utils.cpp | 4 + .../components/input_edittext_component.cpp | 6 + .../components/input_edittext_component.h | 2 +- .../components/list_adapter.cpp | 53 +- .../ace_engine_lite/components/list_adapter.h | 10 +- .../components/list_component.cpp | 23 + .../ace_engine_lite/context/js_ability_impl.h | 2 + .../include/context/js_ability.h | 2 + .../ace/ace_engine_lite/modules/app_module.h | 6 +- .../modules/baidumapcomponent/baidumap.cpp | 2 + .../modules/bluetooth/ble_module.h | 141 ++ .../modules/bluetooth/ble_module_common.h | 409 ++++++ .../calendarManager/calendar_manager.cpp | 988 ++++++++++++++ .../calendarManager/calendar_manager.h | 105 ++ .../calendarManager/calendar_module.cpp | 1194 +++++++++++++++++ .../modules/calendarManager/calendar_module.h | 104 ++ .../calendarManager/calendar_timer.cpp | 168 +++ .../modules/calendarManager/calendar_timer.h | 87 ++ .../modules/calendarManager/calendar_utils.h | 26 + .../calendarManager/event_id_manager.cpp | 475 +++++++ .../calendarManager/event_id_manager.h | 124 ++ .../modules/display/display.cpp | 2 + .../modules/geolocation_module.cpp | 134 +- .../modules/geolocation_module.h | 46 +- .../modules/http/http_callback.h | 62 + .../modules/http/http_module.h | 47 + .../modules/http/http_module_callback.h | 43 + .../modules/http/http_module_client.h | 123 ++ .../ace_engine_lite/modules/http_errcode.h | 18 +- .../netstack/http/include/httpclient.h | 38 + .../netstack/http/internal/http_form_data.h | 41 + .../netstack/http/internal/http_opts.h | 1 + .../netstack/http/internal/http_wrappers.h | 4 +- .../websocket/include/net_websocket_type.h | 5 +- .../websocket/internal/net_websocket_debug.h | 39 + .../websocket/internal/net_websocket_frame.h | 53 + .../websocket/internal/net_websocket_list.h | 28 + .../websocket/internal/net_websocket_opts.h | 22 + .../websocket/internal/net_websocket_priv.h | 127 ++ .../websocket/internal/net_websocket_string.h | 19 + .../websocket/internal/net_websocket_thread.h | 67 + .../connection_manage/connection_manage.cpp | 143 ++ .../connection_manage/connection_manage.h | 51 + .../modules/network/network_listener.cpp | 14 + .../modules/network/network_listener.h | 25 +- .../modules/network/network_module.cpp | 73 +- .../modules/network/network_module.h | 9 +- .../modules/ohos_module_config.h | 26 +- .../ace_engine_lite/modules/router_module.cpp | 40 + .../ace_engine_lite/modules/router_module.h | 1 + .../ace_engine_lite/modules/sensor_module.cpp | 331 +++-- .../ace_engine_lite/modules/sensor_module.h | 40 +- .../modules/watchface/watchface_module.cpp | 267 ++++ .../modules/watchface/watchface_module.h | 62 + .../modules/websocket/websocket_common.h | 29 + .../modules/websocket/websocket_module.h | 20 +- .../websocket/websocket_module_callback.h | 47 + .../websocket/websocket_module_client.h | 80 ++ .../ace/ace_engine_lite/router/js_router.h | 2 + .../brandy-auto-ota-cli/libbms.a | Bin 273946 -> 273946 bytes .../brandy-auto-ota-ser/libbms.a | Bin 273946 -> 273946 bytes .../appexecfwk_lite/brandy-native-js/libbms.a | Bin 273946 -> 273946 bytes .../audio_capturer_lite/recording_module.h | 29 +- .../player/interfaces/kits/player.h | 16 +- .../brandy-auto-ota-cli/libjerryscript.a | Bin 1309960 -> 1309960 bytes .../brandy-auto-ota-ser/libjerryscript.a | Bin 1309960 -> 1309960 bytes .../brandy-native-js/libjerryscript.a | Bin 1309960 -> 1309960 bytes .../jerryscript/brandy-xts/libjerryscript.a | Bin 1309960 -> 1309960 bytes .../third_party/lwip/CMakeLists.txt | 67 +- .../lwip_adapter/liteos/src/arch/sys_arch.c | 62 +- .../lwip_adapter/liteos/src/include/arch/cc.h | 1 + .../liteos/src/include/arch/sys_arch.h | 2 +- .../src/include/lwip/lwipopts_default.h | 120 +- .../lwip_driver_adapter/lwip_driver_adapter.c | 362 ++++- .../lwip_driver_adapter/lwip_driver_adapter.h | 68 +- .../lwip_driver_adapter/lwip_net_manage.c | 221 +++ .../lwip/lwip_v2.1.3/src/core/dns.c | 13 +- .../lwip/lwip_v2.1.3/src/core/ipv4/dhcp.c | 4 +- .../lwip/lwip_v2.1.3/src/core/netif.c | 3 +- .../lwip/lwip_v2.1.3/src/core/tcp_out.c | 4 +- .../lwip/lwip_v2.1.3/src/include/lwip/dhcp.h | 3 + .../lwip/lwip_v2.1.3/src/include/lwip/dhcp6.h | 2 + .../lwip/lwip_v2.1.3/src/include/lwip/dns.h | 2 + .../lwip_v2.1.3/src/include/lwip/etharp.h | 2 + .../lwip/lwip_v2.1.3/src/include/lwip/igmp.h | 12 +- .../lwip_v2.1.3/src/include/lwip/ip4_frag.h | 2 + .../lwip_v2.1.3/src/include/lwip/ip6_frag.h | 2 + .../lwip/lwip_v2.1.3/src/include/lwip/mld6.h | 2 + .../lwip/lwip_v2.1.3/src/include/lwip/nd6.h | 2 + .../js/builtin/filekit/include/nativeapi_fs.h | 2 +- .../js/builtin/filekit/src/nativeapi_fs.cpp | 119 +- 226 files changed, 16581 insertions(+), 817 deletions(-) create mode 100644 code/sdk/open_source/openharmony/base/security/huks/frameworks/crypto_lite/cipher/src/cipher_base64.c create mode 100644 code/sdk/open_source/openharmony/base/security/huks/frameworks/crypto_lite/cipher/src/cipher_hmac_sha256.c create mode 100644 code/sdk/open_source/openharmony/base/security/huks/frameworks/crypto_lite/cipher/src/cipher_md5.c create mode 100644 code/sdk/open_source/openharmony/base/security/huks/frameworks/crypto_lite/cipher/src/cipher_nv_store.c create mode 100644 "code/sdk/open_source/openharmony/base/startup/syspara_lite/src/\346\226\207\344\273\266\345\244\2711201patch\345\220\210\345\271\266\346\217\220\344\272\244" create mode 100644 code/sdk/open_source/openharmony/drivers/peripheral/sensor/CMakeLists.txt create mode 100644 code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/CMakeLists.txt create mode 100644 code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/include/sensor_common.h create mode 100644 code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/include/sensor_manager.h create mode 100644 code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/include/sensor_typedef.h create mode 100644 code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/hsensor_data_service/include/hsensor_data_service.h create mode 100644 code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/hsensor_data_service/src/hsensor_data_service.c create mode 100644 code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/hsensormgr_service/include/hsensormgr_service.h create mode 100644 code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/hsensormgr_service/src/hsensormgr_service.c create mode 100644 code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/sensor_interface_impl.c create mode 100644 code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/sensor_manager.c create mode 100644 code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/task/include/sensor_task.h create mode 100644 code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/task/include/sensor_tmsg.h create mode 100644 code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/task/src/sensor_task.c create mode 100644 code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/task/src/sensor_tmsg.c create mode 100644 code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/utils/include/sensor_memory.h create mode 100644 code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/utils/include/sensor_msgqueue.h create mode 100644 code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/utils/include/sensor_para_decision.h create mode 100644 code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/utils/include/sensor_state.h create mode 100644 code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/utils/include/sensor_thread.h create mode 100644 code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/utils/include/sensor_utils.h create mode 100644 code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/utils/src/sensor_log.c create mode 100644 code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/utils/src/sensor_memory.c create mode 100644 code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/utils/src/sensor_msgqueue.c create mode 100644 code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/utils/src/sensor_para_decision.c create mode 100644 code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/utils/src/sensor_state.c create mode 100644 code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/utils/src/sensor_thread.c create mode 100644 code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/utils/src/sensor_utils.c create mode 100644 code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/vsensormgr_service/include/vsensor_task_mgr.h create mode 100644 code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/vsensormgr_service/include/vsensormgr_service.h create mode 100644 code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/vsensormgr_service/src/vsensor_task_common/include/vsensor_task_class.h create mode 100644 code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/vsensormgr_service/src/vsensor_task_common/include/vsensor_task_comm.h create mode 100644 code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/vsensormgr_service/src/vsensor_task_common/src/vsensor_task_class.c create mode 100644 code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/vsensormgr_service/src/vsensor_task_common/src/vsensor_task_comm.c create mode 100644 code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/vsensormgr_service/src/vsensor_task_mgr.c create mode 100644 code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/vsensormgr_service/src/vsensormgr_service.c create mode 100644 code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensors/hsensor/acc_simulator/CMakeLists.txt create mode 100644 code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensors/hsensor/acc_simulator/acc_simulator.c create mode 100644 code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensors/hsensor/barometer/CMakeLists.txt create mode 100644 code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensors/hsensor/barometer/barometer.c create mode 100644 code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensors/hsensor/gyroscope/CMakeLists.txt create mode 100644 code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensors/hsensor/gyroscope/gyroscope.c create mode 100644 code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensors/hsensor/heart_rate_counter/CMakeLists.txt create mode 100644 code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensors/hsensor/heart_rate_counter/heart_rate_counter.c create mode 100644 code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensors/hsensor/pedometer/CMakeLists.txt create mode 100644 code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensors/hsensor/pedometer/pedometer.c create mode 100644 code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensors/hsensor/wear_detection/CMakeLists.txt create mode 100644 code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensors/hsensor/wear_detection/wear_detection.c create mode 100644 code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensors/vsensor/acc_alg_simulator/CMakeLists.txt create mode 100644 code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensors/vsensor/acc_alg_simulator/acc_alg_simulator.c create mode 100644 code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensors/vsensor/common/include/vsensor_common.h create mode 100644 code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/ace_ext/list_adapter_ext.h create mode 100644 code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/ace_ext/list_ext_component.h create mode 100644 code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/ace_ext/menu_item_component.h create mode 100644 code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/ace_ext/scroll_component.h create mode 100644 code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/brandy-auto-ota-cli/libace_ble.a create mode 100644 code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/brandy-auto-ota-cli/libace_ext.a create mode 100644 code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/brandy-auto-ota-cli/libace_websocket.a create mode 100644 code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/brandy-auto-ota-ser/libace_ble.a create mode 100644 code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/brandy-auto-ota-ser/libace_ext.a create mode 100644 code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/brandy-auto-ota-ser/libace_websocket.a create mode 100644 code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/brandy-native-js/libace_ble.a create mode 100644 code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/brandy-native-js/libace_ext.a create mode 100644 code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/brandy-native-js/libace_websocket.a create mode 100644 code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/brandy-xts/libace_ble.a create mode 100644 code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/brandy-xts/libace_ext.a create mode 100644 code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/brandy-xts/libace_websocket.a create mode 100644 code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/bluetooth/ble_module.h create mode 100644 code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/bluetooth/ble_module_common.h create mode 100644 code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/calendarManager/calendar_manager.cpp create mode 100644 code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/calendarManager/calendar_manager.h create mode 100644 code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/calendarManager/calendar_module.cpp create mode 100644 code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/calendarManager/calendar_module.h create mode 100644 code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/calendarManager/calendar_timer.cpp create mode 100644 code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/calendarManager/calendar_timer.h create mode 100644 code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/calendarManager/calendar_utils.h create mode 100644 code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/calendarManager/event_id_manager.cpp create mode 100644 code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/calendarManager/event_id_manager.h create mode 100644 code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/http/http_callback.h create mode 100644 code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/http/http_module.h create mode 100644 code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/http/http_module_callback.h create mode 100644 code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/http/http_module_client.h create mode 100644 code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/netstack/http/internal/http_form_data.h create mode 100644 code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/netstack/websocket/internal/net_websocket_debug.h create mode 100644 code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/netstack/websocket/internal/net_websocket_frame.h create mode 100644 code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/netstack/websocket/internal/net_websocket_list.h create mode 100644 code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/netstack/websocket/internal/net_websocket_opts.h create mode 100644 code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/netstack/websocket/internal/net_websocket_priv.h create mode 100644 code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/netstack/websocket/internal/net_websocket_string.h create mode 100644 code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/netstack/websocket/internal/net_websocket_thread.h create mode 100644 code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/network/connection_manage/connection_manage.cpp create mode 100644 code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/network/connection_manage/connection_manage.h create mode 100644 code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/network/network_listener.cpp create mode 100644 code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/watchface/watchface_module.cpp create mode 100644 code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/watchface/watchface_module.h create mode 100644 code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/websocket/websocket_common.h create mode 100644 code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/websocket/websocket_module_callback.h create mode 100644 code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/websocket/websocket_module_client.h create mode 100644 code/sdk/open_source/openharmony/third_party/lwip/lwip_adapter/lwip_driver_adapter/lwip_net_manage.c diff --git a/code/sdk/open_source/openharmony/CMakeLists.txt b/code/sdk/open_source/openharmony/CMakeLists.txt index b900aa71a..d71bd4fbf 100644 --- a/code/sdk/open_source/openharmony/CMakeLists.txt +++ b/code/sdk/open_source/openharmony/CMakeLists.txt @@ -9,9 +9,6 @@ if (DEFINES MATCHES "ENABLE_UIKIT") add_subdirectory_with_alias_if_exist(third_party/qrcodegen ${PROJECT_BINARY_DIR}/qrcodegen) add_subdirectory_with_alias_if_exist(third_party/icu ${PROJECT_BINARY_DIR}/icu) add_subdirectory_with_alias_if_exist(third_party/harfbuzz ${PROJECT_BINARY_DIR}/harfbuzz) -endif() - -if (DEFINES MATCHES "XTS_SUPPORT") add_subdirectory_with_alias_if_exist(third_party/libjpeg ${PROJECT_BINARY_DIR}/libjpeg) add_subdirectory_with_alias_if_exist(third_party/zlib ${PROJECT_BINARY_DIR}/zlib) add_subdirectory_with_alias_if_exist(third_party/libpng ${PROJECT_BINARY_DIR}/libpng) @@ -37,7 +34,7 @@ add_subdirectory_with_alias_if_exist(base/global/resmgr_lite ${PROJECT_BINARY_DI add_subdirectory_with_alias_if_exist(base/sensors/location ${PROJECT_BINARY_DIR}/ohos/location) add_subdirectory_with_alias_if_exist(drivers/peripheral/location ${PROJECT_BINARY_DIR}/ohos/location_hdi) add_subdirectory_with_alias_if_exist(base/sensors ${PROJECT_BINARY_DIR}/ohos/sensors) -add_subdirectory_with_alias_if_exist(drivers/peripheral/sensor/hal ${PROJECT_BINARY_DIR}/ohos/sensor_hdi) +add_subdirectory_with_alias_if_exist(drivers/peripheral/sensor/ ${PROJECT_BINARY_DIR}/ohos/sensor_hdi) add_subdirectory_with_alias_if_exist(utils/native/lite/file ${PROJECT_BINARY_DIR}/ohos/file) add_subdirectory_with_alias_if_exist(utils/native/lite/kv_store ${PROJECT_BINARY_DIR}/ohos/kv_store) add_subdirectory_with_alias_if_exist(utils/native/lite/js/builtin ${PROJECT_BINARY_DIR}/ohos/storage_jsi) diff --git a/code/sdk/open_source/openharmony/base/global/resmgr_lite/frameworks/resmgr_lite/src/global_utils.c b/code/sdk/open_source/openharmony/base/global/resmgr_lite/frameworks/resmgr_lite/src/global_utils.c index 64f99c85e..92f90a5a6 100644 --- a/code/sdk/open_source/openharmony/base/global/resmgr_lite/frameworks/resmgr_lite/src/global_utils.c +++ b/code/sdk/open_source/openharmony/base/global/resmgr_lite/frameworks/resmgr_lite/src/global_utils.c @@ -28,7 +28,7 @@ #include #define MAX_ID_ITEM_NUM 0x7F -#define MAX_RES_CONFIG_NUM 0x10 +#define MAX_RES_CONFIG_NUM 0x46 #define MAX_ITEM_LENGTH 0xFF enum LocaleIndex { diff --git a/code/sdk/open_source/openharmony/base/security/appverify/app_mbedtls_pkcs7.c b/code/sdk/open_source/openharmony/base/security/appverify/app_mbedtls_pkcs7.c index f966b0ba5..0ea20e80d 100644 --- a/code/sdk/open_source/openharmony/base/security/appverify/app_mbedtls_pkcs7.c +++ b/code/sdk/open_source/openharmony/base/security/appverify/app_mbedtls_pkcs7.c @@ -4,7 +4,7 @@ * 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 + * 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, @@ -15,12 +15,13 @@ #include "mbedtls_pkcs7.h" #include -#include -#include -#include +#include #include #include +#include +#include #include +#include #include "app_common.h" #include "securec.h" #include "mbedtls/platform.h" @@ -28,6 +29,8 @@ #include #include #include +#include "mbedtls/x509_crt.h" +#include "mbedtls/oid.h" #include "mbedtls/entropy.h" #include "mbedtls/ctr_drbg.h" #include @@ -36,12 +39,10 @@ #include "log.h" #include "nv.h" -/* - * below pkcs-7 and pkcs-9 oid definition is not defined in mbedtls now - * pkcs-7 OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) 7 } - */ +#define VERIFY_BUF_LEN 512 + #ifndef MBEDTLS_OID_PKCS7 -#define MBEDTLS_OID_PKCS7 MBEDTLS_OID_PKCS "\x07" +#define MBEDTLS_OID_PKCS7 MBEDTLS_OID_PKCS "\x07" #endif #ifndef MBEDTLS_OID_PKCS7_DATA @@ -60,7 +61,7 @@ #define PEM_FORMAT_SINGED_DATA 1 #define DER_FORMAT_SINGED_DATA 2 -#define PKCS7_ERR_GOTO_OUT(rc) \ +#define PKCS7_ERR_RETURN_WITH_LOG(rc) \ do { \ if ((rc) != PKCS7_SUCC) \ { \ @@ -69,9 +70,25 @@ } \ } while (0) +#define OEM_CERT_PATH "/user/app/user/certcfg/" + +/* hardcoded public key */ +static const char ROOT_CA_OEM_PUBKEY_IN_PEM[] = + "-----BEGIN PUBLIC KEY-----\r\n" + "MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAvnjlpcsSvEOhMfYwrW/Y\r\n" + "ExDmXL47SkbomiorGtdF63J2Vkgs2/HTxhUKBkIvSPbGRTR+io8rAo2J3oz1U48m\r\n" + "+M/+yIszIYC2s+tW64v8NuxLwMFFeg7+cud07/FwfJYYIRvyDQVduwV0VwvkTQy+\r\n" + "4/n5m+zJEHNheCakEEmFXn7vXUzxlSVSji5cHbGZ2ZzdmettLMc88tv/Kq8X3rgM\r\n" + "KQkngVylO4p93UvzY9hIAh9heL5VWMVOj241p3RojavIofODIeF7Vti2DjJjvbPW\r\n" + "igV0M9C0wLlZzMTQwoZbZT8mKsHkXW3XdTgc8ccD7RioeQa9MOlLKFbnJQLYNKr+\r\n" + "WsGDTFO2iHQmRAIGGuvWnxZIGS5Ho+ZUntdIYAvH8ww+36eFOwNp5cb1/ZjZmQ4c\r\n" + "p0zTw3zF8mSEieToMgIgz19wc9hvYgMPLlZpzFZklg8tJenJvcNpk5/3saEmpV6R\r\n" + "gGZ0IrmT/5h3Z/49W86Dv3b2ro4zb/sqtLufDqGoF3IDAgMBAAE=\r\n" + "-----END PUBLIC KEY-----\r\n"; + static mbedtls_x509_crt g_rootCaG2Cert; static bool g_rootCertLoaded; -static const unsigned char g_rootCaG2CertInPem[] = +static const unsigned char ROOT_CA_G2_CERT_IN_PEM[] = "-----BEGIN CERTIFICATE-----\r\n" "MIICGjCCAaGgAwIBAgIIShhpn519jNAwCgYIKoZIzj0EAwMwUzELMAkGA1UEBhMC\r\n" "Q04xDzANBgNVBAoMBkh1YXdlaTETMBEGA1UECwwKSHVhd2VpIENCRzEeMBwGA1UE\r\n" @@ -89,7 +106,7 @@ static const unsigned char g_rootCaG2CertInPem[] = static mbedtls_x509_crt g_debugModeRootCert; static bool g_debugModeEnabled; -static const unsigned char g_debugModeRootCertInPem[] = +static const unsigned char DEBUG_MODE_ROOT_CERT_IN_PEM[] = "-----BEGIN CERTIFICATE-----\r\n" "MIICJTCCAaugAwIBAgIIb/9KnVieVTgwCgYIKoZIzj0EAwMwWDELMAkGA1UEBhMC\r\n" "Q04xDzANBgNVBAoMBkh1YXdlaTETMBEGA1UECwwKSHVhd2VpIENCRzEjMCEGA1UE\r\n" @@ -122,19 +139,13 @@ static const unsigned char OHOS_ROOT_CERT_IN_PEM[] = "1CumzkcYhgU=\r\n" "-----END CERTIFICATE-----\r\n"; -#define VERIFY_BUF_LEN 512 -#define MAX_CERTPATH_LEN 256 -#define OEM_CERT_PATH "/user/app/user/certcfg/" +static CertVerifyCache g_certCache = {0}; +static bool g_cacheValid = false; static void *Pkcs7Calloc(size_t nmemb, size_t size) { -#if (RUNNING_BOARD == LITE_WEARABLE) - void *ptr = PSRAM_Malloc(nmemb * size); - if (ptr == NULL) { - return NULL; - } - (void)memset_s(ptr, nmemb * size, 0, nmemb * size); - return ptr; +#ifdef LITEWEARABLE_SUPPORT_ENABLED + return APPV_CALLOC(nmemb, size); #else return calloc(nmemb, size); #endif @@ -142,29 +153,14 @@ static void *Pkcs7Calloc(size_t nmemb, size_t size) static void Pkcs7Free(void *ptr) { -#if (RUNNING_BOARD == LITE_WEARABLE) - PSRAM_Free(ptr); +#ifdef LITEWEARABLE_SUPPORT_ENABLED + APPV_FREE(ptr); #else free(ptr); #endif } - -#ifdef MARKET_ENABLE +#ifdef OH_MARKET_ENABLE #define DIALMARKET_PUBKEY_PATH "/user/dialpubkey" -/* hardcoded public key */ -static const char ROOT_CA_OEM_PUBKEY_IN_PEM[] = - "-----BEGIN PUBLIC KEY-----\r\n" - "MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAvnjlpcsSvEOhMfYwrW/Y\r\n" - "ExDmXL47SkbomiorGtdF63J2Vkgs2/HTxhUKBkIvSPbGRTR+io8rAo2J3oz1U48m\r\n" - "+M/+yIszIYC2s+tW64v8NuxLwMFFeg7+cud07/FwfJYYIRvyDQVduwV0VwvkTQy+\r\n" - "4/n5m+zJEHNheCakEEmFXn7vXUzxlSVSji5cHbGZ2ZzdmettLMc88tv/Kq8X3rgM\r\n" - "KQkngVylO4p93UvzY9hIAh9heL5VWMVOj241p3RojavIofODIeF7Vti2DjJjvbPW\r\n" - "igV0M9C0wLlZzMTQwoZbZT8mKsHkXW3XdTgc8ccD7RioeQa9MOlLKFbnJQLYNKr+\r\n" - "WsGDTFO2iHQmRAIGGuvWnxZIGS5Ho+ZUntdIYAvH8ww+36eFOwNp5cb1/ZjZmQ4c\r\n" - "p0zTw3zF8mSEieToMgIgz19wc9hvYgMPLlZpzFZklg8tJenJvcNpk5/3saEmpV6R\r\n" - "gGZ0IrmT/5h3Z/49W86Dv3b2ro4zb/sqtLufDqGoF3IDAgMBAAE=\r\n" - "-----END PUBLIC KEY-----\r\n"; - static const unsigned char g_dialRootCertInPem[] = "-----BEGIN CERTIFICATE-----\r\n" "MIIEsTCCAxmgAwIBAgIUdJ4u/0ct0XJHZphCzmBQQddboC4wDQYJKoZIhvcNAQEL\r\n" @@ -495,7 +491,7 @@ cleanup: return ret; } -int32_t PKCS7_GenerateECCKeypair() +int32_t PKCS7_GenerateECCKeypair(void) { unsigned char clientPubKey[ECC_PEN_KEY_LEN]; EcdhEntity client = {0}; @@ -548,7 +544,8 @@ int32_t PKCS7_GenerateECCKeypair() HILOG_ERROR(HILOG_MODULE_AAFWK, "Failed to GetClientECCPubKey!\n"); goto cleanup; } - if (CreateCubdirAndFile(DIALMARKET_PUBKEY_PATH, pubKeyFileName, clientPubKey, strlen(clientPubKey)) != 0) { + if (CreateCubdirAndFile(DIALMARKET_PUBKEY_PATH, (const char*)pubKeyFileName, + clientPubKey, strlen((const char*)clientPubKey)) != 0) { HILOG_ERROR(HILOG_MODULE_AAFWK, "Public key write failed!"); ret = MBEDTLS_ERR_PK_FILE_IO_ERROR; goto cleanup; @@ -920,77 +917,546 @@ cleanup: memset_s(eccWorkKey, AES_KEY_LEN, 0, AES_KEY_LEN); return ret; } +#endif -static int32_t VerifyHashList() +static void FreeCertVerifyCache(CertVerifyCache *cache) { - int32_t rc = 0; - const char *hashListFile = OEM_CERT_PATH"root_cert_hash_list.bin"; - const char *signatureFile = OEM_CERT_PATH"hash_list_sign.bin"; - unsigned char hash[SHA256_HASH_SIZE]; - mbedtls_pk_context pk; - FILE *file = fopen(hashListFile, "rb"); + if (cache == NULL) return; + + if (cache->hashListData != NULL) { + Pkcs7Free(cache->hashListData); + cache->hashListData = NULL; + } + cache->hashListSize = 0; + cache->verifyTime = 0; + g_cacheValid = false; +} + +/** + * 计算文件的SHA256哈希值(与openssl dgst -sha256兼容) + * @param filePath 文件路径 + * @param hash 输出二进制哈希值(32字节) + * @param hexHash 输出十六进制哈希字符串(65字节,包含终止符) + * @return 成功返回PKCS7_SUCC,失败返回错误码 + */ +static int32_t CalculateFileSha256(const char *filePath, unsigned char *hash, char *hexHash) +{ + if (filePath == NULL || hash == NULL || hexHash == NULL) { + HILOG_ERROR(HILOG_MODULE_AAFWK, "Invalid parameters to CalculateFileSha256"); + return PKCS7_INVALID_PARAM; + } + + FILE *file = NULL; + mbedtls_sha256_context sha256Ctx; + unsigned char *buffer = NULL; + size_t bufferSize = 4096; // 4KB缓冲区 + size_t bytesRead; + int32_t rc = PKCS7_SUCC; + const char *hexChars = "0123456789abcdef"; + + // 分配堆内存缓冲区 + buffer = Pkcs7Calloc(bufferSize, sizeof(unsigned char)); + if (buffer == NULL) { + HILOG_ERROR(HILOG_MODULE_AAFWK, "Failed to allocate buffer for file reading"); + return PKCS7_MEMORY_EXHAUST; + } + + file = fopen(filePath, "rb"); if (!file) { - HILOG_ERROR(HILOG_MODULE_AAFWK, "Failed to open file to verify."); - return PKCS7_VERIFY_FAIL; + HILOG_ERROR(HILOG_MODULE_AAFWK, "Failed to open file: %s", filePath); + rc = PKCS7_FILE_OPERATION_FAIL; + goto cleanup; } - rc = fseek(file, 0, SEEK_END); - if (rc != 0) { - rc = PKCS7_HAS_NO_SIGNER_CRT; - goto exit; + + mbedtls_sha256_init(&sha256Ctx); + + // 初始化SHA256上下文(0表示SHA-256,1表示SHA-224) + if (mbedtls_sha256_starts(&sha256Ctx, 0) != 0) { + HILOG_ERROR(HILOG_MODULE_AAFWK, "Failed to initialize SHA256 context"); + rc = PKCS7_INVALID_VALUE; + goto cleanup; } - long fileSize = ftell(file); - rc = fseek(file, 0, SEEK_SET); - if (rc != 0 || fileSize > INT_MAX) { - rc = PKCS7_HAS_NO_SIGNER_CRT; - goto exit; + + // 读取文件并更新哈希 + while ((bytesRead = fread(buffer, 1, bufferSize, file)) > 0) { + if (mbedtls_sha256_update(&sha256Ctx, buffer, bytesRead) != 0) { + HILOG_ERROR(HILOG_MODULE_AAFWK, "Failed to update SHA256 hash"); + rc = PKCS7_INVALID_VALUE; + goto cleanup; + } } - unsigned char *fileData = Pkcs7Calloc(fileSize, sizeof(char)); - if (!fileData) { - rc = PKCS7_HAS_NO_SIGNER_CRT; - goto exit; + + // 检查文件读取错误 + if (ferror(file)) { + HILOG_ERROR(HILOG_MODULE_AAFWK, "Error reading file: %s", filePath); + rc = PKCS7_FILE_OPERATION_FAIL; + goto cleanup; } - int32_t fileLen = fread(fileData, 1, fileSize, file); - if (fileLen != fileSize) { - rc = PKCS7_HAS_NO_SIGNER_CRT; - goto exit; + + // 完成哈希计算 + if (mbedtls_sha256_finish(&sha256Ctx, hash) != 0) { + HILOG_ERROR(HILOG_MODULE_AAFWK, "Failed to finalize SHA256 hash"); + rc = PKCS7_INVALID_VALUE; + goto cleanup; } - mbedtls_pk_init(&pk); - if ((rc = mbedtls_pk_parse_public_key(&pk, (const unsigned char *)ROOT_CA_OEM_PUBKEY_IN_PEM, - strlen(ROOT_CA_OEM_PUBKEY_IN_PEM) + 1)) != 0) { - rc = PKCS7_HAS_NO_SIGNER_CRT; - goto exit; + + // 转换为十六进制字符串(与openssl输出格式一致) + for (int i = 0; i < SHA256_HASH_SIZE; i++) { + hexHash[i * 2] = hexChars[(hash[i] >> 4) & 0x0F]; + hexHash[i * 2 + 1] = hexChars[hash[i] & 0x0F]; } - mbedtls_rsa_context *rsa = mbedtls_pk_rsa(pk); - mbedtls_rsa_set_padding(rsa, MBEDTLS_RSA_PKCS_V21, MBEDTLS_MD_SHA256); - FILE *sigFile = fopen(signatureFile, "rb"); - if (!sigFile) { - rc = PKCS7_HAS_NO_SIGNER_CRT; - goto exit; + hexHash[64] = '\0'; + +cleanup: + if (file) fclose(file); + if (buffer) Pkcs7Free(buffer); + mbedtls_sha256_free(&sha256Ctx); + return rc; +} + +// 十六进制哈希转换为二进制(使用安全函数) +static int32_t HexHashToBinary(const char *hexHash, unsigned char *binaryHash) +{ + if (hexHash == NULL || binaryHash == NULL) { + return PKCS7_INVALID_PARAM; } - unsigned char *signature = Pkcs7Calloc(RSA3072_SIG_SIZE, sizeof(char)); - if (!signature) { - rc = PKCS7_HAS_NO_SIGNER_CRT; - goto exit; + + for (size_t i = 0; i < SHA256_HASH_SIZE; i++) { + unsigned int byte = 0; + if (sscanf_s(hexHash + i * 2, "%2x", &byte) != 1) { + return PKCS7_INVALID_VALUE; + } + binaryHash[i] = (unsigned char)byte; } - if (fread(signature, 1, RSA3072_SIG_SIZE, sigFile) != RSA3072_SIG_SIZE) { - rc = PKCS7_VERIFY_FAIL; - goto exit; + return PKCS7_SUCC; +} + +// 解析单行哈希条目 +static int32_t ParseHashLine(const char *line, size_t lineLen, CertHashEntry *entry) +{ + if (line == NULL || entry == NULL) { + return PKCS7_INVALID_PARAM; } - mbedtls_sha256(fileData, fileSize, hash, 0); - rc = mbedtls_pk_verify(&pk, MBEDTLS_MD_SHA256, hash, SHA256_HASH_SIZE, signature, RSA3072_SIG_SIZE); - if (rc != 0) { - HILOG_ERROR(HILOG_MODULE_AAFWK, "mbedtls_pk_verify failed! return %d\n", rc); - goto exit; + + const char *colon = memchr(line, ':', lineLen); + if (colon == NULL || colon <= line || colon >= line + lineLen - 1) { + return PKCS7_INVALID_VALUE; } -exit: - if (file) { + + size_t nameLen = colon - line; + size_t hashHexLen = line + lineLen - colon - 1; + + // 跳过可能的回车符 + if (hashHexLen > 0 && *(colon + hashHexLen) == '\r') { + hashHexLen--; + } + + if (hashHexLen != 64) { + return PKCS7_INVALID_VALUE; + } + + // 分配证书名内存 + entry->certName = Pkcs7Calloc(nameLen + 1, 1); + if (entry->certName == NULL) { + return PKCS7_MEMORY_EXHAUST; + } + + // 复制证书名 + if (memcpy_s(entry->certName, nameLen + 1, line, nameLen) != EOK) { + Pkcs7Free(entry->certName); + entry->certName = NULL; + return PKCS7_INVALID_VALUE; + } + entry->certName[nameLen] = '\0'; + + // 复制哈希十六进制字符串 + if (memcpy_s(entry->hashHex, sizeof(entry->hashHex), colon + 1, hashHexLen) != EOK) { + Pkcs7Free(entry->certName); + entry->certName = NULL; + return PKCS7_INVALID_VALUE; + } + entry->hashHex[hashHexLen] = '\0'; + entry->hashHexLen = hashHexLen; + + // 转换为二进制哈希 + return HexHashToBinary(entry->hashHex, entry->hash); +} + +// 十六进制哈希转换为二进制 +/** + * 解析哈希列表文本格式(证书文件名:哈希值) + * 格式示例:cert.pem:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 + */ +int32_t ParseHashListTextFormat(const unsigned char *data, size_t dataLen, CertHashList *hashList) +{ + if (data == NULL || dataLen == 0 || hashList == NULL) { + return PKCS7_INVALID_PARAM; + } + + const char *start = (const char *)data; + const char *end = start + dataLen; + const char *ptr = start; + size_t lineCount = 0; + + // 计算行数 + while (ptr < end) { + const char *lineEnd = memchr(ptr, '\n', end - ptr); + if (lineEnd == NULL) { + if (ptr < end) lineCount++; + break; + } + if (lineEnd > ptr) lineCount++; + ptr = lineEnd + 1; + } + + if (lineCount == 0) { + return PKCS7_INVALID_VALUE; + } + + // 分配内存 + hashList->entries = Pkcs7Calloc(lineCount, sizeof(CertHashEntry)); + if (hashList->entries == NULL) { + return PKCS7_MEMORY_EXHAUST; + } + + hashList->count = 0; + hashList->capacity = lineCount; + + // 解析每行 + ptr = start; + size_t index = 0; + + while (ptr < end && index < lineCount) { + const char *lineEnd = memchr(ptr, '\n', end - ptr); + if (lineEnd == NULL) lineEnd = end; + + size_t lineLen = lineEnd - ptr; + if (lineLen > 0) { + int32_t rc = ParseHashLine(ptr, lineLen, &hashList->entries[index]); + if (rc == PKCS7_SUCC) { + hashList->count++; + index++; + } + } + ptr = lineEnd + 1; + } + + return (hashList->count > 0) ? PKCS7_SUCC : PKCS7_INVALID_VALUE; +} + +static void FreeCertHashList(CertHashList *hashList) +{ + if (hashList == NULL) return; + + if (hashList->entries != NULL) { + for (size_t i = 0; i < hashList->count; i++) { + if (hashList->entries[i].certName != NULL) { + Pkcs7Free(hashList->entries[i].certName); + hashList->entries[i].certName = NULL; + } + } + Pkcs7Free(hashList->entries); + hashList->entries = NULL; + } + hashList->count = 0; + hashList->capacity = 0; +} + +// 解析hash列表文件内容 +static int32_t ParseHashListContent(const unsigned char *data, size_t dataLen, + char ***certNames, unsigned char **certHashes, + size_t *certCount) +{ + if (data == NULL || dataLen == 0 || certNames == NULL || + certHashes == NULL || certCount == NULL) { + return PKCS7_INVALID_PARAM; + } + HILOG_INFO(HILOG_MODULE_AAFWK, "ParseHashListContent: dataLen=%zu", dataLen); + // 简单的行解析逻辑,实际应根据具体格式调整 + size_t count = 0; + const char *start = (const char *)data; + const char *end = start + dataLen; + + // 第一遍:计算行数 + const char *ptr = start; + while (ptr < end) { + const char *lineEnd = memchr(ptr, '\n', end - ptr); + if (lineEnd == NULL) break; + if (lineEnd > ptr) count++; + ptr = lineEnd + 1; + } + HILOG_INFO(HILOG_MODULE_AAFWK, "Found %zu lines in hash list", count); + if (count == 0) { + HILOG_ERROR(HILOG_MODULE_AAFWK, "No valid lines found in hash list"); + return PKCS7_INVALID_VALUE; + } + + *certNames = Pkcs7Calloc(count, sizeof(char *)); + *certHashes = Pkcs7Calloc(count, SHA256_HASH_SIZE); + if (*certNames == NULL || *certHashes == NULL) { + HILOG_ERROR(HILOG_MODULE_AAFWK, "Memory allocation failed for certNames or certHashes"); + if (*certNames) Pkcs7Free(*certNames); + if (*certHashes) Pkcs7Free(*certHashes); + return PKCS7_MEMORY_EXHAUST; + } + + // 第二遍:解析每行 + ptr = start; + size_t index = 0; + while (ptr < end && index < count) { + const char *lineEnd = memchr(ptr, '\n', end - ptr); + if (lineEnd == NULL) lineEnd = end; + + const char *colon = memchr(ptr, ':', lineEnd - ptr); + if (colon != NULL && colon > ptr && (lineEnd - colon - 1) >= SHA256_HASH_SIZE) { + // 解析证书文件名 + size_t nameLen = colon - ptr; + (*certNames)[index] = Pkcs7Calloc(nameLen + 1, 1); + if ((*certNames)[index] == NULL) { + // 清理已分配的内存 + for (size_t i = 0; i < index; i++) { + Pkcs7Free((*certNames)[i]); + } + Pkcs7Free(*certNames); + Pkcs7Free(*certHashes); + return PKCS7_MEMORY_EXHAUST; + } + int ret = memcpy_s((*certNames)[index], nameLen + 1, ptr, nameLen); + if (ret != 0) { + HILOG_ERROR(HILOG_MODULE_AAFWK, "Failed to copy certificate name, error: %d", ret); + // 清理已分配的内存 + Pkcs7Free((*certNames)[index]); + for (size_t i = 0; i < index; i++) { + Pkcs7Free((*certNames)[i]); + } + Pkcs7Free(*certNames); + Pkcs7Free(*certHashes); + return PKCS7_FILE_OPERATION_FAIL; + } + (*certNames)[index][nameLen] = '\0'; + + // 解析哈希值 + ret = memcpy_s(&(*certHashes)[index * SHA256_HASH_SIZE], SHA256_HASH_SIZE, colon + 1, SHA256_HASH_SIZE); + if (ret != 0) { + HILOG_ERROR(HILOG_MODULE_AAFWK, "Failed to copy certificate hash, error: %d", ret); + // 清理已分配的内存 + Pkcs7Free((*certNames)[index]); + for (size_t i = 0; i < index; i++) { + Pkcs7Free((*certNames)[i]); + } + Pkcs7Free(*certNames); + Pkcs7Free(*certHashes); + return PKCS7_FILE_OPERATION_FAIL; + } + index++; + } + + ptr = lineEnd + 1; + } + + *certCount = index; + return PKCS7_SUCC; +} + +// 读取哈希列表文件 +static int32_t ReadHashListFile(const char *hashListFile, unsigned char **fileData, long *fileSize) +{ + FILE *file = NULL; + int32_t rc = PKCS7_SUCC; + + if (hashListFile == NULL || fileData == NULL || fileSize == NULL) { + return PKCS7_INVALID_PARAM; + } + + file = fopen(hashListFile, "rb"); + if (!file) { + HILOG_ERROR(HILOG_MODULE_AAFWK, "Failed to open hash list file: %s", hashListFile); + return PKCS7_FILE_OPERATION_FAIL; + } + + if (fseek(file, 0, SEEK_END) != 0) { + fclose(file); + return PKCS7_FILE_OPERATION_FAIL; + } + + *fileSize = ftell(file); + if (fseek(file, 0, SEEK_SET) != 0 || *fileSize <= 0) { + fclose(file); + return PKCS7_FILE_OPERATION_FAIL; + } + + *fileData = Pkcs7Calloc(*fileSize + 1, sizeof(char)); + if (*fileData == NULL) { fclose(file); - file = NULL; + return PKCS7_MEMORY_EXHAUST; + } + + size_t bytesRead = fread(*fileData, 1, *fileSize, file); + fclose(file); + + if (bytesRead != (size_t)*fileSize) { + Pkcs7Free(*fileData); + *fileData = NULL; + return PKCS7_FILE_OPERATION_FAIL; } - if (sigFile) { + + (*fileData)[*fileSize] = '\0'; + return PKCS7_SUCC; +} + +// 读取签名文件 +static int32_t ReadSignatureFile(const char *signatureFile, unsigned char **signature) +{ + FILE *sigFile = NULL; + + if (signatureFile == NULL || signature == NULL) { + return PKCS7_INVALID_PARAM; + } + + sigFile = fopen(signatureFile, "rb"); + if (!sigFile) { + HILOG_ERROR(HILOG_MODULE_AAFWK, "Failed to open signature file: %s", signatureFile); + return PKCS7_FILE_OPERATION_FAIL; + } + + *signature = Pkcs7Calloc(RSA3072_SIG_SIZE, sizeof(char)); + if (*signature == NULL) { fclose(sigFile); - sigFile = NULL; + return PKCS7_MEMORY_EXHAUST; + } + + size_t sigLen = fread(*signature, 1, RSA3072_SIG_SIZE, sigFile); + fclose(sigFile); + + if (sigLen != RSA3072_SIG_SIZE) { + Pkcs7Free(*signature); + *signature = NULL; + return PKCS7_FILE_OPERATION_FAIL; + } + + return PKCS7_SUCC; +} + +// 验证哈希列表签名 +static int32_t VerifyHashListSignature(const unsigned char *fileData, long fileSize, + const unsigned char *signature) +{ + mbedtls_pk_context pk; + unsigned char hash[SHA256_HASH_SIZE]; + int32_t rc; + + if (fileData == NULL || fileSize <= 0 || signature == NULL) { + return PKCS7_INVALID_PARAM; } + + mbedtls_pk_init(&pk); + + rc = mbedtls_pk_parse_public_key(&pk, (const unsigned char *)ROOT_CA_OEM_PUBKEY_IN_PEM, + strlen(ROOT_CA_OEM_PUBKEY_IN_PEM) + 1); + if (rc != 0) { + HILOG_ERROR(HILOG_MODULE_AAFWK, "Public key parsing failed: -0x%04X", -rc); + mbedtls_pk_free(&pk); + return PKCS7_INVALID_PARAM; + } + + // 设置RSA填充模式 + if (mbedtls_pk_get_type(&pk) == MBEDTLS_PK_RSA) { + mbedtls_rsa_context *rsa = mbedtls_pk_rsa(pk); + mbedtls_rsa_set_padding(rsa, MBEDTLS_RSA_PKCS_V21, MBEDTLS_MD_SHA256); + } + + rc = mbedtls_sha256(fileData, fileSize, hash, 0); + if (rc != 0) { + HILOG_ERROR(HILOG_MODULE_AAFWK, "SHA256 calculation failed: -0x%04X", -rc); + mbedtls_pk_free(&pk); + return rc; + } + + rc = mbedtls_pk_verify(&pk, MBEDTLS_MD_SHA256, hash, SHA256_HASH_SIZE, + signature, RSA3072_SIG_SIZE); + if (rc != 0) { + HILOG_ERROR(HILOG_MODULE_AAFWK, "Signature verification failed: -0x%04X", -rc); + } + + mbedtls_pk_free(&pk); + return (rc == 0) ? PKCS7_SUCC : rc; +} + +static int32_t VerifyAndCacheHashList(CertVerifyCache *cache) +{ + int32_t rc = 0; + const char *hashListFile = OEM_CERT_PATH"root_cert_hash_list.bin"; + const char *signatureFile = OEM_CERT_PATH"hash_list_sign.bin"; + unsigned char *fileData = NULL; + unsigned char *signature = NULL; + unsigned char *cachedData = NULL; + long fileSize = 0; + + if (cache == NULL) { + HILOG_ERROR(HILOG_MODULE_AAFWK, "Invalid cache parameter"); + return PKCS7_INVALID_PARAM; + } + + // 检查缓存是否仍然有效 + if (g_cacheValid && cache->hashListData != NULL) { + struct stat st; + if (stat(hashListFile, &st) == 0 && st.st_mtime <= cache->verifyTime) { + HILOG_INFO(HILOG_MODULE_AAFWK, "Using cached hash list verification"); + return PKCS7_SUCC; + } + } + + // 清除旧缓存 + FreeCertVerifyCache(cache); + + // 读取哈希列表文件 + rc = ReadHashListFile(hashListFile, &fileData, &fileSize); + if (rc != PKCS7_SUCC) { + goto cleanup; + } + + // 读取签名文件 + rc = ReadSignatureFile(signatureFile, &signature); + if (rc != PKCS7_SUCC) { + goto cleanup; + } + + // 验证签名 + rc = VerifyHashListSignature(fileData, fileSize, signature); + if (rc != PKCS7_SUCC) { + goto cleanup; + } + + // 创建缓存数据的副本 + cachedData = Pkcs7Calloc(fileSize + 1, sizeof(char)); + if (cachedData == NULL) { + HILOG_ERROR(HILOG_MODULE_AAFWK, "Memory allocation failed for cache data"); + rc = PKCS7_MEMORY_EXHAUST; + goto cleanup; + } + + if (memcpy_s(cachedData, fileSize + 1, fileData, fileSize) != EOK) { + HILOG_ERROR(HILOG_MODULE_AAFWK, "Failed to copy cache data"); + rc = PKCS7_INVALID_VALUE; + goto cleanup; + } + cachedData[fileSize] = '\0'; + + // 设置缓存 + cache->hashListData = cachedData; + cache->hashListSize = fileSize; + cache->verifyTime = time(NULL); + + if (strcpy_s(cache->certDirPath, sizeof(cache->certDirPath), OEM_CERT_PATH) != EOK) { + HILOG_WARN(HILOG_MODULE_AAFWK, "Failed to copy certificate directory path"); + } + + g_cacheValid = true; + cachedData = NULL; // 所有权转移给cache,避免重复释放 + + HILOG_INFO(HILOG_MODULE_AAFWK, "Hash list verification successful"); + +cleanup: if (fileData) { Pkcs7Free(fileData); fileData = NULL; @@ -999,10 +1465,12 @@ exit: Pkcs7Free(signature); signature = NULL; } - mbedtls_pk_free(&pk); + if (cachedData) { + Pkcs7Free(cachedData); + cachedData = NULL; + } return rc; } -#endif /* valid digest alg now: sha256 sha384 sha512 */ static bool InvalidDigestAlg(const mbedtls_asn1_buf *alg) @@ -1012,8 +1480,8 @@ static bool InvalidDigestAlg(const mbedtls_asn1_buf *alg) MBEDTLS_OID_CMP(MBEDTLS_OID_DIGEST_ALG_SHA512, alg); } -static int32_t GetContentInfoType(unsigned char **p, const unsigned char *end, mbedtls_asn1_buf *contentType, - bool *hasContent) +static int32_t GetContentInfoType(unsigned char **p, const unsigned char *end, + mbedtls_asn1_buf *contentType, bool *hasContent) { size_t seqLen = 0; size_t len = 0; @@ -1272,36 +1740,36 @@ static int32_t ParseSignedDataSignerInfos(unsigned char **p, const unsigned char unsigned char *oneSignerEnd = NULL; /* parse one signer info */ rc = mbedtls_asn1_get_tag(p, end, &oneSignerLen, MBEDTLS_ASN1_CONSTRUCTED | MBEDTLS_ASN1_SEQUENCE); - PKCS7_ERR_GOTO_OUT(rc); + PKCS7_ERR_RETURN_WITH_LOG(rc); oneSignerEnd = *p + oneSignerLen; /* parse version */ rc = ParseSignerVersion(p, oneSignerEnd, signers); - PKCS7_ERR_GOTO_OUT(rc); + PKCS7_ERR_RETURN_WITH_LOG(rc); /* parse issuerAndSerialNum */ rc = ParseSignerIssuerAndSerialNum(p, oneSignerEnd, signers); - PKCS7_ERR_GOTO_OUT(rc); + PKCS7_ERR_RETURN_WITH_LOG(rc); /* parse digestAlgorithm */ rc = ParseSignerDigestAlg(p, oneSignerEnd, signers); - PKCS7_ERR_GOTO_OUT(rc); + PKCS7_ERR_RETURN_WITH_LOG(rc); /* parse authenticatedAttributes */ rc = ParseSignerAuthAttr(p, oneSignerEnd, signers); - PKCS7_ERR_GOTO_OUT(rc); + PKCS7_ERR_RETURN_WITH_LOG(rc); /* parse digestEncryptionAlgorithm */ rc = ParseSignerEncAlg(p, oneSignerEnd, signers); - PKCS7_ERR_GOTO_OUT(rc); + PKCS7_ERR_RETURN_WITH_LOG(rc); /* parse encryptedDigest */ rc = ParseSignerSignature(p, oneSignerEnd, signers); - PKCS7_ERR_GOTO_OUT(rc); + PKCS7_ERR_RETURN_WITH_LOG(rc); /* parse unauthenticatedAttributes */ rc = ParseSignerUnAuthAttr(p, oneSignerEnd, signers); - PKCS7_ERR_GOTO_OUT(rc); + PKCS7_ERR_RETURN_WITH_LOG(rc); if (*p < end) { signers->next = Pkcs7Calloc(1, sizeof(*signers)); @@ -1484,71 +1952,249 @@ static mbedtls_x509_crt *FindSuperCert(mbedtls_x509_crt *cur, mbedtls_x509_crt * return certsList; } -static int32_t LoadSelfSignedCert(void) +// 验证单个证书文件 +static int32_t VerifyCertificateFile(const char *certPath, const unsigned char *expectedHash, + mbedtls_x509_crt *topCert) { - mbedtls_x509_crt_init(&g_ohosRootCert); - int32_t rc = mbedtls_x509_crt_parse(&g_ohosRootCert, OHOS_ROOT_CERT_IN_PEM, sizeof(OHOS_ROOT_CERT_IN_PEM)); - if (rc) { - HILOG_ERROR(HILOG_MODULE_AAFWK,"load oh signed ca failed %d", rc); + unsigned char actualHash[SHA256_HASH_SIZE]; + char actualHashHex[65]; + int32_t rc; + + if (certPath == NULL || expectedHash == NULL || topCert == NULL) { + return PKCS7_INVALID_PARAM; + } + + // 计算文件哈希 + rc = CalculateFileSha256(certPath, actualHash, actualHashHex); + if (rc != PKCS7_SUCC) { return rc; - } else { - HILOG_INFO(HILOG_MODULE_AAFWK,"load oh signed root ca success"); } - return rc; + + // 比较哈希值 + if (memcmp(actualHash, expectedHash, SHA256_HASH_SIZE) != 0) { + HILOG_ERROR(HILOG_MODULE_AAFWK, "Certificate hash verification failed for: %s", certPath); + return PKCS7_INVALID_VALUE; + } + + // 解析证书 + mbedtls_x509_crt tmpCert; + mbedtls_x509_crt_init(&tmpCert); + + rc = mbedtls_x509_crt_parse_file(&tmpCert, certPath); + if (rc != 0) { + HILOG_ERROR(HILOG_MODULE_AAFWK, "Failed to parse certificate: %s, error: -0x%04X", certPath, -rc); + mbedtls_x509_crt_free(&tmpCert); + return rc; + } + + // 检查证书匹配 + int32_t match = CompareX509NameList(&tmpCert.subject, &topCert->issuer); + mbedtls_x509_crt_free(&tmpCert); + + return (match == 0) ? PKCS7_SUCC : PKCS7_INVALID_VALUE; } -static int32_t FindAndStoreRootCert(mbedtls_x509_crt *topCert) +// 加载根证书 +static int32_t LoadRootCertificate(const char *certPath) { - int32_t rc = PKCS7_PARSING_ERROR; - DIR *dir = NULL; - struct dirent *entry = NULL; - char certPath[MAX_CERTPATH_LEN]; - if (access(OEM_CERT_PATH, F_OK) != 0) { - HILOG_DEBUG(HILOG_MODULE_AAFWK, "Please upload the application root certificate."); - return LoadSelfSignedCert(); + if (certPath == NULL) { + return PKCS7_INVALID_PARAM; } - dir = opendir(OEM_CERT_PATH); - if (dir == NULL) { - HILOG_ERROR(HILOG_MODULE_AAFWK, "Failed to open certificate directory."); - return PKCS7_BUILD_CERT_PATH_FAIL; + + mbedtls_x509_crt_free(&g_ohosRootCert); + mbedtls_x509_crt_init(&g_ohosRootCert); + + int32_t rc = mbedtls_x509_crt_parse_file(&g_ohosRootCert, certPath); + if (rc != 0) { + HILOG_ERROR(HILOG_MODULE_AAFWK, "Failed to load root certificate: %s, error: -0x%04X", certPath, -rc); + return PKCS7_HAS_NO_SIGNER_CRT; + } + + return PKCS7_SUCC; +} + +// 辅助函数 +static bool ShouldSkipFile(const struct dirent *entry) +{ + if (entry == NULL) { + return true; + } + + return (strcmp(entry->d_name, ".") == 0 || + strcmp(entry->d_name, "..") == 0 || + strstr(entry->d_name, ".pem") == NULL); +} + +static const CertHashEntry *FindHashEntry(const CertHashList *hashList, const char *fileName) +{ + if (hashList == NULL || fileName == NULL) { + return NULL; + } + + for (size_t i = 0; i < hashList->count; i++) { + if (hashList->entries[i].certName != NULL && + strcmp(fileName, hashList->entries[i].certName) == 0) { + return &hashList->entries[i]; + } + } + return NULL; +} + +// 扫描证书目录 +static int32_t ScanCertificateDirectory(DIR *dir, const CertHashList *hashList, + mbedtls_x509_crt *topCert) +{ + struct dirent *entry; + char certPath[MAX_CERTPATH_LEN]; + int32_t rc = PKCS7_PARSING_ERROR; + + if (dir == NULL || hashList == NULL || topCert == NULL) { + return PKCS7_INVALID_PARAM; } + while ((entry = readdir(dir)) != NULL) { - const char *ext = strrchr(entry->d_name, '.'); - if (ext == NULL || strcmp(ext, ".pem") != 0) { + if (ShouldSkipFile(entry)) { continue; } - rc = snprintf_s(certPath, sizeof(certPath), sizeof(certPath) - 1, OEM_CERT_PATH"%s", entry->d_name); - if (rc < 0) { - HILOG_ERROR(HILOG_MODULE_AAFWK, "Get cert path failed, return %d!", rc); + + // 构建证书路径 + if (snprintf_s(certPath, sizeof(certPath), sizeof(certPath) - 1, + "%s%s", OEM_CERT_PATH, entry->d_name) < 0) { continue; } - mbedtls_x509_crt tmpRootCert; - mbedtls_x509_crt_init(&tmpRootCert); - rc = mbedtls_x509_crt_parse_file(&tmpRootCert, certPath); - if (rc != 0) { - HILOG_ERROR(HILOG_MODULE_AAFWK, "Parse %s failed: %d.", certPath, rc); - mbedtls_x509_crt_free(&tmpRootCert); + + // 查找匹配的哈希条目 + const CertHashEntry *hashEntry = FindHashEntry(hashList, entry->d_name); + if (hashEntry == NULL) { continue; } - /* Compare the subject of the device root certificate and the issuer of the uppermost certificate. */ - if (CompareX509NameList(&tmpRootCert.subject, &topCert->issuer) == 0) { - HILOG_INFO(HILOG_MODULE_AAFWK, "Found matching root cert: %s.", entry->d_name); - /* Reparse the root certificate to g_ohosRootCert. */ - rc = mbedtls_x509_crt_parse_file(&g_ohosRootCert, certPath); - if (rc != 0) { - HILOG_ERROR(HILOG_MODULE_AAFWK, "Re-parsing root cert failed: %d!", rc); - mbedtls_x509_crt_free(&tmpRootCert); - closedir(dir); - return PKCS7_HAS_NO_SIGNER_CRT; + + // 验证证书文件 + rc = VerifyCertificateFile(certPath, hashEntry->hash, topCert); + if (rc == PKCS7_SUCC) { + // 加载根证书 + rc = LoadRootCertificate(certPath); + if (rc == PKCS7_SUCC) { + break; } - rc = PKCS7_SUCC; - mbedtls_x509_crt_free(&tmpRootCert); - break; } - mbedtls_x509_crt_free(&tmpRootCert); } + return rc; +} + +// 检查证书路径是否可用 +bool IsCertPathAvailable(void) +{ + struct stat st; + if (stat(OEM_CERT_PATH, &st) != 0) { + HILOG_INFO(HILOG_MODULE_AAFWK, "Certificate path does not exist: %s", OEM_CERT_PATH); + return false; + } + + if (!S_ISDIR(st.st_mode)) { + HILOG_ERROR(HILOG_MODULE_AAFWK, "Certificate path is not a directory: %s", OEM_CERT_PATH); + return false; + } + + // 检查目录是否可读 + if (access(OEM_CERT_PATH, 0) != 0) { + HILOG_ERROR(HILOG_MODULE_AAFWK, "Certificate directory is not readable: %s", OEM_CERT_PATH); + return false; + } + + return true; +} + +// 加载内置证书 +static int32_t LoadSelfSignedCert(void) +{ + mbedtls_x509_crt_free(&g_ohosRootCert); + mbedtls_x509_crt_init(&g_ohosRootCert); + + HILOG_INFO(HILOG_MODULE_AAFWK, "Loading built-in OpenHarmony root certificate"); + + // 规范化证书格式:将\r\n转换为\n + size_t certLen = strlen((const char*)OHOS_ROOT_CERT_IN_PEM); + char *normalizedCert = Pkcs7Calloc(certLen + 1, 1); + if (normalizedCert == NULL) { + HILOG_ERROR(HILOG_MODULE_AAFWK, "Memory allocation failed for certificate normalization"); + return PKCS7_MEMORY_EXHAUST; + } + + // 复制并替换换行符 + const char *src = (const char*)OHOS_ROOT_CERT_IN_PEM; + char *dst = normalizedCert; + while (*src) { + if (src[0] == '\r' && src[1] == '\n') { + *dst++ = '\n'; + src += 2; // 跳过\r\n + } else { + *dst++ = *src++; + } + } + *dst = '\0'; + + int32_t rc = mbedtls_x509_crt_parse(&g_ohosRootCert, (const unsigned char*)normalizedCert, + strlen(normalizedCert) + 1); + + Pkcs7Free(normalizedCert); + + if (rc != 0) { + HILOG_ERROR(HILOG_MODULE_AAFWK, "Failed to parse built-in certificate: -0x%04X", -rc); + return PKCS7_HAS_NO_SIGNER_CRT; + } + + HILOG_INFO(HILOG_MODULE_AAFWK, "Built-in certificate loaded successfully with normalized line endings"); + return PKCS7_SUCC; +} + +static int32_t FindAndStoreRootCertWithCache(mbedtls_x509_crt *topCert, CertVerifyCache *cache) +{ + if (topCert == NULL) { + return PKCS7_INVALID_PARAM; + } + + // 如果缓存无效,先验证哈希列表 + if (cache == NULL || cache->hashListData == NULL) { + HILOG_INFO(HILOG_MODULE_AAFWK, "Cache invalid, verifying hash list"); + int32_t rc = VerifyAndCacheHashList(cache); + if (rc != PKCS7_SUCC) { + HILOG_ERROR(HILOG_MODULE_AAFWK, "Hash list verification failed: %d", rc); + return rc; + } + } + + CertHashList hashList = {0}; + DIR *dir = NULL; + int32_t rc = PKCS7_PARSING_ERROR; + + // 解析哈希列表 + rc = ParseHashListTextFormat(cache->hashListData, cache->hashListSize, &hashList); + if (rc != PKCS7_SUCC || hashList.count == 0) { + HILOG_ERROR(HILOG_MODULE_AAFWK, "Failed to parse hash list or no entries found"); + FreeCertHashList(&hashList); + return PKCS7_INVALID_VALUE; + } + + // 打开证书目录 + dir = opendir(OEM_CERT_PATH); + if (dir == NULL) { + HILOG_ERROR(HILOG_MODULE_AAFWK, "Failed to open certificate directory: %s", OEM_CERT_PATH); + FreeCertHashList(&hashList); + return PKCS7_BUILD_CERT_PATH_FAIL; + } + + // 扫描证书文件 + rc = ScanCertificateDirectory(dir, &hashList, topCert); + closedir(dir); + FreeCertHashList(&hashList); + + if (rc != PKCS7_SUCC) { + HILOG_ERROR(HILOG_MODULE_AAFWK, "Failed to find matching root certificate"); + } + return rc; } @@ -1557,7 +2203,7 @@ static int32_t LoadRootCert() int32_t rc = 0; if (!g_rootCertLoaded) { mbedtls_x509_crt_init(&g_rootCaG2Cert); - rc = mbedtls_x509_crt_parse(&g_rootCaG2Cert, g_rootCaG2CertInPem, sizeof(g_rootCaG2CertInPem)); + rc = mbedtls_x509_crt_parse(&g_rootCaG2Cert, ROOT_CA_G2_CERT_IN_PEM, sizeof(ROOT_CA_G2_CERT_IN_PEM)); if (rc) { HILOG_ERROR(HILOG_MODULE_AAFWK, "load root ca failed!"); return rc; @@ -1580,8 +2226,8 @@ static void UnLoadRootCert(void) static int32_t LoadDebugModeRootCert(void) { mbedtls_x509_crt_init(&g_debugModeRootCert); - int32_t rc = mbedtls_x509_crt_parse(&g_debugModeRootCert, g_debugModeRootCertInPem, - sizeof(g_debugModeRootCertInPem)); + int32_t rc = mbedtls_x509_crt_parse(&g_debugModeRootCert, DEBUG_MODE_ROOT_CERT_IN_PEM, + sizeof(DEBUG_MODE_ROOT_CERT_IN_PEM)); if (rc) { HILOG_ERROR(HILOG_MODULE_AAFWK, "load debug mode root ca failed %d", rc); return rc; @@ -1608,7 +2254,6 @@ static mbedtls_x509_crt *GetLowLevelCerts(SignedData *signedData) mbedtls_x509_buf *signerSerial = &signer->serial; mbedtls_x509_name *signerIssuer = &signer->issuer; mbedtls_x509_crt *cert = signedData->certs; - HILOG_INFO(HILOG_MODULE_AAFWK, "To filter one signer's cert"); while (cert != NULL) { if (SerialCmp(signerSerial, &cert->serial) == 0 && CompareX509NameList(signerIssuer, &cert->issuer) == 0) { @@ -1793,51 +2438,90 @@ static void AddCertToSignerCertPath(SignerInfo *signer, mbedtls_x509_crt *crt) signer->certPath.depth++; } -static int32_t BuildSignerCertPath(SignerInfo *signer, mbedtls_x509_crt *lowerCrt, SignedData *signeData) +static int32_t BuildSignerCertPath(SignerInfo *signer, mbedtls_x509_crt *lowerCrt, SignedData *signedData) { + if (signer == NULL || lowerCrt == NULL || signedData == NULL) { + return PKCS7_INVALID_PARAM; + } + + HILOG_INFO(HILOG_MODULE_AAFWK, "Building certificate path"); + int32_t scanCnt = 0; int32_t rc = PKCS7_SUCC; + + // 确保根证书已加载 if (!g_rootCertLoaded) { - return PKCS7_ROOT_CA_NOT_VALID; + rc = LoadRootCert(); + if (rc != PKCS7_SUCC) { + HILOG_ERROR(HILOG_MODULE_AAFWK, "Root certificate not loaded: %d", rc); + return PKCS7_ROOT_CA_NOT_VALID; + } } + + // 设置默认根证书 signer->rootCert = &g_rootCaG2Cert; - mbedtls_x509_crt *certs = signeData->certs; - /* From the root ca cert, to found the signer secondary ca , and use secondary cert to - * find the next level ca cert */ + mbedtls_x509_crt *certs = signedData->certs; + if (certs == NULL) { + HILOG_ERROR(HILOG_MODULE_AAFWK, "No certificates in signed data"); + return PKCS7_INVALID_VALUE; + } + mbedtls_x509_crt *cur = lowerCrt; mbedtls_x509_crt *next = NULL; int32_t certsCnt = GetCertsNumOfSignedData(certs); - DelCertOfSignedData(signeData, cur); + + HILOG_INFO(HILOG_MODULE_AAFWK, "Certificate chain has %d certificates", certsCnt); + + DelCertOfSignedData(signedData, cur); AddCertToSignerCertPath(signer, cur); + while (true) { - next = FindSuperCert(cur, signeData->certs); + next = FindSuperCert(cur, signedData->certs); if (next == NULL) { - mbedtls_x509_crt_init(&g_ohosRootCert); - rc = FindAndStoreRootCert(cur); - if (rc == 0) { - HILOG_INFO(HILOG_MODULE_AAFWK, "load self signed root ca success"); + HILOG_INFO(HILOG_MODULE_AAFWK, "Reached top of certificate chain"); + + // 根据路径可用性选择证书源 + if (IsCertPathAvailable()) { + HILOG_INFO(HILOG_MODULE_AAFWK, "Using local certificate path for root certificate"); + rc = FindAndStoreRootCertWithCache(cur, &g_certCache); } else { - HILOG_ERROR(HILOG_MODULE_AAFWK, "load self signed ca failed %d", rc); + HILOG_INFO(HILOG_MODULE_AAFWK, "Using built-in OpenHarmony root certificate"); + rc = LoadSelfSignedCert(); + if (rc == PKCS7_SUCC) { + // 设置签名者的根证书为内置证书 + signer->rootCert = &g_ohosRootCert; + } + } + + if (rc != PKCS7_SUCC) { + HILOG_ERROR(HILOG_MODULE_AAFWK, "Failed to load root certificate: %d", rc); } break; } else { - DelCertOfSignedData(signeData, next); + DelCertOfSignedData(signedData, next); AddCertToSignerCertPath(signer, next); } + scanCnt++; if (scanCnt > certsCnt) { + HILOG_ERROR(HILOG_MODULE_AAFWK, "Certificate chain scanning exceeded limit"); rc = PKCS7_BUILD_CERT_PATH_FAIL; break; } cur = next; } + + HILOG_INFO(HILOG_MODULE_AAFWK, "Certificate path building completed: %d", rc); return rc; } static int32_t ConstructSignerCerts(SignedData *signedData) { - /* scan all of the signers , and filter the signer's certs by serial and name */ + if (signedData == NULL) { + return PKCS7_INVALID_PARAM; + } + SignerInfo *signer = &signedData->signers; while (signer != NULL) { mbedtls_x509_crt *cert = GetLowLevelCerts(signedData); @@ -1845,14 +2529,17 @@ static int32_t ConstructSignerCerts(SignedData *signedData) HILOG_ERROR(HILOG_MODULE_AAFWK, "Could not found signer's lowest cert"); return PKCS7_INVALID_VALUE; } + + // 根据路径可用性构建证书路径 int32_t rc = BuildSignerCertPath(signer, cert, signedData); - if (rc != 0) { + if (rc != PKCS7_SUCC) { + HILOG_ERROR(HILOG_MODULE_AAFWK, "Build signer certificate path failed: %d", rc); return rc; } signer = signer->next; } - return 0; + return PKCS7_SUCC; } /* get signer digest alg */ @@ -1986,7 +2673,7 @@ static int32_t VerifyCrl(const mbedtls_x509_crt *crt, const mbedtls_x509_crl *cr static int32_t VerifyClicert(mbedtls_x509_crt *clicert, mbedtls_x509_crt *rootCert, const Pkcs7 *pkcs7) { - uint32_t flags; + uint32_t flags = 0; int32_t rc = mbedtls_x509_crt_verify(clicert, rootCert, (mbedtls_x509_crl *)&pkcs7->signedData.crl, NULL, &flags, NULL, NULL); if (rc) { @@ -2007,47 +2694,49 @@ int32_t PKCS7_VerifyCertsChain(const Pkcs7 *pkcs7) if (pkcs7 == NULL) { return PKCS7_INVALID_PARAM; } + int32_t cnt = 0; const SignerInfo *signer = &pkcs7->signedData.signers; + while (signer != NULL) { mbedtls_x509_crt *clicert = signer->certPath.crt; if (clicert == NULL) { - HILOG_ERROR(HILOG_MODULE_AAFWK, "Signer has no certs"); + HILOG_ERROR(HILOG_MODULE_AAFWK, "Signer has no certificates"); return PKCS7_HAS_NO_SIGNER_CRT; } + int32_t rc; cnt++; - HILOG_INFO(HILOG_MODULE_AAFWK, "signer : %d", cnt); + if (g_debugModeEnabled) { rc = VerifyClicert(clicert, &g_debugModeRootCert, pkcs7); - HILOG_DEBUG(HILOG_MODULE_AAFWK, "Verify inner: %d", rc); if (rc == PKCS7_SUCC) { signer = signer->next; continue; } - if (rc == PKCS7_IS_REVOKED) { - return PKCS7_IS_REVOKED; - } + HILOG_WARN(HILOG_MODULE_AAFWK, "Debug mode verification failed"); } - rc = VerifyClicert(clicert, signer->rootCert, pkcs7); - HILOG_DEBUG(HILOG_MODULE_AAFWK, "Verify : %d", rc); +#ifndef OHOS_SIGN_HAPS_BY_SERVER + // 首先尝试使用内置OpenHarmony根证书 + rc = VerifyClicert(clicert, &g_ohosRootCert, pkcs7); if (rc == PKCS7_SUCC) { signer = signer->next; continue; } - if (rc == PKCS7_IS_REVOKED) { - return PKCS7_IS_REVOKED; - } -#ifndef OHOS_SIGN_HAPS_BY_SERVER - rc = VerifyClicert(clicert, &g_ohosRootCert, pkcs7); - HILOG_DEBUG(HILOG_MODULE_AAFWK, "Verify self : %d", rc); +#endif + // 如果内置证书验证失败,尝试系统根证书 + HILOG_WARN(HILOG_MODULE_AAFWK, "Built-in certificate failed, trying system root certificate"); + rc = VerifyClicert(clicert, &g_rootCaG2Cert, pkcs7); if (rc == PKCS7_SUCC) { + HILOG_INFO(HILOG_MODULE_AAFWK, "System root certificate verification successful"); signer = signer->next; continue; } -#endif + HILOG_ERROR(HILOG_MODULE_AAFWK, "All certificate verification attempts failed: %d", rc); return rc; } + + HILOG_INFO(HILOG_MODULE_AAFWK, "All certificate chains verified successfully"); return PKCS7_SUCC; } @@ -2292,6 +2981,39 @@ static int32_t ParsePemFormatSignedData(const unsigned char *buf, size_t bufLen, } #endif +// 统一的证书加载入口 +static int32_t CheckAndLoadCertificates(void) +{ + static bool certificatesLoaded = false; + static int32_t lastLoadResult = PKCS7_SUCC; + + // 如果已经加载过且成功,直接返回缓存结果 + if (certificatesLoaded) { + return lastLoadResult; + } + + int32_t rc = PKCS7_SUCC; + + if (IsCertPathAvailable()) { + HILOG_INFO(HILOG_MODULE_AAFWK, "Certificate path available, verifying hash list"); + rc = VerifyAndCacheHashList(&g_certCache); + if (rc != PKCS7_SUCC) { + HILOG_ERROR(HILOG_MODULE_AAFWK, "Hash list verification failed, falling back to built-in certificate"); + // 验证失败时回退到内置证书 + rc = LoadSelfSignedCert(); + } + } else { + HILOG_INFO(HILOG_MODULE_AAFWK, "Certificate path not available, using built-in certificate"); + // 清理可能存在的旧缓存 + FreeCertVerifyCache(&g_certCache); + rc = LoadSelfSignedCert(); + } + + certificatesLoaded = true; + lastLoadResult = rc; + return rc; +} + int32_t PKCS7_ParseSignedData(const unsigned char *buf, size_t bufLen, Pkcs7 *pkcs7) { int32_t rc; @@ -2299,55 +3021,67 @@ int32_t PKCS7_ParseSignedData(const unsigned char *buf, size_t bufLen, Pkcs7 *pk bool hasContent = false; unsigned char *start = NULL; unsigned char *end = NULL; + if (buf == NULL || bufLen == 0 || pkcs7 == NULL) { return PKCS7_INVALID_PARAM; } + (void)memset_s(pkcs7, sizeof(*pkcs7), 0, sizeof(*pkcs7)); + + HILOG_INFO(HILOG_MODULE_AAFWK, "Starting PKCS7 parsing, bufLen=%zu", bufLen); + start = (unsigned char *)buf; -#ifdef PARSE_PEM_FORMAT_SIGNED_DATA - char format = 0; - rc = ParsePemFormatSignedData(buf, bufLen, &pkcs7->pem, &format); - if (rc) { - goto EXIT; - } - if (format == PEM_FORMAT_SINGED_DATA) { - start = pkcs7->pem.MBEDTLS_PRIVATE(buf); - bufLen = pkcs7->pem.MBEDTLS_PRIVATE(buflen); - } -#endif -#ifdef MARKET_ENABLE - if (access(OEM_CERT_PATH, F_OK) == 0) { - rc = VerifyHashList(); - P_ERR_GOTO_WTTH_LOG(rc); - } -#endif - /* loaded the c2 root ca cert */ - rc = LoadRootCert(); - P_ERR_GOTO_WTTH_LOG(rc); - HILOG_INFO(HILOG_MODULE_AAFWK, "Begin to parse pkcs#7 signed data"); end = start + bufLen; - /* parse the ContentInfo total head */ + + // 先解析PKCS7数据,再处理证书 + HILOG_INFO(HILOG_MODULE_AAFWK, "Begin to parse pkcs#7 signed data"); + + // 解析ContentInfo头部 rc = GetContentInfoType(&start, end, &(pkcs7->contentTypeOid), &hasContent); - P_ERR_GOTO_WTTH_LOG(rc); + if (rc != PKCS7_SUCC) { + HILOG_ERROR(HILOG_MODULE_AAFWK, "Get content info type failed: %d", rc); + goto exit; + } + if (!IsSigedDataOid(pkcs7) || !hasContent) { rc = PKCS7_INVALID_CONTENT_TYPE_OR_NO_CONTENT; HILOG_ERROR(HILOG_MODULE_AAFWK, "Input data is not pkcs#7 signed data format or has no content info"); - goto EXIT; + goto exit; } + rc = GetContentLenOfContentInfo(&start, end, &len); - P_ERR_GOTO_WTTH_LOG(rc); + if (rc != PKCS7_SUCC) { + HILOG_ERROR(HILOG_MODULE_AAFWK, "Get content length failed: %d", rc); + goto exit; + } + if (start + len > end) { rc = PKCS7_INVALID_CONTENT_TYPE_OR_NO_CONTENT; HILOG_ERROR(HILOG_MODULE_AAFWK, "The length of input data is invalid"); - goto EXIT; + goto exit; } + rc = ParseSignedData(start, len, &(pkcs7->signedData)); - P_ERR_GOTO_WTTH_LOG(rc); + if (rc != PKCS7_SUCC) { + HILOG_ERROR(HILOG_MODULE_AAFWK, "Parse signed data failed: %d", rc); + goto exit; + } + HILOG_INFO(HILOG_MODULE_AAFWK, "Parse pkcs#7 signed data success"); + + // 现在构建证书路径(这里会根据路径可用性选择证书) rc = ConstructSignerCerts(&pkcs7->signedData); - P_ERR_GOTO_WTTH_LOG(rc); + if (rc != PKCS7_SUCC) { + HILOG_ERROR(HILOG_MODULE_AAFWK, "Construct signer certificates failed: %d", rc); + goto exit; + } + + HILOG_INFO(HILOG_MODULE_AAFWK, "PKCS7 parsing completed successfully"); return rc; -EXIT: + +exit: + HILOG_ERROR(HILOG_MODULE_AAFWK, "PKCS7 parsing failed: %d", rc); + PKCS7_FreeRes(pkcs7); return rc; } @@ -2364,4 +3098,5 @@ void PKCS7_FreeRes(Pkcs7 *pkcs7) #ifndef OHOS_SIGN_HAPS_BY_SERVER UnLoadSelfSignedCert(); #endif + FreeCertVerifyCache(&g_certCache); } \ No newline at end of file diff --git a/code/sdk/open_source/openharmony/base/security/appverify/include/app_verify_pub.h b/code/sdk/open_source/openharmony/base/security/appverify/include/app_verify_pub.h index 5ad48efa3..c450b3d27 100644 --- a/code/sdk/open_source/openharmony/base/security/appverify/include/app_verify_pub.h +++ b/code/sdk/open_source/openharmony/base/security/appverify/include/app_verify_pub.h @@ -118,7 +118,7 @@ typedef struct { int len; } AppSignPk; -#ifdef MARKET_ENABLE +#ifdef OH_MARKET_ENABLE #define NOISE_SIZE 32 #define SALT_INFO_POOL_ROWS 3 #define PUBLIC_KEY_FILE_LEN (SALT_INFO_POOL_ROWS * NOISE_SIZE * 2 + 4 + 1) @@ -174,14 +174,14 @@ int APPVERI_SetDebugMode(bool mode); /* get unsigned file len without verify, return V_ERR if not OK */ int APPVERI_GetUnsignedFileLength(const char *filePath); -#ifdef MARKET_ENABLE +#ifdef OH_MARKET_ENABLE /******************************************************************************* * Function : PKCS7_GenerateECCKeypair * Description : Generate ECC brainpool256R1 key pair and write to PEM files * * Return : int 0 on success, non-zero error code on failure *******************************************************************************/ -int32_t PKCS7_GenerateECCKeypair(); +int32_t PKCS7_GenerateECCKeypair(void); /******************************************************************************* * Function : PKCS7_VerifyAndDecrypt diff --git a/code/sdk/open_source/openharmony/base/security/appverify/include/mbedtls_pkcs7.h b/code/sdk/open_source/openharmony/base/security/appverify/include/mbedtls_pkcs7.h index a21759a00..3c65b60ba 100644 --- a/code/sdk/open_source/openharmony/base/security/appverify/include/mbedtls_pkcs7.h +++ b/code/sdk/open_source/openharmony/base/security/appverify/include/mbedtls_pkcs7.h @@ -40,6 +40,9 @@ extern "C" { * #define PARSE_PEM_FORMAT_SIGNED_DATA 1 */ #define MAX_SIGNER_NAME_LEN 512 +#define MAX_CERTPATH_LEN 256 +#define SHA256_HASH_SIZE 32 +#define RSA3072_SIG_SIZE 384 /* Parse error definition */ typedef enum { PKCS7_SUCC = 0, @@ -149,6 +152,26 @@ typedef struct { #endif } Pkcs7; +typedef struct { + unsigned char *hashListData; + size_t hashListSize; + char certDirPath[MAX_CERTPATH_LEN]; + time_t verifyTime; +} CertVerifyCache; + +typedef struct { + char *certName; + unsigned char hash[SHA256_HASH_SIZE]; + size_t hashHexLen; + char hashHex[65]; // 十六进制表示的哈希值 +} CertHashEntry; + +typedef struct { + CertHashEntry *entries; + size_t count; + size_t capacity; +} CertHashList; + /******************************************************************************* * Function : PKCS7_ParseSignedData * Description : parse the pkcs7 signed data, store the resolved data to pkcs7 diff --git a/code/sdk/open_source/openharmony/base/security/huks/frameworks/crypto_lite/cipher/CMakeLists.txt b/code/sdk/open_source/openharmony/base/security/huks/frameworks/crypto_lite/cipher/CMakeLists.txt index 6e384453e..a567f76c7 100644 --- a/code/sdk/open_source/openharmony/base/security/huks/frameworks/crypto_lite/cipher/CMakeLists.txt +++ b/code/sdk/open_source/openharmony/base/security/huks/frameworks/crypto_lite/cipher/CMakeLists.txt @@ -11,11 +11,16 @@ set(PRIVATE_HEADER ${CMAKE_CURRENT_SOURCE_DIR}/include ${ROOT_DIR}/open_source/mbedtls/mbedtls_v3.6.0/include ${OHOS_DIR}/commonlibrary/utils_lite/include + ${ROOT_DIR}/open_source/openharmony/base/security/appverify/include ) set(SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/cipher_sha256.c ${CMAKE_CURRENT_SOURCE_DIR}/src/cipher_aes.c + ${CMAKE_CURRENT_SOURCE_DIR}/src/cipher_base64.c + ${CMAKE_CURRENT_SOURCE_DIR}/src/cipher_hmac_sha256.c + ${CMAKE_CURRENT_SOURCE_DIR}/src/cipher_md5.c + ${CMAKE_CURRENT_SOURCE_DIR}/src/cipher_nv_store.c ) set(COMPONENT_PUBLIC_CCFLAGS diff --git a/code/sdk/open_source/openharmony/base/security/huks/frameworks/crypto_lite/cipher/include/cipher.h b/code/sdk/open_source/openharmony/base/security/huks/frameworks/crypto_lite/cipher/include/cipher.h index 238034344..3845be3f7 100644 --- a/code/sdk/open_source/openharmony/base/security/huks/frameworks/crypto_lite/cipher/include/cipher.h +++ b/code/sdk/open_source/openharmony/base/security/huks/frameworks/crypto_lite/cipher/include/cipher.h @@ -19,10 +19,13 @@ #ifdef __cplusplus #include #include +#include #else #include #include +#include #endif +#include "nv.h" #ifdef __cplusplus #if __cplusplus @@ -35,6 +38,11 @@ extern "C" { #define ERROR_CODE_GENERAL (-1) #define ERROR_SUCCESS 0 +#define UT_NV_MAX_LENGTH 4060 +#define KEY_ID_START NV_ID_ACE_CIPHER +#define KEY_ID_END 0x2900 +#define KEY_ID_COUNT (KEY_ID_END - KEY_ID_START) + typedef struct Sha256Context Sha256Context; typedef enum { @@ -91,6 +99,19 @@ int32_t Sha256(const unsigned char *input, int ilen, unsigned char output[32]); void Sha256Starts(Sha256Context *ctx); int32_t Sha256Update(Sha256Context *ctx, const unsigned char *input, size_t ilen); void Sha256Finish(Sha256Context *ctx, unsigned char output[32]); + +int Base64EncodeInternal(const unsigned char *input, size_t inputLen, char *output, size_t outputLen); +int Base64DecodeInternal(const char *input, size_t inputLen, unsigned char *output, size_t outputLen); +int HmacSha256Compute(const unsigned char *key, + size_t keyLen, const unsigned char *input, size_t inputLen, unsigned char *output); +int Md5Compute(const unsigned char *input, size_t inputLen, unsigned char *output); +uint16_t InnerGetUsedKeyIds(uint16_t *used_ids, uint16_t max_count); +uint16_t InnerGetAvailableKeyIds(uint16_t *available_ids, uint16_t max_count); +int32_t InnerDeleteKeyFromNv(uint16_t keyId); +int32_t InnerGetKeyFromNv(uint16_t keyId, uint8_t *data, uint16_t *actualKeyLen); +int32_t InnerSaveKeyToNv(unsigned char *keyBuff, uint32_t keyBuffLen, uint16_t keyId, bool overwrite); + + // ohos end int32_t InitAesCryptData(const char *action, const char *text, const char *key, const AesIvMode *iv, AesCryptContext *aesCryptCxt); diff --git a/code/sdk/open_source/openharmony/base/security/huks/frameworks/crypto_lite/cipher/include/cipher_log.h b/code/sdk/open_source/openharmony/base/security/huks/frameworks/crypto_lite/cipher/include/cipher_log.h index 14a694216..aa6f2469e 100644 --- a/code/sdk/open_source/openharmony/base/security/huks/frameworks/crypto_lite/cipher/include/cipher_log.h +++ b/code/sdk/open_source/openharmony/base/security/huks/frameworks/crypto_lite/cipher/include/cipher_log.h @@ -32,6 +32,8 @@ enum CipherLogLevel { CIPHER_LOG_LEVEL_E, + CIPHER_LOG_LEVEL_D, + CIPHER_LOG_LEVEL_I, }; #ifdef __cplusplus @@ -42,8 +44,12 @@ void CipherLog(uint32_t logLevel, const char *funcName, uint32_t lineNo, const c #ifndef __LITEOS__ #define CIPHER_LOG_E(...) CipherLog(CIPHER_LOG_LEVEL_E, __func__, __LINE__, __VA_ARGS__) +#define CIPHER_LOG_D(...) CipherLog(CIPHER_LOG_LEVEL_D, __func__, __LINE__, __VA_ARGS__) +#define CIPHER_LOG_I(...) CipherLog(CIPHER_LOG_LEVEL_I, __func__, __LINE__, __VA_ARGS__) #else #define CIPHER_LOG_E printf +#define CIPHER_LOG_D printf +#define CIPHER_LOG_I printf #endif #ifdef __cplusplus } diff --git a/code/sdk/open_source/openharmony/base/security/huks/frameworks/crypto_lite/cipher/src/cipher_aes.c b/code/sdk/open_source/openharmony/base/security/huks/frameworks/crypto_lite/cipher/src/cipher_aes.c index 6adffd746..fd9a1ac13 100644 --- a/code/sdk/open_source/openharmony/base/security/huks/frameworks/crypto_lite/cipher/src/cipher_aes.c +++ b/code/sdk/open_source/openharmony/base/security/huks/frameworks/crypto_lite/cipher/src/cipher_aes.c @@ -224,6 +224,18 @@ static int32_t SetIv(const unsigned char *ivBuf, size_t ivBufSize, int32_t ivOff return ERROR_SUCCESS; } +static void GetPaddingLen(char *data, int32_t *paddingLen) +{ + uint8_t pad_len = data[*paddingLen - 1]; + for (int i = 0; i < *paddingLen; i++) { + uint8_t temp = data[i]; + if (temp > 0 && temp <= AES_BLOCK_SIZE && temp == pad_len) { + *paddingLen = i; + break; + } + } +} + static int32_t InitAesCryptContext(const char *key, const AesIvMode *iv, AesCryptContext *ctx) { int32_t ret; @@ -474,6 +486,9 @@ static int32_t DoAesCbcEncrypt(mbedtls_aes_context *aesCtx, AesCryptContext *ctx CIPHER_LOG_E("remove padding failed.\n"); return ERROR_CODE_GENERAL; } + if (ctx->paddingMode == PADDING_NONE) { + GetPaddingLen(ctx->data.text, &unpaddedLen); + } ctx->data.textLen = unpaddedLen; // 添加字符串终止符 @@ -530,6 +545,9 @@ static int32_t DoAesEcbEncrypt(mbedtls_aes_context *aesCtx, AesCryptContext *ctx CIPHER_LOG_E("remove padding failed.\n"); return ERROR_CODE_GENERAL; } + if (ctx->paddingMode == PADDING_NONE) { + GetPaddingLen(ctx->data.text, &unpaddedLen); + } ctx->data.textLen = unpaddedLen; // 添加字符串终止符 diff --git a/code/sdk/open_source/openharmony/base/security/huks/frameworks/crypto_lite/cipher/src/cipher_base64.c b/code/sdk/open_source/openharmony/base/security/huks/frameworks/crypto_lite/cipher/src/cipher_base64.c new file mode 100644 index 000000000..4267cf3d0 --- /dev/null +++ b/code/sdk/open_source/openharmony/base/security/huks/frameworks/crypto_lite/cipher/src/cipher_base64.c @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2025-2030 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. + */ + +// ohos begin +// Add software base64 +#include "cipher.h" +#include "mbedtls/base64.h" + +// Base64编码底层实现 +int Base64EncodeInternal(const unsigned char *input, size_t inputLen, char *output, size_t outputLen) +{ + size_t actualOutputLen = 0; + return mbedtls_base64_encode((unsigned char *)(output), outputLen, &actualOutputLen, input, inputLen); +} + +// Base64解码底层实现 +int Base64DecodeInternal(const char *input, size_t inputLen, unsigned char *output, size_t outputLen) +{ + size_t actualOutputLen = 0; + return mbedtls_base64_decode( + output, outputLen, &actualOutputLen, (const unsigned char *)(input), inputLen); +} +// ohos end \ No newline at end of file diff --git a/code/sdk/open_source/openharmony/base/security/huks/frameworks/crypto_lite/cipher/src/cipher_hmac_sha256.c b/code/sdk/open_source/openharmony/base/security/huks/frameworks/crypto_lite/cipher/src/cipher_hmac_sha256.c new file mode 100644 index 000000000..f54ab511b --- /dev/null +++ b/code/sdk/open_source/openharmony/base/security/huks/frameworks/crypto_lite/cipher/src/cipher_hmac_sha256.c @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2025-2030 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. + */ + +// ohos begin +// Add software hmac-sha256 +#include "cipher.h" +#include "cipher_log.h" +#include "mbedtls/md.h" +#include "mbedtls/error.h" +#include + +// HMAC-SHA256底层计算 +int HmacSha256Compute( + const unsigned char *key, size_t keyLen, const unsigned char *input, size_t inputLen, unsigned char *output) +{ + const mbedtls_md_info_t *md_info = mbedtls_md_info_from_type(MBEDTLS_MD_SHA256); + if (md_info == NULL) { + return -1; + } + + return mbedtls_md_hmac(md_info, key, keyLen, input, inputLen, output); +} +// ohos end \ No newline at end of file diff --git a/code/sdk/open_source/openharmony/base/security/huks/frameworks/crypto_lite/cipher/src/cipher_md5.c b/code/sdk/open_source/openharmony/base/security/huks/frameworks/crypto_lite/cipher/src/cipher_md5.c new file mode 100644 index 000000000..e05562275 --- /dev/null +++ b/code/sdk/open_source/openharmony/base/security/huks/frameworks/crypto_lite/cipher/src/cipher_md5.c @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2025-2030 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. + */ + +// ohos begin +// Add software md5 +#include "cipher.h" +#include "mbedtls/md5.h" + +// MD5底层计算 +int Md5Compute(const unsigned char *input, size_t inputLen, unsigned char *output) +{ + mbedtls_md5_context ctx; + mbedtls_md5_init(&ctx); + + int ret = mbedtls_md5_starts(&ctx); + if (ret != 0) { + goto cleanup; + } + + ret = mbedtls_md5_update(&ctx, input, inputLen); + if (ret != 0) { + goto cleanup; + } + + ret = mbedtls_md5_finish(&ctx, output); + +cleanup: + mbedtls_md5_free(&ctx); + return ret; +} +// ohos end \ No newline at end of file diff --git a/code/sdk/open_source/openharmony/base/security/huks/frameworks/crypto_lite/cipher/src/cipher_nv_store.c b/code/sdk/open_source/openharmony/base/security/huks/frameworks/crypto_lite/cipher/src/cipher_nv_store.c new file mode 100644 index 000000000..63c3d830e --- /dev/null +++ b/code/sdk/open_source/openharmony/base/security/huks/frameworks/crypto_lite/cipher/src/cipher_nv_store.c @@ -0,0 +1,398 @@ +/* + * Copyright (c) 2025-2030 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. + */ + +// ohos begin +// Add NV store +#include "cipher.h" +#include "cipher_log.h" +#include "app_common.h" +#include +#include + +// 位图大小计算(每个bit表示一个keyId) +#define BITMAP_SIZE ((KEY_ID_COUNT + 7) / 8) + +// 使用一个特殊的keyId来存储位图(在密钥区间之前) +#define BITMAP_KEY_ID 0x26FF + +// 全局位图变量 +static uint8_t keyIdBitmap[BITMAP_SIZE] = {0}; +static int bitmapInitialized = 0; + +// 属性配置 +static nv_key_attr_t nvAttr = {0, 1, 0, 0}; + +/** + * @brief 初始化密钥ID位图 + * @return 0-成功,其他-失败 + */ +static int32_t InitKeyIdBitmap(void) +{ + int32_t ret = 0; + uint16_t readLen = 0; + + if (bitmapInitialized) { + return 0; + } + + // 尝试从NV读取位图 + ret = uapi_nv_read_with_attr(BITMAP_KEY_ID, BITMAP_SIZE, &readLen, keyIdBitmap, &nvAttr); + if (ret != 0 || readLen != BITMAP_SIZE) { + // 读取失败或长度不匹配,初始化位图为全0 + CIPHER_LOG_D("Initialize key_id bitmap for first use\n"); + memset_s(keyIdBitmap, BITMAP_SIZE, 0, BITMAP_SIZE); + + // 将初始化的位图保存到NV + ret = uapi_nv_write_with_attr(BITMAP_KEY_ID, keyIdBitmap, BITMAP_SIZE, &nvAttr, NULL); + if (ret != 0) { + CIPHER_LOG_E("Failed to initialize key_id bitmap to NV\n"); + return ret; + } + } + + bitmapInitialized = 1; + CIPHER_LOG_I("Key_id bitmap initialized successfully\n"); + return 0; +} + +/** + * @brief 保存位图到NV + * @return 0-成功,其他-失败 + */ +static int32_t SaveKeyIdBitmap(void) +{ + if (!bitmapInitialized) { + CIPHER_LOG_E("Bitmap not initialized\n"); + return -1; + } + + int32_t ret = uapi_nv_write_with_attr(BITMAP_KEY_ID, keyIdBitmap, BITMAP_SIZE, &nvAttr, NULL); + if (ret != 0) { + CIPHER_LOG_E("Failed to save key_id bitmap to NV\n"); + } + return ret; +} + +/** + * @brief 检查keyId是否有效且在范围内 + * @param keyId 密钥ID + * @return 1-有效,0-无效 + */ +static int IsValidKeyId(uint16_t keyId) +{ + return (keyId >= KEY_ID_START && keyId < KEY_ID_END); +} + +/** + * @brief 设置keyId为已使用 + * @param keyId 密钥ID + */ +static void SetKeyIdUsed(uint16_t keyId) +{ + if (IsValidKeyId(keyId)) { + uint16_t index = keyId - KEY_ID_START; + keyIdBitmap[index / 8] |= (1 << (index % 8)); + } +} + +/** + * @brief 检查keyId是否已被使用 + * @param keyId 密钥ID + * @return 1-已使用,0-未使用 + */ +static int IsKeyIdUsed(uint16_t keyId) +{ + if (!IsValidKeyId(keyId)) { + return 0; + } + uint16_t index = keyId - KEY_ID_START; + return (keyIdBitmap[index / 8] >> (index % 8)) & 1; +} + +/** + * @brief 清除keyId的使用标记 + * @param keyId 密钥ID + */ +static void ClearKeyIdUsed(uint16_t keyId) +{ + if (IsValidKeyId(keyId)) { + uint16_t index = keyId - KEY_ID_START; + keyIdBitmap[index / 8] &= ~(1 << (index % 8)); + } +} + +/** + * @brief 保存密钥到NV存储 + * @param keyBuff 密钥数据缓冲区 + * @param keyBuffLen 密钥数据长度 + * @param keyId 密钥ID + * @param overwrite 是否覆盖已存在的密钥 + * @return 0-成功,其他-失败 + */ +int32_t InnerSaveKeyToNv(unsigned char *keyBuff, uint32_t keyBuffLen, uint16_t keyId, bool overwrite) +{ + int32_t ret = 0; + + // 初始化位图(如果未初始化) + if (!bitmapInitialized) { + ret = InitKeyIdBitmap(); + if (ret != 0) { + CIPHER_LOG_E("Failed to initialize key_id bitmap\n"); + return ret; + } + } + + // 检查keyId是否有效 + if (!IsValidKeyId(keyId)) { + CIPHER_LOG_E("Invalid keyId: 0x%04X, valid range: [0x%04X, 0x%04X)\n", + keyId, KEY_ID_START, KEY_ID_END); + return -1; + } + + // 检查参数有效性 + if (keyBuff == NULL || keyBuffLen == 0) { + CIPHER_LOG_E("Invalid key buffer or length\n"); + return -1; + } + + // 检查keyId是否已被使用 + bool keyUsed = IsKeyIdUsed(keyId); + if (keyUsed && !overwrite) { + CIPHER_LOG_E("KeyId 0x%04X already used and overwrite not allowed\n", keyId); + return -1; + } + + // 保存密钥到NV + ret = uapi_nv_write_with_attr(keyId, keyBuff, keyBuffLen, &nvAttr, NULL); + if (ret != 0) { + CIPHER_LOG_E("Failed to write key 0x%04X to nv, ret=%d\n", keyId, ret); + return ret; + } + + // 如果之前未使用,标记为已使用并保存位图 + if (!keyUsed) { + SetKeyIdUsed(keyId); + ret = SaveKeyIdBitmap(); + if (ret != 0) { + CIPHER_LOG_E("Failed to save key_id bitmap after writing key 0x%04X\n", keyId); + } else { + CIPHER_LOG_D("Key 0x%04X saved successfully (new)\n", keyId); + } + } else { + CIPHER_LOG_I("Key 0x%04X saved successfully (overwritten)\n", keyId); + } + + return ret; +} + +/** + * @brief 从NV读取密钥 + * @param keyId 密钥ID + * @param data 输出缓冲区 + * @return 0-成功,其他-失败 + */ +int32_t InnerGetKeyFromNv(uint16_t keyId, uint8_t *data, uint16_t *actualKeyLen) +{ + int32_t ret = 0; + uint16_t keyLen = 0; + + // 初始化位图(如果未初始化) + if (!bitmapInitialized) { + ret = InitKeyIdBitmap(); + if (ret != 0) { + CIPHER_LOG_E("Failed to initialize key_id bitmap\n"); + return ret; + } + } + + // 检查keyId是否有效 + if (!IsValidKeyId(keyId)) { + CIPHER_LOG_E("Invalid keyId: 0x%04X\n", keyId); + return -1; + } + + // 检查keyId是否已被使用 + if (!IsKeyIdUsed(keyId)) { + CIPHER_LOG_E("KeyId 0x%04X not exists\n", keyId); + return -1; + } + + // 检查输出缓冲区 + if (data == NULL || actualKeyLen == NULL) { + CIPHER_LOG_E("Invalid output buffer\n"); + return -1; + } + + // 从NV读取密钥 + ret = uapi_nv_read_with_attr(keyId, UT_NV_MAX_LENGTH, &keyLen, data, &nvAttr); + if (ret != 0) { + CIPHER_LOG_E("Failed to read key 0x%04X from nv, ret=%d\n", keyId, ret); + + // 如果读取失败,可能密钥数据已损坏,清除使用标记 + ClearKeyIdUsed(keyId); + SaveKeyIdBitmap(); // 尝试保存更新后的位图 + } else { + CIPHER_LOG_I("Key 0x%04X read successfully, length=%d\n", keyId, keyLen); + *actualKeyLen = keyLen; // 设置实际长度 + } + + return ret; +} + +/** + * @brief 从NV删除密钥 + * @param keyId 密钥ID + * @return 0-成功,其他-失败 + */ +int32_t InnerDeleteKeyFromNv(uint16_t keyId) +{ + int32_t ret = 0; + uint16_t keyLen = 0; + // 初始化位图(如果未初始化) + if (!bitmapInitialized) { + ret = InitKeyIdBitmap(); + if (ret != 0) { + CIPHER_LOG_E("Failed to initialize key_id bitmap\n"); + return ret; + } + } + + // 检查keyId是否有效 + if (!IsValidKeyId(keyId)) { + CIPHER_LOG_E("Invalid keyId: 0x%04X\n", keyId); + return -1; + } + + // 检查keyId是否已被使用 + if (!IsKeyIdUsed(keyId)) { + CIPHER_LOG_E("KeyId 0x%04X not exists\n", keyId); + return -1; + } + uint8_t *tempBuffer = (uint8_t*)APPV_MALLOC(UT_NV_MAX_LENGTH); + if (tempBuffer == NULL) { + CIPHER_LOG_E("Failed to allocate memory for temp deletion data\n"); + return -1; + } + ret = uapi_nv_read_with_attr(keyId, UT_NV_MAX_LENGTH, &keyLen, tempBuffer, &nvAttr); + if (ret != 0) { + APPV_FREE(tempBuffer); + tempBuffer = NULL; + CIPHER_LOG_E("Failed to read key length for deletion 0x%04X, ret=%X\n", keyId, ret); + return -1; + } + APPV_FREE(tempBuffer); + tempBuffer = NULL; + uint8_t *zeroData = (uint8_t*)APPV_MALLOC(keyLen); + if (zeroData == NULL) { + CIPHER_LOG_E("Failed to allocate memory for deletion data\n"); + return -1; + } + + // 用0xf填充数据 + memset_s(zeroData, keyLen, 0xFF, keyLen); + // 删除密钥:覆盖原始数据 + ret = uapi_nv_write_with_attr(keyId, zeroData, keyLen, &nvAttr, NULL); + if (ret != 0) { + APPV_FREE(zeroData); + zeroData = NULL; + CIPHER_LOG_E("Failed to delete key 0x%04X from nv, ret=%d\n", keyId, ret); + return ret; + } + APPV_FREE(zeroData); + zeroData = NULL; + // 清除使用标记并保存位图 + ClearKeyIdUsed(keyId); + ret = SaveKeyIdBitmap(); + if (ret != 0) { + CIPHER_LOG_E("Failed to save key_id bitmap after deleting key 0x%04X\n", keyId); + } else { + CIPHER_LOG_I("Key 0x%04X deleted successfully\n", keyId); + } + + return ret; +} + +/** + * @brief 获取可用的密钥ID列表 + * @param availableIds 输出可用ID数组 + * @param maxCount 数组最大容量 + * @return 可用ID数量 + */ +uint16_t InnerGetAvailableKeyIds(uint16_t *availableIds, uint16_t maxCount) +{ + // 初始化密钥ID位图 + uint16_t count = 0; + + // 检查位图是否已初始化,若未初始化则进行初始化 + if (!bitmapInitialized) { + if (InitKeyIdBitmap() != 0) { + return 0; + } + } + + // 检查输入参数是否有效 + if (availableIds == NULL || maxCount == 0) { + return 0; + } + + // 遍历所有密钥ID,查找可用的密钥ID + for (uint16_t i = 0; i < KEY_ID_COUNT && count < maxCount; i++) { + // 检查当前密钥ID是否可用,8:一个字节8位 + if (!(keyIdBitmap[i / 8] & (1 << (i % 8)))) { + // 将可用的密钥ID存入数组,并增加计数 + availableIds[count++] = KEY_ID_START + i; + } + } + + // 返回实际获取的可用密钥ID的数量 + return count; +} + +/** + * @brief 获取已使用的密钥ID列表 + * @param usedIds 输出已使用ID数组 + * @param maxCount 数组最大容量 + * @return 已使用ID数量 + */ +uint16_t InnerGetUsedKeyIds(uint16_t *usedIds, uint16_t maxCount) +{ + // 初始化计数器 + uint16_t count = 0; + + // 如果位图未初始化,则尝试初始化 + if (!bitmapInitialized) { + if (InitKeyIdBitmap() != 0) { + return 0; + } + } + + // 检查参数有效性 + if (usedIds == NULL || maxCount == 0) { + return 0; + } + + // 遍历所有密钥ID,查找已使用的密钥ID + for (uint16_t i = 0; i < KEY_ID_COUNT && count < maxCount; i++) { + // 检查当前密钥ID是否已使用,8:一个字节8位 + if (keyIdBitmap[i / 8] & (1 << (i % 8))) { + // 将已使用的密钥ID存入数组,并递增计数器 + usedIds[count++] = KEY_ID_START + i; + } + } + + // 返回实际获取的已使用密钥ID数量 + return count; +} +// ohos end \ No newline at end of file diff --git a/code/sdk/open_source/openharmony/base/security/huks/frameworks/crypto_lite/js/builtin/CMakeLists.txt b/code/sdk/open_source/openharmony/base/security/huks/frameworks/crypto_lite/js/builtin/CMakeLists.txt index 96ddbb304..e1d642fa8 100644 --- a/code/sdk/open_source/openharmony/base/security/huks/frameworks/crypto_lite/js/builtin/CMakeLists.txt +++ b/code/sdk/open_source/openharmony/base/security/huks/frameworks/crypto_lite/js/builtin/CMakeLists.txt @@ -14,6 +14,7 @@ set(PRIVATE_HEADER ${ROOT_DIR}/foundation/arkui/ace_engine_lite/interfaces/jsi ${ROOT_DIR}/foundation/arkui/ace_engine_lite/interfaces/base ${ROOT_DIR}/open_source/openharmony/foundation/ace/ace_engine_lite/interfaces/base + ${ROOT_DIR}/open_source/openharmony/base/security/appverify/include ) set(SOURCES diff --git a/code/sdk/open_source/openharmony/base/security/huks/frameworks/crypto_lite/js/builtin/include/cipher_module.h b/code/sdk/open_source/openharmony/base/security/huks/frameworks/crypto_lite/js/builtin/include/cipher_module.h index 5a530ecd4..dde7c0362 100644 --- a/code/sdk/open_source/openharmony/base/security/huks/frameworks/crypto_lite/js/builtin/include/cipher_module.h +++ b/code/sdk/open_source/openharmony/base/security/huks/frameworks/crypto_lite/js/builtin/include/cipher_module.h @@ -32,13 +32,31 @@ public: static JSIValue Sha256SubStarts(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum); static JSIValue Sha256SubUpdate(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum); static JSIValue Sha256SubFinish(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum); + + static JSIValue HmacSha256(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum); + static JSIValue HmacSha256Bytes(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum); + static JSIValue Md5FromString(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum); + static JSIValue Md5FromBytes(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum); + static JSIValue Base64Encode(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum); + static JSIValue Base64Decode(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum); + static JSIValue GetAvailableKeyIds(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum); + static JSIValue GetUsedKeyIds(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum); + static JSIValue DeleteKeyFromNv(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum); + static JSIValue GetKeyFromNv(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum); + static JSIValue SaveKeyToNv(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum); + static void OnDestroy(); #endif private: - static constexpr uint8_t ERR_CODE = 200; + static const int HMAC_SHA256_LEN = 32; // SHA1²»°²È«£¬·ñÔò³¤¶ÈΪ20 + static const int HMAC_SHA256_RESULT_LEN = 64; + static const int MD5_LEN = 16; + static const int MD5_RESULT_LEN = 32; + static void ResetStrBuf(char *strBuf); static CipherAesMode GetMode(char *strTransformation); static PaddingMode GetPaddingMode(char *strTransformation); + static constexpr uint8_t ERR_CODE = 200; }; void InitCipherModule(JSIValue exports); diff --git a/code/sdk/open_source/openharmony/base/security/huks/frameworks/crypto_lite/js/builtin/src/cipher_module.cpp b/code/sdk/open_source/openharmony/base/security/huks/frameworks/crypto_lite/js/builtin/src/cipher_module.cpp index c2a067550..3009a00d8 100644 --- a/code/sdk/open_source/openharmony/base/security/huks/frameworks/crypto_lite/js/builtin/src/cipher_module.cpp +++ b/code/sdk/open_source/openharmony/base/security/huks/frameworks/crypto_lite/js/builtin/src/cipher_module.cpp @@ -19,13 +19,17 @@ // OHOS BEGIN #include #ifdef HUKS_LITEWEARABLE_SUPPORT_ENABLED +#include "app_common.h" #include "mbedtls/sha256.h" +#include "mbedtls/base64.h" #include "js_async_work.h" #endif const int8_t SHA256_LEN = 32; const int8_t SHA256_RESULT_LEN = SHA256_LEN * 2; const int32_t MAX_LEN = 16384; +const int32_t MAX_TXT_LEN = 4096; +const int32_t MAX_KEY_LEN = 64; struct CipherMsgParams { char *msgBody; @@ -44,6 +48,36 @@ Sha256Context *g_sha256Context; // OHOS END namespace OHOS { namespace ACELite { +void CipherModule::ResetStrBuf(char *strBuf) +{ + if (strBuf == nullptr) { + return; + } + + int ret = memset_s(strBuf, strlen(strBuf), 0, strlen(strBuf)); + if (ret != EOK) { + HILOG_ERROR(HILOG_MODULE_ACE, "memset failed."); + } +} + +static int32_t CheckTxtLen(char *text) +{ + uint32_t textLen = strlen(text); + if (textLen == 0 || textLen > MAX_TXT_LEN) { + return ERROR_CODE_GENERAL; + } + return ERROR_SUCCESS; +} + +static int32_t CheckKeyLen(char *key) +{ + uint32_t keyLen = strlen(key); + if (keyLen == 0 || keyLen > MAX_KEY_LEN * 2) { + return ERROR_CODE_GENERAL; + } + return ERROR_SUCCESS; +} + JSIValue CipherModule::Rsa(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum) { JSIValue undefValue = JSI::CreateUndefined(); @@ -162,6 +196,7 @@ JSIValue CipherModule::Sha256All(const JSIValue thisVal, const JSIValue *args, u } RELEASE: + JSI::ReleaseValueList(success, fail, context, ARGS_END); JSI::ReleaseString(strText); return undefValue; } @@ -221,6 +256,7 @@ JSIValue CipherModule::Sha256SubFinish(const JSIValue thisVal, const JSIValue *a HILOG_ERROR(HILOG_MODULE_ACE, "Sha256SubFinish send message error."); CipherMsgToJS("Sha256SubFinish error", context, fail); } + JSI::ReleaseValueList(success, fail, context, ARGS_END); DestroySha256Context(&g_sha256Context); return undefValue; } @@ -264,6 +300,10 @@ JSIValue CipherModule::Aes(const JSIValue thisVal, const JSIValue *args, uint8_t HILOG_ERROR(HILOG_MODULE_ACE, "args error , text is nullptr"); goto RELEASE; } + if (strlen(strText) > MAX_LEN) { + HILOG_ERROR(HILOG_MODULE_ACE, "args error , text size more than 16KB"); + goto RELEASE; + } if (!strcmp(strAction, "encrypt") && paddingMode == PADDING_NONE && strlen(strText) % AES_BLOCK_SIZE != 0) { HILOG_ERROR(HILOG_MODULE_ACE, "args error , text is not valid"); goto RELEASE; @@ -326,6 +366,10 @@ RELEASE: JSI::ReleaseString(strKey); JSI::ReleaseString(strIv); JSI::ReleaseString(strTransformation); +#ifdef HUKS_LITEWEARABLE_SUPPORT_ENABLED + JSI::ReleaseValue(context); +#endif + JSI::ReleaseValueList(success, fail, jsIvLen, code, data, result, ARGS_END); DeinitAesCryptData(&aes); return undefValue; } @@ -340,17 +384,6 @@ void CipherModule::OnDestroy() } #endif // OHOS END -void CipherModule::ResetStrBuf(char *strBuf) -{ - if (strBuf == nullptr) { - return; - } - - int ret = memset_s(strBuf, strlen(strBuf), 0, strlen(strBuf)); - if (ret != EOK) { - HILOG_ERROR(HILOG_MODULE_ACE, "memset failed."); - } -} CipherAesMode CipherModule::GetMode(char *strTransformation) { @@ -390,7 +423,7 @@ static int32_t CopyStr(char **destStr, const char *srcStr) HILOG_ERROR(HILOG_MODULE_ACE, "More than Max Memory"); return -1; } - *destStr = static_cast(ace_malloc(length)); + *destStr = static_cast(APPV_MALLOC(length)); if (*destStr == nullptr) { HILOG_ERROR(HILOG_MODULE_ACE, "Failed to allocate memory for destination string"); return -1; @@ -398,37 +431,862 @@ static int32_t CopyStr(char **destStr, const char *srcStr) if (memset_s(*destStr, length, 0, length) != EOK) { HILOG_ERROR(HILOG_MODULE_ACE, "Failed to set memory for destination string"); - ace_free(*destStr); + APPV_FREE(*destStr); return -1; } if (memcpy_s(*destStr, length, srcStr, length) != EOK) { HILOG_ERROR(HILOG_MODULE_ACE, "Failed to copy source string to destination string"); - ace_free(*destStr); + APPV_FREE(*destStr); return -1; } return 0; } -static void ExecuteSendMsgToJS(void *data) +// HMAC-SHA256实现 +JSIValue CipherModule::HmacSha256(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum) { - if (data == nullptr) { - return; + int32_t ret = 0; + JSIValue undefValue = JSI::CreateUndefined(); + if ((args == nullptr) || argsNum == 0 || JSI::ValueIsUndefined(args[0])) { + HILOG_ERROR(HILOG_MODULE_ACE, "HmacSha256 args error."); + return undefValue; } - CipherMsgParams *params = static_cast(data); - char *msgBody = params->msgBody; - OHOS::ACELite::JSIValue callback = params->callback; - OHOS::ACELite::JSIValue context = params->context; - delete params; - params = nullptr; + JSIValue context = JSI::AcquireValue(thisVal); + JSIValue success = JSI::GetNamedProperty(args[0], "success"); + JSIValue fail = JSI::GetNamedProperty(args[0], "fail"); - OHOS::ACELite::JSIValue dataInfo = OHOS::ACELite::JSI::CreateString(msgBody); - OHOS::ACELite::JSIValue callbackArgv[OHOS::ACELite::ARGC_ONE] = {dataInfo}; - OHOS::ACELite::JSI::CallFunction(callback, context, callbackArgv, OHOS::ACELite::ARGC_ONE); - OHOS::ACELite::JSI::ReleaseValue(dataInfo); - ace_free(msgBody); - return; + char *text = JSI::GetStringProperty(args[0], "text"); + char *key = JSI::GetStringProperty(args[0], "key"); + unsigned char hmacResult[HMAC_SHA256_LEN]; + char result[HMAC_SHA256_RESULT_LEN + 1]; + if (text == nullptr || key == nullptr) { + HILOG_ERROR(HILOG_MODULE_ACE, "HmacSha256: text or key is null"); + CipherMsgToJS("HmacSha256: text or key is null", context, fail); + goto RELEASE; + } + if (CheckTxtLen(text) != ERROR_SUCCESS || CheckKeyLen(key) != ERROR_SUCCESS) { + HILOG_ERROR(HILOG_MODULE_ACE, "HmacSha256: the length of text or key is out of range."); + goto RELEASE; + } + + ret = HmacSha256Compute( + reinterpret_cast(key), strlen(key), + reinterpret_cast(text), strlen(text), + hmacResult + ); + if (ret != 0) { + HILOG_ERROR(HILOG_MODULE_ACE, "HmacSha256 compute error: %d", ret); + CipherMsgToJS("HmacSha256 compute error", context, fail); + goto RELEASE; + } + // 转换为十六进制字符串 + for (int i = 0; i < HMAC_SHA256_LEN; i++) { + ret = sprintf_s(&result[i * 2], 3, "%02x", hmacResult[i]); + if (ret < 0) { + HILOG_ERROR(HILOG_MODULE_ACE, "HmacSha256 sprintf_s error."); + CipherMsgToJS("HmacSha256 format error", context, fail); + goto RELEASE; + } + } + result[HMAC_SHA256_RESULT_LEN] = '\0'; + + ret = CipherMsgToJS(result, context, success); + if (ret != 0) { + HILOG_ERROR(HILOG_MODULE_ACE, "HmacSha256 send message error."); + CipherMsgToJS("HmacSha256 send message error", context, fail); + } + +RELEASE: + JSI::ReleaseValueList(success, fail, context, ARGS_END); + if (text != nullptr) { + JSI::ReleaseString(text); + } + if (key != nullptr) { + JSI::ReleaseString(key); + } + return undefValue; +} + +JSIValue CipherModule::HmacSha256Bytes(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum) +{ + int32_t ret = 0; + JSIValue result[1]; + JSIValue undefValue = JSI::CreateUndefined(); + if ((args == nullptr) || argsNum == 0 || JSI::ValueIsUndefined(args[0])) { + HILOG_ERROR(HILOG_MODULE_ACE, "HmacSha256Bytes args error."); + return undefValue; + } + + JSIValue context = JSI::AcquireValue(thisVal); + JSIValue success = JSI::GetNamedProperty(args[0], "success"); + JSIValue fail = JSI::GetNamedProperty(args[0], "fail"); + uint8_t *bufferPtr = nullptr; + JSIValue arrayBuffer = JSI::CreateUndefined(); + + char *text = JSI::GetStringProperty(args[0], "text"); + char *key = JSI::GetStringProperty(args[0], "key"); + unsigned char hmacResult[HMAC_SHA256_LEN]; + + if (text == nullptr || key == nullptr) { + HILOG_ERROR(HILOG_MODULE_ACE, "HmacSha256Bytes: text or key is null"); + CipherMsgToJS("HmacSha256Bytes: text or key is null", context, fail); + goto RELEASE; + } + if (CheckTxtLen(text) != ERROR_SUCCESS || CheckKeyLen(key) != ERROR_SUCCESS) { + HILOG_ERROR(HILOG_MODULE_ACE, "HmacSha256Bytes: the length of text or key is out of range."); + goto RELEASE; + } + + ret = HmacSha256Compute( + reinterpret_cast(key), strlen(key), + reinterpret_cast(text), strlen(text), + hmacResult + ); + if (ret != 0) { + HILOG_ERROR(HILOG_MODULE_ACE, "HmacSha256Bytes compute error: %d", ret); + CipherMsgToJS("HmacSha256Bytes compute error", context, fail); + goto RELEASE; + } + + // 创建 ArrayBuffer 并直接返回字节数组 + arrayBuffer = JSI::CreateArrayBuffer(HMAC_SHA256_LEN, bufferPtr); + if (bufferPtr == nullptr) { + HILOG_ERROR(HILOG_MODULE_ACE, "HmacSha256Bytes: CreateArrayBuffer failed"); + CipherMsgToJS("HmacSha256Bytes: CreateArrayBuffer failed", context, fail); + JSI::ReleaseValue(arrayBuffer); + goto RELEASE; + } + + // 拷贝数据到 ArrayBuffer + if (memcpy_s(bufferPtr, HMAC_SHA256_LEN, hmacResult, HMAC_SHA256_LEN) != EOK) { + HILOG_ERROR(HILOG_MODULE_ACE, "HmacSha256Bytes: memcpy_s failed"); + CipherMsgToJS("HmacSha256Bytes: memcpy_s failed", context, fail); + JSI::ReleaseValue(arrayBuffer); + goto RELEASE; + } + + // 返回 ArrayBuffer + result[0] = arrayBuffer; + JSI::CallFunction(success, context, result, 1); + JSI::ReleaseValueList(arrayBuffer, ARGS_END); + +RELEASE: + JSI::ReleaseValueList(success, fail, context, ARGS_END); + if (text != nullptr) { + JSI::ReleaseString(text); + } + if (key != nullptr) { + JSI::ReleaseString(key); + } + return undefValue; +} + +// Base64编码实现 +JSIValue CipherModule::Base64Encode(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum) +{ + int32_t ret = 0; + JSIValue undefValue = JSI::CreateUndefined(); + if ((args == nullptr) || argsNum == 0 || JSI::ValueIsUndefined(args[0])) { + HILOG_ERROR(HILOG_MODULE_ACE, "Base64Encode args error."); + return undefValue; + } + + JSIValue context = JSI::AcquireValue(thisVal); + JSIValue success = JSI::GetNamedProperty(args[0], "success"); + JSIValue fail = JSI::GetNamedProperty(args[0], "fail"); + size_t inputLen = 0; + size_t outputLen = 0; + char *base64Result = nullptr; + + char *text = JSI::GetStringProperty(args[0], "text"); + if (text == nullptr) { + HILOG_ERROR(HILOG_MODULE_ACE, "Base64Encode: text is null"); + CipherMsgToJS("Base64Encode: text is null", context, fail); + goto RELEASE; + } + if (CheckTxtLen(text) != ERROR_SUCCESS) { + HILOG_ERROR(HILOG_MODULE_ACE, "Base64Encode: the length of text is out of range."); + goto RELEASE; + } + + inputLen = strlen(text); + mbedtls_base64_encode(nullptr, 0, &outputLen, + reinterpret_cast(text), inputLen); + + base64Result = static_cast(APPV_MALLOC(outputLen + 1)); + if (base64Result == nullptr) { + HILOG_ERROR(HILOG_MODULE_ACE, "Base64Encode: malloc failed"); + CipherMsgToJS("Base64Encode: memory allocation failed", context, fail); + goto RELEASE; + } + + ret = Base64EncodeInternal( + reinterpret_cast(text), inputLen, + base64Result, outputLen + ); + + if (ret != 0) { + HILOG_ERROR(HILOG_MODULE_ACE, "Base64Encode error: %d", ret); + CipherMsgToJS("Base64Encode error", context, fail); + APPV_FREE(base64Result); + goto RELEASE; + } + + base64Result[outputLen] = '\0'; + ret = CipherMsgToJS(base64Result, context, success); + APPV_FREE(base64Result); + + if (ret != 0) { + HILOG_ERROR(HILOG_MODULE_ACE, "Base64Encode send message error."); + CipherMsgToJS("Base64Encode send message error", context, fail); + } + +RELEASE: + JSI::ReleaseValueList(success, fail, context, ARGS_END); + if (text != nullptr) { + JSI::ReleaseString(text); + } + return undefValue; +} + +// Base64解码实现 +JSIValue CipherModule::Base64Decode(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum) +{ + int32_t ret = 0; + JSIValue undefValue = JSI::CreateUndefined(); + if ((args == nullptr) || argsNum == 0 || JSI::ValueIsUndefined(args[0])) { + HILOG_ERROR(HILOG_MODULE_ACE, "Base64Decode args error."); + return undefValue; + } + + JSIValue context = JSI::AcquireValue(thisVal); + JSIValue success = JSI::GetNamedProperty(args[0], "success"); + JSIValue fail = JSI::GetNamedProperty(args[0], "fail"); + size_t inputLen = 0; + size_t outputLen = 0; + unsigned char *decodedResult = nullptr; + char *resultStr = nullptr; + + char *base64Text = JSI::GetStringProperty(args[0], "text"); + if (base64Text == nullptr) { + HILOG_ERROR(HILOG_MODULE_ACE, "Base64Decode: text is null"); + CipherMsgToJS("Base64Decode: text is null", context, fail); + goto RELEASE; + } + if (CheckTxtLen(base64Text) != ERROR_SUCCESS) { + HILOG_ERROR(HILOG_MODULE_ACE, "Base64Decode: the length of text is out of range."); + goto RELEASE; + } + + inputLen = strlen(base64Text); + mbedtls_base64_decode(nullptr, 0, &outputLen, + reinterpret_cast(base64Text), inputLen); + + decodedResult = static_cast(APPV_MALLOC(outputLen + 1)); + if (decodedResult == nullptr) { + HILOG_ERROR(HILOG_MODULE_ACE, "Base64Decode: malloc failed"); + CipherMsgToJS("Base64Decode: memory allocation failed", context, fail); + goto RELEASE; + } + + ret = Base64DecodeInternal(base64Text, inputLen, decodedResult, outputLen); + if (ret != 0) { + HILOG_ERROR(HILOG_MODULE_ACE, "Base64Decode error: %d", ret); + CipherMsgToJS("Base64Decode error", context, fail); + APPV_FREE(decodedResult); + goto RELEASE; + } + + decodedResult[outputLen] = '\0'; + resultStr = reinterpret_cast(decodedResult); + ret = CipherMsgToJS(resultStr, context, success); + APPV_FREE(decodedResult); + if (ret != 0) { + HILOG_ERROR(HILOG_MODULE_ACE, "Base64Decode send message error."); + CipherMsgToJS("Base64Decode send message error", context, fail); + } + +RELEASE: + JSI::ReleaseValueList(success, fail, context, ARGS_END); + if (base64Text != nullptr) { + JSI::ReleaseString(base64Text); + } + return undefValue; +} + +// MD5实现 +JSIValue CipherModule::Md5FromString(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum) +{ + int32_t ret = 0; + JSIValue undefValue = JSI::CreateUndefined(); + if ((args == nullptr) || argsNum == 0 || JSI::ValueIsUndefined(args[0])) { + HILOG_ERROR(HILOG_MODULE_ACE, "Md5 args error."); + return undefValue; + } + + JSIValue context = JSI::AcquireValue(thisVal); + JSIValue success = JSI::GetNamedProperty(args[0], "success"); + JSIValue fail = JSI::GetNamedProperty(args[0], "fail"); + unsigned char md5Result[MD5_LEN]; + char result[MD5_RESULT_LEN + 1]; + + char *text = JSI::GetStringProperty(args[0], "text"); + if (text == nullptr) { + HILOG_ERROR(HILOG_MODULE_ACE, "Md5: text is null"); + CipherMsgToJS("Md5: text is null", context, fail); + goto RELEASE; + } + if (CheckTxtLen(text) != ERROR_SUCCESS) { + HILOG_ERROR(HILOG_MODULE_ACE, "Md5: the length of text is out of range."); + goto RELEASE; + } + + ret = Md5Compute(reinterpret_cast(text), strlen(text), md5Result); + if (ret != 0) { + HILOG_ERROR(HILOG_MODULE_ACE, "Md5 compute error: %d", ret); + CipherMsgToJS("Md5 compute error", context, fail); + goto RELEASE; + } + + // 转换为十六进制字符串 + for (int i = 0; i < MD5_LEN; i++) { + ret = sprintf_s(&result[i * 2], 3, "%02x", md5Result[i]); + if (ret < 0) { + HILOG_ERROR(HILOG_MODULE_ACE, "Md5 sprintf_s error."); + CipherMsgToJS("Md5 format error", context, fail); + goto RELEASE; + } + } + result[MD5_RESULT_LEN] = '\0'; + + ret = CipherMsgToJS(result, context, success); + if (ret != 0) { + HILOG_ERROR(HILOG_MODULE_ACE, "Md5 send message error."); + CipherMsgToJS("Md5 send message error", context, fail); + } + +RELEASE: + JSI::ReleaseValueList(success, fail, context, ARGS_END); + if (text != nullptr) { + JSI::ReleaseString(text); + } + return undefValue; +} + +JSIValue CipherModule::Md5FromBytes(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum) +{ + int32_t ret = 0; + JSIValue undefValue = JSI::CreateUndefined(); + JSIValue context = JSI::CreateUndefined(); + JSIValue success = JSI::CreateUndefined(); + JSIValue fail = JSI::CreateUndefined(); + JSIValue dataBuffer = JSI::CreateUndefined(); + size_t dataLen = 0; + unsigned char md5Result[MD5_LEN]; + uint8_t* byteData = nullptr; + char result[MD5_LEN * 2 + 1]; + bool conversionSuccess = true; + + if ((args == nullptr) || argsNum == 0 || JSI::ValueIsUndefined(args[0])) { + HILOG_ERROR(HILOG_MODULE_ACE, "Md5FromBytes args error."); + goto RELEASE; + } + + context = JSI::AcquireValue(thisVal); + success = JSI::GetNamedProperty(args[0], "success"); + fail = JSI::GetNamedProperty(args[0], "fail"); + + // 获取 ArrayBuffer 参数 + dataBuffer = JSI::GetNamedProperty(args[0], "data"); + if (JSI::ValueIsUndefined(dataBuffer)) { + HILOG_ERROR(HILOG_MODULE_ACE, "Md5FromBytes: data is undefined"); + CipherMsgToJS("Md5FromBytes: data is undefined", context, fail); + goto RELEASE; + } + + // 从 ArrayBuffer 获取数据指针和长度 + byteData = JSI::GetArrayBufferInfo(dataBuffer, dataLen); + if (byteData == nullptr || dataLen == 0 || dataLen > MAX_KEY_LEN) { + HILOG_ERROR(HILOG_MODULE_ACE, "Md5FromBytes: invalid array buffer"); + CipherMsgToJS("Md5FromBytes: invalid array buffer", context, fail); + goto RELEASE; + } + + ret = Md5Compute(byteData, dataLen, md5Result); + if (ret != 0) { + HILOG_ERROR(HILOG_MODULE_ACE, "Md5FromBytes compute error: %d", ret); + CipherMsgToJS("Md5FromBytes compute error", context, fail); + goto RELEASE; + } + + // 转换为十六进制字符串 - 添加安全检查 + for (int i = 0; i < MD5_LEN; i++) { + // 检查缓冲区边界 + if (i * 2 + 2 > MD5_LEN * 2) { + HILOG_ERROR(HILOG_MODULE_ACE, "Md5FromBytes: buffer overflow detected"); + conversionSuccess = false; + break; + } + + // 使用 sprintf_s 并检查返回值 + int written = sprintf_s(&result[i * 2], 3, "%02x", md5Result[i]); + if (written != 2) { // 期望写入2个字符 + HILOG_ERROR(HILOG_MODULE_ACE, "Md5FromBytes: sprintf_s failed at position %d, written=%d", i, written); + conversionSuccess = false; + break; + } + } + + if (!conversionSuccess) { + HILOG_ERROR(HILOG_MODULE_ACE, "Md5FromBytes: hex conversion failed"); + CipherMsgToJS("Md5FromBytes: hex conversion failed", context, fail); + goto RELEASE; + } + + result[MD5_LEN * 2] = '\0'; + + ret = CipherMsgToJS(result, context, success); + if (ret != 0) { + HILOG_ERROR(HILOG_MODULE_ACE, "Md5FromBytes send message error."); + CipherMsgToJS("Md5FromBytes send message error", context, fail); + } + +RELEASE: + JSI::ReleaseValueList(success, fail, context, dataBuffer, ARGS_END); + return undefValue; +} + +// 最大密钥ID数量 +#define MAX_KEY_IDS_COUNT 100 + +// 将密钥内容字节数组转换为十六进制字符串 +static char* BytesToHexString(const uint8_t *bytes, uint32_t len) +{ + if (bytes == NULL || len == 0) { + return NULL; + } + + char *hexStr = (char*)APPV_MALLOC(len * 2 + 1); + if (hexStr == NULL) { + return NULL; + } + + for (uint32_t i = 0; i < len; i++) { + int written = snprintf_s(&hexStr[i * 2], 3, 2, "%02x", bytes[i]); + if (written < 0 || written >= 3) { + APPV_FREE(hexStr); + return NULL; + } + } + hexStr[len * 2] = '\0'; + + return hexStr; +} + +// 将密钥ID数组转换为十六进制字符串 +static char* KeyIdsToHexString(uint16_t *keyIds, uint16_t count) +{ + if (keyIds == NULL || count == 0) { + return NULL; + } + + // 每个keyId占4个十六进制字符,加上分隔符和结束符 + char *hexStr = (char*)APPV_MALLOC(count * 5); // 5: 4字符 + 1分隔符 + if (hexStr == NULL) { + return NULL; + } + + int offset = 0; + for (uint16_t i = 0; i < count; i++) { + // 5: 4字符 + 1分隔符 + int written = snprintf_s(hexStr + offset, 5, 4, "%04X", keyIds[i]); + if (written < 0 || written >= 5) { + APPV_FREE(hexStr); + return NULL; + } + offset += written; + + // 添加分隔符(最后一个不添加) + if (i < count - 1) { + hexStr[offset] = ','; + offset++; + } + } + hexStr[offset] = '\0'; + + return hexStr; +} + +// 将十六进制字符串转换为字节数组 +static int HexStringToBytes(const char *hexStr, uint8_t *bytes, uint32_t maxLen) +{ + if (hexStr == NULL || bytes == NULL) { + return -1; + } + + size_t hexLen = strlen(hexStr); + if (hexLen % 2 != 0 || hexLen / 2 > maxLen) { + return -1; + } + + for (size_t i = 0; i < hexLen; i += 2) { + char hexByte[3] = {hexStr[i], hexStr[i + 1], '\0'}; + bytes[i / 2] = (uint8_t)strtol(hexByte, NULL, 16); + } + + return hexLen / 2; +} + +/** + * @brief 获取已使用的密钥ID列表 + */ +JSIValue CipherModule::GetUsedKeyIds(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum) +{ + // 提前声明所有变量 + JSIValue undefValue = JSI::CreateUndefined(); + JSIValue context = JSI::CreateUndefined(); + JSIValue success = JSI::CreateUndefined(); + JSIValue fail = JSI::CreateUndefined(); + JSIValue countValue = JSI::CreateUndefined(); + uint16_t maxCount = MAX_KEY_IDS_COUNT; + uint16_t *usedIds = NULL; + uint16_t actualCount = 0; + char *hexString = NULL; + + if ((args == nullptr) || argsNum == 0 || JSI::ValueIsUndefined(args[0])) { + HILOG_ERROR(HILOG_MODULE_ACE, "GetUsedKeyIdsJSI args error."); + goto release; + } + + context = JSI::AcquireValue(thisVal); + success = JSI::GetNamedProperty(args[0], "success"); + fail = JSI::GetNamedProperty(args[0], "fail"); + + // 获取count参数,默认为MAX_KEY_IDS_COUNT + countValue = JSI::GetNamedProperty(args[0], "count"); + if (!JSI::ValueIsUndefined(countValue)) { + maxCount = (uint16_t)JSI::ValueToNumber(countValue); + if (maxCount > MAX_KEY_IDS_COUNT) { + maxCount = MAX_KEY_IDS_COUNT; + } + } + + usedIds = (uint16_t*)APPV_MALLOC(maxCount * sizeof(uint16_t)); + if (usedIds == NULL) { + HILOG_ERROR(HILOG_MODULE_ACE, "GetUsedKeyIds: memory allocation failed"); + CipherMsgToJS("Memory allocation failed", context, fail); + goto release; + } + + actualCount = InnerGetUsedKeyIds(usedIds, maxCount); + + if (actualCount == 0) { + HILOG_INFO(HILOG_MODULE_ACE, "No used key IDs found"); + CipherMsgToJS("", context, success); + goto release; + } + + // 将密钥ID数组转换为十六进制字符串 + hexString = KeyIdsToHexString(usedIds, actualCount); + if (hexString != NULL) { + CipherMsgToJS(hexString, context, success); + } else { + HILOG_ERROR(HILOG_MODULE_ACE, "GetUsedKeyIds: hex string conversion failed"); + CipherMsgToJS("Data conversion failed", context, fail); + } + +release: + // 释放所有分配的内存 + APPV_FREE(usedIds); + APPV_FREE(hexString); + JSI::ReleaseValueList(countValue, success, fail, context, ARGS_END); + return undefValue; +} + +/** + * @brief 获取可用的密钥ID列表 + */ +JSIValue CipherModule::GetAvailableKeyIds(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum) +{ + // 提前声明所有变量 + JSIValue undefValue = JSI::CreateUndefined(); + JSIValue context = JSI::CreateUndefined(); + JSIValue success = JSI::CreateUndefined(); + JSIValue fail = JSI::CreateUndefined(); + JSIValue countValue = JSI::CreateUndefined(); + uint16_t maxCount = MAX_KEY_IDS_COUNT; + uint16_t *availableIds = NULL; + uint16_t actualCount = 0; + char *hexString = NULL; + + if ((args == nullptr) || argsNum == 0 || JSI::ValueIsUndefined(args[0])) { + HILOG_ERROR(HILOG_MODULE_ACE, "GetAvailableKeyIdsJSI args error."); + goto release; + } + + context = JSI::AcquireValue(thisVal); + success = JSI::GetNamedProperty(args[0], "success"); + fail = JSI::GetNamedProperty(args[0], "fail"); + + // 获取count参数,默认为MAX_KEY_IDS_COUNT + countValue = JSI::GetNamedProperty(args[0], "count"); + if (!JSI::ValueIsUndefined(countValue)) { + maxCount = (uint16_t)JSI::ValueToNumber(countValue); + if (maxCount > MAX_KEY_IDS_COUNT) { + maxCount = MAX_KEY_IDS_COUNT; + } + } + + availableIds = (uint16_t*)APPV_MALLOC(maxCount * sizeof(uint16_t)); + if (availableIds == NULL) { + HILOG_ERROR(HILOG_MODULE_ACE, "GetAvailableKeyIds: memory allocation failed"); + CipherMsgToJS("Memory allocation failed", context, fail); + goto release; + } + + actualCount = InnerGetAvailableKeyIds(availableIds, maxCount); + if (actualCount == 0) { + HILOG_INFO(HILOG_MODULE_ACE, "No available key IDs found"); + CipherMsgToJS("", context, success); + goto release; + } + + // 将密钥ID数组转换为十六进制字符串 + hexString = KeyIdsToHexString(availableIds, actualCount); + if (hexString != NULL) { + CipherMsgToJS(hexString, context, success); + } else { + HILOG_ERROR(HILOG_MODULE_ACE, "GetAvailableKeyIds: hex string conversion failed"); + CipherMsgToJS("Data conversion failed", context, fail); + } + +release: + // 释放所有分配的内存 + APPV_FREE(availableIds); + APPV_FREE(hexString); + JSI::ReleaseValueList(countValue, success, fail, context, ARGS_END); + return undefValue; +} + +/** + * @brief 删除密钥 + */ +JSIValue CipherModule::DeleteKeyFromNv(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum) +{ + // 提前声明所有变量 + JSIValue undefValue = JSI::CreateUndefined(); + JSIValue context = JSI::CreateUndefined(); + JSIValue success = JSI::CreateUndefined(); + JSIValue fail = JSI::CreateUndefined(); + JSIValue keyIdValue = JSI::CreateUndefined(); + uint16_t keyId = 0; + int32_t ret = 0; + + if ((args == nullptr) || argsNum == 0 || JSI::ValueIsUndefined(args[0])) { + HILOG_ERROR(HILOG_MODULE_ACE, "DeleteKeyFromNvJSI args error."); + goto release; + } + + context = JSI::AcquireValue(thisVal); + success = JSI::GetNamedProperty(args[0], "success"); + fail = JSI::GetNamedProperty(args[0], "fail"); + + // 获取keyId参数 + keyIdValue = JSI::GetNamedProperty(args[0], "keyId"); + if (JSI::ValueIsUndefined(keyIdValue)) { + HILOG_ERROR(HILOG_MODULE_ACE, "DeleteKeyFromNvJSI: keyId is required"); + CipherMsgToJS("keyId is required", context, fail); + goto release; + } + + keyId = (uint16_t)JSI::ValueToNumber(keyIdValue); + + ret = InnerDeleteKeyFromNv(keyId); + if (ret != 0) { + HILOG_ERROR(HILOG_MODULE_ACE, "DeleteKeyFromNv failed: %d", ret); + CipherMsgToJS("Key deleted failed", context, fail); + } else { + CipherMsgToJS("Key deleted successfully", context, success); + } + +release: + JSI::ReleaseValueList(keyIdValue, success, fail, context, ARGS_END); + return undefValue; +} + +/** + * @brief 读取密钥 + */ +JSIValue CipherModule::GetKeyFromNv(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum) { + // 提前声明所有变量 + JSIValue undefValue = JSI::CreateUndefined(); + JSIValue context = JSI::CreateUndefined(); + JSIValue success = JSI::CreateUndefined(); + JSIValue fail = JSI::CreateUndefined(); + JSIValue keyIdValue = JSI::CreateUndefined(); + uint16_t keyId = 0; + uint8_t *keyData = NULL; + int32_t ret = 0; + char *hexKey = NULL; + uint16_t actualKeyLen = 0; // 新增:实际密钥长度 + + if ((args == nullptr) || argsNum == 0 || JSI::ValueIsUndefined(args[0])) { + HILOG_ERROR(HILOG_MODULE_ACE, "GetKeyFromNvJSI args error."); + goto release; + } + + context = JSI::AcquireValue(thisVal); + success = JSI::GetNamedProperty(args[0], "success"); + fail = JSI::GetNamedProperty(args[0], "fail"); + + // 获取keyId参数 + keyIdValue = JSI::GetNamedProperty(args[0], "keyId"); + if (JSI::ValueIsUndefined(keyIdValue)) { + HILOG_ERROR(HILOG_MODULE_ACE, "GetKeyFromNvJSI: keyId is required"); + CipherMsgToJS("keyId is required", context, fail); + goto release; + } + + keyId = (uint16_t)JSI::ValueToNumber(keyIdValue); + + keyData = (uint8_t*)APPV_MALLOC(UT_NV_MAX_LENGTH); + if (keyData == NULL) { + HILOG_ERROR(HILOG_MODULE_ACE, "GetKeyFromNv: memory allocation failed"); + CipherMsgToJS("Memory allocation failed", context, fail); + goto release; + } + + // 修改:调用支持实际长度的InnerGetKeyFromNv + ret = InnerGetKeyFromNv(keyId, keyData, &actualKeyLen); + if (ret != 0) { + HILOG_ERROR(HILOG_MODULE_ACE, "GetKeyFromNv failed: %d", ret); + CipherMsgToJS("Get key failed!", context, fail); + } else { + // 修改:使用实际长度转换十六进制字符串 + hexKey = BytesToHexString(keyData, actualKeyLen); + if (hexKey != NULL) { + CipherMsgToJS(hexKey, context, success); + } else { + CipherMsgToJS("Key data format conversion failed", context, fail); + } + } + +release: + // 释放所有分配的内存 + APPV_FREE(keyData); + APPV_FREE(hexKey); + JSI::ReleaseValueList(keyIdValue, success, fail, context, ARGS_END); + return undefValue; +} + +/** + * @brief 保存密钥 + */ +/** + * @brief 保存密钥 - 优化内存使用 + */ +JSIValue CipherModule::SaveKeyToNv(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum) { + // 提前声明所有变量 + int32_t ret = 0; + uint8_t *keyData = NULL; + uint16_t keyId = 0; + bool overwrite = false; + int keyLen = 0; + char *keyDataHex = NULL; + size_t hexLen = 0; + size_t actualDataLen = 0; + + JSIValue undefValue = JSI::CreateUndefined(); + JSIValue context = JSI::CreateUndefined(); + JSIValue success = JSI::CreateUndefined(); + JSIValue fail = JSI::CreateUndefined(); + JSIValue keyIdValue = JSI::CreateUndefined(); + JSIValue keyDataValue = JSI::CreateUndefined(); + JSIValue overwriteValue = JSI::CreateUndefined(); + + if ((args == nullptr) || argsNum == 0 || JSI::ValueIsUndefined(args[0])) { + HILOG_ERROR(HILOG_MODULE_ACE, "SaveKeyToNvJSI args error."); + goto release; + } + + context = JSI::AcquireValue(thisVal); + success = JSI::GetNamedProperty(args[0], "success"); + fail = JSI::GetNamedProperty(args[0], "fail"); + + // 获取必需参数 + keyIdValue = JSI::GetNamedProperty(args[0], "keyId"); + keyDataValue = JSI::GetNamedProperty(args[0], "keyData"); + overwriteValue = JSI::GetNamedProperty(args[0], "overwrite"); + + if (JSI::ValueIsUndefined(keyIdValue) || JSI::ValueIsUndefined(keyDataValue)) { + HILOG_ERROR(HILOG_MODULE_ACE, "SaveKeyToNvJSI: keyId and keyData are required"); + CipherMsgToJS("keyId and keyData are required", context, fail); + goto release; + } + + keyId = (uint16_t)JSI::ValueToNumber(keyIdValue); + overwrite = JSI::ValueToBoolean(overwriteValue); + + // 获取密钥数据字符串 + keyDataHex = JSI::GetStringProperty(args[0], "keyData"); + if (keyDataHex == NULL) { + HILOG_ERROR(HILOG_MODULE_ACE, "SaveKeyToNvJSI: keyData is null"); + CipherMsgToJS("keyData is null", context, fail); + goto release; + } + + // 计算实际需要的缓冲区大小 + hexLen = strlen(keyDataHex); + if (hexLen % 2 != 0) { + HILOG_ERROR(HILOG_MODULE_ACE, "SaveKeyToNvJSI: keyData format error (odd length)"); + CipherMsgToJS("keyData format error (must be even length hex string)", context, fail); + JSI::ReleaseString(keyDataHex); + goto release; + } + + actualDataLen = hexLen / 2; + if (actualDataLen > UT_NV_MAX_LENGTH) { + HILOG_ERROR(HILOG_MODULE_ACE, "SaveKeyToNvJSI: keyData too long"); + CipherMsgToJS("keyData too long", context, fail); + JSI::ReleaseString(keyDataHex); + goto release; + } + + // 修改:按实际长度分配内存 + keyData = (uint8_t*)APPV_MALLOC(actualDataLen); + if (keyData == NULL) { + HILOG_ERROR(HILOG_MODULE_ACE, "SaveKeyToNv: memory allocation failed"); + CipherMsgToJS("Memory allocation failed", context, fail); + JSI::ReleaseString(keyDataHex); + goto release; + } + + // 将十六进制字符串转换为字节数组 + keyLen = HexStringToBytes(keyDataHex, keyData, actualDataLen); + if (keyLen <= 0) { + HILOG_ERROR(HILOG_MODULE_ACE, "SaveKeyToNvJSI: keyData format error"); + CipherMsgToJS("keyData format error (must be hex string)", context, fail); + JSI::ReleaseString(keyDataHex); + goto release; + } + + ret = InnerSaveKeyToNv(keyData, keyLen, keyId, overwrite); + if (ret != 0) { + HILOG_ERROR(HILOG_MODULE_ACE, "SaveKeyToNv failed: %d", ret); + CipherMsgToJS("Save key failed!", context, fail); + } else { + CipherMsgToJS("Key saved successfully", context, success); + } + + JSI::ReleaseString(keyDataHex); + +release: + // 释放所有分配的内存 + APPV_FREE(keyData); + JSI::ReleaseValueList(keyIdValue, keyDataValue, overwriteValue, success, fail, context, ARGS_END); + return undefValue; } #endif // OHOS END @@ -441,6 +1299,19 @@ void InitCipherModule(JSIValue exports) JSI::SetModuleAPI(exports, "shaInit", CipherModule::Sha256SubStarts); JSI::SetModuleAPI(exports, "shaUpdate", CipherModule::Sha256SubUpdate); JSI::SetModuleAPI(exports, "shaFinal", CipherModule::Sha256SubFinish); + + JSI::SetModuleAPI(exports, "hmacSha256", CipherModule::HmacSha256); + JSI::SetModuleAPI(exports, "hmacSha256Bytes", CipherModule::HmacSha256Bytes); + JSI::SetModuleAPI(exports, "md5FromBytes", CipherModule::Md5FromBytes); + JSI::SetModuleAPI(exports, "md5FromString", CipherModule::Md5FromString); + JSI::SetModuleAPI(exports, "base64Encode", CipherModule::Base64Encode); + JSI::SetModuleAPI(exports, "base64Decode", CipherModule::Base64Decode); + JSI::SetModuleAPI(exports, "getUsedKeyIds", CipherModule::GetUsedKeyIds); + JSI::SetModuleAPI(exports, "getAvailableKeyIds", CipherModule::GetAvailableKeyIds); + JSI::SetModuleAPI(exports, "deleteKeyFromNv", CipherModule::DeleteKeyFromNv); + JSI::SetModuleAPI(exports, "getKeyFromNv", CipherModule::GetKeyFromNv); + JSI::SetModuleAPI(exports, "saveKeyToNv", CipherModule::SaveKeyToNv); + JSI::SetOnDestroy(exports, CipherModule::OnDestroy); #endif } @@ -449,6 +1320,30 @@ void InitCipherModule(JSIValue exports) } // namespace OHOS // OHOS START #ifdef HUKS_LITEWEARABLE_SUPPORT_ENABLED +static void ExecuteSendMsgToJS(void *data) +{ + if (data == nullptr) { + return; + } + CipherMsgParams *params = static_cast(data); + + char *msgBody = params->msgBody; + OHOS::ACELite::JSIValue callback = params->callback; + OHOS::ACELite::JSIValue context = params->context; + params->msgBody = nullptr; + delete params; + params = nullptr; + + OHOS::ACELite::JSIValue dataInfo = OHOS::ACELite::JSI::CreateString(msgBody); + OHOS::ACELite::JSIValue callbackArgv[OHOS::ACELite::ARGC_ONE] = {dataInfo}; + OHOS::ACELite::JSI::CallFunction(callback, context, callbackArgv, OHOS::ACELite::ARGC_ONE); + OHOS::ACELite::JSI::ReleaseValue(dataInfo); + OHOS::ACELite::JSI::ReleaseValue(callback); + OHOS::ACELite::JSI::ReleaseValue(context); + OHOS::ACELite::ace_free(msgBody); + return; +} + int32_t CipherMsgToJS(const char *msgBody, OHOS::ACELite::JSIValue context, OHOS::ACELite::JSIValue callback) { CipherMsgParams *params = new CipherMsgParams(); @@ -456,11 +1351,13 @@ int32_t CipherMsgToJS(const char *msgBody, OHOS::ACELite::JSIValue context, OHOS HILOG_ERROR(HILOG_MODULE_ACE, "Failed to allocate memory for params"); return -1; } - params->context = context; - params->callback = callback; + params->context = OHOS::ACELite::JSI::AcquireValue(context); + params->callback = OHOS::ACELite::JSI::AcquireValue(callback); int32_t copyRet = OHOS::ACELite::CopyStr(¶ms->msgBody, msgBody); if (copyRet != 0) { HILOG_ERROR(HILOG_MODULE_ACE, "Failed to copy msgBody"); + OHOS::ACELite::JSI::ReleaseValue(params->callback); + OHOS::ACELite::JSI::ReleaseValue(params->context); OHOS::ACELite::ace_free(params->msgBody); params->msgBody = nullptr; delete params; @@ -468,9 +1365,11 @@ int32_t CipherMsgToJS(const char *msgBody, OHOS::ACELite::JSIValue context, OHOS return copyRet; } bool ret = - OHOS::ACELite::JsAsyncWork::DispatchAsyncWork(OHOS::ACELite::ExecuteSendMsgToJS, static_cast(params)); + OHOS::ACELite::JsAsyncWork::DispatchAsyncWork(ExecuteSendMsgToJS, static_cast(params)); if (!ret) { HILOG_ERROR(HILOG_MODULE_ACE, "Failed to dispatch async work"); + OHOS::ACELite::JSI::ReleaseValue(params->callback); + OHOS::ACELite::JSI::ReleaseValue(params->context); OHOS::ACELite::ace_free(params->msgBody); params->msgBody = nullptr; delete params; diff --git a/code/sdk/open_source/openharmony/base/sensors/frameworks/src/sensor_agent.c b/code/sdk/open_source/openharmony/base/sensors/frameworks/src/sensor_agent.c index 540175fa2..087159309 100644 --- a/code/sdk/open_source/openharmony/base/sensors/frameworks/src/sensor_agent.c +++ b/code/sdk/open_source/openharmony/base/sensors/frameworks/src/sensor_agent.c @@ -79,4 +79,13 @@ int32_t SetOption(int32_t sensorTypeId, SensorUser *user, int32_t option) g_proxy = GetServiceProxy(); } return SetOptionByProxy(g_proxy, sensorTypeId, user, option); -} \ No newline at end of file +} +// ohos-hisi begin +int32_t GetSensorData(int32_t sensorTypeId, SensorUser *user, void *sensorData) +{ + if (g_proxy == NULL) { + g_proxy = GetServiceProxy(); + } + return GetSensorDataByProxy(g_proxy, sensorTypeId, user, sensorData); +} +// ohos-hisi end \ No newline at end of file diff --git a/code/sdk/open_source/openharmony/base/sensors/frameworks/src/sensor_agent_proxy.c b/code/sdk/open_source/openharmony/base/sensors/frameworks/src/sensor_agent_proxy.c index b2f544086..abda9b62a 100644 --- a/code/sdk/open_source/openharmony/base/sensors/frameworks/src/sensor_agent_proxy.c +++ b/code/sdk/open_source/openharmony/base/sensors/frameworks/src/sensor_agent_proxy.c @@ -114,3 +114,16 @@ int32_t SetOptionByProxy(const void *proxy, int32_t sensorId, const SensorUser * SensorFeatureApi *sensor = (SensorFeatureApi *)proxy; return sensor->SetOption(sensorId, user, option); } + +// ohos-hisi begin +int32_t GetSensorDataByProxy(const void *proxy, int32_t sensorId, const SensorUser *user, void *sensorData) +{ + HILOG_DEBUG(HILOG_MODULE_APP, "%s begin", __func__); + if ((proxy == NULL) || (user == NULL)) { + HILOG_ERROR(HILOG_MODULE_APP, "%s proxy or user is NULL", __func__); + return SENSOR_ERROR_INVALID_PARAM; + } + SensorFeatureApi *sensor = (SensorFeatureApi *)proxy; + return sensor->GetData(sensorId, user, sensorData); +} +// ohos-hisi end \ No newline at end of file diff --git a/code/sdk/open_source/openharmony/base/sensors/interfaces/kits/native/include/sensor_agent.h b/code/sdk/open_source/openharmony/base/sensors/interfaces/kits/native/include/sensor_agent.h index 4654751b5..c26d27ffd 100644 --- a/code/sdk/open_source/openharmony/base/sensors/interfaces/kits/native/include/sensor_agent.h +++ b/code/sdk/open_source/openharmony/base/sensors/interfaces/kits/native/include/sensor_agent.h @@ -133,7 +133,20 @@ int32_t DeactivateSensor(int32_t sensorTypeId, SensorUser *user); * @since 5 */ int32_t SetMode(int32_t sensorTypeId, SensorUser *user, int32_t mode); - +// ohos-hisi begin +/** +* @brief Get the data of the specified sensor stored. +* +* @param sensorTypeId Indicates the ID of a sensor type. For details, see {@link SensorTypeId}. +* @param user Indicates the pointer to the sensor subscriber that requests sensor data. +* For details, see {@link SensorUser}. A subscriber can obtain data from only one sensor. +* @param sensorData Indicates the data of sensor stored For details, see {@link SensorData}. +* @return Returns 0 if get sensor data successfully; returns a non-zero value otherwise. +* +* @since 5 +*/ +int32_t GetSensorData(int32_t sensorTypeId, SensorUser *user, void *sensorData); +// ohos-hisi end #ifdef __cplusplus #if __cplusplus } diff --git a/code/sdk/open_source/openharmony/base/sensors/interfaces/kits/native/include/sensor_agent_type.h b/code/sdk/open_source/openharmony/base/sensors/interfaces/kits/native/include/sensor_agent_type.h index e02b04c3b..71bbaf997 100644 --- a/code/sdk/open_source/openharmony/base/sensors/interfaces/kits/native/include/sensor_agent_type.h +++ b/code/sdk/open_source/openharmony/base/sensors/interfaces/kits/native/include/sensor_agent_type.h @@ -51,7 +51,7 @@ extern "C" { #define SENSOR_OK 0 #ifndef SENSOR_NAME_MAX_LEN /** Maximum length of the sensor name */ -#define SENSOR_NAME_MAX_LEN 16 +#define SENSOR_NAME_MAX_LEN 32 #endif /* SENSOR_NAME_MAX_LEN */ #ifndef SENSOR_USER_DATA_SIZE @@ -101,7 +101,11 @@ typedef enum SensorTypeId { SENSOR_TYPE_ID_DEVICE_ORIENTATION = 279, /**< Device orientation sensor */ SENSOR_TYPE_ID_WEAR_DETECTION = 280, /**< Wear detection sensor */ SENSOR_TYPE_ID_ACCELEROMETER_UNCALIBRATED = 281, /**< Uncalibrated acceleration sensor */ - SENSOR_TYPE_ID_MAX = 0xFFF, /**< Maximum number of sensor type IDs*/ + // ohos-hisi begin + SENSOR_TYPE_ID_VSENSOR_EXPAND_START = 0x1000, /* 4096 */ + SENSOR_TYPE_ID_VSENSOR_ACCELEROMETER_ALG_SIMU, /**< ACCELEROMETER ALG sensor */ + SENSOR_TYPE_ID_MAX, /**< Maximum number of sensor types */ + // ohos-hisi end } SensorTypeId; /** @@ -117,8 +121,12 @@ typedef struct SensorInfo { int32_t sensorTypeId; /**< Sensor type ID */ int32_t sensorId; /**< Sensor ID */ float maxRange; /**< Maximum measurement range of the sensor */ - float precision; /**< Sensor accuracy */ + float accuracy; /**< Sensor accuracy */ float power; /**< Sensor power */ + int64_t minDelay; /**< Minimum sample period allowed in microseconds */ + int64_t maxDelay; /**< Maxmum sample period allowed in microseconds */ + uint32_t fifoMaxEventCount; /**< Maxmum number of events of this sensor that could be batched */ + uint32_t reserved; /**< Reserved fields */ } SensorInfo; /** diff --git a/code/sdk/open_source/openharmony/base/sensors/interfaces/kits/native/include/sensor_agent_type_ext.h b/code/sdk/open_source/openharmony/base/sensors/interfaces/kits/native/include/sensor_agent_type_ext.h index 2af904c81..59c6209f6 100644 --- a/code/sdk/open_source/openharmony/base/sensors/interfaces/kits/native/include/sensor_agent_type_ext.h +++ b/code/sdk/open_source/openharmony/base/sensors/interfaces/kits/native/include/sensor_agent_type_ext.h @@ -66,6 +66,18 @@ typedef struct PressureData { uint32_t dataValid; } PressureData; +/** + * @brief Defines the sensor data. + * + * @since 5 + */ +typedef struct SensorData { + int64_t timestamp; /**< Time when sensor data was reported */ + uint32_t batchCnt; /**< Sensor batch cnt */ + uint8_t *data; /**< Sensor data */ + uint32_t dataLen; /**< Sensor data length */ +} SensorData; + #ifdef __cplusplus #if __cplusplus } diff --git a/code/sdk/open_source/openharmony/base/sensors/location/interfaces/kits/include/location.h b/code/sdk/open_source/openharmony/base/sensors/location/interfaces/kits/include/location.h index 5a601bbca..2d329684b 100644 --- a/code/sdk/open_source/openharmony/base/sensors/location/interfaces/kits/include/location.h +++ b/code/sdk/open_source/openharmony/base/sensors/location/interfaces/kits/include/location.h @@ -172,6 +172,36 @@ public: { directionAccuracy_ = directionAccuracy; } + + inline double GetNorthVelocity() const + { + return velocityNorth_; + } + + inline void SetNorthVelocity(double velocityNorth) + { + velocityNorth_ = velocityNorth; + } + + inline double GetEastVelocity() const + { + return velocityEast_; + } + + inline void SetEastVelocity(double velocityEast) + { + velocityEast_ = velocityEast; + } + + inline double GetDescendVelocity() const + { + return velocityDescend_; + } + + inline void SetDescendVelocity(double velocityDescend) + { + velocityDescend_ = velocityDescend; + } inline int32_t GetLocationSourceType() const { @@ -183,6 +213,16 @@ public: locationSourceType_ = locationSourceType; } + inline int32_t GetStatusNumber() const + { + return statusNumber_; + } + + inline void SetStatusNumber(int32_t statusNumber) + { + statusNumber_ = statusNumber; + } + inline std::string GetUuid() const { return uuid_; @@ -217,8 +257,12 @@ private: double altitudeAccuracy_; double speedAccuracy_; double directionAccuracy_; + float velocityNorth_; + float velocityEast_; + float velocityDescend_; int64_t uncertaintyOfTimeSinceBoot_; int32_t locationSourceType_; + int32_t statusNumber_; std::string uuid_; }; } // namespace Location diff --git a/code/sdk/open_source/openharmony/base/sensors/location/sample/location_sample.cpp b/code/sdk/open_source/openharmony/base/sensors/location/sample/location_sample.cpp index 4a9a24c2c..fcc7048f2 100644 --- a/code/sdk/open_source/openharmony/base/sensors/location/sample/location_sample.cpp +++ b/code/sdk/open_source/openharmony/base/sensors/location/sample/location_sample.cpp @@ -89,9 +89,11 @@ public: void OnLocationReport(const std::shared_ptr &location) override { - WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "OnLocationReport Lat:%.3f Long:%.3f Alt:%.3f Speed:%.3f dir:%.3f\n", + WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "OnLocationReport Lat:%.3f Long:%.3f Alt:%.3f Speed:%.3f dir:%.3f" + " AltitudeAccuracy:%.3f SpeedAccuracy:%.3f DirectionAccuracy:%.3f Nvelocity:%.3f Evelocity:%.3f DVelocity:%.3f statusNumber:%d\n", location->GetLatitude(), location->GetLongitude(), location->GetAltitude(), - location->GetSpeed(), location->GetDirection()); + location->GetSpeed(), location->GetDirection(), location->GetAltitudeAccuracy(), location->GetSpeedAccuracy(), location->GetDirectionAccuracy(), + location->GetNorthVelocity(), location->GetEastVelocity(), location->GetDescendVelocity(), location->GetStatusNumber()); } void OnErrorReport(const int errorCode) override diff --git a/code/sdk/open_source/openharmony/base/sensors/location/services/location_gnss/gnss/source/gnss_event_callback.cpp b/code/sdk/open_source/openharmony/base/sensors/location/services/location_gnss/gnss/source/gnss_event_callback.cpp index ae3237c2d..6f59d9233 100644 --- a/code/sdk/open_source/openharmony/base/sensors/location/services/location_gnss/gnss/source/gnss_event_callback.cpp +++ b/code/sdk/open_source/openharmony/base/sensors/location/services/location_gnss/gnss/source/gnss_event_callback.cpp @@ -62,9 +62,13 @@ int32_t GnssEventCallback::ReportLocation(const LocationInfo& location) locationNew->SetAltitudeAccuracy(location.verticalAccuracy); locationNew->SetSpeedAccuracy(location.speedAccuracy); locationNew->SetDirectionAccuracy(location.bearingAccuracy); + locationNew->SetNorthVelocity(location.velocityNorth); + locationNew->SetEastVelocity(location.velocityEast); + locationNew->SetDescendVelocity(location.velocityDescend); locationNew->SetTimeStamp(location.timeForFix); locationNew->SetTimeSinceBoot(location.timeSinceBoot); locationNew->SetUncertaintyOfTimeSinceBoot(location.timeUncertainty); + locationNew->SetStatusNumber(location.signal); locationNew->SetLocationSourceType(LocationSourceType::GNSS_TYPE); // add dummy sv if needed diff --git a/code/sdk/open_source/openharmony/base/sensors/location/services/utils/source/location.cpp b/code/sdk/open_source/openharmony/base/sensors/location/services/utils/source/location.cpp index c4a61c29e..2b6373a4c 100644 --- a/code/sdk/open_source/openharmony/base/sensors/location/services/utils/source/location.cpp +++ b/code/sdk/open_source/openharmony/base/sensors/location/services/utils/source/location.cpp @@ -34,8 +34,12 @@ Location::Location() altitudeAccuracy_ = 0.0; speedAccuracy_ = 0.0; directionAccuracy_ = 0.0; + velocityNorth_ = 0.0; + velocityEast_ = 0.0; + velocityDescend_ = 0.0; uncertaintyOfTimeSinceBoot_ = 0; locationSourceType_ = 0; + statusNumber_ = 0; uuid_ = ""; } @@ -55,8 +59,12 @@ Location::Location(Location& location) altitudeAccuracy_ = location.GetAltitudeAccuracy(); speedAccuracy_ = location.GetSpeedAccuracy(); directionAccuracy_ = location.GetDirectionAccuracy(); + velocityNorth_ = location.GetNorthVelocity(); + velocityEast_ = location.GetEastVelocity(); + velocityDescend_ = location.GetDescendVelocity(); uncertaintyOfTimeSinceBoot_ = location.GetUncertaintyOfTimeSinceBoot(); locationSourceType_ = location.GetLocationSourceType(); + statusNumber_ = location.GetStatusNumber(); uuid_ = location.GetUuid(); } @@ -73,8 +81,12 @@ std::string Location::ToString() const ", altitudeAccuracy : " + std::to_string(altitudeAccuracy_) + ", speedAccuracy : " + std::to_string(speedAccuracy_) + ", directionAccuracy : " + std::to_string(directionAccuracy_) + + ", velocityEast : " + std::to_string(velocityEast_) + + ", velocityNorth_ : " + std::to_string(velocityNorth_) + + ", velocityDescend_ : " + std::to_string(velocityDescend_) + ", uncertaintyOfTimeSinceBoot : " + std::to_string(uncertaintyOfTimeSinceBoot_) + ", locationSourceType : " + std::to_string(locationSourceType_) + + ", statusNumber : " + std::to_string(statusNumber_) + ", uuid : " + uuid_; return str; } diff --git a/code/sdk/open_source/openharmony/base/sensors/sample/sensor_sample.cpp b/code/sdk/open_source/openharmony/base/sensors/sample/sensor_sample.cpp index 1d30f0d9e..b87d4219b 100644 --- a/code/sdk/open_source/openharmony/base/sensors/sample/sensor_sample.cpp +++ b/code/sdk/open_source/openharmony/base/sensors/sample/sensor_sample.cpp @@ -38,6 +38,7 @@ static int32_t SensorSubscribe(SensorTypeId sensorTypeId); static int32_t SensorActivate(SensorTypeId sensorTypeId); static int32_t SensorUnsubscribe(SensorTypeId sensorTypeId); static int32_t SensorDeactivate(SensorTypeId sensorTypeId); +static int32_t SensorGetData(SensorTypeId sensorTypeId); typedef struct { char cmd[SENSOR_CMD_LEN_MAX]; @@ -50,6 +51,7 @@ static FuncsMap g_sensorFuncs[] = { {"activate", SensorActivate}, {"unsubscribe", SensorUnsubscribe}, {"deactivate", SensorDeactivate}, + {"getdata", SensorGetData}, }; typedef struct { @@ -361,6 +363,39 @@ static int32_t SensorDeactivate(SensorTypeId sensorTypeId) return SENSOR_OK; } +static int32_t SensorGetData(SensorTypeId sensorTypeId) +{ + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "getData :%d\n", sensorTypeId); + SensorDev *sensorDev = GetSensorIdBySensorDevIndex(sensorTypeId); + if (sensorDev == NULL) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GetSensorIdBySensorDevIndex failed\n"); + return SENSOR_ERROR_UNKNOWN; + } + SensorData *sensorData = (SensorData *)malloc(sizeof(SensorData)); + if (sensorData == NULL) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "malloc failed\n"); + return SENSOR_ERROR_UNKNOWN; + } + int32_t errCode = GetSensorData(sensorTypeId, &sensorDev->user, sensorData); + if (errCode != SENSOR_OK) { + free(sensorData); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GetSensorData failed:%d\n", errCode); + return errCode; + } + AccelData *accData = (AccelData *)sensorData->data; + for (uint32_t i = 0; i < sensorData->batchCnt; i++) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, + "SensorData dataX:%x, datY:%x, dataZ:%x\n", + accData[i].axisX, + accData[i].axisY, + accData[i].axisZ); + } + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SensorData batchCnt:%u timestamp:%lld\n", + sensorData->batchCnt, sensorData->timestamp); + free(sensorData); + return SENSOR_OK; +} + static SensorTypeId GetSensorIdByParam(const char *argv) { if (argv == NULL) { diff --git a/code/sdk/open_source/openharmony/base/sensors/services/include/sensor_service.h b/code/sdk/open_source/openharmony/base/sensors/services/include/sensor_service.h index 3edd20eca..51dae8ac5 100644 --- a/code/sdk/open_source/openharmony/base/sensors/services/include/sensor_service.h +++ b/code/sdk/open_source/openharmony/base/sensors/services/include/sensor_service.h @@ -55,6 +55,9 @@ typedef struct SensorFeatureApi { int32_t (*UnsubscribeSensor)(int32_t sensorTypeId, const SensorUser *user); int32_t (*SetMode)(int32_t sensorTypeId, const SensorUser *user, int32_t mode); int32_t (*SetOption)(int32_t sensorTypeId, const SensorUser *user, int32_t option); +// ohos-hisi begin + int32_t (*GetData)(int32_t sensorTypeId, const SensorUser *user, void *sensorData); +// ohos-hisi end } SensorFeatureApi; typedef struct SensorService { diff --git a/code/sdk/open_source/openharmony/base/sensors/services/include/sensor_service_impl.h b/code/sdk/open_source/openharmony/base/sensors/services/include/sensor_service_impl.h index ff3d59b5e..6374e2e97 100644 --- a/code/sdk/open_source/openharmony/base/sensors/services/include/sensor_service_impl.h +++ b/code/sdk/open_source/openharmony/base/sensors/services/include/sensor_service_impl.h @@ -52,6 +52,9 @@ int32_t UnsubscribeSensorInvoke(SensorFeatureApi *defaultApi, IpcIo *req, IpcIo int32_t SetModeInvoke(SensorFeatureApi *defaultApi, IpcIo *req, IpcIo *reply); int32_t SetOptionInvoke(SensorFeatureApi *defaultApi, IpcIo *req, IpcIo *reply); void SetSvcIdentity(IpcIo *req, const IpcIo *reply); +// ohos-hisi begin +int32_t GetSensorDataImpl(int32_t sensorId, const SensorUser *user, void *sensorData); +// ohos-hisi end #ifdef __cplusplus #if __cplusplus } diff --git a/code/sdk/open_source/openharmony/base/sensors/services/src/sensor_service.c b/code/sdk/open_source/openharmony/base/sensors/services/src/sensor_service.c index 56a82f9ac..2e209808a 100644 --- a/code/sdk/open_source/openharmony/base/sensors/services/src/sensor_service.c +++ b/code/sdk/open_source/openharmony/base/sensors/services/src/sensor_service.c @@ -47,6 +47,9 @@ static SensorService g_sensorService = { .UnsubscribeSensor = UnsubscribeSensorImpl, .SetMode = SetModeImpl, .SetOption = SetOptionImpl, +// ohos-hisi begin + .GetData = GetSensorDataImpl, +// ohos-hisi end IPROXY_END, }; diff --git a/code/sdk/open_source/openharmony/base/sensors/services/src/sensor_service_impl.c b/code/sdk/open_source/openharmony/base/sensors/services/src/sensor_service_impl.c index 69eb1217c..7179b0750 100644 --- a/code/sdk/open_source/openharmony/base/sensors/services/src/sensor_service_impl.c +++ b/code/sdk/open_source/openharmony/base/sensors/services/src/sensor_service_impl.c @@ -255,3 +255,15 @@ int32_t SetOptionImpl(int32_t sensorTypeId, const SensorUser *user, int32_t opti } return SENSOR_OK; } + +// ohos-hisi begin +int32_t GetSensorDataImpl(int32_t sensorId, const SensorUser *user, void *sensorData) +{ + HILOG_DEBUG(HILOG_MODULE_APP, "[SERVICE:%s]: %s begin", + SENSOR_SERVICE, __func__); + if (!CheckSensorTypeId(sensorId)) { + return SENSOR_ERROR_INVALID_ID; + } + return g_sensorDevice->GetSensorData(sensorId, (SensorData *)sensorData); +} +// ohos-hisi end \ No newline at end of file diff --git a/code/sdk/open_source/openharmony/base/startup/syspara_lite/src/hal_sys_param.c b/code/sdk/open_source/openharmony/base/startup/syspara_lite/src/hal_sys_param.c index ea4ee780a..e5ddc9ef8 100644 --- a/code/sdk/open_source/openharmony/base/startup/syspara_lite/src/hal_sys_param.c +++ b/code/sdk/open_source/openharmony/base/startup/syspara_lite/src/hal_sys_param.c @@ -32,11 +32,11 @@ static const char OHOS_SOFTWARE_MODEL[] = {"1.0.0"}; static const char OHOS_HARDWARE_MODEL[] = {"FD230V10"}; static const char OHOS_HARDWARE_PROFILE[] = {"aout:true,display:true"}; static const char OHOS_BOOTLOADER_VERSION[] = {"bootloader"}; -static const char OHOS_SECURITY_PATCH_TAG[] = {"2024/12/01"}; +static const char OHOS_SECURITY_PATCH_TAG[] = {"2025/06/17"}; static const char OHOS_ABI_LIST[] = {"riscv-liteos"}; static const char OHOS_SERIAL[] = {"****"}; // provided by OEM. const char g_roBuildOs[] = {"OpenHarmony"}; -const char g_roBuildVerShow[] = {"OpenHarmony 5.0.1.115"}; +const char g_roBuildVerShow[] = {"OpenHarmony 5.1.1.115"}; const int g_roFirstApiLevel = 1; const char INCREMENTAL_VERSION[] = {"version"}; const char BUILD_TYPE[] = {"BUILD_TYPE"}; diff --git a/code/sdk/open_source/openharmony/base/startup/syspara_lite/src/parameter_common.c b/code/sdk/open_source/openharmony/base/startup/syspara_lite/src/parameter_common.c index 820ba1353..8acc63158 100644 --- a/code/sdk/open_source/openharmony/base/startup/syspara_lite/src/parameter_common.c +++ b/code/sdk/open_source/openharmony/base/startup/syspara_lite/src/parameter_common.c @@ -27,7 +27,7 @@ #define FILE_RO "ro." #define VERSION_ID_LEN 256 #define PROPERTY_MAX_LENGTH 2048 -#define INCREMENTAL_VERSION "version" +#define INCREMENTAL_VERSION "OpenHarmony 5.1 Release" #define BUILD_TYPE "release" #define BUILD_USER "luozheng" #define BUILD_HOST "linux" @@ -42,20 +42,20 @@ #define BT_MAC_BUFF_SIZE 6 #define BT_MAC_BUFF_LEN 17 -static char g_roBuildOs[] = {"OpenHarmony-5.0.1.115"}; +static char g_roBuildOs[] = {"OpenHarmony-5.1.1.115"}; static char g_roBuildVerShow[] = {"1.0.0"}; static char g_roSdkApiLevel[] = {"13"}; static char g_roFirstApiLevel[] = {"1"}; static const char OHOS_OS_NAME[] = { "OpenHarmony" }; static const int OHOS_SDK_API_VERSION = 13; -static const char OHOS_SECURITY_PATCH_TAG[] = {"2024/12/01"}; +static const char OHOS_SECURITY_PATCH_TAG[] = {"2025/06/17"}; static const char OHOS_RELEASE_TYPE[] = { "Release" }; static const char OHOS_DEFAULT_VALUE[] = { "Default" }; static const int MAJOR_VERSION = 5; -static const int SENIOR_VERSION = 0; -static const int FEATURE_VERSION = 0; -static const int BUILD_VERSION = 0; +static const int SENIOR_VERSION = 1; +static const int FEATURE_VERSION = 1; +static const int BUILD_VERSION = 115; static const char EMPTY_STR[] = { "" }; diff --git "a/code/sdk/open_source/openharmony/base/startup/syspara_lite/src/\346\226\207\344\273\266\345\244\2711201patch\345\220\210\345\271\266\346\217\220\344\272\244" "b/code/sdk/open_source/openharmony/base/startup/syspara_lite/src/\346\226\207\344\273\266\345\244\2711201patch\345\220\210\345\271\266\346\217\220\344\272\244" new file mode 100644 index 000000000..0065aa274 --- /dev/null +++ "b/code/sdk/open_source/openharmony/base/startup/syspara_lite/src/\346\226\207\344\273\266\345\244\2711201patch\345\220\210\345\271\266\346\217\220\344\272\244" @@ -0,0 +1 @@ +文件夹1201patch合并提交 \ No newline at end of file diff --git a/code/sdk/open_source/openharmony/drivers/peripheral/format/interfaces/include/format_type.h b/code/sdk/open_source/openharmony/drivers/peripheral/format/interfaces/include/format_type.h index 33a35ecdd..d91f2642e 100644 --- a/code/sdk/open_source/openharmony/drivers/peripheral/format/interfaces/include/format_type.h +++ b/code/sdk/open_source/openharmony/drivers/peripheral/format/interfaces/include/format_type.h @@ -420,7 +420,7 @@ typedef enum { SOURCE_TYPE_BUT /**< Undefined source */ } SourceType; -#define URL_LEN 4096 /**< Indicates the URL length. */ +#define URL_LEN 256 /**< Indicates the URL length. */ /** * @brief Defines the demuxer data source. @@ -454,6 +454,8 @@ typedef enum { OUTPUT_FORMAT_HEIF = 3, /**< HEIF */ OUTPUT_FORMAT_OGG = 4, /**< Ogg */ OUTPUT_FORMAT_WAV = 5, /**< WAV */ + OUTPUT_FORMAT_MP3 = 6, /**< mp3 */ + OUTPUT_FORMAT_SILK = 7, /* Silk */ OUTPUT_FORMAT_INVALID /**< Invalid format */ } OutputFormat; diff --git a/code/sdk/open_source/openharmony/drivers/peripheral/location/gnss/gnss_emulator/source/gnss_emulator_vendor_impl.cpp b/code/sdk/open_source/openharmony/drivers/peripheral/location/gnss/gnss_emulator/source/gnss_emulator_vendor_impl.cpp index 7ff4c38fe..bd810e70e 100644 --- a/code/sdk/open_source/openharmony/drivers/peripheral/location/gnss/gnss_emulator/source/gnss_emulator_vendor_impl.cpp +++ b/code/sdk/open_source/openharmony/drivers/peripheral/location/gnss/gnss_emulator/source/gnss_emulator_vendor_impl.cpp @@ -28,6 +28,7 @@ #include "gnss_nmea_parse.h" #include "pm_definition.h" #include "pm.h" +#include "osal_task.h" namespace OHOS { namespace HDI { @@ -45,25 +46,30 @@ namespace { #define MSG_TYPE_BINRY 0 #define MSG_TYPE_ASCII 1 #define LISTEN_DATA_MAX_LINES 1000 -#define REPORT_MAX_BYTES 10000 #define LISTEN_TIME_THR 1000 +#define GNSS_TASK_CREATE_OK_WAIT_TIMEOUT 1000 // ms +#define GNSS_TASK_CREATE_TICK_TIME 50 // ms std::string g_gnssNmeaFile = "/user/gnss_nmea.log"; typedef struct { bool gnssEnabled; bool gnssStarted; + bool gnssRunning; GnssCallbackStruct *gnssCallback; GnssInfo gnssInfo; GnssLocation location; GnssSatelliteStatus satStatus; ThreadId listenGnssDataThreadId; +#ifdef SUPPORT_FILE std::ifstream gnssNmeaFp; +#endif } GnssServiceContext; static GnssServiceContext g_gnssServiceCtx = { .gnssEnabled = false, .gnssStarted = false, + .gnssRunning = false, .gnssCallback = nullptr, .gnssInfo = {0}, .location = {0}, @@ -93,6 +99,7 @@ static void ResetGnssInfo(GnssServiceContext *gnssServiceCtx) } } +#ifdef SUPPORT_FILE static void ListenGnssData(void *argv) { LBSLOGI(HDI_GNSS, "enter ListenGnssData"); @@ -101,6 +108,8 @@ static void ListenGnssData(void *argv) LBSLOGE(HDI_GNSS, "ListenGnssData argv invalid"); return; } + GnssNmeaInit(); + gnssServiceCtx->gnssRunning = true; while (gnssServiceCtx->gnssStarted && g_gnssServiceCtx.gnssNmeaFp.good()) { std::string nmeaLine; while (getline(gnssServiceCtx->gnssNmeaFp, nmeaLine)) { @@ -141,8 +150,90 @@ static void ListenGnssData(void *argv) gnssServiceCtx->gnssNmeaFp.clear(); gnssServiceCtx->gnssNmeaFp.seekg(0, std::ios::beg); } + gnssServiceCtx->gnssRunning = false; LBSLOGI(HDI_GNSS, "exit ListenGnssData"); } +#else +constexpr uint32_t REPORT_MAX_CNT = 27; +constexpr uint32_t REPORT_MAX_BYTES = 512; +static char g_nmeaData[REPORT_MAX_CNT][REPORT_MAX_BYTES] = { + "$GNGGA,021707.00,3045.804990,N,10353.991346,E,1,37,1.2,597.4,M,,M,,*6D", + "$GNGLL,3045.804990,N,10353.991346,E,021707.00,A,A*7E", + "$GNGSA,A,3,10,12,15,18,23,25,32,,,,,,2.4,1.2,2.1,1*3F", + "$GNGSA,A,3,67,68,69,77,78,79,82,83,84,,,,2.4,1.2,2.1,2*38", + "$GNGSA,A,3,3,5,15,24,25,34,36,,,,,,2.4,1.2,2.1,3*34", + "$GNGSA,A,3,9,11,13,14,16,24,25,26,28,33,38,39,2.4,1.2,2.1,4*05", + "$GNGSA,A,3,2,3,,,,,,,,,,,2.4,1.2,2.1,5*32", + "$GPGSV,2,1,07,10,51,332,29,12,18,104,26,15,08,071,22,18,32,179,22,1*6A", + "$GPGSV,2,2,07,23,68,068,15,25,17,145,35,32,41,285,44,1*5A", + "$GLGSV,3,1,09,67,29,054,27,68,44,350,43,69,19,298,45,77,24,044,21,1*72", + "$GLGSV,3,2,09,78,43,117,22,79,15,168,19,82,18,200,27,83,41,242,18,1*75", + "$GLGSV,3,3,09,84,22,318,18,1*4E", + "$GBGSV,6,1,22,01,34,119,,02,51,217,,03,55,166,,04,20,108,,1*71", + "$GBGSV,6,2,22,05,31,245,,09,59,202,18,11,10,191,30,13,75,039,21,1*78", + "$GBGSV,6,3,22,14,58,018,30,16,79,185,23,21,05,092,,24,50,130,27,1*7C", + "$GBGSV,6,4,22,25,19,186,35,26,33,059,16,27,05,316,,28,24,276,28,1*7C", + "$GBGSV,6,5,22,33,50,329,40,38,61,107,28,39,85,183,17,41,11,293,,1*7A", + "$GBGSV,6,6,22,42,45,061,19,43,19,211,23,1*72", + "$GQGSV,1,1,03,02,16,127,30,03,20,157,19,04,56,083,,1*52", + "$GAGSV,2,1,08,03,53,293,29,05,50,030,31,08,10,259,,15,42,304,42,7*7B", + "$GAGSV,2,2,08,24,18,089,24,25,15,141,36,34,59,213,27,36,18,167,18,7*7A", + "$GNRMC,021707.00,A,3045.804990,N,10353.991346,E,000.9,159.3,071124,,E,A,V*70", + "$GNVTG,159.3,T,159.3,M,000.9,N,001.7,K,A*32", + "$GNZDA,021707.00,07,11,2024,00,00*78", + "$PNTH000,6,,-91,0,,,,,1,1*11", + "$PNTH001,1.226969,2.06,1.61,15.72,0,39,108*2E", + "$PNTH002,021707.00,N,243.524682,3,200,0.166667,12,0.270406*44", +}; + +static void ListenGnssData(void *argv) +{ + LBSLOGI(HDI_GNSS, "enter ListenGnssData"); + GnssServiceContext *gnssServiceCtx = (GnssServiceContext *)argv; + if (gnssServiceCtx == nullptr || gnssServiceCtx->gnssCallback == nullptr) { + LBSLOGE(HDI_GNSS, "ListenGnssData argv invalid"); + return; + } + GnssNmeaInit(); + gnssServiceCtx->gnssRunning = true; + while (gnssServiceCtx->gnssStarted) { + for (uint32_t i = 0; i < REPORT_MAX_CNT; i++) { + const char *nmeaStr = g_nmeaData[i]; + int32_t nmeaLen = strlen(g_nmeaData[i]); + GnssNmeaFrameType nmeaType = GnssNmeaGetFrameType(nmeaStr, nmeaLen); + LBSLOGD(HDI_GNSS, "nmeaType:%d nmeaStr:%s nmeaLen:%d", nmeaType, nmeaStr, nmeaLen); + if (nmeaType >= GNSS_NMEA_FRAME_MAX) { + LBSLOGW(HDI_GNSS, "invalid nmeaStr:%s", nmeaStr); + continue; + } + if (nmeaType == GNSS_NMEA_FRAME_GGA) { + ResetGnssInfo(gnssServiceCtx); + } + gnssServiceCtx->gnssCallback->gnssCallback.nmeaUpdate(LocationGnssUtilsGetTimestampMS(), nmeaStr, nmeaLen); + int32_t ret = + GnssNmeaDecodeFrame(nmeaStr, nmeaLen, &gnssServiceCtx->gnssInfo); + if (ret != GNSS_SUCCESS) { + LBSLOGW(HDI_GNSS, "GnssNmeaDecodeFrame failed:%d", ret); + } + if (nmeaType == GNSS_NMEA_FRAME_TH002) { + ResetLocationSatelliteStatus(gnssServiceCtx); + + ret = LocationGnssUtilsFillGnssLocation(&gnssServiceCtx->gnssInfo, &gnssServiceCtx->location); + if (ret == GNSS_SUCCESS) { + gnssServiceCtx->gnssCallback->gnssCallback.locationUpdate(&gnssServiceCtx->location); + } + ret = LocationGnssUtilsFillAllSatelliteStatus(&gnssServiceCtx->gnssInfo, &gnssServiceCtx->satStatus); + if (ret == GNSS_SUCCESS) { + gnssServiceCtx->gnssCallback->gnssCallback.satelliteStatusUpdate(&gnssServiceCtx->satStatus); + } + osDelay(LISTEN_TIME_THR); + } + } + } + gnssServiceCtx->gnssRunning = false; + LBSLOGI(HDI_GNSS, "exit ListenGnssData"); +} +#endif static int LocationStopGnss(uint32_t category) { @@ -151,9 +242,16 @@ static int LocationStopGnss(uint32_t category) return GNSS_FAILURE; } g_gnssServiceCtx.gnssStarted = false; +#ifdef SUPPORT_FILE if (g_gnssServiceCtx.gnssNmeaFp) { g_gnssServiceCtx.gnssNmeaFp.close(); } +#endif + uint16_t taskReadyWait = 0; + while ((taskReadyWait < GNSS_TASK_CREATE_OK_WAIT_TIMEOUT) && g_gnssServiceCtx.gnssRunning) { + osal_msleep(GNSS_TASK_CREATE_TICK_TIME); + taskReadyWait += GNSS_TASK_CREATE_TICK_TIME; + } g_gnssServiceCtx.listenGnssDataThreadId = nullptr; return GNSS_SUCCESS; } @@ -200,6 +298,7 @@ static int LocationStartGnss(uint32_t category) LBSLOGI(HDI_GNSS, "Gnss has Started"); return GNSS_SUCCESS; } +#ifdef SUPPORT_FILE g_gnssServiceCtx.gnssNmeaFp.open(g_gnssNmeaFile, std::ifstream::in); if (!g_gnssServiceCtx.gnssNmeaFp.good() || @@ -208,6 +307,7 @@ static int LocationStartGnss(uint32_t category) LBSLOGI(HDI_GNSS, "Gnss open :%s failed", g_gnssNmeaFile.c_str()); return GNSS_FAILURE; } +#endif g_gnssServiceCtx.gnssStarted = true; ThreadAttr attr = {"ListenGnssDataTask", 0x2000, (uint8_t)osPriorityNormal, 0, 0}; ThreadId threadId = (ThreadId)ThreadCreate(ListenGnssData, &g_gnssServiceCtx, &attr); diff --git a/code/sdk/open_source/openharmony/drivers/peripheral/location/gnss/hdi_service/include/location_vendor_lib.h b/code/sdk/open_source/openharmony/drivers/peripheral/location/gnss/hdi_service/include/location_vendor_lib.h index 5f1d0a5c6..c3b78e8d8 100644 --- a/code/sdk/open_source/openharmony/drivers/peripheral/location/gnss/hdi_service/include/location_vendor_lib.h +++ b/code/sdk/open_source/openharmony/drivers/peripheral/location/gnss/hdi_service/include/location_vendor_lib.h @@ -392,6 +392,15 @@ typedef struct { /* Bearing accuracy in degrees. */ float bearingAccuracy; + /* Northward Velocity in m/s. */ + float velocityNorth; + + /* Eastward Velocity in m/s. */ + float velocityEast; + + /* Descent Velocity in m/s. */ + float velocityDescend; + /* Timestamp for the location fix. Number of milliseconds since January 1, 1970. */ int64_t timeForFix; @@ -400,6 +409,9 @@ typedef struct { /* Time uncertainty in nanosecond. */ uint64_t timeUncertainty; + + /* Signal status */ + int32_t signal; } GnssLocation; /* diff --git a/code/sdk/open_source/openharmony/drivers/peripheral/location/gnss/hdi_service/source/gnss_interface_impl.cpp b/code/sdk/open_source/openharmony/drivers/peripheral/location/gnss/hdi_service/source/gnss_interface_impl.cpp index 495ed6924..a4739171e 100644 --- a/code/sdk/open_source/openharmony/drivers/peripheral/location/gnss/hdi_service/source/gnss_interface_impl.cpp +++ b/code/sdk/open_source/openharmony/drivers/peripheral/location/gnss/hdi_service/source/gnss_interface_impl.cpp @@ -87,6 +87,9 @@ static void LocationUpdate(GnssLocation *location) locationNew.altitude = location->altitude; locationNew.horizontalAccuracy = location->horizontalAccuracy; locationNew.speed = location->speed; + locationNew.velocityNorth = location->velocityNorth; + locationNew.velocityEast = location->velocityEast; + locationNew.velocityDescend = location->velocityDescend; locationNew.bearing = location->bearing; locationNew.verticalAccuracy = location->verticalAccuracy; locationNew.speedAccuracy = location->speedAccuracy; @@ -94,6 +97,7 @@ static void LocationUpdate(GnssLocation *location) locationNew.timeForFix = location->timeForFix; locationNew.timeSinceBoot = location->timeSinceBoot; locationNew.timeUncertainty = location->timeUncertainty; + locationNew.signal = location->signal; if (g_gnssCallback != nullptr) { g_gnssCallback->ReportLocation(locationNew); } diff --git a/code/sdk/open_source/openharmony/drivers/peripheral/location/gnss/utils/include/gnss_nmea_parse.h b/code/sdk/open_source/openharmony/drivers/peripheral/location/gnss/utils/include/gnss_nmea_parse.h index 6150932bc..ee0129dbd 100644 --- a/code/sdk/open_source/openharmony/drivers/peripheral/location/gnss/utils/include/gnss_nmea_parse.h +++ b/code/sdk/open_source/openharmony/drivers/peripheral/location/gnss/utils/include/gnss_nmea_parse.h @@ -23,7 +23,8 @@ extern "C" { #define GNSS_SAT_IN_MSG 4 #define GNSS_NSAT_MSGS (GNSS_SAT_NUM_MAX / GNSS_SAT_IN_MSG) -#define GNSS_KNOTS (1.852) +#define GNSS_KNOTS (0.514444 * 100) // knots to m/s +#define GNSS_STRAIGHT_ANGLE (180.0) #define NMEA_SENTENCE_START_BIT (3) // $-- 正式语句从第四位开始 #define NMEA_SENTENCE_TYPE_BIT (3) // 语句类型标识长度 @@ -106,6 +107,7 @@ extern "C" { #define NMEA_HEX 16 #define NMEA_ONE_SENTENCE_FOUR_SAT 4 #define NMEA_GSV_OTHER_BIT 3 +#define NMEA_ERROR (4.0) // 估算误差 typedef enum { GNSS_SYSTEM_INVALID = 0, @@ -169,6 +171,12 @@ typedef enum { GNSS_NMEA_FIELD_TYPE_SATUSEDNUM = 0x8000, GNSS_NMEA_FIELD_TYPE_SATINUSE = 0x10000, GNSS_NMEA_FIELD_TYPE_SATINVIEW = 0x20000, + GNSS_NMEA_FIELD_TYPE_HORIZONTAL_ACCURACY = 0x40000, + GNSS_NMEA_FIELD_TYPE_VERTICAL_ACCURACY = 0x80000, + GNSS_NMEA_FIELD_TYPE_SPEED_ACCURACY = 0x100000, + GNSS_NMEA_FIELD_TYPE_NORTH_VELOCITY = 0x200000, + GNSS_NMEA_FIELD_TYPE_EAST_VELOCITY = 0x400000, + GNSS_NMEA_FIELD_TYPE_DESCEND_VELOCITY = 0x800000, } GnssNmeaFieldType; typedef struct { @@ -212,13 +220,28 @@ typedef struct { double lat; // 纬度 double lon; // 经度 double altitude; // 天线海拔高度 - double speed; // 速度 千米/小时 + float speed; // 速度 千米/小时 double pdop; // 三维位置精度因子:为纬度、经度和高程等误差平方和的开根号值 double hdop; // 水平分量精度因子:为纬度和经度等误差平方和的开根号值 double vdop; // 垂直分量精度因子 double trackAng; // 跟踪角 double magneticTrackAng; // 磁轨角 double magVariation; // 磁场变化度 + // Calculated Velocity Components + // 计算后的速度分量 + float velocityNorth; // Northward Velocity (m/s) + // 向北速度 (ç±³/秒) + float velocityEast; // Eastward Velocity (m/s) + // 向东速度 (ç±³/秒) + float velocityDescend; // Descent Velocity (m/s) + // 下降速度 (ç±³/秒) + + float verticalAccuracy; // Vertical accuracy estimate in mm + // 垂直精度估计 单位:mm + float horizontalAccuracy; // Horizontal accuracy estimate in mm + // 水平精度估计 单位:mm + float speedAccuracy; // Speed accuracy estimate in cm/s + // 速度精度估计 单位:cm/s GnssTime utc; // 世界标准时间 GnssSatelliteList satelist; // 卫星信息 @@ -303,6 +326,8 @@ typedef struct { char nmeaBuf[GNSS_NMEA_FRAME_MAX_SIZE]; } GnssNmeaFrameProcess; +void GnssNmeaInit(); + GnssNmeaFrameType GnssNmeaGetFrameType(const char* nmeaBuf, unsigned int length); int GnssNmeaDecodeFrame(const char* nmea, unsigned int nmeaLen, GnssInfo* gnssInfo); diff --git a/code/sdk/open_source/openharmony/drivers/peripheral/location/gnss/utils/include/gnss_utils.h b/code/sdk/open_source/openharmony/drivers/peripheral/location/gnss/utils/include/gnss_utils.h index fd452f845..6a5c5a9da 100644 --- a/code/sdk/open_source/openharmony/drivers/peripheral/location/gnss/utils/include/gnss_utils.h +++ b/code/sdk/open_source/openharmony/drivers/peripheral/location/gnss/utils/include/gnss_utils.h @@ -24,7 +24,7 @@ typedef struct { #pragma pack() -int32_t LocationGnssUtilsUtc2UnixTime(const GnssUtcTime *utcTime, uint32_t *unixTime); +int32_t LocationGnssUtilsUtc2UnixTime(const GnssUtcTime *utcTime, int64_t *unixTime); int64_t LocationGnssUtilsGetTimestampMS(void); diff --git a/code/sdk/open_source/openharmony/drivers/peripheral/location/gnss/utils/source/gnss_nmea_parse.cpp b/code/sdk/open_source/openharmony/drivers/peripheral/location/gnss/utils/source/gnss_nmea_parse.cpp index d33c77ed6..8fd985c5d 100644 --- a/code/sdk/open_source/openharmony/drivers/peripheral/location/gnss/utils/source/gnss_nmea_parse.cpp +++ b/code/sdk/open_source/openharmony/drivers/peripheral/location/gnss/utils/source/gnss_nmea_parse.cpp @@ -130,10 +130,14 @@ static int NmeaGSA2GnssInfo(const GnssNmeaGSA *nmeaGSA, GnssSystem gnssSystem, G if (nmeaGSA->fieldType & GNSS_NMEA_FIELD_TYPE_HDOP) { gnssInfo->hdop = nmeaGSA->hdop; + gnssInfo->horizontalAccuracy = gnssInfo->hdop * NMEA_ERROR; // 估算水平误差 + gnssInfo->field |= GNSS_NMEA_FIELD_TYPE_HORIZONTAL_ACCURACY; } if (nmeaGSA->fieldType & GNSS_NMEA_FIELD_TYPE_VDOP) { gnssInfo->vdop = nmeaGSA->vdop; + gnssInfo->verticalAccuracy = gnssInfo->vdop * NMEA_ERROR; // 估算垂直误差 + gnssInfo->field |= GNSS_NMEA_FIELD_TYPE_VERTICAL_ACCURACY; } return GNSS_OK; } @@ -148,9 +152,6 @@ static int NmeaVTG2GnssInfo(const GnssNmeaVTG *nmeaVTG, GnssInfo *gnssInfo) gnssInfo->field |= nmeaVTG->fieldType; gnssInfo->sentence |= GNSS_NMEA_FRAME_VTG; - if (nmeaVTG->fieldType & GNSS_NMEA_FIELD_TYPE_SPEED) { - gnssInfo->speed = nmeaVTG->speed; - } if (nmeaVTG->fieldType & GNSS_NMEA_FIELD_TYPE_TRACK) { gnssInfo->trackAng = nmeaVTG->trackAng; } @@ -186,6 +187,32 @@ static void NmeaRMCUTC2GnssInfo(const GnssNmeaRMC *nmeaRMC, GnssInfo *gnssInfo) return; } +#define NMEA_SPEEDS_SAMPLE_CNT (100) +float g_speeds[NMEA_SPEEDS_SAMPLE_CNT]; // 存储速度样本 +int32_t g_sampleCnt = 0; +bool g_isWriteinPlace = false; + +// 计算 RMSE +static float NmeaComputeRmse(int32_t sampleCnt) +{ + if (sampleCnt == 0) { + return 0.0f; + } + + float sum = 0.0, mean = 0.0, errorSum = 0.0; + for (int32_t i = 0; i < sampleCnt; i++) { + sum += g_speeds[i]; + } + mean = sum / sampleCnt; + + for (int32_t i = 0; i < sampleCnt; i++) { + float error = g_speeds[i] - mean; + errorSum += error * error; + } + + return sqrtf(errorSum / sampleCnt); +} + static int NmeaRMC2GnssInfo(GnssNmeaRMC *nmeaRMC, GnssInfo *gnssInfo) { if (nmeaRMC == NULL || gnssInfo == NULL) { @@ -224,11 +251,26 @@ static int NmeaRMC2GnssInfo(GnssNmeaRMC *nmeaRMC, GnssInfo *gnssInfo) } if (nmeaRMC->fieldType & GNSS_NMEA_FIELD_TYPE_SPEED) { + // knots to cm/s gnssInfo->speed = nmeaRMC->speedN * GNSS_KNOTS; + if (g_sampleCnt == NMEA_SPEEDS_SAMPLE_CNT) { + g_sampleCnt = 0; + g_isWriteinPlace = true; + } + g_speeds[g_sampleCnt++] = gnssInfo->speed; + gnssInfo->speedAccuracy = NmeaComputeRmse(g_isWriteinPlace ? NMEA_SPEEDS_SAMPLE_CNT : g_sampleCnt); + gnssInfo->field |= GNSS_NMEA_FIELD_TYPE_SPEED_ACCURACY; + } if (nmeaRMC->fieldType & GNSS_NMEA_FIELD_TYPE_TRACK) { gnssInfo->trackAng = nmeaRMC->trackAng; + if (nmeaRMC->fieldType & GNSS_NMEA_FIELD_TYPE_SPEED) { + gnssInfo->velocityNorth = gnssInfo->speed * cos(gnssInfo->trackAng * M_PI / GNSS_STRAIGHT_ANGLE); + gnssInfo->field |= GNSS_NMEA_FIELD_TYPE_NORTH_VELOCITY; + gnssInfo->velocityEast = gnssInfo->speed * sin(gnssInfo->trackAng * M_PI / GNSS_STRAIGHT_ANGLE); + gnssInfo->field |= GNSS_NMEA_FIELD_TYPE_EAST_VELOCITY; + } } if (nmeaRMC->fieldType & GNSS_NMEA_FIELD_TYPE_MAGVAR) { @@ -238,6 +280,53 @@ static int NmeaRMC2GnssInfo(GnssNmeaRMC *nmeaRMC, GnssInfo *gnssInfo) return GNSS_OK; } +#define NMEA_HOUR_TO_SEC (3600) +#define NMEA_MIN_TO_SEC (60) +#define NMEA_12_HOUR_TO_SEC (43200) +#define NMEA_24_HOUR_TO_SEC (86400) +// Store previous altitude and time for velocity calculation +// 用于存储前一时刻的高度和时间,用于计算速度 +static double g_previousAltitude = 0.0; +static double g_previousTime = 0.0; + +static void CalculateVelocityDescend(const GnssNmeaGGA *nmeaGGA, GnssInfo *gnssInfo) +{ + // 计算下降速度 (需要上一高度和时间) + // Calculate descent velocity (needs previous altitude and time) + if (g_previousTime > 0.0) { + double currentTime = + gnssInfo->utc.hour * NMEA_HOUR_TO_SEC + gnssInfo->utc.min * NMEA_MIN_TO_SEC + gnssInfo->utc.sec; + double deltaTime = currentTime - g_previousTime; + + // 处理跨天情况 + // Handle day crossover + if (deltaTime < -NMEA_12_HOUR_TO_SEC) { // 如果时间差小于-12小时,说明跨天了 + // If time difference is less than -12 hours, day has changed + deltaTime += NMEA_24_HOUR_TO_SEC; // 加上24小时 + // Add 24 hours + } else if (deltaTime > NMEA_12_HOUR_TO_SEC) { // 如果时间差大于12小时,说明是前一天的数据 + // If time difference is more than 12 hours, it's previous day's data + deltaTime -= NMEA_24_HOUR_TO_SEC; + } + + if (deltaTime > 0 && deltaTime < NMEA_TEN) { // 只处理合理的时间差(比如小于10秒) + // Only process reasonable time differences (e.g., less than 10 seconds) + double deltaAltitude = gnssInfo->altitude - g_previousAltitude; + // 过滤异常值(比如高度差太大) + // Filter abnormal values (e.g., too large altitude differences) + if (fabs(deltaAltitude) < NMEA_NUM_100) { // 假设最大垂直速度不超过100m/s + // Assume maximum vertical speed doesn't exceed 100m/s + gnssInfo->velocityDescend = + -deltaAltitude / deltaTime; // 注意符号:上升为负,下降为正 + // Note: negative for ascent, positive for descent + gnssInfo->field |= GNSS_NMEA_FIELD_TYPE_DESCEND_VELOCITY; + } + } + } + g_previousAltitude = gnssInfo->altitude; + g_previousTime = gnssInfo->utc.hour * NMEA_HOUR_TO_SEC + gnssInfo->utc.min * NMEA_MIN_TO_SEC + gnssInfo->utc.sec; +} + static int NmeaGGA2GnssInfo(const GnssNmeaGGA *nmeaGGA, GnssInfo *gnssInfo) { if (nmeaGGA == NULL || gnssInfo == NULL) { @@ -273,6 +362,7 @@ static int NmeaGGA2GnssInfo(const GnssNmeaGGA *nmeaGGA, GnssInfo *gnssInfo) if (nmeaGGA->fieldType & GNSS_NMEA_FIELD_TYPE_ANTALT) { gnssInfo->altitude = nmeaGGA->antAltitude; + CalculateVelocityDescend(nmeaGGA, gnssInfo); } return GNSS_OK; } @@ -1142,3 +1232,12 @@ int GnssNmeaDecodeFrame(const char *nmea, unsigned int nmeaLen, GnssInfo *gnssIn nmeaFrameType = GnssNmeaGetFrameType((const char *)&nmeaFrameProcess.nmeaBuf, nmeaFrameProcess.length); return NmeaFrameProc(nmeaFrameType, &nmeaFrameProcess, gnssInfo); } + +void GnssNmeaInit() +{ + (void)memset_s(g_speeds, sizeof(g_speeds), 0, sizeof(g_speeds)); + g_isWriteinPlace = false; + g_sampleCnt = 0; + g_previousAltitude = 0.0; + g_previousTime = 0.0; +} diff --git a/code/sdk/open_source/openharmony/drivers/peripheral/location/gnss/utils/source/gnss_utils.cpp b/code/sdk/open_source/openharmony/drivers/peripheral/location/gnss/utils/source/gnss_utils.cpp index ea3d65f99..cb4bb155c 100644 --- a/code/sdk/open_source/openharmony/drivers/peripheral/location/gnss/utils/source/gnss_utils.cpp +++ b/code/sdk/open_source/openharmony/drivers/peripheral/location/gnss/utils/source/gnss_utils.cpp @@ -66,7 +66,7 @@ static int32_t CheckIfLeapYear(uint16_t year) } /* 将日历时(年月日时分秒) 转换为 unix时间(1970å¹´1月1日起的时间秒数) */ -int32_t LocationGnssUtilsUtc2UnixTime(const GnssUtcTime *utcTime, uint32_t *unixTime) +int32_t LocationGnssUtilsUtc2UnixTime(const GnssUtcTime *utcTime, int64_t *unixTime) { if (utcTime == NULL || unixTime == NULL) { LBSLOGE(HDI_GNSS, "error: [Utc2UnixTime] null pointer!"); @@ -82,18 +82,18 @@ int32_t LocationGnssUtilsUtc2UnixTime(const GnssUtcTime *utcTime, uint32_t *unix int32_t *monthDays = (CheckIfLeapYear(utcTime->year) == 1) ? g_leapMonthDays : g_normMonthDays; // 计算从1970.01.01开始的unix 秒数 - uint32_t timestamp = 0; - timestamp += (uint32_t)(utcTime->year - UNIX_TIME_START_YEAR) * SECONDS_PER_NORMAL_YEAR; - timestamp += (uint32_t)GetLeapYearNum(UNIX_TIME_START_YEAR, utcTime->year) * SECONDS_PER_DAY; + int64_t timestamp = 0; + timestamp += (int64_t)(utcTime->year - UNIX_TIME_START_YEAR) * SECONDS_PER_NORMAL_YEAR; + timestamp += (int64_t)GetLeapYearNum(UNIX_TIME_START_YEAR, utcTime->year) * SECONDS_PER_DAY; for (int32_t i = 1; i < utcTime->month; i++) { - timestamp += (uint32_t)monthDays[i - 1] * SECONDS_PER_DAY; + timestamp += (int64_t)monthDays[i - 1] * SECONDS_PER_DAY; } - timestamp += (uint32_t)(utcTime->day - 1) * SECONDS_PER_DAY; - timestamp += (uint32_t)utcTime->hour * SECONDS_PER_HOUR; - timestamp += (uint32_t)utcTime->minute * SECONDS_PER_MIN; - uint32_t timestampSec = (uint32_t)(utcTime->second + utcTime->ms / TIME_UNIT); + timestamp += (int64_t)(utcTime->day - 1) * SECONDS_PER_DAY; + timestamp += (int64_t)utcTime->hour * SECONDS_PER_HOUR; + timestamp += (int64_t)utcTime->minute * SECONDS_PER_MIN; + int64_t timestampSec = (int64_t)(utcTime->second * TIME_UNIT + utcTime->ms); *unixTime = timestamp + timestampSec; return GNSS_SUCCESS; @@ -115,7 +115,7 @@ int32_t FillGnssLocationTimeInfo(const GnssInfo *gnssInfo, GnssLocation *locatio location->fieldValidity |= GNSS_LOCATION_TIME_VALID; GnssUtcTime utcTime = {gnssInfo->utc.year, gnssInfo->utc.month, gnssInfo->utc.day, gnssInfo->utc.hour, gnssInfo->utc.min, gnssInfo->utc.sec, gnssInfo->utc.centisec, 1}; - uint32_t unixTime = 0; + int64_t unixTime = 0; LocationGnssUtilsUtc2UnixTime(&utcTime, &unixTime); location->timeForFix = unixTime; location->size++; @@ -138,6 +138,11 @@ int32_t LocationGnssUtilsFillGnssLocation(const GnssInfo *gnssInfo, GnssLocation return GNSS_FAILURE; } location->fieldValidity = GNSS_NMEA_FIELD_TYPE_SMASK; + if (gnssInfo->field & GNSS_NMEA_FIELD_TYPE_SIGNAL) { + location->signal = (int32_t)gnssInfo->signal; + location->fieldValidity |= GNSS_LOCATION_SIGNAL_VALID; + location->size++; + } if (gnssInfo->field & GNSS_NMEA_FIELD_TYPE_LAT) { location->latitude = gnssInfo->lat; location->fieldValidity |= GNSS_LOCATION_LAT_VALID; @@ -163,15 +168,47 @@ int32_t LocationGnssUtilsFillGnssLocation(const GnssInfo *gnssInfo, GnssLocation location->fieldValidity |= GNSS_LOCATION_BEARING_VALID; location->size++; } + if (gnssInfo->field & GNSS_NMEA_FIELD_TYPE_HORIZONTAL_ACCURACY) { + location->horizontalAccuracy = gnssInfo->horizontalAccuracy; + location->fieldValidity |= GNSS_LOCATION_HORIZONTAL_ACCURACY_VALID; + location->size++; + } + if (gnssInfo->field & GNSS_NMEA_FIELD_TYPE_VERTICAL_ACCURACY) { + location->verticalAccuracy = gnssInfo->verticalAccuracy; + location->fieldValidity |= GNSS_LOCATION_VERTICAL_ACCURACY_VALID; + location->size++; + } + if (gnssInfo->field & GNSS_NMEA_FIELD_TYPE_SPEED_ACCURACY) { + location->speedAccuracy = gnssInfo->speedAccuracy; + location->fieldValidity |= GNSS_LOCATION_SPEED_ACCURACY_VALID; + location->size++; + } + if (gnssInfo->field & GNSS_NMEA_FIELD_TYPE_NORTH_VELOCITY) { + location->velocityNorth = gnssInfo->velocityNorth; + location->fieldValidity |= GNSS_LOCATION_NORTH_VELOCITY_VALID; + location->size++; + } + if (gnssInfo->field & GNSS_NMEA_FIELD_TYPE_EAST_VELOCITY) { + location->velocityEast = gnssInfo->velocityEast; + location->fieldValidity |= GNSS_LOCATION_EAST_VELOCITY_VALID; + location->size++; + } + if (gnssInfo->field & GNSS_NMEA_FIELD_TYPE_DESCEND_VELOCITY) { + location->velocityDescend = gnssInfo->velocityDescend; + location->fieldValidity |= GNSS_LOCATION_DESCEND_VELOCITY_VALID; + location->size++; + } FillGnssLocationTimeInfo(gnssInfo, location); LBSLOGD(HDI_GNSS, "location size :%lu field:0x%x lat%.3f lon:%.3f alti:%.3f speed:%.3f bearing:%.3f " - "hAcc:%.3f vAcc:%.3f sAcc:%.3f bearingAcc:%.3f timeFix:%lld tSB:%llu", + "hAcc:%.3f vAcc:%.3f sAcc:%.3f bearingAcc:%.3f timeFix:%lld tSB:%llu velocityNorth:%.3f" + "velocityEast:%.3f velocityDescend:%.3f", location->size, location->fieldValidity, location->latitude, location->longitude, location->altitude, location->speed, location->bearing, location->horizontalAccuracy, location->verticalAccuracy, - location->speedAccuracy, location->bearingAccuracy, location->timeForFix, location->timeSinceBoot); + location->speedAccuracy, location->bearingAccuracy, location->timeForFix, location->timeSinceBoot, location->velocityNorth, + location->velocityEast, location->velocityDescend); return GNSS_SUCCESS; } diff --git a/code/sdk/open_source/openharmony/drivers/peripheral/location/interface/gnss/v2_0/gnss_types.h b/code/sdk/open_source/openharmony/drivers/peripheral/location/interface/gnss/v2_0/gnss_types.h index 50761c9b8..b9f589b9b 100644 --- a/code/sdk/open_source/openharmony/drivers/peripheral/location/interface/gnss/v2_0/gnss_types.h +++ b/code/sdk/open_source/openharmony/drivers/peripheral/location/interface/gnss/v2_0/gnss_types.h @@ -60,6 +60,10 @@ enum GnssLocationValidity : int32_t { GNSS_LOCATION_TIME_VALID = 512, GNSS_LOCATION_TIME_SINCE_BOOT_VALID = 1024, GNSS_LOCATION_TIME_UNCERTAINTY_VALID = 2048, + GNSS_LOCATION_NORTH_VELOCITY_VALID = 4096, + GNSS_LOCATION_EAST_VELOCITY_VALID = 8192, + GNSS_LOCATION_DESCEND_VELOCITY_VALID = 16384, + GNSS_LOCATION_SIGNAL_VALID = 32768, }; enum GnssWorkingMode : int32_t { @@ -203,9 +207,13 @@ struct LocationInfo { float verticalAccuracy; float speedAccuracy; float bearingAccuracy; + float velocityNorth; + float velocityEast; + float velocityDescend; int64_t timeForFix; int64_t timeSinceBoot; int64_t timeUncertainty; + int32_t signal; } __attribute__ ((aligned(8))); struct GnssRefInfo { diff --git a/code/sdk/open_source/openharmony/drivers/peripheral/sensor/CMakeLists.txt b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/CMakeLists.txt new file mode 100644 index 000000000..17001537e --- /dev/null +++ b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/CMakeLists.txt @@ -0,0 +1,13 @@ +#=============================================================================== +# @brief cmake file +# Copyright (c) @CompanyNameMagicTag 2022-2022. All rights reserved. +#=============================================================================== + +add_subdirectory_with_alias_if_exist(hal_lite/sensor_mgr ${PROJECT_BINARY_DIR}/ohos/sensor_hdi_lite/sensor_mgr) +add_subdirectory_with_alias_if_exist(hal_lite/sensors/hsensor/acc_simulator ${PROJECT_BINARY_DIR}/ohos/sensor_hdi_lite/hsensors/acc_simulator) +add_subdirectory_with_alias_if_exist(hal_lite/sensors/hsensor/barometer ${PROJECT_BINARY_DIR}/ohos/sensor_hdi_lite/hsensors/barometer) +add_subdirectory_with_alias_if_exist(hal_lite/sensors/hsensor/gyroscope ${PROJECT_BINARY_DIR}/ohos/sensor_hdi_lite/hsensors/gyroscope) +add_subdirectory_with_alias_if_exist(hal_lite/sensors/hsensor/heart_rate_counter ${PROJECT_BINARY_DIR}/ohos/sensor_hdi_lite/hsensors/heart_rate_counter) +add_subdirectory_with_alias_if_exist(hal_lite/sensors/hsensor/pedometer ${PROJECT_BINARY_DIR}/ohos/sensor_hdi_lite/hsensors/pedometer) +add_subdirectory_with_alias_if_exist(hal_lite/sensors/hsensor/wear_detection ${PROJECT_BINARY_DIR}/ohos/sensor_hdi_lite/hsensors/wear_detection) +add_subdirectory_with_alias_if_exist(hal_lite/sensors/vsensor/acc_alg_simulator ${PROJECT_BINARY_DIR}/ohos/sensor_hdi_lite/vsensors) \ No newline at end of file diff --git a/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/CMakeLists.txt b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/CMakeLists.txt new file mode 100644 index 000000000..5f6f7e8f4 --- /dev/null +++ b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/CMakeLists.txt @@ -0,0 +1,79 @@ +set(COMPONENT_NAME "sensor_hdi") +set(MODULE_NAME "ohos") +set(AUTO_DEF_FILE_ID TRUE) + +set(PUBLIC_HEADER +) + +set(PRIVATE_HEADER + ${ROOT_DIR}/application/wearable/ohos_deps + ${CMAKE_CURRENT_SOURCE_DIR}/../../interfaces/include + ${CMAKE_CURRENT_SOURCE_DIR}/include + ${CMAKE_CURRENT_SOURCE_DIR}/src/hsensormgr_service/include + ${CMAKE_CURRENT_SOURCE_DIR}/src/hsensor_data_service/include + ${CMAKE_CURRENT_SOURCE_DIR}/src/vsensormgr_service/include + ${CMAKE_CURRENT_SOURCE_DIR}/src/vsensormgr_service/src/vsensor_task_common/include + ${CMAKE_CURRENT_SOURCE_DIR}/src/task/include + ${CMAKE_CURRENT_SOURCE_DIR}/src/utils/include +) + +set(SOURCES + ${CMAKE_CURRENT_SOURCE_DIR}/src/sensor_interface_impl.c + ${CMAKE_CURRENT_SOURCE_DIR}/src/sensor_manager.c + ${CMAKE_CURRENT_SOURCE_DIR}/src/hsensormgr_service/src/hsensormgr_service.c + ${CMAKE_CURRENT_SOURCE_DIR}/src/hsensor_data_service/src/hsensor_data_service.c + ${CMAKE_CURRENT_SOURCE_DIR}/src/vsensormgr_service/src/vsensormgr_service.c + ${CMAKE_CURRENT_SOURCE_DIR}/src/vsensormgr_service/src/vsensor_task_mgr.c + ${CMAKE_CURRENT_SOURCE_DIR}/src/vsensormgr_service/src/vsensor_task_common/src/vsensor_task_class.c + ${CMAKE_CURRENT_SOURCE_DIR}/src/vsensormgr_service/src/vsensor_task_common/src/vsensor_task_comm.c + ${CMAKE_CURRENT_SOURCE_DIR}/src/utils/src/sensor_thread.c + ${CMAKE_CURRENT_SOURCE_DIR}/src/utils/src/sensor_log.c + ${CMAKE_CURRENT_SOURCE_DIR}/src/utils/src/sensor_utils.c + ${CMAKE_CURRENT_SOURCE_DIR}/src/utils/src/sensor_memory.c + ${CMAKE_CURRENT_SOURCE_DIR}/src/utils/src/sensor_msgqueue.c + ${CMAKE_CURRENT_SOURCE_DIR}/src/task/src/sensor_task.c + ${CMAKE_CURRENT_SOURCE_DIR}/src/task/src/sensor_tmsg.c + ${CMAKE_CURRENT_SOURCE_DIR}/src/utils/src/sensor_para_decision.c + ${CMAKE_CURRENT_SOURCE_DIR}/src/utils/src/sensor_state.c +) + +set(COMPONENT_PUBLIC_CCFLAGS +) + +set(COMPONENT_CCFLAGS + -Wno-error + -Wno-unused-parameter + -fno-exceptions + -fno-unwind-tables + -fno-asynchronous-unwind-tables + -Wno-undef + -Wno-bitwise-op-parentheses + -Wno-shift-op-parentheses + -nostdlibinc + -nostdinc + -nostdlib + -Wno-error=unused-function +) + + +set(WHOLE_LINK + true +) + +set(MAIN_COMPONENT + false +) + +set(AUTO_ADD_PATH + false +) + +set(PUBLIC_DEFINES +) + +set(CDEFINES ${CDEFINES} "CMSIS_SUPPORT" "ENABLE_INFO_LEVEL_LOG") +set(PRIVATE_DEFINES + ${CDEFINES} +) + +build_component() diff --git a/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/include/sensor_common.h b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/include/sensor_common.h new file mode 100644 index 000000000..d454a0568 --- /dev/null +++ b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/include/sensor_common.h @@ -0,0 +1,180 @@ +/* + * Copyright (c) CompanyNameMagicTag. 2025-2025. All rights reserved. + * Description: sensor common + * Author: Media Software Group + * Create: 2025-06-06 + */ + + +#ifndef HDI_SENSOR_COMMON_H +#define HDI_SENSOR_COMMON_H + +#include +#include "sensor_log.h" +#include "securec.h" + +/* err number 管理,约定mudule id为30 */ +#define SENSOR_ERRNO_MODULE_ID 30 /* 0x1e */ + +/* start:0x801e0000 end:0x801effff 返回错误信息均为负数 */ +#define SENSOR_ERR_NUMBER(type, code) \ + (int32_t)((((((0x80 << 8) | (SENSOR_ERRNO_MODULE_ID)) << 8) | (type)) << 8) | (code)) + +typedef enum { + SENSOR_ETYPE_ALG = 0x00, + SENSOR_ETYPE_VSENSOR_MGR = 0x01, + SENSOR_ETYPE_DATA_SERVICE = 0x02, + SENSOR_ETYPE_FRAME = 0x03, + SENSOR_ETYPE_ENTRY_PARA = 0x04, + + SENSOR_ETYPE_MAX +} SensorErrType; + +/* all return values of SENSOR Engine, partition by module */ +enum { + SENSOR_ERROR = -1, + SENSOR_OK = 0, + + /* 算法错误码 SENSOR_ETYPE_ALG */ + SENSOR_ALG_ERRNO = SENSOR_ERR_NUMBER(SENSOR_ETYPE_ALG, 0), /* 0x801e0000 */ + + /* 虚拟算法Sensor管理错误码 SENSOR_ETYPE_VSENSOR_MGR */ + SENSOR_ALG_SERVICE_ERRNO = SENSOR_ERR_NUMBER(SENSOR_ETYPE_VSENSOR_MGR, 0), /* 0x801e0100 */ + SENSOR_CHECK_RELY_SENSORS_NULL, /* 0x801e0101 */ + SENSOR_CHECK_RELY_SENSORS_SENSORIL, /* 0x801e0102 */ + SENSOR_CHECK_PROCESS_DATA_NULL, /* 0x801e0103 */ + SENSOR_CHECK_PROCESS_DATA_TS_ERR, /* 0x801e0104 */ + SENSOR_GET_RELY_SENSOR_INF_SENSORIL, /* 0x801e0105 */ + SENSOR_OPEN_RELY_SENSORS_CHECK_NULL, /* 0x801e0106 */ + SENSOR_VSENSOR_NOT_SUPPORT, /* 0x801e01A1 */ + SENSOR_PERSON_INFO_NULL, /* 0x801e01A2 */ + SENSOR_VSENSOR_TASK_REG_VENSOR_NULL, /* 0x801e01A5 */ + SENSOR_TASK_SENSOR_DATA_UPDATE_NULL, /* 0x801e01A6 */ + SENSOR_TASK_CHECK_COMM_COMPONENT_NULL, /* 0x801e01A7 */ + SENSOR_TASK_LISTENER_FIND_NULL, /* 0x801e01A8 */ + SENSOR_TASK_SENSOR_NULL, /* 0x801e01A9 */ + SENSOR_TASK_HSDATA_UPDATE_DATA_NULL, /* 0x801e01AA */ + SENSOR_TASK_VSENSOR_INFO_FIND_NULL, /* 0x801e01AB */ + SENSOR_UTIL_CANNOT_GET_ALG_TASK, /* 0x801e01AC */ + SENSOR_VSENSOR_NOT_REGISTER, /* 0x801e01AD */ + SENSOR_HSENSOR_REG_NULL, /* 0x801e01AF */ + SENSOR_TASK_HLISTENER_REG_TYPE_ERR, /* 0x801e01B1 */ + SENSOR_TASK_RELY_SENSOR_NOT_REGISTERED, /* 0x801e01B2 */ + SENSOR_TASK_SENSOR_DECISION_PARA_ERROR, /* 0x801e01B3 */ + SENSOR_TASK_VSENSOR_OPEN_FAIL, /* 0x801e01B4 */ + SENSOR_TASK_VSENSOR_CLOSE_FAIL, /* 0x801e01B5 */ + SENSOR_TASK_VSENSOR_OPEN_NULL, /* 0x801e01B6 */ + SENSOR_TASK_VSENSOR_CLOSE_NULL, /* 0x801e01B7 */ + SENSOR_TASK_VSENSOR_PROCESS_NULL, /* 0x801e01B8 */ + + /* 数据管理错误码 SENSOR_ETYPE_DATA_SERVICE */ + SENSOR_DATA_SERVICE_ERRNO = SENSOR_ERR_NUMBER(SENSOR_ETYPE_DATA_SERVICE, 0), /* 0x801e0200 */ + SENSOR_SENSOR_DECISION_PARA_NULL, /* 0x801e0201 */ + SENSOR_HSENSOR_CALIBRATE_INF_NULL, /* 0x801e0202 */ + SENSOR_HSENSOR_SELFTEST_INF_NULL, /* 0x801e0203 */ + SENSOR_HSENSOR_DRV_CALIBRATE_ERR, /* 0x801e0204 */ + SENSOR_HSENSOR_DRV_SELFTEST_ERR, /* 0x801e0205 */ + + SENSOR_HSENSOR_PERIOD_BATCH_ERR, + SENSOR_HSENSOR_MODE_ERR, + SENSOR_HSENSOR_LISTENER_INFO_NULL, + SENSOR_HSENSOR_LISTENER_NULL, + SENSOR_HSENSOR_GET_SCB_SENSORIL, + SENSOR_HSENSOR_SCB_NULL, + SENSOR_HSENSOR_SCB_HSENSOR_NULL, + SENSOR_HSENSOR_SCB_LISTENER_EXIST, + SENSOR_HSENSOR_SCB_LISTENER_NOT_EXIST, + SENSOR_HSENSOR_SCB_REPORT_PERIOD_ZERO, + SENSOR_HSENSOR_NULL, + SENSOR_HSENSOR_NAME_NULL, + SENSOR_HSENSOR_INTERSENSORCE_NULL, + SENSOR_HSENSOR_READ_ERR, + SENSOR_HSENSOR_REGISTER_TYPE_DUPLICATE, + + /* SENSOR基础框架,线程,消息队列等模块 错误码 SENSOR_ETYPE_FRAME */ + SENSOR_FRAME_ERRNO = SENSOR_ERR_NUMBER(SENSOR_ETYPE_FRAME, 0), /* 0x801e0600 */ + SENSOR_MEMSET_ERR, /* 0x801e0601 */ + SENSOR_SEND_TMSG_NULL, /* 0x801e0602 */ + SENSOR_SEND_TMSG_MSG_QUEUE_NULL, /* 0x801e0603 */ + SENSOR_RECV_TMSG_NULL, /* 0x801e0604 */ + SENSOR_RECV_TMSG_MSG_QUEUE_NULL, /* 0x801e0605 */ + SENSOR_RECV_TMSG_ERR, /* 0x801e0606 */ + SENSOR_FREE_TMSG_NULL, /* 0x801e0607 */ + SENSOR_MSG_QUEUE_CREATE_FAIL, /* 0x801e0608 */ + SENSOR_TASK_CREATE_FAIL, /* 0x801e0609 */ + SENSOR_SEND_TMSG_DEST_NOT_RUNNING, /* 0x801e060A */ + SENSOR_SENSOR_NOT_INIT, /* 0x801e060B */ + SENSOR_SENSOR_SECUREC_FUNC_ERR, /* 0x801e060C */ + SENSOR_VSENSOR_TASK_CLASS_NULL, /* 0x801e060D */ + SENSOR_TASK_CREATE_ID_WRONG, /* 0x801e060F */ + + /* SENSOR MGR 所有入参检验 */ + SENSOR_ENTRY_PARA_ERROR = SENSOR_ERR_NUMBER(SENSOR_ETYPE_ENTRY_PARA, 0), /* 0x801e0900 */ + SENSOR_ENTRY_HSENSOR_NULL, /* 0x801e0901 */ + SENSOR_ENTRY_HSENSOR_NAME_NULL, /* 0x801e0902 */ + SENSOR_ENTRY_HSENSOR_FUNC_NULL, /* 0x801e0903 */ + SENSOR_ENTRY_HSENSOR_TYPE_NULL, /* 0x801e0904 */ + SENSOR_ENTRY_VSENSOR_NULL, /* 0x801e0905 */ + SENSOR_ENTRY_VSENSOR_NAME_NULL, /* 0x801e0906 */ + SENSOR_ENTRY_VSENSOR_FUNC_NULL, /* 0x801e0907 */ + SENSOR_ENTRY_VSENSOR_TYPE_NULL, /* 0x801e0908 */ + SENSOR_ENTRY_VSENSOR_RELY_NULL, /* 0x801e0909 */ + SENSOR_ENTRY_VSENSOR_RELY_PARA_ERR, /* 0x801e090A */ + SENSOR_ENTRY_CALIBRATE_PARA_NULL, /* 0x801e090B */ + SENSOR_ENTRY_SELFTEST_PARA_NULL, /* 0x801e090C */ + SENSOR_ENTRY_SENSOR_TYPE_ILLEGAL, /* 0x801e090D */ + + SENSOR_MAX +}; + +#ifndef ARRAY_SIZE +#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0])) +#endif + +#ifndef SENSOR_MIN +#define SENSOR_MIN(a, b) (((a) > (b)) ? (b) : (a)) +#endif +#ifndef SENSOR_MAX +#define SENSOR_MAX(a, b) (((a) > (b)) ? (a) : (b)) +#endif + +#define CHECK_NULL_PTR_RETURN_VALUE(ptr, ret) \ + do { \ + if ((ptr) == NULL) { \ + HILOG_ERROR(HILOG_MODULE_SEN, "pointer is null and return ret:%d", ret); \ + return (ret); \ + } \ + } while (0) + +#define CHECK_NULL_PTR_RETURN(ptr) \ + do { \ + if ((ptr) == NULL) { \ + HILOG_ERROR(HILOG_MODULE_SEN, "pointer is null and return"); \ + return; \ + } \ + } while (0) + +#define CHECK_SENSOR_TYPE_ILLEGAL_RETURN_RET(type, ret) \ + do { \ + if ((type == SENSOR_TYPE_NONE) || (type >= SENSOR_TYPE_MAX)) { \ + HILOG_ERROR(HILOG_MODULE_SEN, "type :%d illegal\n", type); \ + return ret; \ + } \ + } while (0) + +#define CHECK_SENSOR_TYPE_ILLEGAL_RETURN(type) \ + do { \ + if ((type == SENSOR_TYPE_NONE) || (type >= SENSOR_TYPE_MAX)) { \ + HILOG_ERROR(HILOG_MODULE_SEN, "type :%d illegal\n", type); \ + return; \ + } \ + } while (0) + +#define SENSOR_CHECK_OK(x) \ + do { \ + if ((int32_t)(x) != SENSOR_OK) { \ + HILOG_ERROR(HILOG_MODULE_SEN, "ret err ret:%d!\n", x); \ + return x; \ + } \ + } while (0) +#endif /* HDI_SENSOR_COMMON_H */ diff --git a/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/include/sensor_manager.h b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/include/sensor_manager.h new file mode 100644 index 000000000..6f165051f --- /dev/null +++ b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/include/sensor_manager.h @@ -0,0 +1,38 @@ +/* + * Copyright (c) CompanyNameMagicTag. 2025-2025. All rights reserved. + * Description: sensor mgr + * Author: Media Software Group + * Create: 2025-06-06 + */ + + +#ifndef HDI_SENSOR_MANAGER_H +#define HDI_SENSOR_MANAGER_H + +#include +#include +#include "sensor_typedef.h" + +int32_t SensorMgrInit(void); +int32_t SensorMgrDeInit(void); + +int32_t SensorMgrRegistHsensor(const Hsensor *sensor); +int32_t SensorMgrRegistVsensor(const Vsensor *sensor); + +int32_t SensorMgrGetAllSensors(struct SensorInformation **sensorInfo, int32_t *count); + +int32_t SensorMgrEnable(int32_t sensorTypeId); + +int32_t SensorMgrDisable(int32_t sensorTypeId); + +int32_t SensorMgrSetBatch(int32_t sensorTypeId, int64_t samplingInterval, int64_t reportInterval); + +int32_t SensorMgrSetMode(int32_t sensorTypeId, int32_t mode); + +int32_t SensorMgrSetOption(int32_t sensorTypeId, uint32_t option); + +int32_t SensorMgrRegistDataCallback(int32_t sensorTypeId, RecordDataCallback cb); + +int32_t SensorMgrUnregistDataCallback(int32_t sensorTypeId, RecordDataCallback cb); + +#endif /* HDI_SENSOR_MANAGER_H */ diff --git a/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/include/sensor_typedef.h b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/include/sensor_typedef.h new file mode 100644 index 000000000..1e04066b8 --- /dev/null +++ b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/include/sensor_typedef.h @@ -0,0 +1,150 @@ +/* + * Copyright (c) CompanyNameMagicTag. 2025-2025. All rights reserved. + * Description: sensor type def + * Author: Media Software Group + * Create: 2025-06-06 + */ + +#ifndef HDI_SENSOR_TYPEDEF_H +#define HDI_SENSOR_TYPEDEF_H + +#include +#include +#include "sensor_type.h" + +/* person info */ +#define MIN_USER_WEIGHT 10 /* 单位:公斤 */ +#define DEFAULT_USER_WEIGHT 60 /* 单位:公斤 */ +#define MAX_USER_WEIGHT 250 /* 单位:公斤 */ +#define MIN_USER_HEIGHT 50 /* 单位:厘米 */ +#define DEFAULT_USER_HEIGHT 170 /* 单位:厘米 */ +#define MAX_USER_HEIGHT 250 /* 单位:厘米 */ +#define DEFAULT_USER_AGE 30 /* 单位:年 */ +#define MAX_USER_AGE 150 /* 单位:年 */ +#define ALG_USER_SEX_WOMEN 0 /* 女 */ +#define ALG_USER_SEX_MAN 1 /* 男 */ +#define ALG_USER_SEX_UNKNOWN 2 /* UNKNOWN */ +#define MAX_USER_GENDER 2 + +typedef struct { + uint8_t weight; /* kg */ + uint8_t height; /* cm */ + uint8_t age; /* YEAR */ + uint8_t gender; /* MALE为 1, FEMALE为 0, UNKNOWN 为2 */ +} SensorPersonInfo; + +typedef enum { + SENSOR_IOCTL_SET_PARA = 0, + SENSOR_IOCTL_GET_PARA, + SENSOR_IOCTL_GET_INTERVAL, + SENSOR_IOCTL_GET_INFO, + SENSOR_IOCTL_CURRENT_ADJUST, + SENSOR_IOCTL_GET_CHIP_TYPE, + SENSOR_IOCTL_GET_MAX_BATCHCOUNT, + SENSOR_IOCTL_GET_FW_VERSION, + SENSOR_IOCTL_GET_MAX_RANGE, + SENSOR_IOCTL_GET_PRECISION, + SENSOR_IOCTL_GET_SENSOR_DATA, + SENSOR_IOCTL_MAX +} SensorIoctlCmd; + +typedef enum { + SENSOR_STATE_IDLE = 0, + SENSOR_STATE_OPEN, + SENSOR_STATE_CLOSE, + + SENSOR_STATE_MAX +} SensorState; + +typedef struct { + uint32_t period; /* 采样间隔单位 ms */ + uint32_t batch; /* 一次上报的数据组数 */ + uint32_t option; + enum SensorModeType mode; /* fifo mode OR realtime mode */ +} SensorPara; + +typedef struct { + enum SensorTypeTag type; + SensorPara param; +} RelySensorInfo; + +typedef struct { + RelySensorInfo *relySensorArray; + uint32_t relySensorCnt; + uint8_t reserve[3]; /* 4字节对齐,3个字节保留 */ +} RelySensorsInfo; + +/* sensor信息 */ +typedef struct { + enum SensorTypeTag type; /* sensor 类型 */ + const char *name; /* sensor 信息 “ACCEL” 、“HR v2.0” 等 */ + const void *privateData; /* sensor 的私有信息,私有接口 */ + uint32_t privateDataLen; /* sensor 的私有信息长度 */ + SensorState state; /* 当前传感器运行状态,开、关、使能、去使能、暂停等 */ + SensorPara openPara; /* 当前传感器运行参数 */ +} SensorInfo; + +/* sensor操作句柄结构 */ +typedef struct Sensor Sensor; +struct Sensor { + SensorInfo sensorInfo; + /* 方法 */ + int32_t (*open)(const Sensor *sensor, const SensorPara *openPara); /* 传感器开,设置传感器 */ + int32_t (*close)(const Sensor *sensor); /* 传感器关 */ + int32_t (*setBatch)(Sensor *sensor, int64_t samplingInterval, int64_t reportInterval); + int32_t (*setMode)(Sensor *sensor, int32_t mode); + int32_t (*setOption)(Sensor *sensor, uint32_t option); + int32_t (*registerResultCallback)(const Sensor *sensor, RecordDataCallback cb); + int32_t (*unregisterResultCallback)(const Sensor *sensor, RecordDataCallback cb); + int32_t (*calibrate)(const Sensor *sensor, void *para, uint32_t len); /* 物理传感器专用校准接口,暂不支持 */ + int32_t (*selfTest)( + const Sensor *sensor, void *para, uint32_t len); /* 厂测模式下使用,物理传感器专用自检接口,暂不支持 */ + int32_t (*ioctl)(const Sensor *sensor, SensorIoctlCmd cmd, void *data, uint32_t len); /* 其他io操作 */ +}; + +typedef struct { + float maxRange; /**< Maximum measurement range of the sensor, not support now */ + float accuracy; /**< Sensor accuracy, not support now */ + int64_t minDelay; /**< Minimum sample period allowed in microseconds, not support now */ + int64_t maxDelay; /**< Maxmum sample period allowed in microseconds, not support now */ + uint32_t sampleElementlen; /**< one sample len */ + uint32_t maxBatchCount; /**< Maxmum number of data of this sensor that could be batched */ + uint32_t reserved; /**< Reserved fields */ +} SensorCapability; + +/* 物理传感器数据结构定义,注册时需要实现 */ +typedef struct { + enum SensorTypeTag type; /* 传感器类型 */ + const char *name; /* sensor 信息 “ACCEL” “GYRO”等 */ + SensorCapability caps; + const void *privateData; /* sensor 的私有信息,私有接口 */ + uint32_t privateDataLen; /* sensor 的私有信息长度 */ + /* 方法 */ + int32_t (*init)(void); /* 上电,sensor初始化 */ + int32_t (*deinit)(void); /* 下电,去初始化 */ + int32_t (*open)(SensorPara *para); /* 传感器开 */ + int32_t (*close)(void); /* 传感器关 */ + int32_t (*read)(uint8_t *data, uint32_t len); /* 从传感器读数据 */ + /* 其他io操作 */ + int32_t (*ioctl)(SensorIoctlCmd cmd, void *data, uint32_t len); +} Hsensor; + +/* 虚拟传感器(算法)数据结构定义,注册时需要实现 */ +typedef struct { + enum SensorTypeTag type; /* 虚拟传感器类型,注册时写明 */ + const char *name; /* 虚拟传感器信息,注册时写明 */ + const void *privateData; /* 虚拟传感器的私有信息 */ + uint32_t privateDataLen; /* 虚拟传感器的私有信息长度 */ + RelySensorsInfo *relySensors; /* 注册时写明,写清依赖的传感器 */ + + int32_t (*registDataCb)(RecordDataCallback cb); /* 注册结果回调函数 */ + int32_t (*unRegistDataCb)(RecordDataCallback cb); /* 取消注册结果回调函数 */ + /* 方法 */ + int32_t (*open)(SensorPara *para); /* 算法开,模式设置 */ + int32_t (*close)(void); /* 算法关 */ + /* 算法接收传感器(包括依赖的算法)数据的接口 ts 微秒 */ + int32_t (*process)(enum SensorTypeTag type, uint8_t *data, uint64_t ts, uint32_t len); + int32_t (*ioctl)(SensorIoctlCmd cmd, void *data, uint32_t len); +} Vsensor; + +#endif /* HDI_SENSOR_TYPEDEF_H */ diff --git a/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/hsensor_data_service/include/hsensor_data_service.h b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/hsensor_data_service/include/hsensor_data_service.h new file mode 100644 index 000000000..bb1709d90 --- /dev/null +++ b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/hsensor_data_service/include/hsensor_data_service.h @@ -0,0 +1,25 @@ +/* + * Copyright (c) CompanyNameMagicTag. 2025-2025. All rights reserved. + * Description: sensor data service + * Author: Media Software Group + * Create: 2025-06-06 + */ + +#ifndef HSENSOR_DATA_SERVICE_H +#define HSENSOR_DATA_SERVICE_H + +#include "sensor_typedef.h" + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +int32_t HsensorDataServiceInit(enum SensorTypeTag type); +uint32_t HsensorDataServiceProcess(enum SensorTypeTag type); +int32_t HsensorDataServiceDeInit(enum SensorTypeTag type); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* HSENSOR_DATA_SERVICE_H */ \ No newline at end of file diff --git a/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/hsensor_data_service/src/hsensor_data_service.c b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/hsensor_data_service/src/hsensor_data_service.c new file mode 100644 index 000000000..fabb3b2a3 --- /dev/null +++ b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/hsensor_data_service/src/hsensor_data_service.c @@ -0,0 +1,113 @@ +/* + * Copyright (c) CompanyNameMagicTag. 2025-2025. All rights reserved. + * Description: sensor data service impl + * Author: Media Software Group + * Create: 2025-06-06 + */ + +#include "hsensor_data_service.h" +#include "sensor_common.h" +#include "sensor_utils.h" +#include "sensor_log.h" +#include "hsensormgr_service.h" + +struct SensorEvents g_sensorEvent = {}; + +int32_t HsensorDataServiceInit(enum SensorTypeTag type) +{ + return SENSOR_OK; +} + +/* ****************************************************************************** + 函 数 名 : HsensorDataServiceNotifyResultData + 功能描述 : 数据分发,目前尚未做降采样,直接将所有数据上报, + 目前将所有数据的batch和采样率设置为一样,等待缓冲区和降采样完成 + 输入参数 : None + 输出参数 : None + 返 回 值 : None +****************************************************************************** */ +static void HsensorDataServiceNotifyResultData(HsensorScb *hsensorScb, HsensorListener *listener) +{ + if (listener->resultDataCb == NULL) { + return; + } + g_sensorEvent.sensorId = hsensorScb->type; + g_sensorEvent.version = 0; + g_sensorEvent.timestamp = hsensorScb->sysTick; + g_sensorEvent.option = hsensorScb->decisionPara.option; + g_sensorEvent.mode = hsensorScb->decisionPara.mode; + g_sensorEvent.data = hsensorScb->dataBuf; + g_sensorEvent.dataLen = hsensorScb->dataPackSize; + HILOG_DEBUG(HILOG_MODULE_SEN, "hsensorScb->type:%d data:%x", hsensorScb->type, hsensorScb->dataBuf); + + listener->resultDataCb(&g_sensorEvent); +} + +static void HsensorDataServiceNotifyData(HsensorScb *hsensorScb, HsensorListener *listener) +{ + if (listener->notifyCallback == NULL) { + return; + } + SensorNotifyInfo notifyInfo = { + .type = hsensorScb->type, + .data = hsensorScb->dataBuf, + .dataLen = hsensorScb->dataPackSize, + .option = hsensorScb->decisionPara.option, + .timestamp = hsensorScb->sysTick, + }; + listener->notifyCallback(¬ifyInfo, listener->notifyArg); +} + +static void HsensorDataServiceNotifyAll(HsensorScb *hsensorScb) +{ + HsensorListener *listenerIndex = NULL; + osal_list_for_each_entry(listenerIndex, &hsensorScb->listenerList, list) + { + if (listenerIndex->status != SENSOR_LISTENER_WORKING) { + continue; + } + HsensorDataServiceNotifyResultData(hsensorScb, listenerIndex); + HsensorDataServiceNotifyData(hsensorScb, listenerIndex); + } +} + +uint32_t HsensorDataServiceProcess(enum SensorTypeTag type) +{ + HsensorScb *hsensorScb = HsensorMgrHsensorScbFind(type); + uint32_t samplingInterval = hsensorScb->decisionPara.period; + CHECK_NULL_PTR_RETURN_VALUE(hsensorScb, samplingInterval); + CHECK_NULL_PTR_RETURN_VALUE(hsensorScb->batchDataBuf, samplingInterval); + HILOG_DEBUG(HILOG_MODULE_SEN, + "hsensor type:%d period:%u batch:%u option:%u mode:%d reportPeriod:%u", + type, + hsensorScb->decisionPara.period, + hsensorScb->decisionPara.batch, + hsensorScb->decisionPara.option, + hsensorScb->decisionPara.mode, + hsensorScb->reportPeriod); + int32_t dataLen = hsensorScb->hsensor->read(hsensorScb->batchDataBuf, hsensorScb->batchDataBufSize); + if (dataLen <= 0) { + HILOG_WARN(HILOG_MODULE_SEN, "type: %d read data fail.", type); + return samplingInterval; + } + hsensorScb->batchCount++; + hsensorScb->dataPackSize += dataLen; + hsensorScb->batchDataBuf += dataLen; + hsensorScb->batchDataBufSize -= dataLen; + HILOG_DEBUG(HILOG_MODULE_SEN, "batchCount: %d dataLen: %d", hsensorScb->batchCount, dataLen); + if (hsensorScb->batchCount < hsensorScb->decisionPara.batch) { + return samplingInterval; + } + hsensorScb->sysTick = SensorUtilsGetRtcTimeMs(); + HsensorDataServiceNotifyAll(hsensorScb); + hsensorScb->batchDataBuf = hsensorScb->dataBuf; + hsensorScb->batchDataBufSize = hsensorScb->dataBufSize; + hsensorScb->dataPackSize = 0; + hsensorScb->batchCount = 0; + return samplingInterval; +} + +int32_t HsensorDataServiceDeInit(enum SensorTypeTag type) +{ + return SENSOR_OK; +} \ No newline at end of file diff --git a/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/hsensormgr_service/include/hsensormgr_service.h b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/hsensormgr_service/include/hsensormgr_service.h new file mode 100644 index 000000000..50219bb28 --- /dev/null +++ b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/hsensormgr_service/include/hsensormgr_service.h @@ -0,0 +1,100 @@ +/* + * Copyright (c) CompanyNameMagicTag. 2025-2025. All rights reserved. + * Description: hsensor mgr + * Author: Media Software Group + * Create: 2025-06-06 + */ + +#ifndef HSENSOR_MGR_SERVICE_H +#define HSENSOR_MGR_SERVICE_H +#include "sensor_typedef.h" +#include "soc_osal.h" + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +#define HSENSOR_LISTENER_NAME_MAX_LEN 64 + +typedef enum { + SENSOR_LISTENER_REGISTER, + SENSOR_LISTENER_UNREGISTER, + SENSOR_LISTENER_ENABLE, + SENSOR_LISTENER_DISABLE, + SENSOR_LISTENER_WORKING, +} HsensorListenerStatus; + +typedef struct { + enum SensorTypeTag type; + uint8_t *data; + uint32_t dataLen; + uint32_t option; + uint64_t timestamp; +} SensorNotifyInfo; + +typedef void (*NotifyCallback)(const SensorNotifyInfo *info, void *notifyArg); + +typedef struct { + struct osal_list_head list; + char name[HSENSOR_LISTENER_NAME_MAX_LEN]; + enum SensorTypeTag type; + uint16_t bufIndex; /* listener的缓存索引 */ + uint16_t sampleCnt; /* 传感器的采样次数 */ + uint16_t dispatchCnt; /* 数据分发间隔次数 */ + uint32_t notifyPeriod; /* listener数据需求周期 ms */ + SensorPara openParam; + NotifyCallback notifyCallback; + void *notifyArg; + RecordDataCallback resultDataCb; + HsensorListenerStatus status; +} HsensorListener; + +typedef enum { + HSENSOR_SCB_UNINITED, + HSENSOR_SCB_INITED, +} HsensorScbStatus; + +typedef struct HsensorScb { + struct osal_list_head list; /* scb link point */ + struct osal_list_head listenerList; /* scb listener head */ + uint16_t listenerNum; + enum SensorTypeTag type; /* scb sensor type */ + HsensorScbStatus status; + uint8_t *dataBuf; /* scb buffer */ + uint8_t *batchDataBuf; /* scb batch buffer */ + uint32_t batchDataBufSize; /* scb batch buffer length */ + uint32_t dataBufSize; /* scb buffer length */ + uint32_t dataPackSize; /* scb data len for every batch */ + uint32_t dataBufIndex; /* scb buffer current index */ + uint32_t reportPeriod; /* 传感器采样的上报周期 */ + uint32_t batchCount; /* scb buffer current index */ + uint64_t sysTick; + SensorPara decisionPara; /* scb decision param */ + Hsensor *hsensor; +} HsensorScb; + +typedef struct { + struct osal_list_head hsensorScbHead; + uint32_t hsensorScbNum; + uint8_t *dataBuf; + uint8_t *dataDispatchBuf; + bool inited; +} HsensorMgr; + +int32_t HsensorMgrInit(void); +int32_t HsensorMgrRegister(const Hsensor *hsensor); +int32_t HsensorMgrRegisterListener(HsensorListener *listener); +int32_t HsensorMgrUnRegisterListener(HsensorListener *listener); +int32_t HsensorMgrOpenListener(HsensorListener *listener); +int32_t HsensorMgrCloseListener(HsensorListener *listener); +HsensorScb *HsensorMgrHsensorScbFind(const enum SensorTypeTag type); + +int32_t HsensorMgrIoctl(enum SensorTypeTag type, SensorIoctlCmd cmd, void *data, uint32_t len); +int32_t HsensorMgrReadData(const enum SensorTypeTag type, const uint64_t *ts); +void HsensorMgrPrintListener(enum SensorTypeTag type); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif \ No newline at end of file diff --git a/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/hsensormgr_service/src/hsensormgr_service.c b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/hsensormgr_service/src/hsensormgr_service.c new file mode 100644 index 000000000..e59447a0d --- /dev/null +++ b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/hsensormgr_service/src/hsensormgr_service.c @@ -0,0 +1,833 @@ +/* + * Copyright (c) CompanyNameMagicTag. 2025-2025. All rights reserved. + * Description: hsensor mgr impl + * Author: Media Software Group + * Create: 2025-06-06 + */ + +#include "hsensormgr_service.h" +#include +#include +#include "securec.h" +#include "sensor_log.h" +#include "sensor_common.h" +#include "sensor_memory.h" +#include "sensor_tmsg.h" +#include "sensor_utils.h" +#include "sensor_para_decision.h" + +#define HSENSOR_SCB_MAX_NUM 10 +#define HSENSORMGR_MAX_DATA_LEN (1024 * 1024) +static HsensorMgr g_hsensormgr = {0}; +static HsensorScb g_hsensorScb[HSENSOR_SCB_MAX_NUM] = {0}; + +static HsensorMgr *HsensorMgrGetInstance(void) +{ + return &g_hsensormgr; +} + +static int32_t HsensorScbMallocDataBuffer(HsensorScb *hsensorScb) +{ + if (hsensorScb == NULL) { + return SENSOR_ERROR; + } + uint32_t dataBufSize = hsensorScb->hsensor->caps.sampleElementlen * hsensorScb->decisionPara.batch; + if (dataBufSize >= HSENSORMGR_MAX_DATA_LEN) { + HILOG_ERROR(HILOG_MODULE_SEN, "hsensorScb dataBufSize :%u is invalid.", dataBufSize); + return SENSOR_ERROR; + } + hsensorScb->dataBuf = SensorMalloc(dataBufSize); + if (hsensorScb->dataBuf == NULL) { + HILOG_ERROR(HILOG_MODULE_SEN, "hsensorScb MallocDataBuffer NULL."); + return SENSOR_ERROR; + } + hsensorScb->batchDataBuf = hsensorScb->dataBuf; + hsensorScb->batchDataBufSize = dataBufSize; + hsensorScb->dataBufSize = dataBufSize; + return SENSOR_OK; +} + +static int32_t HsensorScbFreeDataBuffer(HsensorScb *hsensorScb) +{ + if (hsensorScb == NULL) { + return SENSOR_ERROR; + } + if (hsensorScb->dataBuf == NULL) { + HILOG_ERROR(HILOG_MODULE_SEN, "hsensorScb cDataBuffer NULL."); + return SENSOR_ERROR; + } + SensorFree(hsensorScb->dataBuf); + hsensorScb->dataBuf = NULL; + hsensorScb->batchDataBuf = NULL; + hsensorScb->batchDataBufSize = 0; + hsensorScb->dataBufSize = 0; + hsensorScb->dataPackSize = 0; + return SENSOR_OK; +} + +static void HsensorScbInit(HsensorScb *hsensorScb) +{ + if (hsensorScb == NULL) { + return; + } + OSAL_INIT_LIST_HEAD(&(hsensorScb->list)); + OSAL_INIT_LIST_HEAD(&(hsensorScb->listenerList)); + hsensorScb->listenerNum = 0; + hsensorScb->type = SENSOR_TYPE_NONE; + hsensorScb->status = HSENSOR_SCB_UNINITED; + hsensorScb->dataBuf = NULL; + hsensorScb->dataBufSize = 0; + hsensorScb->dataBufIndex = 0; + hsensorScb->dataPackSize = 0; + hsensorScb->batchCount = 0; + SensorPara initDecisionPara = {0}; + hsensorScb->decisionPara = initDecisionPara; + hsensorScb->hsensor = NULL; +} + +static HsensorScb *HsensorScbRequest(uint16_t scbNum) +{ + return (scbNum >= HSENSOR_SCB_MAX_NUM) ? NULL : (&g_hsensorScb[scbNum]); +} + +HsensorScb *HsensorMgrHsensorScbFind(const enum SensorTypeTag type) +{ + HsensorMgr *hsensorMgr = HsensorMgrGetInstance(); + HsensorScb *hsensorScbIndex = NULL; + osal_list_for_each_entry(hsensorScbIndex, &hsensorMgr->hsensorScbHead, list) + { + if (type == hsensorScbIndex->type) { + return hsensorScbIndex; + } + } + return NULL; +} + +int32_t HsensorMgrInit(void) +{ + HILOG_DEBUG(HILOG_MODULE_SEN, "in."); + HsensorMgr *hsensorMgr = HsensorMgrGetInstance(); + if (hsensorMgr->inited) { + return SENSOR_OK; + } + OSAL_INIT_LIST_HEAD(&(hsensorMgr->hsensorScbHead)); + hsensorMgr->hsensorScbNum = 0; + hsensorMgr->dataBuf = NULL; + hsensorMgr->dataDispatchBuf = NULL; + for (uint16_t i = 0; i < HSENSOR_SCB_MAX_NUM; i++) { + HsensorScb *hsensorScb = HsensorScbRequest(i); + HsensorScbInit(hsensorScb); + } + hsensorMgr->inited = true; + HILOG_DEBUG(HILOG_MODULE_SEN, "out."); + return SENSOR_OK; +} + +/* ****************************************************************************** + 函 数 名 : HsensormgrCheckListener + 功能描述 : 检查listener是否存在于该scb中 + 输入参数 : None + 输出参数 : None + 返 回 值 : None +****************************************************************************** */ +static int32_t HsensormgrCheckListener(const HsensorScb *hsensorScb, const HsensorListener *listener) +{ + HsensorListener *listenerIndex = NULL; + osal_list_for_each_entry(listenerIndex, &hsensorScb->listenerList, list) + { + if (memcmp(listenerIndex->name, listener->name, (uint32_t)HSENSOR_LISTENER_NAME_MAX_LEN) == 0) { + return SENSOR_OK; + } + } + return SENSOR_ERROR; +} + +int32_t HsensorMgrRegisterListener(HsensorListener *listener) +{ + HsensorScb *hsensorScb = HsensorMgrHsensorScbFind(listener->type); + if (hsensorScb == NULL) { + HILOG_ERROR(HILOG_MODULE_SEN, "type %d hsensorScb get fail.", listener->type); + return SENSOR_HSENSOR_SCB_NULL; + } + if (HsensormgrCheckListener(hsensorScb, listener) == SENSOR_OK) { + HILOG_ERROR(HILOG_MODULE_SEN, "hsensorListener name %s already exits.", listener->name); + return SENSOR_HSENSOR_SCB_LISTENER_EXIST; + } + + osal_list_add(&listener->list, &hsensorScb->listenerList); + hsensorScb->listenerNum++; + listener->status = SENSOR_LISTENER_REGISTER; + HILOG_DEBUG(HILOG_MODULE_SEN, + "hsensorListener name: %s type:%d listenerNum:%u", + listener->name, + listener->type, + hsensorScb->listenerNum); + return SENSOR_OK; +} + +int32_t HsensorMgrUnRegisterListener(HsensorListener *listener) +{ + HILOG_DEBUG(HILOG_MODULE_SEN, "UnRegister hsensor type %d listener name:%s.", + listener->type, listener->name); + /* 表示vsensor 注册的 Listener 不需要 UnRegister */ + if (listener->notifyCallback != NULL) { + return SENSOR_OK; + } + HsensorScb *hsensorScb = HsensorMgrHsensorScbFind(listener->type); + if (hsensorScb == NULL) { + HILOG_ERROR(HILOG_MODULE_SEN, "type %d hsensorScb get fail.", listener->type); + return SENSOR_HSENSOR_SCB_NULL; + } + if (HsensormgrCheckListener(hsensorScb, listener) != SENSOR_OK) { + HILOG_ERROR(HILOG_MODULE_SEN, "hsensorListener name %s not exits.", listener->name); + return SENSOR_HSENSOR_SCB_LISTENER_NOT_EXIST; + } + + osal_list_del(&listener->list); + hsensorScb->listenerNum--; + listener->status = SENSOR_LISTENER_UNREGISTER; + SensorUtilsFreeListener(listener); + HILOG_DEBUG(HILOG_MODULE_SEN, "UnRegister listenerNum: :%u", hsensorScb->listenerNum); + return SENSOR_OK; +} + +static void HsensormgrCheckOpenParam(SensorPara *openParam) +{ + if (openParam->period == 0) { + openParam->period = SENSOR_PARA_REALTIME_PERIOD_MIN; + } + if (openParam->batch == 1 || openParam->batch == 0) { + openParam->batch = 1; + openParam->mode = SENSOR_MODE_REALTIME; + } + if (openParam->mode == SENSOR_MODE_REALTIME && (openParam->period < SENSOR_PARA_REALTIME_PERIOD_MIN)) { + openParam->period = SENSOR_PARA_REALTIME_PERIOD_MIN; + } +} + +static void HsensormgrOpenCheckOpenParam(HsensorListener *listener, SensorPara *openParam, uint32_t *reportPeriod) +{ + HsensormgrCheckOpenParam(openParam); + listener->notifyPeriod = openParam->period * openParam->batch; + *reportPeriod = listener->notifyPeriod; +} + +/* ****************************************************************************** + 函 数 名 : HsensormgrCalculateGCD + 功能描述 : 计算最大公约数 + 输入参数 : None + 输出参数 : None + 返 回 值 : None +****************************************************************************** */ +static uint32_t HsensormgrCalculateGCD(uint32_t a, uint32_t b) +{ + uint32_t c; + while (b) { + c = b; + b = a % b; + a = c; + } + return a; +} + +/* ****************************************************************************** + 函 数 名 : HsensormgrUpdateOpenParam + 功能描述 : 更新 scb的 openParam ,遍历所有enable的listener + 输入参数 : None + 输出参数 : None + 返 回 值 : None +****************************************************************************** */ +static bool HsensormgrUpdateOpenParam(HsensorScb *hsensorScb, SensorPara *openParam, uint32_t reportPeriod) +{ + uint8_t openMode = 0; + uint32_t reportPeriodGcd = reportPeriod; + uint32_t notifyPeriodTemp = 0; + bool needOpen = false; + uint32_t periodMin = openParam->period; + uint32_t notifyPeriodMin = reportPeriod; + HsensorListener *listenerIndex = NULL; + osal_list_for_each_entry(listenerIndex, &hsensorScb->listenerList, list) + { + HsensorMgrPrintListener(listenerIndex->type); + if (listenerIndex->status == SENSOR_LISTENER_WORKING || listenerIndex->status == SENSOR_LISTENER_ENABLE) { + openMode |= (1 << listenerIndex->openParam.mode); + periodMin = (periodMin > listenerIndex->openParam.period) ? listenerIndex->openParam.period : periodMin; + notifyPeriodMin = + (notifyPeriodMin > listenerIndex->notifyPeriod) ? listenerIndex->notifyPeriod : notifyPeriodMin; + if (needOpen == false) { + reportPeriodGcd = listenerIndex->notifyPeriod; + } + reportPeriodGcd = HsensormgrCalculateGCD(reportPeriodGcd, notifyPeriodTemp); + notifyPeriodTemp = notifyPeriodMin; + needOpen = true; + } + } + if (openMode & (1 << SENSOR_MODE_REALTIME)) { + openParam->mode = SENSOR_MODE_REALTIME; + } else { + openParam->mode = SENSOR_MODE_FIFO_MODE; + } + openParam->period = periodMin; + if (periodMin != 0) { + openParam->batch = reportPeriodGcd / periodMin; + } else { + openParam->batch = 0; + } + HILOG_DEBUG(HILOG_MODULE_SEN, "needOpen: %d", needOpen); + return needOpen; +} + +/* ****************************************************************************** + 函 数 名 : HsensormgrUpdateListener + 功能描述 : 更新 listener ,并决定是否重新打开 sensor + 1. 如果不重启sensor,只需要更新该listener的相关参数即可 + 2. 如果需要重启sensor,则需要更新所有listener的相关参数 + 参考6.22未合入的提交 + 输入参数 : None + 输出参数 : None + 返 回 值 : None +****************************************************************************** */ +int32_t HsensormgrUpdateListener(HsensorScb *hsensorScb, HsensorListener *listener, const SensorPara *openParam) +{ + if (memcmp(&(hsensorScb->decisionPara), openParam, sizeof(SensorPara)) == 0) { + /* 说明不需要重启,更新此次listener的相关参数 */ + if (hsensorScb->reportPeriod != 0) { + listener->sampleCnt = 0; + listener->dispatchCnt = listener->notifyPeriod / hsensorScb->reportPeriod; + return SENSOR_OK; + } else { + HILOG_ERROR(HILOG_MODULE_SEN, + "hsensorListener name %s type %d open error, batch %d period %d.", + listener->name, + listener->type, + openParam->batch, + openParam->period); + return SENSOR_HSENSOR_SCB_REPORT_PERIOD_ZERO; + } + } + /* 需要重启hensor */ + (void)memcpy_s(&hsensorScb->decisionPara, sizeof(SensorPara), openParam, sizeof(SensorPara)); + hsensorScb->reportPeriod = openParam->batch * openParam->period; + if (hsensorScb->reportPeriod == 0) { + HILOG_ERROR(HILOG_MODULE_SEN, + "hsensorListener name %s type %d open error, batch %d period %d.", + listener->name, + listener->type, + openParam->batch, + openParam->period); + return SENSOR_HSENSOR_SCB_REPORT_PERIOD_ZERO; + } + + int32_t ret = hsensorScb->hsensor->open(&hsensorScb->decisionPara); + if (ret != SENSOR_OK) { + HILOG_ERROR(HILOG_MODULE_SEN, + "hsensorListener name %s type %d open error, batch %u period %u.", + listener->name, + listener->type, + openParam->batch, + openParam->period); + return ret; + } + HILOG_INFO(HILOG_MODULE_SEN, + "hsensor name %s type %d open batch %u period %u.", + hsensorScb->hsensor->name, + hsensorScb->type, + hsensorScb->decisionPara.batch, + hsensorScb->decisionPara.period); + return SENSOR_OK; +} + +/* ****************************************************************************** + 函 数 名 : HsensorMgrOpenListener + 功能描述 : 1.检查open 参数 2.更新所有listener 3.打开对应的hsensor + + 输入参数 : None + 输出参数 : None + 返 回 值 : None +****************************************************************************** */ +int32_t HsensorMgrOpenListener(HsensorListener *listener) +{ + if (listener == NULL) { + HILOG_ERROR(HILOG_MODULE_SEN, "listener is null.", listener->type); + return SENSOR_HSENSOR_LISTENER_NULL; + } + HsensorScb *hsensorScb = HsensorMgrHsensorScbFind(listener->type); + if (hsensorScb == NULL) { + HILOG_ERROR(HILOG_MODULE_SEN, "type %d hsensorScb get fail.", listener->type); + return SENSOR_HSENSOR_SCB_NULL; + } + // 检查该 listener 是否 存在于scb中 + if (HsensormgrCheckListener(hsensorScb, listener) != SENSOR_OK) { + HILOG_ERROR(HILOG_MODULE_SEN, "hsensorListener name %s type %d not exits.", listener->name, listener->type); + return SENSOR_HSENSOR_SCB_LISTENER_NOT_EXIST; + } + listener->status = SENSOR_LISTENER_ENABLE; + SensorPara openParam = listener->openParam; + uint32_t reportPeriod = 0; + /* 计算此次listener的reportPeriod等 */ + HILOG_DEBUG(HILOG_MODULE_SEN, + "open listener para period: %u batch: %u mode: %d option: %u ", + openParam.period, + openParam.batch, + openParam.mode, + openParam.option); + HsensormgrOpenCheckOpenParam(listener, &openParam, &reportPeriod); + /* 遍历所有使能的listener,更新全局的openParam */ + if (HsensormgrUpdateOpenParam(hsensorScb, &openParam, reportPeriod) == false) { + HILOG_INFO( + HILOG_MODULE_SEN, "hsensor not need open, listener open type %d name %s ", listener->type, listener->name); + return SENSOR_OK; + } + if (HsensormgrUpdateListener(hsensorScb, listener, &openParam) != SENSOR_OK) { + HILOG_ERROR(HILOG_MODULE_SEN, "hsensorListener name %s type %d open error.", listener->name, listener->type); + return SENSOR_ERROR; + } + listener->status = SENSOR_LISTENER_WORKING; + uint32_t taskId = SensorUtilsGetRegisteredTaskId(listener->type); + if (taskId != SENSOR_FAILURE) { // 已经创建线程 + return SENSOR_OK; + } + int32_t ret = HsensorScbMallocDataBuffer(hsensorScb); + if (ret != SENSOR_OK) { + return ret; + } + ret = SensorTaskCreateHsensorTask(hsensorScb->hsensor); + if (ret != SENSOR_OK) { + HILOG_ERROR(HILOG_MODULE_SEN, "hsensor type %d CreateHsensorTask failed.", listener->type); + return ret; + } + HILOG_INFO(HILOG_MODULE_SEN, "hsensor listener open type %d name %s ", listener->type, listener->name); + return SENSOR_OK; +} + +/* ****************************************************************************** + 函 数 名 : HsensormgrCloseCheckOpenParam + 功能描述 : 遍历剩余的使能的listener,找到一个开启的openParam + 输入参数 : None + 输出参数 : None + 返 回 值 : None +****************************************************************************** */ +static void HsensormgrCloseCheckOpenParam(HsensorScb *hsensorScb, SensorPara *openParam, uint32_t *reportPeriod) +{ + HsensorListener *listenerIndex = NULL; + osal_list_for_each_entry(listenerIndex, &hsensorScb->listenerList, list) + { + if (listenerIndex->status == SENSOR_LISTENER_WORKING || listenerIndex->status == SENSOR_LISTENER_ENABLE) { + (void)memcpy_s(openParam, sizeof(SensorPara), &listenerIndex->openParam, sizeof(SensorPara)); + HsensormgrCheckOpenParam(openParam); + *reportPeriod = openParam->period * openParam->batch; + break; + } + } +} + +int32_t HsensorMgrCloseListener(HsensorListener *listener) +{ + if (listener == NULL) { + HILOG_ERROR(HILOG_MODULE_SEN, "close listener is null."); + return SENSOR_HSENSOR_LISTENER_NULL; + } + HsensorScb *hsensorScb = HsensorMgrHsensorScbFind(listener->type); + if (hsensorScb == NULL) { + HILOG_ERROR(HILOG_MODULE_SEN, "type %d hsensorScb get fail.", listener->type); + return SENSOR_HSENSOR_SCB_NULL; + } + if (HsensormgrCheckListener(hsensorScb, listener) != SENSOR_OK) { + HILOG_ERROR(HILOG_MODULE_SEN, "hsensorListener name %s not exits.", listener->name); + return SENSOR_ERROR; + } + uint32_t reportPeriod = 0; + SensorPara openParam = {.period = 0, .batch = 0, .mode = SENSOR_MODE_REALTIME, .option = 0}; + listener->status = SENSOR_LISTENER_DISABLE; + + HsensormgrCloseCheckOpenParam(hsensorScb, &openParam, &reportPeriod); + /* 遍历所有使能的listener,更新全局的openParam */ + if (HsensormgrUpdateOpenParam(hsensorScb, &openParam, reportPeriod) == false) { + /* 不存在打开的listener,关闭hsensor */ + int32_t ret = SensorTaskDestroyHsensorTask(hsensorScb->type); + if (ret != SENSOR_OK) { + HILOG_ERROR(HILOG_MODULE_SEN, "hsensor type %d Destroy failed.", hsensorScb->type); + } + ret = HsensorScbFreeDataBuffer(hsensorScb); + if (ret != SENSOR_OK) { + HILOG_ERROR(HILOG_MODULE_SEN, "hsensor type %d FreeData failed.", hsensorScb->type); + return ret; + } + memset_s(&hsensorScb->decisionPara, sizeof(SensorPara), 0, sizeof(SensorPara)); + hsensorScb->hsensor->close(); + HILOG_INFO(HILOG_MODULE_SEN, "hsensor name %s type %d close.", hsensorScb->hsensor->name, hsensorScb->type); + return SENSOR_OK; + } else { + /* 还存在使能的listener, */ + if (HsensormgrUpdateListener(hsensorScb, listener, &openParam) != SENSOR_OK) { + HILOG_ERROR( + HILOG_MODULE_SEN, "hsensorListener name %s type %d open error.", listener->name, listener->type); + return SENSOR_ERROR; + } + } + HILOG_INFO(HILOG_MODULE_SEN, "hsensor listener close type %d name %s ", listener->type, listener->name); + return SENSOR_OK; +} + +static int32_t HsensorMgrSensorOpen(const Sensor *sensor, const SensorPara *openPara) +{ + HILOG_INFO(HILOG_MODULE_SEN, + "SensorOpen hsensor type:%d name:%s period:%u batch:%u option:%u mode:%d", + sensor->sensorInfo.type, + sensor->sensorInfo.name, + openPara->period, + openPara->batch, + openPara->option, + openPara->mode); + int32_t ret = SENSOR_OK; + HsensorScb *hsensorScb = HsensorMgrHsensorScbFind(sensor->sensorInfo.type); + if (hsensorScb == NULL) { + HILOG_ERROR(HILOG_MODULE_SEN, "type %d hsensorScb get fail.", sensor->sensorInfo.type); + return SENSOR_HSENSOR_SCB_NULL; + } + HsensorMgrPrintListener(sensor->sensorInfo.type); + HsensorListener *listenerIndex = NULL; + osal_list_for_each_entry(listenerIndex, &hsensorScb->listenerList, list) + { + HILOG_DEBUG(HILOG_MODULE_SEN, + "hsensor type: %d openParam:%d name:%s", + sensor->sensorInfo.type, + SensorParaIsClear(&listenerIndex->openParam), + listenerIndex->name); + /* 表示vsensor 注册的 Listener 不需要 APP open */ + if (listenerIndex->notifyCallback != NULL) { + continue; + } + if (SensorParaIsClear(&listenerIndex->openParam)) { + SensorParaCopy(&listenerIndex->openParam, openPara); + } + ret = HsensorMgrOpenListener(listenerIndex); + if (ret != SENSOR_OK) { + HILOG_ERROR(HILOG_MODULE_SEN, "hsensor type %d OpenListener failed.", sensor->sensorInfo.type); + } + } + return SENSOR_OK; +} + +static int32_t HsensorMgrSensorClose(const Sensor *sensor) +{ + int32_t ret = SENSOR_OK; + HsensorScb *hsensorScb = HsensorMgrHsensorScbFind(sensor->sensorInfo.type); + if (hsensorScb == NULL) { + HILOG_ERROR(HILOG_MODULE_SEN, "type %d hsensorScb get fail.", sensor->sensorInfo.type); + return SENSOR_HSENSOR_SCB_NULL; + } + HsensorMgrPrintListener(sensor->sensorInfo.type); + HsensorListener *listenerIndex = NULL; + HsensorListener *listenerIndexTemp = NULL; + osal_list_for_each_entry_safe(listenerIndex, listenerIndexTemp, &hsensorScb->listenerList, list) + { + ret = HsensorMgrCloseListener(listenerIndex); + if (ret != SENSOR_OK) { + HILOG_ERROR(HILOG_MODULE_SEN, "hsensor type %d CloseListener failed.", sensor->sensorInfo.type); + } + + ret = HsensorMgrUnRegisterListener(listenerIndex); + if (ret != SENSOR_OK) { + HILOG_ERROR(HILOG_MODULE_SEN, "UnRegisterListener fail."); + } + } + HILOG_DEBUG(HILOG_MODULE_SEN, "close sensorInfo type : %d", sensor->sensorInfo.type); + return SENSOR_OK; +} + +/* samplingInterval Indicates the sensor data sampling interval to set, in millisecond. 数据采样间隔 */ +/* reportInterval Indicates the sensor data reporting interval, in millisecond.数据上报间隔 */ +static int32_t HsensorMgrSensorSetBatch(Sensor *sensor, int64_t samplingInterval, int64_t reportInterval) +{ + HsensorScb *hsensorScb = HsensorMgrHsensorScbFind(sensor->sensorInfo.type); + if (hsensorScb == NULL) { + HILOG_ERROR(HILOG_MODULE_SEN, "type %d hsensorScb get fail.", sensor->sensorInfo.type); + return SENSOR_HSENSOR_SCB_NULL; + } + if (samplingInterval < SENSOR_PARA_REALTIME_PERIOD_MIN || samplingInterval > SENSOR_PARA_REALTIME_PERIOD_MAX) { + HILOG_ERROR(HILOG_MODULE_SEN, + "samplingInterval is max: %d to min: %d, samplingInterval: %d ", + SENSOR_PARA_REALTIME_PERIOD_MAX, + SENSOR_PARA_REALTIME_PERIOD_MIN, + samplingInterval, + reportInterval); + return SENSOR_HSENSOR_PERIOD_BATCH_ERR; + } + uint32_t batch = reportInterval / samplingInterval; + uint32_t maxBatchCount = hsensorScb->hsensor->caps.maxBatchCount; + if (batch < SENSOR_PARA_BATCH_MIN || batch > maxBatchCount) { + HILOG_ERROR( + HILOG_MODULE_SEN, "batch is max: %d to min: %d, batch: %u ", maxBatchCount, SENSOR_PARA_BATCH_MIN, batch); + return SENSOR_HSENSOR_PERIOD_BATCH_ERR; + } + sensor->sensorInfo.openPara.period = samplingInterval; + sensor->sensorInfo.openPara.batch = batch; + HILOG_INFO(HILOG_MODULE_SEN, + "samplingInterval: %lld reportInterval: %lld batch: %u", + samplingInterval, + reportInterval, + batch); + return SENSOR_OK; +} + +static int32_t HsensorMgrSensorSetMode(Sensor *sensor, int32_t mode) +{ + HsensorScb *hsensorScb = HsensorMgrHsensorScbFind(sensor->sensorInfo.type); + if (hsensorScb == NULL) { + HILOG_ERROR(HILOG_MODULE_SEN, "type %d hsensorScb get fail.", sensor->sensorInfo.type); + return SENSOR_HSENSOR_SCB_NULL; + } + if (mode < 0 || mode >= SENSOR_MODE_MAX) { + HILOG_ERROR(HILOG_MODULE_SEN, "type %d set mode error %d", hsensorScb->type, mode); + return SENSOR_HSENSOR_MODE_ERR; + } + sensor->sensorInfo.openPara.mode = mode; + HILOG_INFO(HILOG_MODULE_SEN, "mode: %d ", mode); + return SENSOR_OK; +} + +static int32_t HsensorMgrSensorSetOption(Sensor *sensor, uint32_t option) +{ + HsensorScb *hsensorScb = HsensorMgrHsensorScbFind(sensor->sensorInfo.type); + if (hsensorScb == NULL) { + HILOG_ERROR(HILOG_MODULE_SEN, "type %d hsensorScb get fail.", sensor->sensorInfo.type); + return SENSOR_HSENSOR_SCB_NULL; + } + hsensorScb->decisionPara.option = option; + return SENSOR_OK; +} + +static HsensorListener *HsensorMgrHlistenerInit(const Sensor *sensor, RecordDataCallback cb) +{ + HsensorListener *listener = SensorUtilsRequestListener(); + if (listener == NULL) { + HILOG_ERROR(HILOG_MODULE_SEN, "type %d listener get fail.", sensor->sensorInfo.type); + return NULL; + } + errno_t err = memset_s(listener, sizeof(HsensorListener), 0, sizeof(HsensorListener)); + if (err != EOK) { + SensorUtilsFreeListener(listener); + HILOG_ERROR(HILOG_MODULE_SEN, "ResultCallback memset failed! type:%d", sensor->sensorInfo.type); + return NULL; + } + err = strcat_s(listener->name, sizeof(listener->name), "APP"); + if (err != EOK) { + SensorUtilsFreeListener(listener); + HILOG_ERROR(HILOG_MODULE_SEN, "ResultCallback init name strcat full! type:%d", sensor->sensorInfo.type); + return NULL; + } + err = strcat_s(listener->name, sizeof(listener->name), sensor->sensorInfo.name); + if (err != EOK) { + SensorUtilsFreeListener(listener); + HILOG_ERROR(HILOG_MODULE_SEN, "ResultCallback init name strcat full! type:%d", sensor->sensorInfo.type); + return NULL; + } + listener->type = sensor->sensorInfo.type; + listener->resultDataCb = cb; + HILOG_INFO(HILOG_MODULE_SEN, + "HlistenerInit hsensor type:%d name:%s period:%u batch:%u option:%u mode:%u", + sensor->sensorInfo.type, + sensor->sensorInfo.name, + sensor->sensorInfo.openPara.period, + sensor->sensorInfo.openPara.batch, + sensor->sensorInfo.openPara.option, + sensor->sensorInfo.openPara.mode); + return listener; +} + +static int32_t HsensorMgrSensorRegisterResultCallback(const Sensor *sensor, RecordDataCallback cb) +{ + HsensorScb *hsensorScb = HsensorMgrHsensorScbFind(sensor->sensorInfo.type); + if (hsensorScb == NULL) { + HILOG_ERROR(HILOG_MODULE_SEN, "type %d hsensorScb or simpleName get fail.", sensor->sensorInfo.type); + return SENSOR_HSENSOR_SCB_NULL; + } + HsensorListener *listener = HsensorMgrHlistenerInit(sensor, cb); + if (listener == NULL) { + HILOG_ERROR(HILOG_MODULE_SEN, "RegisterListener failed! type:%d", sensor->sensorInfo.type); + return SENSOR_HSENSOR_LISTENER_NULL; + } + int32_t ret = HsensorMgrRegisterListener(listener); + if (ret != SENSOR_OK) { + SensorUtilsFreeListener(listener); + HILOG_ERROR(HILOG_MODULE_SEN, "RegisterListener failed! type:%d", sensor->sensorInfo.type); + return ret; + } + return SENSOR_OK; +} + +static int32_t HsensorMgrSensorUnregisterResultCallback(const Sensor *sensor, RecordDataCallback cb) +{ + HsensorScb *hsensorScb = HsensorMgrHsensorScbFind(sensor->sensorInfo.type); + if (hsensorScb == NULL) { + HILOG_ERROR(HILOG_MODULE_SEN, "type %d hsensorScb get fail.", sensor->sensorInfo.type); + return SENSOR_HSENSOR_SCB_NULL; + } + HsensorListener *listenerIndex = NULL; + HsensorListener *listener = NULL; + osal_list_for_each_entry(listenerIndex, &hsensorScb->listenerList, list) + { + if (listenerIndex->resultDataCb == cb) { + listener = listenerIndex; + HILOG_INFO(HILOG_MODULE_SEN, "hsensor type %d RecordDataCallback exits.", sensor->sensorInfo.type); + break; + } + } + if (listener == NULL) { + HILOG_ERROR(HILOG_MODULE_SEN, "HsensorListener get fail."); + return SENSOR_HSENSOR_LISTENER_NULL; + } + int32_t ret = HsensorMgrCloseListener(listener); + if (ret != SENSOR_OK) { + HILOG_ERROR(HILOG_MODULE_SEN, "hsensor type %d CloseListener failed.", sensor->sensorInfo.type); + } + ret = HsensorMgrUnRegisterListener(listener); + if (ret != SENSOR_OK) { + HILOG_ERROR(HILOG_MODULE_SEN, "UnRegisterListener fail."); + } + HILOG_INFO(HILOG_MODULE_SEN, "hsensor type: %d Unregister Success", sensor->sensorInfo.type); + return SENSOR_OK; +} + +static int32_t HsensorMgrSensorCalibrate(const Sensor *sensor, void *para, uint32_t len) +{ + HILOG_WARN(HILOG_MODULE_SEN, "unsupport"); + return SENSOR_OK; +} + +static int32_t HsensorMgrSensorSelfTest(const Sensor *sensor, void *para, uint32_t len) +{ + HILOG_WARN(HILOG_MODULE_SEN, "unsupport"); + return SENSOR_OK; +} + +static int32_t HsensorMgrSensorIoctl(const Sensor *sensor, SensorIoctlCmd cmd, void *data, uint32_t len) +{ + if (cmd >= SENSOR_IOCTL_MAX || cmd < SENSOR_IOCTL_SET_PARA) { + HILOG_ERROR(HILOG_MODULE_SEN, "invalid command!"); + return SENSOR_ERROR; + } + HsensorScb *hsensorScb = HsensorMgrHsensorScbFind(sensor->sensorInfo.type); + if (hsensorScb->hsensor->ioctl == NULL) { + HILOG_ERROR(HILOG_MODULE_SEN, "invalid ioctl function!"); + return SENSOR_ERROR; + } + return hsensorScb->hsensor->ioctl(cmd, data, len); +} + +static int32_t HsensorMgrSensorRegisterProc(const Hsensor *hsensor) +{ + Sensor *sensor = SensorUtilsRequestSensor(hsensor->type); + if (sensor == NULL || sensor->sensorInfo.state != SENSOR_STATE_IDLE) { + HILOG_ERROR(HILOG_MODULE_SEN, "sensor type %d name %s request fail.", hsensor->type, hsensor->name); + return SENSOR_ERROR; + } + sensor->sensorInfo.type = hsensor->type; + sensor->sensorInfo.name = hsensor->name; + SensorParaDefaultInit(&sensor->sensorInfo.openPara); + sensor->open = HsensorMgrSensorOpen; + sensor->close = HsensorMgrSensorClose; + sensor->setBatch = HsensorMgrSensorSetBatch; + sensor->setMode = HsensorMgrSensorSetMode; + sensor->setOption = HsensorMgrSensorSetOption; + sensor->registerResultCallback = HsensorMgrSensorRegisterResultCallback; + sensor->unregisterResultCallback = HsensorMgrSensorUnregisterResultCallback; + sensor->calibrate = HsensorMgrSensorCalibrate; + sensor->selfTest = HsensorMgrSensorSelfTest; + sensor->ioctl = HsensorMgrSensorIoctl; + HILOG_INFO(HILOG_MODULE_SEN, + "hsensor type:%d name:%s period:%u batch:%u option:%u mode:%d", + hsensor->type, + hsensor->name, + sensor->sensorInfo.openPara.period, + sensor->sensorInfo.openPara.batch, + sensor->sensorInfo.openPara.option, + sensor->sensorInfo.openPara.mode); + return SENSOR_OK; +} + +int32_t HsensorMgrRegister(const Hsensor *hsensor) +{ + HILOG_INFO(HILOG_MODULE_SEN, "register hsensor type:%d name:%s ", hsensor->type, hsensor->name); + HsensorMgr *hsensorMgr = HsensorMgrGetInstance(); + if (!hsensorMgr->inited && (HsensorMgrInit() != SENSOR_OK)) { + HILOG_ERROR(HILOG_MODULE_SEN, "hsensorMgr inited failed."); + return SENSOR_ERROR; + } + HsensorScb *hsensorScbIndex = NULL; + osal_list_for_each_entry(hsensorScbIndex, &hsensorMgr->hsensorScbHead, list) + { + if (hsensorScbIndex->type == hsensor->type) { + HILOG_WARN(HILOG_MODULE_SEN, "hsensor type %d already exits.", hsensorScbIndex->type); + return SENSOR_HSENSOR_REGISTER_TYPE_DUPLICATE; + } + } + HsensorScb *hsensorScb = HsensorScbRequest(hsensorMgr->hsensorScbNum); + if (hsensorScb == NULL || hsensorScb->status != HSENSOR_SCB_UNINITED) { + HILOG_ERROR(HILOG_MODULE_SEN, "hsensorScb type %d name %s request fail.", hsensor->type, hsensor->name); + return SENSOR_ERROR; + } + if (hsensor->init() != SENSOR_OK) { + hsensor->deinit(); + HILOG_ERROR(HILOG_MODULE_SEN, "hsensor type %d name %s init fail.", hsensor->type, hsensor->name); + return SENSOR_ERROR; + } + hsensorScb->hsensor = (Hsensor *)hsensor; + hsensorScb->type = hsensor->type; + int32_t ret = SensorUtilsAddHsensorList(hsensorScb); + if (ret != SENSOR_OK) { + hsensorScb->type = SENSOR_TYPE_NONE; + hsensor->deinit(); + HILOG_ERROR( + HILOG_MODULE_SEN, "hsensor type %d name %s SensorUtilsAddSensorList fail", hsensor->type, hsensor->name); + return SENSOR_ERROR; + } + ret = HsensorMgrSensorRegisterProc(hsensor); + if (ret != SENSOR_OK) { + hsensorScb->type = SENSOR_TYPE_NONE; + hsensor->deinit(); + HILOG_ERROR(HILOG_MODULE_SEN, "hsensor type %d name %s SensorRegisterProc fail", hsensor->type, hsensor->name); + return SENSOR_ERROR; + } + hsensorScb->status = HSENSOR_SCB_INITED; + osal_list_add(&hsensorScb->list, &hsensorMgr->hsensorScbHead); + hsensorMgr->hsensorScbNum++; + HILOG_INFO(HILOG_MODULE_SEN, "register hsensor type %d name %s success.", hsensor->type, hsensor->name); + return SENSOR_OK; +} + +int32_t HsensorMgrIoctl(enum SensorTypeTag type, SensorIoctlCmd cmd, void *data, uint32_t len) +{ + HsensorScb *hsensorScb = HsensorMgrHsensorScbFind(type); + if (hsensorScb == NULL) { + HILOG_ERROR(HILOG_MODULE_SEN, "type %d hsensorScb get fail.", type); + return SENSOR_ERROR; + } + if (hsensorScb->hsensor != NULL && hsensorScb->hsensor->ioctl != NULL) { + return hsensorScb->hsensor->ioctl(cmd, data, len); + } + return SENSOR_ERROR; +} + +void HsensorMgrPrintListener(enum SensorTypeTag type) +{ + HsensorScb *hsensorScb = HsensorMgrHsensorScbFind(type); + if (hsensorScb == NULL) { + return; + } + HILOG_INFO(HILOG_MODULE_SEN, "type: %d listenerNum:%u", type, hsensorScb->listenerNum); + HsensorListener *listenerIndex = NULL; + osal_list_for_each_entry(listenerIndex, &hsensorScb->listenerList, list) + { + HILOG_INFO(HILOG_MODULE_SEN, + "type %d name %s period %u batch %u mode %d option %u status %d", + listenerIndex->type, + listenerIndex->name, + listenerIndex->openParam.period, + listenerIndex->openParam.batch, + listenerIndex->openParam.mode, + listenerIndex->openParam.option, + listenerIndex->status); + } +} \ No newline at end of file diff --git a/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/sensor_interface_impl.c b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/sensor_interface_impl.c new file mode 100644 index 000000000..ff45f32f5 --- /dev/null +++ b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/sensor_interface_impl.c @@ -0,0 +1,164 @@ +/* + * Copyright (c) CompanyNameMagicTag. 2025-2025. All rights reserved. + * Description: sensor interface impl + * Author: Media Software Group + * Create: 2025-06-06 + */ + +#include +#include +#include +#include +#include +#include +#include +#include "securec.h" +#include "sensor_thread.h" +#include "sensor_common.h" +#include "sensor_if.h" +#include "sensor_manager.h" + +struct SensorInterfaceContext { + bool inited; + MutexId mutex; +}; + +struct SensorInterfaceContext g_sensorInterfaceCtx = { + .inited = false, + .mutex = NULL, +}; + +static void GetSensorDeviceMethods(struct SensorInterface *device); + +const struct SensorInterface *NewSensorInterfaceInstance(void) +{ + HILOG_ERROR(HILOG_MODULE_SEN, "in"); + g_sensorInterfaceCtx.mutex = SensorMutexCreate(NULL); + CHECK_NULL_PTR_RETURN_VALUE(g_sensorInterfaceCtx.mutex, NULL); + SensorMutexLock(g_sensorInterfaceCtx.mutex); + static struct SensorInterface sensorDevInstance; + if (g_sensorInterfaceCtx.inited) { + SensorMutexUnLock(g_sensorInterfaceCtx.mutex); + return &sensorDevInstance; + } + int32_t ret = SensorMgrInit(); + if (ret != SENSOR_OK) { + SensorMutexUnLock(g_sensorInterfaceCtx.mutex); + HILOG_ERROR(HILOG_MODULE_SEN, "SensorMgrInit failed"); + return NULL; + } + + // Construct device interface instance + GetSensorDeviceMethods(&sensorDevInstance); + + g_sensorInterfaceCtx.inited = true; + SensorMutexUnLock(g_sensorInterfaceCtx.mutex); + HILOG_DEBUG(HILOG_MODULE_APP, "Get sensor instance success"); + return &sensorDevInstance; +} + +int32_t FreeSensorInterfaceInstance(void) +{ + SensorMutexLock(g_sensorInterfaceCtx.mutex); + if (!g_sensorInterfaceCtx.inited) { + SensorMutexUnLock(g_sensorInterfaceCtx.mutex); + return SENSOR_OK; + } + SensorMgrDeInit(); + g_sensorInterfaceCtx.inited = false; + SensorMutexUnLock(g_sensorInterfaceCtx.mutex); + SensorMutexDestroy(&g_sensorInterfaceCtx.mutex); + return SENSOR_OK; +} + +static int32_t GetSensorInfo(struct SensorInformation **sensorInfo, int32_t *count) +{ + HILOG_DEBUG(HILOG_MODULE_SEN, "enter"); + SensorMutexLock(g_sensorInterfaceCtx.mutex); + int32_t ret = SensorMgrGetAllSensors(sensorInfo, count); + SensorMutexUnLock(g_sensorInterfaceCtx.mutex); + return ret; +} + +static int32_t EnableSensor(int32_t sensorTypeId) +{ + HILOG_DEBUG(HILOG_MODULE_SEN, "enter"); + SensorMutexLock(g_sensorInterfaceCtx.mutex); + int32_t ret = SensorMgrEnable(sensorTypeId); + SensorMutexUnLock(g_sensorInterfaceCtx.mutex); + return ret; +} + +static int32_t DisableSensor(int32_t sensorTypeId) +{ + HILOG_DEBUG(HILOG_MODULE_SEN, "enter"); + SensorMutexLock(g_sensorInterfaceCtx.mutex); + int32_t ret = SensorMgrDisable(sensorTypeId); + SensorMutexUnLock(g_sensorInterfaceCtx.mutex); + return ret; +} + +static int32_t RegisterSensorDataCb(int32_t sensorTypeId, RecordDataCallback cb) +{ + HILOG_DEBUG(HILOG_MODULE_SEN, "enter sensorId:%d", sensorTypeId); + SensorMutexLock(g_sensorInterfaceCtx.mutex); + int32_t ret = SensorMgrRegistDataCallback(sensorTypeId, cb); + SensorMutexUnLock(g_sensorInterfaceCtx.mutex); + return ret; +} + +static int32_t UnregisterSensorDataCb(int32_t sensorTypeId, RecordDataCallback cb) +{ + HILOG_DEBUG(HILOG_MODULE_SEN, "enter sensorId:%d", sensorTypeId); + SensorMutexLock(g_sensorInterfaceCtx.mutex); + int32_t ret = SensorMgrUnregistDataCallback(sensorTypeId, cb); + SensorMutexUnLock(g_sensorInterfaceCtx.mutex); + return ret; +} + +static int32_t SetSensorBatch(int32_t sensorTypeId, int64_t samplingInterval, int64_t interval) +{ + HILOG_DEBUG(HILOG_MODULE_SEN, "enter"); + SensorMutexLock(g_sensorInterfaceCtx.mutex); + int32_t ret = SensorMgrSetBatch(sensorTypeId, samplingInterval, interval); + SensorMutexUnLock(g_sensorInterfaceCtx.mutex); + return ret; +} + +static int32_t SetSensorMode(int32_t sensorTypeId, int32_t mode) +{ + HILOG_DEBUG(HILOG_MODULE_SEN, "enter"); + SensorMutexLock(g_sensorInterfaceCtx.mutex); + int32_t ret = SensorMgrSetMode(sensorTypeId, mode); + SensorMutexUnLock(g_sensorInterfaceCtx.mutex); + return ret; +} + +static int32_t SetSensorOption(int32_t sensorTypeId, uint32_t option) +{ + HILOG_DEBUG(HILOG_MODULE_SEN, "enter"); + SensorMutexLock(g_sensorInterfaceCtx.mutex); + int32_t ret = SensorMgrSetOption(sensorTypeId, option); + SensorMutexUnLock(g_sensorInterfaceCtx.mutex); + return ret; +} + +static int32_t SensorIfGetData(int32_t sensorTypeId, SensorData *sensorData) +{ + HILOG_DEBUG(HILOG_MODULE_SEN, "enter"); + return SensorMgrGetData(sensorTypeId, sensorData); +} + +void GetSensorDeviceMethods(struct SensorInterface *device) +{ + CHECK_NULL_PTR_RETURN(device); + device->GetAllSensors = GetSensorInfo; + device->Enable = EnableSensor; + device->Disable = DisableSensor; + device->SetBatch = SetSensorBatch; + device->SetMode = SetSensorMode; + device->SetOption = SetSensorOption; + device->Register = RegisterSensorDataCb; + device->Unregister = UnregisterSensorDataCb; + device->GetSensorData = SensorIfGetData; +} diff --git a/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/sensor_manager.c b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/sensor_manager.c new file mode 100644 index 000000000..0a69d8ae9 --- /dev/null +++ b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/sensor_manager.c @@ -0,0 +1,133 @@ +/* + * Copyright (c) CompanyNameMagicTag. 2025-2025. All rights reserved. + * Description: sensor mgr + * Author: Media Software Group + * Create: 2025-06-06 + */ + +#include "sensor_manager.h" +#include "sensor_common.h" +#include "sensor_utils.h" +#include "sensor_if.h" +#include "hsensormgr_service.h" +#include "vsensormgr_service.h" + +int32_t SensorMgrInit(void) +{ + int32_t ret = HsensorMgrInit(); + if (ret != SENSOR_OK) { + HILOG_ERROR(HILOG_MODULE_SEN, "HsensorMgrInit err!", ret); + return ret; + } + ret = VsensorMgrInit(); + if (ret != SENSOR_OK) { + HILOG_ERROR(HILOG_MODULE_SEN, "VsensorMgrInit err!", ret); + return ret; + } + SensorUtilsInit(); + return SENSOR_OK; +} + +int32_t SensorMgrDeInit(void) +{ + return SENSOR_OK; +} + +int32_t SensorMgrRegistHsensor(const Hsensor *sensor) +{ + int32_t ret = SensorUtilsHsensorCheck(sensor); + if (ret != SENSOR_OK) { + HILOG_INFO(HILOG_MODULE_SEN, "hsensor:%d entry check err!", sensor->type); + return ret; + } + return HsensorMgrRegister(sensor); +} + +int32_t SensorMgrRegistVsensor(const Vsensor *sensor) +{ + int32_t ret = SensorUtilsVsensorCheck(sensor); + if (ret != SENSOR_OK) { + HILOG_INFO(HILOG_MODULE_SEN, "vsensor:%d entry check err!", sensor->type); + return ret; + } + return VsensorMgrRegister(sensor); +} + +int32_t SensorMgrGetAllSensors(struct SensorInformation **sensorInfo, int32_t *count) +{ + return SensorUtilsGetAllSensors(sensorInfo, count); +} + +int32_t SensorMgrEnable(int32_t sensorTypeId) +{ + Sensor *sensor = SensorUtilsFindSensor(sensorTypeId); + if (sensor == NULL || sensor->open == NULL) { + HILOG_ERROR(HILOG_MODULE_SEN, "[INF] sensor NULL!\n"); + return SENSOR_ENTRY_PARA_ERROR; + } + return sensor->open(sensor, &sensor->sensorInfo.openPara); +} + +int32_t SensorMgrDisable(int32_t sensorTypeId) +{ + Sensor *sensor = SensorUtilsFindSensor(sensorTypeId); + if (sensor == NULL || sensor->close == NULL) { + HILOG_ERROR(HILOG_MODULE_SEN, "[INF] sensor NULL!\n"); + return SENSOR_ENTRY_PARA_ERROR; + } + return sensor->close(sensor); +} + +int32_t SensorMgrSetBatch(int32_t sensorTypeId, int64_t samplingInterval, int64_t reportInterval) +{ + Sensor *sensor = SensorUtilsFindSensor(sensorTypeId); + if (sensor == NULL || sensor->setBatch == NULL) { + HILOG_ERROR(HILOG_MODULE_SEN, "[INF] sensor NULL!\n"); + return SENSOR_ENTRY_PARA_ERROR; + } + return sensor->setBatch(sensor, samplingInterval, reportInterval); +} + +int32_t SensorMgrSetMode(int32_t sensorTypeId, int32_t mode) +{ + Sensor *sensor = SensorUtilsFindSensor(sensorTypeId); + if (sensor == NULL || sensor->setMode == NULL) { + HILOG_ERROR(HILOG_MODULE_SEN, "[INF] sensor NULL!\n"); + return SENSOR_ENTRY_PARA_ERROR; + } + return sensor->setMode(sensor, mode); +} + +int32_t SensorMgrSetOption(int32_t sensorTypeId, uint32_t option) +{ + Sensor *sensor = SensorUtilsFindSensor(sensorTypeId); + if (sensor == NULL || sensor->setOption == NULL) { + HILOG_ERROR(HILOG_MODULE_SEN, "[INF] sensor NULL!\n"); + return SENSOR_ENTRY_PARA_ERROR; + } + return sensor->setOption(sensor, option); +} + +int32_t SensorMgrRegistDataCallback(int32_t sensorTypeId, RecordDataCallback cb) +{ + Sensor *sensor = SensorUtilsFindSensor(sensorTypeId); + CHECK_NULL_PTR_RETURN_VALUE(sensor, SENSOR_ENTRY_PARA_ERROR); + CHECK_NULL_PTR_RETURN_VALUE(sensor->registerResultCallback, SENSOR_ENTRY_PARA_ERROR); + return sensor->registerResultCallback(sensor, cb); +} + +int32_t SensorMgrUnregistDataCallback(int32_t sensorTypeId, RecordDataCallback cb) +{ + Sensor *sensor = SensorUtilsFindSensor(sensorTypeId); + CHECK_NULL_PTR_RETURN_VALUE(sensor, SENSOR_ENTRY_PARA_ERROR); + CHECK_NULL_PTR_RETURN_VALUE(sensor->unregisterResultCallback, SENSOR_ENTRY_PARA_ERROR); + return sensor->unregisterResultCallback(sensor, cb); +} + +int32_t SensorMgrGetData(int32_t sensorTypeId, SensorData *sensorData) +{ + Sensor *sensor = SensorUtilsFindSensor(sensorTypeId); + CHECK_NULL_PTR_RETURN_VALUE(sensor, SENSOR_ENTRY_PARA_ERROR); + CHECK_NULL_PTR_RETURN_VALUE(sensor->ioctl, SENSOR_ENTRY_PARA_ERROR); + return sensor->ioctl(sensor, SENSOR_IOCTL_GET_SENSOR_DATA, sensorData, sizeof(SensorData)); +} \ No newline at end of file diff --git a/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/task/include/sensor_task.h b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/task/include/sensor_task.h new file mode 100644 index 000000000..b8ee814cc --- /dev/null +++ b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/task/include/sensor_task.h @@ -0,0 +1,76 @@ +/* + * Copyright (c) CompanyNameMagicTag. 2025-2025. All rights reserved. + * Description: sensor task + * Author: Media Software Group + * Create: 2025-06-06 + */ + +#ifndef SENSOR_TASK_H +#define SENSOR_TASK_H + +#include +#include "sensor_typedef.h" +#include "sensor_thread.h" +#include "sensor_msgqueue.h" +#include "soc_osal.h" + +typedef struct { + struct osal_list_head list; /* SensorTaskCfg link point */ + uint32_t taskId; + SensorThreadCfg threadCfg; + SensorMsgQueueCfg msgQueueCfg; + bool runningFlag; + ThreadId *task; + bool taskExited; +} SensorTaskCfg; + +typedef enum { + SENSOR_TASK_PRIORITY_HIGH = osPriorityHigh, + SENSOR_TASK_PRIORITY_MIDDLE = osPriorityNormal, + SENSOR_TASK_PRIORITY_LOW = osPriorityLow6 +} SensorTaskPriority; + +#define SENSORMGR_TASK_MSG_QUEUE_LENGTH 32 +#define TASK_MSG_QUEUE_LENGTH_DEFAULT 32 +#ifdef JS_ENABLE +#define HSENSOR_TASK_STACK_SIZE 8192 +#define VSENSOR_TASK_STACK_SIZE 8192 +#else +#define HSENSOR_TASK_STACK_SIZE 2048 +#define VSENSOR_TASK_STACK_SIZE 4096 +#endif + +#define SENSOR_TASK_CREATE_OK_WAIT_TIMEOUT 1000 // ms +#define SENSOR_TASK_CREATE_TICK_TIME 50 // ms + +#define SENSOR_TASK_MAX_CNT 10 + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +int32_t SensorTaskInit(void); + +/* 创建vsensor任务 */ +int32_t SensorTaskCreateVsensorTask(const Vsensor *vsensor); + +/* 创建hsensor任务 */ +int32_t SensorTaskCreateHsensorTask(const Hsensor *hsensor); + +/* 销毁vsensor任务 */ +int32_t SensorTaskDestroyVsensorTask(enum SensorTypeTag type); + +/* 销毁hsensor任务 */ +int32_t SensorTaskDestroyHsensorTask(enum SensorTypeTag type); + +/* 获取任务消息队列句柄 */ +SensorMsgQueueCfg *SensorTaskGetTaskMsgqueueHandle(uint32_t taskId); + +/* 判断任务运行状态(true和false) */ +bool SensorTaskGetRunningFlag(uint32_t taskId); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif \ No newline at end of file diff --git a/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/task/include/sensor_tmsg.h b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/task/include/sensor_tmsg.h new file mode 100644 index 000000000..a9d7db48b --- /dev/null +++ b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/task/include/sensor_tmsg.h @@ -0,0 +1,55 @@ +/* + * Copyright (c) CompanyNameMagicTag. 2025-2025. All rights reserved. + * Description: sensor msg + * Author: Media Software Group + * Create: 2025-06-06 + */ + +#ifndef SENSOR_TMSG_H +#define SENSOR_TMSG_H + +#include "sensor_typedef.h" +#include "sensor_task.h" + +/* FA线程间消息定义 */ +typedef enum { + SENSOR_TMSG_INVALID = 0, + + /* 虚拟vsensor管理消息 */ + SENSOR_TMSG_HSENSOR_DATA_UPDATE, + SENSOR_TMSG_VSENSOR_DATA_UPDATE, + SENSOR_TMSG_VSENSOR_REG_EVENT, + SENSOR_TMSG_VSENSOR_OPEN_EVENT, + SENSOR_TMSG_VSENSOR_CLOSE_EVENT, + SENSOR_TMSG_VSENSOR_RELY_OPEN_EVENT, + SENSOR_TMSG_VSENSOR_RELY_CLOSE_EVENT, + + SENSOR_TMSG_MAX_ID +} SensorTmsgId; + +typedef struct { + SensorTmsgId id; + uintptr_t value; + uint64_t ts; + void *info; + uint32_t infoSize; +} SensorTmsg; + +typedef struct { + SensorTmsgId tmsgId; + int32_t (*tmsgProc)(const SensorTmsg* tmsg); +} SensorTmsgProcMap; + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +int32_t SensorTmsgSend(uint32_t taskId, SensorTmsg* tmsg); +int32_t SensorTmsgRecv(uint32_t taskId, SensorTmsg* tmsg); +int32_t SensorTmsgFree(SensorTmsg* tmsg); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif \ No newline at end of file diff --git a/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/task/src/sensor_task.c b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/task/src/sensor_task.c new file mode 100644 index 000000000..1a6381cf9 --- /dev/null +++ b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/task/src/sensor_task.c @@ -0,0 +1,346 @@ +/* + * Copyright (c) CompanyNameMagicTag. 2025-2025. All rights reserved. + * Description: sensor task impl + * Author: Media Software Group + * Create: 2025-06-06 + */ + +#include "sensor_task.h" +#include "sensor_tmsg.h" +#include "vsensor_task_mgr.h" +#include "securec.h" +#include "sensor_log.h" +#include "sensor_utils.h" +#include "sensor_common.h" +#include "sensor_memory.h" +#include "hsensor_data_service.h" + +static void VsensorTaskFunc(void* param); +static void HsensorTaskFunc(void* param); + +typedef struct { + struct osal_list_head sensorTaskHead; // SensorTaskCfg + uint32_t sensorTaskNum; + bool sensorTaskId[SENSOR_TASK_MAX_CNT]; +} SensorTaskContext; + +static SensorTaskContext g_sensorTaskCxt = { + .sensorTaskNum = 0, + .sensorTaskId = {0} +}; + +static SensorTaskContext *SensorTaskGetInstance(void) +{ + return &g_sensorTaskCxt; +} + +int32_t SensorTaskInit(void) +{ + SensorTaskContext *ctx = SensorTaskGetInstance(); + OSAL_INIT_LIST_HEAD(&(ctx->sensorTaskHead)); + ctx->sensorTaskNum = 0; + return SENSOR_OK; +} + +SensorMsgQueueCfg *SensorTaskGetTaskMsgqueueHandle(uint32_t taskId) +{ + SensorTaskContext *ctx = SensorTaskGetInstance(); + SensorTaskCfg *sensorTaskIndex = NULL; + osal_list_for_each_entry(sensorTaskIndex, &ctx->sensorTaskHead, list) + { + if (taskId == sensorTaskIndex->taskId) { + return &(sensorTaskIndex->msgQueueCfg); + } + } + return NULL; +} + +static void SensorTaskAddTaskCfg(SensorTaskCfg *sensorTask) +{ + SensorTaskContext *ctx = SensorTaskGetInstance(); + osal_list_add(&sensorTask->list, &ctx->sensorTaskHead); + ctx->sensorTaskNum++; + HILOG_INFO(HILOG_MODULE_SEN, "[task] add task:%u!", sensorTask->taskId); +} + +static SensorTaskCfg *SensorTaskFindTaskCfg(enum SensorTypeTag type) +{ + SensorTaskContext *ctx = SensorTaskGetInstance(); + uint32_t taskId = SensorUtilsGetRegisteredTaskId(type); + if (taskId == SENSOR_FAILURE) { + HILOG_ERROR(HILOG_MODULE_SEN, "[SYS] TaskSync not found taskId type:%d", type); + return NULL; + } + SensorTaskCfg *sensorTaskIndex = NULL; + SensorTaskCfg *sensorTask = NULL; + osal_list_for_each_entry(sensorTaskIndex, &ctx->sensorTaskHead, list) + { + if (sensorTaskIndex->taskId != taskId) { + continue; + } + sensorTask = sensorTaskIndex; + break; + } + return sensorTask; +} + +static void SensorTaskRemoveTaskCfg(SensorTaskCfg *sensorTask) +{ + CHECK_NULL_PTR_RETURN(sensorTask); + SensorTaskContext *ctx = SensorTaskGetInstance(); + SensorTaskCfg *sensorTaskIndex = NULL; + bool found = false; + osal_list_for_each_entry(sensorTaskIndex, &ctx->sensorTaskHead, list) + { + if (sensorTask->taskId == sensorTaskIndex->taskId) { + found = true; + } + } + if (found) { + g_sensorTaskCxt.sensorTaskId[sensorTask->taskId] = false; + osal_list_del(&sensorTask->list); + ctx->sensorTaskNum--; + } + SensorFree(sensorTask); +} + +bool SensorTaskGetRunningFlag(uint32_t taskId) +{ + SensorTaskContext *ctx = SensorTaskGetInstance(); + SensorTaskCfg *sensorTaskIndex = NULL; + osal_list_for_each_entry(sensorTaskIndex, &ctx->sensorTaskHead, list) + { + if (taskId == sensorTaskIndex->taskId) { + return sensorTaskIndex->runningFlag; + } + } + HILOG_INFO(HILOG_MODULE_SEN, "[task] run_flag cannot find task:%d!", taskId); + return false; +} + +static void VsensorTaskFunc(void* param) +{ + HILOG_DEBUG(HILOG_MODULE_SEN, "[task] in"); + SensorTmsg tmsg = {0}; + SensorTaskCfg *taskCfg = (SensorTaskCfg *)param; + CHECK_NULL_PTR_RETURN(taskCfg); + int32_t ret = VsensorTaskMgrInit(taskCfg->taskId); + if (ret != SENSOR_OK) { + HILOG_ERROR(HILOG_MODULE_SEN, "[task] VsensorTaskMgrInit FAIL! ret:0x%X, taskId:%d", ret, taskCfg->taskId); + return; + } + taskCfg->runningFlag = true; + while (taskCfg->runningFlag) { + int32_t ret = SensorTmsgRecv(taskCfg->taskId, &tmsg); + if ((ret != SENSOR_OK) || (tmsg.id == SENSOR_TMSG_INVALID)) { + SensorTmsgFree(&tmsg); + continue; + } + (void)VsensorTaskMgrMsgProcess(taskCfg->taskId, &tmsg); + + SensorTmsgFree(&tmsg); + } + (void)VsensorTaskMgrDeInit(taskCfg->taskId); + taskCfg->taskExited = true; + HILOG_DEBUG(HILOG_MODULE_SEN, "[task] out"); +} + +static void HsensorTaskFunc(void* param) +{ + SensorTaskCfg *taskCfg = (SensorTaskCfg *)param; + CHECK_NULL_PTR_RETURN(taskCfg); + enum SensorTypeTag type = SensorUtilsGetRegisteredType(taskCfg->taskId); + CHECK_SENSOR_TYPE_ILLEGAL_RETURN(type); + int32_t ret = HsensorDataServiceInit(type); + if (ret != SENSOR_OK) { + return; + } + taskCfg->runningFlag = true; + + while (taskCfg->runningFlag) { + uint32_t delayTime = HsensorDataServiceProcess(type); + osDelay(delayTime); + } + (void)HsensorDataServiceDeInit(type); + taskCfg->taskExited = true; +} + +/* 创建任务接口(异步接口) */ +static int32_t SensorCreateTaskAsync(SensorTaskCfg *taskCfg, enum SensorTypeTag type) +{ + /* 创建消息队列 */ + int32_t ret = SensorMsgQueueCreate(&(taskCfg->msgQueueCfg), (uint32_t)(taskCfg->taskId)); + if (ret != SENSOR_OK) { + HILOG_ERROR(HILOG_MODULE_SEN, "[SYS] msg queue create FAIL! ret:0x%X, taskId:%d", ret, taskCfg->taskId); + return SENSOR_MSG_QUEUE_CREATE_FAIL; + } + SensorUtilsRegisterTaskTable(type, taskCfg->taskId); + /* 创建工作线程 */ + ThreadId *task = SensorThreadCreate((const SensorThreadCfg*)(&(taskCfg->threadCfg))); + if (task == NULL) { + HILOG_ERROR(HILOG_MODULE_SEN, "[SYS] task create FAIL! task:%d", taskCfg->taskId); + SensorUtilsUnRegisterTaskTable(type, taskCfg->taskId); + return SENSOR_TASK_CREATE_FAIL; + } + taskCfg->task = task; + taskCfg->taskExited = false; + + HILOG_INFO(HILOG_MODULE_SEN, "[SYS] task:%d prio:%d.", taskCfg->taskId, taskCfg->threadCfg.priority); + return SENSOR_OK; +} + +/* 销毁任务接口(同步接口,阻塞等待任务销毁完成) */ +static void SensorTaskDestoryTaskSync(SensorTaskCfg *taskCfg) +{ + if (taskCfg->taskExited) { + return; + } + + taskCfg->runningFlag = false; + + uint16_t taskReadyWait = 0; + while ((taskReadyWait < SENSOR_TASK_CREATE_OK_WAIT_TIMEOUT) && (!taskCfg->taskExited)) { + osal_msleep(SENSOR_TASK_CREATE_TICK_TIME); + taskReadyWait += SENSOR_TASK_CREATE_TICK_TIME; + } + SensorMsgQueueDelete((uint32_t)(taskCfg->msgQueueCfg.queueId)); +} + +static int32_t GetSensorTaskId(SensorTaskCfg *taskCfg) +{ + SensorTaskContext *ctx = SensorTaskGetInstance(); + for (int32_t index = 0; index < SENSOR_TASK_MAX_CNT; ++index) { + if (!ctx->sensorTaskId[index]) { + taskCfg->taskId = index; + ctx->sensorTaskId[index] = true; + return index; + } + } + return SENSOR_FAILURE; +} + +static SensorTaskCfg *SensorTaskCreateVsensorTaskCfg(const Vsensor *vsensor) +{ + SensorTaskCfg *taskCfg = (SensorTaskCfg *)SensorMalloc(sizeof(SensorTaskCfg)); + CHECK_NULL_PTR_RETURN_VALUE(taskCfg, NULL); + SensorTaskContext *ctx = SensorTaskGetInstance(); + OSAL_INIT_LIST_HEAD(&(taskCfg->list)); + SensorThreadCfg threadCfg = { + vsensor->name, + VSENSOR_TASK_STACK_SIZE, + SENSOR_TASK_PRIORITY_HIGH, + VsensorTaskFunc, + taskCfg + }; + taskCfg->threadCfg = threadCfg; + SensorMsgQueueCfg msgQueueCfg = { + vsensor->name, + SENSORMGR_TASK_MSG_QUEUE_LENGTH, + sizeof(SensorTmsg), + 0, + 0 + }; + taskCfg->msgQueueCfg = msgQueueCfg; + taskCfg->runningFlag = false; + taskCfg->task = NULL; + taskCfg->taskId = GetSensorTaskId(taskCfg); + if (taskCfg->taskId < 0) { + HILOG_ERROR(HILOG_MODULE_SEN, "no free taskID!"); + return NULL; + } + SensorTaskAddTaskCfg(taskCfg); + HILOG_INFO(HILOG_MODULE_SEN, "TaskSync create type:%d name:%s", vsensor->type, threadCfg.name); + return taskCfg; +} + +static SensorTaskCfg *SensorTaskCreateHsensorTaskCfg(const Hsensor *hsensor) +{ + SensorTaskCfg *taskCfg = (SensorTaskCfg *)SensorMalloc(sizeof(SensorTaskCfg)); + CHECK_NULL_PTR_RETURN_VALUE(taskCfg, NULL); + SensorTaskContext *ctx = SensorTaskGetInstance(); + OSAL_INIT_LIST_HEAD(&(taskCfg->list)); + SensorThreadCfg threadCfg = { + hsensor->name, + HSENSOR_TASK_STACK_SIZE, + SENSOR_TASK_PRIORITY_HIGH, + HsensorTaskFunc, + taskCfg + }; + taskCfg->threadCfg = threadCfg; + SensorMsgQueueCfg msgQueueCfg = { + hsensor->name, + SENSORMGR_TASK_MSG_QUEUE_LENGTH, + sizeof(SensorTmsg), + 0, + 0 + }; + taskCfg->msgQueueCfg = msgQueueCfg; + taskCfg->runningFlag = false; + taskCfg->task = NULL; + taskCfg->taskId = GetSensorTaskId(taskCfg); + if (taskCfg->taskId < 0) { + HILOG_ERROR(HILOG_MODULE_SEN, "no free taskID!"); + return NULL; + } + SensorTaskAddTaskCfg(taskCfg); + return taskCfg; +} + +/* 创建Vsensor算法任务(同步接口,阻塞等待任务创建完成) */ +int32_t SensorTaskCreateVsensorTask(const Vsensor *vsensor) +{ + SensorTaskContext *ctx = SensorTaskGetInstance(); + SensorTaskCfg *taskCfg = SensorTaskCreateVsensorTaskCfg(vsensor); + CHECK_NULL_PTR_RETURN_VALUE(taskCfg, SENSOR_ERROR); + int32_t ret = SensorCreateTaskAsync(taskCfg, vsensor->type); + if (ret != SENSOR_OK) { + SensorTaskRemoveTaskCfg(taskCfg); + HILOG_ERROR(HILOG_MODULE_SEN, "[SYS] TaskSync create FAIL! ret:0x%X, type:%d", ret, vsensor->type); + return SENSOR_TASK_CREATE_FAIL; + } + SensorUtilsRegisterTaskTable(vsensor->type, taskCfg->taskId); + return SENSOR_OK; +} + +/* 销毁vsensor任务 */ +int32_t SensorTaskDestroyVsensorTask(enum SensorTypeTag type) +{ + SensorTaskCfg *sensorTask = SensorTaskFindTaskCfg(type); + if (sensorTask == NULL) { + HILOG_ERROR(HILOG_MODULE_SEN, "[SYS] vsensorTask not found type:%d", type); + return SENSOR_ERROR; + } + SensorTaskDestoryTaskSync(sensorTask); + SensorUtilsUnRegisterTaskTable(type, sensorTask->taskId); + SensorTaskRemoveTaskCfg(sensorTask); + return SENSOR_OK; +} + +int32_t SensorTaskCreateHsensorTask(const Hsensor *hsensor) +{ + SensorTaskContext *ctx = SensorTaskGetInstance(); + SensorTaskCfg *taskCfg = SensorTaskCreateHsensorTaskCfg(hsensor); + CHECK_NULL_PTR_RETURN_VALUE(taskCfg, SENSOR_ERROR); + int32_t ret = SensorCreateTaskAsync(taskCfg, hsensor->type); + if (ret != SENSOR_OK) { + SensorTaskRemoveTaskCfg(taskCfg); + HILOG_ERROR(HILOG_MODULE_SEN, "[SYS] TaskSync create FAIL! ret:0x%X, type:%d", ret, hsensor->type); + return SENSOR_TASK_CREATE_FAIL; + } + HILOG_INFO(HILOG_MODULE_SEN, "[SYS] TaskSync create sensorTaskNum:%u, type:%d", ctx->sensorTaskNum, hsensor->type); + return SENSOR_OK; +} + +/* 销毁hsensor任务 */ +int32_t SensorTaskDestroyHsensorTask(enum SensorTypeTag type) +{ + SensorTaskCfg *sensorTask = SensorTaskFindTaskCfg(type); + if (sensorTask == NULL) { + HILOG_DEBUG(HILOG_MODULE_SEN, "[SYS] hsensorTask not found type:%d", type); + return SENSOR_ERROR; + } + SensorTaskDestoryTaskSync(sensorTask); + SensorUtilsUnRegisterTaskTable(type, sensorTask->taskId); + SensorTaskRemoveTaskCfg(sensorTask); + return SENSOR_OK; +} diff --git a/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/task/src/sensor_tmsg.c b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/task/src/sensor_tmsg.c new file mode 100644 index 000000000..842765209 --- /dev/null +++ b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/task/src/sensor_tmsg.c @@ -0,0 +1,80 @@ +/* + * Copyright (c) CompanyNameMagicTag. 2025-2025. All rights reserved. + * Description: sensor tmsg impl + * Author: Media Software Group + * Create: 2025-06-06 + */ + +#include "sensor_tmsg.h" +#include "sensor_typedef.h" +#include "sensor_msgqueue.h" +#include "sensor_task.h" +#include "securec.h" +#include "sensor_memory.h" +#include "sensor_common.h" +#include "sensor_log.h" + +#define FTMSG_WAIT_FOREVER 0xFFFFFFFF /* 接收消息永久等待 */ + +int32_t SensorTmsgSend(uint32_t taskId, SensorTmsg *tmsg) +{ + uint32_t tmsgSize = (uint32_t)sizeof(SensorTmsg); + + if (tmsg == NULL) { + return SENSOR_SEND_TMSG_NULL; + } + + if (SensorTaskGetRunningFlag(taskId) == false) { + HILOG_ERROR(HILOG_MODULE_SEN, "taskId :%u NOT RUNNING", taskId); + return SENSOR_SEND_TMSG_DEST_NOT_RUNNING; + } + + SensorMsgQueueCfg *msgqueueHandle = SensorTaskGetTaskMsgqueueHandle(taskId); + if (msgqueueHandle == NULL) { + HILOG_ERROR(HILOG_MODULE_SEN, "msgqueueHandle null"); + return SENSOR_SEND_TMSG_MSG_QUEUE_NULL; + } + + int32_t ret = SensorMsgQueueWriteCopy(msgqueueHandle->queueId, tmsg, tmsgSize, 0); + if (ret != 0) { + HILOG_ERROR(HILOG_MODULE_SEN, "SensorMsgQueueWriteCopy error ret:0x%X\n", ret); + return ret; + } + + return SENSOR_OK; +} + +int32_t SensorTmsgRecv(uint32_t taskId, SensorTmsg *tmsg) +{ + uint32_t tmsgSize = (uint32_t)sizeof(SensorTmsg); + + if (tmsg == NULL) { + return SENSOR_RECV_TMSG_NULL; + } + SensorMsgQueueCfg *msgqueueHandle = SensorTaskGetTaskMsgqueueHandle(taskId); + if (msgqueueHandle == NULL) { + HILOG_ERROR(HILOG_MODULE_SEN, "SensorTmsgRecv msgqueueHandle NULL"); + return SENSOR_RECV_TMSG_MSG_QUEUE_NULL; + } + int32_t ret = SensorMsgQueueReadCopy(msgqueueHandle->queueId, tmsg, &tmsgSize, FTMSG_WAIT_FOREVER); + if (ret != 0) { + HILOG_ERROR(HILOG_MODULE_SEN, "SensorTmsgRecv error ret:0x%X\n", ret); + return SENSOR_RECV_TMSG_ERR; + } + return SENSOR_OK; +} + +int32_t SensorTmsgFree(SensorTmsg *tmsg) +{ + if (tmsg == NULL) { + return SENSOR_FREE_TMSG_NULL; + } + + if (tmsg->info != NULL) { + SensorFree(tmsg->info); + } + + memset_s(tmsg, sizeof(SensorTmsg), 0, sizeof(SensorTmsg)); + + return SENSOR_OK; +} diff --git a/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/utils/include/sensor_memory.h b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/utils/include/sensor_memory.h new file mode 100644 index 000000000..9d7367bd0 --- /dev/null +++ b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/utils/include/sensor_memory.h @@ -0,0 +1,28 @@ +/* + * Copyright (c) CompanyNameMagicTag. 2025-2025. All rights reserved. + * Description: sensor memory + * Author: Media Software Group + * Create: 2025-06-06 + */ + +#ifndef SENSOR_MEMORY_H +#define SENSOR_MEMORY_H + +#include + +#define MEM_ALLOC_MIN_SIZE 1 +#define MEM_ALLOC_MAX_SIZE 10000 // ????10k + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +void *SensorMalloc(unsigned long size); +void SensorFree(void *addr); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + + +#endif /* SENSOR_MEMORY_H */ diff --git a/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/utils/include/sensor_msgqueue.h b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/utils/include/sensor_msgqueue.h new file mode 100644 index 000000000..3a3f6beb6 --- /dev/null +++ b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/utils/include/sensor_msgqueue.h @@ -0,0 +1,35 @@ +/* + * Copyright (c) CompanyNameMagicTag. 2025-2025. All rights reserved. + * Description: sensor msgqueue + * Author: Media Software Group + * Create: 2025-06-06 + */ + +#ifndef SENSOR_MSGQUEUE_H +#define SENSOR_MSGQUEUE_H + +#include +#include "soc_osal.h" + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +typedef struct { + const char *name; + uint16_t queueLen; + uint16_t maxMsgSize; + unsigned long queueId; + uint32_t flags; +} SensorMsgQueueCfg; + +int32_t SensorMsgQueueCreate(SensorMsgQueueCfg *cfg, uint32_t taskId); +int32_t SensorMsgQueueWriteCopy(unsigned int queueId, void *bufferAddr, unsigned int bufferSize, unsigned int timeout); +int32_t SensorMsgQueueReadCopy(unsigned int queueId, void *bufferAddr, unsigned int *bufferSize, unsigned int timeout); +void SensorMsgQueueDelete(unsigned int queueId); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* SENSOR_MSGQUEUE_H */ diff --git a/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/utils/include/sensor_para_decision.h b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/utils/include/sensor_para_decision.h new file mode 100644 index 000000000..8d6d2bba8 --- /dev/null +++ b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/utils/include/sensor_para_decision.h @@ -0,0 +1,34 @@ +/* + * Copyright (c) CompanyNameMagicTag. 2025-2025. All rights reserved. + * Description: sensor para + * Author: Media Software Group + * Create: 2025-06-06 + */ +#ifndef SENSOR_PARA_DECISION_H +#define SENSOR_PARA_DECISION_H + +#include "sensor_typedef.h" + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +#define SENSOR_PARA_REALTIME_PERIOD_MIN 1 +#define SENSOR_PARA_REALTIME_PERIOD_MAX 1000000 +#define SENSOR_PARA_BATCH_MIN 1 +#define SENSOR_PARA_BATCH_MAX 100 + +void SensorParaDefaultInit(SensorPara *sensorPara); +void SensorParaClear(SensorPara *para); +void SensorParaCopy(SensorPara *dest, const SensorPara *src); +int32_t SensorOpenParaDecision( + enum SensorTypeTag type, const SensorPara *cur, const SensorPara *require, SensorPara *result); +int32_t SensorOptionDecision(enum SensorTypeTag type, int32_t cur, int32_t require); +bool SensorParaIsClear(const SensorPara *para); + + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* SENSOR_PARA_DECISION_H */ \ No newline at end of file diff --git a/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/utils/include/sensor_state.h b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/utils/include/sensor_state.h new file mode 100644 index 000000000..256c8b6b2 --- /dev/null +++ b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/utils/include/sensor_state.h @@ -0,0 +1,24 @@ +/* + * Copyright (c) CompanyNameMagicTag. 2025-2025. All rights reserved. + * Description: sensor state + * Author: Media Software Group + * Create: 2025-06-06 + */ + +#ifndef SENSOR_STATE_H +#define SENSOR_STATE_H + +#include "sensor_typedef.h" + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +void SensorSetState(enum SensorTypeTag type, SensorState state); +void SensorSetPara(enum SensorTypeTag type, const SensorPara *para); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* SENSOR_STATE_H */ diff --git a/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/utils/include/sensor_thread.h b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/utils/include/sensor_thread.h new file mode 100644 index 000000000..178b09fc0 --- /dev/null +++ b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/utils/include/sensor_thread.h @@ -0,0 +1,59 @@ +/* + * Copyright (c) CompanyNameMagicTag. 2025-2025. All rights reserved. + * Description: sensor thread + * Author: Media Software Group + * Create: 2025-06-06 + */ + +#ifndef SENSOR_THREAD_H +#define SENSOR_THREAD_H + +#include +#include +#include +#include +#ifdef __cplusplus +#if __cplusplus +extern "C" { +#endif +#endif + +typedef struct { + bool isRecursive; +} MutexAttr; + +typedef void *MutexId; + +MutexId SensorMutexCreate(MutexAttr *attr); + +void SensorMutexDestroy(MutexId *mutex); + +void SensorMutexLock(MutexId mutex); + +void SensorMutexUnLock(MutexId mutex); + +void SensorMutexGlobalLock(void); + +void SensorMutexGlobalUnLock(void); + +void SensorInitStaticMutexLock(MutexId *mutex); + +typedef void *ThreadId; +typedef void (*ThreadFunc)(void *argv); + +typedef struct { + const char *name; // name of the thread + uint32_t stackSize; // size of stack + uint8_t priority; // initial thread priority + ThreadFunc func; + void *argv; +} SensorThreadCfg; + +ThreadId SensorThreadCreate(const SensorThreadCfg *cfg); + +#ifdef __cplusplus +#if __cplusplus +} +#endif +#endif +#endif // SENSOR_THREAD_H diff --git a/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/utils/include/sensor_utils.h b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/utils/include/sensor_utils.h new file mode 100644 index 000000000..a0014c4b1 --- /dev/null +++ b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/utils/include/sensor_utils.h @@ -0,0 +1,55 @@ +/* + * Copyright (c) CompanyNameMagicTag. 2025-2025. All rights reserved. + * Description: sensor utils + * Author: Media Software Group + * Create: 2025-06-06 + */ + +#ifndef SENSOR_HAL_UTILS_H +#define SENSOR_HAL_UTILS_H + +#include "sensor_typedef.h" +#include "hsensormgr_service.h" +#include "vsensormgr_service.h" + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +#define RELY_SENSOR_CNT_MAX 10 +#define SENSOR_MAX_NUM 10 /* 支持的最大的传感器数量 */ +#define VSENSOR_MAX_NUM 10 /* 虚拟传感器的最大数目 */ + +/* 初始化util模块 */ +void SensorUtilsInit(void); +Sensor *SensorUtilsFindSensor(enum SensorTypeTag type); +Sensor *SensorUtilsRequestSensor(enum SensorTypeTag type); +char *SensorUtilsGetSimpleName(enum SensorTypeTag type); +HsensorListener *SensorUtilsRequestListener(void); +void SensorUtilsFreeListener(HsensorListener *listener); +int32_t SensorUtilsAddHsensorList(HsensorScb *hsensorScb); +int32_t SensorUtilsAddVsensorList(enum SensorTypeTag type); +int32_t SensorUtilsHsensorCheck(const Hsensor *hsensor); +int32_t SensorUtilsVsensorCheck(const Vsensor *vsensor); +bool SensorUtilsCheckHSensorType(enum SensorTypeTag type); +void SensorUtilsRegisterVsensorType(enum SensorTypeTag type); +bool SensorUtilsCheckVSensorType(enum SensorTypeTag type); +bool SensorUtilsIsVSensor(enum SensorTypeTag type); +int32_t SensorUtilsUserInfoCheck(SensorPersonInfo *info); +/* 获取全部sensor */ +int32_t SensorUtilsGetAllSensors(struct SensorInformation **sensorInfo, int32_t *count); + +void SensorUtilsRegisterTaskTable(enum SensorTypeTag type, uint32_t taskId); +void SensorUtilsUnRegisterTaskTable(enum SensorTypeTag type, uint32_t taskId); +uint32_t SensorUtilsGetRegisteredTaskId(enum SensorTypeTag type); +enum SensorTypeTag SensorUtilsGetRegisteredType(uint32_t taskId); +/* 判断sensor有没有被注册 */ +bool SensorUtilsSensorIsRegistered(enum SensorTypeTag type); +uint64_t SensorUtilsGetRtcTimeMs(void); + + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif diff --git a/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/utils/src/sensor_log.c b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/utils/src/sensor_log.c new file mode 100644 index 000000000..5d441755b --- /dev/null +++ b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/utils/src/sensor_log.c @@ -0,0 +1,97 @@ +/* + * Copyright (c) CompanyNameMagicTag. 2025-2025. All rights reserved. + * Description: sensor log + * Author: Media Software Group + * Create: 2025-06-06 + */ + +#include "sensor_log.h" +#include +#include +#include +#include +#include +#include +#include +#include "sensor_type.h" +#ifdef SUPPORT_AT_UART_PRINT +#include "app_at_uart.h" +#endif + +#ifdef ENABLE_INFO_LEVEL_LOG +static SENSOR_LOG_LEVEL g_enabledLevel = SENSOR_LOG_DEBUG; +#else +static SENSOR_LOG_LEVEL g_enabledLevel = SENSOR_LOG_ERR; +#endif + +#define MAX_BUFFER_SZ 256 + +static void LogTime(void) +{ + struct timeval tv = {0}; + gettimeofday(&tv, NULL); + struct tm tm = {}; + localtime_r(&tv.tv_sec, &tm); + const int64_t usecToMsec = 1000; + printf("[%02d:%02d:%02d:%03lld]", tm.tm_hour, tm.tm_min, tm.tm_sec, tv.tv_usec / usecToMsec); +} + +int32_t SensorLogPrintf(SENSOR_LOG_LEVEL level, const char *fmt, ...) +{ + if (level < g_enabledLevel) { + return SENSOR_SUCCESS; + } + if (fmt == NULL) { + return SENSOR_INVALID_PARAM; + } + const char *levelStr = NULL; + char out[MAX_BUFFER_SZ] = {0}; + switch (level) { + case SENSOR_LOG_DEBUG: + levelStr = "D"; + break; + case SENSOR_LOG_INFO: + levelStr = "I"; + break; + case SENSOR_LOG_WARN: + levelStr = "W"; + break; + case SENSOR_LOG_ERR: + levelStr = "E"; + break; + default: + levelStr = "E"; + break; + } + LogTime(); + va_list args; +#ifdef SUPPORT_AT_UART_PRINT + at_uart_printf("[%s]", levelStr); +#else + printf("[%s]", levelStr); +#endif + va_start(args, fmt); + int result = vsnprintf_s(out, MAX_BUFFER_SZ, MAX_BUFFER_SZ - 1, fmt, args); + if (result == -1) { + printf("vsnprintf_s failed!\n"); + va_end(args); + return SENSOR_INVALID_PARAM; + } + va_end(args); +#ifdef SUPPORT_AT_UART_PRINT + at_uart_printf("%s \n", out); +#else + printf("%s \n", out); +#endif + return SENSOR_SUCCESS; +} + +int32_t SetSensorLogEnabledLevel(SENSOR_LOG_LEVEL level) +{ + if (level < SENSOR_LOG_DEBUG || + level > SENSOR_LOG_ERR) { + return SENSOR_INVALID_PARAM; + } + g_enabledLevel = level; + return SENSOR_SUCCESS; +} \ No newline at end of file diff --git a/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/utils/src/sensor_memory.c b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/utils/src/sensor_memory.c new file mode 100644 index 000000000..84cd8c4e7 --- /dev/null +++ b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/utils/src/sensor_memory.c @@ -0,0 +1,18 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved. + * Description: Sensor Malloc impl + * Create: 2025-6-6 + */ + +#include "sensor_memory.h" +#include "sensor_log.h" + +void *SensorMalloc(unsigned long size) +{ + return malloc(size); +} + +void SensorFree(void *addr) +{ + free(addr); +} diff --git a/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/utils/src/sensor_msgqueue.c b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/utils/src/sensor_msgqueue.c new file mode 100644 index 000000000..76c43022b --- /dev/null +++ b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/utils/src/sensor_msgqueue.c @@ -0,0 +1,33 @@ +/* + * Copyright (c) CompanyNameMagicTag. 2025-2025. All rights reserved. + * Description: sensor msgqueue impl + * Author: Media Software Group + * Create: 2025-06-06 + */ + +#include "sensor_msgqueue.h" +#include "sensor_log.h" + +int32_t SensorMsgQueueCreate(SensorMsgQueueCfg* cfg, uint32_t taskId) +{ + if (cfg == NULL) { + return 0; + } + HILOG_INFO(HILOG_MODULE_SEN, "task:%u create msgqueue.\n", taskId); + return osal_msg_queue_create(cfg->name, cfg->queueLen, &(cfg->queueId), cfg->flags, cfg->maxMsgSize); +} + +int32_t SensorMsgQueueWriteCopy(unsigned int queueId, void *bufferAddr, unsigned int bufferSize, unsigned int timeout) +{ + return osal_msg_queue_write_copy(queueId, bufferAddr, bufferSize, timeout); +} + +int32_t SensorMsgQueueReadCopy(unsigned int queueId, void *bufferAddr, unsigned int *bufferSize, unsigned int timeout) +{ + return osal_msg_queue_read_copy(queueId, bufferAddr, bufferSize, timeout); +} + +void SensorMsgQueueDelete(unsigned int queueId) +{ + osal_msg_queue_delete(queueId); +} \ No newline at end of file diff --git a/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/utils/src/sensor_para_decision.c b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/utils/src/sensor_para_decision.c new file mode 100644 index 000000000..bee60851f --- /dev/null +++ b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/utils/src/sensor_para_decision.c @@ -0,0 +1,91 @@ +/* + * Copyright (c) CompanyNameMagicTag. 2025-2025. All rights reserved. + * Description: sensor para impl + * Author: Media Software Group + * Create: 2025-06-06 + */ + + +#include "sensor_para_decision.h" +#include "sensor_log.h" +#include "sensor_utils.h" +#include "sensor_common.h" + +#define OPTION_DEFAULT_VAL 0 /* OPTION初始值 0 */ +#define DEFAULT_REALTIME_PERIOD (SENSOR_PARA_REALTIME_PERIOD_MIN * 1000) + +void SensorParaDefaultInit(SensorPara *sensorPara) +{ + sensorPara->period = DEFAULT_REALTIME_PERIOD; + sensorPara->batch = SENSOR_PARA_BATCH_MIN; + sensorPara->mode = SENSOR_MODE_REALTIME; /* fifo mode OR realtime mode */ + sensorPara->option = 0; +} + + +void SensorParaClear(SensorPara *para) +{ + if (para == NULL) { + return; + } + + para->period = 0; + para->batch = 0; + para->mode = SENSOR_MODE_MAX; + para->option = OPTION_DEFAULT_VAL; +} + +void SensorParaCopy(SensorPara *dest, const SensorPara *src) +{ + if (dest == NULL || src == NULL) { + return; + } + + dest->period = src->period; + dest->batch = src->batch; + dest->mode = src->mode; + dest->option = src->option; +} + +bool SensorParaIsClear(const SensorPara *para) +{ + if (para == NULL) { + return true; + } + + if (para->period == 0) { + return true; + } else { + return false; + } +} + +int32_t SensorOptionDecision(enum SensorTypeTag type, int32_t cur, int32_t require) +{ + return OPTION_DEFAULT_VAL; +} + +int32_t SensorOpenParaDecision( + enum SensorTypeTag type, const SensorPara *cur, const SensorPara *require, SensorPara *result) +{ + if (cur == NULL || require == NULL || result == NULL) { + HILOG_ERROR(HILOG_MODULE_SEN, "type %d para null", type); + return SENSOR_SENSOR_DECISION_PARA_NULL; + } + + if (SensorParaIsClear(cur)) { + SensorParaCopy(result, require); + return SENSOR_OK; + } + + result->period = SENSOR_MIN(cur->period, require->period); + if (result->period == 0) { + HILOG_ERROR(HILOG_MODULE_SEN, "type %d period == 0", type); + return SENSOR_ERROR; + } + result->batch = SENSOR_MIN(cur->batch * cur->period, require->batch * require->period) / result->period; + result->mode = SENSOR_MIN(cur->mode, require->mode); + result->option = SensorOptionDecision(type, cur->option, require->option); + + return SENSOR_OK; +} \ No newline at end of file diff --git a/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/utils/src/sensor_state.c b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/utils/src/sensor_state.c new file mode 100644 index 000000000..dc1a5b7fa --- /dev/null +++ b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/utils/src/sensor_state.c @@ -0,0 +1,50 @@ +/* + * Copyright (c) CompanyNameMagicTag. 2025-2025. All rights reserved. + * Description: sensor state impl + * Author: Media Software Group + * Create: 2025-06-06 + */ + +#include "sensor_state.h" +#include "sensor_log.h" +#include "sensor_utils.h" +#include "sensor_common.h" + +void SensorSetState(enum SensorTypeTag type, SensorState state) +{ + Sensor *sensor = NULL; + + sensor = SensorUtilsFindSensor(type); + if (sensor == NULL) { + HILOG_ERROR(HILOG_MODULE_SEN, "[STATE] cannot get sensor:%d, sensor may be not registered\n", type); + return; + } + + sensor->sensorInfo.state = state; +} + +void SensorSetPara(enum SensorTypeTag type, const SensorPara *para) +{ + Sensor *sensor = NULL; + sensor = SensorUtilsFindSensor(type); + if (sensor == NULL) { + HILOG_ERROR(HILOG_MODULE_SEN, "[STATE] cannot get sensor:%d, sensor may be not registered\n", type); + return; + } + + if (para == NULL) { + HILOG_ERROR(HILOG_MODULE_SEN, "[ATASK] sensor open para NULL!"); + return; + } + sensor->sensorInfo.openPara.period = para->period; + sensor->sensorInfo.openPara.batch = para->batch; + sensor->sensorInfo.openPara.mode = para->mode; + sensor->sensorInfo.openPara.option = para->option; + + HILOG_INFO(HILOG_MODULE_SEN, + "[UTIL][storge msg] period:%d batch:%d mode:%d option:%d\n", + sensor->sensorInfo.openPara.period, + sensor->sensorInfo.openPara.batch, + sensor->sensorInfo.openPara.mode, + sensor->sensorInfo.openPara.option); +} \ No newline at end of file diff --git a/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/utils/src/sensor_thread.c b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/utils/src/sensor_thread.c new file mode 100644 index 000000000..8030c1775 --- /dev/null +++ b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/utils/src/sensor_thread.c @@ -0,0 +1,147 @@ +/* + * Copyright (c) CompanyNameMagicTag. 2025-2025. All rights reserved. + * Description: sensor thread impl + * Author: Media Software Group + * Create: 2025-06-06 + */ + +#include "sensor_thread.h" +#include +#include +#include "securec.h" + +#ifndef CMSIS_SUPPORT +pthread_mutex_t g_globalMutexLock = PTHREAD_MUTEX_INITIALIZER; +static void *ThreadMallocZ(uint32_t len) +{ + if (len == 0) { + return NULL; + } + + void *value = malloc(len); + if (value == NULL) { + return NULL; + } + + if (memset_s(value, len, 0, len) != EOK) { + free(value); + value = NULL; + } + + return value; +} +#endif + +MutexId SensorMutexCreate(MutexAttr *attr) +{ +#ifdef CMSIS_SUPPORT + osMutexAttr_t mutexAttr = { NULL, 0, NULL, 0 }; + osMutexAttr_t *pAttr = NULL; + if (attr != NULL && attr->isRecursive) { + mutexAttr.attr_bits |= osMutexRecursive; + pAttr = &mutexAttr; + } + osMutexId_t mutex = osMutexNew(pAttr); + return mutex; +#else + pthread_mutex_t *mutexId = (pthread_mutex_t *)ThreadMallocZ(sizeof(pthread_mutex_t)); + if (mutexId == NULL) { + return NULL; + } + pthread_mutexattr_t mutexAttr = {0}; + pthread_mutexattr_t *pAttr = NULL; + bool needSetAttr = (attr != NULL && attr->isRecursive && pthread_mutexattr_init(&mutexAttr) == 0); + if (needSetAttr) { + if (pthread_mutexattr_settype(&mutexAttr, PTHREAD_MUTEX_RECURSIVE) == 0) { + pAttr = &mutexAttr; + } + } + (void)pthread_mutex_init(mutexId, pAttr); + if (needSetAttr) { + pthread_mutexattr_destroy(&mutexAttr); + } + return mutexId; +#endif +} + +void SensorMutexDestroy(MutexId *mutex) +{ + if (mutex == NULL || *mutex == NULL) { + return; + } +#ifdef CMSIS_SUPPORT + (void)osMutexDelete(*mutex); +#else + if (*mutex == NULL) { + return; + } + + (void)pthread_mutex_destroy((pthread_mutex_t *)*mutex); + free(*mutex); +#endif + *mutex = NULL; +} + +void SensorMutexLock(MutexId mutex) +{ + if (mutex == NULL) { + return; + } + +#ifdef CMSIS_SUPPORT + (void)osMutexAcquire(mutex, osWaitForever); +#else + (void)pthread_mutex_lock((pthread_mutex_t *)mutex); +#endif +} + +void SensorMutexUnLock(MutexId mutex) +{ + if (mutex == NULL) { + return; + } + +#ifdef CMSIS_SUPPORT + (void)osMutexRelease(mutex); +#else + (void)pthread_mutex_unlock((pthread_mutex_t *)mutex); +#endif +} + +void SensorMutexGlobalLock(void) +{ +#ifdef CMSIS_SUPPORT + osKernelLock(); +#else + pthread_mutex_lock(&g_globalMutexLock); +#endif +} + +void SensorMutexGlobalUnLock(void) +{ +#ifdef CMSIS_SUPPORT + osKernelUnlock(); +#else + pthread_mutex_unlock(&g_globalMutexLock); +#endif +} + +void SensorInitStaticMutexLock(MutexId *mutex) +{ + if (mutex == NULL || *mutex != NULL) { + return; + } + + SensorMutexGlobalLock(); + if (*mutex == NULL) { + MutexAttr attr = { false }; + *mutex = SensorMutexCreate(&attr); + } + SensorMutexGlobalUnLock(); +} + +ThreadId SensorThreadCreate(const SensorThreadCfg *cfg) +{ + osThreadAttr_t taskAttr = {cfg->name, 0, NULL, 0, NULL, cfg->stackSize, (osPriority_t)(cfg->priority), 0, 0}; + return (ThreadId)osThreadNew((osThreadFunc_t)cfg->func, cfg->argv, &taskAttr); +} \ No newline at end of file diff --git a/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/utils/src/sensor_utils.c b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/utils/src/sensor_utils.c new file mode 100644 index 000000000..54c4b428a --- /dev/null +++ b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/utils/src/sensor_utils.c @@ -0,0 +1,397 @@ +/* + * Copyright (c) CompanyNameMagicTag. 2025-2025. All rights reserved. + * Description: sensor utils impl + * Author: Media Software Group + * Create: 2025-06-06 + */ + +#include "sensor_utils.h" +#include +#include "sensor_log.h" +#include "sensor_task.h" +#include "sensor_memory.h" +#include "sensor_common.h" + +#define MS_TO_US 1000 + +typedef struct { + enum SensorTypeTag type; + const char* simpleName; +} SensorSimpleNameInfo; + +typedef struct { + enum SensorTypeTag type; + uint32_t taskId; +} SensorTaskTable; + +static SensorTaskTable g_registeredSensorTaskTable[SENSOR_MAX_NUM] = {0}; + +static struct SensorInformation g_sensorList[SENSOR_MAX_NUM] = {0}; +static Sensor g_sensorPool[SENSOR_MAX_NUM] = {0}; +static enum SensorTypeTag g_registeredVSensorTable[VSENSOR_MAX_NUM] = {0}; + +const SensorSimpleNameInfo g_sensorSimpleNameInfoDefines[] = { + {SENSOR_TYPE_NONE, "none"}, + {SENSOR_TYPE_ACCELEROMETER, "acc"}, + {SENSOR_TYPE_GYROSCOPE, "gyro"}, + {SENSOR_TYPE_PHOTOPLETHYSMOGRAPH, "ppg"}, + {SENSOR_TYPE_ELECTROCARDIOGRAPH, "ecg"}, + {SENSOR_TYPE_AMBIENT_LIGHT, "amblitght"}, + {SENSOR_TYPE_MAGNETIC_FIELD, "magn"}, + {SENSOR_TYPE_CAPACITIVE, "cap"}, + {SENSOR_TYPE_BAROMETER, "bar"}, + {SENSOR_TYPE_TEMPERATURE, "temp"}, + {SENSOR_TYPE_HALL, "hall"}, + {SENSOR_TYPE_GESTURE, "gest"}, + {SENSOR_TYPE_PROXIMITY, "prox"}, + {SENSOR_TYPE_HUMIDITY, "humi"}, + {SENSOR_TYPE_PHYSICAL_MAX, "phymax"}, + {SENSOR_TYPE_ORIENTATION, "ori"}, + {SENSOR_TYPE_GRAVITY, "grav"}, + {SENSOR_TYPE_LINEAR_ACCELERATION, "lacc"}, + {SENSOR_TYPE_ROTATION_VECTOR, "rvec"}, + {SENSOR_TYPE_AMBIENT_TEMPERATURE, "atemp"}, + {SENSOR_TYPE_MAGNETIC_FIELD_UNCALIBRATED, "magnu"}, + {SENSOR_TYPE_GAME_ROTATION_VECTOR, "grvec"}, + {SENSOR_TYPE_GYROSCOPE_UNCALIBRATED, "gyrou"}, + {SENSOR_TYPE_SIGNIFICANT_MOTION, "smo"}, + {SENSOR_TYPE_PEDOMETER_DETECTION, "pedde"}, + {SENSOR_TYPE_PEDOMETER, "ped"}, + {SENSOR_TYPE_GEOMAGNETIC_ROTATION_VECTOR, "grvec"}, + {SENSOR_TYPE_HEART_RATE, "hr"}, + {SENSOR_TYPE_DEVICE_ORIENTATION, "devor"}, + {SENSOR_TYPE_WEAR_DETECTION, "wd"}, + {SENSOR_TYPE_ACCELEROMETER_UNCALIBRATED, "accu"}, + {SENSOR_TYPE_VSENSOR_ACCELEROMETER_ALG_SIMU, "accalgsimu"}, + + {SENSOR_TYPE_MAX, "max"} +}; + +void SensorUtilsInit(void) +{ +} + +char *SensorUtilsGetSimpleName(enum SensorTypeTag type) +{ + char* ret = NULL; + for (uint32_t i = 0; i < (sizeof(g_sensorSimpleNameInfoDefines) / sizeof(SensorSimpleNameInfo)); i++) { + if (g_sensorSimpleNameInfoDefines[i].type == type) { + ret = (char*)(g_sensorSimpleNameInfoDefines[i].simpleName); + break; + } + } + return ret; +} + +Sensor *SensorUtilsFindSensor(enum SensorTypeTag type) +{ + CHECK_SENSOR_TYPE_ILLEGAL_RETURN_RET(type, NULL); + + for (uint32_t i = 0; i < SENSOR_MAX_NUM; i++) { + Sensor *sensor = &(g_sensorPool[i]); + if (type == sensor->sensorInfo.type) { + return sensor; + } + } + + return NULL; +} + +Sensor *SensorUtilsRequestSensor(enum SensorTypeTag type) +{ + Sensor *sensor = SensorUtilsFindSensor(type); + if (sensor != NULL) { + /* sensor已存在,不允许重复注册 */ + HILOG_ERROR(HILOG_MODULE_SEN, "[util] find sensor:%d exit!", sensor->sensorInfo.type); + return NULL; + } + + for (uint32_t i = 0; i < SENSOR_MAX_NUM; i++) { + sensor = &(g_sensorPool[i]); + if (sensor->sensorInfo.type == SENSOR_TYPE_NONE) { + return sensor; + } + } + HILOG_WARN(HILOG_MODULE_SEN, "[util] find sensor:%d Exceed max!", sensor->sensorInfo.type); + return NULL; +} + +/* 获取全部sensor */ +int32_t SensorUtilsGetAllSensors(struct SensorInformation **sensorInfo, int32_t *count) +{ + HILOG_DEBUG(HILOG_MODULE_SEN, "in!"); + if (sensorInfo == NULL || count == NULL) { + return SENSOR_ENTRY_PARA_ERROR; + } + *count = 0; + for (uint32_t i = 0; i < SENSOR_MAX_NUM; i++) { + HILOG_DEBUG(HILOG_MODULE_SEN, "index:%d sensorID:%d sensorTypeId:%d", i, g_sensorList[i].sensorId, g_sensorList[i].sensorTypeId); + if (g_sensorList[i].sensorTypeId == (int32_t)SENSOR_TYPE_NONE) { + break; + } + (*count)++; + } + *sensorInfo = g_sensorList; + HILOG_DEBUG(HILOG_MODULE_SEN, "find sensorlist:%d! list addr:%x", *count, g_sensorList); + return SENSOR_OK; +} + +static struct SensorInformation *SensorUtilsFindSensorsList(enum SensorTypeTag type) +{ + CHECK_SENSOR_TYPE_ILLEGAL_RETURN_RET(type, NULL); + + for (uint32_t i = 0; i < SENSOR_MAX_NUM; i++) { + struct SensorInformation *sensorList = &(g_sensorList[i]); + if (type == (enum SensorTypeTag)sensorList->sensorTypeId) { + return sensorList; + } + } + + return NULL; +} + +static struct SensorInformation *SensorUtilsRequestSensorList(enum SensorTypeTag type) +{ + struct SensorInformation *sensorList = SensorUtilsFindSensorsList(type); + if (sensorList != NULL) { + /* sensor已存在,不允许重复注册 */ + HILOG_ERROR(HILOG_MODULE_SEN, "[util] find sensorlist:%d exit!", sensorList->sensorTypeId); + return NULL; + } + + for (uint32_t i = 0; i < SENSOR_MAX_NUM; i++) { + sensorList = &(g_sensorList[i]); + if (sensorList->sensorTypeId == (int32_t)SENSOR_TYPE_NONE) { + return sensorList; + } + } + return NULL; +} + +int32_t SensorUtilsAddHsensorList(HsensorScb *hsensorScb) +{ + struct SensorInformation *sensorList = SensorUtilsRequestSensorList(hsensorScb->type); + if (sensorList == NULL) { + return SENSOR_ERROR; + } + + sensorList->sensorTypeId = hsensorScb->type; + // sensorList->sensorName = hsensorScb->hsensor->name; + return SENSOR_OK; +} + +int32_t SensorUtilsAddVsensorList(enum SensorTypeTag type) +{ + struct SensorInformation *sensorList = SensorUtilsRequestSensorList(type); + if (sensorList == NULL) { + return SENSOR_ERROR; + } + + sensorList->sensorTypeId = type; + return SENSOR_OK; +} + +HsensorListener *SensorUtilsRequestListener(void) +{ + return (HsensorListener *)SensorMalloc(sizeof(HsensorListener)); +} + +void SensorUtilsFreeListener(HsensorListener *listener) +{ + if (listener) { + SensorFree(listener); + } +} + +/* 用户信息有效性检查 */ +int32_t SensorUtilsUserInfoCheck(SensorPersonInfo *info) +{ + /* 参数检查 */ + if ((info->weight > MAX_USER_WEIGHT) || (info->weight < MIN_USER_WEIGHT)) { + HILOG_INFO(HILOG_MODULE_SEN, "user weight out range!"); + info->weight = DEFAULT_USER_WEIGHT; + } + + if ((info->height > MAX_USER_HEIGHT) || (info->height < MIN_USER_HEIGHT)) { + HILOG_INFO(HILOG_MODULE_SEN, "user height out range!"); + info->height = DEFAULT_USER_HEIGHT; + } + + if ((info->age > MAX_USER_AGE) || (info->age == 0)) { + HILOG_INFO(HILOG_MODULE_SEN, "user age out range!"); + info->age = DEFAULT_USER_AGE; + } + + if (info->gender > ALG_USER_SEX_UNKNOWN) { + HILOG_INFO(HILOG_MODULE_SEN, "user gender out range!"); + info->gender = ALG_USER_SEX_MAN; + } + + return SENSOR_OK; +} + +static int32_t SensorUtilsVsensorRelyCheck(const RelySensorsInfo *relySensors) +{ + if (relySensors->relySensorCnt == 0) { + return SENSOR_ENTRY_VSENSOR_RELY_NULL; + } + return SENSOR_OK; +} + +bool SensorUtilsCheckHSensorType(enum SensorTypeTag type) +{ + if ((type == SENSOR_TYPE_NONE) || (type >= SENSOR_TYPE_VSENSOR_EXPAND_START)) { + HILOG_ERROR(HILOG_MODULE_SEN, "type :%d illegal", type); + return false; + } + return true; +} + +bool SensorUtilsCheckVSensorType(enum SensorTypeTag type) +{ + if ((type <= SENSOR_TYPE_VSENSOR_EXPAND_START) || (type >= SENSOR_TYPE_MAX)) { + HILOG_ERROR(HILOG_MODULE_SEN, "type :%d illegal", type); + return false; + } + return true; +} + +void SensorUtilsRegisterVsensorType(enum SensorTypeTag type) +{ + CHECK_SENSOR_TYPE_ILLEGAL_RETURN(type); + + for (uint8_t i = 0; i < VSENSOR_MAX_NUM; i++) { + if (type == g_registeredVSensorTable[i]) { + return; + } + if (g_registeredVSensorTable[i] == SENSOR_TYPE_NONE) { + g_registeredVSensorTable[i] = type; + return; + } + } +} + +bool SensorUtilsIsVSensor(enum SensorTypeTag type) +{ + for (uint8_t i = 0; i < VSENSOR_MAX_NUM; i++) { + if (type == g_registeredVSensorTable[i]) { + return true; + } + } + return false; +} + +int32_t SensorUtilsHsensorCheck(const Hsensor *hsensor) +{ + CHECK_NULL_PTR_RETURN_VALUE(hsensor, SENSOR_ENTRY_HSENSOR_NULL); + CHECK_NULL_PTR_RETURN_VALUE(hsensor->name, SENSOR_ENTRY_HSENSOR_NAME_NULL); + CHECK_NULL_PTR_RETURN_VALUE(hsensor->init, SENSOR_ENTRY_HSENSOR_FUNC_NULL); + CHECK_NULL_PTR_RETURN_VALUE(hsensor->deinit, SENSOR_ENTRY_HSENSOR_FUNC_NULL); + CHECK_NULL_PTR_RETURN_VALUE(hsensor->close, SENSOR_ENTRY_HSENSOR_FUNC_NULL); + CHECK_NULL_PTR_RETURN_VALUE(hsensor->read, SENSOR_ENTRY_HSENSOR_FUNC_NULL); + CHECK_NULL_PTR_RETURN_VALUE(hsensor->ioctl, SENSOR_ENTRY_HSENSOR_FUNC_NULL); + if (hsensor->caps.maxBatchCount == 0 || hsensor->caps.sampleElementlen == 0) { + HILOG_ERROR(HILOG_MODULE_SEN, "maxBatchCount :%u sampleElementlen :%u illegal", + hsensor->caps.maxBatchCount, hsensor->caps.sampleElementlen); + return SENSOR_HSENSOR_PERIOD_BATCH_ERR; + } + + if (!SensorUtilsCheckHSensorType(hsensor->type)) { + return SENSOR_ENTRY_SENSOR_TYPE_ILLEGAL; + } + + return SENSOR_OK; +} + +int32_t SensorUtilsVsensorCheck(const Vsensor *vsensor) +{ + CHECK_NULL_PTR_RETURN_VALUE(vsensor, SENSOR_ENTRY_VSENSOR_NULL); + CHECK_NULL_PTR_RETURN_VALUE(vsensor->name, SENSOR_ENTRY_VSENSOR_NAME_NULL); + CHECK_NULL_PTR_RETURN_VALUE(vsensor->relySensors, SENSOR_ENTRY_VSENSOR_RELY_NULL); + + CHECK_NULL_PTR_RETURN_VALUE(vsensor->registDataCb, SENSOR_ENTRY_VSENSOR_FUNC_NULL); + CHECK_NULL_PTR_RETURN_VALUE(vsensor->unRegistDataCb, SENSOR_ENTRY_VSENSOR_FUNC_NULL); + CHECK_NULL_PTR_RETURN_VALUE(vsensor->open, SENSOR_ENTRY_VSENSOR_FUNC_NULL); + CHECK_NULL_PTR_RETURN_VALUE(vsensor->close, SENSOR_ENTRY_VSENSOR_FUNC_NULL); + CHECK_NULL_PTR_RETURN_VALUE(vsensor->process, SENSOR_ENTRY_VSENSOR_FUNC_NULL); + + if (!SensorUtilsCheckVSensorType(vsensor->type)) { + return SENSOR_ENTRY_SENSOR_TYPE_ILLEGAL; + } + + int32_t ret = SensorUtilsVsensorRelyCheck(vsensor->relySensors); + if (ret != SENSOR_OK) { + return ret; + } + + return SENSOR_OK; +} + +void SensorUtilsRegisterTaskTable(enum SensorTypeTag type, uint32_t taskId) +{ + CHECK_SENSOR_TYPE_ILLEGAL_RETURN(type); + for (uint32_t i = 0; i < SENSOR_MAX_NUM; i++) { + if (type == g_registeredSensorTaskTable[i].type) { + g_registeredSensorTaskTable[i].taskId = taskId; + return; + } + } + + for (uint32_t i = 0; i < SENSOR_MAX_NUM; i++) { + if (g_registeredSensorTaskTable[i].type == SENSOR_TYPE_NONE) { + g_registeredSensorTaskTable[i].type = type; + g_registeredSensorTaskTable[i].taskId = taskId; + return; + } + } +} + +void SensorUtilsUnRegisterTaskTable(enum SensorTypeTag type, uint32_t taskId) +{ + CHECK_SENSOR_TYPE_ILLEGAL_RETURN(type); + for (uint32_t i = 0; i < SENSOR_MAX_NUM; i++) { + if (type == g_registeredSensorTaskTable[i].type && taskId == g_registeredSensorTaskTable[i].taskId) { + g_registeredSensorTaskTable[i].taskId = 0; + g_registeredSensorTaskTable[i].type = SENSOR_TYPE_NONE; + return; + } + } +} + +uint32_t SensorUtilsGetRegisteredTaskId(enum SensorTypeTag type) +{ + for (uint32_t i = 0; i < SENSOR_MAX_NUM; i++) { + if (type == g_registeredSensorTaskTable[i].type) { + return g_registeredSensorTaskTable[i].taskId; + } + } + return SENSOR_FAILURE; +} + +enum SensorTypeTag SensorUtilsGetRegisteredType(uint32_t taskId) +{ + for (uint32_t i = 0; i < SENSOR_MAX_NUM; i++) { + if (taskId == g_registeredSensorTaskTable[i].taskId) { + return g_registeredSensorTaskTable[i].type; + } + } + return SENSOR_TYPE_MAX; +} + +bool SensorUtilsSensorIsRegistered(enum SensorTypeTag type) +{ + for (uint32_t i = 0; i < SENSOR_MAX_NUM; i++) { + Sensor *sensor = &(g_sensorPool[i]); + if (sensor->sensorInfo.type == type) { + return true; + } + } + return false; +} + +uint64_t SensorUtilsGetRtcTimeMs(void) +{ + struct timeval tv; + (void)gettimeofday(&tv, NULL); + return (tv.tv_sec * MS_TO_US + tv.tv_usec / MS_TO_US); +} diff --git a/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/vsensormgr_service/include/vsensor_task_mgr.h b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/vsensormgr_service/include/vsensor_task_mgr.h new file mode 100644 index 000000000..f44c6bbad --- /dev/null +++ b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/vsensormgr_service/include/vsensor_task_mgr.h @@ -0,0 +1,27 @@ +/* + * Copyright (c) CompanyNameMagicTag. 2025-2025. All rights reserved. + * Description: vsensor task mgr + * Author: Media Software Group + * Create: 2025-06-06 + */ + +#ifndef VENSOR_TASK_MGR_H +#define VENSOR_TASK_MGR_H + +#include +#include "sensor_typedef.h" +#include "sensor_tmsg.h" + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +int32_t VsensorTaskMgrInit(uint32_t taskId); +void VsensorTaskMgrDeInit(uint32_t taskId); +int32_t VsensorTaskMgrMsgProcess(uint32_t taskId, const SensorTmsg *tmsg); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif diff --git a/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/vsensormgr_service/include/vsensormgr_service.h b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/vsensormgr_service/include/vsensormgr_service.h new file mode 100644 index 000000000..844649dec --- /dev/null +++ b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/vsensormgr_service/include/vsensormgr_service.h @@ -0,0 +1,26 @@ +/* + * Copyright (c) CompanyNameMagicTag. 2025-2025. All rights reserved. + * Description: vsensor task mgr service + * Author: Media Software Group + * Create: 2025-06-06 + */ + +#ifndef VSENSOR_MGR_SEVICE_H +#define VSENSOR_MGR_SEVICE_H + +#include "sensor_typedef.h" +#include "soc_osal.h" +#include "hsensormgr_service.h" + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +int32_t VsensorMgrInit(void); +int32_t VsensorMgrRegister(const Vsensor *vsensor); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif \ No newline at end of file diff --git a/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/vsensormgr_service/src/vsensor_task_common/include/vsensor_task_class.h b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/vsensormgr_service/src/vsensor_task_common/include/vsensor_task_class.h new file mode 100644 index 000000000..07f59c0a9 --- /dev/null +++ b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/vsensormgr_service/src/vsensor_task_common/include/vsensor_task_class.h @@ -0,0 +1,40 @@ +/* + * Copyright (c) CompanyNameMagicTag. 2025-2025. All rights reserved. + * Description: vsensor task class + * Author: Media Software Group + * Create: 2025-06-06 + */ + +#ifndef VSENSOR_TASK_CLASS_H +#define VSENSOR_TASK_CLASS_H + +#include "vsensor_task_comm.h" + +typedef struct { + VsensorTaskComm component; + SensorTmsgProcMap *tmsgProcMap; + uint16_t tmsgProcMapLen; +} VsensorTaskClass; + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/* aclass对象创建 */ +VsensorTaskClass *VsensorTaskClassInit(uint32_t taskId, const char *taskPrefix, NotifyCallback hdataCb, + const SensorTmsgProcMap *tmsgProcMap, uint16_t tmsgProcMapLen); + +/* aclass对象销毁 */ +void VsensorTaskClassDestruct(VsensorTaskClass *vSensorClass); + +/* 通过 taskid 查找 aclass 对象 */ +VsensorTaskClass *VsensorTaskClassGetByTaskid(uint32_t taskId); + +/* aclass类公用的消息处理函数 */ +int32_t VsensorTaskClassMsgProcess(VsensorTaskClass *vSensorClass, const SensorTmsg *tmsg); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif \ No newline at end of file diff --git a/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/vsensormgr_service/src/vsensor_task_common/include/vsensor_task_comm.h b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/vsensormgr_service/src/vsensor_task_common/include/vsensor_task_comm.h new file mode 100644 index 000000000..8d22ca3c7 --- /dev/null +++ b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/vsensormgr_service/src/vsensor_task_common/include/vsensor_task_comm.h @@ -0,0 +1,77 @@ +/* + * Copyright (c) CompanyNameMagicTag. 2025-2025. All rights reserved. + * Description: vsensor task common + * Author: Media Software Group + * Create: 2025-06-06 + */ + +#ifndef SENSOR_TASK_COMM_H +#define SENSOR_TASK_COMM_H + +#include +#include "sensor_typedef.h" +#include "hsensormgr_service.h" +#include "sensor_task.h" +#include "sensor_tmsg.h" +#include "sensor_utils.h" + +#define VSENSOR_TASK_HLISTENER_MAX_NUM 10 /* FA算法线程支持的物理传感器listener的最大数量设置 */ +#define FA_VSENSOR_BE_RELYED_NUM 10 /* 虚拟sensor被依赖的任务最大个数 */ +#define VSENSOR_RESULT_TS_OFFSET 1000 /* 虚拟传感器上报的时间戳与获取的时间戳的矫正间隔值 */ + +enum { + APP_CTRL = 0, + RELY_CTRL, +}; + +typedef struct { + bool appOpenFlag; + uint32_t relyedCnt; /* 被其他算法依赖的次数 */ +} VsensorTaskRelyedInfo; + +typedef struct { + enum SensorTypeTag type; + SensorState state; + Vsensor *vsensor; + VsensorTaskRelyedInfo relyedInfo; +} VsensorTaskInfo; + +typedef struct { + enum SensorTypeTag type; + HsensorListener hlistener; +} VsensorTaskHlistener; + +typedef struct { + enum SensorTypeTag sensor; + uint32_t dataLen; + uint64_t timestamp; + uint8_t sensordata[]; +} VsensorProcessData; + +typedef struct { + uint32_t taskId; + char *taskPrefix; + NotifyCallback hdataCb; /* hlistener中的数据回调函数,若为NULL,将直接使用atask类默认的数据回调函数 */ + VsensorTaskHlistener hlistenersList[VSENSOR_TASK_HLISTENER_MAX_NUM]; + VsensorTaskInfo vsensorInfo[VSENSOR_MAX_NUM]; +} VsensorTaskComm; + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +int32_t VsensorTaskCheckCommComponents(const VsensorTaskComm *component); +bool VsensorTaskVsensorIsRunning(const VsensorTaskInfo *vsensorInfo); +void VsensorTaskCommInit(VsensorTaskComm *component); +int32_t VsensorTaskVsensorRegEvent(VsensorTaskComm *component, Vsensor *vsensor); +int32_t VsensorTaskSensorDataUpdateEvent(VsensorTaskComm *component, VsensorProcessData *data); + +int32_t VsensorTaskVsensorOpenEvent( + VsensorTaskComm *component, enum SensorTypeTag type, SensorPara *para, uint32_t openType); +int32_t VsensorTaskVsensorCloseEvent(VsensorTaskComm *component, enum SensorTypeTag type, uint32_t closeType); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* VSENSOR_TASK_COMM_H */ \ No newline at end of file diff --git a/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/vsensormgr_service/src/vsensor_task_common/src/vsensor_task_class.c b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/vsensormgr_service/src/vsensor_task_common/src/vsensor_task_class.c new file mode 100644 index 000000000..975530fa1 --- /dev/null +++ b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/vsensormgr_service/src/vsensor_task_common/src/vsensor_task_class.c @@ -0,0 +1,133 @@ +/* + * Copyright (c) CompanyNameMagicTag. 2025-2025. All rights reserved. + * Description: vsensor task class impl + * Author: Media Software Group + * Create: 2025-06-06 + */ + +#include "vsensor_task_class.h" +#include "securec.h" +#include "sensor_log.h" +#include "sensor_common.h" +#include "sensor_utils.h" +#include "sensor_memory.h" +#include "sensor_tmsg.h" + +/* 存储 taskid 和 aclass 对象的对应表 */ +static VsensorTaskClass *g_vsensorTaskObjArray[SENSOR_TASK_MAX_CNT] = {NULL}; + +/* aclass对象创建 */ +VsensorTaskClass *VsensorTaskClassInit(uint32_t taskId, const char *taskPrefix, NotifyCallback hdataCb, + const SensorTmsgProcMap *tmsgProcMap, uint16_t tmsgProcMapLen) +{ + if (taskPrefix == NULL) { + return NULL; + } + + VsensorTaskClass *vsensorTaskObj = (VsensorTaskClass *)SensorMalloc(sizeof(VsensorTaskClass)); + if (vsensorTaskObj == NULL) { + HILOG_ERROR(HILOG_MODULE_SEN, "aclass:%d malloc fail!\n", taskId); + return NULL; + } + + memset_s(vsensorTaskObj, sizeof(VsensorTaskClass), 0, sizeof(VsensorTaskClass)); + + vsensorTaskObj->component.taskId = taskId; + vsensorTaskObj->component.taskPrefix = (char *)taskPrefix; + vsensorTaskObj->component.hdataCb = hdataCb; + vsensorTaskObj->tmsgProcMap = (SensorTmsgProcMap *)tmsgProcMap; + vsensorTaskObj->tmsgProcMapLen = tmsgProcMapLen; + VsensorTaskCommInit(&(vsensorTaskObj->component)); + g_vsensorTaskObjArray[taskId] = vsensorTaskObj; + + return vsensorTaskObj; +} + +/* aclass对象销毁 */ +void VsensorTaskClassDestruct(VsensorTaskClass *vSensorClass) +{ + if (vSensorClass == NULL) { + return; + } + g_vsensorTaskObjArray[vSensorClass->component.taskId] = NULL; + SensorFree(vSensorClass); +} + +/* 通过 taskid 查找 aclass 对象 */ +VsensorTaskClass *VsensorTaskClassGetByTaskid(uint32_t taskId) +{ + if (taskId < SENSOR_TASK_MAX_CNT) { + return g_vsensorTaskObjArray[taskId]; + } else { + return NULL; + } +} + +/* aclass类公用的消息处理函数,当aclass对象没有指定消息处理函数时,会使用此函数的消息处理流程 */ +static int32_t VsensorTaskGenericMsgProcess(VsensorTaskComm *component, const SensorTmsg *tmsg) +{ + HILOG_DEBUG(HILOG_MODULE_SEN, "msg:%d task:%d proc", tmsg->id, component->taskId); + /* 无需多重校验入参指针,在函数上下文中,已经判断了,提升代码运行效率 */ + int32_t ret = SENSOR_OK; + switch (tmsg->id) { + case SENSOR_TMSG_VSENSOR_REG_EVENT: { + Vsensor *vsensor = (Vsensor *)(tmsg->value); + CHECK_NULL_PTR_RETURN_VALUE(vsensor, SENSOR_VSENSOR_TASK_REG_VENSOR_NULL); + ret = VsensorTaskVsensorRegEvent(component, (Vsensor *)(tmsg->value)); + break; + } + case SENSOR_TMSG_HSENSOR_DATA_UPDATE: + case SENSOR_TMSG_VSENSOR_DATA_UPDATE: { + ret = VsensorTaskSensorDataUpdateEvent(component, (VsensorProcessData *)(tmsg->info)); + break; + } + case SENSOR_TMSG_VSENSOR_OPEN_EVENT: { + ret = VsensorTaskVsensorOpenEvent( + component, (enum SensorTypeTag)(tmsg->value), (SensorPara *)(tmsg->info), APP_CTRL); + break; + } + case SENSOR_TMSG_VSENSOR_CLOSE_EVENT: { + ret = VsensorTaskVsensorCloseEvent(component, (enum SensorTypeTag)(tmsg->value), APP_CTRL); + break; + } + case SENSOR_TMSG_VSENSOR_RELY_OPEN_EVENT: { + ret = VsensorTaskVsensorOpenEvent( + component, (enum SensorTypeTag)(tmsg->value), (SensorPara *)(tmsg->info), RELY_CTRL); + break; + } + case SENSOR_TMSG_VSENSOR_RELY_CLOSE_EVENT: { + ret = VsensorTaskVsensorCloseEvent(component, (enum SensorTypeTag)(tmsg->value), RELY_CTRL); + break; + } + default: + HILOG_INFO(HILOG_MODULE_SEN, "cannot get msg:%d task:%d proc.\n", tmsg->id, component->taskId); + } + HILOG_DEBUG(HILOG_MODULE_SEN, "msg:%d task:%d proc ret:%d", tmsg->id, component->taskId, ret); + return ret; +} + +/* aclass类公用的消息处理函数 */ +int32_t VsensorTaskClassMsgProcess(VsensorTaskClass *vSensorClass, const SensorTmsg *tmsg) +{ + VsensorTaskComm *component = &(vSensorClass->component); + + CHECK_NULL_PTR_RETURN_VALUE(vSensorClass, SENSOR_VSENSOR_TASK_CLASS_NULL); + int32_t ret = VsensorTaskCheckCommComponents(component); + SENSOR_CHECK_OK(ret); + + if (tmsg == NULL) { + HILOG_ERROR(HILOG_MODULE_SEN, "VsensorTaskClassMsgProcess tmsg NULL\r\n"); + return SENSOR_RECV_TMSG_NULL; + } + + if (vSensorClass->tmsgProcMap == NULL || vSensorClass->tmsgProcMapLen == 0) { + return VsensorTaskGenericMsgProcess(component, tmsg); + } + + for (uint32_t i = 0; i < vSensorClass->tmsgProcMapLen; i++) { + if (vSensorClass->tmsgProcMap[i].tmsgId == tmsg->id && vSensorClass->tmsgProcMap[i].tmsgProc != NULL) { + return vSensorClass->tmsgProcMap[i].tmsgProc(tmsg); + } + } + return VsensorTaskGenericMsgProcess(component, tmsg); +} \ No newline at end of file diff --git a/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/vsensormgr_service/src/vsensor_task_common/src/vsensor_task_comm.c b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/vsensormgr_service/src/vsensor_task_common/src/vsensor_task_comm.c new file mode 100644 index 000000000..de4e2b687 --- /dev/null +++ b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/vsensormgr_service/src/vsensor_task_common/src/vsensor_task_comm.c @@ -0,0 +1,728 @@ +/* + * Copyright (c) CompanyNameMagicTag. 2025-2025. All rights reserved. + * Description: vsensor task common impl + * Author: Media Software Group + * Create: 2025-06-06 + */ + +#include "vsensor_task_comm.h" +#include "sensor_log.h" +#include "sensor_memory.h" +#include "sensor_common.h" +#include "securec.h" +#include "sensor_tmsg.h" +#include "sensor_para_decision.h" +#include "sensor_state.h" + +int32_t VsensorTaskCheckCommComponents(const VsensorTaskComm *component) +{ + if (component == NULL || component->taskPrefix == NULL) { + return SENSOR_TASK_CHECK_COMM_COMPONENT_NULL; + } + return SENSOR_OK; +} + +static VsensorTaskHlistener *VsensorTaskFindHlistener( + const VsensorTaskHlistener *hlistenerPool, uint16_t hlistenerPoolLen, enum SensorTypeTag type) +{ + CHECK_SENSOR_TYPE_ILLEGAL_RETURN_RET(type, NULL); + + for (uint32_t i = 0; i < VSENSOR_TASK_HLISTENER_MAX_NUM; i++) { + VsensorTaskHlistener *hlistener = (VsensorTaskHlistener *)(&(hlistenerPool[i])); + if (hlistener->type == type) { + return hlistener; + } + } + + return NULL; +} + +static VsensorTaskHlistener *VsensorTaskRequestHlistener( + const VsensorTaskHlistener *hlistenerPool, uint16_t hlistenerPoolLen, enum SensorTypeTag type) +{ + VsensorTaskHlistener *hlistener = VsensorTaskFindHlistener(hlistenerPool, hlistenerPoolLen, type); + if (hlistener != NULL) { + return hlistener; + } + + for (uint32_t i = 0; i < VSENSOR_TASK_HLISTENER_MAX_NUM; i++) { + hlistener = (VsensorTaskHlistener *)(&(hlistenerPool[i])); + if (hlistener->type == SENSOR_TYPE_NONE) { + return hlistener; + } + } + + return NULL; +} + +static int32_t VsensorTaskDataUpdateCheck(const SensorNotifyInfo *events, const void *notifyArg) +{ + if ((events == NULL) || (events->data == NULL) || (notifyArg == NULL)) { + HILOG_ERROR(HILOG_MODULE_SEN, "[VTASK]dataupdate para null %d\r\n", (int32_t)events->dataLen); + return SENSOR_TASK_HSDATA_UPDATE_DATA_NULL; + } + + if (events->type >= SENSOR_TYPE_MAX) { + HILOG_ERROR(HILOG_MODULE_SEN, + "[VTASK]dataupdate sensor type or len err,type:%d, len:%u\r\n", + events->type, + events->dataLen); + return SENSOR_TASK_HSDATA_UPDATE_DATA_NULL; + } + + return SENSOR_OK; +} + +static void VsensorTaskSensorDataUpdate(const SensorNotifyInfo *events, void *notifyArg) +{ + int32_t ret; + ret = VsensorTaskDataUpdateCheck(events, notifyArg); + if (ret != SENSOR_OK) { + return; + } + + VsensorTaskComm *component = (VsensorTaskComm *)notifyArg; + + /* 计算实际需要的存储空间 */ + uint32_t dataSize = (uint32_t)(sizeof(VsensorProcessData)) + events->dataLen; + VsensorProcessData *processData = (VsensorProcessData *)SensorMalloc(dataSize); + if (processData == NULL) { + HILOG_ERROR(HILOG_MODULE_SEN, + "[VTASK]cannot malloc for hsensor:%d data!, taskId:%d\n", + events->type, + component->taskId); + return; + } + int32_t err = memset_s(processData, dataSize, 0, dataSize); + if (err != EOK) { + HILOG_ERROR(HILOG_MODULE_SEN, "[VTASK]dataupdate: memset fail\r\n"); + } + + processData->timestamp = events->timestamp; + processData->sensor = events->type; + processData->dataLen = events->dataLen; + + uint32_t i = 0; + while (i < events->dataLen) { + processData->sensordata[i] = events->data[i]; + i++; + } + SensorTmsg tmsgSend = { + .id = SENSOR_TMSG_HSENSOR_DATA_UPDATE, .value = 0, .ts = 0, .info = processData, .infoSize = dataSize}; + + ret = SensorTmsgSend(component->taskId, &tmsgSend); + if (ret != SENSOR_OK) { + SensorFree((void *)processData); + processData = NULL; + HILOG_ERROR(HILOG_MODULE_SEN, "[VTASK]dataupdate send msg error 0x%x\r\n", ret); + } + + return; +} + +static int32_t VsensorTaskHlistenerInit( + VsensorTaskComm *component, VsensorTaskHlistener *hlistener, enum SensorTypeTag type) +{ + HsensorListener *listener = &(hlistener->hlistener); + Sensor *sensor = SensorUtilsFindSensor(type); + if (sensor == NULL) { + HILOG_ERROR(HILOG_MODULE_SEN, "[VTASK]init sensor NULL! type:%d", type); + return SENSOR_TASK_SENSOR_NULL; + } + + errno_t err = memset_s(listener->name, HSENSOR_LISTENER_NAME_MAX_LEN, 0, HSENSOR_LISTENER_NAME_MAX_LEN); + if (err != EOK) { + HILOG_ERROR(HILOG_MODULE_SEN, "[VTASK]hlistener init name memset full! type:%d", type); + return SENSOR_SENSOR_SECUREC_FUNC_ERR; + } + err = strcat_s(listener->name, sizeof(listener->name), component->taskPrefix); + if (err != EOK) { + HILOG_ERROR(HILOG_MODULE_SEN, "[VTASK]hlistener init name strcat full! type:%d", type); + return SENSOR_SENSOR_SECUREC_FUNC_ERR; + } + err = strcat_s(listener->name, sizeof(listener->name), sensor->sensorInfo.name); + if (err != EOK) { + HILOG_ERROR(HILOG_MODULE_SEN, "[VTASK]hlistener init name strcat full! type:%d", type); + return SENSOR_SENSOR_SECUREC_FUNC_ERR; + } + + listener->type = type; + hlistener->type = type; + + /* 如果没有指定物理传感器数据更新函数,默认直接采用 标准通道函数 */ + if (component->hdataCb == NULL) { + listener->notifyCallback = VsensorTaskSensorDataUpdate; + } else { + listener->notifyCallback = component->hdataCb; + } + listener->notifyArg = (void *)component; + HILOG_DEBUG(HILOG_MODULE_SEN, "[VTASK]Hlistener init type :%d", type); + return SENSOR_OK; +} + +static int32_t VsensorTaskHlistenerRegister(HsensorListener *listener) +{ + int32_t ret = HsensorMgrRegisterListener(listener); + if (ret != SENSOR_OK) { + HILOG_ERROR(HILOG_MODULE_SEN, "[VTASK]hsensormgr reg listener:%d return FAIL!\n", listener->type); + return ret; + } + + return SENSOR_OK; +} + +static VsensorTaskInfo *VsensorTaskFindVsensorInfo( + const VsensorTaskInfo *vsensorPool, uint16_t vsensorPoolLen, enum SensorTypeTag type) +{ + CHECK_SENSOR_TYPE_ILLEGAL_RETURN_RET(type, NULL); + + for (uint32_t i = 0; i < VSENSOR_MAX_NUM; i++) { + VsensorTaskInfo *vsensorInfo = (VsensorTaskInfo *)(&(vsensorPool[i])); + if (vsensorInfo->type == type) { + if (vsensorInfo->vsensor == NULL) { + vsensorInfo->type = (enum SensorTypeTag)0; + vsensorInfo->state = SENSOR_STATE_IDLE; + continue; + } + return vsensorInfo; + } + } + + return NULL; +} + +static VsensorTaskInfo *VsensorTaskRequestVsensorInfo( + const VsensorTaskInfo *vsensorPool, uint16_t vsensorPoolLen, enum SensorTypeTag type) +{ + VsensorTaskInfo *vsensorInfo = VsensorTaskFindVsensorInfo(vsensorPool, vsensorPoolLen, type); + if (vsensorInfo != NULL) { + return vsensorInfo; + } + + for (uint32_t i = 0; i < VSENSOR_MAX_NUM; i++) { + vsensorInfo = (VsensorTaskInfo *)(&(vsensorPool[i])); + if (vsensorInfo->type == (enum SensorTypeTag)0) { + return vsensorInfo; + } + } + + return NULL; +} + +static int32_t VsensorTaskVsensorReg(const VsensorTaskComm *component, Vsensor *vsensor) +{ + VsensorTaskInfo *vsensorInfo = + VsensorTaskRequestVsensorInfo(component->vsensorInfo, VSENSOR_MAX_NUM, vsensor->type); + if (vsensorInfo == NULL) { + HILOG_ERROR(HILOG_MODULE_SEN, "[VTASK]init find vsensorInfo NULL! type:%d", vsensor->type); + return SENSOR_TASK_VSENSOR_INFO_FIND_NULL; + } + + vsensorInfo->type = vsensor->type; + vsensorInfo->vsensor = vsensor; + HILOG_DEBUG(HILOG_MODULE_SEN, "[VTASK]Reg type:%d", vsensor->type); + return SENSOR_OK; +} + +static int32_t VsensorTaskOpenRelyHSensor(VsensorTaskComm *component, enum SensorTypeTag type, const SensorPara *para) +{ + VsensorTaskHlistener *hlistenerPool = component->hlistenersList; + HILOG_DEBUG(HILOG_MODULE_SEN, "[VTASK]Open Rely hsensor:%d ", type); + VsensorTaskHlistener *var = VsensorTaskFindHlistener(hlistenerPool, VSENSOR_TASK_HLISTENER_MAX_NUM, type); + if ((var == NULL) || (var->type == SENSOR_TYPE_NONE)) { + HILOG_ERROR(HILOG_MODULE_SEN, "[VTASK]rely hlistener NULL! type:%d", type); + return SENSOR_TASK_LISTENER_FIND_NULL; + } + + SensorPara curDecisionPara = var->hlistener.openParam; + int32_t ret = SensorOpenParaDecision(type, &curDecisionPara, para, &(var->hlistener.openParam)); + if (ret != SENSOR_OK) { + return ret; + } + + if (SensorParaIsClear(&(var->hlistener.openParam))) { + HILOG_ERROR(HILOG_MODULE_SEN, "[VTASK]sensor decision para err! type:%d", type); + return SENSOR_TASK_SENSOR_DECISION_PARA_ERROR; + } + + ret = HsensorMgrOpenListener(&(var->hlistener)); + if (ret != SENSOR_OK) { + HILOG_ERROR(HILOG_MODULE_SEN, "[VTASK]hsensor:%d enable err 0x%04x!\n", type, ret); + return ret; + } + HILOG_DEBUG(HILOG_MODULE_SEN, "[VTASK]Open Rely hsensor:%d sucess", type); + return SENSOR_OK; +} + +int32_t VsensorTaskOpenRelySensors(VsensorTaskComm *component, const RelySensorInfo *relySensors, uint8_t relyCnt) +{ + int32_t ret = SENSOR_OK; + if ((relySensors == NULL) || (relyCnt <= 0)) { + HILOG_ERROR(HILOG_MODULE_SEN, "[RELY] rely sensor is NULL!\n"); + return SENSOR_OPEN_RELY_SENSORS_CHECK_NULL; + } + + for (uint8_t i = 0; i < relyCnt; i++) { + enum SensorTypeTag type = relySensors[i].type; + + if (!SensorUtilsSensorIsRegistered(type)) { + HILOG_ERROR(HILOG_MODULE_SEN, "[RELY] rely sensor:%d not registed!\n", type); + return SENSOR_TASK_RELY_SENSOR_NOT_REGISTERED; + } + + uint32_t taskId = SensorUtilsGetRegisteredTaskId(type); + bool isVsensor = SensorUtilsIsVSensor(type); + if (isVsensor == true) { + // 打开虚拟sensor + SensorTmsg tmsgSend = {.id = SENSOR_TMSG_VSENSOR_RELY_OPEN_EVENT, + .value = (uintptr_t)type, + .ts = 0, + .info = NULL, + .infoSize = 0}; + + ret = SensorTmsgSend(taskId, &tmsgSend); + if (ret != SENSOR_OK) { + HILOG_ERROR(HILOG_MODULE_SEN, "vsensor:%d send open msg FAIL!\r\n", type); + return ret; + } + } else { + /* 打开物理sensor, type 为物理sensor的类型 */ + ret = VsensorTaskOpenRelyHSensor(component, type, (SensorPara *)&(relySensors[i].param)); + if (ret != SENSOR_OK) { + return ret; + } + } + } + HILOG_DEBUG(HILOG_MODULE_SEN, "Open Rely Sensors sucess"); + return SENSOR_OK; +} + +static int32_t SensorCloseParaDecision(enum SensorTypeTag type, VsensorTaskComm *component, SensorPara *result) +{ + SensorPara *temp = NULL; + VsensorTaskInfo *vsensorInfo = NULL; + Vsensor *vsensor = NULL; + + if (component == NULL || result == NULL) { + return SENSOR_TASK_CHECK_COMM_COMPONENT_NULL; + } + + SensorParaClear(result); + + for (uint32_t i = 0; i < VSENSOR_MAX_NUM; i++) { + vsensorInfo = (VsensorTaskInfo *)(&(component->vsensorInfo[i])); + if (vsensorInfo->type == (enum SensorTypeTag)0 || vsensorInfo->vsensor == NULL) { + continue; + } + + vsensor = vsensorInfo->vsensor; + temp = NULL; + for (uint32_t cnt = 0; cnt < vsensor->relySensors->relySensorCnt; cnt++) { + if (type == vsensor->relySensors->relySensorArray[cnt].type && vsensorInfo->state == SENSOR_STATE_OPEN) { + temp = &(vsensor->relySensors->relySensorArray[cnt].param); + HILOG_INFO( + HILOG_MODULE_SEN, "close sensor:%d decision, vsensor:%d still running\n", type, vsensor->type); + } + } + + if (temp == NULL) { + continue; + } + + if (SensorParaIsClear(result)) { + SensorParaCopy(result, temp); + } else { + SensorPara cur = *result; + result->period = SENSOR_MIN(cur.period, temp->period); + if (result->period == 0) { + return SENSOR_ERROR; + } + result->batch = SENSOR_MIN(cur.batch * cur.period, temp->batch * temp->period) / result->period; + result->mode = SENSOR_MIN(cur.mode, temp->mode); + result->option = SensorOptionDecision(type, cur.option, temp->option); + } + } + + return SENSOR_OK; +} + +static int32_t VsensorTaskCloseRelyHsensor(VsensorTaskComm *component, enum SensorTypeTag type) +{ + VsensorTaskHlistener *hlistenerPool = component->hlistenersList; + + VsensorTaskHlistener *var = VsensorTaskFindHlistener(hlistenerPool, VSENSOR_TASK_HLISTENER_MAX_NUM, type); + if ((var == NULL) || (var->type == (enum SensorTypeTag)0)) { + HILOG_ERROR(HILOG_MODULE_SEN, "[VTASK]rely hlistenerInfo NULL! type:%d", type); + return SENSOR_TASK_LISTENER_FIND_NULL; + } + + int32_t ret = SensorCloseParaDecision(type, component, &(var->hlistener.openParam)); + if (ret != SENSOR_OK) { + return ret; + } + + if (!SensorParaIsClear(&(var->hlistener.openParam))) { + HILOG_INFO(HILOG_MODULE_SEN, + "[VTASK]do not close rely sensor:%d, decision para,period:%d, batch:%d, mode:%d, option:%d\n", + type, + var->hlistener.openParam.period, + var->hlistener.openParam.batch, + var->hlistener.openParam.mode, + var->hlistener.openParam.option); + ret = HsensorMgrOpenListener(&(var->hlistener)); + if (ret != SENSOR_OK) { + HILOG_ERROR(HILOG_MODULE_SEN, "[VTASK]hsensor:%d enable err %d!\n", type, ret); + return ret; + } + return SENSOR_OK; + } + + ret = HsensorMgrCloseListener(&(var->hlistener)); + if (ret != SENSOR_OK) { + HILOG_ERROR(HILOG_MODULE_SEN, "[VTASK]hsensor:%d close err!\n", type); + return ret; + } + + return SENSOR_OK; +} + +static int32_t VsensorTaskCloseRelySensors( + VsensorTaskComm *component, const RelySensorInfo *relySensors, uint8_t relyCnt) +{ + int32_t ret = SENSOR_OK; + + if ((relySensors == NULL) || (relyCnt <= 0)) { + HILOG_ERROR(HILOG_MODULE_SEN, "[RELY] rely sensor is NULL!\n"); + return SENSOR_OPEN_RELY_SENSORS_CHECK_NULL; + } + + for (uint8_t i = 0; i < relyCnt; i++) { + enum SensorTypeTag type = relySensors[i].type; + + if (!SensorUtilsSensorIsRegistered(type)) { + HILOG_ERROR(HILOG_MODULE_SEN, "[RELY] rely sensor:%d not registed!\n", type); + return SENSOR_TASK_RELY_SENSOR_NOT_REGISTERED; + } + + uint32_t taskId = SensorUtilsGetRegisteredTaskId(type); + bool isVsensor = SensorUtilsIsVSensor(type); + if (isVsensor == true) { + // 关闭虚拟sensor + SensorTmsg tmsgSend = {.id = SENSOR_TMSG_VSENSOR_RELY_CLOSE_EVENT, + .value = (uintptr_t)type, + .ts = 0, + .info = NULL, + .infoSize = 0}; + + ret = SensorTmsgSend(taskId, &tmsgSend); + if (ret != SENSOR_OK) { + HILOG_ERROR(HILOG_MODULE_SEN, "[UTIL] fa vsensor:%d send open msg FAIL!\r\n", type); + return ret; + } + } else { + /* 关闭物理sensor */ + ret = VsensorTaskCloseRelyHsensor(component, type); + if (ret != SENSOR_OK) { + return ret; + } + } + } + + return SENSOR_OK; +} + +static bool VsensorTaskSensorBeRelied(enum SensorTypeTag type, const RelySensorInfo *relySensors, uint8_t relyCnt) +{ + if ((relySensors == NULL) || (relyCnt <= 0)) { + return false; + } + + for (uint8_t i = 0; i < relyCnt; i++) { + if (relySensors[i].type == type) { + return true; + } + } + + return false; +} + +static int32_t VsensorTaskHlistenerRegEvent(VsensorTaskComm *component, enum SensorTypeTag type) +{ + HILOG_INFO(HILOG_MODULE_SEN, "[VTASK]type:%d Hlistener RegEvent ", type); + + VsensorTaskHlistener *var = + VsensorTaskRequestHlistener(component->hlistenersList, VSENSOR_TASK_HLISTENER_MAX_NUM, type); + if (var == NULL) { + HILOG_ERROR(HILOG_MODULE_SEN, "[VTASK]VsensorTaskHlistenerRegEvent find hlistener NULL! type:%d", type); + return SENSOR_TASK_LISTENER_FIND_NULL; + } + int32_t ret = VsensorTaskHlistenerInit(component, var, type); + if (ret != SENSOR_OK) { + HILOG_ERROR(HILOG_MODULE_SEN, "[VTASK]hlistener:%d init FAIL!\n", type); + return ret; + } + + ret = VsensorTaskHlistenerRegister(&(var->hlistener)); + if (ret != SENSOR_OK) { + HILOG_ERROR(HILOG_MODULE_SEN, "[VTASK]hlistener:%d reg FAIL!\n", type); + return ret; + } + return SENSOR_OK; +} + +static int32_t VsensorTaskVsensorRelyReg(VsensorTaskComm *component, enum SensorTypeTag type) +{ + CHECK_SENSOR_TYPE_ILLEGAL_RETURN_RET(type, SENSOR_TASK_HLISTENER_REG_TYPE_ERR); + if (SensorUtilsIsVSensor(type)) { + /* 依赖虚拟传感器,do nothing */ + HILOG_INFO(HILOG_MODULE_SEN, "[VTASK]type:%d IsVSensor do nothing", type); + return SENSOR_OK; + } + /* 依赖物理传感器 */ + int32_t ret = VsensorTaskHlistenerRegEvent(component, type); + if (ret != SENSOR_OK) { + return ret; + } + return SENSOR_OK; +} + +bool VsensorTaskVsensorIsRunning(const VsensorTaskInfo *vsensorInfo) +{ + if (vsensorInfo == NULL || vsensorInfo->vsensor == NULL) { + return false; + } + if (vsensorInfo->type == SENSOR_TYPE_NONE) { + return false; + } + if (vsensorInfo->state == SENSOR_STATE_OPEN) { + return true; + } + return false; +} + +void VsensorTaskCommInit(VsensorTaskComm *component) +{ + int32_t ret = VsensorTaskCheckCommComponents(component); + if (ret != SENSOR_OK) { + HILOG_ERROR(HILOG_MODULE_SEN, "[VTASK]init :component is NULL!\n"); + return; + } + + for (uint32_t i = 0; i < VSENSOR_TASK_HLISTENER_MAX_NUM; i++) { + ret = memset_s(&component->hlistenersList[i].hlistener, sizeof(HsensorListener), 0, sizeof(HsensorListener)); + if (ret != EOK) { + HILOG_WARN(HILOG_MODULE_SEN, "init :component memset_s hlistener failed!\n"); + } + SensorPara *openParam = &(component->hlistenersList[i].hlistener.openParam); + SensorParaClear(openParam); + } + return; +} + +int32_t VsensorTaskVsensorRegEvent(VsensorTaskComm *component, Vsensor *vsensor) +{ + int32_t ret = VsensorTaskCheckCommComponents(component); + SENSOR_CHECK_OK(ret); + CHECK_NULL_PTR_RETURN_VALUE(vsensor, SENSOR_VSENSOR_TASK_REG_VENSOR_NULL); + + HILOG_DEBUG(HILOG_MODULE_SEN, "[VTASK]vsensor:%d reg task:%d start", vsensor->type, component->taskId); + + ret = VsensorTaskVsensorReg(component, vsensor); + if (ret != SENSOR_OK) { + HILOG_ERROR(HILOG_MODULE_SEN, + "[VTASK]vsensor:%d reg task:%d FAIL!, ret:0x%04x", + vsensor->type, + component->taskId, + ret); + return ret; + } + + RelySensorsInfo *relySensors = vsensor->relySensors; + CHECK_NULL_PTR_RETURN_VALUE(relySensors, SENSOR_OPEN_RELY_SENSORS_CHECK_NULL); + HILOG_DEBUG( + HILOG_MODULE_SEN, "[VTASK]vsensor:%d relySensorCnt:%u", vsensor->type, relySensors->relySensorCnt); + for (uint8_t i = 0; i < relySensors->relySensorCnt; i++) { + enum SensorTypeTag type = relySensors->relySensorArray[i].type; + HILOG_DEBUG(HILOG_MODULE_SEN, "[VTASK]vsensor:%d relySensor :%u", vsensor->type, type); + ret = VsensorTaskVsensorRelyReg(component, type); + if (ret != SENSOR_OK) { + HILOG_ERROR(HILOG_MODULE_SEN, + "[VTASK]vsensor:%d rely sensor:%d FAIL!, ret:0x%04x\n", + vsensor->type, + type, + ret); + return ret; + } + } + HILOG_DEBUG(HILOG_MODULE_SEN, "[VTASK]vsensor:%d reg task:%d SUCCESS", vsensor->type, component->taskId); + return SENSOR_OK; +} + +int32_t VsensorTaskSensorDataUpdateEvent(VsensorTaskComm *component, VsensorProcessData *data) +{ + int32_t ret; + enum SensorTypeTag type; + Vsensor *vsensor = NULL; + VsensorTaskInfo *vsensorInfo = NULL; + + ret = VsensorTaskCheckCommComponents(component); + SENSOR_CHECK_OK(ret); + CHECK_NULL_PTR_RETURN_VALUE(data, SENSOR_TASK_HSDATA_UPDATE_DATA_NULL); + + type = data->sensor; + + for (uint32_t i = 0; i < VSENSOR_MAX_NUM; i++) { + vsensorInfo = &(component->vsensorInfo[i]); + vsensor = vsensorInfo->vsensor; + + /* 判断算法是否在运行 */ + if (!VsensorTaskVsensorIsRunning(vsensorInfo)) { + continue; + } + + /* 检查数据依赖 */ + if (!VsensorTaskSensorBeRelied(type, vsensor->relySensors->relySensorArray, + vsensor->relySensors->relySensorCnt)) { + continue; + } + + if (vsensor->process == NULL) { + HILOG_ERROR(HILOG_MODULE_SEN, "[VTASK]vsensor_process NULL! type:%d", vsensor->type); + return SENSOR_TASK_VSENSOR_PROCESS_NULL; + } + ret = vsensor->process(type, data->sensordata, data->timestamp, data->dataLen); + if (ret != SENSOR_OK) { + HILOG_ERROR(HILOG_MODULE_SEN, "[VTASK]alg:%d process err:%x\n", vsensorInfo->type, ret); + continue; + } + } + + return SENSOR_OK; +} + +static int32_t VsensorTaskVsensorOpenRely( + VsensorTaskComm *component, VsensorTaskInfo *vsensorInfo, SensorPara *para, uint32_t openType) +{ + /* 在前面的处理中,不可能出现空指针现象 */ + Vsensor *vsensor = vsensorInfo->vsensor; + if (vsensor == NULL) { + return SENSOR_TASK_VSENSOR_INFO_FIND_NULL; + } + + if (vsensor->open == NULL) { + HILOG_ERROR(HILOG_MODULE_SEN, "[VTASK]vsensor_open NULL! type:%d", vsensorInfo->type); + return SENSOR_TASK_VSENSOR_OPEN_NULL; + } + int32_t ret = vsensor->open(para); + if (ret != SENSOR_OK) { + return SENSOR_TASK_VSENSOR_OPEN_FAIL; + } + vsensorInfo->state = SENSOR_STATE_OPEN; + if (openType == APP_CTRL) { + SensorSetState(vsensor->type, SENSOR_STATE_OPEN); + if (para != NULL) { + SensorSetPara(vsensor->type, para); + } + } + + RelySensorsInfo *relySensors = vsensor->relySensors; + ret = VsensorTaskOpenRelySensors(component, relySensors->relySensorArray, relySensors->relySensorCnt); + if (ret != SENSOR_OK) { + HILOG_ERROR( + HILOG_MODULE_SEN, "[VTASK]vsensor:%d open rely sensor FAIL 0x%04x!\n", vsensorInfo->type, ret); + return ret; + } + HILOG_DEBUG( + HILOG_MODULE_SEN, "[VTASK]VsensorOpenRely type:%d openType:%u SUCESS", vsensorInfo->type, openType); + return SENSOR_OK; +} + +int32_t VsensorTaskVsensorOpenEvent( + VsensorTaskComm *component, enum SensorTypeTag type, SensorPara *para, uint32_t openType) +{ + HILOG_DEBUG(HILOG_MODULE_SEN, "[VTASK]OpenEvent type:%d openType:%u", type, openType); + int32_t ret = VsensorTaskCheckCommComponents(component); + SENSOR_CHECK_OK(ret); + + VsensorTaskInfo *vsensorInfo = VsensorTaskFindVsensorInfo(component->vsensorInfo, VSENSOR_MAX_NUM, type); + if (vsensorInfo == NULL) { + HILOG_ERROR(HILOG_MODULE_SEN, "[VTASK]open find vsensorInfo NULL! type:%d", type); + return SENSOR_TASK_VSENSOR_INFO_FIND_NULL; + } + + if (openType == APP_CTRL) { + vsensorInfo->relyedInfo.appOpenFlag = true; + } else { /* VSENSOR_CTRL */ + vsensorInfo->relyedInfo.relyedCnt++; + } + + if (vsensorInfo->state == SENSOR_STATE_OPEN) { + /* 已经开启vsensor,不再重复打开 */ + if (openType == APP_CTRL) { + /* APP_CTRL 将状态刷新为OPEN */ + Vsensor *vsensor = vsensorInfo->vsensor; + if (vsensor == NULL) { + return SENSOR_TASK_VSENSOR_INFO_FIND_NULL; + } + SensorSetState(vsensor->type, SENSOR_STATE_OPEN); + } + return SENSOR_OK; + } + + return VsensorTaskVsensorOpenRely(component, vsensorInfo, para, openType); +} + +int32_t VsensorTaskVsensorCloseEvent(VsensorTaskComm *component, enum SensorTypeTag type, uint32_t closeType) +{ + int32_t ret = VsensorTaskCheckCommComponents(component); + SENSOR_CHECK_OK(ret); + + VsensorTaskInfo *vsensorInfo = VsensorTaskFindVsensorInfo(component->vsensorInfo, VSENSOR_MAX_NUM, type); + if (vsensorInfo == NULL) { + HILOG_ERROR(HILOG_MODULE_SEN, "[VTASK]close find vsensorInfo NULL! type:%d", type); + return SENSOR_TASK_VSENSOR_INFO_FIND_NULL; + } + + if (closeType == APP_CTRL) { + vsensorInfo->relyedInfo.appOpenFlag = false; + } else { + vsensorInfo->relyedInfo.relyedCnt--; + } + + if (vsensorInfo->relyedInfo.relyedCnt > 0 || vsensorInfo->relyedInfo.appOpenFlag || + (vsensorInfo->state == SENSOR_STATE_CLOSE)) { + /* (1)用户控制开和其他算法依赖开,都不能关闭虚拟传感器;(2)已经关闭的情况下无需再关闭一次 */ + if (closeType == APP_CTRL) { // 关闭vsensor,但还存在依赖不能关闭,需将状态更新为close + SensorSetState(type, SENSOR_STATE_CLOSE); + } + return SENSOR_OK; + } + + /* 在前面的处理中,不可能出现空指针现象 */ + Vsensor *vsensor = vsensorInfo->vsensor; + if (vsensor == NULL) { + return SENSOR_TASK_VSENSOR_INFO_FIND_NULL; + } + + if (vsensor->close == NULL) { + HILOG_ERROR(HILOG_MODULE_SEN, "[VTASK]vsensor_close NULL! type:%d", type); + return SENSOR_TASK_VSENSOR_CLOSE_NULL; + } + ret = vsensor->close(); + if (ret != SENSOR_OK) { + return SENSOR_TASK_VSENSOR_CLOSE_FAIL; + } + vsensorInfo->state = SENSOR_STATE_CLOSE; + if (closeType == APP_CTRL) { + SensorSetState(vsensor->type, SENSOR_STATE_CLOSE); + } + + RelySensorsInfo *relySensors = vsensor->relySensors; + ret = VsensorTaskCloseRelySensors(component, relySensors->relySensorArray, relySensors->relySensorCnt); + if (ret != SENSOR_OK) { + HILOG_ERROR(HILOG_MODULE_SEN, "[VTASK]vsensor:%d close rely sensor FAIL!, ret:0x%04x\n", type, ret); + return ret; + } + + return SENSOR_OK; +} diff --git a/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/vsensormgr_service/src/vsensor_task_mgr.c b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/vsensormgr_service/src/vsensor_task_mgr.c new file mode 100644 index 000000000..7f5b31973 --- /dev/null +++ b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/vsensormgr_service/src/vsensor_task_mgr.c @@ -0,0 +1,42 @@ +/* + * Copyright (c) CompanyNameMagicTag. 2025-2025. All rights reserved. + * Description: vsensor task mgr impl + * Author: Media Software Group + * Create: 2025-06-06 + */ + +#include "vsensor_task_mgr.h" +#include "vsensor_task_class.h" +#include "sensor_common.h" +#include "sensor_log.h" +#include "sensor_tmsg.h" + +/* 任务初始化 */ +int32_t VsensorTaskMgrInit(uint32_t taskId) +{ + VsensorTaskClass* aclassMotion = VsensorTaskClassInit(taskId, "VSENSOR_", NULL, NULL, 0); + if (aclassMotion == NULL) { + HILOG_ERROR(HILOG_MODULE_SEN, "extern alg task create ERR!\n"); + return SENSOR_ERROR; + } + + return SENSOR_OK; +} + +/* 任务销毁 */ +void VsensorTaskMgrDeInit(uint32_t taskId) +{ + VsensorTaskClass* vSensorClass = VsensorTaskClassGetByTaskid(taskId); + VsensorTaskClassDestruct(vSensorClass); +} + +/* 任务消息处理函数入口 */ +int32_t VsensorTaskMgrMsgProcess(uint32_t taskId, const SensorTmsg *tmsg) +{ + VsensorTaskClass* vSensorClass = VsensorTaskClassGetByTaskid(taskId); + if (vSensorClass == NULL) { + return SENSOR_VSENSOR_TASK_CLASS_NULL; + } + + return VsensorTaskClassMsgProcess(vSensorClass, tmsg); +} diff --git a/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/vsensormgr_service/src/vsensormgr_service.c b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/vsensormgr_service/src/vsensormgr_service.c new file mode 100644 index 000000000..fba17825e --- /dev/null +++ b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensor_mgr/src/vsensormgr_service/src/vsensormgr_service.c @@ -0,0 +1,262 @@ +/* + * Copyright (c) CompanyNameMagicTag. 2025-2025. All rights reserved. + * Description: vsensor mgr service + * Author: Media Software Group + * Create: 2025-06-06 + */ + +#include "vsensormgr_service.h" +#include "securec.h" +#include "sensor_log.h" +#include "sensor_utils.h" +#include "sensor_memory.h" +#include "sensor_common.h" +#include "sensor_task.h" +#include "sensor_tmsg.h" +#include "sensor_para_decision.h" + +typedef struct { + struct osal_list_head list; + const Vsensor *vsensor; +} VsensorInfo; + +typedef struct { + struct osal_list_head vsensorHead; + uint32_t vsensorNum; + bool inited; +} VsensorMgr; + +static VsensorMgr g_vsensormgr = {0}; + +VsensorMgr *VsensorMgrGetInstance(void) +{ + return &g_vsensormgr; +} + +int32_t VsensorMgrInit(void) +{ + VsensorMgr *vsensorMgr = VsensorMgrGetInstance(); + if (vsensorMgr->inited) { + return SENSOR_OK; + } + OSAL_INIT_LIST_HEAD(&(vsensorMgr->vsensorHead)); + vsensorMgr->vsensorNum = 0; + + int32_t ret = SensorTaskInit(); + if (ret != SENSOR_OK) { + HILOG_ERROR(HILOG_MODULE_SEN, "SensorTask fail.\n"); + return SENSOR_ERROR; + } + vsensorMgr->inited = true; + HILOG_INFO(HILOG_MODULE_SEN, "VsensorMgrInit OK."); + return SENSOR_OK; +} + +static int32_t NotifyVsensorTaskRegVsensor(const Vsensor *vsensor, int32_t taskId) +{ + SensorTmsg tmsgSend = { + .id = SENSOR_TMSG_VSENSOR_REG_EVENT, .value = (uintptr_t)vsensor, .ts = 0, .info = NULL, .infoSize = 0}; + return SensorTmsgSend(taskId, &tmsgSend); +} + +static const Vsensor *VsensorMgrFindVsensor(enum SensorTypeTag type) +{ + VsensorMgr *vsensorMgr = VsensorMgrGetInstance(); + + HILOG_DEBUG(HILOG_MODULE_SEN, "vsensorNum:%u", vsensorMgr->vsensorNum); + VsensorInfo *vsensorIndex = NULL; + osal_list_for_each_entry(vsensorIndex, &vsensorMgr->vsensorHead, list) + { + HILOG_DEBUG(HILOG_MODULE_SEN, "vsensor type:%d", vsensorIndex->vsensor->type); + if (vsensorIndex->vsensor->type == type) { + return vsensorIndex->vsensor; + } + } + return NULL; +} + +static int32_t VsensorMgrSensorOpen(const Sensor *sensor, const SensorPara *openPara) +{ + const Vsensor *vsensor = VsensorMgrFindVsensor(sensor->sensorInfo.type); + CHECK_NULL_PTR_RETURN_VALUE(vsensor, SENSOR_ERROR); + uint32_t taskId = SensorUtilsGetRegisteredTaskId(sensor->sensorInfo.type); + if (taskId == SENSOR_TASK_MAX_CNT) { + HILOG_ERROR(HILOG_MODULE_SEN, "[SYS] not found taskId type:%d", vsensor->type); + return SENSOR_ERROR; + } + /* 传递para 计算实际需要的存储空间 */ + uint32_t dataSize = (uint32_t)(sizeof(SensorPara)); + SensorPara *paraTemp = (SensorPara *)SensorMalloc(dataSize); + if (paraTemp == NULL) { + HILOG_ERROR(HILOG_MODULE_SEN, "cannot malloc for sensor:%d data!, taskId:%d", sensor->sensorInfo.type, taskId); + return SENSOR_ERROR; + } + + SensorParaCopy(paraTemp, openPara); + + SensorTmsg tmsgSend = {.id = SENSOR_TMSG_VSENSOR_OPEN_EVENT, + .value = (uintptr_t)sensor->sensorInfo.type, + .ts = 0, + .info = paraTemp, + .infoSize = dataSize}; + HILOG_INFO(HILOG_MODULE_SEN, "Open vsensor type: %d name: %s taskId:%u ", vsensor->type, vsensor->name, taskId); + return SensorTmsgSend(taskId, &tmsgSend); +} + +static int32_t VsensorMgrSensorClose(const Sensor *sensor) +{ + const Vsensor *vsensor = VsensorMgrFindVsensor(sensor->sensorInfo.type); + CHECK_NULL_PTR_RETURN_VALUE(vsensor, SENSOR_ERROR); + uint32_t taskId = SensorUtilsGetRegisteredTaskId(sensor->sensorInfo.type); + if (taskId == SENSOR_TASK_MAX_CNT) { + HILOG_ERROR(HILOG_MODULE_SEN, "[SYS] not found taskId type:%d", vsensor->type); + return SENSOR_ERROR; + } + SensorTmsg tmsgSend = { + .id = SENSOR_TMSG_VSENSOR_CLOSE_EVENT, .value = (uintptr_t)vsensor->type, .ts = 0, .info = NULL, .infoSize = 0}; + HILOG_INFO(HILOG_MODULE_SEN, "close vsensor type: %d name: %s taskId:%u ", vsensor->type, vsensor->name, taskId); + return SensorTmsgSend(taskId, &tmsgSend); +} + +static int32_t VsensorMgrSensorSetBatch(Sensor *sensor, int64_t samplingInterval, int64_t reportInterval) +{ + HILOG_WARN(HILOG_MODULE_SEN, "unsupport"); + return SENSOR_VSENSOR_NOT_SUPPORT; +} + +static int32_t VsensorMgrSensorSetMode(Sensor *sensor, int32_t mode) +{ + HILOG_WARN(HILOG_MODULE_SEN, "unsupport"); + return SENSOR_VSENSOR_NOT_SUPPORT; +} + +static int32_t VsensorMgrSensorSetOption(Sensor *sensor, uint32_t option) +{ + HILOG_WARN(HILOG_MODULE_SEN, "unsupport"); + return SENSOR_VSENSOR_NOT_SUPPORT; +} + +static int32_t VsensorMgrSensorRegisterResultCallback(const Sensor *sensor, RecordDataCallback cb) +{ + const Vsensor *vsensor = VsensorMgrFindVsensor(sensor->sensorInfo.type); + CHECK_NULL_PTR_RETURN_VALUE(vsensor, SENSOR_ERROR); + return vsensor->registDataCb(cb); +} + +static int32_t VsensorMgrSensorUnregisterResultCallback(const Sensor *sensor, RecordDataCallback cb) +{ + const Vsensor *vsensor = VsensorMgrFindVsensor(sensor->sensorInfo.type); + CHECK_NULL_PTR_RETURN_VALUE(vsensor, SENSOR_ERROR); + return vsensor->unRegistDataCb(cb); +} + +static int32_t VsensorMgrSensorCalibrate(const Sensor *sensor, void *para, uint32_t len) +{ + HILOG_WARN(HILOG_MODULE_SEN, "unsupport"); + return SENSOR_VSENSOR_NOT_SUPPORT; +} + +static int32_t VsensorMgrSensorSelfTest(const Sensor *sensor, void *para, uint32_t len) +{ + HILOG_WARN(HILOG_MODULE_SEN, "unsupport"); + return SENSOR_VSENSOR_NOT_SUPPORT; +} + +static int32_t VsensorMgrSensorIoctl(const Sensor *sensor, SensorIoctlCmd cmd, void *data, uint32_t len) +{ + if (cmd >= SENSOR_IOCTL_MAX || cmd < SENSOR_IOCTL_SET_PARA) { + HILOG_ERROR(HILOG_MODULE_SEN, "invalid command!"); + return SENSOR_ERROR; + } + const Vsensor *vsensor = VsensorMgrFindVsensor(sensor->sensorInfo.type); + if (vsensor->ioctl == NULL) { + HILOG_ERROR(HILOG_MODULE_SEN, "invalid ioctl function!"); + return SENSOR_ERROR; + } + return vsensor->ioctl(cmd, data, len); +} + +static int32_t VsensorTaskRegister(const Vsensor *vsensor) +{ + int32_t ret = SensorTaskCreateVsensorTask(vsensor); + if (ret != SENSOR_OK) { + HILOG_ERROR(HILOG_MODULE_SEN, "vsensor type %d name %s CreateVsensorTask fail", vsensor->type, vsensor->name); + return SENSOR_ERROR; + } + uint32_t taskId = SensorUtilsGetRegisteredTaskId(vsensor->type); + if (taskId == SENSOR_TASK_MAX_CNT) { + SensorTaskDestroyVsensorTask(vsensor->type); + HILOG_ERROR(HILOG_MODULE_SEN, "[SYS] not found taskId type:%d", vsensor->type); + return SENSOR_ERROR; + } + SensorUtilsRegisterVsensorType(vsensor->type); + + HILOG_DEBUG(HILOG_MODULE_SEN, "vsensor type:%d taskId:%u", vsensor->type, taskId); + ret = NotifyVsensorTaskRegVsensor(vsensor, taskId); + if (ret != SENSOR_OK) { + SensorTaskDestroyVsensorTask(vsensor->type); + HILOG_ERROR(HILOG_MODULE_SEN, "[SYS] NotifyVsensorTaskRegVsensor failed type:%d ret:%d", vsensor->type, ret); + return SENSOR_ERROR; + } + return SENSOR_OK; +} + +static int32_t VsensorMgrSensorRegisterProc(const Vsensor *vsensor) +{ + Sensor *sensor = SensorUtilsRequestSensor(vsensor->type); + if (sensor == NULL || sensor->sensorInfo.state != SENSOR_STATE_IDLE) { + HILOG_ERROR(HILOG_MODULE_SEN, "sensor type %d name %s request fail.", vsensor->type, vsensor->name); + return SENSOR_ERROR; + } + sensor->sensorInfo.type = vsensor->type; + sensor->sensorInfo.name = vsensor->name; + SensorParaDefaultInit(&sensor->sensorInfo.openPara); + sensor->open = VsensorMgrSensorOpen; + sensor->close = VsensorMgrSensorClose; + sensor->setBatch = VsensorMgrSensorSetBatch; + sensor->setMode = VsensorMgrSensorSetMode; + sensor->setOption = VsensorMgrSensorSetOption; + sensor->registerResultCallback = VsensorMgrSensorRegisterResultCallback; + sensor->unregisterResultCallback = VsensorMgrSensorUnregisterResultCallback; + sensor->calibrate = VsensorMgrSensorCalibrate; + sensor->selfTest = VsensorMgrSensorSelfTest; + sensor->ioctl = VsensorMgrSensorIoctl; + HILOG_INFO(HILOG_MODULE_SEN, "register vsensor type:%d name:%s ", sensor->sensorInfo.type, sensor->sensorInfo.name); + return SENSOR_OK; +} + +int32_t VsensorMgrRegister(const Vsensor *vsensor) +{ + VsensorMgr *vsensorMgr = VsensorMgrGetInstance(); + if (!vsensorMgr->inited && (VsensorMgrInit() != SENSOR_OK)) { + HILOG_ERROR(HILOG_MODULE_SEN, "vsensorMgr inited failed."); + return SENSOR_ERROR; + } + int32_t ret = VsensorTaskRegister(vsensor); + if (ret != SENSOR_OK) { + HILOG_ERROR(HILOG_MODULE_SEN, "[SYS] VsensorPostRegist failed type:%d", vsensor->type); + return SENSOR_ERROR; + } + ret = SensorUtilsAddVsensorList(vsensor->type); + if (ret != SENSOR_OK) { + HILOG_ERROR( + HILOG_MODULE_SEN, "vsensor type %d name %s SensorUtilsAddSensorList fail", vsensor->type, vsensor->name); + return SENSOR_ERROR; + } + ret = VsensorMgrSensorRegisterProc(vsensor); + if (ret != SENSOR_OK) { + HILOG_ERROR(HILOG_MODULE_SEN, + "vsensor type %d name %s VsensorMgrSensorRegisterProc fail", + vsensor->type, + vsensor->name); + return SENSOR_ERROR; + } + VsensorInfo *vsensorInfo = SensorMalloc(sizeof(VsensorInfo)); + CHECK_NULL_PTR_RETURN_VALUE(vsensorInfo, SENSOR_ERROR); + OSAL_INIT_LIST_HEAD(&(vsensorInfo->list)); + vsensorInfo->vsensor = vsensor; + osal_list_add(&vsensorInfo->list, &vsensorMgr->vsensorHead); + vsensorMgr->vsensorNum++; + HILOG_INFO(HILOG_MODULE_SEN, "register vsensor type %d name %s success.", vsensor->type, vsensor->name); + return SENSOR_OK; +} \ No newline at end of file diff --git a/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensors/hsensor/acc_simulator/CMakeLists.txt b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensors/hsensor/acc_simulator/CMakeLists.txt new file mode 100644 index 000000000..3dae158f3 --- /dev/null +++ b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensors/hsensor/acc_simulator/CMakeLists.txt @@ -0,0 +1,57 @@ +set(COMPONENT_NAME "sensor_hdi_acc_simulator") +set(MODULE_NAME "ohos") +set(AUTO_DEF_FILE_ID TRUE) + +set(PUBLIC_HEADER +) + +set(PRIVATE_HEADER + ${ROOT_DIR}/application/wearable/ohos_deps + ${CMAKE_CURRENT_SOURCE_DIR}/../../../../interfaces/include + ${CMAKE_CURRENT_SOURCE_DIR}/../../../sensor_mgr/include +) + +set(SOURCES + ${CMAKE_CURRENT_SOURCE_DIR}/acc_simulator.c +) + +set(COMPONENT_PUBLIC_CCFLAGS +) + +set(COMPONENT_CCFLAGS + -Wno-error + -Wno-unused-parameter + -fno-exceptions + -fno-unwind-tables + -fno-asynchronous-unwind-tables + -Wno-undef + -Wno-bitwise-op-parentheses + -Wno-shift-op-parentheses + -nostdlibinc + -nostdinc + -nostdlib + -Wno-error=unused-function +) + + +set(WHOLE_LINK + true +) + +set(MAIN_COMPONENT + false +) + +set(AUTO_ADD_PATH + false +) + +set(PUBLIC_DEFINES +) + +set(CDEFINES ${CDEFINES} "CMSIS_SUPPORT") +set(PRIVATE_DEFINES + ${CDEFINES} +) + +build_component() diff --git a/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensors/hsensor/acc_simulator/acc_simulator.c b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensors/hsensor/acc_simulator/acc_simulator.c new file mode 100644 index 000000000..f808e37a4 --- /dev/null +++ b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensors/hsensor/acc_simulator/acc_simulator.c @@ -0,0 +1,148 @@ +/* + * Copyright (c) CompanyNameMagicTag. 2025-2025. All rights reserved. + * Description: accel simu + * Author: Media Software Group + * Create: 2025-06-06 + */ + +#include "sensor_typedef.h" +#include "sensor_log.h" +#include "sensor_common.h" +#include "securec.h" +#include "sensor_manager.h" +#include "ohos_init.h" + +#define ACCEL_MAX_BATCH_COUNT 10 + +static int32_t AccSimuInit(void); +static int32_t AccSimuDeinit(void); +static int32_t AccSimuOpen(SensorPara *para); +static int32_t AccSimuClose(void); +static int32_t AccSimuRead(uint8_t *data, uint32_t len); +static int32_t AccSimuIoctl(SensorIoctlCmd cmd, void *data, uint32_t len); + +const static Hsensor g_accSimuHsensor = { + .type = SENSOR_TYPE_ACCELEROMETER, + .name = "ACCEL_SIMU", + .caps.sampleElementlen = sizeof(struct AccelData), + .caps.maxBatchCount = ACCEL_MAX_BATCH_COUNT, + .privateData = NULL, + .privateDataLen = 0, + .init = AccSimuInit, + .deinit = AccSimuDeinit, + .open = AccSimuOpen, + .close = AccSimuClose, + .read = AccSimuRead, + .ioctl = AccSimuIoctl +}; + +static struct AccelData g_accSimuData = { + .axisX = 8, + .axisY = 9, + .axisZ = 10 +}; + +static struct AccelData g_accSimuStoreData[ACCEL_MAX_BATCH_COUNT] = {0}; +static uint32_t g_accSimuBacthCnt = 1; +static uint32_t g_accSimuTimeStamp = 0; + +static void AccSimuAddStoreData() +{ + uint32_t top = g_accSimuBacthCnt == ACCEL_MAX_BATCH_COUNT ? ACCEL_MAX_BATCH_COUNT - 1 : g_accSimuBacthCnt; + if (g_accSimuBacthCnt != ACCEL_MAX_BATCH_COUNT) { + g_accSimuBacthCnt++; + } + for (uint32_t i = top; i > 0; i--) { + g_accSimuStoreData[i].axisX = g_accSimuStoreData[i - 1].axisX; + g_accSimuStoreData[i].axisY = g_accSimuStoreData[i - 1].axisY; + g_accSimuStoreData[i].axisZ = g_accSimuStoreData[i - 1].axisZ; + } + g_accSimuStoreData[0].axisX = g_accSimuData.axisX++; + g_accSimuStoreData[0].axisY = g_accSimuData.axisY++; + g_accSimuStoreData[0].axisZ = g_accSimuData.axisZ++; + HILOG_INFO(HILOG_MODULE_SEN, + "AccSimuRead dataX:%d, dataY:%d, dataZ:%d", + g_accSimuData.axisX, + g_accSimuData.axisY, + g_accSimuData.axisZ); +} + +static int32_t AccSimuInit(void) +{ + HILOG_INFO(HILOG_MODULE_SEN, "AccSimuInit!"); + return SENSOR_OK; +} + +static int32_t AccSimuDeinit(void) +{ + HILOG_INFO(HILOG_MODULE_SEN, "AccSimuDeinit!"); + return SENSOR_OK; +} + +static int32_t AccSimuOpen(SensorPara *para) +{ + HILOG_INFO(HILOG_MODULE_SEN, "AccSimuOpen!"); + return SENSOR_OK; +} + +static int32_t AccSimuClose(void) +{ + HILOG_INFO(HILOG_MODULE_SEN, "AccSimuClose!"); + g_accSimuData.axisX = 0; + g_accSimuData.axisY = 0; + g_accSimuData.axisZ = 0; + return SENSOR_OK; +} + +static int32_t AccSimuRead(uint8_t *data, uint32_t len) +{ + AccSimuAddStoreData(); + g_accSimuTimeStamp += 1; + CHECK_NULL_PTR_RETURN_VALUE(data, SENSOR_ERROR); + int32_t readLen = sizeof(struct AccelData); + int32_t ret = memcpy_s(data, len, &g_accSimuData, readLen); + if (ret != EOK) { + HILOG_ERROR(HILOG_MODULE_SEN, "memcpy_s err"); + return -1; + } + g_accSimuData.axisX++; + g_accSimuData.axisY++; + g_accSimuData.axisZ++; + return readLen; +} + +static int32_t AccSimuGetData(SensorData *sensorData) +{ + sensorData->data = g_accSimuStoreData; + size_t len = sizeof(struct AccelData); + sensorData->dataLen = (uint32_t)len; + sensorData->batchCnt = g_accSimuBacthCnt; + sensorData->timestamp = g_accSimuTimeStamp; + return SENSOR_OK; +} + +static int32_t AccSimuIoctl(SensorIoctlCmd cmd, void *data, uint32_t len) +{ + HILOG_INFO(HILOG_MODULE_SEN, "AccSimuIoctl!"); + switch (cmd) { + case SENSOR_IOCTL_GET_SENSOR_DATA: + AccSimuGetData((SensorData *)data); + break; + default: + return SENSOR_ERROR; + } + return SENSOR_OK; +} + +static void AccSimuHsensorRigister(void) +{ + HILOG_INFO(HILOG_MODULE_SEN, "RegistHsensor type:%d !", g_accSimuHsensor.type); + int32_t ret = SensorMgrRegistHsensor(&g_accSimuHsensor); + if (ret != SENSOR_OK) { + HILOG_ERROR(HILOG_MODULE_SEN, "RegistHsensor type:%d ERR!", g_accSimuHsensor.type); + return; + } + HILOG_INFO(HILOG_MODULE_SEN, "RegistHsensor type:%d SUCCESS!", g_accSimuHsensor.type); +} + +APP_FEATURE_INIT_PRI(AccSimuHsensorRigister, 3); diff --git a/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensors/hsensor/barometer/CMakeLists.txt b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensors/hsensor/barometer/CMakeLists.txt new file mode 100644 index 000000000..a03889de3 --- /dev/null +++ b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensors/hsensor/barometer/CMakeLists.txt @@ -0,0 +1,57 @@ +set(COMPONENT_NAME "sensor_hdi_barometer") +set(MODULE_NAME "ohos") +set(AUTO_DEF_FILE_ID TRUE) + +set(PUBLIC_HEADER +) + +set(PRIVATE_HEADER + ${ROOT_DIR}/application/wearable/ohos_deps + ${CMAKE_CURRENT_SOURCE_DIR}/../../../../interfaces/include + ${CMAKE_CURRENT_SOURCE_DIR}/../../../sensor_mgr/include +) + +set(SOURCES + ${CMAKE_CURRENT_SOURCE_DIR}/barometer.c +) + +set(COMPONENT_PUBLIC_CCFLAGS +) + +set(COMPONENT_CCFLAGS + -Wno-error + -Wno-unused-parameter + -fno-exceptions + -fno-unwind-tables + -fno-asynchronous-unwind-tables + -Wno-undef + -Wno-bitwise-op-parentheses + -Wno-shift-op-parentheses + -nostdlibinc + -nostdinc + -nostdlib + -Wno-error=unused-function +) + + +set(WHOLE_LINK + true +) + +set(MAIN_COMPONENT + false +) + +set(AUTO_ADD_PATH + false +) + +set(PUBLIC_DEFINES +) + +set(CDEFINES ${CDEFINES} "CMSIS_SUPPORT") +set(PRIVATE_DEFINES + ${CDEFINES} +) + +build_component() diff --git a/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensors/hsensor/barometer/barometer.c b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensors/hsensor/barometer/barometer.c new file mode 100644 index 000000000..0ccdddbc9 --- /dev/null +++ b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensors/hsensor/barometer/barometer.c @@ -0,0 +1,105 @@ +/* + * Copyright (c) CompanyNameMagicTag. 2025-2025. All rights reserved. + * Description: baroMeter simu + * Author: Media Software Group + * Create: 2025-09-25 + */ + +#include "sensor_typedef.h" +#include "sensor_log.h" +#include "sensor_common.h" +#include "securec.h" +#include "sensor_manager.h" +#include "ohos_init.h" + +#define MAX_BATCH_COUNT 10 + +static int32_t BaroMeterInit(void); +static int32_t BaroMeterDeInit(void); +static int32_t BaroMeterOpen(SensorPara *para); +static int32_t BaroMeterClose(void); +static int32_t BaroMeterRead(uint8_t *data, uint32_t len); +static int32_t BaroMeterIoctl(SensorIoctlCmd cmd, void *data, uint32_t len); + +const static Hsensor g_baroMeterHsensor = { + .type = SENSOR_TYPE_BAROMETER, + .name = "BARO_METER", + .caps.sampleElementlen = sizeof(struct PressureData), + .caps.maxBatchCount = MAX_BATCH_COUNT, + .privateData = NULL, + .privateDataLen = 0, + .init = BaroMeterInit, + .deinit = BaroMeterDeInit, + .open = BaroMeterOpen, + .close = BaroMeterClose, + .read = BaroMeterRead, + .ioctl = BaroMeterIoctl +}; + +static struct PressureData g_baroMeterData = { + .pressure = 8, + .temperature = 9, + .dataValid = 0 +}; + +static int32_t BaroMeterInit(void) +{ + HILOG_INFO(HILOG_MODULE_SEN, "BaroMeterInit!"); + g_baroMeterData.dataValid = 1; + return SENSOR_OK; +} + +static int32_t BaroMeterDeInit(void) +{ + HILOG_INFO(HILOG_MODULE_SEN, "BaroMeterDeInit!"); + return SENSOR_OK; +} + +static int32_t BaroMeterOpen(SensorPara *para) +{ + HILOG_INFO(HILOG_MODULE_SEN, "BaroMeterOpen!"); + return SENSOR_OK; +} + +static int32_t BaroMeterClose(void) +{ + g_baroMeterData.pressure = 0; + g_baroMeterData.temperature = 0; + g_baroMeterData.dataValid = 0; + HILOG_INFO(HILOG_MODULE_SEN, "BaroMeterClose!"); + return SENSOR_OK; +} + +static int32_t BaroMeterRead(uint8_t *data, uint32_t len) +{ + HILOG_INFO(HILOG_MODULE_SEN, "BaroMeterRead"); + CHECK_NULL_PTR_RETURN_VALUE(data, SENSOR_ERROR); + int32_t readLen = sizeof(struct PressureData); + int32_t ret = memcpy_s(data, len, &g_baroMeterData, readLen); + if (ret != EOK) { + HILOG_ERROR(HILOG_MODULE_SEN, "memcpy_s err"); + return -1; + } + g_baroMeterData.pressure++; + g_baroMeterData.temperature++; + return readLen; +} + +static int32_t BaroMeterIoctl(SensorIoctlCmd cmd, void *data, uint32_t len) +{ + HILOG_INFO(HILOG_MODULE_SEN, "BaroMeterIoctl!"); + return SENSOR_OK; +} + +static void BaroMeterHsensorRigister(void) +{ + HILOG_INFO(HILOG_MODULE_SEN, "RegistHsensor type:%d !", g_baroMeterHsensor.type); + int32_t ret = SensorMgrRegistHsensor(&g_baroMeterHsensor); + if (ret != SENSOR_OK) { + HILOG_ERROR(HILOG_MODULE_SEN, "RegistHsensor type:%d ERR!", g_baroMeterHsensor.type); + return; + } + HILOG_INFO(HILOG_MODULE_SEN, "RegistHsensor type:%d SUCCESS!", g_baroMeterHsensor.type); +} + +APP_FEATURE_INIT_PRI(BaroMeterHsensorRigister, 3); diff --git a/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensors/hsensor/gyroscope/CMakeLists.txt b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensors/hsensor/gyroscope/CMakeLists.txt new file mode 100644 index 000000000..d893a1bbb --- /dev/null +++ b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensors/hsensor/gyroscope/CMakeLists.txt @@ -0,0 +1,57 @@ +set(COMPONENT_NAME "sensor_hdi_gyroscope") +set(MODULE_NAME "ohos") +set(AUTO_DEF_FILE_ID TRUE) + +set(PUBLIC_HEADER +) + +set(PRIVATE_HEADER + ${ROOT_DIR}/application/wearable/ohos_deps + ${CMAKE_CURRENT_SOURCE_DIR}/../../../../interfaces/include + ${CMAKE_CURRENT_SOURCE_DIR}/../../../sensor_mgr/include +) + +set(SOURCES + ${CMAKE_CURRENT_SOURCE_DIR}/gyroscope.c +) + +set(COMPONENT_PUBLIC_CCFLAGS +) + +set(COMPONENT_CCFLAGS + -Wno-error + -Wno-unused-parameter + -fno-exceptions + -fno-unwind-tables + -fno-asynchronous-unwind-tables + -Wno-undef + -Wno-bitwise-op-parentheses + -Wno-shift-op-parentheses + -nostdlibinc + -nostdinc + -nostdlib + -Wno-error=unused-function +) + + +set(WHOLE_LINK + true +) + +set(MAIN_COMPONENT + false +) + +set(AUTO_ADD_PATH + false +) + +set(PUBLIC_DEFINES +) + +set(CDEFINES ${CDEFINES} "CMSIS_SUPPORT") +set(PRIVATE_DEFINES + ${CDEFINES} +) + +build_component() diff --git a/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensors/hsensor/gyroscope/gyroscope.c b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensors/hsensor/gyroscope/gyroscope.c new file mode 100644 index 000000000..b8845d413 --- /dev/null +++ b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensors/hsensor/gyroscope/gyroscope.c @@ -0,0 +1,105 @@ +/* + * Copyright (c) CompanyNameMagicTag. 2025-2025. All rights reserved. + * Description: gyroScope simu + * Author: Media Software Group + * Create: 2025-09-25 + */ + +#include "sensor_typedef.h" +#include "sensor_log.h" +#include "sensor_common.h" +#include "securec.h" +#include "sensor_manager.h" +#include "ohos_init.h" + +#define ACCEL_MAX_BATCH_COUNT 10 + +static int32_t GyroScopeInit(void); +static int32_t GyroScopeDeinit(void); +static int32_t GyroScopeOpen(SensorPara *para); +static int32_t GyroScopeClose(void); +static int32_t GyroScopeRead(uint8_t *data, uint32_t len); +static int32_t GyroScopeIoctl(SensorIoctlCmd cmd, void *data, uint32_t len); + +const static Hsensor g_gyroScopeHsensor = { + .type = SENSOR_TYPE_GYROSCOPE, + .name = "GYRO_SCOPE", + .caps.sampleElementlen = sizeof(struct GyroData), + .caps.maxBatchCount = ACCEL_MAX_BATCH_COUNT, + .privateData = NULL, + .privateDataLen = 0, + .init = GyroScopeInit, + .deinit = GyroScopeDeinit, + .open = GyroScopeOpen, + .close = GyroScopeClose, + .read = GyroScopeRead, + .ioctl = GyroScopeIoctl +}; + +static struct GyroData g_gyroScopeData = { + .axisX = 8, + .axisY = 9, + .axisZ = 10 +}; + +static int32_t GyroScopeInit(void) +{ + HILOG_INFO(HILOG_MODULE_SEN, "GyroScopeInit!"); + return SENSOR_OK; +} + +static int32_t GyroScopeDeinit(void) +{ + HILOG_INFO(HILOG_MODULE_SEN, "GyroScopeDeinit!"); + return SENSOR_OK; +} + +static int32_t GyroScopeOpen(SensorPara *para) +{ + HILOG_INFO(HILOG_MODULE_SEN, "GyroScopeOpen!"); + return SENSOR_OK; +} + +static int32_t GyroScopeClose(void) +{ + g_gyroScopeData.axisX = 0; + g_gyroScopeData.axisY = 0; + g_gyroScopeData.axisZ = 0; + HILOG_INFO(HILOG_MODULE_SEN, "GyroScopeClose!"); + return SENSOR_OK; +} + +static int32_t GyroScopeRead(uint8_t *data, uint32_t len) +{ + HILOG_INFO(HILOG_MODULE_SEN, "GyroScopeRead"); + CHECK_NULL_PTR_RETURN_VALUE(data, SENSOR_ERROR); + int32_t readLen = sizeof(struct GyroData); + int32_t ret = memcpy_s(data, len, &g_gyroScopeData, readLen); + if (ret != EOK) { + HILOG_ERROR(HILOG_MODULE_SEN, "memcpy_s err"); + return -1; + } + g_gyroScopeData.axisX++; + g_gyroScopeData.axisY++; + g_gyroScopeData.axisZ++; + return readLen; +} + +static int32_t GyroScopeIoctl(SensorIoctlCmd cmd, void *data, uint32_t len) +{ + HILOG_INFO(HILOG_MODULE_SEN, "GyroScopeIoctl!"); + return SENSOR_OK; +} + +static void GyroScopeHsensorRigister(void) +{ + HILOG_INFO(HILOG_MODULE_SEN, "RegistHsensor type:%d !", g_gyroScopeHsensor.type); + int32_t ret = SensorMgrRegistHsensor(&g_gyroScopeHsensor); + if (ret != SENSOR_OK) { + HILOG_ERROR(HILOG_MODULE_SEN, "RegistHsensor type:%d ERR!", g_gyroScopeHsensor.type); + return; + } + HILOG_INFO(HILOG_MODULE_SEN, "RegistHsensor type:%d SUCCESS!", g_gyroScopeHsensor.type); +} + +APP_FEATURE_INIT_PRI(GyroScopeHsensorRigister, 3); diff --git a/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensors/hsensor/heart_rate_counter/CMakeLists.txt b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensors/hsensor/heart_rate_counter/CMakeLists.txt new file mode 100644 index 000000000..1a16ec5a1 --- /dev/null +++ b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensors/hsensor/heart_rate_counter/CMakeLists.txt @@ -0,0 +1,57 @@ +set(COMPONENT_NAME "sensor_hdi_hr_counter") +set(MODULE_NAME "ohos") +set(AUTO_DEF_FILE_ID TRUE) + +set(PUBLIC_HEADER +) + +set(PRIVATE_HEADER + ${ROOT_DIR}/application/wearable/ohos_deps + ${CMAKE_CURRENT_SOURCE_DIR}/../../../../interfaces/include + ${CMAKE_CURRENT_SOURCE_DIR}/../../../sensor_mgr/include +) + +set(SOURCES + ${CMAKE_CURRENT_SOURCE_DIR}/heart_rate_counter.c +) + +set(COMPONENT_PUBLIC_CCFLAGS +) + +set(COMPONENT_CCFLAGS + -Wno-error + -Wno-unused-parameter + -fno-exceptions + -fno-unwind-tables + -fno-asynchronous-unwind-tables + -Wno-undef + -Wno-bitwise-op-parentheses + -Wno-shift-op-parentheses + -nostdlibinc + -nostdinc + -nostdlib + -Wno-error=unused-function +) + + +set(WHOLE_LINK + true +) + +set(MAIN_COMPONENT + false +) + +set(AUTO_ADD_PATH + false +) + +set(PUBLIC_DEFINES +) + +set(CDEFINES ${CDEFINES} "CMSIS_SUPPORT") +set(PRIVATE_DEFINES + ${CDEFINES} +) + +build_component() diff --git a/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensors/hsensor/heart_rate_counter/heart_rate_counter.c b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensors/hsensor/heart_rate_counter/heart_rate_counter.c new file mode 100644 index 000000000..8455206d7 --- /dev/null +++ b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensors/hsensor/heart_rate_counter/heart_rate_counter.c @@ -0,0 +1,99 @@ +/* + * Copyright (c) CompanyNameMagicTag. 2025-2025. All rights reserved. + * Description: heart rate simu + * Author: Media Software Group + * Create: 2025-09-25 + */ + +#include "sensor_typedef.h" +#include "sensor_log.h" +#include "sensor_common.h" +#include "securec.h" +#include "sensor_manager.h" +#include "ohos_init.h" + +#define MAX_BATCH_COUNT 10 +#define DEFAULT_HEART_RATE 80 + +static int32_t HeartRateInit(void); +static int32_t HeartRateDeinit(void); +static int32_t HeartRateOpen(SensorPara *para); +static int32_t HeartRateClose(void); +static int32_t HeartRateRead(uint8_t *data, uint32_t len); +static int32_t HeartRateIoctl(SensorIoctlCmd cmd, void *data, uint32_t len); + +const static Hsensor g_heartRateHsensor = { + .type = SENSOR_TYPE_HEART_RATE, + .name = "HEART_RATE", + .caps.sampleElementlen = sizeof(int32_t), + .caps.maxBatchCount = MAX_BATCH_COUNT, + .privateData = NULL, + .privateDataLen = 0, + .init = HeartRateInit, + .deinit = HeartRateDeinit, + .open = HeartRateOpen, + .close = HeartRateClose, + .read = HeartRateRead, + .ioctl = HeartRateIoctl +}; + +static int32_t g_heartRate = 0; + +static int32_t HeartRateInit(void) +{ + HILOG_INFO(HILOG_MODULE_SEN, "HeartRateInit!"); + return SENSOR_OK; +} + +static int32_t HeartRateDeinit(void) +{ + HILOG_INFO(HILOG_MODULE_SEN, "HeartRateDeinit!"); + return SENSOR_OK; +} + +static int32_t HeartRateOpen(SensorPara *para) +{ + HILOG_INFO(HILOG_MODULE_SEN, "HeartRateOpen!"); + g_heartRate = DEFAULT_HEART_RATE; + return SENSOR_OK; +} + +static int32_t HeartRateClose(void) +{ + HILOG_INFO(HILOG_MODULE_SEN, "HeartRateClose!"); + g_heartRate = 0; + return SENSOR_OK; +} + +static int32_t HeartRateRead(uint8_t *data, uint32_t len) +{ + HILOG_INFO(HILOG_MODULE_SEN, "HeartRateRead"); + CHECK_NULL_PTR_RETURN_VALUE(data, SENSOR_ERROR); + int32_t readLen = sizeof(int32_t); + int32_t ret = memcpy_s(data, len, &g_heartRate, readLen); + if (ret != EOK) { + HILOG_ERROR(HILOG_MODULE_SEN, "memcpy_s err"); + return -1; + } + g_heartRate++; + return readLen; +} + +static int32_t HeartRateIoctl(SensorIoctlCmd cmd, void *data, uint32_t len) +{ + HILOG_INFO(HILOG_MODULE_SEN, "HeartRateIoctl!"); + return SENSOR_OK; +} + +static void HeartRateHsensorRigister(void) +{ + HILOG_INFO(HILOG_MODULE_SEN, "RegistHsensor type:%d !", g_heartRateHsensor.type); + int32_t ret = SensorMgrRegistHsensor(&g_heartRateHsensor); + if (ret != SENSOR_OK) { + HILOG_ERROR(HILOG_MODULE_SEN, "RegistHsensor type:%d ERR!", g_heartRateHsensor.type); + return; + } + HILOG_INFO(HILOG_MODULE_SEN, "RegistHsensor type:%d SUCCESS!", g_heartRateHsensor.type); +} + +APP_FEATURE_INIT_PRI(HeartRateHsensorRigister, 3); diff --git a/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensors/hsensor/pedometer/CMakeLists.txt b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensors/hsensor/pedometer/CMakeLists.txt new file mode 100644 index 000000000..338fd9fa6 --- /dev/null +++ b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensors/hsensor/pedometer/CMakeLists.txt @@ -0,0 +1,57 @@ +set(COMPONENT_NAME "sensor_hdi_pedometer") +set(MODULE_NAME "ohos") +set(AUTO_DEF_FILE_ID TRUE) + +set(PUBLIC_HEADER +) + +set(PRIVATE_HEADER + ${ROOT_DIR}/application/wearable/ohos_deps + ${CMAKE_CURRENT_SOURCE_DIR}/../../../../interfaces/include + ${CMAKE_CURRENT_SOURCE_DIR}/../../../sensor_mgr/include +) + +set(SOURCES + ${CMAKE_CURRENT_SOURCE_DIR}/pedometer.c +) + +set(COMPONENT_PUBLIC_CCFLAGS +) + +set(COMPONENT_CCFLAGS + -Wno-error + -Wno-unused-parameter + -fno-exceptions + -fno-unwind-tables + -fno-asynchronous-unwind-tables + -Wno-undef + -Wno-bitwise-op-parentheses + -Wno-shift-op-parentheses + -nostdlibinc + -nostdinc + -nostdlib + -Wno-error=unused-function +) + + +set(WHOLE_LINK + true +) + +set(MAIN_COMPONENT + false +) + +set(AUTO_ADD_PATH + false +) + +set(PUBLIC_DEFINES +) + +set(CDEFINES ${CDEFINES} "CMSIS_SUPPORT") +set(PRIVATE_DEFINES + ${CDEFINES} +) + +build_component() diff --git a/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensors/hsensor/pedometer/pedometer.c b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensors/hsensor/pedometer/pedometer.c new file mode 100644 index 000000000..927aa329a --- /dev/null +++ b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensors/hsensor/pedometer/pedometer.c @@ -0,0 +1,97 @@ +/* + * Copyright (c) CompanyNameMagicTag. 2025-2025. All rights reserved. + * Description: pedometer simu + * Author: Media Software Group + * Create: 2025-09-25 + */ + +#include "sensor_typedef.h" +#include "sensor_log.h" +#include "sensor_common.h" +#include "securec.h" +#include "sensor_manager.h" +#include "ohos_init.h" + +#define ACCEL_MAX_BATCH_COUNT 10 + +static int32_t PedoMeterInit(void); +static int32_t PedoMeterDeinit(void); +static int32_t PedoMeterOpen(SensorPara *para); +static int32_t PedoMeterClose(void); +static int32_t PedoMeterRead(uint8_t *data, uint32_t len); +static int32_t PedoMeterIoctl(SensorIoctlCmd cmd, void *data, uint32_t len); + +const static Hsensor g_pedoMeterHsensor = { + .type = SENSOR_TYPE_PEDOMETER, + .name = "PEDO_METER", + .caps.sampleElementlen = sizeof(int32_t), + .caps.maxBatchCount = ACCEL_MAX_BATCH_COUNT, + .privateData = NULL, + .privateDataLen = 0, + .init = PedoMeterInit, + .deinit = PedoMeterDeinit, + .open = PedoMeterOpen, + .close = PedoMeterClose, + .read = PedoMeterRead, + .ioctl = PedoMeterIoctl +}; + +static int32_t g_pedoMeterData = 0; + +static int32_t PedoMeterInit(void) +{ + HILOG_INFO(HILOG_MODULE_SEN, "PedoMeterInit!"); + return SENSOR_OK; +} + +static int32_t PedoMeterDeinit(void) +{ + HILOG_INFO(HILOG_MODULE_SEN, "PedoMeterDeinit!"); + return SENSOR_OK; +} + +static int32_t PedoMeterOpen(SensorPara *para) +{ + HILOG_INFO(HILOG_MODULE_SEN, "PedoMeterOpen!"); + return SENSOR_OK; +} + +static int32_t PedoMeterClose(void) +{ + g_pedoMeterData = 0; + HILOG_INFO(HILOG_MODULE_SEN, "PedoMeterClose!"); + return SENSOR_OK; +} + +static int32_t PedoMeterRead(uint8_t *data, uint32_t len) +{ + HILOG_INFO(HILOG_MODULE_SEN, "PedoMeterRead"); + CHECK_NULL_PTR_RETURN_VALUE(data, SENSOR_ERROR); + int32_t readLen = sizeof(int32_t); + int32_t ret = memcpy_s(data, len, &g_pedoMeterData, readLen); + if (ret != EOK) { + HILOG_ERROR(HILOG_MODULE_SEN, "memcpy_s err"); + return -1; + } + g_pedoMeterData++; + return readLen; +} + +static int32_t PedoMeterIoctl(SensorIoctlCmd cmd, void *data, uint32_t len) +{ + HILOG_INFO(HILOG_MODULE_SEN, "PedoMeterIoctl!"); + return SENSOR_OK; +} + +static void PedoMeterHsensorRigister(void) +{ + HILOG_INFO(HILOG_MODULE_SEN, "RegistHsensor type:%d !", g_pedoMeterHsensor.type); + int32_t ret = SensorMgrRegistHsensor(&g_pedoMeterHsensor); + if (ret != SENSOR_OK) { + HILOG_ERROR(HILOG_MODULE_SEN, "RegistHsensor type:%d ERR!", g_pedoMeterHsensor.type); + return; + } + HILOG_INFO(HILOG_MODULE_SEN, "RegistHsensor type:%d SUCCESS!", g_pedoMeterHsensor.type); +} + +APP_FEATURE_INIT_PRI(PedoMeterHsensorRigister, 3); diff --git a/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensors/hsensor/wear_detection/CMakeLists.txt b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensors/hsensor/wear_detection/CMakeLists.txt new file mode 100644 index 000000000..0e356bc62 --- /dev/null +++ b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensors/hsensor/wear_detection/CMakeLists.txt @@ -0,0 +1,57 @@ +set(COMPONENT_NAME "sensor_hdi_wear_detection") +set(MODULE_NAME "ohos") +set(AUTO_DEF_FILE_ID TRUE) + +set(PUBLIC_HEADER +) + +set(PRIVATE_HEADER + ${ROOT_DIR}/application/wearable/ohos_deps + ${CMAKE_CURRENT_SOURCE_DIR}/../../../../interfaces/include + ${CMAKE_CURRENT_SOURCE_DIR}/../../../sensor_mgr/include +) + +set(SOURCES + ${CMAKE_CURRENT_SOURCE_DIR}/wear_detection.c +) + +set(COMPONENT_PUBLIC_CCFLAGS +) + +set(COMPONENT_CCFLAGS + -Wno-error + -Wno-unused-parameter + -fno-exceptions + -fno-unwind-tables + -fno-asynchronous-unwind-tables + -Wno-undef + -Wno-bitwise-op-parentheses + -Wno-shift-op-parentheses + -nostdlibinc + -nostdinc + -nostdlib + -Wno-error=unused-function +) + + +set(WHOLE_LINK + true +) + +set(MAIN_COMPONENT + false +) + +set(AUTO_ADD_PATH + false +) + +set(PUBLIC_DEFINES +) + +set(CDEFINES ${CDEFINES} "CMSIS_SUPPORT") +set(PRIVATE_DEFINES + ${CDEFINES} +) + +build_component() diff --git a/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensors/hsensor/wear_detection/wear_detection.c b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensors/hsensor/wear_detection/wear_detection.c new file mode 100644 index 000000000..5d734d02c --- /dev/null +++ b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensors/hsensor/wear_detection/wear_detection.c @@ -0,0 +1,97 @@ +/* + * Copyright (c) CompanyNameMagicTag. 2025-2025. All rights reserved. + * Description: wear detection simu + * Author: Media Software Group + * Create: 2025-09-25 + */ + +#include "sensor_typedef.h" +#include "sensor_log.h" +#include "sensor_common.h" +#include "securec.h" +#include "sensor_manager.h" +#include "ohos_init.h" + +#define ACCEL_MAX_BATCH_COUNT 10 + +static int32_t WearDetectionInit(void); +static int32_t WearDetectionDeinit(void); +static int32_t WearDetectionOpen(SensorPara *para); +static int32_t WearDetectionClose(void); +static int32_t WearDetectionRead(uint8_t *data, uint32_t len); +static int32_t WearDetectionIoctl(SensorIoctlCmd cmd, void *data, uint32_t len); + +const static Hsensor g_wearDetectionHsensor = { + .type = SENSOR_TYPE_WEAR_DETECTION, + .name = "WEAR_DETECTION", + .caps.sampleElementlen = sizeof(bool), + .caps.maxBatchCount = ACCEL_MAX_BATCH_COUNT, + .privateData = NULL, + .privateDataLen = 0, + .init = WearDetectionInit, + .deinit = WearDetectionDeinit, + .open = WearDetectionOpen, + .close = WearDetectionClose, + .read = WearDetectionRead, + .ioctl = WearDetectionIoctl +}; + +static bool g_wearStatus = false; + +static int32_t WearDetectionInit(void) +{ + HILOG_INFO(HILOG_MODULE_SEN, "WearDetectionInit!"); + return SENSOR_OK; +} + +static int32_t WearDetectionDeinit(void) +{ + HILOG_INFO(HILOG_MODULE_SEN, "WearDetectionDeinit!"); + return SENSOR_OK; +} + +static int32_t WearDetectionOpen(SensorPara *para) +{ + HILOG_INFO(HILOG_MODULE_SEN, "WearDetectionOpen!"); + g_wearStatus = true; + return SENSOR_OK; +} + +static int32_t WearDetectionClose(void) +{ + HILOG_INFO(HILOG_MODULE_SEN, "WearDetectionClose!"); + g_wearStatus = false; + return SENSOR_OK; +} + +static int32_t WearDetectionRead(uint8_t *data, uint32_t len) +{ + HILOG_INFO(HILOG_MODULE_SEN, "WearDetectionRead"); + CHECK_NULL_PTR_RETURN_VALUE(data, SENSOR_ERROR); + int32_t readLen = sizeof(bool); + int32_t ret = memcpy_s(data, len, &g_wearStatus, readLen); + if (ret != EOK) { + HILOG_ERROR(HILOG_MODULE_SEN, "memcpy_s err"); + return -1; + } + return readLen; +} + +static int32_t WearDetectionIoctl(SensorIoctlCmd cmd, void *data, uint32_t len) +{ + HILOG_INFO(HILOG_MODULE_SEN, "WearDetectionIoctl!"); + return SENSOR_OK; +} + +static void WearDetectionHsensorRigister(void) +{ + HILOG_INFO(HILOG_MODULE_SEN, "RegistHsensor type:%d !", g_wearDetectionHsensor.type); + int32_t ret = SensorMgrRegistHsensor(&g_wearDetectionHsensor); + if (ret != SENSOR_OK) { + HILOG_ERROR(HILOG_MODULE_SEN, "RegistHsensor type:%d ERR!", g_wearDetectionHsensor.type); + return; + } + HILOG_INFO(HILOG_MODULE_SEN, "RegistHsensor type:%d SUCCESS!", g_wearDetectionHsensor.type); +} + +APP_FEATURE_INIT_PRI(WearDetectionHsensorRigister, 3); diff --git a/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensors/vsensor/acc_alg_simulator/CMakeLists.txt b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensors/vsensor/acc_alg_simulator/CMakeLists.txt new file mode 100644 index 000000000..0c00c49e5 --- /dev/null +++ b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensors/vsensor/acc_alg_simulator/CMakeLists.txt @@ -0,0 +1,58 @@ +set(COMPONENT_NAME "sensor_hdi_acc_alg_simulator") +set(MODULE_NAME "ohos") +set(AUTO_DEF_FILE_ID TRUE) + +set(PUBLIC_HEADER +) + +set(PRIVATE_HEADER + ${ROOT_DIR}/application/wearable/ohos_deps + ${CMAKE_CURRENT_SOURCE_DIR}/../../../../interfaces/include + ${CMAKE_CURRENT_SOURCE_DIR}/../../../sensor_mgr/include + ${CMAKE_CURRENT_SOURCE_DIR}/../common/include +) + +set(SOURCES + ${CMAKE_CURRENT_SOURCE_DIR}/acc_alg_simulator.c +) + +set(COMPONENT_PUBLIC_CCFLAGS +) + +set(COMPONENT_CCFLAGS + -Wno-error + -Wno-unused-parameter + -fno-exceptions + -fno-unwind-tables + -fno-asynchronous-unwind-tables + -Wno-undef + -Wno-bitwise-op-parentheses + -Wno-shift-op-parentheses + -nostdlibinc + -nostdinc + -nostdlib + -Wno-error=unused-function +) + + +set(WHOLE_LINK + true +) + +set(MAIN_COMPONENT + false +) + +set(AUTO_ADD_PATH + false +) + +set(PUBLIC_DEFINES +) + +set(CDEFINES ${CDEFINES} "CMSIS_SUPPORT") +set(PRIVATE_DEFINES + ${CDEFINES} +) + +build_component() diff --git a/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensors/vsensor/acc_alg_simulator/acc_alg_simulator.c b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensors/vsensor/acc_alg_simulator/acc_alg_simulator.c new file mode 100644 index 000000000..9fd2b75ba --- /dev/null +++ b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensors/vsensor/acc_alg_simulator/acc_alg_simulator.c @@ -0,0 +1,227 @@ +/* + * Copyright (c) CompanyNameMagicTag. 2025-2025. All rights reserved. + * Description: accel vsensor simu + * Author: Media Software Group + * Create: 2025-06-06 + */ + +#include "sensor_common.h" +#include "vsensor_common.h" +#include "securec.h" +#include "sensor_manager.h" +#include "sensor_log.h" +#include "ohos_init.h" + +#define ACC_ALG_PERIOD_MS 100 // ms +#define ACC_ALG_BATCH_COUNT 5 + +#define ACC_ALG_OFFSET 10 + +static int32_t AccAlgSimuDataCbRegister(RecordDataCallback cb); +static int32_t AccAlgSimuDataCbUnRegister(RecordDataCallback cb); +static int32_t AccAlgSimuOpen(SensorPara *para); +static int32_t AccAlgSimuClose(void); +static int32_t AccAlgSimuProcess(enum SensorTypeTag type, uint8_t *data, uint64_t ts, uint32_t len); +static int32_t AccAlgSimuIoctl(SensorIoctlCmd cmd, void *data, uint32_t len); +static int32_t AccAlgSimuGetData(SensorData *sensorData); + +typedef struct { + struct osal_list_head dataCbListHead; /* DataCallbackInfo head */ + uint32_t dataCbNum; + uint32_t batchCount; + uint32_t timeStamp; + struct AccelData accAlgSimuData[ACC_ALG_BATCH_COUNT]; +} AccAlgSimuContext; + +const RelySensorInfo g_accAlgSimuRelySensor[] = { + { + .type = SENSOR_TYPE_ACCELEROMETER, + .param = { + .period = ACC_ALG_PERIOD_MS, + .batch = ACC_ALG_BATCH_COUNT, + .mode = SENSOR_MODE_REALTIME, + .option = 0 + } + } +}; + +const RelySensorsInfo g_accAlgSimuRelySensors = { + .relySensorArray = (RelySensorInfo*)g_accAlgSimuRelySensor, + .relySensorCnt = sizeof(g_accAlgSimuRelySensor) / sizeof(RelySensorInfo) +}; + +const static Vsensor g_accAlgSimuVsensor = { + .type = SENSOR_TYPE_VSENSOR_ACCELEROMETER_ALG_SIMU, + .name = "ACCEL_ALG_SIMU", + .privateData = NULL, + .privateDataLen = 0, + .relySensors = (RelySensorsInfo*)&g_accAlgSimuRelySensors, + .registDataCb = AccAlgSimuDataCbRegister, + .unRegistDataCb = AccAlgSimuDataCbUnRegister, + .open = AccAlgSimuOpen, + .close = AccAlgSimuClose, + .process = AccAlgSimuProcess, + .ioctl = AccAlgSimuIoctl, +}; + +AccAlgSimuContext g_accAlgSimuCtx = { + .dataCbNum = 0, + .batchCount = 0, + .timeStamp = 0, + .accAlgSimuData = {0}, +}; + +struct AccelData g_storeAccData[ACC_ALG_BATCH_COUNT] = {0}; +static uint32_t g_storeBatchCnt = 1; +static uint32_t g_storeTimeStamp = 0; +static int32_t AccAlgSimuDataCbRegister(RecordDataCallback cb) +{ + HILOG_INFO(HILOG_MODULE_SEN, "IN"); + if (g_accAlgSimuCtx.dataCbNum == 0) { + OSAL_INIT_LIST_HEAD(&(g_accAlgSimuCtx.dataCbListHead)); + } + DataCallbackInfo *dataCallbackInfoIndex = NULL; + osal_list_for_each_entry(dataCallbackInfoIndex, &g_accAlgSimuCtx.dataCbListHead, list) + { + if (cb == dataCallbackInfoIndex->dataCb) { + HILOG_INFO(HILOG_MODULE_SEN, "cb :%p is Registed"); + return SENSOR_OK; + } + } + DataCallbackInfo *dataCallbackInfo = (DataCallbackInfo *)malloc(sizeof(DataCallbackInfo)); + if (dataCallbackInfo == NULL) { + HILOG_ERROR(HILOG_MODULE_SEN, "malloc DataCallbackInfo failed!"); + return SENSOR_ERROR; + } + OSAL_INIT_LIST_HEAD(&(dataCallbackInfo->list)); + dataCallbackInfo->dataCb = cb; + osal_list_add(&dataCallbackInfo->list, &g_accAlgSimuCtx.dataCbListHead); + g_accAlgSimuCtx.dataCbNum++; + return SENSOR_OK; +} + +static int32_t AccAlgSimuDataCbUnRegister(RecordDataCallback cb) +{ + HILOG_INFO(HILOG_MODULE_SEN, "IN"); + DataCallbackInfo *dataCallbackInfoIndex = NULL; + DataCallbackInfo *dataCallbackInfo = NULL; + osal_list_for_each_entry(dataCallbackInfoIndex, &g_accAlgSimuCtx.dataCbListHead, list) + { + if (cb == dataCallbackInfoIndex->dataCb) { + dataCallbackInfo = dataCallbackInfoIndex; + HILOG_INFO(HILOG_MODULE_SEN, "cb is Registed"); + break; + } + } + if (dataCallbackInfo == NULL) { + HILOG_ERROR(HILOG_MODULE_SEN, "DataCallback not Registed!"); + return SENSOR_ERROR; + } + osal_list_del(&dataCallbackInfo->list); + free(dataCallbackInfo); + g_accAlgSimuCtx.dataCbNum--; + return SENSOR_OK; +} + + +static int32_t AccAlgSimuOpen(SensorPara *para) +{ + HILOG_INFO(HILOG_MODULE_SEN, "IN"); + return SENSOR_OK; +} + +static int32_t AccAlgSimuClose(void) +{ + HILOG_INFO(HILOG_MODULE_SEN, "IN"); + for (uint32_t i = 0; i < ACC_ALG_BATCH_COUNT; i++) { + g_accAlgSimuCtx.accAlgSimuData[i].axisX = 0; + g_accAlgSimuCtx.accAlgSimuData[i].axisY = 0; + g_accAlgSimuCtx.accAlgSimuData[i].axisZ = 0; + } + return SENSOR_OK; +} + +static int32_t AccAlgSimuProcess(enum SensorTypeTag type, uint8_t *data, uint64_t ts, uint32_t len) +{ + HILOG_DEBUG(HILOG_MODULE_SEN, "Acc ALG Process ts :%llu len:%u!", ts, len); + uint32_t accelDataLen = sizeof(struct AccelData); + struct AccelData *orgAccelData = (struct AccelData*)data; + if (orgAccelData == NULL || (len % sizeof(struct AccelData)) != 0) { + HILOG_INFO(HILOG_MODULE_SEN, "Acc ALG Process :%llu invalid data!", ts); + return -1; + } + uint32_t batchCount = len / accelDataLen; + if (batchCount > ACC_ALG_BATCH_COUNT) { + HILOG_INFO(HILOG_MODULE_SEN, "Acc ALG Process :%llu invalid batchCount:%u!", ts, batchCount); + return -1; + } + for (uint32_t i = 0; i < batchCount; i++) { + g_accAlgSimuCtx.accAlgSimuData[i].axisX = orgAccelData[i].axisX + ACC_ALG_OFFSET; + g_accAlgSimuCtx.accAlgSimuData[i].axisY = orgAccelData[i].axisY + ACC_ALG_OFFSET; + g_accAlgSimuCtx.accAlgSimuData[i].axisZ = orgAccelData[i].axisZ + ACC_ALG_OFFSET; + g_storeAccData[i].axisX = orgAccelData[i].axisX + ACC_ALG_OFFSET; + g_storeAccData[i].axisY = orgAccelData[i].axisY + ACC_ALG_OFFSET; + g_storeAccData[i].axisZ = orgAccelData[i].axisZ + ACC_ALG_OFFSET; + } + g_accAlgSimuCtx.batchCount = batchCount; + g_accAlgSimuCtx.timeStamp = ts; + g_storeTimeStamp = g_accAlgSimuCtx.timeStamp; + g_storeBatchCnt = g_accAlgSimuCtx.batchCount; + DataCallbackInfo *dataCallbackInfoIndex = NULL; + osal_list_for_each_entry(dataCallbackInfoIndex, &g_accAlgSimuCtx.dataCbListHead, list) + { + struct SensorEvents sensorEvent = { + .sensorId = type, + .version = 0, + .timestamp = ts, + .option = 0, + .mode = 0, + .data = (uint8_t *)g_accAlgSimuCtx.accAlgSimuData, + .dataLen = len, + }; + dataCallbackInfoIndex->dataCb(&sensorEvent); + } + return SENSOR_OK; +} + +static int32_t AccAlgSimuIoctl(SensorIoctlCmd cmd, void *data, uint32_t len) +{ + HILOG_INFO(HILOG_MODULE_SEN, "AccAlgSimuIoctl!"); + switch (cmd) { + case SENSOR_IOCTL_GET_SENSOR_DATA: + AccAlgSimuGetData((SensorData *)data); + break; + default: + return SENSOR_ERROR; + } + return SENSOR_OK; +} + +static int32_t AccAlgSimuGetData(SensorData *sensorData) +{ + HILOG_INFO(HILOG_MODULE_SEN, "AccAlgSimuGetData!"); + sensorData->data = (uint8_t *)(g_storeAccData); + size_t len = sizeof(struct AccelData); + sensorData->dataLen = (uint32_t)len; + sensorData->batchCnt = g_storeBatchCnt; + sensorData->timestamp = g_storeTimeStamp; + HILOG_INFO(HILOG_MODULE_SEN, + "SensorData datalen:%u batchcnt:%u timestamp:%lld", + sensorData->dataLen, + sensorData->batchCnt, + sensorData->timestamp); + return SENSOR_OK; +} + +static void AccAlgSimuVsensorRegister(void) +{ + HILOG_INFO(HILOG_MODULE_SEN, "RegistVsensor type:%d in !", g_accAlgSimuVsensor.type); + int32_t ret = SensorMgrRegistVsensor(&g_accAlgSimuVsensor); + if (ret != SENSOR_OK) { + HILOG_ERROR(HILOG_MODULE_SEN, "RegistHsensor type:%d ERR!", g_accAlgSimuVsensor.type); + return; + } + HILOG_INFO(HILOG_MODULE_SEN, "RegistVsensor type:%d SUCCESS!", g_accAlgSimuVsensor.type); +} + +APP_FEATURE_INIT_PRI(AccAlgSimuVsensorRegister, 4); diff --git a/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensors/vsensor/common/include/vsensor_common.h b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensors/vsensor/common/include/vsensor_common.h new file mode 100644 index 000000000..38889bed3 --- /dev/null +++ b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/hal_lite/sensors/vsensor/common/include/vsensor_common.h @@ -0,0 +1,21 @@ +/* + * Copyright (c) CompanyNameMagicTag. 2025-2025. All rights reserved. + * Description: vsensor common + * Author: Media Software Group + * Create: 2025-06-06 + */ + +#ifndef HDI_V_SENSOR_COMMON_H +#define HDI_V_SENSOR_COMMON_H + +#include +#include "sensor_typedef.h" +#include "sensor_log.h" +#include "soc_osal.h" + +typedef struct { + struct osal_list_head list; /* link point */ + RecordDataCallback dataCb; +} DataCallbackInfo; + +#endif /* HDI_V_SENSOR_COMMON_H */ diff --git a/code/sdk/open_source/openharmony/drivers/peripheral/sensor/interfaces/include/sensor_if.h b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/interfaces/include/sensor_if.h index f08e962fd..18b637e3a 100644 --- a/code/sdk/open_source/openharmony/drivers/peripheral/sensor/interfaces/include/sensor_if.h +++ b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/interfaces/include/sensor_if.h @@ -82,7 +82,7 @@ struct SensorInterface { * @since 2.2 * @version 1.0 */ - int32_t (*Enable)(int32_t sensorTypeId); + int32_t (*Enable)(int32_t sensorId); /** * @brief Disables an enabled sensor. @@ -93,7 +93,7 @@ struct SensorInterface { * @since 2.2 * @version 1.0 */ - int32_t (*Disable)(int32_t sensorTypeId); + int32_t (*Disable)(int32_t sensorId); /** * @brief Sets the data sampling interval and data reporting interval for the specified sensor. @@ -106,7 +106,7 @@ struct SensorInterface { * @since 2.2 * @version 1.0 */ - int32_t (*SetBatch)(int32_t sensorTypeId, int64_t samplingInterval, int64_t reportInterval); + int32_t (*SetBatch)(int32_t sensorId, int64_t samplingInterval, int64_t reportInterval); /** * @brief Sets the data reporting mode for the specified sensor. @@ -119,7 +119,7 @@ struct SensorInterface { * @since 2.2 * @version 1.0 */ - int32_t (*SetMode)(int32_t sensorTypeId, int32_t mode); + int32_t (*SetMode)(int32_t sensorId, int32_t mode); /** * @brief Sets options for the specified sensor, including its measurement range and accuracy. @@ -131,11 +131,16 @@ struct SensorInterface { * @since 2.2 * @version 1.0 */ - int32_t (*SetOption)(int32_t sensorTypeId, uint32_t option); + int32_t (*SetOption)(int32_t sensorId, uint32_t option); /** * @brief Registers the callback for reporting sensor data to the subscriber. * + * @param sensorTypeId Indicates the sensor group ID. + * The sensorId enumeration value range is 128-160, which means that the medical sensor service is subscribed. + * It only needs to be subscribed once successfully, and there is no need to subscribe repeatedly. + * The sensorId enumeration value range is not within 128-160, which means that the traditional sensor + * is subscribed, and the subscription is successful once. * @param cb Indicates the callback to register. For details, see {@link RecordDataCallback}. * @return Returns 0 if the callback is successfully registered; returns a negative value otherwise. * @@ -147,12 +152,56 @@ struct SensorInterface { /** * @brief Deregisters the callback for reporting sensor data. * + * @param sensorTypeId Indicates the sensor group ID. + * The sensorId enumeration value range is 128-160, which means that the medical sensor service is subscribed. + * It only needs to cancel the subscription once successfully, and there is no need to + * cancel the subscription repeatedly. The sensorId enumeration value range is not within 128-160, + * which means that the traditional sensor is subscribed. You can cancel the subscription once successfully. + * @param cb Indicates the callback to register. For details, see {@link RecordDataCallback}. * @return Returns 0 if the callback is successfully deregistered; returns a negative value otherwise. * * @since 2.2 * @version 1.0 */ int32_t (*Unregister)(int32_t sensorTypeId, RecordDataCallback cb); + + /** + * @brief Obtain the sensor event data in the small system. + * + * @param sensorId Indicates the sensor ID. For details, see {@link SensorTypeTag}. + * @param event Indicates the vector of the sensor event data in the system. + * The sensor event data includes the sensor ID, sensor algorithm version, data generation time, + * data options (such as the measurement range and accuracy), data reporting mode, data address, and data length. + * For details, see {@link HdfSensorEvents}. + * @return Returns 0 if the event data is obtained; returns a negative value otherwise. + * + * @since 2.2 + * @version 1.0 + */ + int32_t (*ReadData)(int32_t sensorId, struct SensorEvents *event); + + /** + * @brief Obtain sensor information for SDC + * + * @param sdcSensorInfo Indicates the data of the SDC type. + * @return Returns 0 if the event data is obtained; returns a negative value otherwise. + * + * @since 4.1 + * @version 2.0 + */ + int32_t (*GetSdcSensorInfo)(struct SdcSensorInfo sdcSensorInfo[]); + // ohos-hisi begin + /** + * @brief Get the data of the specified sensor stored. + * + * @param sensorTypeId Indicates the ID of a sensor type. For details, see {@link SensorTypeId}. + * @param sensorData Indicates the data of sensor stored For details, see {@link SensorData}. + * @return Returns 0 if get sensor data successfully; returns a non-zero value otherwise. + * + * @since 5 + */ + int32_t (*GetSensorData)(int32_t sensorTypeId, SensorData *sensorData); + // ohos-hisi end }; /** diff --git a/code/sdk/open_source/openharmony/drivers/peripheral/sensor/interfaces/include/sensor_type.h b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/interfaces/include/sensor_type.h index f256d22fc..1e4571320 100644 --- a/code/sdk/open_source/openharmony/drivers/peripheral/sensor/interfaces/include/sensor_type.h +++ b/code/sdk/open_source/openharmony/drivers/peripheral/sensor/interfaces/include/sensor_type.h @@ -48,7 +48,12 @@ extern "C" { #endif #endif /* __cplusplus */ -#define SENSOR_NAME_MAX_LEN 16 /**< Maximum length of the sensor name */ +// ohos-hisi begin +// avoid redefined for SENSOR_NAME_MAX_LEN by liteos_m +#ifndef SENSOR_NAME_MAX_LEN +#define SENSOR_NAME_MAX_LEN 32 /**< Maximum length of the sensor name */ +#endif /* SENSOR_NAME_MAX_LEN */ +// ohos-hisi end #define SENSOR_VERSION_MAX_LEN 16 /**< Maximum length of the sensor version */ /** @@ -85,6 +90,13 @@ enum SensorTypeTag { SENSOR_TYPE_GESTURE = 11, /**< Gesture sensor */ SENSOR_TYPE_PROXIMITY = 12, /**< Proximity sensor */ SENSOR_TYPE_HUMIDITY = 13, /**< Humidity sensor */ + SENSOR_TYPE_COLOR = 14, /**< Color sensor */ + SENSOR_TYPE_SAR = 15, /**< SAR sensor */ + SENSOR_TYPE_AMBIENT_LIGHT1 = 16, /**< Secondary ambient light sensor*/ + SENSOR_TYPE_HALL1 = 17, /**< Secondary hall effect sensor */ + SENSOR_TYPE_PROXIMITY1 = 18, /**< Secondary proximity sensor */ + SENSOR_TYPE_MEDICAL_BEGIN = 128, /**< The begin of medical sensorId enumeration value range */ + SENSOR_TYPE_MEDICAL_END = 160, /**< The end of medical sensorId enumeration value range */ SENSOR_TYPE_PHYSICAL_MAX = 255, /**< Maximum type of a physical sensor */ SENSOR_TYPE_ORIENTATION = 256, /**< Orientation sensor */ SENSOR_TYPE_GRAVITY = 257, /**< Gravity sensor */ @@ -97,12 +109,22 @@ enum SensorTypeTag { SENSOR_TYPE_SIGNIFICANT_MOTION = 264, /**< Significant motion sensor */ SENSOR_TYPE_PEDOMETER_DETECTION = 265, /**< Pedometer detection sensor */ SENSOR_TYPE_PEDOMETER = 266, /**< Pedometer sensor */ + SENSOR_TYPE_POSTURE = 267, /**< Posture sensor */ + SENSOR_TYPE_HEADPOSTURE = 268, /**< Headposture sensor */ + SENSOR_TYPE_DROP_DETECT = 269, /**< Drop detection sensor */ SENSOR_TYPE_GEOMAGNETIC_ROTATION_VECTOR = 277, /**< Geomagnetic rotation vector sensor */ SENSOR_TYPE_HEART_RATE = 278, /**< Heart rate sensor */ SENSOR_TYPE_DEVICE_ORIENTATION = 279, /**< Device orientation sensor */ SENSOR_TYPE_WEAR_DETECTION = 280, /**< Wear detection sensor */ SENSOR_TYPE_ACCELEROMETER_UNCALIBRATED = 281, /**< Uncalibrated acceleration sensor */ - SENSOR_TYPE_MAX = 0xFFF, /**< Maximum number of sensor types */ + SENSOR_TYPE_RPC = 282, /**< Radio Power Control */ + // ohos-hisi begin + SENSOR_TYPE_VSENSOR_EXPAND_START = 0x1000, /* 4096 */ + SENSOR_TYPE_VSENSOR_ACCELEROMETER_ALG_SIMU, /**< ACCELEROMETER ALG sensor */ + SENSOR_TYPE_VSENSOR_WEAR_ALG, /**< WEAR ALG sensor */ + SENSOR_TYPE_VSENSOR_PRESS_ALG, /**< PRESS ALG sensor */ + // ohos-hisi end + SENSOR_TYPE_MAX, /**< Maximum number of sensor types */ }; /** @@ -145,39 +167,14 @@ enum SensorModeType { }; /** - * @brief 加速度传感器的数据结构 - */ -struct AccelData { - /** 加速度Xè½´ */ - int16_t axisX; - /** 加速度Yè½´ */ - int16_t axisY; - /** 加速度Zè½´ */ - int16_t axisZ; -}; - -/** - * @brief 角速度传感器的数据结构 - */ -struct GyroData { - /** 加速度Xè½´ */ - int16_t axisX; - /** 加速度Yè½´ */ - int16_t axisY; - /** 加速度Zè½´ */ - int16_t axisZ; -}; - -/** - * @brief 气压传感器的数据结构 + * @brief Enumerates hardware service group for sensors + * + * @since 2.2 */ -struct PressureData { - /** 气压计气压值 */ - uint32_t pressure; - /** 气压计温度值 */ - uint32_t temperature; - /** 气压计数据有效性 */ - uint32_t dataValid; +enum SensorGroupType { + TRADITIONAL_SENSOR_TYPE = 0, /**< traditional sensor type, the sensorId enumeration value range is 128-160 */ + MEDICAL_SENSOR_TYPE = 1, /**< medical sensor type, the sensorId enumeration value range is not within 128-160 */ + SENSOR_GROUP_TYPE_MAX, /**< Maximum sensor type*/ }; /** @@ -198,6 +195,10 @@ struct SensorInformation { float maxRange; /**< Maximum measurement range of the sensor */ float accuracy; /**< Sensor accuracy */ float power; /**< Sensor power */ + int64_t minDelay; /**< Minimum sample period allowed in microseconds */ + int64_t maxDelay; /**< Maxmum sample period allowed in microseconds */ + uint32_t fifoMaxEventCount; /**< Maxmum number of events of this sensor that could be batched */ + uint32_t reserved; /**< Reserved fields */ }; /** @@ -218,6 +219,73 @@ struct SensorEvents { uint32_t dataLen; /**< Sensor data length */ }; +/** + * @brief Defines SDC reports data object operations to the node. + * + * The reported sensor data includes the offset, type, ddrSize, minRateLevel, maxRateLevel, reserved, memAddr. + * + * @since 4.1 + */ +struct SdcSensorInfo { + uint64_t offset; + int32_t sensorId; + int32_t ddrSize; + int32_t minRateLevel; + int32_t maxRateLevel; + uint64_t memAddr; + int32_t reserved; +}; + +// ohos-hisi begin +/** + * @brief Accelerometer sensor data structure + */ +struct AccelData { + /** Accelerometer data X-axis */ + int16_t axisX; + /** Accelerometer data Y-axis */ + int16_t axisY; + /** Accelerometer data Z-axis */ + int16_t axisZ; +}; + +/** + * @brief Gyro sensor data structure + */ +struct GyroData { + /** Gyro data X-axis */ + int16_t axisX; + /** Gyro data Y-axis */ + int16_t axisY; + /** Gyro data Z-axis */ + int16_t axisZ; +}; + +/** + * @brief Pressure sensor data structure + */ +struct PressureData { + /** pressure value */ + uint32_t pressure; + /** temperature value */ + uint32_t temperature; + /** Data Validity */ + uint32_t dataValid; +}; + +/** + * @brief Defines the sensor data. + * + * @since 5 + */ +typedef struct SensorData { + int64_t timestamp; /**< Time when sensor data was reported */ + uint32_t batchCnt; /**< Sensor batch cnt */ + uint8_t *data; /**< Sensor data */ + uint32_t dataLen; /**< Sensor data length */ +} SensorData; +// ohos-hisi end + /** * @brief Defines the callback for reporting sensor data. This callback needs to be registered when * a sensor user subscribes to sensor data. Only after the sensor is enabled, the sensor data subscriber can receive diff --git a/code/sdk/open_source/openharmony/foundation/aafwk/aafwk_lite/brandy-auto-ota-cli/libams.a b/code/sdk/open_source/openharmony/foundation/aafwk/aafwk_lite/brandy-auto-ota-cli/libams.a index 084a0faf4d8b8d6dd5c82d41c8bcbf3d5a0765bf..058255d5733bd35c52be393f1c27cdc7ee4bca9d 100644 GIT binary patch delta 27205 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 HKTi2?C0t)I delta 27348 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 diff --git a/code/sdk/open_source/openharmony/foundation/aafwk/aafwk_lite/brandy-auto-ota-ser/libams.a b/code/sdk/open_source/openharmony/foundation/aafwk/aafwk_lite/brandy-auto-ota-ser/libams.a index ea7325ce70714e642de9244b2e2e607d255681c7..205561881ef503c4b403262cfe819fd16085fc7f 100644 GIT binary patch delta 27201 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 AGXMYp delta 27358 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 diff --git a/code/sdk/open_source/openharmony/foundation/aafwk/aafwk_lite/brandy-xts/libams.a b/code/sdk/open_source/openharmony/foundation/aafwk/aafwk_lite/brandy-xts/libams.a index a4d26386832795a123919257bc62535f1429ecf7..612e348e7b216d6c31ec9ca923a0308267da05f0 100644 GIT binary patch delta 27187 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 Cw^%X& delta 27360 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 diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/CMakeLists.txt b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/CMakeLists.txt index 6e76b8c55..2cfe47ad5 100644 --- a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/CMakeLists.txt +++ b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/CMakeLists.txt @@ -31,6 +31,7 @@ set(PRIVATE_HEADER ${ROOT_DIR}/middleware/services/gui/uikit/proprietary/src/utils/innerkits ${ROOT_DIR}/middleware/services/gui/uikit/proprietary/include ${ROOT_DIR}/middleware/services/gui/uikit/proprietary/include/service + ${ROOT_DIR}/middleware/services/gui/uikit/proprietary/include/components ${ROOT_DIR}/middleware/services/gui/uikit/ui/interfaces/innerkits ${ROOT_DIR}/middleware/services/gui/uikit/ui/interfaces/kits/components ${ROOT_DIR}/middleware/services/gui/uikit/ui/interfaces/kits/animator @@ -48,6 +49,7 @@ set(PRIVATE_HEADER ${ROOT_DIR}/application/wearable/ohos_deps ${ROOT_DIR}/application/wearable/nativeabilityfwk/include ${ROOT_DIR}/application/wearable/nativeapp/nativelauncher/include + ${ROOT_DIR}/application/wearable/nativeapp/nativeui/include ${ROOT_DIR}/application/wearable/service/xiaodu_navi_vector/libs ${ROOT_DIR}/open_source/openharmony/third_party/cJSON ${ROOT_DIR}/open_source/openharmony/third_party/qrcodegen/cpp @@ -179,6 +181,7 @@ set(PUBLIC_HEADER ) set(PRIVATE_HEADER + ${CMAKE_CURRENT_SOURCE_DIR}/ace_ext ${CMAKE_CURRENT_SOURCE_DIR}/interfaces/base ${CMAKE_CURRENT_SOURCE_DIR}/animation ${CMAKE_CURRENT_SOURCE_DIR}/base @@ -198,8 +201,10 @@ set(PRIVATE_HEADER ${ROOT_DIR}/middleware/services/gui/uikit/proprietary/src/utils/innerkits ${ROOT_DIR}/middleware/services/gui/uikit/proprietary/include ${ROOT_DIR}/middleware/services/gui/uikit/proprietary/include/service + ${ROOT_DIR}/middleware/services/gui/uikit/proprietary/include/components ${ROOT_DIR}/middleware/services/gui/uikit/ui/interfaces/innerkits - + ${ROOT_DIR}/open_source/openharmony/foundation/ace/ace_engine_lite/modules/network/connection_manage + ${ROOT_DIR}/middleware/services/gui/uikit/proprietary/src/ui/innerkits ${ROOT_DIR}/middleware/services/gui/uikit/ui/interfaces/kits/components ${ROOT_DIR}/middleware/services/gui/uikit/ui/interfaces/kits/animator ${ROOT_DIR}/middleware/services/gui/uikit/utils/interfaces/innerkits @@ -217,6 +222,7 @@ set(PRIVATE_HEADER ${ROOT_DIR}/application/wearable/ohos_deps ${ROOT_DIR}/application/wearable/nativeabilityfwk/include ${ROOT_DIR}/application/wearable/nativeapp/nativelauncher/include + ${ROOT_DIR}/application/wearable/nativeapp/nativeui/include ${ROOT_DIR}/application/wearable/service/xiaodu_navi_vector/libs ${ROOT_DIR}/open_source/openharmony/third_party/cJSON ${ROOT_DIR}/open_source/openharmony/third_party/qrcodegen/cpp @@ -228,6 +234,7 @@ set(PRIVATE_HEADER ${ROOT_DIR}/open_source/openharmony/foundation/ace/ace_engine_lite/modules/network ${ROOT_DIR}/open_source/openharmony/base/sensors/location/interfaces/kits/include ${ROOT_DIR}/open_source/openharmony/base/sensors/interfaces/kits/native/include + ${ROOT_DIR}/open_source/openharmony/third_party/lwip/lwip_adapter/lwip_driver_adapter ) if("JS_ENABLE" IN_LIST DEFINES) @@ -267,6 +274,8 @@ set(SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/modules/device_module.cpp ${CMAKE_CURRENT_SOURCE_DIR}/modules/nativeapi_ohos_deviceinfo.cpp ${CMAKE_CURRENT_SOURCE_DIR}/modules/network/network_module.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/modules/network/network_listener.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/modules/network/connection_manage/connection_manage.cpp ${CMAKE_CURRENT_SOURCE_DIR}/modules/nfc_module.cpp ${CMAKE_CURRENT_SOURCE_DIR}/modules/vibrator_module.cpp ${CMAKE_CURRENT_SOURCE_DIR}/modules/battery_module.cpp @@ -328,9 +337,134 @@ set(MAIN_COMPONENT ) set(PUBLIC_DEFINES + FEATURE_COMPONENT_LISTEXT + FEATURE_COMPONENT_SCROLL +) + +set(PRIVATE_DEFINES + ENABLE_LOCATION +) + +install_sdk_by_sh("${CMAKE_CURRENT_SOURCE_DIR}/interfaces" "*") +install_sdk_by_sh("${CMAKE_CURRENT_SOURCE_DIR}/include" "*") + +build_component() + +set(COMPONENT_NAME "ace_ext") +set(MODULE_NAME "ohos") +set(AUTO_DEF_FILE_ID TRUE) + +set(PUBLIC_HEADER + ${CMAKE_CURRENT_SOURCE_DIR}/interfaces + ${CMAKE_CURRENT_SOURCE_DIR}/interfaces/async + ${CMAKE_CURRENT_SOURCE_DIR}/interfaces/base + ${CMAKE_CURRENT_SOURCE_DIR}/interfaces/jsi + ${CMAKE_CURRENT_SOURCE_DIR}/ + ${CMAKE_CURRENT_SOURCE_DIR}/include/base + ${CMAKE_CURRENT_SOURCE_DIR}/include/context +) + +set(PRIVATE_HEADER + ${CMAKE_CURRENT_SOURCE_DIR}/interfaces/base + ${CMAKE_CURRENT_SOURCE_DIR}/animation + ${CMAKE_CURRENT_SOURCE_DIR}/base + ${CMAKE_CURRENT_SOURCE_DIR}/base/cache + ${CMAKE_CURRENT_SOURCE_DIR}/components + ${CMAKE_CURRENT_SOURCE_DIR}/context + ${CMAKE_CURRENT_SOURCE_DIR}/directive + ${CMAKE_CURRENT_SOURCE_DIR}/include/base + ${CMAKE_CURRENT_SOURCE_DIR}/include/context + ${CMAKE_CURRENT_SOURCE_DIR}/jsi + ${CMAKE_CURRENT_SOURCE_DIR}/modules + ${CMAKE_CURRENT_SOURCE_DIR}/modules/presets + ${CMAKE_CURRENT_SOURCE_DIR}/router + ${CMAKE_CURRENT_SOURCE_DIR}/stylemgr + ${CMAKE_CURRENT_SOURCE_DIR}/targets + ${ROOT_DIR}/application/wearable/service/msg_center/include/vendor_app + ${ROOT_DIR}/middleware/services/gui/uikit/proprietary/src/utils/innerkits + ${ROOT_DIR}/middleware/services/gui/uikit/proprietary/include + ${ROOT_DIR}/middleware/services/gui/uikit/proprietary/include/service + ${ROOT_DIR}/middleware/services/gui/uikit/proprietary/include/components + ${ROOT_DIR}/middleware/services/gui/uikit/ui/interfaces/innerkits + + ${ROOT_DIR}/middleware/services/gui/uikit/proprietary/src/ui/innerkits + ${ROOT_DIR}/middleware/services/gui/uikit/ui/interfaces/kits/components + ${ROOT_DIR}/middleware/services/gui/uikit/ui/interfaces/kits/animator + ${ROOT_DIR}/middleware/services/gui/uikit/utils/interfaces/innerkits + ${ROOT_DIR}/middleware/services/gui/uikit/utils/interfaces/kits + ${ROOT_DIR}/middleware/services/gui/uikit/utils/interfaces/kits/gfx_utils + ${ROOT_DIR}/middleware/services/gui/uikit/surface/interfaces/kits + ${ROOT_DIR}/middleware/services/gui/uikit/ui/interfaces/innerkits + ${ROOT_DIR}/middleware/services/gui/uikit/ui/interfaces/kits/layout + ${ROOT_DIR}/middleware/services/gui/uikit/ui/interfaces/innerkits/common + ${ROOT_DIR}/middleware/services/gui/uikit/ui/interfaces/kits/font + ${ROOT_DIR}/middleware/services/gui/uikit/ui/interfaces/kits/dfx + ${ROOT_DIR}/middleware/services/gui/uikit/ui/interfaces/kits/common + ${ROOT_DIR}/middleware/services/gui/uikit/ui/frameworks + ${ROOT_DIR}/open_source/openharmony/drivers/peripheral/display/interfaces/include + ${ROOT_DIR}/application/wearable/ohos_deps + ${ROOT_DIR}/application/wearable/nativeabilityfwk/include + ${ROOT_DIR}/application/wearable/nativeapp/nativelauncher/include + ${ROOT_DIR}/application/wearable/nativeapp/nativeui/include + ${ROOT_DIR}/application/wearable/service/xiaodu_navi_vector/libs + ${ROOT_DIR}/open_source/openharmony/third_party/cJSON + ${ROOT_DIR}/open_source/openharmony/third_party/qrcodegen/cpp + ${ROOT_DIR}/open_source/openharmony/base/global/i18n_lite/frameworks/i18n/include + ${ROOT_DIR}/open_source/openharmony/base/global/i18n_lite/interfaces/kits/i18n/include + ${ROOT_DIR}/open_source/openharmony/base/global/resmgr_lite/frameworks/resmgr_lite/include + ${ROOT_DIR}/open_source/openharmony/base/global/resmgr_lite/interfaces/innerkits/include + ${ROOT_DIR}/open_source/openharmony/foundation/ace/ace_engine_lite/modules/keyinput + ${ROOT_DIR}/open_source/openharmony/foundation/ace/ace_engine_lite/modules/network + ${ROOT_DIR}/open_source/openharmony/base/sensors/location/interfaces/kits/include + ${ROOT_DIR}/open_source/openharmony/base/sensors/interfaces/kits/native/include + ${ROOT_DIR}/open_source/openharmony/third_party/lwip/lwip_adapter/lwip_driver_adapter +) + +if("JS_ENABLE" IN_LIST DEFINES) +set(SOURCES + ${CMAKE_CURRENT_SOURCE_DIR}/ace_ext/menu_item_component.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/ace_ext/list_ext_component.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/ace_ext/scroll_component.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/ace_ext/list_adapter_ext.cpp +) + +endif() + +set(COMPONENT_PUBLIC_CCFLAGS +) + +set(COMPONENT_CCFLAGS + -std=c++11 + -Wno-error + -Wno-unused-parameter + -fno-exceptions + -fno-unwind-tables + -fno-asynchronous-unwind-tables + -Wno-undef + -Wno-bitwise-op-parentheses + -Wno-shift-op-parentheses + -nostdlibinc + -nostdinc + -nostdlib + -Wno-c++11-narrowing + -Wno-error=unused-function +) + +set(WHOLE_LINK + true +) + +set(MAIN_COMPONENT + false +) + +set(PUBLIC_DEFINES + FEATURE_COMPONENT_LISTEXT + FEATURE_COMPONENT_SCROLL ) set(PRIVATE_DEFINES + ENABLE_LOCATION ) install_sdk_by_sh("${CMAKE_CURRENT_SOURCE_DIR}/interfaces" "*") @@ -509,6 +643,67 @@ install_sdk_by_sh("${CMAKE_CURRENT_SOURCE_DIR}/include" "*") build_component() +set(COMPONENT_NAME "ace_ble") +set(MODULE_NAME "ohos") +set(AUTO_DEF_FILE_ID TRUE) + +set(PUBLIC_HEADER +) + +set(PRIVATE_HEADER + ${CMAKE_CURRENT_SOURCE_DIR}/interfaces/base + ${ROOT_DIR}/open_source/openharmony/foundation/ace/ace_engine_lite/modules/bluetooth + ${ROOT_DIR}/application/wearable/nativeapp/nativeui/include/bluetooth + ${ROOT_DIR}/middleware/services/bts/ble + ${ROOT_DIR}/middleware/services/bts/br +) + +set(SOURCES + ${CMAKE_CURRENT_SOURCE_DIR}/modules/bluetooth/ble_module_common.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/modules/bluetooth/ble_module_gattc_callback.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/modules/bluetooth/ble_module_discover.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/modules/bluetooth/ble_module_advertise.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/modules/bluetooth/ble_module_scan.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/modules/bluetooth/ble_module.cpp +) + +set(COMPONENT_PUBLIC_CCFLAGS +) + +set(COMPONENT_CCFLAGS + -std=c++11 + -Wno-error + -Wno-unused-parameter + -fno-exceptions + -fno-unwind-tables + -fno-asynchronous-unwind-tables + -Wno-undef + -Wno-bitwise-op-parentheses + -Wno-shift-op-parentheses + -nostdlibinc + -nostdinc + -nostdlib + -Wno-c++11-narrowing + -Wno-error=unused-function +) + +set(WHOLE_LINK + true +) + +set(MAIN_COMPONENT + false +) + +set(PRIVATE_DEFINES +) + +set(PUBLIC_DEFINES + FEATURE_MODULE_BLE +) + +build_component() + set(COMPONENT_NAME "netstack_http") set(MODULE_NAME "ohos") set(AUTO_DEF_FILE_ID TRUE) @@ -528,6 +723,7 @@ set(SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/modules/netstack/http/src/http_api.c ${CMAKE_CURRENT_SOURCE_DIR}/modules/netstack/http/src/http_client.c ${CMAKE_CURRENT_SOURCE_DIR}/modules/netstack/http/src/http_wrapper.c + ${CMAKE_CURRENT_SOURCE_DIR}/modules/netstack/http/src/http_form_data.c ) set(COMPONENT_PUBLIC_CCFLAGS @@ -562,6 +758,8 @@ set(PUBLIC_DEFINES ) set(PRIVATE_DEFINES + CONFIG_HTTP_FORM_DATA + CONFIG_HTTP_FILE_OPERATE ) install_sdk_by_sh("${CMAKE_CURRENT_SOURCE_DIR}/interfaces" "*") @@ -578,15 +776,19 @@ set(PUBLIC_HEADER set(PRIVATE_HEADER ${CMAKE_CURRENT_SOURCE_DIR}/interfaces/base - ${ROOT_DIR}/open_source/openharmony/foundation/ace/ace_engine_lite/modules/net + ${ROOT_DIR}/open_source/openharmony/foundation/ace/ace_engine_lite/modules/http ${ROOT_DIR}/open_source/openharmony/foundation/ace/ace_engine_lite/modules/netstack/http/include ${ROOT_DIR}/open_source/openharmony/third_party/lwip/lwip_v2.1.3/src/include ${ROOT_DIR}/open_source/openharmony/third_party/lwip/lwip_adapter/liteos/src/include ${ROOT_DIR}/open_source/openharmony/third_party/lwip/lwip_adapter/lwip_driver_adapter + ${ROOT_DIR}/open_source/openharmony/utils/native/lite/js/builtin/filekit/include + ${ROOT_DIR}/open_source/openharmony/utils/native/lite/js/builtin/common/include ) set(SOURCES - ${CMAKE_CURRENT_SOURCE_DIR}/modules/net/http_module.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/modules/http/http_module.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/modules/http/http_module_client.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/modules/http/http_module_callback.cpp ) set(COMPONENT_PUBLIC_CCFLAGS @@ -638,7 +840,7 @@ set(PUBLIC_HEADER set(PRIVATE_HEADER ${CMAKE_CURRENT_SOURCE_DIR}/interfaces/base - ${ROOT_DIR}/open_source/openharmony/foundation/ace/ace_engine_lite/modules/net + ${ROOT_DIR}/open_source/openharmony/foundation/ace/ace_engine_lite/modules/http ${ROOT_DIR}/open_source/openharmony/foundation/ace/ace_engine_lite/modules/netstack/websocket/include ${ROOT_DIR}/open_source/openharmony/third_party/lwip/lwip_v2.1.3/src/include ${ROOT_DIR}/open_source/openharmony/third_party/lwip/lwip_adapter/liteos/src/include @@ -647,6 +849,8 @@ set(PRIVATE_HEADER set(SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/modules/websocket/websocket_module.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/modules/websocket/websocket_module_client.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/modules/websocket/websocket_module_callback.cpp ) set(COMPONENT_PUBLIC_CCFLAGS @@ -698,6 +902,7 @@ set(PUBLIC_HEADER set(PRIVATE_HEADER ${ROOT_DIR}/open_source/openharmony/foundation/ace/ace_engine_lite/modules/netstack/websocket/include + ${ROOT_DIR}/open_source/openharmony/foundation/ace/ace_engine_lite/modules/netstack/websocket/internal ${ROOT_DIR}/open_source/openharmony/third_party/lwip/lwip_v2.1.3/src/include ${ROOT_DIR}/open_source/openharmony/third_party/lwip/lwip_adapter/liteos/src/include ${ROOT_DIR}/open_source/openharmony/third_party/lwip/lwip_adapter/lwip_driver_adapter @@ -748,4 +953,184 @@ set(PRIVATE_DEFINES install_sdk_by_sh("${CMAKE_CURRENT_SOURCE_DIR}/interfaces" "*") install_sdk_by_sh("${CMAKE_CURRENT_SOURCE_DIR}/include" "*") +build_component() + +set(COMPONENT_NAME "ace_watchface") +set(MODULE_NAME "ohos") +set(AUTO_DEF_FILE_ID TRUE) + +set(PUBLIC_HEADER +) + +set(PRIVATE_HEADER + ${CMAKE_CURRENT_SOURCE_DIR}/interfaces/base + ${ROOT_DIR}/open_source/openharmony/foundation/ace/ace_engine_lite/modules/watchface + ${ROOT_DIR}/open_source/openharmony/utils/native/lite/js/builtin/filekit/include + ${ROOT_DIR}/open_source/openharmony/utils/native/lite/js/builtin/common/include + ${ROOT_DIR}/application/wearable/nativeapp/nativeui/include/main/dial/ + ${ROOT_DIR}/open_source/openharmony/drivers/peripheral/format/interfaces/include/ +) + +set(SOURCES + ${CMAKE_CURRENT_SOURCE_DIR}/modules/watchface/watchface_module.cpp +) + +set(COMPONENT_PUBLIC_CCFLAGS +) + +set(COMPONENT_CCFLAGS + -std=c++11 + -Wno-error + -Wno-unused-parameter + -fno-exceptions + -fno-unwind-tables + -fno-asynchronous-unwind-tables + -Wno-undef + -Wno-bitwise-op-parentheses + -Wno-shift-op-parentheses + -nostdlibinc + -nostdinc + -nostdlib + -Wno-c++11-narrowing + -Wno-error=unused-function +) + +set(WHOLE_LINK + true +) + +set(MAIN_COMPONENT + false +) + +set(PUBLIC_DEFINES + FEATURE_MODULE_WATCHFACE +) + +set(PRIVATE_DEFINES +) + +install_sdk_by_sh("${CMAKE_CURRENT_SOURCE_DIR}/interfaces" "*") +install_sdk_by_sh("${CMAKE_CURRENT_SOURCE_DIR}/include" "*") + +build_component() + +set(COMPONENT_NAME "ace_calendar") +set(MODULE_NAME "ohos") +set(AUTO_DEF_FILE_ID TRUE) + +set(PUBLIC_HEADER + ${CMAKE_CURRENT_SOURCE_DIR}/interfaces + ${CMAKE_CURRENT_SOURCE_DIR}/interfaces/async + ${CMAKE_CURRENT_SOURCE_DIR}/interfaces/base + ${CMAKE_CURRENT_SOURCE_DIR}/interfaces/jsi + ${CMAKE_CURRENT_SOURCE_DIR}/ + ${CMAKE_CURRENT_SOURCE_DIR}/include/base + ${CMAKE_CURRENT_SOURCE_DIR}/include/context +) + +set(PRIVATE_HEADER + ${CMAKE_CURRENT_SOURCE_DIR}/interfaces/base + ${CMAKE_CURRENT_SOURCE_DIR}/animation + ${CMAKE_CURRENT_SOURCE_DIR}/base + ${CMAKE_CURRENT_SOURCE_DIR}/base/cache + ${CMAKE_CURRENT_SOURCE_DIR}/components + ${CMAKE_CURRENT_SOURCE_DIR}/context + ${CMAKE_CURRENT_SOURCE_DIR}/directive + ${CMAKE_CURRENT_SOURCE_DIR}/include/base + ${CMAKE_CURRENT_SOURCE_DIR}/include/context + ${CMAKE_CURRENT_SOURCE_DIR}/jsi + ${CMAKE_CURRENT_SOURCE_DIR}/modules + ${CMAKE_CURRENT_SOURCE_DIR}/modules/presets + ${CMAKE_CURRENT_SOURCE_DIR}/router + ${CMAKE_CURRENT_SOURCE_DIR}/stylemgr + ${CMAKE_CURRENT_SOURCE_DIR}/targets + ${ROOT_DIR}/application/wearable/service/msg_center/include/vendor_app + ${ROOT_DIR}/middleware/services/gui/uikit/proprietary/src/utils/innerkits + ${ROOT_DIR}/middleware/services/gui/uikit/proprietary/include + ${ROOT_DIR}/middleware/services/gui/uikit/proprietary/include/service + ${ROOT_DIR}/middleware/services/gui/uikit/proprietary/include/components + ${ROOT_DIR}/middleware/services/gui/uikit/ui/interfaces/innerkits + + ${ROOT_DIR}/middleware/services/gui/uikit/proprietary/src/ui/innerkits + ${ROOT_DIR}/middleware/services/gui/uikit/ui/interfaces/kits/components + ${ROOT_DIR}/middleware/services/gui/uikit/ui/interfaces/kits/animator + ${ROOT_DIR}/middleware/services/gui/uikit/utils/interfaces/innerkits + ${ROOT_DIR}/middleware/services/gui/uikit/utils/interfaces/kits + ${ROOT_DIR}/middleware/services/gui/uikit/utils/interfaces/kits/gfx_utils + ${ROOT_DIR}/middleware/services/gui/uikit/surface/interfaces/kits + ${ROOT_DIR}/middleware/services/gui/uikit/ui/interfaces/innerkits + ${ROOT_DIR}/middleware/services/gui/uikit/ui/interfaces/kits/layout + ${ROOT_DIR}/middleware/services/gui/uikit/ui/interfaces/innerkits/common + ${ROOT_DIR}/middleware/services/gui/uikit/ui/interfaces/kits/font + ${ROOT_DIR}/middleware/services/gui/uikit/ui/interfaces/kits/dfx + ${ROOT_DIR}/middleware/services/gui/uikit/ui/interfaces/kits/common + ${ROOT_DIR}/middleware/services/gui/uikit/ui/frameworks + ${ROOT_DIR}/open_source/openharmony/drivers/peripheral/display/interfaces/include + ${ROOT_DIR}/application/wearable/ohos_deps + ${ROOT_DIR}/application/wearable/nativeabilityfwk/include + ${ROOT_DIR}/application/wearable/nativeapp/nativelauncher/include + ${ROOT_DIR}/application/wearable/nativeapp/nativeui/include + ${ROOT_DIR}/application/wearable/service/xiaodu_navi_vector/libs + ${ROOT_DIR}/open_source/openharmony/third_party/cJSON + ${ROOT_DIR}/open_source/openharmony/third_party/qrcodegen/cpp + ${ROOT_DIR}/open_source/openharmony/base/global/i18n_lite/frameworks/i18n/include + ${ROOT_DIR}/open_source/openharmony/base/global/i18n_lite/interfaces/kits/i18n/include + ${ROOT_DIR}/open_source/openharmony/base/global/resmgr_lite/frameworks/resmgr_lite/include + ${ROOT_DIR}/open_source/openharmony/base/global/resmgr_lite/interfaces/innerkits/include + ${ROOT_DIR}/open_source/openharmony/foundation/ace/ace_engine_lite/modules/keyinput + ${ROOT_DIR}/open_source/openharmony/foundation/ace/ace_engine_lite/modules/network + ${ROOT_DIR}/open_source/openharmony/base/sensors/location/interfaces/kits/include + ${ROOT_DIR}/open_source/openharmony/base/sensors/interfaces/kits/native/include + ${ROOT_DIR}/application/wearable/service/msg_center/include/client +) + +if("JS_ENABLE" IN_LIST DEFINES) +set(SOURCES + ${CMAKE_CURRENT_SOURCE_DIR}/modules/calendarManager/calendar_manager.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/modules/calendarManager/calendar_timer.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/modules/calendarManager/calendar_module.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/modules/calendarManager/event_id_manager.cpp +) + +endif() + +set(COMPONENT_PUBLIC_CCFLAGS +) + +set(COMPONENT_CCFLAGS + -std=c++11 + -Wno-error + -Wno-unused-parameter + -fno-exceptions + -fno-unwind-tables + -fno-asynchronous-unwind-tables + -Wno-undef + -Wno-bitwise-op-parentheses + -Wno-shift-op-parentheses + -nostdlibinc + -nostdinc + -nostdlib + -Wno-c++11-narrowing + -Wno-error=unused-function +) + +set(WHOLE_LINK + true +) + +set(MAIN_COMPONENT + false +) + +set(PUBLIC_DEFINES + ENABLE_MODULE_CALENDAR +) + +set(PRIVATE_DEFINES +) + +install_sdk_by_sh("${CMAKE_CURRENT_SOURCE_DIR}/interfaces" "*") +install_sdk_by_sh("${CMAKE_CURRENT_SOURCE_DIR}/include" "*") + build_component() \ No newline at end of file diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/ace_ext/list_adapter_ext.h b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/ace_ext/list_adapter_ext.h new file mode 100644 index 000000000..ef85bff23 --- /dev/null +++ b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/ace_ext/list_adapter_ext.h @@ -0,0 +1,51 @@ +/* + * Copyright (c) CompanyNameMagicTag. 2024-2025. All rights reserved. + * Description: ace_ext listadapter + * Author: SoftwarePlatform Group + * Create: 2024-08-10 + */ + +#ifndef OHOS_ACELITE_LIST_ADAPTER_EXT_H +#define OHOS_ACELITE_LIST_ADAPTER_EXT_H + +#include +#include +#include "text_component.h" + +namespace OHOS { +namespace ACELite { + +class ListAdapterExt { +public: + ListAdapterExt(); + + ~ListAdapterExt(); + + static void SetItemAdaptive(bool isItemAdaptive); + + static bool GetItemAdaptive(); + + static void SetListValue(char *text); + + static void SetItemIndex(int16_t index); + + static int16_t GetItemIndex(); + + static int16_t BuildItemAdaptive(Component *component, int16_t index); + + static void CleanVector(); + + static void CleanString(); + + static void CleanAll(); + +private: + static int16_t CalculateItems(UILabel *uiLable, int16_t index); + static bool isItemAdaptive_; + static int16_t itemIndex_; + static std::vector strings_; + static std::string all_; +}; +} // namespace ACELite +} // namespace OHOS +#endif // OHOS_ACELITE_LIST_ADAPTER_EXT_H diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/ace_ext/list_ext_component.h b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/ace_ext/list_ext_component.h new file mode 100644 index 000000000..fc862550e --- /dev/null +++ b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/ace_ext/list_ext_component.h @@ -0,0 +1,55 @@ +/* + * Copyright (c) CompanyNameMagicTag. 2025-2025. All rights reserved. + * Description: ace scale-list + * Author: SoftwarePlatform Group + * Create: 2025-08-8 + */ + +#ifndef OHOS_ACELITE_LIST_EXT_COMPONENT_H +#define OHOS_ACELITE_LIST_EXT_COMPONENT_H + +#include "component.h" +#include "list_adapter.h" +#include "ui_transform_list.h" + +namespace OHOS { +namespace ACELite { +class ListExtComponent final : public Component { +public: + ACE_DISALLOW_COPY_AND_MOVE(ListExtComponent); + ListExtComponent() = delete; + ListExtComponent(JSValue options, JSValue children, AppStyleManager *styleManager); + ~ListExtComponent() override {} + +protected: + bool CreateNativeViews() override; + void ReleaseNativeViews() override; + UIView *GetComponentRootView() const override; + bool ApplyPrivateStyle(const AppStyleItem* style) override; + bool RegisterPrivateEventListener(uint16_t eventTypeId, JSValue funcValue, bool isStopPropagation) override; + bool SetPrivateAttribute(uint16_t attrKeyId, jerry_value_t attrValue) override; + bool ProcessChildren() override; + void OnViewAttached() override; + bool UpdateForView() override; + +private: + UITransformList list_; + ListAdapter adapter_; + ListEventListener listEventListener_; + static const char * const FUNC_SCROLLTO; + static const char * const INDEX_SCROLLTO; + + int16_t scaleFactor_; + UIView::ViewExtraMsg scaleMsg_; + static bool ScaleListItem(UITransformList* list, UIView* item); + + static const char * const FUNC_SCROLLTO_END; + static JSValue ListScrollTo(const JSValue func, const JSValue dom, const JSValue args[], const jerry_length_t size); + static JSValue ListScrollToEnd(const JSValue func, const JSValue dom, const JSValue args[], const jerry_length_t size); + void ComputeListLength(); + static JSValue ListScroll(const JSValue func, const JSValue dom, const JSValue args[], const jerry_length_t size); +}; +} // namespace ACELite +} // namespace OHOS + +#endif // OHOS_ACELITE_LIST_EXT_COMPONENT_H diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/ace_ext/menu_item_component.h b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/ace_ext/menu_item_component.h new file mode 100644 index 000000000..5aa73acaf --- /dev/null +++ b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/ace_ext/menu_item_component.h @@ -0,0 +1,35 @@ +/* + * Copyright (c) CompanyNameMagicTag. 2025-2025. All rights reserved. + * Description: ace scale-list + * Author: SoftwarePlatform Group item + * Create: 2025-08-8 + */ + +#ifndef OHOS_ACELITE_MENU_ITEM_COMPONENT_H +#define OHOS_ACELITE_MENU_ITEM_COMPONENT_H +#include "component.h" +#include "ui_transform_group.h" +#include "non_copyable.h" + +namespace OHOS { +namespace ACELite { +class MenuItemComponent final : public Component { +public: + + ACE_DISALLOW_COPY_AND_MOVE(MenuItemComponent); + MenuItemComponent() = delete; + MenuItemComponent(jerry_value_t options, jerry_value_t children, AppStyleManager* styleManager); + ~MenuItemComponent() override {} + +protected: + UIView *GetComponentRootView() const override; + bool ProcessChildren() override; + void AttachView(const Component *child) override; + +private: + UITransformGroup item_; +}; +} // namespace ACELite +} // namespace OHOS + +#endif // OHOS_ACELITE_MENU_ITEM_COMPONENT_H diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/ace_ext/scroll_component.h b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/ace_ext/scroll_component.h new file mode 100644 index 000000000..50944ca81 --- /dev/null +++ b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/ace_ext/scroll_component.h @@ -0,0 +1,36 @@ +/* + * Copyright (c) CompanyNameMagicTag. 2025-2025. All rights reserved. + * Description: ace scroll view + * Author: SoftwarePlatform Group item + * Create: 2025-08-12 + */ + +#ifndef OHOS_ACELITE_SCROLL_COMPONENT_H +#define OHOS_ACELITE_SCROLL_COMPONENT_H +#include "component.h" +#include "ui_scroll_view.h" +#include "non_copyable.h" + +namespace OHOS { +namespace ACELite { +class ScrollComponent final : public Component { +public: + + ACE_DISALLOW_COPY_AND_MOVE(ScrollComponent); + ScrollComponent() = delete; + ScrollComponent(jerry_value_t options, jerry_value_t children, AppStyleManager* styleManager); + ~ScrollComponent() override {} + +protected: + UIView *GetComponentRootView() const override; + bool SetPrivateAttribute(uint16_t attrKeyId, jerry_value_t attrValue) override; + bool ProcessChildren() override; + void AttachView(const Component *child) override; + +private: + UIScrollView scrolliew_; +}; +} // namespace ACELite +} // namespace OHOS + +#endif // OHOS_ACELITE_SCROLL_COMPONENT_H diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/base/keys.h b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/base/keys.h index 1667ee1c2..4fff4cf26 100644 --- a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/base/keys.h +++ b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/base/keys.h @@ -154,6 +154,10 @@ enum { KEYWORD(ITEM_SELECTED, itemselected) // scroll item selected event listener KEYWORD(ITERATION, iteration) // image-animator attribute KEYWORD(JUSTIFY_CONTENT, justifyContent) // layout style + // ohos begin + // list-item adaptive + KEYWORD(LONG_TEXT, longText) // common attributes + // ohos end #ifdef JS_TOUCH_EVENT_SUPPORT KEYWORD(KEY, key) // onkey event #endif @@ -164,6 +168,13 @@ enum { KEYWORD(LINE_HEIGHT, lineHeight) // text style type KEYWORD(LIST, list) // list tag name KEYWORD(LIST_ITEM, list-item) // list-item tag name +#ifdef FEATURE_COMPONENT_LISTEXT + KEYWORD(MENU_ITEM, arclist-item) // arclist-item tag name + KEYWORD(LIST_EXT, arclist) // arclist tag name +#endif // FEATURE_COMPONENT_LISTEXT +#ifdef FEATURE_COMPONENT_SCROLL + KEYWORD(SCROLL, scroll) // scroll tag name +#endif // FEATURE_COMPONENT_SCROLL #ifdef FEATURE_DATE_FORMAT KEYWORD(LONG, long) #endif diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/brandy-auto-ota-cli/libace.a b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/brandy-auto-ota-cli/libace.a index 911eac8021504a079a6cdfaa2460c29ecda7c27a..eab551a73004b305fefc6bb5047d417aea87530e 100644 GIT binary patch delta 54192 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 diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/brandy-auto-ota-cli/libace_ble.a b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/brandy-auto-ota-cli/libace_ble.a new file mode 100644 index 0000000000000000000000000000000000000000..63c12153bb736037ddf2a7eabc5b05bb8743b674 GIT binary patch literal 677354 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�)z>_(S0@E=< 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%0Ap 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 literal 0 HcmV?d00001 diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/brandy-auto-ota-cli/libace_ext.a b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/brandy-auto-ota-cli/libace_ext.a new file mode 100644 index 0000000000000000000000000000000000000000..587eab12ec63898bbeb38ea5bde6761cb76bf2fb GIT binary patch literal 73854 zcmeHw4PabVnf94ZQu~LbleR#DFiqM}N*Xe0+O$|9X)>iLp~U`yfJ~>8X_J~JF`1NB zaV@sN7QwF&(1Jf(-NM$2E~_Bwx-RV3Dze}rtFEi8>ks~Zxa;n!>uM?A^PF?ud(YfE zlcWfKyZiYjckc7P=RNQFKlj{o&pmhUiu7Qn`_gF_$MY%Cw6t+a)6yl&8sqVL?d1N( z<4sNVMiAdTO)2$mrOu!9`#D-asMP=O$6uUM>i2d0uurL1?nqs`w(+XfSFLYqX-#(Y z{e9WKTx&ye`}WSY>+4gAB`pI3>vOw%vsb43(%Z6wNtL>G z!=`a9P;KoMnrbnAdRuV5ONdoj?l9xvdwh5{k^HVQfy$m6#9G0h|vZye}K=d!E%2aDv1A7o#}`as3~LGtncg}%1uC#_DoJpz@Amijg|7I*1;_Db!|G=vop&)7#iE~vUS-kxoJwiaz@AGhi1K4krb)W%h6O^n%91^h2%rY3j!ea`9jbRh$NwkDQrY~L`L z?iZ z?|b!qdENizgXw|pp3Krss5SkA?YLm1mTqj<-BnVTap*b`O1rC;NUZD6q1EWx@8_#` zoeHOHLT$M~judUvfh$%h#ED<9LS7Ruxt$hBz(o6)0$vxd&!l^^EC}5zu+Ty^H|Z8- zsN)J7eF+^{fp*Z)h@Nw0PhXd*&(WEY~QwAx6{;Z8%Qk2;AVBUXIppf>YiNpmFdB4J?YlD#cR{T&YJbrY z!V=wr3J*j=8Bka)+)L%@g=$QmtHjyAz!Y>2=j(W5qWrPj`a~*JH~k=A%An|f(m3a3 zyrkQU=vdu-egTiES!mo_pf|{?3yEd^g@}mbqQv5>`b0;Y-FH z4WHIvdWmU$-re)*j-`YC8Ry`fK~QJn1F)da#CT(-M8n2*lOm2_8yYYe*_0j3^mf<7jzZ#A_Db8dxt(2yV86LGZU z`6)1w67<6kn?Y|%_YP;1ofC)|eK3@EOjqto4vn9b1{*EoVFGbVv|{eCZ@sP#&K;sR z#t5dt=$rWzqyGw4ge4h7uFy1Xun3pwRJ8Q=P9zCUD~B;3pI3MonCH#1>zsZC8c#zy zS7@dnn8}Tp;mi#8Vy20)9MY2=O&i-g(p$2x4vYB9< z-eAJ*yFO)lj^r}imDnkgS0LgIOH-+#8`A?RJOM~$dIp(ugQ+dUTeqTluVaiGp)i0a z4_3&YY~A`M^k#kqX{fVAkVSgS-zg)Ty0YlC`*$Zh*DncAD+F6aVoA@CTg6j4 zt@%%mg4M3RN4lB`XfHFDkf8~vHlhkZO_oyky_PrPAM|+@Es#JODh}!>X`N;8UA}uf7Tv~nak&^g5j~-G} z%1cj7JA8=f*obJ9CJ!H?r8}NF*iyD?wB*FJx{*omIW|%=qV72h*|rUN7r)1Z#V|$@ zM$O1|H4i@_7F^BzIJqtiHG;5sp7<|g=lc-<#m*)r$M!9F{UeO&$cVb_(U~VCo^k8<; zm8~1&iMqvbUs+$@bfIdw0+t4QhB7-hCjP{VQxn{ z;lV9F%m4J5t;8Rqw zH}EN{@^d_@*gN0RV6M9S2SRUqH40k(cY^9{FDGcHNbO$ zluuDL-DiNJYDR!RBf!5pz@Hi5%L4q&03QqRQ%PN82$p)n8z;XIivjYE;hLtM$`0zEX#0vD`AeJYjNwJW`)XJ?`Tc&I0Z z8^)obRBrb`Hr3O&wO=dBbMw$+zi^Qj2y4ve9Juy#s1V~M1c+GfMmS2Yz^wttJj9d} zbBtMO<-{WAU0-Yken7-xN87(li}URBt}@nQAYj?dK) zfZX`dW^J5O+}Y!ZT%)13AF=VFok-HiIYx`v+cMgTyurwsZ;@*aW}ZhbH#kn*Z16nd z)dnvhZa27=c#XmJ#GG*eHR6bLXsGWrBUc*CqK&LIxS9AWgPE<7PJ{p>o2^ZbbK$Ng@@yL z$$QOWJmp0G%NFCQ=dErSPubY^Uc4Arz2K7VaeWnDusyD~VoQF;^EiRg;dmw{zTA6U zOGTDWjPI}TD;i_8E`Jo`w8O!E_H^jkCUpN?=c@;o{1qB-n#lNm0t1->{a#Yl;W-p$ z8_)&!_2;s6m#^KpXb7)#y$Ss=XT$5#^41M{=54%lw>|oVPMmjfXY+Wi<8^_T7hYa@ zz2FhlAm04;~1ov-VsNSLz7~9 z4>)=psua_E$kF34rkLL696i>FVtU6NJq~k<={*Uz88}!^+s4rQhNH*X|6=x@gPYWs z&12|24>t*yV>+={3CyWwjHYe|Ql0|cIrk=XFRO z)1$6LSnBSa&6BF z%8-c7P@=uLIK8fo@4ErLkAs&w zMqSZ62LMiLvK2g3M6V;D_t_$PZx84_T14-GfZi91=zS}o_hb>hDX8#p^3w545xu5> z-Z!9EDF1c@^uANX-jRUb4~y9Q$AI2H7txEOpyA}D<5xxWwg>c1718@}K#%2Is2==N zKyL>0;)sV3SWVxA9{#=OU58Om*)Ox6HsYWg+vQY@Bbbg!)?+QsIq*W%Bb7kUwf76y z>x4(z<5OL+w=7`qFzi*+fF*`S>J8`}haTf2B;jrggxfaD?+^I2Si*guwa2zddK&gF zF;M?9TpmZPo;XcIdAlU>dkA`P^2TJ;>u?lBk7oqs(KXO(M!{VMiNvoAm`{G)pbkOs z5BAvyQeqO77lTl^lJ-)r$9d%nk>@5T9j7IVz_0UY`3pNg!>8flwLn?Krv6cb^-W_tdr4&2$c6d(H^6}$V7 z3wqo``ya>pG^|0J{(;GnPwcDn(mVT03lHpXmY9pbqj#+FG^QRkA(ZM;Vvg?dR;@MP ztIAwk$M#KWX+mGH_YG53?Hg)F-f?%Pb4hf6bMzeH7nja&`SBfoeye+B1>EEJ?op4x zZ}d;6s)hq~Bh^*Uo%)m)i zy|BNztYsALHCS)w>iO=SW4M=`g#V=YmoWC;H&sPz+D>KOb7IobdxLosh3nq=a6Ri` zwcksd_%-VSOOt=H@4i_VCaVwLcWx zX5}GEDw}i3(F>=aUmDr_kr9=-b?T((iK%M#iM3wN?!Uvwqowsz zGG{-mqR9iZ%7;&!SzYpxSv4c^ds%ZvC;xm}!+~S_GPitfQhDjYDVcljEAeZ|=)U9A z5|8;jS2xZ->hsli9+`K>m&!-l=8cZ*n^%40$ULs0tUmhCt68F>Bcp3>O< zX0%nbzIWU`{hZ_qmeOdc+jehWC81=ZrDY2bMCV^oGNolNYFPBzQuX}n*T5&a2i|b( zfX2zcnR@$y>F-$*Id*Gw{&cl>*8eGq)|5{FO!8XPt-X*u@P@^=9cjMS`rA9}CneGQ zOQ&BnAAWes1@n%ayrAaD z$?~tA)4U#TfA`B7PhSv+tm>hYY%P0hlG9m#%O{tdL@M5sd2)M%^4d2rO`j~yMoN>J zzuOpzB=;g0qctTjWJXV@c^{B)b&qvRd1+~N_0jv!8@=W3|0sXez?9L4=BUhjf1p0$ z)gjao-MgSn&~n9h6Vis}ANKW8Q|3P5SvodSn!MvD zqUYI1ePDfOufbM%Y+v=fhfY;jm7E$aZ964eY>njy+UEKp?me+@7Hih+2dZy*sLBt; z58brleWx8#wa?Y{3xm(DJJ-4O_o;>N ziYC8QHT|s8$hBTt<{tIi+Zl&_`QE#ysk*zX4<1wNM!xB3M>n=tjg%a@C3v z$J8!7(Diyhrhe|-e0X$f`&{4l+L8M`D>I)eFa46&v-mktnv92fun1&r?^9y_N524Qvef$M5M@tiERl4iVci#qt&%oBSK$@NgK3B^J@JK2#e zYkve|jnQ}BqF&f^?qipX_`Y?^^;WJIj%{bs*EebKO62}&>Jta*(A!tXzj~^{t4E2S zMMv7aae%~Z;jMm-i3~n#aSg6J;$54Mjg(K`_rifyehq!wrgcsojiSEnosas0Hs{w7 z#>PzASX2-L5 z#%_5Q-NsiR8J+_2tZEN-_LbB#$f;#;u; zOO6ZE2hxMshy}0o#j}Hh{ezx4z7vAE_)By&^L9ju$N54@d?#L}j`s}3`-XdaG$?c{8&AmhU*!=A~yMYy3GsOTr)k_tZCQEI;8j{=C!oDXQNB za``4b*Fg#AK_coMz9Ue0O+RPpec~E_m!f(`$(KYu>qZvEn^G=CRjbP)ytV+pD!_BL z!l$TO<1;|fyjdRdYXk0`0iH7+K1KDchs$&3!>6da+Gl{GdKSbNMHOd4e2VHB5trx8 zh)+>HL*nwBDe)<)Hv0@vRB`6Sr>No#ice9M@fo0~;*5$5I}tm zy1!M&=uEiHDCqt+NPUW`xBCoG6zz!?D{-)8(mq?*e=E-0aV)ev=Xf~3GvD$! zc@#x^;yli0a5Ukdz58(fIgaxzkCR7Hwb#Q0QME6?-xAT1J`@}3iWN^28aJ4u-_|O zrv4ecAAXDa5Aa((ee`D$Qy+||MNI|Y=eWnfvrZXmQI+8TNLciT^TGS2+M+H7?^CN< z4xV%MhT0ULy{&WjD}XmU{086!qOMk{H-fM7_|QV6Li8EsI zCGgifJfAuF_B++L!29;sspshJV438LzQ z0se4+hcSo#@Qzx{$qnXTd4Qi4;AaQ;IRXBx0DpFXKPSLf1bFuBK8^p5s9$sFEBwxA z+&8A(=LUGcX44`3PU*aWKCdD^Me&ZBOE1SerZZ8$NuR|L!#ks$mZz)?hrC0_HaZj6 z$B$X}wcxAp4(Z<{j z0{mkE{+|QvO+s=(#P6{*5Y|$KRlC%i~k(;XHn` zdNz+wt5QZ9#A;cE`>`g=oA5HK$MSLQ-law@4_2r5Udx;GY*oht?tdTPPvz-vS2Z(f zNz&J=Hd~%*Rk&aKW6R&E`2oc>UL+I0esyNd@cgBp$^d_HfZt+yW^)zp?`{gX9}Msx z5AY9Lp55+DwOjo-kAJH=*A5Yk``grd%d^_f#Qo52X9&Ugek#EKQ-D9i8DdcXvH<_4 z0RN!?|82{&zRtw`S&1`5p}j=`{tC-8zH@QEm9zYO&F@zqusn-lF7DSpVR_b{xfqFl z(ehw*dHl@s#@=0OmK_pRYyE@jwU#&6vpdvvmN)u$s<-Cx?^kzOo@VFb{_JCxXL-)W z{n=mT>EElqVtE-aC{Fx_cj^hfaov$vrnhokch!cL4eeL0O|5OY((Klh_x40bBEcEl zpkhsPV^4Jn0erQa4t0wKGzwTEV5xv60m}gRVmLkVOg}4EHd=m(cczJz zE1T>K?-r4q!_l#S$4@g+%3G>NY!N#ionS#H5% ziP&OKvRrbKPNBDvLc8vc^U8ew?6UuQz&PGQZwiFM_1{YjZ6yxd;kUFC2|m2g+W}?= z>B5#maVh#?h5UE0{M0viZ-#Pndc8|M9~p2v#LiXQ&4(HM1bQ!dh6A4H zml^z^6A5P%<_U#S@DmQj%C#Y}I^EaRo7Ep;K$6yF-#m-JzTXNPoj3GGWv5asbM@m+uDPV zkc2CJqxS@DW3H!nsG$+NIP#6*RfGLI__+aW)p^yH?byV#z~+Gsi`Os|?)%u6%i{Y- zorC=Y*cEtp5})7jx0uAcy^P>8^IQvG=g6r6Yyq0v>cu8sW94pcG>Cmd@!Co%)BUE@ zw&C<(IOplYGR($*k&PloVVpTbe&l7@uHW4G3s%_ zm%7I9d=iCU>k^MP%kcWsj{cq5BHK?ktisDly{6U3un?p{^zX{jY;e`j4J!)Vg1lLQNJEtAY|G0zU0tQ&etqnXcKtXF;wxwPnpO3 zc8e+gbmq;&J%iblZdRePFHndR*hSs%^BNYLK7idY7BsXWq%>A8V7uXQ1``SFO(82M z3e>y;@e04-iww$d)qcG6S72K4jV$f}jmr~SReA^aO|4Hg)Cc8UU*Y%GUYWULp9cHY z7kI^2FmigE31f32CT;CTJ;62@c8g|K&BT(HEsSBtlTM_7#{3FS!Pqz1OK;v5LjK0f zwl%!WU(Ru}FHzryEkn%Czxp$2?zSBHqoM*OU-XMRg%hi{P2M=*)IiC93?TLQ*378J z%j-t{{j~&l2(I@xp*2_S!rLH)t{#Qe!VR{to|{#9+cJf^yMq4xYG2SfoTCN5H;_1; zJ)813A1Ji_l^>};d=lto`^ukfDr1f2Z58NByPIx}>A~H=3oT{UU>5th7wEoajHQR> zX1n+8Z}A$D*A@#@dN+hZ3!?sKeN!m4wYNW=8|vxWnt!jauirvd_gt6`l2-{-{4+n4bhp1x{qw zuL3h*dGQ--E(Hkgi}kylB5#AJ!ZO4nUkzMo8Df!lQ2#;vfQUuj30!IA z#3J7W9Q$+pfQUtY18{|1C`BytEx?slPAu}R)c*v2K*S>74qR#F#3CO6mT-wh&b3vq z{Um-s#3H{5c!iY{i+m4o#Y6Z3?ZF}PeZZAgPAu|UfhAmGk>3kk!2$;ni~NJYl~ztH z@(%-7Jd7U@vB>WSuC#JukuwV|6pIdlWw)Vv)B2OPq;C&i<|TYW#qhhpiSf zEw6oyQuD6A=(C=zuyUz0)R}`L_SZxPi$2T!wf|d-^@=EwFNA1?l@p6xmz^zBVv)04 zV#o0Va?6NmsW@TkucV9dT8*R9%86-*@-7@=hgj_IbL7M#KTNr;!^9##3M~0REb>nQ zSFFSjh*;!kPO8$%iABz8Ds_xl)4Y+RLn*@u{_##n5W8PRrjx0CLl!6C z5lb8{0gio*(){*Ca}{6LV!h^7^fyCPY30Ns?*oqgJ$^vMBL5@c*f%IOYmG(DezMiR zf-sBt25KnXrfO3LGfx(6Hh2|IwP}M{&lhbmcqehjV73QoRd~_&FIH* zihbM15*F)TYqyb4qt25)7M(ei|C5mui=1tUgDQnbf{m!%m%rB8E&PO6N^6E zX6(E80TGLwPAi z(opyLwY>(H;3V~ySp2dMOZgIuoau@^haZre##->PA84^IU(s)){D($PEb_IK|H#OR zMZO7G!X*}Y7qHYTVv*kf+`0olAeOaU_lZU4)xhW4>pro_8UKnF{P2uJBD z0^rz>@dF|j`K7?IpHOP{5)%0u@KP?sB4@f{KgAEoO(WAH;}BxeXL=?6ZrWLdvHyb~ z5V7d%I^3tl`W=tjeuLR>v<(={da~%v2CpL?H25Z*T89i~9!mWu7W=GM6-+dUSmb8| zS6Vr-$mapaeuf_qvB<}&|FM78>Us5lHAGTph{etZU}-PJBEJS$+6%GBuLqWLAr`sL zw;TkZb8##h)=-acYj+x4g41cYmwz#S-8$9=k<@cyi37`B>bYA7Iv{Vo5kH{+r*YV2 z;xHK}xvwW?{HNexJ(2r*sWX(bKE(bFKOkaB?>ykxzf+oDH|oI0exb#A_Z^o|{!1e# z7CVeX>|c#s;zN#Q8v73;Cl-CiN$&fIDd%|x4!Q3m7Wo|D*d$zhK*VB4*O}c~tmi#q z5u+1|Ly3{QabW()J)@gf?4#tKkyzru`V%WPcHFw8)BbO81WhDdrZdJDv_O(};?u2H zx=f#>&-^m20bf4d*e8~}(q%fs$caVHauj{HOnHrqS$+3<$2KnGcDKE6rTh$IpIGd( zNlU&Fi=2I(v_WE#-wG^kkXYn#;M%v~2ec1I>svK6*-bQwxH@~rEymAiFV+n;Idxb}4&W(HV_NC4m?OGOI2 z%wX1&$ZTVW;YDn_V_1=28J#lXFB{CTB6EyB>rCVvBfZX`ZwFryfG!Qd6drwnc;{-VKc#E%=in)qxJpAO=44DKYZFn9y; zGxz~rgCoM17eUt(|D%R#Gx6UV+(rBygS&~(HTu28FB$`;(1am+7kv)@3@yU|puu z45t6Qv|M21+NKRFq*LSQEHGHd=R!yRbNaIHGr!u%$>)W2k)vNMtc8wFt+n$qeSaYI zhy<(uutJrKMX=~&U_gJ+<;rwl8fzP|#5?>YgV2+Iy?n5MqCDd(@EBrTFQHf#UXwdk zs9_VuR@a`Ml>+N$3-7!hUfqx=xGwVaf-k&8(u+a<%O`t*KI$_6#Qz4v(Bo3rQ$VDuXQ**9~1gyNqA|K z*X;A&d~jA9yyS0|{QvU-lHbGEG{#y8P_(j)=}Fg@F?z#r?@~0J;;R7kI-dM0cKU0i z#%c%QSSAuz^_fN1*zhblCE6ol%RpU3=3Q-3&lmhUy|IF z!8T^eq3s0+L!os~1=1TDF^yLiegn3e=8G#>kelFZb~+i}CsOiP8ilX;iN%4{Qm5;` zv3+e@@*4Z@2$x%(u7Re!2&9rQ7qk&v7Zy$iy~u}W@{?TT?Zvtw^C>RzB~J>Q zk~uA9ujIpRJsf~dYv5%lzYa>djjJHL;RQ3(reGZBp!rwqQ%8Kae z?dWmJs+iuRjvlA8is?P>=y953suwQf{1XDyH|GqsOVJVtTA2Vvo~H z#q^kGqQ|MHVtSl@l6t^tsbYGV3ia&KPcc1C(}_J!XBE@K6q{#{)9A(Y>K#2!SryY; z;pqKhjC@(`=1{9lg(vk&e5dC+Xl+VljK~cl0n-V z>EJYFF?&xtdYtksruPlFNjf;ySxoOaM~_pkqF0Hyg4NGAa8f@f?>(+iFIRo`Pjm>cN6S&KrSTq_z1_fS8}ORN1;S} zO*kZen*;V9hrQ>-7|vqvx`4e0VDEXzXb(l>*<(AzzgNBwAfO8HLSpZq0(xJ79!z>9 zdf$W|w>*oAr}&Rj|A-91$$DyfS$bRT}VDI`@nYCPS(j@k}0`^K^WF9nVZxs%)_ZhKgJ?@7+ z>IsRxhs2&0EPy?hEA6euA@)iD5N$8L55QibcJ!jygD$BH_MXF;_SWDKd&z*kQ?S3tsdy1@&Hz5gAs*L6A8?O1!AP!@ZyLjBP8tj7&g-929Y_)W6)t=a1BLLuyf9mbFO zE%ufN?0vR~y~cpOla4(;dlh@xfW0^xuhea*dHJ_DpjQLEl~k}K`SM4BaQC$P{l?YM zm2e*p*z1P9LjBc)0efYrO!ctCe0hUo?|T7z?vT^Z1OcM-ik0lmA5 z=zT1pcW)8BX9IeNi|9>7yK&QTe-XW90X^;^h$`)ol-oc+@1Y|0J{HjXEcD`@HNUT~lNv$rnGtqX_LgYO0GeG~Qy)q{Tw*t-k%q#kT_?45gV{cc$UOnug$UTzy{bfLJDfG%b zEkB<>9SC;?!aW;$%x5m)lypo&KjG%fsv_a84(N42@6H0@wnER%zYPeN>x&ugfD`Wi zfW2?S9;R+QlJxEk*t-p#yrg5$vG=inz2{+XfoILnm!koDM__L=^ccS!4#}6V2kgz7 zQMf*TC19`QO20nK7#CjEZ>_xsU{WK5&e9591}uj&Q7?Ix^tYX1;zU0r#*Z`&dODvC ztFA$~42S91jYHCLRlwfrBKFn<>~%TzIHnhS_#{(a{5p!*dso2TfMf4%j=ir2>~+E( z%Rxxe`?mpmH^H7q5?zgbuL?e|v5 zC4Q{|dmXUHd=L_Qmj>+B!rnY6G5>DEA@+6$>|FzU=ZZ0_M>ZF**9m*8A*a1};}CmC z1NL&TR}FU|$(O$m=)E@(uIQDZJc%X$9)cdcdL-$6F%Z8)PI}q@O8gQ5dyf{eR|`G* zk@EPQWA84?A-0ejEF-fXxFNxuAPK<{6nhkuVm?+XDv zb!OrGdn^#Yl1{(A+zYFce?JJ=n^DBxcLMenIQHJ}*qe+)GS86j!eU>0Ra&h=hCblBT#z<9%N^QNOIdQF|Ew`@+5Fn>aM;=q*r5+$l3$wr8H< ztl}24Pph%`0-QMppw5N%ywIL6vgcZRUS!X8_I$BDv;62^=E->dCeJw~o*5^eIVZ&P zQhVl{&N7QRAH%YzJMX1=#&nXNUoqcNdoQ>j?ZHeC?pDnAYWej0K-7dx^U6Fl~+gV79h1k{oH1l=-o$;Wto`qUfp zimG#b1}K_$M@ZfsfslVqK%YICPf<13XMn=r@^D9RbZ3v}Q&jhQF3;Z2r>J5t=u=d` zP3ZFM6@7~8w}V`sy`)c3?`mgc;cvsq-H*6CFF!yO)xD`}kG-l-QQf<`e3Q=r@!N58 ztYj9>5qz7%r6_pjINf;tqdTt^lwsIgK%c#}Pf^`#yL_{L_OZ_sy++UF=N$er;QbDN zIq+v49+y++i)ydY?>roL+|$4xcKGeUyp9`sjsC_w?}rVYub;ofg~gR|FR;&7>u<`R z=eY;-kFoVB{OvqmxqSM=w}vpVa_FUeYv?ZPpW}lV`io~AdwQH^vz&EmF6wukQv`Hx zxBN8VD)cY=EdMz87;5(C1Nz?$@ISUZ$3a!7FXuReN7|1E_}5vUDUTsWg8}ysTfR!W zSF7&@-1(e@#Bo^_?m#cLJY@`Tt>xpuRcK8+EMKAd3)E;p|6$8d(e4+j?^>R7XI0n% zp_~I=kl`;<&3SyS+L6aEQg`L?b?Ptk_>0wZd3?P(10yz)2|uA;XL%D|gX+t3U#vcw z$2Y2f$>W!(x%3D!{+FutmZyyQ^X34*%ksEQL}|QEeIVfe%>W;L6)hQ}y+nY|1o;0I z;7OzD4903I8BL)EcECRhI%=ZoCg9q}V2Kl%_L&47r1V=MtzH1cR zRoGtzJC3)|;?ZER-1W?ivl7^--i)xg%d&hoAg~lT=)LGWGh)?SSQzw~DE2~2$YSHdO{Kmrg@FuE``Nq)8AI0OcymK(S4n>cb1;?~m-`PKu zn}8ziZPcG3pMX897~a*~Nld|4?uw^poKFyh3u6MWfsGN`gx{kZ!$y%8SjO^kRbN{V zzCbX9OVgC4Y>Mo$SbX!SoCXvV^`q^L@e@p;EFhY zK*S<%1g?zZ2ShA#Jw~&3h(+EF9P7jnh*;#jN2#z=8pI;s1zc(6#3H{5IQDw{fQUu@ z31G2LEb`A$z79ViVv#eiTjx<~o-NhRH<)v|wafre8;;rwG*s7;UtsVcPK&Jk7Gh2m zgAUjv-5W1F;C&lX9Xc^gs72!iNW z>JKq>m?qxSN&O)f`7GerHTVG$i_JK2jEi4DaU3Goal4w*{J6!y$F9?2T~|e)VOMN7 zaUhm(d5=+P<-{V_@p%&jAU8g=Uu&m`nBGV)HH_VejSuZaSRf$Q|44_1+D>GL!OX)* zpTXx6UvF@nc%#8A{>U2*X3<7&Fu0aDWiab}WV6AI#A$<<5pOYg1#!mUX5ub`+laFU zuO{v{n9+?47|bRSd9%SAh_5u5MHOL112O86ts1J$#M=yJFp>2JcM}g8+)GRWh`~g9 zG}J$lVUw37l;@0m3h_>Z)yuTkLa;j?^FGFV(ekCi;fWz1#U1-%m3K-4yR+vzGIo~O?yR<_d0bb^9sBdE9vyFnTgPVzOZ%2 z$4h=$J2bc-H>mIse>^XF1O4%o@v$g(xIdnH-k^UxWn!FYn7r3@gLf672Iaps>b>Gz^sU`spBjF1 zGx*YO0Uxi}Ta9K7c7n!_Wg$Lr?|9Mt3Wu$bOzM~_2+VtTxe ziaib!is@~Jo5YXT*kXF!jvj{##q@Zs6?+^?6w}+~=y8})OmB~)w|NY`{f-`oC&la? zbo4lMDW-SG(c`eDnBHMWuWJmwqmCYjL&fYp=;(2{Q%vvEjvj|X#q=I^^jL<)^d5Kg zI8-X8_cYw3UUA4=Oz&AoZ_OBbKZe^B9IW>oiWRf>bGS*ky^dZba0Ca(>ZFtAlwhl*UDLsB=dMj|yjp@RW)TG0D zT#5+s-bG04{RIS!tAyJOhGi!tdY^*84R^|HrTESu!{sfdgiB-Ep7l5dXU17b?EMx3 zZO;lGz)jrQkgdeQTWPVkLhM0CYJ@)TXN1IF6ZG8p9e3=_g|gVYDPV6E3{;6RoWyhsPvOWq~vDy^S`viEY6Vw&GcL(%7T}1D(fZpee==~y~ zcf5$+Tr?mz9ZwX|>kQ~UT}1C~0llvm(R(1E_bl`Z<=^)Lde0THcMb~1O~+4**tL14lD{(a8pd0(4 zq_sB*@ggmNJ@(5&)FU+q>^%p2TvtweT(>9o2CcmYdIG&4_T2WyyybCoAl&27n@bOt zs6+Z>K<~%UW4whVejg9SuMta(=0S<^dmRpm-*>D%wnfq}V9)KxC4N7#dPWQ18Igdj zK;rkG(1VEqSFb}DoJEgko5kAoCfM8aD$K`$TaAO}%WzD^0ec>u#Dbd#oC+=WIOcTq zu0eWZPK6P@iukx#+7&;j`(5vK}?Iqk=3F=CdNT!UG+IHyKA!(M`e>jw86It$U+hB!TXuPUoM zaO^;xxAO6^jhS5!mmJ$SeM9N=^1ElLZ|(WWqa)AFK3YCf5-ER6>5J<;&FUi`QKQ)k zReks~s`|tCsAC7#jyy3^bIW@X%8&LS_<=!s`uQd%-Th+os6Ps z8IEqFBc+jrx73Y%V#JB1_`4&|-|YF0mGaV3HRHnaU(HrifB3HBrIS|9K76R7{pJ%h zu6)PL?Z6D1p=rHjXG>=P2{p6S55s6k+~rIk)v8og&tx2rzfYarguzD?FC|vj9Y0y} z`nm%(UVc2*Gdl8<7kAtq(d%Iuj#wGJ^*>*H>Tu17zv5L~_HIm;mQViqRBB`no|qwW zofG>?)opE0H{Wr4;)+k6$VQJH$n5@1N%=^ddcq6y*hqP4$qV8unk;!?@BDo)lpZLb zJnMyzX77*tc~7^}1Bs`ia2Ng09Nxd+$<^gMXRFeiKbk!e|G){Bptv4vd$ReAcQ0PG zHG1sU%;1+MUG&TOXUv#8a^Q|1jF!$;a}STKS$=p%(g|VyG_`mB@fR|49#-XdPm8pS z9C@GEV(xEfDQmgo-HFRT`Gp@&%KY+c>Z0LK%{Y8WG**9bPZ{5hiPlV4)$@*@j9z$R zawa-;*0Ea`*FLC5u3$-w&L~yox1Sqn$&Q}!%NIuvbg1%MXGEeWW<*AZXR8B0`02>I zHk3{}Gz^jA4u33*gr6ux|-+K2qyDPidFD^U~U0ABxS~9n{MMkF{P+ys~cI199rr$s3 z-c!|8?UBQJmHGa;r3Yqy_wb?pNxw&7oiA&-rsbqtB-xZ?1!hyT4p_VSMuq{I$Jh8_SNLU6J^O+CmwHk z`o#Xn&^uu@`mue{3zKR_GIQJf$o|z|nSI-FDYe_$zJF-`i~E~rp4fAb^zDcBivA{+ zL@7$*H}|PTa`DK0ll&NpZ`#)F3!5rj_u-P}pO*bwnbev`*k>LnRrimq@p^Wxi~jA; zOZ@y3ed_sfP|5hp;hx?u?mno$qm2)Z$NTzo@uA^?f&RfkZot34l9vuq6%V*q1$d5Be2VI)!!GZRXlail7@xxH z!#R@iDZKt$M$1MgyuN#>9_!HcS{#$GzI(n=)$)jbgT@MQih}1jisK`Wjp)wvQXDMT zu>Nvy4-@8Gq4nSpd&KqKSApyDBxUMqU_Tei6zBNXI_{jay58aYf&EfCSKSD{#&bVc zy&X92@#m>`0$=L!ReCQKY#(o_O5F?ejIfw7_!D6Nz2Pdor(Mj^e+2H_Z^BTOdJLe! z;r|A_U#sS+uY$kUbFWd~2JesaYt)axUxUL?joy2%*U|qC9Bvb5q?CJ-`Qgtd z?GLRQ#m^D=YnW@)T=17T{<#;^S{#OIR3q>nhrblquT=}w<=~HtI_}6`5B{4D&wX!s|!1p@tJHYR8_?_V2;qVOG&;JGLR`7ApeW4l!@0V|_;(j}RE3Z}efuG^&*Qt+# z=h)s*y?O+^-;30%N5T88v_X9dyx(UvsAs_Y>2FZq0v{K1j%A9X`fW4M5xig1j5|C# z^j~2;KljHXF;A){y;@ynZ!X!BaXt5kE#Ig4GWERW!Rmba_W=K&0Unv)5%aa#@(eGA zzg!+aOC7a5+jI>5^*00l=a(3B#{b!BQyyQT-f4OEtTFTqk66A+^XI7_S-uv0)udXr z7T0f*agVFFSpE{^OAOLSEl(ZB|Cs>KeTRhT{@VaA--)FT-QVckTa!O%d4^wwn)rOc zy%G2JLezhKfWOA_`*nP4)S-a;M*{qh1AN?>6QKQm%RdKPHEDtRdcgfWPAq_!zg3eO z)qv&KlE>ZkB#ezoY;#p;Iom8x8SQg_6cXovt0vW{-vr#RqFDNt5&vjV0GK@mQ;JH7wha&>8|uZ zE<2dwnuzf7c&=#Ya``&0eotMQ9o&}fy1ci4OS*SRFM3bd9KWncIkZIk?Q1*zlLb7nZfG&n-?N>N~N&cmH5J)`2G)wxox8GAWcJ zR?fF)C`x3y(}StpV7eza)SgKuAzQAO*Qe8`|6YlF801G74$!&GsQX`fl8=c4T*C26i)Vt}rQRNTe8bFHiW2$d3NL_Kq!y zWRlB2bKQgeH>O}=Tdq5m9USa0w01ku*nt+L?`5#Idshw*?Xx-e_6DySgq9hF{NO7K zd49rc#6#im%?1X&Dcw7amlZO8slT+MUYZ^n>e<$(Gj7}nGjK+@9V^;*C5OgOVS`Pf z@i2kpC0cv4>Av;4wia089?A}*ze(43qyGxl(1ZX&f|nNCGZZ|_8s&=k5g<{KP& zFMA-T(Sp;NH>EP&Z%S<&P7ij4^1f-!`j)}L^zNk{y5=Ug7kkx36c?jxuqruZDACv| zFHLRC_4E!kEQg{eS~b|eV`WcY7vIC#vK{%3fY`Y5mi#0ZZ@@Lh^OIxvW3In}8IVhTF#Se(swKG;cdA~-R z)F)+$@%eYCtx%tVkqVjn4fxobwOH>}Eb=Xs z4;neK$eGD0YA^rcLR#pXO!>pyE7jUOyKQ`3;a)S~;=E zw*X6X~YYpyjfVx=rApnar}UYMb7qBaUG@kV_!6w>!=>>liOQg{J8W%#NOxcg$nB_fMGUI34ey zIn&ei%&=w7^R)chc+2$X>G%!Igr2@vZ&LI$yt)&Yr{OIzp*hTagRekcH`9Ol!Hj)h zKF;i1zNuFr#-SOlLLt6#&s=_Qp?Ndsg+lzDCf)KUdkUFabWaTX*@| zjf?bS5cK{%Lz$g*=^P#uZNc}4@kDwX_rEgN-wFH&MVz4oJA$$IxR~qQ~K9v2^Tr^mv<4Oz$p7 zZ_gNdhaEkR-Nhbd}pK0gfp+#?zB`B;-u33LZSy%zv@IP@iryaJ(0XPKVX|EciYgLSpYu2wZ!Q!`?y2Xs^t=(cbeo zv^|_j3&0eL-;dy??P)Ent$U3b7t>zMy3roLHR#$~TErgj>0NvK9ecAJd)ou{+Q1_z z9!Yw$0ehc@J&vmxKi>C9{{3md-e&NH();0nJ$0U+Ufyqrz3&I?^%b%A?SQ>{#~z3E zV()w;2&!H^<@=Wlzza!wD*)X5+YEafpv3etf5hIk0egH0wMvZPEcP}A>^BKG(mrW?O0=bP^uGJbK#-je})+}D+B#)ROk>5Bn-dtmPx$Y`$$hotv4Xpr=9=}3v^Nij*xM)ej5pN=o@>N}#NOM*o^?10du+?JSA#?B z{jJ!u9-oB6b7Bl+`$NC`lS^(Vi^7~>{1?;VW9{n&*q}%43`&8QF z{lD1zvw%IW)2pQiOA^0h0eg?bUOjYZkNRS7F8sUkI|ZKYM@a0Q3pxEr{C*94^T5+y z9S*U#Ctz<5I`p-07ZQ7K4cI#ug}`uWkMR_HuYrFzeqG>strik{XG8ABuMzg7y){5t z?A;!)cL;o;_Pak|Z$IpaK6`+?ZAZpUGd^P{x46o=TG zg>ebf%Q%xNz^^h;|I&@e0?64fq8e)244yWGhB>u z@NPdYw%0(;@L5JA>Rn=>{+0Nxw|e6ALGUh7kHmd}5$1s5l%igTFgS}I&ytsPeja)c oBErqUGF~eK<}yu51E6|8gfn^Jvn2L7_H*^7pc35V#8LGAFC;IDVgLXD literal 0 HcmV?d00001 diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/brandy-auto-ota-cli/libace_http.a b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/brandy-auto-ota-cli/libace_http.a index 4adbcbe7bdb7eef49c67530e03f4810d7da16d57..f0adf7590a75fbe9b68953d173d60c0687a41063 100644 GIT binary patch literal 78448 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
    % literal 71436 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 WuISpsaxF$L=@F&=g0zT}c>gcW6ud0} diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/brandy-auto-ota-cli/libace_websocket.a b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/brandy-auto-ota-cli/libace_websocket.a new file mode 100644 index 0000000000000000000000000000000000000000..4eecabad8ef3b9359fbc88aad9c5ec7c8127352f GIT binary patch literal 59366 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 H&;tJ->cDQY literal 0 HcmV?d00001 diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/brandy-auto-ota-cli/libnetstack_http.a b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/brandy-auto-ota-cli/libnetstack_http.a index 772a439fad978a692978d827739b44dee5aef1f4..7cf9ee13a431cace369bdb67b38f6976ef5a20e9 100644 GIT binary patch literal 64222 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

    @sEPNQ92P>{NrHX_+;_F21_2Y_)Z$~jMjO` z^tt_6F$muT$kL!8SQ3%NZwB_R(uv68=Yf6Wlf^FtOCGZL9nvs;?`oY0A{8hD`^G0r zgDzl6L>9jf*c+qskj3u{_Ki;#e*jqL!TeK5U>MjNs}qsM9|87_PZoa+SUN-&e-hXm zr}L1-p91!cPfnfx-v%Lx$kJdQ*t>Hmf{$jA?A&b8n?2XrX$l@p0K=>v= zmcTl&BqEFdG}yaVCnAf#73>?IEdKLg$wL-@FW9@z9RDdK@H*JPPEUX={(i6|B8&e4 z*!!ujPZs}Uuy1^__{YGK=U5unzXZNRz?+~Gk;Oj=_Ki;#KU%LQ5m|iRG3#Bg^N_{Q z2K&Y*2R`>d4?=oGmIkfC-b9^7Mr*qf|7 zL>7NG*f%~|{JX)Dhnzb9Uj*UZq!W>)0q+g=jZYST1y~Z1#eW>^P0@MC;;#q$#wUxv z3C}F25^V|vc7eT{bt1Af*bVlLPZob4SUN-&{~*|#s`HS=KMeNa2giR3348>WL}c+l z2Ya{ZL}c;52K&Y*i+=(vdC21PJ|l0M&I7JF|4$&`n*doFGy_W_viQ8K*}GLIB8%S! z>>Hmfeh0ARA!{G=-wguaeijU5Y0wkw8=owGAFw1Mi_bfzyr1bjWbucAedCkG=Uvl@ zBtC=TKp}w%U~jrkL>7M%*f%~|{Hb8+5Lx`$VDEOFhb;b`VBh#j3JJ^uOCqxPOTgX? zoro+xZ_DU~jh0Ll*x_uy1^__}_tpJe+9? z3B(#8(a&`vviQ8A+&4a1{0y*kh%9~{*qfvCki{}K3V*gV9B$Rx8+M< z9oU=OK%~3+x-8Oh1_aJrI(JEDiR9y?HtjS^R@w z-}q$l-vdh?viQfq-Y<0?viP4j!1R3+fJgiEPfi;H$GW>-r_HL z$l`lo?^n#j{XZ1Q2m3()H=Kt2BCsSPOQI66w?KD@EPe&pH$GYXZeYnnPM!br_F3;< zoro+A27-O#lf}OjEQ!eCUj_CS>O5re$ANw0lf_R?fRIFF2}}cfRXPz_d_IKW8=oxx zY_Q}Zi$5RiEz)_&;x7dIi}dzqQAl73SQ3%Ne;DlDrxTIIUkmn)PZobYSn`m?-vag) z>pWW;V*N{C8v?!wkj38#mPBOn_klg76OqM#6YLwGEdBwo_rH%Iyd^pjSsL*1 z3E%i+@sEQg5n22bU~j3;Ll&P;F8jtOiys50?*E~X03W;Xmgz)f@tcBu>Hmf{(E4_Ll&P8x_A%iJY?--{y&HC zO@J&7z5z=jviQ+-BzjmUB8#5}_Ki;#KOHQ2$l`loFZqa0L?MBEuy1^__(fnzL>9jU z?5)vx$l~)!8{hb3@wI+LOCqxPd_>1vtMib>9|iV} zPlg|Ce-@wNkwj!^Fd6JUrW29Hp9=PkPZobVSn`m?=ff!8<2nyn{DtY5zHb5xLjgVm zB#Fq<;9;=$Yn_NJ{#vkae6slK!IFn8{uZ#e4tY5L6cX45_8GuH7JnyL5|PE<2ljrW z>yyQQ6YLwGEdBwocnQLr5aBG)REG4LT87{H9>v_+;_(z>R3~OCGZLd^*Z|Qs)_hulY#@hJt+)AWMT0U`a$4|2nX@NhczU zKN0L3pDg|qu;d}r59WU+g!hzAM3x48?8-MjS^T+RNkkTZG1%Lz^N__~2KJ3l7Jp@9 zOkWZ~qyp=}UbRj{mIfQZzVXT8Zw5;qviQ$~y{B~^viQ5ee&A#NDI~B5EQ!eC?+1I& z=tN}k4}yK;lf{1zEP2S{e+~Aw=se`q`Tutiz6p?}0Uu+NL}c;#^qlvsPDB>J8Q3>I zS^Rvk0n{x8iZ>A$5p+lK!~%}v3X`!yGXGj?k31ny(Ff5;zCep}a>0ZwKd z&|(n-f71LoxcH#vb>PfDYkr>oA4t&lv z=f5FD=7%~^$N(1sh9dfZ(cF#x$C|s-|3vd(`bRVmq5oIS*U>+!c>?{vX`W60nC3b3 zKh@ixwTyw|I1mzSZJV@^_jikpH21Hklg(h9%_hHLoXg!@#hU{DbBLWDCn1!*Q~$ITi(*ZK9Cu znDhTG6#QCB3od?(q{yqs*>K27$uzn7e+`2%uu&EJue`C4Se zAzEl|O)k*foy;!)#W0v`CNMF?b3?p_T&U}BCAZT2I=M*m$K=yACr?te)*?F%e7a_S z^-@L~&6VV~nlB}{(>#I9ZzIJpn`}C_g3O~4hE3%5ns<{sXyz9cWt?e_|6fy-=s?4I z;8M+nB?G{~29%;1~nl zG)L>#R4O2!rTtFi?wb3D>WnA%(Ebc^PtA+SXKQ|(T&a0GxfhtnpSLJ_>%dX+Pc%CX zzqwAd7$>EkOyg=OCGFwC7Its%lY3-F+>OUkT22v9{Ezu-;giU zoZbjLRC5vea?Rby!!!>hU!i#%dAR23B0&$7=3P9;bOIncu66VIrBY!x-iyDa@im3E%|26+sIQjze&DD z^AT|IG|flBnPz6va4J@OtM==I#cxgjHtl!g*K!p9OpETJN<&#`y7niKZ`V9ARELYN zkf$(aXl*8pS6!>ntX8u4QTj7=eX{nk|KTuf70%KDvNXUk$ts+!eX{u2L#@J}Yo9DW zwo$9lbb>5C){<2?N7pBdk9k2y@6Z7X2_zV}Q~PA`v+3WZeX{sG(=EJP`(*K((Z5Ig zWbr-vbG4tOkU$;-zt91)`1$nbX`d{90sUWUpDcbM{rTD_i(f>aUk;6d44=n807~Hk z9Ux1CHuUe+K3V*B^cQNMEPgTlD(#cS=jux=*FIU^BNSO35m>4N?2!bb;NnHv=OX>d zeVXZe+b#9r1^8K!?P`5hq^a7F7b$fX+p2Mwv=sVHY?WRRY3*#fOLfB7or>z|x_Z>H zGu$~fx)|CyahF=pdJEwf>Uu{DA{kEc-RdO$O@ZIGWu%q+7FO}cY7o%b)?CeRVmDRu zTB7PV&F?!2-lSO_YGSu;)Q77V^_yU{RP9iXAM4Wvud5kV>BkG5@pr49g^@P$D_IrQ z_+hUhg(Az<#1HX1U+?yboFA+4_(NLN{Vs^~4gVe(>utO|(kot54?oP+tU56|GQM7o z7vx)dU8MAa8ZY?WuuqyJ(`fq=D{bbI9OS>oid0{7M)dty z^}w>|6kBaw;bt`E;ef-rD2|n{e&}nrRF#gKp-!y8ueIF0Bc7p#Kj@~bZH`-@+D(r1 zu6p`69n_jnBZ=f$K}*Xz4PzTWMj9R>(7j^3U^56zX9W|DBORb^YPmTmUS5AB5hc+Fg_DYt24FQ(J_i$U~(i~eT3e& zmP)T zxQXOigxM`UG{bKY;P!r07yUHAoPUCvS=;ef&U2_=g05-rS^JXJ}INnIu2f$(nZ!c;DsTLS;Q9)$4@#^+v5~?;BkZ#Lu>x#{gzvno^_5Ev;VGkXrF8YUvw{=F4hJYe2$UTdTqr z)$z4xi)1$U0}R7Z5>|oL$!L0<)`(h~-x(|em;_8Z+A@j~lNs}bJp$Pj!>Yq>F+ z!A)4D)<~l(0$pyYa07U+8_g4r1WqVyP8q`(ltLWzij1bm4iACmLSt!(O>d5g7eFUl z;;8vVtp>YmX}&X(Ap`r}r(ul%Kl|svEvyiS_5!?d;SijNTHS&#L8Rt^q|oYajW=;L zOQJ{TS-&tw3sh)n{lr>twBC68SbL4ub8wEuk5gsf9ATiuQTIat2 zUnY0c$kA6_JK@?X_N~hHa8ly-jQ+x}`Enoqg-4|$_4g2!j_jhkb+At_(BJ*jd8GbQ zqs}AscK~&j?*uAW8y|7=)awo0ysWx^6t+pd)Q`Zb&-z9StFAmRtNPrtqx&1ixbPBJ zr~wz_t9(4a>f~EFwy%2jkLK7{s{FKgjy*z6q#CKxAAuUFR#1&nBc5 zv9D4msjgPrMmQXGxDaZLT7L+mxEcYKJ612PnHb3_=-ps%oSKht#yGvT%roIMHRvx< zU+udv>gJAzhhZIxwA>6%T&s>T@ih$M$5T)w{5m)>UgZx!_&Nshjgcr4J_1f$qXsbi zQwH(HvnUci2~JEc*CCmfG+r(za1O%dx$+QF|YaVykVdMqqEfFtQN+h~W+iT+ zi<2@G@e9GlJV(S3ER$}UCt}pzFz5HIY1%(!-uK;ayY@6SV?iVbyZ5&HG2^$YlfAJk z+@{h8V^wyjn!gu+RZog5)v*WB`R=!>iIC3EEcNLX`02x?7e~7zwqm23qcV>~vlb7* z{LZNAc_JrQzlF3)Flp&8yM#U9(0mt*p@o`%iJeoxgAIoMC{k@OIAON4!Rn47(f%?C zx5#Z~&rmBO@f`I`L#(zEOfUCZCeW)xQuKkw6w)8UT(wX$xVvAeW(tZ z@8UrPU*B{$1cvb1;>Mo1C$RB5WHmWv(x0n+vgD?f_=Wb#;xD0Z&L7C)uLPSfKT_qL zoy7TO(LNli^Eg-*Em_(Id!0Fjo({kGZ2ZB%Ee1!s_1D==Gx>lN>#?w1nyOct=2wl{ z@8szYegx+;j`M7d_lF>rA&?Fao2Wju_HeW99B70Gcz zE)vx>odV=YEL3~HkL8@USm$epk#r*uT-;mxTqcPnD*ayMU#de@e$pSVKJNiF0(+H> zQ5$|a-iqL5Fn5Kn-7i#oAUN@$I<`2P)6*PUhK0hxp{0**793j6(R>v~?G1AVuz{+^ zXUCe_bJd|?IHH^FHGz=yi}Pkbgg+R#oa~h(^D7{$H1n_hsE!Bq9|`$uL;l0s5Av+h z9MpeIbAAw*s|B|cd$nf%wb!bi3M*($)v@mfG_G~(p*}qpZKCig7Jl6mzepdPa%2yW zPKe>1&l_siRneTp#mK?==LA{ah^Y}B+@_iIImwi-UX$wFdQ)~xt(WTDZ&SW%d37|W zE3>Q&+gQAr&@%Ao!#QF-F14EGH%fEPYs#+Gd=6qdrX3#0`6h^?n&TeHF_4l znYLhaJfnRjs+_=P#40>Qa`Idl_oLt}CHRFpjDp|$n4~WnZiuDT%XVnuhf!MNd!kW~ z%{|q2e9X5Gs~aDSPUk=n7#ZPoS!q7zIMbCjA5-qL_X!5cP=tOM%ajgg!loneP(VSIbb z>WeUwqpPXr*Vk%(9E}>PS=Dwn-yMb%p9m6n8 zDOWF_m*(RXXf(qo&P&T^i+AU#FwfN4=Y}XRV#NisWje4yZA6={&%+L8%h+?!oNoe{ zohR|qocBb8n`bNgr_r1yEf5de{PvS{RXQKP$c{)j@nP%++`pK(oBG=`QQzf_1D<;A z9w)ndt;*k^vg|foN=(F=mRBzercrO&j*cX2P68j>}53768yvgbA zsrC<;V4kvVJIfxTT3(OS;twW7v%6k|YT>E$$5dqToD-VLtXk=cRO$8TB)@qm+3uWye z%Gw$A!mEn6MC7Si5v-G&Ylqa06Y=8C3xAv-w+Rjt(t^)qGB+AuyZFX`wS(1nz{d7E zDP^bWPinrzgf`U2)g%Olsm!LfAA2|pzuTJ5PiowK= zhS-Nosy9xGKI5u3iL``z>8FtrRq{i$Z}mr0qaWF7Kw0$S>gKmbJKA<%^~&jyLAlJt zfy>yo&I!&Gs2x>$JklidjNlUn8ud_Y>pbO8j+8cjl@5jmD7JOJx?pmoB|i8Vpbkuq zB-A&bMlwcz5meBxPWz?#B3+^#WHG5{XGJ1h^(osjo;$qAP zGoy!E_OlMNuV%==__)!S3tai@SN;C1=tz5XSBu{^z@acGXIbNn9ueps)-t16hk0Iv zW;e0XGmjO)md~L8rKNSD)x&7k#pU(thklN2EeT;h-{@?OY(%98*18LtW68L~#Ixb? z8s)dO>hnPi8QAXZTKcN6#zMUTzsD{0g9-6@1R0p%G3Ww}r2}6<%Sjt&@$AOBHk%b% zXItZq#_<5Umo@K{cyEjMLv!GU)e^hp8;#9dYi{W+@rfSqH|D^tza@Shy(xQvL3d!V z)yZgj#NpLn-4QKyN;=E+)XpRIm*JOoF;`px`jTsD>Y8iUk)>6u2H-N+ucPTz5BATk zUT}BxiTdhLzSFpV#VHqCn>8uz3ghA_qo<6$aP-yVubnvd{E6dksM=A1&rjDy{i>Ch zpQF}q#D`XYZsfM1)v)^Os%Sqa9-N$ctyIsy;>~L-H3IJ}@#*OLjy5g_wp8;W4zAwH=t!L{Zw1&2CQHR)gnr^&1)ObHQajQyS zg79rR{9Y)0oZ+9To(xadVH^%plTHUGZc`H(Hp!cY!aPtVZdWT9o}pW}359vZHIY<% z8E&n^=Z3<(xaqf6ClOX3PK{^9ctciVrs{y}mRHTv^?B=)EC(LWi+PrVp&5!Ww>e?% z^Tp=sSTVSLPyE5K3+0r{L9@+eirM-y#n1IcQ(PnCMbkOvGQ}OiWeVp`tl0iov3IEf zxN31)B@>!!mAy3g#i+eu?nB<0ytto(!`sB0aLNAessa0R)XSIRq-JJ&$4#57TNSC? zBhglB!O!BZJx?8bAl~$<#5^537bBVPfnf2;;tvn`Wbt{pN|?1p7N5(En?eE~Da=J+3_0iS|n@fQ_L)isTy#PTWfupTwbvKMI`S28>}8 ziue=3iK^hE33+IjTf2n00VVF!yMx+L;N~XznulRNid0$#mU$zK|1f=pKN!g3^Y|l| zx40=3^TY!KcfsO50S51kJT52@w>y%dr+--6i17W`kH-5bIra}aLs;nC)B_& z07Yhmn@`p%x^-N$zf1e$Fp~PgZpLjC12>rB^8&QEirb&3MwF-Js|~l~(mbxo^Ahw! z>d-UT52ghdq@CL>_1l41GBZ{FN(5)A6%S*C10YoH&vd3S7|GNoffEm_8La$>TD&rP zi@ipruY!714fp|92ov*EPsmHmD%u`u+YMaI-4g>(C5z7w&>DeJMnBCwF1Eiw^JN-|d*hG64c$7|E)VanqkiWWMF_4-ovj#bf; zTrM>X;q8@Mckw_qmn7*>U`INn;TJJU0daud7LpNk!q+eVGiKo?y)7+fgXY{(QG-1v#j|KiS zYA?d-LMPtL-lEpG#u0prn&IGh`K%f-154{!)WX1xNAhw*O>9*oTDv(t%$~x%K*GU1 zal^w9>?xOMo{CX>!@-*TUFtBBrM9n$y7E<%*{E22nQj!t2#+u61+eXu1@N3+0MCUE z8%>?O=hQ?V2ewxo+JnFPpzy3dC_Kx9LQYl7*Ro>l9zXMeR&URbWM%Pi(Ef5gO>Q%Z z2lVxE^>)X!EVZDE?OyVG9p$34cW7=%eqJ;G+Ar$G%wF3sg#4F6{!Z-&d3IHATN`zv z4QtNjE}o(`c1>%!aA>G?m}n)aDCUs*iKU;q&gRND!IzcH~r>vPuaEly$LZc zVD@`*xSkrFAI}PYypN&kaHv*_orp<_2meLAJ&4I7TKO;P?MKYyOIl3+V|_ndQ_tEFSGE|S-aMV(h*W#v-<4;CcHfnY{&R8OPLFK3&JKb!xaZ~inded+q z`2dwKSD$Q(o>y=98F=#<$gWR8_Akacht23cl*ila)1J%K+mr)4=nI&atG1gV=RuYP zZEvOAnvyS59);vp^2=3jHRLqZj5?IpQclMKg!e;SuAYHxGzZ6+2~363UhVj~MntF`#CCI)(2fl@Dl!0rX+&-A3qiWg7&E`_%uo-*4xl4HFGtqiz z77RPlpc#k_!WTZXux8M=)aL*@(R`Y^F(d7tE?OQ$hG2Q2c2^XxQcm=OS{e9wQlZMM zaQ`X8OiVbK2edjXlwo?U47{OjL~t>^>n#XzLX}vY99}{SUccpR@cjZ~?8LLRQfyVP zZHeae;Dz>Z^CEOymIB`jOY~P}lp~SsIiGO06 z^EHISA=UC(Ts#|WY%^EZr`V~Y>fK~4H9d)Zp>9M2^}%j8!~F`i>IK(YGe54C;H27t zYKylX5(_7?V&U}&Z?x1uK_#5PTup@q3v$%og177|jU+2ZZm zHd+(}mpAR^>a(qQ>#=Dot^hZ~A`CB~Ay`61m@?Pg02Ic!=K7*u&}B1~Hp>1TrgBp) z`@EoEyw04tvQ}t}8iW>I@2@q%X`xjzI5fdmYc-#sR;|9`8TFHj|Lp3 zsn5_n)5enGY{>A0dUtL-Co>Z^miVL^yVthp>5X_6xBzoM4E_!JO6>ximfpd8>RY*( za=SFOZCkXc=1T3cS+Qo3uAR%O?B%E1N2}XE7u^wUsL=c`GjVJFyK{@HkN-aU*QmOr zb>t~^Y#6S!e%BT^>gJD*53VlS9o-bM%c|dgHTp%wu28SOhApbuOSoVB>Ay!ZMsMRv zHbVx+e=_XRQw&#)!V!>yb{_SNy;N1`{`xeFjL^hS~R zKycz-wfC>M9edDnbUWi{bZl-FtLYOJsrWE-Vv(AE6mJ<8RljvKx<2MK%U5@P5gp)^ zK=+Y{2!tCgO;4RLyFfmaWeDI@;L2TV3*X^mLbx#m)>qI8^t+c7~s!)_fgpZBJLP zBJ2z;R$o&tR?Yv8+Pp^V2FDvU{O{2W`$2U*?MGmzX?q>*->Bcw=3|$++CD*hziRYN z^mL54N2&hbz)GkqVL1t0F2u7a?kH?C1J%ZFqOD>ZvMg(CeKq5$NGtXIH_^7Tt5j5X z_%=HJ>>9bEi`%9}jof>g`(?Y7)X#*xJKN3760f5Q_O;SZUDTkv>^9Xs7P~v5b`SN# zGPi}@RkgU^Z5_Yc9n#<~_p<7~_v2H((j~zf-dZ2?nXX>=YqfrI_MM)wRf9&_APtHCF=bVI&K zV9*INtX@XnB^U#R|mSO)eIZ648eWfXNL_$MjFja1bpUU znbEmutnMz4pLOki_)*BClMzSRP+ zE*yCMgZKK6GMXOekYAH81NG`!nqOKk1LGgo(phN|#YYjWQ0r!Y>wHszOD@xDYt1=D zpJ6?Bif(W5F>MaI{+U(>?9(;6)cWZuy4>Pp*E(Lk>tQ!;=bIldE|puh0s7Z>0i|VC znWKxU)7QAG(yBMCclS3;PC(p2l{4y6Z|)7%;p*R|*0vtIyx+{xl62Y@XWbUWB`5+!ruPQTeEUDRnWVRTg8%+W#h z0!M3Alb10{Q)4+AuAX|?J;PqF-hJ6^~9&`Ua>cuwU zCHjMU{NNfdZ5O`krjG9&tMQ@rywnqc=Bd86e{_HMcfXwsjPx$ zPfo$;>c!8-Ub53VWAANcJ!Mso_+6~0e{CDAH}3SG*4oMIn|<`-AnsYcjOJ?QF4WiP ze&9kJ1a7MpUs_AARxQ(9{r;Uh4?n9sQmYET2Z95S=!|!+wHsehOHZz)?=*Tb+9&V= zv#VD8P~1{~eKFoB^YdDPGRIcDa0eDFD8)R4D7)-wRC%IwK6b%aV>o- zG=1)xJf=Kl;st>oY<+4p>$JpuY>8|DAOE@ze-l=vb&)poCm47qlQf#gszN*x_K?wB ze}&jHUNl-CG%m9KVzlnSKr7w^70tkjwl|s^Zc98`JuuK`==*Y7;z{e9YBgAHv_4r% zSkF~|cqo=0tJme4kvH)cf}5&ZX5*@SlX$uso*i#i?R^+q-MISMFJphRgSUvzSx>2+ z1MopqkEg2AUu>$@eI09*TdjM<-M?I;J{fyj&3F>8RUbZzH)rWA$ z`8L)!mzx!aHYn18PT<4~>g4VCz_Rqa*aBx4KBVmAG*SD%iDKd2m_1#Nl6Xy}e;>QWeqG)9ee68@jo_gP`^{i!+yA9bejhv2-dx?` zWbC)L{gyiPL+n%gkN54xr$hUn`Y7JQw%^uI9#yM+eq?k&b(n(D(`tYdza@7I@?)5Y zBFk<%IB`H7a^jELZ&Y>oV~+hi9}2qIdD~L&To`LATM*9}rA<4w`E&5;n(7*j??3+y z7#Jp_NSz?>p}@At;@=5QyrX@x_$%ojR=E6-ll!g?uMdTvXZSre*NvZ<`@RnE4~360 z{JwhKjsMjCFt~JLe-wPQX#XWxe$L0(Oz{|p{fSzE>ngcNbc)`g6a$$8TM2Hi$^EMi z4-18Z^?p>HL~HwRs%boao_$P>h$GjBy0WZCDxQKTK2`JM@mAQR4&iflobm3a`b<9_ z_L+XZ<@4Y{OUV#k#D&c8g&M%;Fuzpe(&8g?KV#-oKlWp%vc6J>(&DdRw)a*Y){mFu{zE6> zVN8;=VUjmgy9V(yofFs{RPJr{NRv z7u3Rr@kiwtz}`x_+nDYJHMmiHr2W2nq7fSXpz`r3s+TYq9(j0`+QqDGs}6YB&v9(^ z4sL|9BWfZZ1ynbt<73jOI)sl&b9rkahH)s;lAC1Wd$lD!ex?`G;W?r3Jci@=W|NiJ z>(gxY+(nqJ(#G*-PCZ-w>L?y#8Pzy`uTvk>I)rt$89M!7~ zOCxyrQ6Dg!Mz;ENDOxpBClR-w<4qK0xS5H2dWGo(xeJPKd@}n^zdK4El01lK9aXQ) z_%wTm+L9T+*gh28K9g(qB5o=&yG)C{s3-5Pc|l#8i2pRn+dnbHP^1>MjoUssktjJ! z*9n-HbTBYx2Up+qg>5^bea7r&p|wo>ESc~v ztIs%^r*d0jv{m)O$mv_Du4@@@ZBJ46(w(H9;b^~lm!spVULi&kRVhYJWnVR{5LKU0 zv*;dFk8!j~y~bdh3)FWE;%@X-aF?s|Il4{V$kBeal%r#62S!eGfI89&Rq^;i5oFOt zs#_7{JT)59{y^Qs(Kl)%M@QA$94%M&X+f+lN2Amrjt;6@IhvzZVdONsMD0EeY1XRG zD2H64yw;G-RIk>kbXZ->(QI`uMlMgO}hei3q8q|w1=pTupMit zI?xt#JxbZ_AeUtZ-z!wv4mFmkL9pD9(Qt#hyrBid5OtqDmG!loip(o%$Clu3{fxn z{)mJqB_vhTs;MgV>yM-g3QeRWQk3@hn~(Fd%9F?QKIXld-I<-8oqhW*>Y z!{q=?Xh=A`c`vpkUf{5bsv^C>;mwUJ7!3=Qe>`vgmcAP`?zJSm=s7tS%a4P>sFyvS z0t`{ZiOYpIC#DqWKF}6e=b)kYLm}lfIyP<& z%TWGvEx%uRbT;4x;O~sWAqX1~L+U?XgE$XgcxjXg%jW$eF|M9^@cyxtcVYnV^nAZK zU}*AKA75b;MvxjX+W0k%1)f%-7i0>L@2h8)`~v`<*^g^`t!5Luse(hw&A3C29M()?P`h3@|w!Yshf%FPM`pu z5-a8DcyN;=$D4wc)ovHXv#UGe?MUusxg4H*)!k&=>GZk{G}I9P3@gv?o{vN$N66`s z*V@F!;8sWO?!;qDLQYN7`9C2~c19ANrX3eh(zfGQ)au1Q0CCIz4RE)QTph#A@~?w- zd*#%V0!wZqe;+(6{|Dv$^2XUfd>qH8;Fd@J74Yb{HJ`ZE>j1nmT;7`i#H|rd$?i6Ezy^L9F`%4>OSiKWwln0bxj;Ii z`nHd+)DwXna-<8Z?w#`1Kk)>a)a4E!v-U=T*Cb`_ze4dY*Yw~)k9-1nH7f;7AX&ZR zz-tVjxaI!@I1Xh51Ea>}qblGzBrBf+?mptkbxXN@vJ3kuD}wPMbD*z#3SMSG6IFq@ zHNY7&b1(h@vPk9kDOByCWtM3CD6(ZsH6B8SpM%zpp}QFl1)j2d482D?iVo_%q#?bR zG-URYzN2uel6ySvBo(3 zGL4$Ql6XerL&%mHTn(Kanmdc^d@{7QLR75sh*sO4|+~ zZmX*$-FA4=9ntB37qImD7CUmOla9{ek8axBPPQM`X`gcr1K*Ary_!m^&)hVrVCS2pq5p z$(HA6f>@3GQF-kHu~c5_65;VC7S#8+b{+$u4Jp&CP<_d9MgZJ}WX*AuxntzsIft^E z=t0F+{`0mxhk*N-<`cJkwU@hrT@2v--EJg2^%>Rz;AmdfqEOwSL$kOw6ag#4@d)7g z-vEa_0=qfWs!-g-VJEL~mPdFYxh^8&i=NQD7&2>b9&o&ORiK8=lk(PP%o-0Mj>Z=G z%Wfei&mEg1_jQZ0$0r_gT2lVbLKK*X!KL|axfa@W9(*Ew#?^od}*8J6{ z{eKpA1! zm@xCbb5&MsgU{%QVe3Nt{+(VD?oqJu$LT;pP&-V_?ZsmSU1DivqxL1`k8kBm)mQ(o z;K-!B-4=)?TUX`kJ{TeT{ygEXfG#4}mzGXY*hNmb$6PsO=l;6UMfC&e4H zK6Lb_s4BG0i0wr;4COSJly4Tq!-1QHiZ{fPqWeWwB0h7xu>H39C^2hZ#a$jOE8S9z RyPTD9+^Z_ws3^U${{NE9oYMdR delta 52671 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 A00000 diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/brandy-auto-ota-ser/libace_ble.a b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/brandy-auto-ota-ser/libace_ble.a new file mode 100644 index 0000000000000000000000000000000000000000..a917d81602007c5297a3a66410dc34c35c430356 GIT binary patch literal 677354 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 literal 0 HcmV?d00001 diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/brandy-auto-ota-ser/libace_ext.a b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/brandy-auto-ota-ser/libace_ext.a new file mode 100644 index 0000000000000000000000000000000000000000..25f6ee559436634118bdd97ecc881b740767a227 GIT binary patch literal 73854 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

  1. 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 literal 0 HcmV?d00001 diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/brandy-native-js/libace_ext.a b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/brandy-native-js/libace_ext.a new file mode 100644 index 0000000000000000000000000000000000000000..99a6acf32be664e467f19f456142acba2826f2e8 GIT binary patch literal 73854 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 ALI3~& literal 0 HcmV?d00001 diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/brandy-native-js/libace_http.a b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/brandy-native-js/libace_http.a index cdfdb313550854aa1d4762bbe0c9464fc31465ea..b93d220b4a383b4f3680070e467157a32fe86368 100644 GIT binary patch literal 78448 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 z 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 Vu01T*V)T+8QR**9i#Un*{{jRPyf**< diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/brandy-native-js/libace_websocket.a b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/brandy-native-js/libace_websocket.a new file mode 100644 index 0000000000000000000000000000000000000000..757832cdc13d10aedebf9e94ae18990cd47cc557 GIT binary patch literal 59366 zcmeIb3w%}8nKr(1Ljq{S2`D6}2SO0TNzBO=P}?LYClWxQfS0N@Bqt{l4M~~=L~C0t zNlNfCQnUp`Cv|{g>YvZiqSkRb-~fVS9ox^^er?CkdTZ<4daZjFRQGM zL>IR9#4F}6tG}|bExKgUvXX{y*;U<_cQmhVi$~g8+Tz{a^~=f{qSWRz zwzYM{8hbjr>gm?m*xFUU0FKKl;0~!RiLO!Z2`d^Jdb;9qdJUH}G^}ZCTODucxur9H zf>@L$$HF;tcuqqD;%|(^I#zWycE#(Ll{YM#-QY#D9MM?V6h=%EBMVR9Dx2foJzX8Q zFtrWgu#R0rdq*=2&2Ct-CK_ej6Y?iqepS3_Sx4-qc#qDRaCxLF-q;g&X&NhTaPx7& zveJf?NoMBU+^w^;`xH)58R=+mkH>mW$#PNz%a+C4n?G34*$i6W-ueO094=<~D>|Ez zJs&Ir+Cp7xdu#W~4`!h}($>-a0nc7p>s61FmS|GGmn?4oU{Nkz+|n{q$Uj=cZCx8( zx~!(*!`pVtT3S&z(cX1$P;MG8y09*%J7NPKsa3Z|qe~YocM^A!#yxvpysSp03vR8=^~MNzJ(wy=J&#X}m4o*d0grxjMeEwYvwsn$;7`clylen&l0(oy&_q z#5r4z97K~r=9Ng780%>7?rAvHyiLlUq_z<*zAWAoU4u(XJ-Vg^PKN5L{b9RAl%Qh8 zS9P{E#^MdD+gm?{3)W5XTN)a>ZooybykY**1x`M7w#H-en_Ii%4Ng{dt&a6HIG4-v zp4FXg@p|}ksw#4IK|}p~UK*WxtFM@>r>9$in{*wn?ObdsQ$kHHDQCCsUX%2-MqjWJ zyOvWZtMKCXfv=XLQVm8KJIYHVw4 zM}==}L2qi##LldNC*}ywmy=QUYN+3yDUQw@k6o=dtn6v%>gYk`IjIRN{A?4xE#C40 zf`90G5p<+o@l_pbOwM(7w6-H_*%U_}cj~$q#zYKQfNJdWUovZ*n4Q@E7(4$GWwqrIggx+M9; zA8^o>7%%&jVV?4G+}<|cfZCXRLe>E{ewDSY-JOj+v6WsNTT#-iD|4>uma$E1a>3h1 z%EgF#R+LRst5O&FA5tVfvPjbAlnJ$B%+2wpZs!KIVU=_5UKH!>Eb3^w@uDP`hM03( zep9LEZSD{-7{@EjcH8hkO1ml%90 zjvqDnV>nhBT#X|hvpDC9;8<&L6h}Pvarnz{oM&)7j`Iy(fa5}J`?jdj3#->{IR}Zk z0V&$IO=VT$*-={l7?n3|$MMPx;y(2xj@bhlYJL8ID!Om%tc-NJWM^ckP0=sI&QI3q zFzfSckH^m6J7wKAv6!8)E?s;K4G5CZqUY^?SS4|T!*CA`!|fP`+cgX~Gz|C1Fx;MD zxWR{0C9Y|^GE;_n^MX2eHX{#a^jU6BI{a+?uBrZjE~L#sxo$qF2DeE{=iR?fJ&BsKe%BcF*g(<7 zyx_~n^9ptxb>~t5vboy`$4EjKby^C06og?l^kKUrtU-%b)MmvCVxM zuG>(r>npV5sNnVa>BkEC^JeTg>cw)3w`4)x9N zOR19(>k*Hkfg(2#3I?(>(mi{7C%dsL*eGFQeVJYj?_K1D?cdX%oa4ecF&Smoo$-T1 zy=Xtj@%`2)smOZNX*g&0^%B6kJySBabj(^L;5~KAySz_rp(}uLn10 zW=-~Ve+hV@Jj(@E*?I1_*Lr!qKEGZSST%(uhg=Au{EDWVvXgVpM@|U#tc`!m!{R!8 z$yK3OelnA7EmQ63&71!6@yE*_RizdC)GzL0Fa5wg|Jsvw}@8~Bd z-cpqkRc?>$_|0@$sMXpxXVk0Mn7ye50~@NuiX4&Fl!E@EzQ^2Dh|AR7{xj>diTirQ zBW(uafxaW?_8qnNt4Y##=$^w$PtlH}!=+~o(t{d3W$#(~4C(jF6~-w~r^h+q?{UuB zn=U<0UI;a~z^=h#R5-B)qxX_{qXwhTvCED1x7MwXw~vtSfkCepv({xCWN)|G>XVQg ztjRc+*RqEOyqYI5uxr9}w+;Una_+p-$~mi*w(sTLzzBJ_$(MI$o*?h+ ze(}_E@4z-S$r;_uaC*RL=mAmNPEdc;-cj@Fr9`~z(ZeseoOR`~`wXu<9qVYBPCG$= z@3~A)%7?EE4h^v96YJ~q53o-Omc5@nD*bq$+n0L1kY{cDTORhpdsprqNv+Si4xp|( z@pO8H-eaDn&3)(<&e%I@s5h-3ni3l~MtOafhuG80IWwYyc#TNxAyM;tb?B#V*^q;Jc!aKfP1kG2a{AipxOK^(rNL z`{37lccfqYaBr&DlE=U0;k2Fg?pZeM+k7AgBl__&ge>~%&I-C+Y*DRmfu*HClCVE3RbeOjSC@6iCzbuOF`*g*%B+qtxb6y~nf9NIx!dUcWP)qnP(& z_a0Oq&zQbd_@hzZfWADz`YMSbAQ3c)bZJU z6V&?XuiqayIJQ6I(-|4x{X4I2r_5j4H@JP=RK{|1<|sApi}4@aG4?l~*_=L6?bjEsYSSG84*-s6so(M8WNbJP+{!#C=r6pBrE_>^Y~8{1jQZZ_;pyl8Y(wpY>ev^)q#ihQ?Q@6J zOZJa{cJ!gF=sgFsq7!N!zWectm(;9LucVKAcEkR02M4#% z-?-|RsNcsl~z8dzSjSC`n@&BeiQ54sqU?hb-$v9 z`ihW?%o(qB6j)dC`F(><&3&ml^U!0xSv9MVhj$nC|8RQ0y0aAIx&-{sfq&zL{ zs{?A%!S&d0k39ZdWy<4~KUcHP_-*>=zfb#Wrkb>W^mA!ntyfp?AOH72UpS(!-dTFt zoRnFuZw0fE3dx{Wx2tc=Ta4 z>t|mN)>dz*n!JBu{*nDJRBhe=QvRhcZm8Xs6&sa*#=`usy!F6fa@fOe*mM*2+ut%_ zpJ&*G`Odh%E zUpE~r>btZ0*T>KrQOmB~)u*y*-pJi`d_%RasZa7M(Kkx{a(vMjuAO#9mDA&K^k=Sd zd4q2&?`fM-(ctox@nHMvRZa1(U`I=E-ty&3f{pFXLHr@AAB_g}lh5wp%EsGT7+>j3EWkOM<7$4xoEIn zTL>;`>}p&!b&PT*xJVGD9A}C1ul0n}b#%ttRh)l+sQjXWZX^) z`<9BQtXZ}SeY{T(_;fy1_9RVB^c0{pb&gM;?9+37`nf*+e4jqmr|0?fe4l=SPruN4 z_Dqt`!Bf=7eeSb-I-ibvlBO>56reO^=O*=1pF5wZdy=LqJq0LD@yWU;X^KzRJxNo1 z!tP0$;!}1{(iH25CuxdL+dWBBQBMI%Q+(>~Nt)u5cTdt3tDYxm>T)&Bs3kb2LboMN zEq0#glcVJnwZwMD`Ia~#=r-E8Uy0*lY#2s4{u^*yjtw^yj=mDdPhuNu^iSbPPV`%W zyRo6$a{RBy@fK`i|4!iBv87>SeD1@s7aNB5j{cW8ZooFh=nvz#1KSx!e;miJVUzg% zE%2k*#Qt-@PhtBAHroF-j^y-zD@)W5fw{4z(ETkO{}tPrM*nvle}|1Nf$sl-V>T+I zoG%S{5;jTSnZV~^lkn#N&%(x*%J86?$x(EbtCjWmU|a;FMsmXt^e;kx#?rSz_sT0@Jp}zb zmiyPBd-g9-Ux)75zd-#h^j)t13)CU#Z0}kwQ2z+svwwm5KJ*vGSzVxBhkl8xU#R{W zdb_L7Qtv`uo~R4a5Zzh3;#;OaDb`3-o!ed#U;g^a@KKf}UgPk3$c+dbxTAIYpJM5cLoc!PXP{4W^?G#>x);BC z^&)id{PpU4(5GAeUxV(IZ@u~%^cu_kSI`$)`Z4HrZhfs+XW+v7Maz9W^j=HPh3;KH z>Qz4UDl7a&(BHBA&w>7erAMH@Z0VOn_pXoi>MH0zvfLY?Uv1gH3Hm}yUk$y;(mw}% zk)>lQgmwL^$3HwMFU$P_=-&0WUVRn1*M95OUqk0LRZG448|Z_gV!U_|x>vvJ)jvYN z&hr0%ptoE48_>5{`oBW=+Rp;@8|YsBS)ksB?$s~tc{D9GTis%GwvlP7T$OVm3n@U-1Gpc%&FJJ9=5C+$sn*))@Vx zj()y+%IKpUeX4rb=xlQVm8VKfmjA%f^VLm8f5p)+P$<#W z`t&BB{-96)zR`Kjou&%a6yE3fE}y>5ryug^ z@A>qL$BT8HAI&~}z^8xB=;tBWG~7S;o6c$_^Z>>)PZ_<QTP-^AVpu z$){KP^hC22>=EN_o?((_6Wc2xtd#OsX9?>wqb9{Q0(LV~eX&CPmc!L9{ zKPWbO$Z@||ons#HY;p8URg=+YI(oHwC_(?2`mxdH(LMDt^@tff9Y+11hU?4EjLtE^ zG(3;Uc#V50G53m4Z^FKlS&UftAC-!RO}Ighv|m$GV)T**o|(GvPLxUTq&)JJJcenrrl!<{EHxoZ8yHXWt_K~W zw1H7{92i3f=#!Nh6J^GBnK^lxF;#Bd%f)25>!2f5ZcM|2HeF#tR7i*l6QaT-qr!xM z2OXl)gs3#hs5Eh?Gyy72fZ4`s**)A~Hu#94siUov?AG~>|Ljjl^0@9HtrJDqhF#yU#rad4JoP?K@3MezBRU*j-Fn**$mq;Q3 zbZ!CYv;mmYN)^QmLx!o8=t?DolL=KR(XMn;0%T4L1G==~-;^zvz-WyrAa2`Ht7Dbm(DTfbyUG&tDz*AN19Mgjc4Vno^=` z%HpOQ@dx=ZRa(EBwJhGVsBu-ic}W-ke(vgVzO&&~C%i2++>3kKes%0qt6RI`&b#!< zZ!G`uKZ9WP7W^mP>#{#=ubTcLzKh@#NvTs7-d7Opo*}94)a8#iE>B$k!-p&7=N9zG z7Ft_;l_n`f^0x&}@tY0)S6jXA@DRcy-aQ>r6z#+cEr+=J|0o38&pk42fiWE z9&J*1m%Xi{v8TJWxg{yhPVQE+bvaX9Mr>Zm*EBbzj?ai8&0ECD=_%n0klqEtt_1Go zVfgr-{^v20&tBow!TN6RYMO9?8vew(;?{SYB1jC;-P6^EnK4P9`SHEbdpa)zJ9#|Y z#I(ArtMQha)h#XhZEvslOFE?vh9+YLsdrv|wKI8X^60<`XgXwFA)+G`yfk6sD={bd z@r1Rj+q;`vx`%md)t4Xtb6!^-;Z0<3MAnRtVSR|ddhzG4waDjw@I{qBm9Mqvz8#It z>D?Pvt!`^>!EIneV{@|u{2v`F=I3WtIp12t?LiB^z@gA_#a4Ey?)FZ6l&Gi0(N}dQ z^(r6yLom8q!9_;j0aY)lPrTk?__m}DeZJf6pTb>1IQd&L$(=m<+8+CpGYQ?)lDai( zc%tUE4|Ai$Q>Wker)b)5c6$Cle~{+SAEfy`eEASh4*x_xNYl{V-O;cTlegRA=pbWj z8yoN?p|zNY4dLIffmew%mKm&=CZR5VjjWzKDLnmO@*3Gh|NJlM;vZ{{nEvUPe?MJf zcw*uCH&4#%*g=TJKIe+$8lG7A0^pn(*g=SeF9OarJhAX)z=1cggAfaU39!VUSa|3E zu{S|Lh=sorIPex(Jugf670?53lT~U3HsMzS=llda2(j?|zcAPE#KLz12Y!kjgjo37 zfOCFERw-iP*8%4mo>+L!SrI$L!rud&^A2_pV&U%v&NV!-@LPbz4zch%fOGyCI|#Ax zyMc2JPb~Z+z+#73_@{t#{slV-vGC6T=Ng_^_=&o zfyEB7@UH>q{2O+V*RToyCUCCdiG^oTi5+6$-v!S3ckCd|=N!_&FSH$E;W>9GXQt+fh3A~rT*DI!KN~pkOYNUn zc+QE+xlr@O!p{TFH9WEKoTDUmh=u3;;G6<&hgkUQfpZN{EPOMt*dZ3a6F6sb>+2(j4V+={?&$?ESX3BMG2 zPKiT1bEbvoH7M8c#KK<#9AKvcAr`(FIKUSRAjHCV0tbFaHt|~13qA0k4(-f+6#w^- zXXgYV7JfT$;22pw7h3q;(1j-!{t4imFm@1P;hzT1H9WEK-vpLxH?i<9k~i@r7M{Zw zsY}Gd{|k8&Ph#PjWr5?^LF_&`m38t>%@d3Nv&fsilvwy2;OzIce`4Wh0OuHmSa{Cy z$~6kH@WsFZg&l-gc=oqBW!k>o_g(@%*YL#RpYu|4%C&!D;n_du8s6@!=YtQJZ;26$ z{~O6O10cl0uOZJDR3OB{uOpwXd1B%3ByZ{uvG9CHL-Lte`0c>b?udmS0+u#TEIgY; zB;rKJ8MD>aYW#H^3ZohyBCgYT48mqzrtwnX!g(5R01g>HJAfngnoq~!boz(0;a~a( zVu@!Cu#9Pmg`W;A{R6S^OhzCB5rGg3zZ_Wl4PxP&$dA(giG^Q7{tV3%3*SrLvrfu)@i3;!ixX{W@(KSX}CJ}sC_&3R$ zdPOY!zmX>aAr_uZUF;AG&nQa!A{Kreu(U5?;j`$!0tO(&!cU-o!xIb7K0(@--9JnR zFZ~9w_-EUfe#7nu%D_v%K`j2~0!zO^EPNe#)4vf5eG%^1-$mZEcVgi`OWw41 zV&U0dq`eahe=m7cF2usKElauB?V4>(+B>oMe+*dKJF)N_UPR{W_%FdBv_RuKaVT7< z@q@&dYdnNQXpzRR;*hmiWA^!lGyu5=_Cv=1Bfyc5Yd#%^(`ozD;6JBQhb5Lc^SYmF zcw*rTfTisa3(r1H@`PA;c25CzU=U*AnLO!ph=pGYEPW2K@YexLpF=EsC;743KC$p? zfwS2NAjHCN1P<`!LQx<2l4a&x4Ll~(k|B{V#!0c zJGmYa3(tI$>k+Z=kC5j83PLRW)4*~)A{PDtu+$l1;aQGSXY4Y40ld^1V)4(mFV`bt z;ol{1u1Cbe^I9PBw66;jz)RgG7XMS|-_%KB;n}xKowWP;67W(diN${qaR^MgPGuaRd3guI4L_}>6ay(Jc&-L%A$Solf6 zQg4Zc57NJ>x5UEF1eSVBEPMs9)LUZVgNQ@uI_w}$z5S%dD{+Wiud!2a`LaKRZMkp- zk$(5BuuDVrQjp)?=b2%ISejoL`3U&hHb-ocx zx}5qP(7eAs2l&wnh+UsoK$rUtVzJXn{#V#Rh=tz(EagiqJnM|yci8pkLGV)Fh{gXy zz*66ch2I4%^^I6~_Tf_Q#KJ!TEagrt`~hGocVgk4a=!rtg#BLDN(VaM2PkaS_?tLH zZq)d{t9%(Zx!w^={OibbAOj&5{%YWyIb`uJGB)9_1I{%(vG6N^C7+3fXR@Wdh=p$l zmhvJNz6)6F5DV|r6VtAf>d8@fgxK|D5W3ViVzI;f1-V`m3;zsxHfRX3@GNVo4|chK z2fWk=V)5_Phnqk^mSd}BCkC|u=0r@t*^q9ONS3w1cq`420?#sT?rJ<<8_hps2v zaT@6dh@~9&kT=iAh=qTOys0O|!tVo?dO|Gxi@;J(h=q6R$)`X-oO;rwu~SdFHNFjp z!XAyCda_#M!#G6NXneZ$WCDWajMrg_B|ejYa}7@{{B+>JMBP6S3m*cO^b!ky39zJ> zSokvF$j#V6&cY`5hQ#9MY~bv(^|^?J=XtaF(Ibc*hZ6D}%tDC8Kl?X%USaojwcrDj zwSQvq-$I@b=ODzwGmCSW2nez8w*u!Ho>=(Zz=2$ChgkU6EuL8TcgdS)w#33aV|d;~ zLhLboI`q(5hgM@OywJke5Z|KxT!%v~BM522R`_WLs&zPoZqxYlIMf<^H}PjQ|3%`@ zYP=nX!p~{^AbI2eQDCvNkNi69AP2D3-tIu>J4%9I099zhvMto|rSn@Vt@x;Q@PtIKIAhv(zbFSfu#eWuX z;9Q&#LM(g^u#Cfrg+C8i#^J=mPX`t|#KIQ=%YVnj!n2;sf5*ha&juDd#KPAA=Uj{( zgjo1G;9SEK3(vYFc8G;%pAh;2c06+1;6PPHJfN|YhnIR-!a8|qcsmczg4dk?tNjy; zf0j$G;q5YF90KR-JSP_aLEs$Tyh4K5glB%{8s5%Z#y`N1ph1Yme>$*?rHO?f4J`MJ z#KP02jG1lwEU$nWGuvgyY9wQ3VzI+CMmAyxVcp2O!-3BKK9M^$9*2X>(IS?xPM*A~ z{n&Zp#Ep#uV#h5Vdgv~PKJ76E>vJGa+qCO8^Dw}NTM%N2+kD_azUGOAUk)tS4r1Y( zf#upkEc^`M(B0TUuEQ4j3kT{xkQYYC1ZC!3;Td(YLoEDRz>zOw z2Vt3p3}#v)TgdXe2;jFmP|YOXrZLl1Xn3Y8bid}yEX=ZqY}fo!;s-S5H7@d?#$#{@ z{iTHmHD>(}eMMvTdy$7U4&o5{D~%bqi1EX?MRsVO{X^hFoj=5qUgmAU)Ky~PFCkx` z{Syn%u%VsULB?SV?Q)}^f!83?=Yo7Hp^03CNGXZ``5kf5Xp8}ThA{PE# z@}}I0g>Qxl;faOsC2#5jvG9WyPb~aC^2R=~@J?9_;e-(8dFX2nboz?WBN_*BDE$94 zW_pD$AiqcRvvG+0FO92kD121oS{x#Ot?_c=$24AtL+EjhS-nDE*O*l&v{z$BEAoWK zJWc3Hjb9{Y=0U!LE%XfsI@kKp(;EMP{NHH&8V-?XG=3Y0(BEqOQydDvsqs7H|4w5* zvJCChn13gP_G`>;H}tH=97=}%UgHq4vGY;j!ULM0Pkd10E9vKu#@7%(r?K<@;9-sV zpQfB^6sXV<%{%q*d5v>$i2Q@b={TIuHDv<*|C0_&EOlTKaIWErg`WbP!^A;|g%1Mf z8lG7A>A+K7#|}a)d;xHvP}?CE9#EywBc-VOmQ_8CO*r;+>ElX4m`vQGim*g^qbh3Z z?p8%z@wUbyvPFON*YXq3o$zKv@@tN#wC?=rSoB_iv|l(g?~9*~p^@MHJ{>FGD`tr= zfav$vPsdW?dYS*l#3e4J`Cl}4g4O9yCxItisQz>ejkIR{>DU-?`T9g7fAm+l6HkAV z#x=q_#3!)fye@T`@3@}8TylH&FPVOVz^DGw*9nXy$H4dUR$|x>=Zi^|C;y(vpF%SJ zMBZ!sQ^?BS`>T0>5{dr3E*L*titz;`y-fKBUORp`tKko{4E(T`KG=fv!?Sc-*o>|Nag9jnK@jl!lkA;cHzrXYvT17LgTAyhHJ-~GYw5x$EAMB8oV?gU9-G_ z-}@NW4&D>(!RzJ??YJR2v6W;ar}FJe+;Z_gD`7Zhe^aZdtAqDuym1Q`;qz=pb#Ki^ z`f#RBOe+@bX=vmpI8;%rW7R6Gild6!J9^?pmo2)Y(D?uuOmexJqQ;({uGXg2J#pLu z-q6*tx>Mgdp3?rJv-tgCPs#v!Uwsue-um)hnw#HW6*%$tuJJRRzlD}RPH7&=-qn`B zS5IKC+49G~$VRfqJdpVD@##qZZnOOHvFS+uHdy}nsB$EK_gen=7-}ScgO)!&ej3T& zBbLA40FUI4k9{P)oFX!kzXO&(J{BCw-%FOif)n`rk>!t%^~7E-c&N_*IyhKsS5V`c zHd?0QK!0gQ=d&kU=tj8!+h}Yj^B0C6=e*_ww3mfVM9v!m!MIi#Vo8mD?#p_gZQPij ze7xt_!;$hHHh$wbB687H2!z$XFXxwP;eQdV9X-Lpxl1R9Tz2BKIRX9=> z)+-gn325&eY&;k3%|lq*-pg=!dKh~VaCZFKE?4R(&P{uhEqizS?A?ttur7#5{04mX zR(>4MxZp^8EPILH_kH%RKLc}iz=?>x|LwEayA1Cs8++$k_VU3oIG+PjwxCk**`kQp z3j)~bz2r*I-udt>@#8uuw!K#}VS5;Rt9* z$L~kiVy-F9OM7{iy;PKu9lzaUmEtp85two0n9trbpHyllINHm{Ch4v7+50>y(JR`7 zvln~S@Mp*G%?8gN+oIUJL+qJ=SD%UhhKI4o^++6h#^1OmrM?b-jNgTpy)p1)r*}K- zvHuZ~_+`MKW6wD3gS}=r(%vj=bYuHiB=$_eL%81YS+R)Ns~3BQm>$>bkI-HrHnI1B z*fR!RgT0kv3`eoY^*I=(%D63uy;@Vg7l9LdKk(U`_Yr$t4bR?pefGArD76oE7(e!T zV(kW!d*n{ zt%N_@-sn~@eskbi>@}f3vF$wwdm%A~quBc-{Mq)dgT3i+XZ$Y4Cia%2Ke6pS4|`kS zE+Y08!=G($9qhdcPqcR_HnBJ4v)6>d+e|Trqu9eTv>8-mc44r-pA12+4dfTy^>+#Hy8fw^xg)0m%ty>8?o$Nfd0<5_a^L}H;lb$@Mqh5 z3igVPy{KjHOmqsiy;S`9Id2$yqv6lC_fyzgVeDOI*?YrhZ$9iD<_U~QdA#bgH}592 zJvcJG_1L6*XQ98d;}@8q|9AG=n*o1z{5Gue>fZv(UZ>bI2FhS>xbnD3>=}QLz}`M! z#_w`$62EQmhpO+6!&br`lI9BiQT_)0m<~A?{atM33n91XjX%k!zrtY2^5)|A;16A` zd)^)JC+7m~VCuhuKOU>FQQF$QdcPDp-5B3=7~^?ZM<}~tZ?1;UUgCGA@h48N!=Eh@ z*K^?ym$*)GqrZis;3)ohl(f>B>pHxKI)mYad%uM)!dcM<_FT!j5d8oLYDUB!nuD7s zbXtq_Rv<1S;_sr8il8mw%8Ih`%JSJI#lc`nak0A(7Z+Dllm&xf0FaOsV?GyMSeKF_ zmY9}bx#{6~s;28WlsPAziR*8Hnz&-op8C%t+^bPyR zZhtpxP_L9dF#3}cpS1iVX_*H_Tc4ka)yO@qK0zBu(2gW%nJEe3610H??MQ-_nVJyJ z(l)2BOD#p*$5neiHl^Qj|GTsGy48Dni`roH&j{aoHz@C9vU51md6H)1`0OD-aM3=mcKD=^UIUf^L;bie4F@VvZei7t5^>Q2B}SK zx$nm3t+E@uf7Pddu=VluPo!wqU9Q__e({5?uiX2_TXWy1%dWmf{p;>O2VKYw=pUHU zcuU5p*iQ~B$^Dew1q1UwIsRLsOA6eSZMADnUeUv;nFmv%dBLsegIgucFP^03$9jwU zxnB6@Cnl)x-nDgqN_23mw!J>TK7IX+%=FSP+^1qce>+veT{B=boAW~heMvELt!{gysx+f6C3bYDn|Bh6W1q+$EX{aMZMv(X|2wX= ziARP8{OLPayb)}=CDL>ygqi?5^s|8liGhB;0 zc17)`ywEpNz1qqJwp)9wmBJ%!tz1l-U;UmsMn&netRr?)yhl68n%%BDmmcRM%V2lw zt?}gb#rYA>o3YmTs>Zdgt5$OXZ@pT1TVr=m&@2SbQ0*7soOpiOy%L_e0(fit4UXr_ zozH;6E0+uiwsds4q4W~ru0=llY{g>Zw>I)){#*yWhiij7tBIQv;F)M=Tf8UU>;$TB z?_AxZTOEsG z#dEz@?O|NM>}?Y+k<@vV?VRa(%D;t!d5%AuN3aj=+U4GrpW`S0+U53WhT{Nx)Iyyj zE>Duz`ooQxCCO{~jm7G{S~%A#6>Ig)Hadn*&_CkLPbF33=;PgWji)(!Hl18aUh5Ax zpq3=Bz3va6H~{=ZthK(+#D~wRQk7*^^mlRm4{R7>I`)p?$f=uf$G9RWYJ{!81U+1gp1bgQ@Yf*dt&sWRfzS0eUzPb*& zSAOTK7U@Bc?w$q_2&VjlVdp^H2NXO{S5Vv z&;5O$KE-rdLHM7BJFn}kE{ygz`SfRv-tX8S>#S7_=m`CDEn*Ss(|x*`ZtUa%*9x8G zbMN%&JAL{-qtAeCuJw7;=%01;$*Kq=b`hQ*gL+q}H~IA2efs@IzXpD}Ht2Ic_qUC{ z&2c|hO&aBzck+L#(VubL&sWVxXPpkHsp>AHOZh!!^h1t2t_S|L0vlq^K&B|xnf#UT zg%yk27vs_#P5$!#!a0lEFUQro@rHP`72o{6u?cHa`2Mh6Sh=`8+SS$36>Tjkb}#l0 zvozklx~*r}5D^X$Mhua-sv#HV;(x%ukL3-!Z*J|0tt`Sk;I??uf6x9^LBb_ik-x6`vJxNG%+srg0q8}< z0QAaX0NMtCUVY44Rxd1`!{R3_%koK#Fzd+#FOlHZVtnQl-eP>RLL#OSm|(IbA{et2 zA68A&OQV4@vF2)W{<`7M&`3$tSxq6~AAe`^S%Arx=qR~9gtLH#aDH6nU^N4j~1@1ZSC%CM1xt@gAZ>z3zD!K;Kb)SS9M3% z;NGadd6<49Y#S*TBhr&N9Z9P{UiIDPZYrLkBsZj>r?q``e1xFU_LC>goB5u+*h@HZDTt(^^EHsfsqajw z+`A>Ukl{0_&bbA3GKodbQmw_!?ebeXd1B$6JY1}KI}c0f-|)oZzsll? zg{NupPb~a(7EdfZ{uXlm6ASO;l{v4SSN)cMV)1{k#S;tfap6AM2ZIIs*m2(j?< zfdk9QCa+15V{RO;gq!&1I62qw#KK<>9Jm5I2(j?2CjlCO5DVW0oWqQS5DUKsIM?vR z!ruxk_KAgOQnL!MgVbQFo#jC1{yfACgQR22ndU$TOIWtMT*DI!&w3TOO8X}k{w(rW zYo1v6G2~4eiG@F#{3o!35DU-p75jEs&$W1B@y}-wAwJ-MjC8IXxQR_-2}}PudDubh zxH0~@hPTr)3Vdx5ed~Eg0nF7AEH(om0_+%g#3nrBDfvJwJo7(v5q1!stB@5I!uArt z+#QPDc0LMScw(`04f*S_gAfbPdJvLhH1D)qWA$A53Cm-f$%qlK^SQT>k01iSdHkpUH zh9?%D=5kp05Mtpk0nRl%vG7&El6GR@my(ZR2O$>zI^dijb`WCWR{-Y*v4gC@CVVrn z*e4dgll&s=AjHB4fJ4k|$P{d$iyf#6aELJC5N2iJr4DqSjTN$zLaxCU`j`XtIEMtp zF4JP@l0U?9URFWLA7bH|hZ27~KUuy~F2v&hYG5fBV&R!rV#m(6F7hUyiN*hCfhC`b zh5tOT;`P@-@sOuM>Gc>C>;11U|`w zu!I-VPgn@a535c+?1}EDPY{29y-B{cK8?Wkjqhm$OTNiH?Z79z%{>ik?j5hZsDei@ z_IoQ(%Zl)5?+^Df%4=!Ezl$;xT?KD}(#^)FzZN_Im&@< z6y7ee4?LMa4x9YveF~h2oR>pv#OIQ9&20Dt6N0*>+HZJWgJN5GCf94W6t z>DSQNi@onbv*X8`LH_4Od%R5(d;FZ7ZIAP{dCd?Jd;Fe=Z4c9AoG}IMorz8CUFx&9 z4hE1lu86(aK6_Jg^!+OBeFU4>YxCLr5)9P1*1UOpH~8$8!Co8u(cXB=-ork7--o?v z!`R#5vo{EP90$=}wq=k16XNIA``^Ldbm$^b9r>}(-b=72<%_E5rgs_w*!Ipt1DIiK z@F4ci1+dFw92(#XxHEpJI7`D}DC5&{=R?Eh6?}K6@|2NH07wep9iDy)PSkCC0#R z*t>}lHbTg4m(Sk>bSfM_i_jjoy~ZEwCWUkA=W6Ke#ojlKKXH19os=aKg%{xuzfN(Y zzlEaUDE@eqwA1=QhaA)1Rp@G=C@1|#G)Tx*1CtM%f_Oe=k z=#G@M3+qy6jd~@0{e}IhFIR6mRMCHL&99HA?7p*RPye-;5;>{njoc@XKi2og*}IO4 z-Ss=is)CK2HD@zJ8@-vN1^s*aInQk~=6No4=OLycoP-#`$F2p=OgdkxcfqP2V>T<_$e<=y`QSP-POGG7u>OV>_p|+JiIUC zTd($A+5ZDK9}ZVtb6@KCyusR(yrHs`ygR3-NbJ0swUdtow+k!r2q&fDaFw{BcDVJY z3iE!Q`KJRzBgWUO&l?V$d*nsL??pF$c^eS3U5MGx^puR~hDRhG39-9hScyS$>^9Vj z8)E0q3yuc)x1js?s7#8)Jkm9oec2rBZ0u^}JWsrC-m|(}#W0Tm|H3&lDpXgzvAd%k zQz~h~{5d+JfoL!S|2^?)zR+Id%*YhKoRyh8F;rU*)?w6jCDb;}KSs7hxN=sTxI*S`tao56KjJvgMFt@5P z?7}7w#sCpIN#uG%hyRZGm3D+UKhiwHbjA}Y&IsA_kp`V(M2j;*L)hhsms=|+#^ID~Dg(c5wS2W-=fj)NiWoV*3I(9ks0cXa9e4)b4+->r9TARW9f`bi={sXTx01^1AFf{ zXQ;o2&N+!%GMsPDKP4(gE#C!ZoV8@CR{^dT74B~Xd*{n^*4SenX~|T-0q7DH{*MDU zTRP`&R#`f~-S~>7^S-RajbEk;0`r_&G8MlQ&|Gs( zxFh7;(H)k49ds{!XR79e@MkLCm$8hr@D9+EG-u>z>j6&zN<)q6L3j%1fpWg!Um2Yo z$Blb^I_GDK(EUGr`gy71s>9d%^d&xhqfbBN)Bn?_mvdkU$-y=at>zY^lVg0oG zdI>uc$b;AdyyL$)-qh{9x6rVvqj_~(ydh?$_&75He;?EBX3Hc!&L?wb>zNs1m^Y%Q zk#PcvnL#H6193*3p42AO-HOdDGno*FfO?J@fS!Mb$!eN$XRXN;H<{QbGu=we6uJ^) zv&2kSLqHt~Op?>F0;8h=#x<@d$AQsv{$#S7Op%ira%IM9nVF1NhM99ovvce@QKbo^ z24`AY1BM8(n;K#(Z)&(+~)7{$Kl9V>bY~`|e&!W|VG~pFfo9%uhFjh0_84D|NsQ&P(gyR@)8S8N&)Hkp+UftG07}68${5hF0J@C}$7`ET+%wX$|_h2~P)fR70%A%7^ zkPFZ6uI7mMDhznN$&D@*T~fCOU&UHhl3Z{JQ66bVqw^f);@M8u>tOlMj^nsX3{Ncl zB=*nd|8ZjBr&&C)@CCrK-UG4l{C`l^d$9j2ycK-lV(cKq;-Am20~}C7h=tz{oNfMt zCKi4-u*?f07XA@nnHNMXJjZi^k75TQ7XF*SVxL&}=Yey~u!LCn7lCsPPb~b)z+#_R z_}74Q&cY7z8aCnI1kN=)vGDHz2h4x##KLntn8OF#5Mtqf2b^noV&O4Fa_tZc&*$)g zDtLqt3xA%)6ARCAVW3+3Cl>yroF|jL!@Ca2nEyEi%P{&YCw7-UvZ*aIVmK8qcsW$Hx(Klh$S7QSchLO#3I6 zcydH6JhAW`cAZXpXHuoT6N{ao#S;rZ6Ij|ivG5^aY460suLBnQ#KPZ8z8*UWvG99< z1M|ryt`GVYbg2)-;{O0}4hs!JEc{{MT*DI!&o(Rdfmrw-k>?`;2(j=#1(tq^Soovl ztFVI*3qKlVCp@w6T!u*65wY+y$(wdWEIiwqtS@D^JHE3g>q`-ff8Lu)x`>6ZBX8Ox zvGDw_QQ9N1@K*y%J`)Sidqrt4#KJR+LqY5yv#~{{I#98xM|h!tT!Sr?=RmcBc)G@H zJB9fgx8o3*p>YrK1sZR_Av9CtL1O+v0C@siVSxkHJ{%&mG)_m{WIkk;g^Pg;3$>pW zz~cWbP%>wRSkg5GID3)yPb@s6D07L4g|8sL1Um?^@biGBJ`)Siw96Xj#KN}#%Npmz z!nXm-oL*w#*8=CT1Aq_=Ioa4jh=so!IM?vR!haE1><|mT zoxG`U#KP|;&q@Iy7QPBNRD>Obh=8z8${f)(z%q~Y_cg!Ez7a^i^*q587w4|v_xNFZJ0ku&k`qKD zVf1~fHw>q0Z=}(@e-_UlZrYA|5`859Qxz!#7>AA3uLfJX**M&RS9ktG6|gO-MwyBu z{iPYb${giDHwwG`(b!JrkJZ$F-h0Fd+~m9*i!iQL*eGAmQfeQJGaY;+MK`AFCTxy9 z6YwP{W>^Oo&mP;gW6${OLAz$Vp}jMV8|^)f&5qwYQ21<4MB=v>gdM*fv}fYS|Gp)D zzXZ1JT@62viZL9;-oKhKRmSaQj9+&kAmcaIxG{cwwrkrPjT1d+!tfyWI3LH3-&%}& zInROicpD_~`;4(y!oZMSa9~_ScrI=X%OmrQvKfUiS3_qn{_ZpW#OYfsEKBH*vJ(JV z(Wy11=x?DYIEp_WB~5gmG752kUv|rt*qDwiY|L}mb7dhi?FQ@IV$VO{ARP_io8pMj G0{DtBqJu^hApkfRE@viu(N3FGrpx^VXnRl(p27CF=`Tu_3 z@B0tztmk>=UGL1AHEY&wX3dBbYFc7TPf9&5+&2_XC>>uip=4swxNsQ%5$wO=@PzRb z%?gWBl~PA5b9sGTys_=%c-y@Ah0EftZORj; z$7^a2Rp&Of9>#X=vcrhcczwJrZh1UC-d4V>wXLavuH!9M%+#9Jy4aLuZA&ff^mt=! zw5F}blFFMJ8!bu;i_VM3E}9o_ZEk98wNovx??at!)kft_wYH%Zqcb?arhb`iFt;V% zT+?DJNG@)dSyf}RWm6ezW{%HjscCLDn@g#_sWqOUaZ3^;ZjCLS-ddk%1u4-#r9}VG z5}oPYUS1!sX_?m4(vVQhlxk7(Q)+7~b3tG7!+VrIn?_mIS>;}Q=Pa}<2v zqO?e27NsslU9FBem9-#N(6spcH=7YoVw>$ZbBS*X&m^QQHxz3-${{0n7^|oidIc)2y+h_Ru>Vw|( z@9FQ4|7B%#P)~2WAMwNX$T~T_{ga~ChHospNoAC-DO!8a+TJx+9xbu-IH%*~j(MF= zTdDZ=&FOf$!?T&=;?W)9oBno=`+rZ4`|AHtj{j!Kq<>F3ef9r-I)lC^oxb`%lFrT> zRKNQ>GfT0bcVwxvuFl*s1b>G;vAnA1h7~vb02Sjr){a(snVLmi*b}RpG*dV#H4!H*UgMHRTjkla{*H*hR`W1u!`y z&~j06QC(5nStUmkBj`#Pe<*egLb~HF^ zy%+o{Sq(6BCYDJm#ft>;AHw@3#Pek61;6V}YkoD*iv;qkLFy^WRT3fP4P?sb%1vzf^TO zxaTibb%1;RQq_8J&tIzA0PguqRX2ls{sySq!99Ni)ZO5ozX57HxaV(x`W3k6Z-CkZ zJ{&(C63aV7BAlgP1=X`gS&C&4`~NM=g4XXR@Gld1z^Z_>AD+OEHC+4er>6Absp^bA ze1NJqd^CIoSznyfhSTs{*9qlK4Gm3=s$kaCspG0Anq{e37Mo>>Sr$3V!fLG-8T+DY zZC~W-+P`JiouFR~dzH3d`) z4tvxeHeQ;w!>wx{(}!KzzO6gFfp>>@*m!fZR}e$viaSbG(Ad-#FF1KlReoz*P3!_} z5-(y3YTDXb>J~3+i?`}R`N#gUny_g%O^LbI_SQ`@kh_U?a%G~g$vr#9G4QbG)yLnn zD}+sAx;z(2kaT%`C*xOUB2G9$sZGEG0yC!z#PFI^ho`Zyw|5jWH3}NbZ=i{zUzQikkHe9==^0I zfB$8cj)*^3NJ2)S4FfNrQKy<6f{Ql1R($IQ<|>Zma+PeQ;svgi^=)@81VM(5CaCkGU}_Uq#f; zjjG>0?fO2rdwZ6ez23KPw0qy#RTW5@fGx@l1k{R+a<4Rc!>WpRzw5d#knXSe%XeMD zKx)qDjjCs(SpMPhow$cAT2p{~-U8QGZ~IIaZwqWtRaITT53KN2$#D4 zYTf2O?GIOHP8g#8aP>y#K5cORwNHBYY94y(rWI-jO47e2RWY@kg53vrN3XYp_wun} zfx(#p)lcrKkJ_8JrW?FFMfLMd6LlW$yM5DEx;$%FZ@X;GmX5z{6)g4#D?fI$?&N@) z*RjRjuA}y*2f712ez6Pe4FqzgSS>>rX?So z*SW=g?l5AP*e0&~r>Z|yistP*|Lv)2RqpPCvEkeMMX%j@Q*q!Xl{APxx=~A*#xS=W z2R&=+S+4GTH&BtY?hb`#D$2iSjgR~6+C2xWa(W(CgZ7@-GwfsRvj9uya%gub`?*Nr z*37`Y*@utoZNK$#$#K~xHT1zXtc5$w9*~$xdo$BYklP;r0(Z~#c6A3nP4alwv%PD# zwO=sh&f4Y?#eq1M8^SFAu2WK0N_nv!iO+nuoO9iMF=;C;=5;KvN_*H|SzFdzSQXy1 zEpVgCEFGr0@eHc!>MI8gdLq23J21}5k8jVm8M|^uZ~mZfEPamdcmdlfsa?J+Z@rYlhpzWkqjrC= zacgG!y+>}?EU~gip}W6Cndh!|`NFKb#D1*1H^pvc^zwzCt+zj7KTT6!{ke9x*NVn6 z(~r*V_``Q;XDmxvl{+Kp_FewbGkjg6hxq(^*7;(ofzT2+?X;8PzTS@5k%8fo14;M3 zp03~b4>VL1SC#kzYsS8rxo51}VQTgSTyk`$q^LXJyFGl=)+N?c#Ju%sp{j$4z8V&; z=@sqRKuKWm6qc2vqy*Gx?2Y+Xy>OMJoHmxNSMt6k9j|tH?M9YW=7l|nEB}4JLM`&e z0)ZhpquTb-dpEp`C-J^&%K)GM=d*m0dS)QH4|Ts^cUp9x*uG+y^rzcXp?YR>lAElFGdJul~HB`j0q5Z9C#-)scL|&+3Mx{o%`$ zKR%hQGLPs~Z|+a)m-5xu^NTy5EZeqWkLv!*U;G6d{Ajzj1!%we*6zQIS9k9!1{*Xj z{p#+(^KN^d`R?xT)~wsuCeQEQ$~EMKqXX5HJnYZdCAlr{G{_qKRRD+#!*iD=@_+w-eN_fPuzx&JdC%eVHn zca6#Q`EzHeWm#$SbCdk}yFWNT;rJKdT(ZtEUh?y|^7x_KB6N3tp|4#2kJgrSW!oif z9p7f9XxxY!u+Uw8lN;+x}u&*PYxi+vOHoXF+ z-sQu2?nkj--|k-5z2KItKC`0+XKkMuy*6@-*UIHSo44i#w9qfOTkId*<Pz`9~)o;934v zH-+Bzk{((ndOBF?ona--k1OHDKj>YruBZKKx1yG#(p2CjvCE01CFK;PB@KJLJ4L5A z&q{CDuC80&`Pv^zKF}5U$ai_wg7s&QzPs#asp;Q3^&u^wW_G;pZs&=(M(kd{#>pSA zd}ekuy1vqWfa^Q72i<{=KX-5M7=Y{N_liq;aDE-}v24$Vt*b`;#?L$^<}N3E-GR4X zPyXoR%E04dEjEMP^VZXDPX18Ye@Ai0s44ve#VL2FZ3FHqn~CG)JvTRpUUR%ux$9Rs zqaXNY6>5h+@|&c^*ta>62ln6Nt|RH@6l~t_;yeqFvhWxSkF;=P^H=V=1)INmZ@pc9 zfsb=WCLbt1;*lw_|D1i)w!p)_?vyC%z+^WMU8x<&Ve~*|#fI-@ua6A~48P~*%OCG; z&k47GQ#>GdN-Qv7_{#qZU&*KB)ma%(Y5p%BPbaaedzW%XcfUy)QFmtjb*bG0NzZ z4zG=Qv-0h%z!SQZx&u20#Dd$CRz`{Az_wMnr>L~+0!f(_9RvPSd1q}; z_)ibAU76Rp&}~~Yas4Q3{>k;`9a)E7^Bt_Lcrbd)ihdLDl*fO}5eiqu>kFI~_?-h! zO~YO1{*F^}R$Sx@G^Aw)zVlZMQ)mUpt(=uPAbmw<>alJc#`?q9Re5U^Tf$g!AfxO4 znZ7{J0&Kb07U8b-1Z?*=%d>d=ZQq)9XS#o7w7c`;@3y7hggd5Gg>=&WdqS$Ke^zQo z^4lA(|2C8D`kd_({JCq;#;31{m2X!C9mPj%pVC!$gm1(>+XBBl;@HuF0&dkR+~Ee+cc;JmT~5IR-^8v?9rAKl z?B7!hV%MkQoX}sz1_mOrUoZ5%ynYq7rMUBEU+lC8hhV#smTcJ8v0=*n>lSo=;?^MO zydV9hIIw+6&Zs+7?A5BkwzZFxb^RjbL!570%7!ViUw8W6>YU#hdwIUE>%J7?9WZ&%l#z&GnRbE|*#IRC!ADgDd6w-u+H?c3H_HO1SO-mbu#+?JK6 z6bGuNu;g+^;oiNVe^O4Qf6}0ym8WFho`(DWZ@$ydB5+KGoq91aa5Qt9wmmC}xhoEA zn38!!F7BJtSD<}Cix?~axyrkW`|RLtuWmS`P3#x9+r(rZ>DYf8P?D%wX{u{b98YDk zRo4%zQoB1@`c|zvI)GB#{f(6T&A-gS^Q*USO8ua2JMv;mcR{Cj7GMsUTc-^F^TB?_ zDSuSk+FvSLVBH7wKje;H(Cta*c8qfG6ukV+J#O|6$+fgsargNK zpOy{JFTJW`Nq1-G#B2ZEdn)FkGCbW&$8}1-{9${%`_aN44_{ujdS`eeeGS{yucGG$ z_KMhfvl@C&SMOTuNm>b?4RkwC2$nB6YagEqI61>L(R}L|>Rsok1E_je?0M@mw+~m{ zB}c)>*pFXsFHX6+Y_xSH71-O|9#NzF__6Ow^41rZT;tnT(&KAbf8l2%w)$okcic5) zdDgbT!YOM4d}fprz5~zUdTwTKo9@)PM^^1AT652u-gdT$+j6(7;@mx|Vf`@o+N&du zCvq#KOuJLxIPz{jt4YR_h2+t=7LpjR2TtDFr(X1~F1MAG`HD+>)Mx8gzu4j2+42dg zto2mopgn^34_#e3>{(%-5ADBo<;5 zV>^;ojop*v&+G85%G-msT<6QnRnF#7{+uo2{W*6B zL!UZx|KQJ&;-I~f8(+nT!-w@`2Id|){aVxk^StbywRvkx-D^vKq(AyU;kiv(V8ymT z*OYs@V!z&?wsaMDto6<5eBEt@k9zmqO|hfueg2BIzVu!5(6?!U8|T}%t-WnZ*S%l( z@U%C)#@Dkcu~t`A^=w+|^f(OHHC|LxUss!|&}}cw&H-T)v81N1J|d(6ofO09kr%$W zu5D@fm~&drX*?!XEk)1Aa6?UfeN!w<^SIsjaBfXYYrLwZKHL&-Th`JTuMOwwXuPY3 zJh!Q(txr@%OG{JBWJz%GvL#F6E#amX*yyf_VI#FJZCX}e8^+7DaDBYBHQcterV*}3 zsM&T#!mUlQ3$R5?nCu8OLvLk*nx3jAhn*e~v1-#xF|3_5#2cDgmdi#>KJGYG?xwn= z4&}g2Pt=Y%?ie+lMS_=@;X353sVUsb;t7w*tqq@aB62cT!E>xxdrnnzYfzeh%Q|=I zvcy!HQE*Pr2VIV*$Ckz$;(bbzd$HBoEM;Qp&|i%G6~`5>)KI1SPjMjQ`UsE9V|pSWuXrT3&-~$w!Bcww9*) z$=JjBF)D~am(h5v4IRZMhhyx^nV!mWo{ZJ83s0`7RC7-~9e=7SRkUJOMP-GWUNI%A zP^Gb_q$Z)O*^>IEixvCSHnr4UTBH3r{cOW3w{>!EtC}*kJX$gBlJl0|qUzZ;rUfi^-v9_jV`H4>HnRxByMU_s;b^P5gRy>V`A zT%TQ^s!l(BR`ta#b!~Au1W*^kC!QD{7xDH*_~M#Yy*p6I%fqel78Efz$Lyg2hiaw>OjUTpz>%yw?x+2^LGE>v^Sdewwu zO)V{`*Uljju4!z&7%d*FfHIxT(Pqv=FUfeA=BJ~=wl1lwS&UA`NHfet!`$Oex`!z+ z_HaP=N>i{Vf8LSHnkNk@st~$d>W1H~kh%)1+*)LLp=xc7)if?KUQ}fZvWo^fzoIeL zR9n}0o+@X_;RG4dvT>FR-uZNJCd(ndCAp`tf$X&b)xX1~1!_&|6Tyx7PgxlAJg3 z#sL=W>u3l6A@S_#;|0GmotBK`SEkdG%S~q|mzz#SE)N@|7k=dbWTUWOfY0g8;F~ADsJv@pod${+#UFK+e9X$AJ$v{BbPH!6m z!HdCV{UfmAbZ|MI2Z5gnF7-PbJPyv5g!#(_zZ_hS-{ZhHflK}-fwO;*ly^D!Z^32z zmV)mCXV*&lYXMKf&XxLm8Tc@8wzG`y1Rnz~_30Y$s z+H@X8$=G*ZUo4DO0ME1R2ZMX|DQY;l*J}4uqrh1=b?B!e;BBbmI;5%+@TEdksyY$; zGK*J$FShLGfIn%)&j)|r;?>}(mitD{x!4}Ph|2Z6U+d>Hsvi}Tp*v3MT%T^8rDy3^t(fWK_<3h=iq zJ_r0ui=P3$#NyT9H(2~U@I|JM^QdYD|H_RYs4fBj*5WI{dF`XaK(!X!+rIUf&d@*>QWq$!U+epbz8~8;Qza0D#Y@@_?f`4Vj{}_BV>bS(;06x*; zw}MBk^?SiDv*NdbkFw$)1%J(o-vb`9;-BOC7XJ_Mt1bQp_!f)r1OJJ|KL`I@vWxn= zAAFI^GgJ~z9K0sgAw#8td&g^r3W5h+e;Fzp-1C>AMuG2^)p3^02lwhnhAIX3#tUVr ze*yQ}%M3Lg+^g>y>NN0iZvDzo3&0~5kAW|-cs=+R7GDOQ;_m+pbp`lvi(dsk)#BHH zKV{{ABlt+m-)-Q$=FuTT-3dO&;tznQxb-7L{R;d+cYkK6C&5FOzu$ttY{j$B_!E}D zH^E=E;y(oEIbPELGdQmigdYHJw0NK&&h6Iz8VJsFnAraSywT!ea9(do{8;cZYyBed zAy)kH;OATMQSkW|pAEjq;`711`kbMv!FO8QyA+()fRg@&;NJ0(p)LiVX!%;kD&SmxOct}s)xY6>w%!!34W5h{Xw-C+&g~+ z)eGQTt@Qo~ext?T0Y6~zkHI@F{ul7D<^Nmo2d(%caACI7;u+v_&Bd#_Vc;KG@gu>< zSpJR$pJnm!;OAQQC(zz154?I+7g_dmz+ZItPf(o!?wxOfY7zJ}%f1fWyWR?_7Vy`t z_5T(8fR$c5c!3qa9^5-02G#Z8UV9Q${|5e?wf`(!i$+#s13#_u8|d z8V-JomA_nY@B9^11>jq(_zB=2S-cFq&Ehk_ldSaTf%6(!@^d!$NtQicx~QR6d;_?5 z{0G%V;NJN!sD1?QU4IW&SAmZf_qa>@F}U}XWr+GI_(&`M-@x(TgrRCHh*$qZ>OSxu ziAG9~fG@K6ufZR1`Ed0N_z4z&34F7~UkAU=;_rh`cKOlj(?08m)z{!d-1x9c!gmBl zSv(EA%;JN=3tT=@9R*%*@ngWxvG_Rf^DRCJ+$$ds(ZuhJh;og=$EvBYXPA#4$M*6& z2NHPC8cX2k8(xaIph{6!7|u2`h`YjT6YMu9@EwNpoEpTQdom&Zl?48u3H*Zu{$C0F z%LM*i0`E6Kwoc!Zrzh~i3H+D@J~@HEYwG?JIEQd7@+k@NixYT#0&h*=YYe}_@t2`` z65@Lk_=5?2ZvubK@G;K*8KVAILi~3LJd-!-2)zFf;>gQ4{1JzT)EvVfb@*_#$Z#Gr zL44$<+3={t!?@V6Kj~pT(RW^4;GL-@nHO=E!Vj86@j3vbvpJs9ED8z*a2Pft3OH`t z0pkU5#xYoNs;Th z$n{+0dMY9cirqBEyJ?Jf(-`ljG2TsMyqm^& zrcqrT!`F7~QL6l$Md|o>V+eNCLFP~B< zGIsc6f?lE66`1|0QxTy(7FRQ$6bhM52goXg%&w!zN`>5HN73oSjjUDV8jC~cP^GbR z><~DIr=!SP&LQb2lBjd=If^9e9E8s5dSkusJm}nvH-#}?HetNkCI~uH0J5snGEJQd zMOJp&B`P`x@^y)lYUdc5I<>@jD-rhq+AV-~3!qoVCns0|xRUV?pbHv6ZxDdkn8HI+ zV&gPcT-`aS9ia1BQth-^RGg;G0g|ZGbUBK6cA6$f(R-t$+Bwpxl!)TA0#uw<$pPZf zX=WT_aabamcj`Z*N+r*w;?QXc808#}j*YB7LAGLol-LBCPW66A>BRWa4bX&Y=RD#F zI&sA4#3z`;bb@%9AbSfyY|W7cMdxOMIry-$t^w zV#J>*W8_o(nX-Z6+K6Mb&nL)^ognoKKvp+Z2KmyZg(%q=Q+E)hcM<$Z-p#(6AZ-Dn zBz04FkY~w;b4Ft!%i7Kb5(QHU0Hg?4mA8(xTJNF<$eD23M5aN>s*ap8;JS4#J9v+SJiUw`W}i}*YtPt&H@gQz1Q`xQ_1W#H=^Q za9L~RF!6hef8!I2=Hrux`|#u8KGtY`kn{ihk5uycLy#R65QvK%q@NRn%r|)Wq(F2& zf5|pFvFH)t;8g90SoB%IA-?cOAQpWtaJJEjMGpc;F2ElI_K1nrJJ5NK5^d0UDs_V^ zf%6-+J^%~Z7Gm+qXGEeCi_ZKul;1G8>0;(zxW{*o$r4_rt287=tl!* z8=Y8m_79M9AQqj^>7^WqMLz*JI0t_ah(+fi5n{(31Y*%yWwVV=EIM6C{)t6re}quJ z_CqZC0^n?;6N}FGDdLA%^m^*2;tv9`=zL!w#~rcgYk@=NVJflcR|97oomli6fHUXf z4+631w*iNab7Vy<`WE19qZ5mMFR=I_7M<@Af~VmR06N}FFIW!i35Qs(J1e|SjV$pkmCI7^tKS_NSb`Aou=&u0F`I=bt z4}n8@_=7+!`X|8IMkf~iTVTmQvFIV-$XfhCI0?T=H&wZg&bpGx0-~-UJ zjZQ4~4*^U5iA8@AICO&cLoE6$z}ZG87X3BapQ!DLMSp|#Mkf~i6W|~_Y9kPfegHT$ zOZy=fUE%zaZFFMM+0Rk(Pb@n7w}qB!Kg6Q*oStp;KIeDZPtf-4A1(HyX>W95(TjkC zys$zb7JWMP0oo6-=#{`BLx@E`6FA!tV$m1TzDWBa7QL4CMkf~id|)XDV$oLshyF$T zAr`$IINRvNqF)0n`6m{=2RKxw{Sb@3893YM#G*d{EagKi`t!h{DcTRQ=r00i8=YA6 z6Y#D#^9)_i#G=mumitFy(H8+rdrmAm`wNC<=yZuizZ5vz=)|I50W9T7EIRvU%Q=)- z^j=FR7M=Z8#GY7m_6L%3CKmluOD7h6KlL+pIS`9JAQ{^=Rc{xu=o!G-Mkf}XeXnJ| z5R1gUL2JvFPJ~rF@7*XFnX-E@IK=0*9j7Ke6bQz}ZG87M=ZZB%j2h z*8_(tv>#&8n}M^9PAqyGu;i0i^v%?HBZWXL`dz@GY1%)r==TC=8=YA62WWq?wkH<- zA=(?ASoEF1vR%ZYKLZ?^uKf^;{ycED(TPQW5m>g1SakOFmhvYS{c~WcC&Z$E2`u%5 zSoCj!C7;Birv|)y5{o_%Sn^3MI{TqYK8ZzVe?iG7vFPlF8ycz0fmrl$z}ZG87M*>^ z#SgLQmDJ7oky!Mlz;b>h7QG%=&X2^RHv>!liABGX`ZQgCh(-Siu(UJ8qF)az?F_N# zHv)@)V$s<@I5bn21F`76z}ZG87M*?0#SgLQj{wX4EV1Z$aGk*mZ3Lc9GJfhn=UHOp z28|oBh-}pOMq>U!co4tHO%7DA5pUA?ODytl*7yLi@jnp7lz)rXo%>Uxms0;XtuF%3 z=+U?lIC87Tmr^(OR{}?G(>k9mM1H36HPj8hf%coVzQwY?i~8+a-wB+*MdK%E^K*@# z1CDIf_ygM9q48I=k!?wWZt!H_Xs@=J3mmyq<8x?pm&Pr`rc5pY&bV9aj}r4j9^onA z$S*WL035wn<9>eV_i3C89KB!T0_xi|o(Y_9@B-lS2ei)q#^u{JUQHX5=XDl-4>qYcLL}CQscGMjm>oyev0@}ZNu?f(O+pi3pnza z#^+FfT;nCwcWQhou$0?c;PPEszlQn~8gI7nLzX>~b?^0vrOx*QmTLoI(dPh%euzH^ z#G=mw&Ne!+=w|}Uu|_QVB4F`PEP4yD-0KmG-cH?|gNQ}vp(6L!#G!2 zv>#&8*OyQI`6Zxjc(s_ZKZv!wkH<* zyJ&B8V$mO<{X%U|Ec!#VH#)KCPXbH*Cl>t!>gM<&7Cq$m?1@Ep?$PGx{bk>yolE^TN0bguSKEcyW8Y@-v4&g*%(wzRM9L(oGt+7GeV9}S#sbYjstb}1Cs z_Qaw`fwPTHEIO|rWV?t(=a{C@dD;)L=nH_ejZQ2&$2`gNc4E3tv2orpJ?qFSjKeSToW{I{kDB~X zq;4<|p?rgRJsf~ zlhGFCzpQbH*rYWPIPxD_pJnOKQGZ42uK<_-LE}$>qpxcGEpWykHBR=!=W7~g0B8J3 zV~$aaysq&{#Q&-BeBw7WUILtNZ0aq19dO2*+U5b;zoqeW#BXc-Dsc22jX$Ao@K?a) z?`mD)_>H`$aS%A;eT~Nuf1vSH;(Z#=0?vO&<3+&H4>hj0^cBF87N2!w{4Z_8=NnSC zeCCk>1P5ju`a#v6{_QYcUh-FVK`bX5wxsOg6U1HI%q;B$0Ec#AhIfoL9z8hH1 zp~Rv;Mf)n9Ph!!Zp}o=MMbfpeVNz*-nogHk><7}`=)|HA1(xzB7CizSnydW~i#`rG+vvoimja6) zV$s>o$op1e(dPooJuQ-jiAApkmhB}LeJSmEvyMP4dOhupPAvLGv_D`W3*kUBsfV29|3cV$pd{kA9~87hsX`xyIb(8GqK8w}{a%H0I@6{$Dh%$0FlP zjd@Pb|EtEAVG;dG1|=Mo#Ai;0iW zIC9vdkKlM!fLC8RR7#XZ_1UTPd-owf^P9x6JHvINL zbcn`Ffy;lOF~=lFhidFRC*+5*5IU)weZl+043q8_>LG1&kAtOB-JFAv6+?(3sn3aeD$CRu)(!zNbF0=5Nz~#s2b=#;LKb^#;OoDJ5JV)CQ z%P~8g`a-P}i#`xIGDhpfL4H6Cfmm!pz(HQ*A`pv?WL0FW)>Db|G#&z+&yTbrI5xb9 zMqs-k&!&jQPabggNc=${7QF~q?vaT_KLJ>tfe?#c2ArLPKL};`i9Q`z{1A)2l)AZx zB^Lcs%br;D)s{{ydKfsu54jn#6BvBuXE8=KoKdsZna6Jkj#nfBxLx&vrq z@<}W#BY)Y#cBg9k#F_vXZsRw;FJeMl_2 zvro=)|J4JZ0Yzi#`Upe3H&5SBvl>9bqbd<;QD06Ik>G z#3yKd5peWGjRBSKc>dMxfN!G4+}DCx=DtZ<&md;OF#LDtxlJ6*a@gr+y^$=3jpjHI zJv{tyv*Gfqy@#J;*ByKQy!xEPF&mvJlQ z&Zz6ZW2DCh&#$Rp_B{^gw#4z3-0z7*Qt`IKXQZmpd|CYP(K3#|prwf;bU3OW-@-Pw zM*BM>i2t9TUwFPgik!bm2DANPJ5^@*i&JpT2%Lu>b^drfa$O$5Dflt4{bu_kLHzMn z%l6lU27>2f`s2FdZyB)dZzp&WeiFnV+a}xJYw$N68vU`&5P#jkw!hE8hl>+nfmfS# z%CKY@RgQOwcwRz(srZS%yMb+g196R(LBRy^w-wyZ-}A^EuUYAjZK8(LN68z0Q3;9CEm_N3y;*Xd7w!d@n ztl=6)njrb(ZGxS@bK>CG5%d?tPyF%n&i407ru_{XZ-4O8)%Lfj!K*KWEq}a>vHb-R zImYCT3&|f(fwsR*@K=d==5GjolE2ynf0N;lW@fu9F_u~YA`{6Gt&af1JA0+s@2L9R+Pk&+j#NPm{08_VpISD&! z1-Jz9cLV^}DKim+FU0ddVEP-0pZFUEJNlD0JVW}n79&fnmBrAe3(C&`+5CNFt^pkmeNnTj)+4Xfb1SI%56 zcr4GEpYN#nDN=ZUg;HrFF$*^o%p3L%W^lr+c@k5&D{qb9ep3YHb;_JD-n@pNRsPPM zNol3)`C#ScJ*!6T-v7I&oHg)KSuVS=e5!0+^!ccG%nA3Zv=LeAnd#R|7wyDdg8at@ ztl4_=I_;Uj{P^&i*d5g)C~=LM)_g^~XZ`Nek1NOa_$ofD9MQ8fidnYyyX)O<=F1+u z9djJrdz0v#vj;OXxh24vn0yuCjhqK4Et2Bn3`Tit=_^%j>)5D@Q#O{ZbY~{&U7I#4 z;CuPHw|9;D?kLQ$mA*B$IyFgrCr|Nac`fzsOt`_%HtkgaZ>S~ElD}y&0k<q0316~4^WEX-WK`}3SJ4}6{z`Qr0O))!CucU9c=uG*INURf-;e`;o+{R_;z z*U#IN{@ip`953)ktPleX@)uX=deLZO_27m3%_v@ABmJV;OMp>_+ z>d<+mB`#jI1NC$jKJx1y-F_f;-5wRd{J^q(J8x7O{;?JQSfGE>{c8eG7GTeFR`BA^ zjhI_etkQBZ&+K(?zcc>3K+o5eh1l;Swhr6-fjjrL*m3Xn+!)1-g*$MP^=}!VP?wzf zVgvQvfdQQX_h`z=yCbOtGe@n;-|Op6?a1=xv-WCG=Gxs^-dwQVUAyO<>*gr4E4kjA z6)!U|tD|_`X64P_Ejh~C)7v3OxM)=i?{<%G(Jo)OaclRw-6wh_p1Hm~=X^Ik=U5Mz zV;-$e*2zmcycsOB4pSCY3t0wU8FFTG%wu=}vq_FRAM>uQ%I%+Y2j&KykyMCzx%XOg zuBYXcz;XuWt?Tc1(mf)8En7Lwck+_el3(B6y!BrBFYH;ByVrN^Ud(itJ z?$>eF4R3MhPHU+0<|P%Mz6z#-c{{&lD{@rLqZ=h=C(bF+v;MIA{G%2RyENGrKL<>Q?&M;wV55i$$HS;S1V`4RBB3mS!ViQn%-R2y*@CvdqAMMc->^*w&clE z&c$4UqummTpFQc>v`GOKtGFAptZw(^_ryXQ{0TOnRM{q7GGwWHnB0A^v2<>ufBhFfw%L^0Q=^5ba8te4rLJ`gm)!0NM zJx`Qvg^%`e+A3!jBKr6~yH-3#sjl}Y-~}In5hBcT3mKJXp@UiCLnN6OC`g zOy*p6dZM{$&dh(9?GAGZ*0t4PHo;5d;klHMNT#qU08r#f_Yq{8b$yBVZ zrMk9d@p;v)@p$cFGldDIYB<3ZW*V!jj>R!)pq^=PL|A-WQZjB*b*!bW8qeoit(oxj zMyW*e<_ol8^#$?eW)Gpbjq%}qS{cJ+iOb@qyribO(TAkfi0}PK&FZsfIf)bkY}kve4axnH?vb<@R-x`3>d`X+#fl*^hA@3!@#7QHg&aI0HV zr|0l8X`y0-!z04#@HR~s@H@%>mrl{;-WTFF3HOqpnK$TUyhoF}LE+Yoq7!f5Nz$Ho zqh9z&=IHXQxjs&YR^XgmytifGEq)T7^n^(eR^ylC#yS$#7i-~sa^;1?&B0|}Q(#@* zbN|3I2J(adi?ftDaDL!CqvZ3Kp7Xwwd;u^XAvn*l$Ya18@yo}LydFzF z3mj=UpO=1sA77m?{zq8y)ia+Nk*~p$uUPOH#^HP(IuATz_{~_dkH6&S=iqmPv%I+e zeOPV-=e;)hFR^?doX-!)_h1>sZY?wXw^+^tm;C+#{72vgCjMTs||Il#0rvE88ZcQA2eC5pd?%9T8;RZiu zCgN+st*(-+_{!=riJ;0nC0N!ukC0Qj7ltSU>lmML%^TxYR-N+rYhA+)wp_FE!p6e?Q~#(;-#; z68LkWc+$=OBA$J!(@*4EEB+dRqQ`fiJ!#(7w~+ci2o}%pRr0j z4npVqIl}vcH(K$mTUS~<8=Q4ThXE=Fyi_QTf6j;IJy#pxJf9nE#UGFOxfU-6-|TXH zGaLLNi=Pf|y464(sLlqLE*a#t;EPeebQq`_z}wvX4pbL$ef%Vz$HGvHuLfRc*_`3_ZpB2w>3@H|W6nwg6zX#acp97uw-PT$0oX?H@fW`lR5?h?( z8`%F);y(jtUm4;1!G~Ds`w@4pM5AV=fj3(`6MTimIS1KwE)S|4@GD$C82zmDH&L`S zSe1a^WyPNa-e&P>;9mNJ)g17}Ry_M8cUrs}{3jOYctNke3|7tHUVR(vv_1D)_A3#8 zy~SM!aJV@d*;j~xb)4V4zu9nV8TkDofj^YMpGe@pPvGw)@Q)Mt7YQ6$a0Am%PvGnm zDS`3qeN;VDnb0)o)G^`0)Hogf1SY7d15z#`5l|U%MUzfl+XOsl`=NwTI$ag33 zmlF6V37m5}N#OdNvq=K^qy&Cy0&hs*YZLg-5;*5Tl0g4YC-7Gj_~!}S-%r-o$8UB5 zFHGQ(1U}912jC`%nF!BHh}Ux%T-;LA+#GKyh*_T!jm8%*I}dlpoF%#(_i_3zBR-$^ z8_V%6S9X0ci+^a+0)BPYnS_Afe|3QKd0~zCaaoP{oG%P(sDl0JO1B zdTsN_!;tzWbkcHc_+evtg4gFe$?i9c5BE)AX!aMFb!vDFCtJuaV)A)r^I2nK!-sG> zWj`!m4x1GuJ9zH~Io~emZc~fJfIE^{8mAlWZ_)v#Wx?F)PA0n8CIem2ZNmU;e z52PI4+**UjSbSvG*PHu{tj}6_p4Nit==++A$mu%V?78dn8JoL(+$*wyQVMSVoF{3A zI>4mwwM`AKZa+zLMeC85tH~oO>*3ZRan&`;+Lku3tDfXW)~b%7T$a|N1bI3}x|r*q4ZiB>!zbYtE9W}^9o+>LaKk$bzku?Z*Lw`*N?E_R*QnA%Zyy`si+b?4!C>7j1-8(mqGF^%$E4hwBes`W}Cg zzMdg2)(}_m=;LB^V$u1GCwQ?oA{KonaEK3l5Qs&e1DtJiV$sh84qk#k2*jed00);- z#XO1liO&1O;H6acy`t!=!Gr(m$bG*3%=^30V6792J@4DHjZQ53Cg9*@_=7+!`c~jj zCRP0mNp#+iW*ePY^!tIu53%UGfkS*ihd?a)Q^46qCl>t~;Ls5KK_C|WdEjiL6N~;T zaPV^cK_C|W6X2k^xh59$s`@)IQ9i6h_!7TJkprE1DDzDMbCFhLyw>?_EWbqK1;nKqw*Z$< z(6}EKQf|bO&!efgYa3$GPoQr07qRHmshj#wEc!g)ka<*1Ec$%lY@-v4elD<-Ke6a+ z6QUFG2Vo3;(Mb+;p7oYb)|kbSf4s)rRKZ*=!|1%_lXiw!{NuHUyB~=~zX&+96Mqnh zMZW{(Z3jsm;hmO+&blP^pICH0W0Lw$Ec#MpC4&_Q zf$dfFL}z5>UD?;ngXqJ7gX{1Ifmn1NgTeJw^>a+o%fN$IQ`PTsM4tm5{IMhV z`3BfI)UVMxvDlw)>BOR6M*Uj+K_C{r9XR+Cs=EKL=yWY(-H1iM4p_#z5sQ8Uu|`6A zSoGI`WnKkh(cb`;c@>C7{}4EMJ^mmNi~c2WD2zV{#G>y9&JN=b0UsO{}G zkmq+9Cu*PT*&fO`QDX740$B1xEczy3xke=xy$4vXQHe$G1(s`6V$pX}ze(qlSoCLr z<=g+nqCXFuovZDMMSlfY_6xD-d>15RE{R2Fe|i~nNi6zDz~YBk^sj(rTr9EZ2Y_W< zEV1Z(2PA%oMdz6B&V$lZ!XB(YZbiVr%Kg6OJQQxHf5R1;S<1*&}vFKBQWzGR& z(fRH<$d}p(#G)^vev8(LMQ@}2Z(1i7eFd=0T|g{4zjG#Y7Z8iicW6?diABGL_NG1) zi+%%eut%p$EP4-cC{63cqHhMyHafBBeE%1`RofGb{t)%sv`#GgZeW=Uf>`vYfMqTS zV$u07F!VF+hgkF%Xm504(fR%`#D*4uSoBwEZ**eOU#I=;+MZbSw`gy4V$nYY4sOx* z#G-#m{pVUI7CnXUeb~Sw5Q{z-SlTyY(L=PqL)#OJKAQRftrLqr4OqVSPb~UOVENuZ zvFLpNDD|IMbiPBDYcpce#~{hbY@O~pVxEu@Zo@DCR0lfWofYg{U(MAzKVMLOn#Os+ zk$D=Avv3)3^mMJ)S~{;A^DDJ}3H2(CSJQsJ#`hDSq486+IaA}efb-AN_zU6%8uMF; zqK7R!88~vbw&C|7^3Tz@p87(KFSGDk+L*lUq<*fpd4_tm#ziQ@j71vr`wbbUtoVMo zyhiJM_bcVLz_M9HeX+Jl!9wZ@vFw*rU^(9riyj0H_Tmqh_=(Q_DEBPHqK^ZXZ>vOI;C)&r7W<{t@7Fr9=xx-uX`NW~E2ux9 zbz;$1Q{S$2V$oR-BP?u$q4-JrMl3em*TEh5gJAD>CvQf#^L7L5Wd0Lk@v{k7=0718 z{Wf6P@5G|_1I{=Pe-OAYGMESgo2^Kl1D*a9(epK~#G?EHjn5>m*O=v*-=Hz;VR@s* ztV@w5ja#tDH$E=`E@vddW%!A{g7`xGL1@QMbhf4CX5DM3(;31~@QWJ#zwupxgcm~z zL+BIV!W%;XyWMiJ^XBcS017J5<_-^_Oa_IHM{!)7|+9N6u!${Eqlb}lh?+t8N%WVw_u8+LY(xE}!^ z8PoDBMY~y+q1bULWy$DGuv>xqso}uO@Z8+LAuuDT;xy_L~_&rh-D`z!1*WY4v~eQp15@2j|P z+DwdNQ#bwqn|U6#HGE^)CN*>i%52ro(>VTeZBFD1XMA;W$xgMcW>Q&+? zcWYufWTu4EB=+*EqjuP9E^yb&8Qq)wQq{40Zhvgh4zcD)YL0QwT$`%=$E;PWwxp`D zKkokbA!^}|Il4OQx4x6Rw+~U1J7@p6`{Ey{z{v;y*u89sTEFWsc{oD6F0TsTbl;Qy z+?k4_x0fBvL@7$#>YZCUe0y_xHmY?~d=)w2hgJBdLw()bPwX#;ua1hGo<|f)3*)Ul zPdOudRsTJ`?cITys^amSo>XVtVx!{xy1B{_X=_jjH+BKX&&4sSm8jl0&b~ z^sXJ<5xdH&4>x+_{I;#_E%R!}eAI?OV3J!qdM(T1j^47&z@9_u${opLclE6&fr^}w zcc{#?HP(2|-cIB(d4V+=Fl&#L@7P1f5}V^7dN8(ePs-*^{$tl9XFfX2@>hJ-W)=J4 z0A02z{35{19WQh~=hmtbx;DBoQYty4??{f##z^kmHOZp&c3_W>emMEU9aU8|ZXM(( z!i*7vo?BVbF)gFJIOQdkF*5Vyzb4)J?t9^ml*_*y)U&dpprhvo*44wcLMvySg?4D= z3}-8yZya<5vwWFr+cA>%Y4>=W#!bc-9`YNZr>)wOqVm=Z&o8dnp}O}BK^

    rD%n`0k2+8ui+mu48k3PnC5I4)|tvY;m{h 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 b$^Ma@ag&XYYP_F>Tfen={{56I8^3=8Q2>St literal 49228 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𝔧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 literal 417200 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�zqiMpaHl6MHiMYtXW8_ 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 z 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 diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/brandy-target3/libnetstack_http.a b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/brandy-target3/libnetstack_http.a index eb0cef510f97571149adab6ad9ed154ad4a4243c..01c8d06f1cfc215f56ede3bd947942c8f73b18e9 100644 GIT binary patch literal 64222 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 z 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 DfCU+{ diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/brandy-xts/libace_ble.a b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/brandy-xts/libace_ble.a new file mode 100644 index 0000000000000000000000000000000000000000..c7c8ffad20701c92e35af7f28d576b44dce8134c GIT binary patch literal 677354 zcmeEv3w%`7o&TA+b3gnA;bs-wYE-&n~8*mBqkFS zyLO?IiFsksk*=V1qXmk=vRyH_?$#}|i4BOBw&HfTkF7?iwa>K`LkQvjJ@nzGDBk*$N96 z=PeeWe=(U5^UcJRkoVEw`-lVcufIY*`uhk6|CeZhf9)0W(O+~NOv}k3{~P`it=}i_ z>)(S3B=Muak8p75Xu$osiu{{a+_Yv<(Q;RLtYxT;CH9n`??QrC+_cYfE?q=~tsZg=TfrkQebNiY+wZ7(3!R4Y4 zmw4*x8U&B8p@}|mxz;Rk(~?$3$|hVc#!Q^v`fAtaFcmKL3JulXs+QX7lBR}DsI;qc zrBJz{vNkkrVM#;NCXa8GM<}YUZt^xaBk6{aWO>dtUSC;r?Xq$g#gs?zd7EmReYJwC zvSLlHyRd9c={irH%O^sPMWM+;a&+PoN8xI3o!8Us#kVcqa%5Pl%dTuqzFYbSgl%5y zE^b_#D`HL8cjL$@S~d=6rKhP`L>jFLMZ<;-tL1Jk-0T%-*Hx@>xC@}lsO6|NJI?IF zv^gJbE~IVFD|EY?@Afph8(MsBp|(kAslzB)-%?ZKZE^w8Zbv>6G}hJn--i$|9dn9F)Z#pT||XVg35hWDX>& zY-(uqHu<*b*#Iz`>yC>H3k7$eZL$qU}n?AlPdQpXEI%U>dnSMj@| zraN0UdFy?YdFj52SQF`m^G1))C+4trOQTmLGd&<7Qt7GOiF2SjshjMG9S?awWP_5LFcU(yr_bdgKM)Z z-$#*v_xMNAt*^X+aGl`s#olJ2skRY}QLMW*!+}fEwqZKK*a^o_!eGLI>2!0oS7k%u zyr!>0xUU@eO8q7r>(X~<9MxXzc6%Bd>C`$U*`edy)n2Jv+#a8sW?Tsbg%Y$=8&I`g zi~xy7^C^wWb-K4OUqWTl&E5JapO&Er-Z)p z(D#ik%^Te7J;ImV&2ZBHV>V2i_%hx+V+1luE6slCO3^4s5H=r<#XoUQhr~|hYa}pJMFdSW*SFb5>S5mR( zCRy&0x{_fbapWF-V%Lw3FtyXSM(V-|%;ZkYMpcSn4Hn-GK`8zN7PB1jVy}?so zjX6=A=-j?a6dPW;klz?sd=yo!D4axG#MW3+)k@uKO2hDLS#>J*QifXr!NpaXmv<)w z+-AX3@5bbZX1F2Sc)|!-c?F{Mva0qTZ*@^Mn6R(58JeXeZb9=1rNc0cOBEhgUOwqz zaSZ8Uu^U=WT(y^moHP+igEzm?Q%fhOi7Oj!g%*J=2=`RNa=D-@RSJ-a%h%@ux`~oc z=~_2fD$B@Orn<&G&YCD%6spct08ga~xMFHo<18`dg;kAUn_`d1 z?F#dmBG+QNy}Joam+CpCm9VtAs4*d5r7S$5AVVc$8g}d}W7g0WZ2zMl*&IauX3AvU zm<5eT&}FI_N_-J0SK(i-MWUwC0DT@KFoZbcwX|Urvevp-QmbLYj=?PTq+<9sTsJww z$WK$F+D(A5j$aNov@i}CI3I>KO<<(Tk!Uu!yVkeC?Y&3vHu`EC>fLv?z}Nx>$JQ%=>T22CB+ud0#8+wFD*t!npOr2&_ei5Iy=Ot>zMxIgZxGu)`S8 z7*}H=WNDnx$D6e>+e^e3Beys)a4GUE5a8%&l8nr8)zvWU!_mmN>KR9V8UxINRXQ>eeVAu{ZWcfaJhQ1~t9Wk|2 zU1-lkl8HXuMV>cxgJWDWO_*wg8~$;dtm4dXyoRfIvkfDDK~A4?^OeL^Cq6RcMyH-6 z!&(!^i^_PiysT)PTFsuZ#DI|&F^qJw<9FPa8i(xf#(+{t1!faGRV+0a@6_<2h_^RF zyuFdBaOCmMDskf)?(B!*#`$H@GT2I7b`^syJTk-8&(cdu>uY_g2kVxGrZ2&86B-MX z=P;y^{9>+3#=YoRg17_8Id-?#^Cjp`E%iPJl&B^tIz@iT3U39~-n&}7qN!5nSJT%q z#KUIjUg{8WEop3Mbk{UB)ce>19OKAVF9$j|LI3hG^gRxdnkshUWS?J$NT5<5y@w?Z znMn*`rB4jUK$_Zn;3kvoS5X`rp@CBUw9o*gfwKlyO8G@S;=$;LmGCRp!a}x^b-~6^o8p+A^duM~znC??^7UVmY(DxtQ5BjHSyE#{l$4GoQc8ru z!CgbmsWit8p^mdWxojz+7|;?arCc~tQbV(vG&Ij8sN$-I>Xte$Vi9S)(3+O@Qse~; zIWz`L=a-W$ce0il5}z24r)x8!c$UMZPOVnah6jyO zS*{Hbku51hg!&GaYePhQCvt(1L9#sDAi+cZAko)xkxU3aPZK2tv2z`Hp6bnr0rmJ= znk8qSgnf}0Z=jw#X&ghyz&$HNsGN0!B!Gx~RWiNGd^IB4=@+zFVcExqHF+9#kWj%5 zTR4&c#d+Wz-c5~l9>MEwsjtPf=Khj*i`&z5XLIQWL~WpmJV#@#SMc6l+w5fwi#}R< zfv=?zRyd@i^{-gta+j9jM!aXdXrcTmFC6OeP(uBBiA5PB9~hC1Z3rz|65m;GqLSE1 zW3dC5LRA4HN26WJbR(@mSf=GDRH&t)F*32}39L{OW+XwSq@^A)wv4bMOCFIN&H8#t zo{sPmhJv0jO;P>IXcx`!gBO%$><`p(YE>4^85y@P5_Om$8w?YO%J7eg=c_RuF#=aC zM#U73cA<1D%W{%drlZ73xqG6Jm)Lnz80i<0Lrwy7QCKUTdKPQUHDu~RghX_%iZ8~& zSH=7>49nu>tc$~ORy>TrS#@2miaDz1o6c`h!&)Rtoe*16V)tn1m1JJkRYntg@(N|y z4{<{EaQ{Q>fn&I#r3rzKE-`{R)@123%mRg~6p1W--g}_xP*xXyGW9{EqT|LWi?dSz zk|2v1LOH_uXd!x`91r#K#s{P=1&A_k_EN0SKuaq7Ns~XLWJGVz2U>lKqjk|$sCZgO zJ9}c1v8Z}SAjh~EP#o=x&M36@g=&{#yL4*sq*@wgP$>MWv5~ckD3gkQFjJMw=er3D z5j>PLC<7W*Vnj6Atr~AIb{@j6sb)wS4%9-Q7pnm3@AOh`=&M|^zS`}u$UiK*sXj7j$l(f|dyoPbf(+oE}!@WdpVG@YMrxJ^bFxyierobmG<9H!g+hDv8G7=ZlY8D9S)n$bv3K4^EoJM$?=@0v}Wv zFAuApC~Jeksn%Of*S6MS$(6*}ur5qtZJ}nUJlSBi*4wnHwjMk&PK{PEi50c@Hqhe2 zmR7mav4rwb4-&a+>uVa^-p#&nfzxvBX&B;a@1_QycQsZ}iM98Hsj_UXp==y-qiAE3 zf(ykjHX_J;k;0Wl4&F#tpt)Pb_``6ei&KrD3Xf|x3pAq*zDg$|ziF^Kzfs)qd2Sq zh0y`>u{>%WT`j0$AH6Dy?xAZKwa=WY6Gp#|uNmu}<+W1iJ}T_!Dy?OZmyh|s$)~M# zQ;V0sle&}gR zpzKmG4)z;oFHIQ}j<>w{qQCV+6n1ALuGlf^bVf#)GzEqk_Zm-h=3+rAY%k3fu$)BZ zjQT1Wx{rRQbYFq7HV8wPR~C<>|KgzaDeJp<%9=pGIrRC4<=1(JzNLs{`c@}rL^O>~ zFhF4PZtG}5vu_+CGo8*V)~t-zC>q_C6XI^tQLaOp@2JGNyk?V3v*8yfI>d3M^91U$ z%F7eSCCzHt7P{+$)N$gx>CBZz0Sp7xp!&Pq>$gZ-G(;Sb)VqXHE^c6;*31{H4vxj* zSF3z2l1-ypYEhU0FQsgbBW2!_kS$-R7k3%FxS|J(3L{wd6Ncky5=?mGj$uTE6;@S$ zl_)1r(P1h*R>)K|L4<6i5O)lTo&+R5Skd6Ct*OO^K(JWJJy02*rb4wExd%(@tK|%$ z(j+5=O&rA^`iMqG;?_(0Mgj{jytALjYt)Urs!CEBrbcZFjj@lBuYQUNJD@`IoCM{> z-q#~~hlEiDT+uewhzq&mAXN0fa3zGIKwJSUg$Z8X2tgVEy2-O;y%)2BsF;Y+g4ikv z`+2z7ZDu0Q_LP53%nxyiBXlUKV&4ug_JKmsWp!y3gKz9uoi#T}?lr|&jGb28V%(eP zUyx0R;uC4{@S0WBWhZV&AaBDana?MVEtgP7eVK*I4otGOCt|-$Q3#I%A&E2^(2bx} zPaO?qULB#y)YB-v3qcY>cSJ>+33iTbb)Bk;ql8+R4VrvXw|KDa1I2zw<)SnPl}6R^ zPm?6*u1TW5a=oX{gH4Xyo*FC;mP?{r%(-cFub6_;heQn&HR8Heef%7vtHgv&wRdjt zxtkiOFDPafT2<)cQ}O#cZ_NZgm-XxMMEks-++xyB5d$TQ>|i3aTs96`p7?N|d~-pD zFgweeLy5d<94e5A9n9al$Ph=a9K^JEM*ko>A>GS!5&5deK#+&4_z;*iEqt`=D% zEQW^7nxv1UJvyey0X!vGoC+>d<_0R6p&J#GBGpVC1}OK5-YYclo32d3ub|1>>;

    i^NP}bZ`>#c-yhy*u@hA4|^(1Q~9r1PJ?RPI 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 literal 0 HcmV?d00001 diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/brandy-xts/libace_ext.a b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/brandy-xts/libace_ext.a new file mode 100644 index 0000000000000000000000000000000000000000..b95fdfd8e0fa5e1f1279ea351eaa7f1c286fe927 GIT binary patch literal 73854 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 literal 0 HcmV?d00001 diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/brandy-xts/libace_http.a b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/brandy-xts/libace_http.a index e7707d710ca68dd5877ff9e9eff9856ba7df8cb9..a94551f674691e074b93fe1c25fb421dd8e616cc 100644 GIT binary patch literal 78448 zcmeFa4SZD9oi~2MWFjF^VFC(?)`1}r<0NL1kbv5nkQpQhh!Ci6H3^f6L_?A$0kP|L z(Im)QeN?OkeA#RZ6r*KbMREIdEx5#ji>~cfw~y=g=~mmdeSCJ?uI>5)^#A?dbAI=p znGA2WyKA5Sp3j`Q-{1HA?(e*xd+yu0lP_=XjxYbrm`j4mE>c}pIla27thziHEOUbF z|6s7Htg2G)(KJRWwMeOnYyR;3WA7{V`}QB*q15m08?RrmxVNIQF;cOjxvPHRg37Ds zT)nuuwk|fWtv69McX9pF=Jwda1&hlYBUN*Hd%Na$wybPV)U~%II(lOZ7B^P5CwhA7 z7gsjMD9vncZ|{sZ_jY#IGpwt*t-Jmz1TL;ZI9#+mwo18CRy8*Eb|(^4jg&Vwu4-;y znP}|2y(@8obX25EhZA>XW@97rV9dljS9CRZC+ZhZZ(Ka1(M#xbBxK&Q2-1?ATquF7 zZb|g?c6Z*+95+THI(>~Doh>jlqjBM?Sd6JpDx*l5S1ggTy6!}CZ-NX>lr_2~c-7*H z#^ob-u3nx}raft5nBm1xhXP*K9KSUZxiZmP-_g_C+!0UcGCgjpsuv|bzY_U6wG`Re znQr#1?^ukAYF=^L7G^{{Z|i99Y;HO2JW>#48i?+Io61JX%A`Txal&t!ikDb~TipB%x)9G`0$3 zcRjkKj!-w%PhO=>N9FV+I82wzKpgKxTWvhmYGd(#QZrYMHkeq^)!rOWG_LGu!}#2I zYvT6C=I)zuFrD5wchOZ&zPs8I@x*OyJ&8sq>)k8ky^YRccY5#2uJ%Md^qf|WQo5?K zel8EOP7~KhUN-5|ZR^W)bB}giebTlRxw@kv(Y>Or14lgjus$+QCgfut;7`y$ySmaG z0L#njJKB1A;M8*!J#R@K=Re5}gyqFis}aZU=5{@HEpiIM^i*e7(zpy=q@ME<9VWG% zz>a#>auvor8NWWMogsoO;V6{o?$w!UcBU#`+jVnug8U6lMI!@nPUKl@jMg^Pj?|g4@an}4 zjkA`_9vKvw!Ce{`#}-5z7cRQ`%0;ooi$`iz&5t$AxjH&BAQI8pXsnAZN|TpJS?t<| zMYYFCR;1jCdr_<|R=+gOd5umQQZ_Q)@`%0b2~s}tl(Ej704CSTh%-w$PdtfQq{2*% z8kXbqq$SN^U}Op+IH_@_Q~KO?Wy%Qy`|QbLbq+1&6xcbPJ=qRb-f7`!rqnrcb5Fk( zao#tR2epOG-8dbKR6EUYQS6!}F|@IU>lVh^&;z{_5}bFRLWaDvwA2Wajp-5bB$;*3 zHdAf=o)Q}==M=WPyR*9vr{%G>Q^;S0Q|-D=3{V}t&Q$x9c8b)sclOAYj#H}U$f86K zBGT7JPHB(oy5))Zt&3MK>xp-_b@jG&c3>t~)~K&3z}m|8-jUreO`B$!uvs`$du<}( z%9!e(N+FdmwrwQU{4ys|r){y4Ntlo8L(MlQ7OphcA0mz!!=6&YY%{ETCuyf|rfhL< zXV+t?G1krpHz%;wyU-G&FlVBe~e0#)@Yg2kQ$bz99Yt*vOhG`pQ7I4-%&3q7fy_+mdfU1YSw)_E^2h8P0`81 zQ)0Lz^&PC_acvn|x=dxQavB}1`Gu$30%v>$?LdRU< z+Sbw9_Z`a1$`GpmBV}b(yyH+&9Wlvi8uKTyd9yPzGI0AryA1Vj%9E5jaHmo}1XVi0 z(^On7bHXP;J_nw

  2. 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 literal 71436 zcmeIb3w%}8nKr(XlOQ*3NYG-U_DCS5@es*{0G2wr9V9VAN+O>hIv&Ew!30ARlYnR) z8zm1zV@nf&&)uQtDVg$6CjFo7U;{?{s>#K)>hNYrT7~b8;~# z_-X&HU-sV5`>c1p>weig`|Nf0?Aq3F{rRKM^~bv08PjtMXBN&V$oKoFIbQbJ@1Hp{ zR}=olqm@!Yr805(^svhyv}j&+dwwXCo4>rarF>p>C^v6OZCgV))YjhG&~!z4m{e}K zzP2^g-dfwx-c}wC2Eom$ZES1~*S0sek_ZN?<`vAJJHL8HacQu!p*@nDA6yw}YA=P> zlG^Z<3{lV+X=^L5E(|ezL5Oh`wA41VmR|_2x)?NESzd6Za??~8LZp$1PF5(ivbJ$W zB-DOQi(yVgLY>Uz&I*N4945kW^YWJ3)<}8vj8JuH$jiwLB)M`)E>b~^gcy1^O%aJz$==v+VE83cy zYMN0v7*T^&;UTLbx6rFY-TQ-87sk}(kiqk;CZL0}hYV!G8uo`X3>oz0=9QN zopl1|KUC|0lVU?KxZuJXt0X^x`Jaw_wnezq$&-0M+}zaG9vW^5#B~*x)&JAQ7<%x0 ztSG!><@T#nCyg;Hv*C;-TrT!&2zm+75Nv4~-V$)oh~h?)<2E^)_RU2OQ{S&Fu*w-C zTf=VOgXYUx5FWQY4WrEtohz?#4Blf0&C!XfspFWd{?**S$ve!6xfvOtLFu~)ub&J) z+s!DgkA$zRUa_Pt+}hC6-q4IyRu~q&HOz;qy%W(M^U$jz%Uc?2!;#R6rUooXLsv$w z3DveU7{zbvX=QV6aL4j(SLG^E~do}cgckc?7!X`y!cOGpQPyz{(xY} zYML?p7LI2vx`EFdZUY~B`PHw1$JA2ZwDP8gcJH=Z-*3j=NpUcV38Wukm|N4_`As#E z*5wUNxIeWg_}oJGNs>HaLIGQkmss4go^qa}I8__7=5Uzd48XaeVLh$F`UDSZ;N)qJ z{jh2#p8}yVLSyBE>I*_u!&|lvItiYLVKg@{6yj<;gj@RBMvj~qzMQ$l^cd%fR0u^D zDQ8x-pNxqS1k_KgE@Zf2uFF5#3?d&5O>L3ZcAb-2=dp!1th-qlBGbqkW(WLvvtZr~ zbJMb|@m!Pgo{TOoJS}8izgR*<lyneumJh=pf$3*d1XY8Z7t0WO&Em+x@V66 zj{?hH4?0fx_Z@CxM=W=ijjVE>c?~|;)r4X~egX?Qeo*3K>VwRX^NwML{P=d+<1~29 z3sujvr@(3E7Othe)%hQu+raqmFsC#=*fQ?ehcqs75MdtHMNa?V@+Rc`s}8r0_#fsx zJm)H}p5qK2!Rf7$HasV;g6z%5Lj<*x!(1J&Y#!@sHH?27#-w@hemUqO;6$uOk6}QI z|3Bad$ia!4;XhC=V(*7$mKE0&hpL0~%0g8O=3lTNSY7Q*RWVw#8rl}%=|;oKNPoZF zJjcR;?p`PYq!s-ZMzkkrYTs!Dc@z*>5cdl(~>u+R+{CAuEA|~d1Jn8PQU(n2d z()Cj=XkNN>0PS3KJm+7K?mrUyg`8nD`rC}T*(`|IZyyX4mDA46t?4YCWB#YT9M9{y z@PD5mdHG%t{(sF1rp}FjO(piFm3~rQo=}TN(`snB^S|7ja7#;0^O9xfjvjrkd5cB# z?Dt;srcHydKIcxGR#;fz_ZQ|BVb-uw>xPIB-1-Molya?Az4ZaN5 zzc=`DTtfyg#H{!b5;7(kl26y3llfm7% z_87bd*R=+(!}Vr^*W>y%gE!!Mi@~?zy3ycGxZY;)?YMs3;LW&h!Letv8d+J~vH7#8 z_$yHR?<;RnBWdG5I+U6*3U3ej?^QFBl}bxac5IX1m^4atKNHU$I1tZt?~7*+^kcgF zg<738N*$VeU=PD?M688TNsn*xD7B&TG4fF_H4a-g5PN7qcEj8Ob&CdKd$-KJt7GJ2 zW6^JRj#W8pGNZ}TtnX~=9{von^L?<(_ z{XM~bJqui$eQP|Nz1Fdil&sRCorxQh%MMG3O#j6RY0)xYEEh>|^v5KtR@nz=Rp{SEKHd!r+@m+mR(&5ZWYkipkt-*S@+)dT=rz9^P_oZk1bHxL2 z7wzq@w{gs&&jkN#Ve~mShSihz{bgZvk(=7uT|@bPYnN~Gg^6y?vhPzvX@948DBmyj z9*eEMwGyi@Yi(lo+HnUZcZ=M-Y}~pwVdKkdiWjhnjF`E_2ja{eVv(; z%8q1a)g4J2(RsLMj_9T(C%N^Wmb~vT9^dKWd9J03=<`vp&J$cK{nN5~$5`ddN;(qW zxL-}VOROH)+M#CPeM(=}XqD5`*ONJM-%-ioRYB2ec&e|n!j1F59uIf#^U~tWDp%cm zB(&FW4(wwO7F%-dKH!_&pvtqgdLAq{BPi)JlA-(Q|!SWk5*PDr2em9=HRg zGzMdS))@5k7Y?soI3m$Ec??4AI}$$Y(bVocB*X(f**)FG5>BqDYm+|aF3U~ZxVM;& zXfRVfiqv#ksdh?{Bf*+|2^-<#jS{Paorj}6eQUPt_f1YZA~B>zlM=%{eTl2LA57>j z683J!b&S#jaHaB@r9$hd`*o^cyzQ^BM)@;4N$(%6xnHy8FdeP z?Gt14;bfHc_M`pFIxTs>Q_hkiG^=%t&VMUOnkxg4f@?KIo;vw(84HI{e1C zMMqxk`Pq(9iD}WN6C}RN*Zgeq!NkmMi0OeZCS>-GQeKODwex2?I(?b5AeSejZ@1$ftu<7XQDI)8>rbqlq?ufq!>%Z)twB!z-==F7`jp*>*;En~p$>r)X zu70A{_=vGxukB*T=k7yU(cUc|%;o_nY~|e@6CT4lboGu=Ds$2!hrhHpd(G%#%$;}nG9S3hSy^p_POPtQ z$3=;m+o5s)UGD6X+4n82jnUs*H_UQZSr+H6o;>c%0rbusK=0v#UX`#bT9(^;OWE1I zHZw0z;Vf1a+XJPbp7bia}ts?%K?XHCSI-Sx%UYwE}k*w~;itBZ( zLw@6~=fW!4ZHLEV$?Gkd{<Zwx`uQp2hvj&6u(Cqx;=CKD+CIt}LrAebAD! z*M44|`*u8~cDmNRa`fGIb7J_UF(X!QKRE%btoJr1?|aYl#d_zxzO^}+Cl+<>bW3C8 zE#Zvh@uPw}qnCHx;I2SrMd8Kb-Ai~DXJIv-D`o+qNYQcFQjAb=nTvh4_9Hu}WNCX?S-MP8&XkK8AJ3pT*vA zdzo+YzCRD$&p20n`Fmn_&z)*QF78f5mg{39{`7ZV-+XMuyOtz6-a2vAQ`u`0$94M? zo?7cm{z^3I=RZuSSP<>Kb7OS8N((-E(tU64@OS&!5;pcEtL|HV|C6=dzyF75(#|y_ zZyA%AJZel@vj5Wk=^fFe{XZO&`um9+ll_Tax&8gWrH!4e^2gj(^m?an|L^{~Ha~eH z;u*CzG1=en!?mf&=S7o}$Nv1WwP|lTA-&!){pWpa^T$Suz47MZ)2+%~W4<*tP{ zy?#?xx8!AGXNKzbkAYRBC$RRjKlL*$Wm{CrV@Z6rk%X1kzN465kIoo@xp2e?wQ)q} z(X^A2j*5lVJCd+6Px@JdNir8b4*S0n6%r*tDkk; zyC?eQsk?9|l#q69@?X6&%iMmi+89Y!nZ4grncKFgzMgro?cFu!N4KcNalKo;we$zg z^Hp}a$@(AnG!OLjMKk^TaNptGvAMmehj(~MM=IRW*sSE8J3MU|+^75LNT#j{SlDlflvg#b`N?7YYJGp1v zFM2n32ji^nAKYr36{ca>+PrUjj88=F8Lf8rs5nW)-kI^9RVA!{ghR5$mX?Z2g{PlHR`uU(b`9~=wY0)`q z{Dt9_FRJmS=S6RL=L@^Se|l1#7yVgQP;Ggl@TQ+Wws|kg0mtUO=S6!r>-u>;^_|pp zPmX_LWbw%2)Ax4o8DDasXt&#zy33N2yZ8C^3cYLU&1ut5RR?y2JN73fmv;saOgi&d z-DTs8!#CZo?t1dlA3do~|IwMfHO1e1g81w=GP@=vJRIDwHa>c)s@##;k(JOFedE;q zhkLhdC<>px8+nlu=q&3lqjvf@ug^kf)cfh^r_~#ZtM-n2V&s!4!43OUg5yi>UH@?5 zA$87(7n8<5(Y<%cqWOWp#~v&Nms)PT?z0+c}EQJnpe2;qOiSfbQ-gQre6DE%vAG~EmXGzUu_LcBwru%&N z^r#8@SL1wV>BB#ok?`=0chxy3{V{3ezxeJMr6%kh`6J&w zm2ghOTmH1^r>i&bzWC;g-n#gSXnA*8O7Sz3*yqFQ_M|P(W_A^zUw4;D9=nSk4&JNI z`PC!-vf}Qd)Av?ReroSCMO*eBn*62by34kvghxz1sdDl+-ny%|f7kjTwW_$}+Pz9o`U3dG=6o)l(aaQ=a+8RtsFyN7b0RiFAO#_Z>#-ji3ZpR?CodQJs;LO5y6 z=&=*iM&sGbIdc@pjn!Z1!kBU2e`35yK26>Cs~!GD(M#tfCzKVN@uP0Hf9IO;8|?|N zt_gRJPV@!Pi_vb9lh0{MYhW>T^`eOLIcJJgxI;XmG?n5sol@6Z!|37E;jDez z6C2PbHdlnhKT^A+`7?f`?(2FxX;aCOKZK(@)TZ)q+l#6%nuED~Ps|9P-Q%@jjBr~{ z=!i9R%mRV7~{*V=KR`gPTa>+Xrc1ACKU`G*IKK*d+OGb@Q-rXPcvXV<)KLdK(ca(@; zjDH}xi|O;ARx~#H@vEv8%kk2SzoE(BKbFx@Ul98~j!ER%{<-d_Df~#U zC-Geve?yyNezYp*YpYGQjs6IKa&3nyZElhr523~KHBkEpAkx-?7my;N-Kt-p zs&2S8qT2E1eWQbd{^gP7;g)McZIY4xX|(F!uS*Wa)LMJZk`+srMq0&wFvhRM_B(sD zYG}Ktxix|pCg8%(2RusgLj{GmYFlerLTY)Wy}r3l)jJ;t(0bQR$W#}ck*Qj64dd8s zj4C7#g*^p#JDhixNwDkWu&!@ttvM!XIf6Ke@bOT(<*-n ze(vF~ZeH4cH9luD^`g>?{kb{$@GqG*ZN?W=F<;+lZD-^a zmh-ffr!Y^e8ewjEZLSNKcrXkYlOQep%HopLfB)4I@dnBlY!PyHoP184%(s&~=X2gr zvgOzm_*9=TN%-N@A z#>wZ!$+P3+^W)?q#rKQo@GoSf=N}y`C!Z=&TaAF*PWbnVmvi;?OV6A*|GDaWhG97* zs2y?s6>)N9oIEd1u8NcSrkCe@s>Tz5d}?8wd`XpcO;r#j+fzHR0?pX&4kAfM`rllkVE=X`37Cjj}>x;S}#oV+1U=G$nV z^C`ZO<~g6b-4lR(if^WQ&WG0hvJqKQiID$n$n-<^b^J#`9uLfe z`l*no0FN^=F0S*byHp1JXMst#tAQNjbd&eyL$_o`~>bIQ=~T*l|`8|v@jPp8MLZCWsApW3FbfImw;4F}VI6=e46 zlZ}jv>wFmBZ0A$k)mNbZ5J*XX6!LCM{u<=RA?x_>R9hhLg)I61CgdkA`CE{mw)7u^ z{5)hmp53YTLjE~q{a)#v>S@ShaTI}L`hN;si6hI%{|?-0$-e^Lj3dYR{}1q!IHY|X z0e&8b9v|;iCnYNN3S?;y;~>8axzL2qfSiTnEF(__F2f=D1?@UtzwvUXIv2Wh9QhN} zE(goW2l-0luiMwX;^ka@>Rxr7@h<|Cpze$FkC(rtHbB1{>DR76ZHBzll6xV)V9C26 z|JITpgzU#5;lBrbmL)#{Tw=*j1OLI2UjY7-1V<^p0{JZ0exZ63a<=O~Q~et9C9eNW z^?S&5mj4mR+blU59qlDcJ{dCmoOUzSX^=hp=c%(GKO^4iJe39ceoM}Q{A*X9t!6-; zYsr5H*&7vSs|z6i!1A9Dnf*h%+3J5mPIS{VTP=pn_OIRfssXY$DxR;dg4`(H>U?z# z0w%*3iheG77z<-Z#;$5QRe)DIzV z5)tc#1CS4(4#fX?$b}<3`4z}juDvq#Hsl&heiyP=zh&w@$d_6ENf=lzx8zeGv%gAw z6Cj^r#Xk}9i?$=BOXQze7aWKLGg& zOMV`**WTu+S0F!Q`M(YMK}&uYa=KgIbJTl~+bw?|^2YI3yE*D)$g@R6PdP0{u27$Y zobLKpswt4`T)9f+LiYM+l{ycyw`#0XrI0VP^eZ8I@hwmnL#}fDYt-eC@3-VDAop5w z3*^Tw`5MTcy+!Iq$YWjq%hX!P0aw0UZHkc>tGgiAxc*DjPRL&VmZ)z-_WEO;`YvR@ zt6!(~LiX&}se_O?H)vO<{uS~x5n=fi$f=h67UT)8yj1-LvR8if>W`2;`}InpuX^QG zuSP@W+@@VU{(o!NcfC3j@_6x9^(qUpm%n;74RW{Te;(vhTzQ!)jgcEwC1kI>n$*RR zJ$p^+a>!nJwWuo~`(1l2ss*x_pB8luWUsth)Qyn6@@i3QA$#T3qBcSH%Bxk~1^If{ z{z|nIa)l*-8}hZ5{9VW$mb@48b*{WhJq@|Ul3#%A_4ifk=a5kg#;sCsLv9ig>-%>h zPqE}bL-z7>ol3+)!z;h*)ELNK{amlcLmushzh0dQ*>A~NkiGJ_UY!ehqU+zGW}&awO}AWyR7YRF!Fb*RfAd-?BBOCeWU`Yn*>xZ_8Mx)!oGo^_~B$eot{ddOv# z{$|KUmb?w}JC^?ake{*S-H>0f>mONr4?iDOK1#+Jyr$e4#$&(pxwp z7jmoRe=p=!mi!Q8um5zZe}dd)`R|8(rzQUwa-Svt8)R=h?^16--e&p#7vu*l`Hzsj z{)CuDDYeJ)9}U?XAG%dqjJ!sj5hJftlOboh;n%4g$XyPVI5&ZqG{(4mo z*{hHBY5`=g|7}p0LO#va-=OLspJK_&A$$FEgIWpM%ikvTRme52{wCE8*{k2p>K4c- z65}?jt&p=t#QpX+A)jH%_e0LJWETSXteKa*&nkH>yA6>d{1ct4oP1zx=Tk|x2wzNQ zmh*8kvz*Vl3-bt{l{2zFR<`AQ)<{X(=iGIA3O;Kkp#6E5>^YxR6J&krGoGg-dnK*? z`BcGkKC9-*`kcFR+uv(R+W%C~)6w@@hW7t#oWIwSwg2gH{^@bD`*hRceOAru@Mp&9 zpA{#6E>8Bx$!EvO-poS}pYzRiPsL}=G}?c%=jrHsJx}|8KF)uNdel@oYhq$zK$V-$ zcs^yUw5RYv1Dy8HQ5%fRJ~a_Dcj;Ki+xSmY-!`)LU#ymzCc!a26+PpdRuiGk14cfI zrk;wKGQsP-j?E$?XF1^u)s048?8r0KZX>?{TdBBT{k4%tJN~oP*`~>@cjWWcBC829 z{@dc@d*bBR;^c7*WE^2>ocxtI`CCTjJ$)+fKYn3kjyb8SNcl~ZpY6ycDs1F3$P;nD z@LY^sp}yn|hEDmE#mN`O$&onuD{=CMIQi>w^8Io0KgY@c8YiD`hO9|Wek#>x_#n+V zW<4WLE{c<{jgz;<$@dtUJ!>Ln`rpL)|20k?YYh>M-ybIj;^bd=gSk__HO9ZmiLXlC zZRAczUa9W3h8)`85huTBmGh zLl(pTn~`;S+^X&~LztFtS2vg;OxwF&eZd;S7=C7)d_kOid7Ql2$WI__DrU}?;{222 z%I}moc~P8vTb#T-PJSp({--#3U!44tIQgYG`QPK@UmCg5Dc>dPb1XPGEjOt}X2@nS zPQ;!5-PRD!^4k$7zh&fYj((@Q;A{Z60vxIMf6aA9CdcqUG%|52o`n2ooPXv-YU(xD zMBM5Bw~@~WHxYM+&u2Q`&YEZ<{vY!oD;jPyj)}OF`iqgLIC7)(td>(4Gep7=MR)#K=tcM68#8W8{5~ z+@=0v7E?ODZk0>`=ahHi8uh%9o%ANIQ(aTFzm9K{nwz8LxwuSB+^kMHSIa!7Bx1a= zWpGoBoCG`$|F4*5WF!~zy=oa``f2}r)f&hnEqMpzv6lRt39t3DQE4?||zi2OEWwl$IaefguZ@SeI6~|kD!M!qf)&QTWg~A1u^Gk{=L!q`6OG4$LxKDnloXQ+*AYv{#xdQS8 zCN8fO&8L6JAm> zJ*0{0AuSggxez<>I0}WXhmNGs7>5FjsH9|u2{FT@VulGYQxs+zg_*90PTowDTqx?O zW`&%#P*O6>_{=gPW*O5^a5Y&g)Re2!P)OwJLIKdx;LB<{5P;4jfaRyv$+7ZFN{DpM zh_rbk*N90ZIWMd(d2mjXbgVcH$3af>)0}I?X^7g_OQ##J)0}k(H_c9?1D9{A9l*qz zFFDLN1qCljC6KWIWO9@5rV_~GOxmF5+I6~y6Q@Ze0+>t}n4-t0tBr|50W&3qQuVnr zL+mjyB#i){Bh{hurg=cOFfcj_03B-{Vs(P&Nu>B{v0)@qd@9v2GfZ50(!c<8>;T5{ zOtC!Elo-5Ba7kFc#15cC0hl%dq>G4@E;b--fRu-H+2`kqCmM*8lYGe%fKFV#bYB3M zF%e6ThLfZTvmyx>fXKqi6G#2BS1 zap`ph((4M`wjwR7V3wpEL$S`yEJ>*JvFX!HiUD*|0CegAbX?P=%K#W1DU9iu*c{6M zu9r?em_ja%tX+jp*yk=`_|whg;y?ZR>1J~H*0%m?dHhEthc249??rlz>!aFhFD?N? zeSi4`?6(*56~~x$vbB>~?1%oV2Hs50*~uYK?_P#C*CXL}{hj|oV>qTA=N#(=+B#o? z*V~!Q!FQm&?M$%8olaZ-yR?{`O^ zrB|@nnha&DaL?L~-8@6#`YS_Mtf+0R>vuEk7@L7z*7Rm~gIXInU|wGTU>H8u)?bq5IJ7(OSw_^Dcd@6pBj+s}A9~^mur`=oJ zp>tsK`DRZ@rT?9L!MCxMpocTc8>V3LRW6;~Cv957|N2R(Y+S_OLAH+Yg z+glD}Q@NpcSkmp7t@Yz{ll18(k7gTlY~P5TLyprXk1=cBncU5e!=?H6!uxfBkM!gG z!)Vr@?f~iR8R2f@>O9!^$abz^Y%x1Zn0@5U4v^mBgFmXZmLB}|tR>n%lO1@*oWXkl zXZAAX?KeW|9rVTDzP*soL$?Bi$4xC=IQFhHWEs;7W zD0cY3v)}@cAPO#vxkX$yu&tTMdr5OM_I+*|H1kWW(kyLk!{SFT%2qV#Wm#zXipIL7 z`Jij->NHr|unN9)OWPXMa_6_+&YHBoRkby>U^DP`XEFD&8V-isp77HRID^5;CApX; z&?&7g3iZ_S$tk-2J#ZLHcI4XKfKzu&b|tLJvFB7SH%GBIV8p(x%a=Ddl{=+{|0{)@ zm3#=dP*=3qhn(*L*bDN(w|Q~KTHA7Y*clMR^|h_CUnF)li>;53Vw!FHS)1jcvWo(yUDL=Xz%wl zEBDhqMoWX0cvSm0y~n8jZAL0T`UJ<{dE`6D@C}3TSN7-m`;64(nkN=J{2fMmn>I=; zddfby+!L23(ud? zWEh@Uc>eB8>=O$=8#tXG$ATjkz6dzO@WjHG0gD}C;pYLT^Mh1y#KJEC&M-W&@C$*( z4zciyfz#Wx9b)0@fHMqFEPOq%*dZ3a6*#?J+aVTyC2)q}iG{xwSnLoBe6K*l@BD?|2|2^?#KQLh zi+y6@AEJI6PH@D+e-}9YBC<*m3;%uK48s!(zXw?C6AOO;SnLxE{~T~S8v-1$@XrHh z7@k=87lFk-vGA`_zYQliV&UHePM=R!DPrM&37lbgV&Q)cEcS_o{~h()aDpQi{ypII zDzZuu3x5 z@e&Jvko-+J!4V7p5_zLfEc`FYcjE*{Ec_qHn|O(ZACc(UAr}5L@;%xPvGDw6qO6yQ zg`WnTzSxOY5er`coMCuk;m-q3U8C(23tvfot>%e^uK`YD0mBgse;M^});zKBjpWU^ zM=X3d`Sn_#Solrk`H@dJV&Qu&o>=(%EuL8T-Q+iDJH*28BhQal!x0Pr9C@=oAr}56 zV977B@UKzdE!-61t2LfYyh`IL;%hXnC%#r= zHlwLu(RjOspSSS47S2Juf$OyXyTGOYpz*QJiQ^G0eIpFR5ldb;KV}%-o-5A+pSnrw z6N`R;yqRl=g`Y{Dog0o=_%dK=OT@x20G2tLSonp&GDi~&&*4?(Xky`=InlILdroYn zzL}$mMZbf*(I*yuJ+RE(#KPYSEOR%p@SA~U?j{y~8*uvn!U>L8cxNqYczZ4S40O^@ zp|<`;ndoyK%rLw?C%z0m^)_A3#G?N?`P(&5Ec`pb(zc0({}XU}HBNBE!XF0CFg&sF z3Z_%PuI&>GKN48%6AOPDu%w4r__KhePZ0~Bg}4IO;{^9x9Hn1%p!1zH!5^f}OWN!< zKM|%SZN!p>Y2;1YAQpZmdDE7Ng`WeQ9>fWbSojLy48s!(Uj;1lCb95~fWLSZPH@D+ zF9!aS;faM`2AsMXg$GA0Jlnaf>xhNtP$la+V&OZ1Q~5DwIAY($y-V}N!oNe_)C;ljf3SFB;YY)Sln=4+6Ug7K z?Gp>nwU(rlSorhEn|X~`c&@3W{n+cP3h>h2h(-SrU}^Kj!lxk3WgR%doq?nD1_wId zh7H`P@g`gXt2O4hQOb&fbLO3>#$2;W*d$QLa<9aGA!$BQeMIWc?ju!*S9oG66E0hY zCl;RVR_fGl!yGc$=2?Ek)F)=~vCRt>ehqkO1H|O%w&RdCKrH+N1cjFT1*7!+WN)3Ok^?Mq^N_i4Xyl0U&V;ZsW zoYQ4YBNl!du#9QM!WRO|m_{so5wMJD#KM;W%a}$i{5)W(Ut-}G0?U|2Ec_y18PkY` zuLqVfjac~W$(yl=Sa{CqQoqE)-)-^4!uOFkc8G=FP2P-Y#KJ#8-i#r{!aqmev@2ra zUnFnZ6|wNI0!zCh7XH^3Pb~a>O~ba0J#m(D~+c z={k*fk-u5vw{a<5ukr6Je5`GiX^^@mmb7tPlDf9XC}&>&M`Qxdo|hLuPVLn^vDjHc z{u`Pn7QV&eiG{z8ys2wq;n^)yw`n`X!n2)-ePZEa0M2eRtlw1L9KaEa9oDb3 z8N06kVDZGF@2uHO`t3CvpJ_;2B^LcG^5*{n#KLoqOEv!&AQpZxdGmh(V&VBnUD_V8 z@T-8O4HFB`dm1`T6Pkg(^6A*9d*EQ}S-mLLxTx3l`ENM#zmS;`G!e;@?eFU-a*}!riK`eX@ zu-w-W3qKn;osAuiSok8~48s!(KL=Rs5DWi-(tjEZ!1YVN;fIs{W9|D+Ij~W{+2wFP zWSPH+C0|t*Pb_>LaC#UgIAY=JfinzGEPNxd+}98bzY4)-wrI#NQs5t3M|h^iG}Y2mi9(0{Nup#jFedT9{|fUQexo`0E-=B;a>rk zXI#X>{}Nc9oe~TGYhZbHN-X?ufn_~FEc{_$d3H)HJjW$@c1kS#2w<^8EPM*EJo6+L zp3h|DnJ2OE>A+%#Solf6^30Q1c&@AEnJ2OE&OO47AmHqKgqfh^SuU~Y^I4EQ%Ow`x z8B2|weq*V5=5LRsjR-5x{E5ZRwdBn+Ok&|Vex~lg3CBNo1w z`sP^~vG9H5&HsFfg?|KCo?#LT|6SmW#ZGb*vGCugK07EJvG9ASZ+K$ip94L z@Gp}$`63qnbzsRCvGDIu-{gx}_}`H?`63qnD6r&Op8R{+bJidguC!1BKy zV&RvO@6hQX7Je0ZHYhk^;XBEjbuY2-8!Vn!_&Y70Sa|1Iv3d5}?^*Fy9q(>Se-G`n zYo1u_8~~Q_oLKl*fzz*WlCOw`e;qi(@WjHuP5pYUPb~a9)Hgh_@V}wHd4@wQ{BNmm zcw*uCoH_kUZJ${9_o#1pV&M~g&|j?eiG?2lEd7pH_*1CgsP&13Po=)$iG}ChNU8Ve z@+1~MK;HBhV&O}GrQZjsMFSqoGg>SO-iG{z8{Jq)^vG85wO}`)(o_iam za-f1E7XESa_i3J3_(SCH*F3TCuah_N5)1!p@+Mwl;s0Rq#KLngBUuj+3(q}_#6Gd` z+{;MDH)7$lfu)>@h0mkD8Q+M7pH1G>7qRdQ$gk1)B^JJp{I@huEPMxfGcFMezlOXi z2V&tjSv;}uy};5hh=tz{Ed7F5_}#!#4#dK9uOlf3V&R{pz9|P{;SZ5Fn)yG_{|niEc`a|59oGFEPNlZ%!9bpMq)#+^z9M z;(ye*khoXldB9V@p)sFh3tnj9MHXh$32f8)`^bM&;}?NbwrhL{^P{9^3dY{D9h$!t zIAx~^OMH*UM}epA(l`ZuIdHGW6~w&Rf_nfs_&nJhAZS1E)T$d1B!?wWnW#6CAPd zEx;LuCl;R7nfi#fLoED@7EdhvFUj+U1CCgD1uFGX%@YfcB2<9~sIC8ZCU_p?z_%UR z*^{iy;Dw;3KB)PX)cKCat8ghZ_(tM~G~Y%1u*Ms3nfi#vw~{yd+kwRny~`feI^QMU zt?~CQya#xy3Ht>3$8dr>h+`@P!99aR?7s>u_SqN8zDEs|hlNig=8Zet8NgHjNn@6e z^iyIfH?}2N$J*^`Joxle*$oZ;faNx1f04X5yBA*&o(CZiG`mHEaL;Q@CCr7 zEF`#(B+c9m7Vbl*`JWv#&Tc>H%^sF~odPPu@WjHSi>tC9XnmHy%vp9_oJO8EyKux3 zb~Lc`5n|z4hVqP&Soj*?wC`y<#KJG7{^Ob_7JfW%=?`&&W0jZfA=1zB0(&){g3DAk zUbv5>zWzz4^F!CyzkIMXv(3x@mF)KK2QTXZVktwWQ`Q4^n)ATR|CNYEe=d15{}Kzo zj65eRIAY}JPggQUcn0+C=*27|RG^h;26ARCNl+K4(aCVnp?X#A1izSn3b8zCEU~&&nE!SoFt|H~$AA7T!sZ;qCNHq5d9i zpIGz@$eX$&7Cs3$Z~!N`6da;MEILe2;3=Hoob;Igzw}Fw;qCM=?_$#~2PfWxj!A9v zN}c9@HVr>)n@?+-w0|sf7RRVmZsrX~EO`$A%XmmEdxXizgPI>m0E|EIj*K=}&QjW1R*J zW?o8PB+Gqj!2cfyI(w@GUecKPnre9FEAVfcFR(D{qV#3WFChMz#w&?m(Reg2fuCEL zizB!X)MlR4WisqG^CPX#bV`}9og8zU`FEz+w3*i&sN2jhGl(AJ18->Tw3#+LU zTS|Y46I>aN(qB2y`CUWc9gSOY5!?=3X7pD9PyJ7=b1g2V2D8j1E@Fv`=@0xGC%D-- zO8?7&%9)#fqw!_91pYsb7voZDa6NF@yP9XbDgUi8$IsM*I$y*R7u$@C)pq-tMBa?m z#G;=Bd@N&{Q+L~Syu@PXJlcO+^Tfi>0hV@1EIi9c#xA?8vcQ-A7ALrQI79Ik^&9xT#woZ={e#9#Pw5{u9*;}vGdexQ67P4(n=yx2c$${6g;@AHm=K;=_)hZ1 z4zcjP7EdfZr%$m%Ec|H175EcQaLh~K&kj`VQ-Sw1_Tw`3FB-FagwG~_So1S+DLtZb z5iV1YYV5S_ziM2AOQ}NSa2+@T2^w!DPSp5LVxPu+z@8r(hATR+$LfZ*9gdg&uV@w@dS<2flE)<_*nZ6 z!=^s#*^xGoN8Y>_N-TU6`RBAgvG5(_f2?_8;k$vQuMrE+`jx&$EWFc}(zPAVr==Mh zF9DWuj9B#7Sv;}uET0tK+`~ET?M#g;$e*S0GT^}HG;XAxU*i_wsb_243S4S<&aG4V zPz`Psj#8s@BXA&7^PRv`CuzKiywSfMxNNfKnct~d8uwDi;9VBJpE{q{Iu8*~(U{|d zV2&+=&RJj3`s}}{hdeChGZK6t+v8+9j0fE6Xq;s4>ee;R21v63^9G<+NS192?`|+TN72u2*bnQ&1cZ$4f+v}Y2LT-yqJzGVZ$}$0OR9 z44ynFqb!0x)*QE0$g!m%*L>pGYr?^*3uE#W*Ix&%-aMxb>s1IIjQh2{3!r8H(>jtS>{pLG~t@U7;s z=Y7O?pfbq)usdT6Wc1@Pf5=7$u_=rx$e4k37#}kq!c^Y0@}`D%ujA@Z=f(~wajkIh zq{MwNH#S<`Wj=vlC!A5|jgSL>;y$i`{)WExdu&xWoT2czefW2%YB8T9J5H&O8&W@k zIj|O&$1U|kepvkD^9BCn)CNvO2_E;a1%I6LdR#vmJWxil(X;*%EcQmP#iBY?yR<#h z8ftL9@>xFQ$FZ?r05>li$SO9b)>a!MOWQ-O&F%P};rkjJ*wQTdQfpE3f|8?8r1wjeP2mDPbq1deQj$!Tf$#@j}v8k;S)!RN?ja^VVzofV_6lz?S zs*3;JtDL6h_DIeJ^Dds+)?ORF5-DnE3$M(nZEtUFShAu$0vlJfHm~4|hr@Kg%T#Kd zrCR{ZcZj}?gRfcfJtH3RdPU$wkFP}yrpI@pM31jM4W@UArT5h#^y)0Vjv@3|1QPEp zL+D*+>1`fDuiMhQdk8(gt10pF=SG9&x7X6!Glbs#mL7jDG?+cU&nfX*2vcwe#f`178@^nPjS@h3Hd>HW^q<16Tc=_&Y0e)kQb$5*FCk3T;h%pPBX z7QH8j(Bmt)qQ{@63}%n7ri$KohtQjC>1`Q8Z?2_xU94vi{Exm(7=rvk; z+lSCwW$E#?*1_WKwDg`CLXYpROZo9~7Co3A^C)_J4R|oUmn^;BA@ts~^tKJ5_pYVK*P926_pqh+%^~zgCVKhcYsF$O z1N{}E8i9juJoIcQ;@KdnhtD-QE?$p*bf3q;_gUXhFBdvaye0zL<2&c#B;EiBrnSfr zFSY64(Q$qgKh_V&JKNr*LG1D8lD55fEqgh}kM>Go%(lnxeGQa8{-(pWH?rMJ-!#kK z<6;jST^a2$0^>~f6hGJC*fYEz_Ub_}zj-+5$Mhv40E0`t)u6zSiV^zbpgR(0uX`2h z_#|zw0RCc+-zT%}Er8)H62^(WVgNgRcYYOX3vf(dAr7&(G0xs9#JP9?d+X!uZMYHN z7eHQUZ>DAM`8azop^?1+e{t}3+_Q1^9*JWA8pKO`d}m+Mmxeg({N6uGsnG+ZkKgIC z^SkLLrT8s0+T(lnVy`;R-tN&#tslVNyf}MBYxKSvw0FK`@9S~)%24Sw@E0ff<#$!= z^d;fDzvk>-7NNu-tc1KkPlBp>vk>odP{4ea3IoHl@}fAk$ZaL(+G7oV}*glqxV`coBR5 zJIxMnn1MTs5Hezof#!uT`;UM*mc0pMV(rzz9?M0XH!uYU@sebw!M1TdlP!Bk9x~qG|t}hus3A@dmVB1DtCG7&SjRpAII5y zZxDM2cE{+ZbPPCR|!`aKnTc7E$%Zx6yVzfCyA-ePoCyMEWh-az$x zDfDc6lkWBEx5ctog@-h@y=P!=p!&TKdbYh)us6x1uhp{mCHxT3w)ZF4e1dx9AfY5n7{4x-41&l@E0fc zZiODh$oNv#=Z#mZz>B>%#>d(_4L2^#hd8nKD)el7--o@qP-6P7#Ub{7jrqb(-yGQE zcqUHl{Ri}Hdr9{xg(l`8rGZ`s?7@x-?G zB<%6IfjF_Z5qh@0S7482$^3TUpdah^wK#k0&(z-?ftTaN-p}Ifo$-Lz{%(Y(*qe<0 zYNzi(*xP1o@gny8(6iH51bZ*RpXuwwA@*)X`?c*YI1B4y_=^*JH$%_1HvxvmBOvW{ z;ShU$Xm7T?(>^zFf7<~)+g{*7FTdTEy&t0dZF?oKhoG*L^gRwe+g_DrZ;fT|>u1E; zyA1ZGxYoS#yA^u2y>{4>_Poxrw-DuTr>_(CCJkWk%h0p!eINFwL67CP-m>>XoV{JJ zmp6dDAII7IHSEnc_BL4d9z%WF>3bRWK)FuJ?;((O`lfuxOW&=Qy-f&j+xrvb%Uo+- z`F#z%ZSNA;lm5HOvRCVmwO0dqp!8h^-nPfhilzK+SK5#Lt>o-jd#wn^dJ`x4{Sx$S zd(&WVF_c&zn{m*O_R=OAd%$#$`}KJ12snwoQ=sSAGaegYZzc+g_O{{>dozu_Jfk-a z>9|mgfI|@Hs5E-GEp*&8*v{Xzk^kMQ>Z2-fhss64-U3w=Yib&O!8Egx*Mm_8AM`gq}kfS?v8`n0lunJi{bf z_QVD$!DY}p1+v7u9Wu*I95Ii-GklTpc)==XEG^w~u7aK&?=HwQO&DIp_7S3E#bTU(5n;ySJC5D>Vn>@pjU*B{vfdYzl`}Gg#-3n_uUeu&dha1 V*B+K@F?valDD@YlMV!R@e*yUtyfpv- diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/brandy-xts/libace_websocket.a b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/brandy-xts/libace_websocket.a new file mode 100644 index 0000000000000000000000000000000000000000..e2cf4b2e90051ba1a4bc06714f8f3c952c071cfb GIT binary patch literal 59366 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 Hw7~xd!f|ev literal 0 HcmV?d00001 diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/brandy-xts/libnetstack_http.a b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/brandy-xts/libnetstack_http.a index c44ffefb40814f2c943c95c93463ae4ceb42d745..efc192d3744bc490ed5fe70e8c132ea72c5701b9 100644 GIT binary patch literal 64222 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 J>xAq0Hqvhgj^nFT@YA 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 literal 417200 zcmdqK2Y6i7_3ph#qbV9oLbl{?gp6FlMN=fp#DHx{F5rd>rjKQ5WC^RGkz5EN5NyD- z0Hz0mLvJAom>Njv2?PiUB#;mi2!s|w2qctX;Ct8Jd!4gpOZZQ6?|r`Se&=~KvwrVh zyO*=ik#x@3S&cnStp~)WSL7b?88z{E?To5qO+`hO4w9c074dkL5h~Wilu}hnh1&ne zpTJ>fshpp0%~FBg{N$f-iTbKPq1zUzoS$c_ROqY!tj^BsY3#_<^<)}*GppNrTbE~= zHqbQ-+^&mFl_gQP*oxl9 zp5E16J?mGtf=OS|)wDj-OHL~@n|hb^v~BQGAQ8=Bw9H!LX%eq%@5*Kd4Cw02_V)BO z^>+2B)lQtQ&dy9zuPZOi)|r3|ijy0IOEr*=g6Yb9Nf^@XZR_kqbM#LVQ5&dDazk{L zNX(iR>C2jKU}1SC+t)EbdT6_z4Vj+0Ob@D-UD4aq*14{(t9x?}EXq*tnn17nCGr3; z{o)N5gNw86nM^klFt~z?W|>QtUEJ53*<|8kVD$B5+cwa6(DEYGitSaMlKk>yI=qZm zWICk2qHSGgV>?wL)3Lg-tyfKV7oyx{sUO8_>@tLPs58@>-pI|GZlU=+t!Y}<+GD3X zLG7411BY~DoDLk)*xfd80EQ)cX5g@1JsUV|Iv3T}!dqjjD=HFIw4RzzEUh&)sfvo) zni`PRSGjR!ZKFfZ`C z9owtlikvy8;Kabf?cW)yn%2)76nrvYU5v84agtI;KX}u&(!O2l_VGssD!1IIN)J6j zRi5^^y85(*fge3yni;Ro42+L81qz}EZRI$XJ8o3f51#VqC+d{Pey1w0njA=;x>H^I z*vSpIhwoIUoElc8A62U*7Y8F3tJ@=YsC&-Y8oJ=>SBKp5`P3Ui4OgFvT((}SlBf0t z&TBYt9;aIL;Ea$`rJ;~lwk2MUCof#Gb;sqwN4Kf_?|NeE6Q^>V&7b|{uGyEVlDi6& zI_25|RXJ|w=QE$WX-lZ#!3Or3`RG2|O1C~zu{~7(`Cu=%!H>UrwwqsYeEsK@71w-T z8oE@S*H9YH|J*O#Ond{0BcysbO5vZ^3ZS~FCg{mS;x%aKnGz4`S=_r5y+xn0{=ZG-pD zU6rAoyMEL#cwXp+?cw(#-&nox8;>FUwOy6t^LLdVx-C!{d1Tksk)77R?6b<~&Rv%_ zOrCepX_s7e^=VJ2p^uk_w(Lq=SbFMZ%CB|7%UcLxB=ti2~~RhhkM+fzfYj@ zs>{>_udgb1+@wMe?sH~oc+0Nqw*K1dtD;9at;svs;V~!|n)=yZqH{ z1)m2W{Wp5_AeD^WthSxKeCv`^{a$bQj9TQl-%wdgL-o686m8G1-^HoT`Rvtb!M_6y zw})<0!BazO`-WfLNC>$mwx}%dTD$ida3@irZIPfuerQ5^!68})kCpb z+@xMTMfBJi{d;WHzo^F=e`R_s-}YF(*JFqL>(#vfsmB(2JvRG0s$|->o3_=@`T3mN zV;8DJy|IV6en#-R0##Z)Ol`lTOf5cp$f0U~4@H`G;_WLuua>u1Ah!jq_cA=VfVdYgfs*3N_U#3RL)oA?V zH*F~`*c$d%&+S_tsqkkD<+dGbUTLWLvxW0`OcJrZ&uQ$lJ>2}+gslg8WgT!0LkTgH zK5r_$LygN>pGIPRDh)ka!ReN6-4d27)B~5OD6KHt?;NlC&MEqHNqqZ;4#^*1Wc+!FrgndgO1EC@G!{HO{v?6{<~Z2;Lb;l(gnU1FJ%@r+;ZS67D z(MbDU1|5>lTI|sq?{r%;_Qh>2ZJ8d`u{P7(+n!A~_4cHjd)BT?XET}RNt3mIrg=)m zhQ{{3%zjg=HjUpjt-rHL@5|i3z@g97_9LKpVn6y&$9Rd^ip{t>vU=pJfesZs?K^jB;czJkRjy+Ne` z-?^{|X)Y|KkXoc$6hKl+6_17g4DcS5<)A?az$}@DXyi9>WCd_=2qA>zKO`lf)OTE1 zO0H$Nc(r*Cofa4z7!sa6;^Mg@IkknQ2aZ%~SV-j!_fs66%E1ww#9-Xe8o6g6Ub<@d zVS^4Iv>M5eLd+3ylwx#9(bpJ6)x0OAK}tELO~zg^cu*1*+rAaB=2*8#p@}0+k@ohA z6rxI2Qo6c?8pnAh)Ht3BMRh~5LR72?!vnfU&_NTuMh;OUPm&EZYb4cva!B{nJ`>P& z`;NfJlmSXbj#F)1T}W!&X|^A9A*S1Y&`_oOIb=FL?iFEBElQLaihiDm^pY|?Qo7tu;-0;oOnbz%%_inpF2I#UPl4WWMI-XhLRD|M~5@ z|Ih#x?1157lpg4fUzB~eS1-UEuU;Xl*IaLG1L{fxgQ)s2)th@`{@@#*`j#kevXfhsT-fS7BY7s_;B?^= z)V7Hg(soYrS{bB2O>s)JJy?GZ(VwNtB%8lbqsdy9w|^FlM@6-LG1;RFw0#rVV~Tux&th#; zZh`VWRP0?K_mB8?)3m%Y1VfnW|Jf&lv&RW}RU>>4-E}7Udu%C_=v*Q3|I+b41!G)W>6=-dp1Ot8<*&bFqUe;K%LE z#jafJrb5yxtRkn<=g0@abVPbWqXLIN4jTO&ef)_&-p0q6K=Z%wwWs#Nh|~tnUTqAc zF*wQSkyBpR&P0 zYOHbb`e1W_>bEzmk<9_>h0471){qq08aM+mxV1jj{GWSpfl+3%f-c+kRSP0U?PQ4qeo5&C=E1^B3sbG_@xw%=y!jCLQMV}gvm5( zCjXjH&mUd&P=54zDEnyVg00&5Z3z3S=-=^G@K1bb$8cZ@rALPyf@cT(s-LavrlwMG zq$@xr3QV)G3>BHK?c;QSv3mlPmx``JXlxDD6-VrM_~QngnF6t!^n`zs0&g}82f4>? zDbc#N?<~_c&63!?BYge7G1`8C;yzdrrv&#zE5;tL4QQaYh&?$gpo(bW(u+okioI%! zFz66ngb{&32YN{kn(eP$gXWmEYcP@=G(W0}sIEGZdKKLpVnVl}ZtzkBO{VgxB$Xmo zmgj`&elRQ2nRc-_lg5-;AjyA#HYlAq#p^b`0P6=?nq zzG_~^$A828(uCm$)WJn$&Zn5^cVQl^Zc4XVVj=kA;c&=)?aE0*B5I2 z7Z`Jeoo3mg%aOvaG8HSa$p_EVMq%(|?YloHc#27b7J%THX06cnx1%aL7Y+sU@ey0D zBf_O;KPp&J6IibzNWIgB6*g<5tng@^`t6{?WBk+$(tqU39_wEcwB zTOEBE=0FS7T>K5JA6Cm-K;M-E(M0q|&*eJQ=PLpAH8wt}$KrG1)WBc}&~26*?Vl&m8C5Uz_CHv!-bKGm3jam9}-h zv#F1iqQ$&uZmqVD!XCM(VV1VDWY3?i?eCJkuwL6Ql6~+3ZPSudw0M!WX^a#tS?1eI zS8Drp@;~G--(G%{win?1RqW0Wo(MPrI+^JDi1QLEloeWOJ%^}H%9F4gtf4?=O7>ElDl9%}lSCV%m;sERdktM*;SkB4FPK!aC%d zF$kHmGO7*?4yOEZgJMf?Hhmu!$h#vvk*ueYW8R%%v-_rY&HHgUUx#S8KOFVpC*eX3 zV{uWG_iVUC1FeyHFNMoAEX6rI@0IWf4b*yhe-4k)uwg9VFX0LemlM1m9;e~^1aE{V z`ElM3PtkBT<@5J&l@ITQQ$GA7T$Qli_Q_dR|Y4%}sq}7M=NV^Xek!~LAab_`+S%tVj@+j~w@zc^0Uy>z z9`T_m@^c?Dktcm99K^Q9~=Kh3~?i zR(oo?J2Jx1KX5}c@1e*zL%NL~j?@c!B+_7L4W;sn$O1!p6h0YQWN0K+=K097fQmkg z$y-2c#(}TlgO0qd!MXJPhrH`Ux*B?}em|sqxHXigLFa#GDBp*>LMDz5xjSSQ2o3j! zBEH*wp{NfJgbI9kI27~YvCtqN9uF1z@KmTsgYJoEL&bi`^Pv(Seis_-!yiLKG}O}A zekW9>L3hM^p%EJ9Qpi6;V>IX{`&Xz!!=4d@d>k6*hkO#6q+u<^*%g|i;X_=#<$WHi z^4-1&r8MkI%UaMbH#+HjyWHpnufQ%hIwWS78y%;_E;l-4aCnhUt&>t49$u#5VuDfO zm42pU!iQ=2F@=l`AEn_ng7M)szT1Rwvj(#agj+QPabn1u8gAEc2*I>)w}t|oCGw_+ zdo`@1kgD(|4Z20^!zXCCtO6nP!Y66ChTx#^7C&Th_;d~TP{^|ISw0*RzCeSXHphf7 z*PzR`HoU_RX$@cFhjfH*&=92&{jKmV8tCFS@7(YYeZU`-`fy?RZVkHYFALwNLC^2+ zgdfnLPe@mWf9}Io;U_idnR8S484b%Q)9;6$)6h=vqwovrK>poi-s}0XO_)e@gs+V5 zkAYG^c}C~MGMk^t#AYMoSt_~?;Rj~%K}X)5L2*r?uQsSnCexWsMb9VK@3QMD!Pyk$ znLyqL`MOYgt^HTN^5L_5bIVN6$F(PEfmhRcnAv3mgYGXoXY-zVWLuPE9O0y^tGGj}J)P&4% z(xsjeGQ&wjZD^~moG!u4(5V{qk~}M9x>=_-FJyXF*Jo+S^z7A?&x+8KD)uLopN=7; zV{cnCd~7}`p?v=)S%tV^R;8k}Yl@A;2OXtH>HXOSfzru(e?}RV?ql|SKN<~tirEZn zd#ZmEuXMV($kBRLg^sK3xVf0ocG6t5Xgg&tPX0-0)|iVBZO`b|aTj32Ryy-s-`?*A zKh0SWXqz^5rTahW>jysP+p}Nx?K$sg`>*6b_hY>w)McoPn(gI8G+=3cnE~xJZ-D__ z{RMVQs$rqsl4>|;jd7!iR=TKJB(S8_0FB(zWt$A>OqZWvU_E8J;&cNW2v%-0Kucul zsH~C z|A3h6vsLs{L_RQrQz#vIPY%2$kEQVF1bi0I!W^xFB^K|4fRnuyTt(>`F1j+;hZawB zR-oU;sc1Gg_Z)nP~LA1954qHggqZBQc z!wz2Q+l$(@J-Y(>k}cZS=`4H1x0gTT+bhhpq9tkA$~U!6E7Gu4Z)uyR*sw$2(e{Ou z=8^BI*ugO97`C6T)9hjRHw_#*pUI+5`*wAb1RTU?JO0g^rF;I(JNsU z(2h8IBU!iNBen;MKu2g}?2!s>sp0y@riu>#rB3J{kcU5KG7gM|{fgfv!(Kd4d*po&i<-QK#nCPbMH^w82}5&5MUMj)(0Mlcbyx?U#;)TBoPR3%J@TU8LD7-7e=vF*2|wXz zt7SAji)cJg)^&@%M6PeK>oz+KKOprBR!_HT!QN1Z;zQ?iT+r_3C?T8LzT`23Jx&rC ztJq>IhfP~XqW*n0Oot4`JdR_Y7_w2%f@aReHd{sO`O+kq107e)VC%_RE&)z7B(#?EyW_`lU`TUTdAJTa|m zTD)S?qPEUW6>}T2nTi!%Exj8XdooiO*R86EPfH?vZdKKc$!dCQS4U?0=BldH%o*`S z4KO=>E&UV4=5%I5SGuYeS{MFvHl6M2>uJhpyS1^WqpNfC^p>u^&gRBmJPk>BN@@CB2}<_30%`mo!LT zTwg75`NCxli|g^vyi#1TU{2iOL?Y!X)isWitaW{=<9;zwmKBS0iiT{G>HY~r>z{PG zf8xosOn%wHxm5)(UopokA+VwD;D*Ed3F-O;xmta0EF_YivuLICfwThZvK1?&x^&r` zLst1s-B7nIUB4{1OjcWg@A%Bba=(p50NUeA0;+2U4nWHc98jHz_Yau646QqmJYX_& zm!XaOd)KX6erQ9Yx;j47YXMOO)a~FetJ{|ZRM+$m(3zxCwf(YKoS-@!>SsX{2Ys7v zIBeO{FK_U>ZvfYH5|ege!;+QhhB?a@9sbo~7*~_wf0)aH zIZNs>^bc-GuUtN7-n@l%UoFQK4QTV_>Hjjet>K(y%N8xH(@WidmHStWPpjFo<@0h! zKQ%oE(9{>Jg%c#_KLsr~xPBgWE*dU9Kujl?VqYe=V6TXr#m@H~w4+^(*6;JmiZwrneeRy?#L(_6S^>3Sk~Bs2X!=VZtud=KKgXQGMl>b7>-OcrLwFS|38VmmUU&x^phu&j_jqn zZCdmw2=gcudNzvEPjOIsc>)mW0r-J|ItjE7|lHUeA>?PfV-9s<_-;=o~L;vX6Pwwu?G`BU; zCL;|GJVBzdvnk_6!henS;Ncu;^p2<5gisnh$pcTh;0ziw^iQRmJnj^EuTOWiv}7~7 z7P@q6`&ztzF4Yn701`Y<#f#j6t&YyxQ@TB+-+!<+*~sRfQpL-gL$+gUM`M$2SgsIa*cyvSBC9kyu?Hj8OVI2sP1if3hb?vo>XnNt z!~yAUjBzevH+!={Q`HNl=YwGL)h6vTovjDvfS0 z4bQiwC(}P=E#^D`>HmgDBQ@!V8_`N*tQIscZE(#4crYT(6Ngl`sWpQq@AUPwE9}vG zF&B>O%Vc|(cGDzR*$keHw5+GAx2p+jrKUMeO_}aqwb6ghk$J$&yuMDoFd%93Bpod% z6R5hZxUdz(eU@ z>{oSCcL+gs(gJ7%uleX{Sd^Q6Y*kkGl72!FJQtuv+i5K_0_ANiv(h!#71U6jJwIgq z=P#LYq#wm(2iJO3fFI99)$u)iTDD$SG>g%bZLbpxJ|=97w+3`HZc5W*2JAJnH!~3@ z-ED`T7s#tfM_Xr3B-T-}?k;;0)TfVL)G4b+Kf5&c^|s=Q*k6R`p$Hps;#$|(v>B(i z&dj>5-Zp(T?U%8o9gCuflj&^g+1%Zm?rp^tIhI||6Fq}6;Ply%^|VGjQ2_~ew>NI~ zwC1*K!gI5b`f=%|M%)F! z*x>qO#ie~p8a;;g&G;RGt8!exr~5Fv%tj{N)aEbDO>Nz+xU12J8w$DUq3`0!^!m)E zG_|T<)|Pa$*kp9)P)oW8i#(U8JBM1*>u^J&sS%5l=YbMo0TU-GIbb*$eKJ$+IDJ&m z2?ha**?8IXxqq& zJmj{DR)us&re~cvz3FT_@gT6~wB9^&Yv|lb=Y%OG)W4+%58vCI!HpT*SW?Xxu&ub= zq%hs+43JxRYEc`lw@Y=e*JbNo@3je(oc)VsF-D=#{)G!gXg6rK=BOc8oGP14)56C} zV|#C!s*qK(U3HDKbS9(iDJQM#>#3Z=`pjlL@I=vy&_x?$jAAX|YoY%f6fc<8zlFL> z{3xX1L3QXg>?YTWr>5u}y{L*t3m&V|L>unzuJ*R3HZfJG<9e}K^d}D{E#_0V* zds83Nza}N-en%E7sa_47M6hQ_H#Yl=oXxYPy>Xr27gX{Ny(iL5EIS}K$g2(Qru5`; zvZM3ANhqgAjosKKXHX$DqdAYJAz_Tz3idR%VB}br^b&jK-Mx=pF?(=wqNU45#s&oEEMnFqT{Kd$ligcf^R?ibyT zo^HA|;CXjjZ%@EUHD{db8H$ZgOB;4*dM`q|hvuwjcdz$tT*z<0GSQQ5Ow$%~SZuCL2CtEL`U;tJlL?Gj$$Y&HBF2ISG&h#NKjq$H`aUCdJ5GG=GO z`DU8B)9ZS=`nqY6=Q7>;t!Y#XuHfj(1~wcW3U_iyk$rSGKM`zmTnFv4ccI#4CrC8~uAPX1|M7 zViQ(q`~nB#j%#Owy0LzD`R%v1v6*f&w6}GL+ZR-2F&;UEKI~`AzN1s$K*Nmzu`1IT z^gP5OfO$wKt){i!fFMtlziF-TYVJ(8qHp{Yk6wRpVIfa%`gQ@A#@2`KA@udDrL8>H zD%!T$^Q*0Ejz-HFE>C%kQLZG2l3{a;%di{|68d>~JtxyLo;X=i|M{KTjj4`3mMs@w z0*LNqNsa_wq1|YFh2t+$t++nSwl=Q!H%z+8S;fYqr%_zc=!>eBuAUBT@N(+u1$agE zl(a0Frw-uPzjU6rJmq;YX@SMA*JE?OF`8^yeWoE#(X8fLqrWd*foN6u(sGOaJ2xf} z_l_jCHs_$cc!IOsHURNBXpvG!*58vM5Vt`6t_LHSwp~sPC&l(mZlp|iS5vDOMPD44 zLGIpRMFtyjFB#Xsy7@TV>_LsSkjccc{LK&y(}(I*pIKJ=?Z5Z1}cVY(|SCU*mIz{ zB>Rq7b{?_pJsmF28N{+;#G(TUWe-};=`yRispNDTnucacPSHAg`@CxC6F?I-m!gg7 zDqfV-U`}DNck9Dty;=R-8yj|WPA!)ciLPfwm{$aSYF-Layb4LyLIcURcK(r`ta>+f!q7q{3}WZS))ag=eMW=_8*O7vWPsa~prX6Zn7U4^*)1WP0ck>Hlf=wj-x=hi*tttC?0cy{)sU zy{{R66Js83`jwJhj}m0sr_j_J8D$e7;i7|4BV@Gqaa=0BDZ2SYf!D|J(DCts&d<|7b>ai&rdMG2MJF zU%7NeV){ZeY`#*ivdCorum6>n9kdEpU;Y17t5sokVu_m8s_=(%9nI#ud%gL_HIOlI zWvSOo5T3L$P(n@gP!V&sXo45kfNXDbTNh0HCoun>%qEt}8pAG$267XnvomxQE>}0d z6*3`B9r#6Zx+|Li;!h+UM=bBq@r;CAUBA6RC(MIT@73Un`tv2QA-Wmp>%N7%N4CAz z;;wgJhY6u<%q~MFc2E<Qy*KRfXT^C;l)58G%6On%ha?q_)9Yyh6aCR zlzs&dO}0g>U0M zpWybG#Jd%DYmu-$$twldWNL7bPPx!)7tssmv5oZX-=GSd5Gcwkrhhk`gdcg#JvnfC z-nQWR`P)MmgfEO-6ur3MlGxlrdhnHgESQX60nPq<9|h|}#MiO#|7l9bA;!NKxU`imxOvY zBol3k?y7VLeYDU=6MbxI$A6-9G{!x1t#3BLbZUXwCX{^jk1qt`IzoohjRU<`_FRH= zr6Gh@AsSWpW=k49IkP=)?xkMe_Au? z&33})Ied`AiyU6&@N$P&I;@|wrZtm4{z=LnhL2&i^>23gScf|u-sJE}4xjGu1rA^0 z@D7KsarioiZ*}-KhwpRv0f!%Q_%Vl{aQJD5f9){;V=s@tKRV%mcKA()-*Na|hu?Gf zeTV<;@aGQadDG7Hf7sz64wpGx<#5X3{T!a>@IivTqQMB_MnUfU9++v(HirrK=d$M5@=eJ>h{u=h@uVH^a8eZb0@6SII?$0;Ft&ack4sQ|cnJ|L5cahs319QF? z$%IE8jybIVT~cet-)}#|6^_5ZKKdz>3m&ZIly6`j;-zQ8M>$OY7i$g^?&oKC0tegt z_Hj7j@N9<{IP9;VCVhXsG<=xjf0V;(9PW0w*I|EsH0htsSJ zus>f-dM7#I{(Lpz{(Lp;&sW3#d^LQ5lino`U+%C!e@*2Ibi^Kl>HU9qmG<<>Me~H82b$ExvS2=u*!?y|cx)MfE z6+82PV2*l`Ot`=QFkI+_mpJV24~)ORKQQd?4-EV3iQ#EZdb1q%*AwGE*9o8J@B)Vq za@gMwn)H@A;r@DL!dsnie?Mr#Pjtdha`<$I{q@Df_tzK0mpT6adQ$9#kP*ZkmE84x zVD|gVgqL}#81~nH!+w7m_Rj}~tDN|L`fH!?52ThR2EYJyVyj%qic%?3d4k`{gn0_m^RRKW=!Km#JaD ze1`q`Wq69?@1MU-c*+T{b=aSe#=qVP_xs<3FLJ{D`DVhGJK_F#G2w?g;YT>!;;=tI zP5f>ryhrdDYvb|YxSQp-B*{T=CB7+)!>R3PeWS-PlYce7C*z0ugqX_uHT+DqoW?hm zXS!v4c}LJ09YJLu^k+SSIw#K^<>AsAEofdY;5h_Ug=doy#M@D5e#q-};w==Y4|9F% zj~8?ODEE)#FV82$a{VE`NT)>~X1>b#K;g2ziT$Hemv6Qw818lW8o|_-)4cOrzB&#( z$qUa{n_>IoFJGMuK30TpgMEVF^I`k>E>&|5)&Ig6Z1q=YkVpf4>(~Ujt9Uk2zwh9`-Q7i(#KH znD%1jg43|`1-HVM*GtEND>!*vzib9i5PULtn&55V1%l55`|Vw*Xl!o~;k1|X$5)}c z3H-7Mza8wiN1?h8EcdsMg5`epY4G0oF-M_#9yX=P{4#86Q|7l|mk53zw%jj%3Z^k{ zj$%a*$C}HC{oEk%F@ot4V#f;}1NPUyVl@tYx(J^NKFQ+}yjn)7a|G`X-rM6LssUW( zahX~SP6=KGmgkqF!TxwGQyH*4A9R9SMEs55HG)q9`{gfF+ra*jujs`retq)QmEf@F zkgu)-ALO-fzPb(U&zF344_K}z4}#@I5$n;Tyn52tE+iK-dH?$RVE+iKAA|kz5LOR^{q_v2Uw|vT2x0Xsc%0xD!IK2P z3SJ`kui!%ke*pITJFGqh`|T4}!F?YZ+C&^`SAhp=OX^&VE-sq&x8H>P^?}C_jnG)>Mii`g5L-GNv1p{~_vluwS1ccsr|{|3lPS;Bj68L)0Z;|0q+}f&KYWrhWiUc@Aaj zZm_=|m#GKAB_jL@aFyU^!9xW90qnPLnfeQOmPhfXf?ot@1-}hGNAM@$D+EU| zc>MLFTnz{RScFdm)1K8F9@M>^To*%vrOs}0~|Bc`&f=>g_5qvTD z5W&}jn*`ql?i2ho@M(gd2VW}q4e$+uKLYCqNb3TX<6VAu8G#5N4t`DWL@@2ixcu}N zrRJT$q?D`qVA^w;qg<^9PZGQiJWKFK@M6KIf!7GW7)*O0PVai~>4NV9UoQA(;5!6A z4}Mzk8{jtte+0&5rk8#shL=DJ9uBS&JP|x!@C@)Vg6D%b30@68Pw+bMO@cRq9~OKX z_(j1Nga0Y`dhlLYqs>vS?gAeo_-Ej)f}aOJEcgv@0BZ=x{|G!sa0JgBK3VW^@MVH0 zg6|MK1N@9&dQsrt1=H&XY0cpL)`5!!Zv>YMJ`Effd@*>D;OoJ(#&CLffu9llGw?%# zp9lMEP`P>oyjFyN1pbELNFnb32&R`oUm=*D{C$hy8Q{AF&j)W1yc*mlcpZ3~;Emwx z1fK?eLGZ=kR|H=V{+Hmpz@G~K8F&!pG`G+5V7$o9<2S(L1b+mM3y$DM-b}&6!E*%T zb@pnR;2GdU1X zcJLfV+%018=EgsX_=9lcmmii+{WS(0 z^4726Y9H{vf@{Ic1di~%Lf;WLTi1Bqg_?v<+0iPoH2Jjhz z?*@M=>i0OfLzM4%Fy4x4k8<@U_-etQfUl!-iayHm+Et}~D0npZY{65&H;efDgMTb| z3HaB7)8O|6cZ2EAqB*~l!Sw$b%;$sK1YZsQy5ODQRe~P{(?1V!{NI9S2z~>+Q1Hj# zoq`JnEA^z{QQ(&a?+gC3;920e1TO~vP4F?`0<2M7o-XirMSpw){D|N)!EXz`6nvBz zA2)$Zyz}93bvL+9@MGXw&JMp%_$_#pcRm}gUIYJ8_`eT+NHA^guNPblK1=Wz@Xx*U zV`@CuzdsaH)4+?o`4>|&!0m!(gWnhJa|pNq=WuhBtF_?4g0tYUqW!jjt3`dz2OlYT z2iQOVWBmYMFT(Ew@8z9uhN~yQ%LTsxewmAd`_Zp}UlsBH4t`FAe+>5TXB4VHDekX% z^(|B}@D{GcfeC|66tbd6w+;p%8`s|fD|e&{`PViaa zjNmK4y@GEAuMqrG@O-h}J_G)}2!90}72)rLM+y!O#r*=oW#C%DD7Qw5aIK| z=FL*3eGUV!75&u)-YWWIBN#=n#}IWA_y&>Qd0>8bHMQ4O;4YEg?ch5_dJlsCAo!PH z`tL$>3|B9K#|r){c)8$Dz;sQ-{t?_fcuMe4@YlTog#HKD3Z4NzN0e^?nD(6JC|8Gr zFBg0)_!hxm2j4FEEHLd!IsO&k`vl(#enRk1!7m7Y2K<`fSHN?yC*$RB#RWb;0w&5$s_&{lmZ|g4@7*3O*i8dp!0(6MUlJ%fV*|{yz9x!9M~2 zK=3cY_X~a*{0qVV0RL8S9&R?%8@M_DQt;b?$ARfxdK_L24r5QkJP$lX@M>Z)9$LYB z3f>H!BKQpO)uMmC1FjYAc?)>5;QPUU7yeI!3q|;!z!ieu1Ai|310(VJDG@#de3aly z@QH#`VA}I@eH*}c3qBP5J;Ce1Hw)ebepm1|@J7*|mw}HJd^0#D_&#t(@KfN!1^*Ge zK=9we{xt&b1mb4p91%Vke1+h>!50Wlf(u3e)PwyKM!8xA9wz#`1$^gNzkN1>pA&pK z_z!|F1-~ZvCh$9ge+>RW@RQ(A1-}HoO7OejJw(0(KgE zE_0NtI`E?+d?oC)m@^!n0UsxL1Ne8s|1{X23cdvPo@4y@l=o7>_kxcW{0nfm;6H%3 z2>u)R0>PhyZxy@;?3V;rz>ea5WL*9@xLojDaFt+sCE+5$&ER7N_koWWd@A@l!54#n zE%*lTD}wIvpsV zpM&r&!OOwl6x;+pS8y-*X2Dy*uL!;f{DI)>!TI);b#%VI8(b#%ad2Gl@4@wg{|a6$ zco&%7gU9tPLSAPJE(c#Bcsls|f@g#87kmi#DZy*OFA1iX4Zb6I3wW2{3&AB7etE6~ zR|>uhoD%$V@B+cV1Am4+hB?aB+u)TV{8MnN;6miRQShGNGXzfqUoZGT@J|IV13xdg z5&WLu9x(oF%O2(G6mXf~3&8sbz7~9z;5)$~%t3RMtDk{;1iwJ>#rpIXI4$_!;EjR@ zRp5TK;4$FK1WyIuEcgKM(}I_R|0H+~_+!DxfeUesZH{vFEpUb4?cf6hUjsf=@Eu^f zCt!|p^%(dv!PM5b3w{&)E5Vt1Rg3lTB+1{!6U)@3El_1Lh#qX8NrLd#|u6he4gM=@C|~$34U1c zx!~Uk{vMe23|!vZz+V&d^RAL-4`ioq~@7KPMO`GU^|A0qg>;G+cp0Nf<_0r0hge+Awt_|M=GqCGzVPZdn>O+HZY zQ1BswCxA18XMi^fUI5-I_;B!Lf{z7XC;02&p9ww-{HEY5z+**w-3l%d{8MmP@H60; z;8(zO50%^ZeejingOl+4Zoy^X^@7KPy9C#O>7FR3Hy`{*!H0n#5!?oTT=4PWrv#q~ z{*~a%!M_#!eemxE{{);8{rO99Q1Hv(@q+PAZAJGyxx9Ik@%snCrQpqi$AS9gE!LAifoBVT z58Ny`un+cEf`@>w6kG`|7w6{`xKEr<8^8w&J`{Yg;B{cS2g2ps1a1+$4Sc2G%fPe5 z`SfP+b0Yjc@XLaq0>2~pk6^lI!TJ3iysu!jFZO$a2ZP@i@%IMjiSQ(Ni{N@N-BaN7 zSAp*p+yefM;EmwF2tFPBh~P`Xe-eBXxKf;Ne+(Wj_(||c!7qUq3w{^;rrVychg{2>%86e!+hL%fF}Ql<7ODaPc6Hp#JX}UkIx4>NUitgVGp+KTP@D@)l@A z@cY-osXADH(6*-3;V}+ZTE;dH@uMp4gx5KIki%;oUNS8=|EvwCzmXk+zlS~3GX2fw z5d8kq{EOASmM_v=qMo!&sZxDjarh&LKX*9flxLK~RhF?0LV1R${hja?4!2tF z(f(NIa-XfKUpG0eNljZ+Re_Ibcn6LBnigjx0V7QhN6z+6Tb*5q*BI*em@UWC;=4Mg z=|>TpnA4IRB?V*d+^Tef5+Q>^=)1;#&#>R|Dr?MSq1GA+%2ubrE_fBPQQ{ms!O7x% z#}pJ#SKDvn8c!R~MA~q|mIJRk)_zG_o}>-OtBtL0%au%4e)PZ=J8AW#)l<|1&{I@xeCt}% zw?S$ikZwx)w%)oS$%|95Zk)H3b)m`4>eXB*&eSHKb8-4NHaN5`_2uI1R=q%&>pX4=$d zT8Ejo_VFstxQZKJ4@OEGPq(aa=XN9ZB^rVi?XRvEho%niSr|9 z7l(T{Eh+lTww}~n?xaH_A@4A=?o?8iSkwlfv zIpK|K?urDD@PzIYKOfte37&R|q%BY)X)Gse|TqybG%-X(nc(Y#Tx=fZDSEN8) zDbUG|iY-E^Sp-rc1ya=nIvMF@S_JDUBiZ$L>Y)de^mmG?XRi!*3aig>bSy9-bmx zk5b9hkdmG9>PaEPo$~3`N`^b-({o9NJLS_S01>XIi)5#KdKSrWr>B!n`I1gw>&YkM zJH4&vqzF$r{iV-1GTbR&%4t76nWeu|K0U`}xYK?qr+j)c3x7S8CDYuI?37PWVj1qV zU$s*{yr@1mJ*Rwn-I3`z{i|1T5w6d{lAZi&obuK*Pu{4<>P(Ypod@AQveFlD&YA2Xc#)jIL@*;d5YCtb--diq2u!`<|q z^6PDc^mp2CrZYeEnO*qn-G*eRKW94So9VP?Tu%VA(zkatIl0C4Da{L|w()>E&I8KT z1Ip3^%FhF83=gO!JfLCX0kwe#`f^0nu)2y0X@bqU$!F9+pD_H$Ii=LwEEzMWLi$wU z$IL0XK27*xIYrl}2tSMpkKKh{Ncg<$463*e^rE=ukm{1vmlX#U= ztGHXMcvZi0xC38rK4rFgTP}rudksB)ay;CQ)f-vqQROz5JDlVCQcOnax8=}#Vd>!x z7<0XnWiF20*oLNDj?3={kXdkF;{3gZQu@pggXTE_S`Q+PNV3JjUSdX$$Ui}*C!kb*Jm0s_<}L6ry?&I{mPoV#5(<3tuME{+}vGKwI1w#u+uWtd_|hj zqZ5Tn=t0P3ap$AH<>9C16t!AU0za5yQ<8jRB%y}|DemUaT${^2bSo0qcTuE=yJ3y% z)N?$X^2K#Qq=&nSj=Q^NGwgDrxbs@yM35ft&e+^<$nofxhI{&Tcf)aadu?tJ$VByR zCn@M1r{5bikagR;t>W&KVYM)#Cz(I zr4Um3{(}(W?glxoZ*WKtcZ(c%_rP&?6C8JU!Et>_o|C9MC)|y(xtk)RxLZxLLgaWj zo8`E>yN9(kwtCjf8uOPPpe=b9W~viqjr=LtSpqnR`4r zQJj*R#YcL$7yk+OjGS=K$mRx;NF(L$Z&L0CC*|&N;_fw6+`XL=*Ed~6E^+s=Ca&*w zN)PwKChlID#NEAH+`X1Erwo~>zPp(txU<^5UNJWdbD}tdF41qt)^E2E>W6IrqCf$=#vVRn35~kcamvX0As$ZM-tBbp( zO}Sgzl)I%(xm((lzVj~I!@X0Ma<_9S_g-1b-7KWs6MahWUu7=t{jrq0zeu_Ji#o9frM{qBvqdxMmF&QH0wzf$h~uarKS%cAS^ zd5++$4k`Dno^o%3rQEwU5{1_^iWn_uyW7Bj!<$q}5(orJ#ck>lZ9(j?r~A>pnL3AbO&@1=4Q zb!KJ4y)H16gciBq1%U06e!zA53Ov0UW<`>XfpyiCLW6;8svXim6iv4lIt z67CdBxKk|QPO*eLUlQ(oNxJhT>0VYR-3gR*&!$QDG9l?+CM4aQOY?+#HJ@~U zBaw9PvLxMWv84M~4oUa&E$Ln*CEcx4vj3^TU4q@cRMNd{O1h&k>8?^qcUUIfVVQJ? zWzt>PlI}Q7y6afdy>3Xl>sZnqr%89LC*7f)beF!Qd#RChM{?3#*plwRO}f(~=`M~* zcW5Ww^)%%Ux}-bClI|Ewxhq}D9ds#o(52i{Qpz24Dfeuea>rQ8z0;p^w+bouT$ys) zBjvVOs$YA!b3es@bcms~I;;OcxvnSE*qd41*4w%~)3l+!v9~cdM0GT_c1t0o(5ZKk=mJ)3Uo?MXNH ztkr+Cg+GYSiO|y6*3OyEYin<(!mPkwwaUUseQsN)465tuSc^XyBPokyoIkx*9kv9S z&fcCb)SwN2n(c{Rv5czgsPLC*?U_!`ha=MOoIKHsn9XFGb>TA^^S9ppU0QlF8Bg_6 zBXM=Mt~JxNo?2eF_+UjJpJ_h!XV@*0_vp#|J^+qR~^#e$^`I5~#{Y`&~{f7wpAB4Jt z5r~8St)bpN=&FkB#YUeEyKafG>tRo|ahrwSD)dg+^-GQaCi1cVr^B9N?Q6(hW_)fU z|3i#@E9??$KR`aqjs9!0R~Y+!*md@S(I3K|YW?XMc~e#yA9}v@RQnPwdX_q;L+|Bc ze`>L>wbQ40+$gtC6gE9EEbeeR?W_>@{qpD4L$Y%Wj*rTmZ zHtTa?bN`af`Z1*2ek7Z9YG*Dd*{q)cyR^%chiulV->0lL<*5*M4cUhoeFN;e!;M`C zdk8%&9S7N*j&295%XT2oDMy&NF|v;|HtGLKJKqX_t}oe~@7=I@zL3rOeXx1Hkj?r7 zu(>_SX8q5k+j&Yh>;ER*wlmqR)3e@3C2U>r#d;L>XseUWIz2mWR2&~T$Y!0!=V+^w z%{o0Rp36x#>-5Ze?q9N5uP1+7PO@2V7CPCipAVbI1KF(O-&9roQ4ny@_?&vQu@}Ie za*VNCNv9W{;MjqmDQk>EQCFk3W9^yrMir0d5n?G`p;qW7$ckY zCt-8nkpie}Jdn-$Nu=Agoov=e!Ja}d zGNNz#Io{Z_$o{&q7m!VZ0>=_zA0_M-*i*k@d`=|&L}UM_^Owpqq>o~u-uU5iPJ%sT zgVD)mo%S=Mk|r;*S*N}jZFSi%2S6{~Xwo5@{SSgY#6C=%Y}TpoM$wBzaL9f<3_RNE zWV3%W>>oAr}m^SmaT^>bkJJSCg;64+C| zY4W9U!uIK~>rOIyA?zV1m@<>iadlsO!|1XvNSSi7iCawew~W0v?D|uTtlg)a9^s|jW*{nCf=DZe?k4=Yc_E}82 zEhpKmuYt{Ro5|-KlRnw((@OfcjZQY}U8K{=69?I>XJK(z8LpJ-+vQ>G7(aC0gKhnQzbh24Lfb=VkPB!Zer0*~~*{m-l z-L^B?tS=+owlmqRuO!{JGuf=u_Kxd9r+lsp+3eFrx*b1cvreaE*2!j_PB}cT$Y!0E z4A#kJotBTv@8JUn*{svF;kuB`Iu)hzDtzD|n|10!*2!j_nw#rRHtRov&2_(nd~83G z%|7>#ZtG4q>kpD{=MLGdKT7)5_`pFn>rV-tY}S88x~)6etiM3I?MJd%{{!i^?qsw6 zci3E)56H*Xg>3fuh;+MNk^KwGlhd})?-2^oAqMS?U*E+^`WHOx{%HK zNYd??B%5`5zYEu;ihOKc$Y!4u=@*-_kDQTb z$Yy;7>DL>bY}QwkPMb{}WV3#Z(8*?fE$K8!agfb=o6yN-y@T`{jX&9}pA4JZYAgBB z0LMW#`)niK)}3tD&n4ZiEo8HP0qM4EWV8Mqp_9!zy(5v!MmFoW!{)NxMLsu~vXRX` zKPKJw7ul>oM7k|A*{nZCx@~8&S$~RjTV}FZr}ryz*~n&{-qFKldy{o}kZ$uLoAv3iIjj?6>)A*3hKJ-qj%DaqCHtWa14%}^Yx+Ja?_C#ybC1@pWE^v^|`bk13 zoAoWE-)sEIW}V)JS@~n5lg;|KNx#qNWV3!1?7;m-r}tu33VWip>D^nEKQTUJv;HHY zlg;`ar2o|Tlg;|iVRK$jl8;TFZ1#DE^ao5_vRQv#=w!1_@BQMu$Y%Xr*qj%=Uz779 zn|(ecoi=Vb$Y%XBp_9#eAmryoHtS`uIj<4qW7~>s_8CL^Lnbe>S*Le(Rz7TWvRR)* z`Xfdsn{|4ZC+lRho+6z#n>fg3eLie18@<<)%SJZ)EG7Lh6PIk(R|}nN){i9pXU3mw z*4L8$bEA{ZI=vsX@^Pb+&3Y&4w(exJ-b4Bm#-D7~Hw&F?*1tizZ7Z@_KNmLF{Q~m& zg-Mfa_PK=gCyh=v>o>#ZxIZ8t8<%YMxt(+ymu%J_gUxZDARil-Z1#DYbQ_m!*8dEf zCYLRY}U(Rb6xf(AKMOOv(E(5Z99<7`b^k?-|Aat@>r}wXNUSzX=Gi=U_-oeUwk=_jZQY}&yh|SwK<{SDY$m%ozFOU8$6_Mvwu zR{qiGWV8Mu>3=dh*{uJY^p}lJHtT^1^jC~dHtQkM|7>)!SuZ60Ril&5dI{;T8J%p_ zD`9h8CX$bBf3n$UU()|#;*!mJl62c{WV1el^w*6)*{suhBv~h$^*YkuF#cq-ekg1% z+Y#hr%SJZ)97Fn>CN9~mw+NkV){iCKjv2C9KaO-eX2@o}k90d`$Y!11ImvY=oAr}P zw_}EE)=w8Y*{q*Mx@{}6S-%o?;4M?HtI0>$6Rmwc>2Dh!vRS8h?6OWa>$j2qSL07M z>-UiUj?u|x{eIH_W^}Syr}uSo*`6aGTOP96hu(q7WgwgNKM9>|)?X#vmW^!I>3zRk zHnLfNmvmb;vRMz{CO(%f1iSKGQ+~49r+{?2L4|{C)=Pv=HtS`izi0f(W_`5K$!2{o z(*I%n$!2{5>F*nzY}WT7{R5+u%{sl;lj}}4>(!*&x|7ZN0@#6nnsgSCkFY0Ndl~8f zGCpLpzFO#HvwkG$9~ytMS?`3+dG(ObN5+S2_M!JUR(@=BvRU5-JMf9o&n6#XPqg-V zr2pIakj?rfLMNN`%Sr##_>;{#z1y*Jm(j^)o!-M-`I*tlX8m5+fzOTp6Y>%EL~B1p zI^CGWK{o4;ldf>11qa!zKSg@L=w!40^8Z8Kn}A1Aq<{R~Gt)E43<(KIxC9+Cq=5h- z;RZnyNPr-h914ntkPMe0iAg|kJ-{SL1iT_Dp1}nc@K_bRFHmqrLET+lbyr=_^;SIa zK$QRct+%SXGKt9U^Z!4;=U>m0&ZoZh)?3w8)z#;86RWa5fQ^T3z{=)h=(yNP0j%_| zpv$trO8*wREDNl3f4o~(kT~LFpI~K^2;E{Gtn>_GRnK0q@v{wB+4O}j>j_r+K-h*jOrf(5HI; z*bi9gRhkY~`cmj^*dDC(i=oSP0V{na^aQpCE4=|aE>u$hD}5dGwycAdejW5A*1<}@ z5qdJ~V5Q$ltlH|&u#s&ARyI4J%eDe5{ZZ($t-wlu5_&r>3#|0N605Ra)oj4Z<_+kw zo?xZZ;g4Ys;q43eTg?>q-wvG0+#ZaJ_Y`m+*=*084(`C*58RP?5EvKrDVz-M%$x^4 zfq5*r3p4JYn({;M)4?aQUJ5>mc@a3wd_K4v^Kx)H^J;K}8TUHP?#$PLGnj7z+ssYi z9?V<7J(7~GrrNic3!P}l?R%ltezi}_`6KjwdfaT9~Whu|FM&%phe zzXlIr{sD}e8x(NA(j3I>rLHmuGslC6Fn0tGWj+x+jJZ2_ICCcWWaexzZjw+K3?9im z0(=VdDDbJwqE(4EYz6gvPFBC2Vk7Hg9E@ZwE zJf8VFFmA|DxCuOg8MiUaiOjfMXij2&5ImXraqtvoT#hkMXU1gra7Y{htT_f%O-`vVY$IU&Q)bVA-c1gD+&)hA<{QBc%p1WNuoQ4T*<8cC1H6{`aqv3kePCIizYBZr-#5WmvdxE@jkxwJ z??L|n{cg6$wOn-#UtG(*it~zVx%aS5fUbj?SF@f1#>PaU16Ym?8+^G4=dp>JTm3w#sv ze(=rAZ-8%M#x+3mR%TrHQ}-ssbw5my2)G{dFteZ7yp8P>!M8KF1IzV23EaebAMi%z zq2N21^TB^)J`0S=i9)f)i@=*%UkcvBd>Qyp%vXZ9GT#K=#=Hf*o%wz+COisHf$w5| z3w$^82O56?zK8Xnz<*}ObsqCx=Aq#Gn5Tp9XPyn-!8{+ller2kw^LlNQ1d*lMVJq; zO(PhSF@j`cUvw%z5Bl%;UkknWurV zBcf0YeulXM{0fi5W#B!muLSR9z5v#jHs)cgzc9pLAfw}WL{Jph*Ly9+G) z>jkiEpMQY&ao%^qvcJ9tV~0uMN3gt>dxThBj|HpiOZY~$`2ySH9MIg)jPpKKpU&U| zte*&$eU}M-k@YOFtlMz#ORS#)mi3$nmg_YeERQ7?fL~_&GO+B&W#GTEei2yq<67`P zxNWZ{j{J>nz&)gX8*Kj0`ZHj8&2vBa71nVMV&Z^;!rNeZZSy1WKUhBqevSEiu)M}~ zm^kt}>tJ>5g+85Pm~XHi2mU8>8}PrFJA&V2?gD;`xhME-=04zmGmikj!(0G5=Y)+8?d_GaxQG%XMG;{1Lj3wxgS{${*ZNiAKv^Aa|2k;lN-Pvv3>{m zW9B=-^7_wC@F%Q43jUONKln4|SHYh%zYG3?`3vxu%s+v@Vh)Cg4>BifjPJ;sU$dS8 z{)RaR{4MhY@ORA9G+qEc#CnCs7l6NKy%zif^HtyeFQZ6Du;SKIqDV2f@30$#xN{5#ms`fK1K*53yQ zSpNuI&ic3DIM#mvm$B|mAdY7}0G9J1z9(+tAtnkPz#(RQx7@_RK860^1m;t~c({qe zcyL?hGr&pAbHT~X&oof+RIH*umvVGOuC^HgvK za}n5PE(7;qUJmZbyb9clxe=Vn+yw5;d^flc^P}Lt%zpuAF~0)F$rgqGfU}uB^vzE* zhdB}4pBdjiHwQ4MgYn=Pg)HzO=2O9gna=(J1@?&SgFd&SMVI4Y8lJeGMT zcpP&HSk9l-;6m0f1dnH~1)s)z6?g*kE#QgF+rX2U9|UjYZS5KGWY%8><7Ah@Tj0}~ z@f~4vD)SNWG-e-t4^(j?cslDRfM+oG1fRh?2z(~3Scv%z?9kHSLm+00A9 zvzcqb=P+Ll#shs6ZUq-HZwJp|eh6I5yazm&`LEy-=C{G6%%6dy%s+y0qEEr13z6o0 z=62u(%qM{tGWP*5Vjc!Qk9iEZjCmS(G4mX7IrCz01@ndAN@jc~)5HY^3fFcf121KM6?_5nd*EfvUxAl19|2#;9G^n`2j=$RiD0oO6F0oOC%2wugE@2i@ZGv5zh&HNO&fq6gp3g$P! zYncB7Ud#L~cpbBmN_-`A0{ANC&fu$=dw{QD9tggcc@(&jc?$SC=5xX8najY}GhYb4 zfq6CfM&|3m8<;nNZ(_b5d^7Vd@GZ=5fp2C0P~$Jbx3T^+_;%(v`i`gB#GD4+$ea$o zgBjl{Hvh;x0=$X25WJcB4Dc4_67ZjxE5TctF9vU8z5=|R`3CTv%$vY>G2aKioB2ub zJSA^;Ga1 z%r^L+%>BXtVlD%}$$SI&EoOWZR`E8l9On;$-)5Uu-P$GJgR6n)x&EH_Rz?u-SnvC+73OhnX(`|IAzqKEiwz_!s7z!M`&934D}!2iTwst`wdE zo6IkOJpam?vpJa|r_9~c+HDU1MzmoWw5hvg|u1b1bguJLT} ziL5UGpTt}P4l}O+cVk`)PG`Om9AVxD#*GCE_i6kHID_@QV4L|Ja1Z8>G(HH%O$iD= zgL^T1=-b4KgWyco+k@r$_5t^1eSpR%gZr>P7TlM48aRu&2rRdkN^n2c{{YTrUIWfy zz8>74`BpG)o>15d9?1M4co6e5;K9r|vflp?= zFL(s=Fz`s`0`Mu!XM^$M1_~t_pAXJueVN89z_K0Ig5|t%BUsKGo4|6exECzvipRln zes~U?$Npad<0cY?cfj~j1%=PS`OH6p3z&UjVz~__f#o*X1uVD0o?y8R4g||FPyimo zekN!<9W2*t4p`26W#F-FzYIK%xehFS?f@6E{v>!j^InY)fKOxn4e$i!55W_ee+Ext z_H-kj%zPqv3UhDp>C8jHa!wczp33?R@HFNX;OWd;z%!U10-wSB9{5b=Pc{A#Jd<@J z-Q`5^EY`EZ_<;+BvEZ|rCxK@(F9M&#d@~q7e4+3sa1rwk@EqnxHGUdg%sTRzx0v`R z_8R7G%yjvjj@6mzGL>QCCO-u_6{cf#W;)!a<6h=4_*&-f;6~=2;H#PYfah|#L%~n7 zJ_5XpIT!o_b3Rx;qdo;J?=MdWuVb5;V0jO5Hux$JEe&H1{i*wFrC@n~Z2?%`>nQ`v z-^)~j<$Z)2uzZGm8CYHqzX&X^hpzz3YteOJc`bT1SU%Uc7A&8;yBaL7NnQs|=6a^$ zJ|NxuLHHH-zY3Ty#QmT%m>&nvVSWVH=Wl0z64zS)&AgpD$^3=6Bd(#f;r5vWZqJ-f zWu>EIDS&NRZg1%17XggtH4z3vr)$%SZD}(CI+cw8wxvx0bgBme*p@aEp;J8&z_zrR z0iCXkA%JaZgZs0%{)GUxrA-t%1|S8nEo~MLqZRSAl$2!=SHVdFtI{j;CC+RBUlI9(gweCNgv5N*p@c0 zLqCOeuq|!gg?=jQU|ZUJ0zH>?uq|y4LeFCzY)hN(ppP^~0@#)|_^nF%7`6x71tI{j|qkZAze@&N|qZHf7MKvJSSTO(pbGxIMwPw83*7 z>1VP%*gk{#8t5}!wx!Jm=(AV{+tQ{9`dO@lZE3Rw`q`|5ZE1two21WX9c)V*{N5z} zRIVr3mNqXyFJ^nNJ%{-f=yP4RrOjK=OIQcn(&j(VOIZio(&j7ZQP#n>wD|%0Jl4Us zv@zmHpU*njmNxjENcsZS!M3!)^C#&GSqIzF2EPYMU&K1tmNwm?pT|1bmNtE%m$44E zrOjaIi&+QT(&iNC<*b8kX)_jj1?ym2+Tgby>6NU5ZD}(L`uVJbZE1t&Uec>r2iwwS z5%g--!M3zHA9@YzU|ZTOhrWb$uq|yagT9n?uq|!y{7m`>& z2iwvHzYR%W$2!=SHh8`${YuuswzL@w{VLYMwzQc7{c6_1wzQcA{TkN6wzQcG{aV(+ zwzR=BOX-cQgKcSZKJ@EY2iwwSIrR0cgKcSZ8T9K}2iwx-3g|bm4z{Juwa{;59c)XR zo1t%D9c)XRKSIBWb+9dM@Eefyn^_0j(&o?5b4`%|wx!K;(3{vEY~RlOGW3lu+tTI@ z=y$LVwx!K`(ErFf*p@b*Lf^zX*p@cmLf_0f*p@a&pl@LvY)cy}Ncx{x2iwvn5&Blv z!M3#N0DT+lU|ZURp>Jm$Y)hM7(C=g&Y)hLQ=y$OWwx!K*=y$UYwx!Kz==ZP=wx!Jk z=znG%Y)czF-<5tZ>tI{joCEzn*1@*4DTRJN>tI{jltJIYI@p#rOQ7#$9c)XRi=jWj zI@p#rtDrx~I@p#rS3-Y?b+9dMZh-zU>tI{j+zR~>*1@*4*#!Mj*1@*4xeNMZtb=W7 zgXhiCA7>qGOPeR4KfyZKmNt8#Kgl}SmNxsLKgBxOmNs}+Eqxd3U|ZU}4ShH3U|ZUJ z0R3s!!M3#d4Ei&ygKcT^4fH*%gKcSZ82Vn;!M3#Vgh+pub+9dMLeT%hI@p#rsnDNe z9c)XRF3|U}4z{IDcj(Wv4z{IDALuWz4z{JuK&RBf3Oa=r461BOn;4auq|zFfc`q`U|ZTWL4SjFuq|!2LjNc0U|ZVU3;kcL zgKcTE6MCL062P{!*$@34wg=n)W_}g=yDr<(<}K*&u@1JS&4H|Qqo zU|ZV!3%ZAOuq|yqfbL}-Y)hNZq5D_|+tTJc=oaf>TiP6f?q?lrOB+uD=>gWkwzLUC zk7FHdOPfUKqge;r(gxRe(-T+++wvN97W72c!M3y+0=+HkU|ZVcLQi5HY)hL$=*g^u zZD}(VdOOy^wzR=BvFZ7&gKcS34!r~GU|U{4zW_RZ=t%)=OPdwYJFyP7rOj&SommIl z(&lRDC$J8-rOl1dyRZ(nrA-s`uB?M?X|omjiL8TdX>%|1lUN7a(&l04Vb;O6wAlr{ z8|z?O+B^q6oprD+ZC-{RVI6Esn>V0$XB})yoA;n+unxAR&8N_9*1@*4!SlfBJy-|Z z(&jMqo~(myY2!^Ky%+0XTiW3H;dK1ymIBz8HtnGIW*uxxo6gYtunxAR4en8-_hlVy zOB>vmNH1U=Y)hMtRGvA8^)6sPYG4>)`iqPLG53)AOp2Rh*?u-S9~OKMD>BXH9#UUR zk~xm;uLjRxo9pOb| z_mDa^Ggbdo@Y`&I%^-5v0czp z|j}kyVNhOl8fjt~Ro& zqGiQdP_usfQ&hiY)I7KTC90M=^iM~L??xTlM15VVrB$;JO*Ko7{pM7+@xC;4fp zW_l~1e#)w&QbUf9 zKb%0O7%6fSH3r6H^~iWPY3G&kSUVnVG?pnnj{bhnE=T&)%N?(rP?{>Y53!H_a_JA@ z^>^vHXR@=2q2rHs;l>&ChwRGVB^0TnxC+YO=_Kg>n&=oeEd3#`@>fBu`}2^4bmffx zD}Re*o?Mx>>jT3WM~wQR9hAS-#Ja!kwO1AJ9lxbMsJLymN zheuH5&weSz^|yss_g6;8+^eNO_)+!yE3xjc(lQJ=Wm1akZ$Gi_?>jms$J~bc(XPSq zheKf9UmL$+Tu+(`s{L??uKVjl!Y1i2Nv5HmI8@U8;eK0p<&6F-e{p1_`+NCwnqw&) z^=n6eNP|D@f^~n-lD{g_RZ#xIG5*?oVHjm(1b?aYr~KtgfBmHc{Fe6y$@qt|@F(VY z2r|4xb|1&97~3E=Ii}oYRPJ?Mx!ewvuF5TvQ{#3cOG5+F)8b%YPtDyX0JJkKHrDKN`q`_Yo`cwX{k^Zu! zgRSJRKBj)~c}t94-?RDKRWh4c57=#%c1oX5c6xvf!lSL&^~OM!LD@Y(psz=pex~tC zCti4OCt3qBk7G<*6yr^?RDewmiz)wD&KRv%)KiMBjF5lQhoTQqZCjF6-?tSg~v!T zjaka-_%a-yua;KMXf}GI7$EdPf&tx+rF~#yGCUrO=G1;6!lZ(e^7N&R;L!sfJ zlS9-6Jq>SS7dj8|btgC_giDcDTca?A_O|WmpEr^10x71ODK3F*3saCXlXlcQ= zROL{Xk!-f}=XShdR44Y(qf=qZskBM8$ue7{Ku@p?PX{(d*@*+2Mcal%E*j+xmzhRR z3eJ6#Tk*tY7#3|T*d}Nx1|YVzmcetU)J*mJIyK8^7lLcOUme&J-jqpRlTsHJe<=%D?2ME z+;hUh@@3&s#nsX9w2FB(7Zg`T`%WA^Bb<{pfYL{0XAkLR^jlD|INEP{cJ{zwLvs2L zrf7A)xpV?hy1Xd5w4x|`C}|ay(ek3|iX~MgQNas}s}@(3FYh<6Vo5oja!`r=iYbZy zilXK7=`5hAY++5b-{OkWC1ug-e&x{`ak9|wg6Q1pijwo9HT|lqN+1_G3gxJ-$tpR% z>MW_LTv8)zNu^d)MP;OKIn`!qwC|$oeic{|w?;FdeP{q1$om8^7X{YlO`36o?bY4Qc=OwsgtL+o-`$I z>a>EQ8B-@5%V^T%qKO3)Cr_Q#x{uKlCQmEKFB&zgXi7nWUQT|&wCPhP&uUh!DN`p; zpFDbU%ko+)WLm+b{G$B4>3OkhF0=^+lg3UTS5z=_bU{IWvqDavQ81&R=(p3UtkF*M zXe%|ba2nQx8YOR{CX4nf5|tU3Hz|MGxV+N}S|oEz{&qTbP=3*wQwygT6mbu?@F1&H zG<|Z>xXII||7JS3w{d24?lduE3#zI{SCmGLrNw1SqDIBsMbVNPeC&B)`Fw*1RrMrF zKLg1#%4w6J?=w4sQI6{uEKIAZT0&XRte!w4UTQMNpVO8RzAn)$GP*2U48O>kS4kUX zsX?F9Hn8a!B}=O4>)Lc?Z~V_w!7iG~yvE;X!ZOXD6BB4Dj(!mTznLW#mY0+*p*H`& zD!nFJRbE{7e^fk8kp_($eU7YIUK!0=fP>KHx|ll`-~hW7y+j-+`@G_qg3gkx_Cc>n zdtChCcWElYn_ya2(Ca~xl`8+ov#Diy@itM@GQC!7Sv#0ky!2|dms#TdUL4MwR$ISR zOm<3QvvN<;GADa|B9EmqpWyd;l^1qLens`IjxvSb9|8+@OTKX)frCvi{c7Ay@FXJM zk^b~BY9+myZB!d^kkM*dgIA;;D=oI1FcpAvMm>mf8obx~8ZF^3?=(sk*Td*1LWI5~ zt7_?h{tNq8W*05SVjdPHSS+K#`=O@q>U++7P! zcaCtSy>l!n;~1kH*xntV96wPdOZ)VgIL`MuuzjYAlD!_h?yJz*Vk_>rntKf zeq%Ys-Tw6(D=6-UIPslR*I%5tzUi)CoFQ);$t*$RE+W1DJ1MTO-{Tb5$J-v6lmDd{ zeZqKfm1yBb9b^z5!XQFtvnGQNa@3!JSoO#;wf5u zDlx7Pa!4_XiQQ{kDF*IG-L0ixO1xi-UqyUSi{DP{bEe4@Pq8c#al-iQ?n6 z_`fN>P>X*>@dhn^l;Rt;cw1umIzzF(CsAC!4o<}TQCz+nOvF#6cqcEfE!t}`#fNEe zyaKBmmBAs!z^kwB)6y@Y_$DoWCB+wN@!KeVyB5EP;*DDTNs3>l#b2a2Um!qraqbT+^gu`Ux-GUdms3oI=iZQ*WzaRy!~@&^5JNHOp#j`=D| z`SJP-xBhVkURR;dM{iPGzCwX=r5JdH!VWF}PZVFL#r;&57qvKkZvP|MaEP5h-7OvI z-k2jGFI_E<$aO;<+fjSVpLz>-m{;V_w8c8NqxnnzT-iyNKMR)WafbYPtXRi(m`Pea z7|oiH9X7Hij2e|w)L;ImdzBRLFXID>28s9p5udlDyrgJulrAd3s%CNJ0RD%(6dTC@ z2Gc)bNvA~84o=+6(mW@d?Q;-!Q>D)wxFM(grHh;)6vxfcB0kSUW-SUUI!22Y(Y@-j zDA^QO)x?;f7`}l0GiJoZ}6^$YfMQ4VrzzyoSXPD#sd*|5@Xh3AmUD9Oalx=TvZ_^Z2(rr z$%vMuZ9)tfl_9ouv9?YItbh~2dOMMrMjJ4!`DKri;xas^z?V1V)sK1f_(LQ#0xKIoai5`V zgJbYM@<0g3*GfmZ=5V$_eIgq7kc{K22o5AEfR%m{vC11Ej*OrM{?nhb>4Er2sC-{d z=~)z4I#}ubp`Stv3Sgz9>PiPI9j+s%(t-k5=~IYR-KG<(`h%4Xj&&osw4eZ1`gz3S zM40~LnTALnEhvC{NUkPU&uf8|exas=m3|5I(X^ldR{Ax>>Y1+f#F2bjPynlEx;79; z3ZNPWSm{l~N(U=_6ZA2(pa51nZic9`9wSy|ftAfu&}CU*rT>js<^2b2#?pcUSlRrO zSd|M_I>w>dixw0xe#~(K#c_yP$c$qcb3AirFs?~ZNT)wj9suE7$D9b2$GAC(8RNm6 z%#5L6qVp+WHB6k~P=Gsgsz7nhV@_i}6FLS3g>&dnJug=RJ_9Npf6|``LkbuJd>6$q zmVjqLHH<&dpLv!*V$^my}@P7{lPfl zqcE5_QtomOsgHmS8i@iPTU6WNX|PAd?B%#AHY4Nekp9wQ50&yOPQ|*=P_SL9J#<{wQb%6n`NwT1TSaa43>4<3BHi^ zN5OLYeUdnWK|ukmwuL>gxrlX~o0%6gi|?CApKn9QBthXluz?ZWAHCVO-UL#_z zU>!@^)q6z(ls7$rb+CFL2+l+Cd@TZ4y$_@V^tP;n@vJQZ z&QsO*1_ui8&^Z` z#yZ%RHuy9}dOGW1TiVorOji|ZPvl+{Toj~@6S3| zy?;ZDw*jn+@rIoSg)sd^;z7*nx#)ouH>Leha0nLs+*+ia%RQuyU4pWo4#r@oFq8fw zCkW(Y0I9Da$wVO(>gdnxD$rO>{~|qH?jiO6`8i?SHj}s5nmtPkT^?`#hR#QwEfVED zIM$uRT=m@S|DT?;MYqt@;5?ryyMr5_mNa}sz|e)Am!mD7$3+?fx(!p&@7d*$O>DVx zNKuMgZXaSF{pHdh!dBXLF^*Ah==j6*h(jFR-x!L^>4M1hmrtzw+eQ8`CBYvy2j#Dr zSob%Z;;s3EuKPPk{<@O}e`p8g54#%OA9h2T^rwPq=j9~m{!(d98bKQT;XFn8yPg>S zRJeuU6BVKVD(xC#-QN`QhdB`b&~D1#MlBDaQBMwV?4pA5x03|LNV|x9#jDC|X@4fx z%iY<9o=>GgfpW1cQRVK{@(>#Jl+Y6(gDPtm#dUw-uwl$04gRpJQU3l;j68BTW86&% z^0k=0s~D}FuQFm{oScENU{{B1FauC zUOX#f_x6Ug==w!UiEP?7xYzE;mRUnCo)NiYn?Z3SvOV78q&IEzJAB7B|D<{+)>LRl zng*Iv8*-Xlb$osJW;}sfHu0K$X2I2Y=Cd_+@900m`|}R{)N~`(2y3vtVce{SXk-1M z%97LvjFtJzo4lI~opL5M{HuF|^}rr$ymxPdH)T+o(O7W!=)`qaL&7Ju+kM7+NhRxo zM(yUH;oUOcaLdlTBDu*Le}+@TJ-P25^wMWsRgK3xDJ%0+mUK3fKTIo#Y~SWdZhCdP zUcOE1u;-Q)#zQpHYqx}q?G2I4SB_jfYsRzv*JfR@GQaVPeTL|lkY$`v|4+wj`~mOg z24jbHlQF=5OYX`ss@!f{$@}15`&5e3x33EIvCIdrd;iP2pRK}@*H$H~-hK%ETW=XD z{wc|GFIV=5niP3^S;nxfEv>VY91E&Rq^Ix5H3boS=aG;nWnWl2ZKbtG-@$-(Kahc1xje!}FP|yqn{VM`lE}J~BA6ec#|mW?Xi?+XI=a zRPCR4+RyDt`p(1VkWrhF{|m;)`1(z^DBpN$xzoPwb*ppZo$}sG+LQaCe4;sR_x8F) zU6t=Gj_=j4ciL+f)EDf3J-lK0jPQo@>2LOJUC%dyLuhAPn?d(lyYD>me#kl{vth!l z_-Km%!^-yy9?Vod5y{&5jl+F3wwY6|u#Ea>$|`GBBy-P?@R{N#pMCax=WzEu-#6A5 z)Kh;_hd zu5N37x;JCjPgv9YXnry^KRq=LYxU`_ak`c_tZ{m?yn5ZfOR@IRcD3nnN@$-IvGaeT z`Nf&Hycvbw(8-o36v{Zd#9Ad2o8kLWZ3883tv(r6iofn>+Csip>Kcz_YSxZk(#Ep4*Pm{s zteRn_c3X3qKfGq8fB4ExmSy?(KIJWF@Rk@>u3H141gukBr6ge4-i&>|TB?^Sjp{dI zdtEK5f_^Z5Fe1x~tQot3%vMW;o)^`Fr9uCM>l{eU)i8*`m> z<)7L)X?s1TA8NRRMvhZ%{U)!S@763c&G7b!_w4YkHwV<;Y*6iUspdb`+Pq%p<Q6Iw)EDM0TJ;~NwMs(t++0T8cgn|R)WK=5ecLJR zkV;$Jw6fs3YeRMZV5rug@UJoLSJYd3pW3ijrAO>-9?t7H*GOU6>`tLHl8SXJlE$!>PTMCW(F>b%QeLlYaJ*Vz^ zuD9-*cN4YK553FkyQw~*zW#yw@&|Xnzov&pM-&C-`1-dUFUbcIL^}<`9^2_9v_^(# zT@bhMZn@q*(Zai(^*-0})nX1aY5odWRw#J}ZS(uQG}fs{O4eBI&|{aaA9P0~bC%be zK}Q(rz9W$^{bl(MNBZ~GQeG;dmUKkqI`@t6MG zFh-4*LAzp=h#ylw#@$}m=Dw`WfbpMDZ4c@7(Q~`G z&#G+DL0%I4I$O z*WNeCt$C^&4zO_t9v|XhQC~Z}JH2Ihp*cf9}g&ev&<@adv$ zgpMw04)(czX-iuCq}T(0JI}E~JpXIg)1vw<&bngT<9^z6aPyPY*PcaA+9K5XE1Itl z*4p_8y*+#fRb5=0PWu{{9QuLgfp6bmwf9%iH(yy#ZYyxt$hCbx$+~~#eQtldM7`yV zyyxrA-dty?l3YK!jh=I#&po<^O{8bM551*4(5Py~8%o*JimsQEQtzI5q}2OO>Wy|uEM*K=Z4L#MsZ*RR;1(o~ME`{VbnEWocUlbha{kyYQc z0cXsE8}4to=ZefLlvP(*c4&IMHzjSD(NHkp)y>B0O?Lf1>L;yw-WjJ;QU1-U3@ZO- zly4r`Ugs^S_jRX#^sWubHK+?*R6-Cc9D z;30X|I>7&ckvghm)%8ZQ73z8@DYjXRO|HZI`AE@KM{nVDR2Ok#uWtq^C77V$)xyHPE&7ZmvrU#aTxi3Y1qUifONQ z*QQh|d#X}sJeE1!P#2+N{bCh&y;2Ux2k}T{;nr6v`Z_mlc=?tU9f#nGLPp5Qq$>(L zk4(>_{U)E)_~~5V%0IH(scFe*s|`|9EZ^Zq`dMeA-|)Dz4Q){#+V>u=FQBtlO3y!% z;wL-5y9cf9wdbepb(qI@49YeaugmyE)vA`R9k~0O?aq1l78*CohUVR$+%2y8KCaMr z&5MI*FR*Pe)k5?eo%PaO&c{?M3wdu*a(%op?2eU%CH3)1_2;Er@dvSGH3lu?#k%Km z*XF;RugVI=r5(*&>(0;{3)~~9{o}44=f(!@by?;1_OY}h>C9DUXh&LmCcN=uU+0>M zFVF2m_v*tIXG_)Bve#D3c9HH4X3DD2ifgnQxh;o1YeW8;PS#QEBiH92t5qVI8)$Zt zS2R){Fz$7(XW&{{(~Vfh<(1H<>D|3@C}J5+H>Ozk{@iqQM-PEe5?3i(< zCqh>`F1UH~vjZ$*x;~InpK8!?*rAkw?~r~hl6+uIPs^A}d*t!XXdKjpR_NNa5bL^P z*jBY>ae0je1qQW%->O8tdq*D(i>rcm-7h8A?KSd>M>y@Azrjd)h^`9PZt)pet0FyL z`IWXEd*`q9(O=SNyZJSFtn%vJ?4xbeceI51srv?{=HIp=Zu>f#vj*4p+B-O9P$#2t zb0=fsx=y>zg6_BBNJl^OOu6EKGv1vm9&{cLZltS*(It&-4)u5!*KDRl(sv$dv<_X0 z>rb?Pm60s%>PDu<;Y~*zUvvdxD$Vq&c67wGd7ZIw%=6kdoJ?08Cl1a#pljRfLVeRr z@7)O&rC9^4yK_s$1;=N;Bh*&Td8c>t0p}PYvSpnW*}B;3>-3kmuVp;&&QDtxt?Am7;%`dz(ix(A zMl*{1to1vr$8yK7+TxU)vlk`1c~v{0gkPrXEtB^}$-i!)JwEO2 zC$6V$aL>>0*KPXznkFji$op4q`jpO}s04d`Wc%H|iytT!TT{v9n|Ql=y=3hsBZ0G9Go9O&+Ta(!GdcMDA)2|<_Q~i?Aq)64Mn{$0ZNrVXl|?(xTb`kh}%*+P25QqPRiUc=TYwRaI0C�zqiMpaHl6MHiMYtXW8_ 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 z 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 diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/components/component_factory.h b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/components/component_factory.h index a53e5557f..f32ea366c 100644 --- a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/components/component_factory.h +++ b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/components/component_factory.h @@ -65,6 +65,13 @@ #endif // FEATURE_COMPONENT_BAIDUMAP #include "text_component.h" #include "video_component.h" +#if FEATURE_COMPONENT_LISTEXT +#include "menu_item_component.h" +#include "list_ext_component.h" +#endif // FEATURE_COMPONENT_LISTEXT +#if FEATURE_COMPONENT_SCROLL +#include "scroll_component.h" +#endif // FEATURE_COMPONENT_SCROLL namespace OHOS { namespace ACELite { @@ -147,6 +154,19 @@ public: case K_LIST_ITEM: component = new DivComponent(options, children, styleManager); break; +#if FEATURE_COMPONENT_LISTEXT + case K_MENU_ITEM: + component = new MenuItemComponent(options, children, styleManager); + break; + case K_LIST_EXT: + component = new ListExtComponent(options, children, styleManager); + break; +#endif // FEATURE_COMPONENT_LISTEXT +#if FEATURE_COMPONENT_SCROLL + case K_SCROLL: + component = new ScrollComponent(options, children, styleManager); + break; +#endif // FEATURE_COMPONENT_SCROLL #ifdef FEATURE_COMPONENT_ANALOG_CLOCK case K_CLOCK_HAND: component = new ClockHandComponent(options, children, styleManager); diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/components/component_utils.cpp b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/components/component_utils.cpp index b144e11d2..257235a70 100644 --- a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/components/component_utils.cpp +++ b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/components/component_utils.cpp @@ -45,8 +45,12 @@ void ComponentUtils::ReleaseComponents(Component *rootComponent) if (rootComponent == nullptr) { return; } +#if FEATURE_COMPONENT_LISTEXT + if (rootComponent->GetComponentName() != K_LIST && rootComponent->GetComponentName() != K_LIST_EXT) { +#else // for list component, release all the list items first if (rootComponent->GetComponentName() != K_LIST) { +#endif // FEATURE_COMPONENT_LISTEXT JSValue descriptors = rootComponent->GetDescriptors(); if (!JSUndefined::Is(descriptors)) { DescriptorUtils::ReleaseDescriptorOrElements(descriptors); diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/components/input_edittext_component.cpp b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/components/input_edittext_component.cpp index 40042c06c..dd12976d3 100644 --- a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/components/input_edittext_component.cpp +++ b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/components/input_edittext_component.cpp @@ -20,9 +20,15 @@ #include "key_parser.h" #include "keys.h" #include "product_adapter.h" +#include "input_method/ui_input_method.h" namespace OHOS { namespace ACELite { +InputEditTextComponent::~InputEditTextComponent() +{ + UIInputMethod::GetInstance()->Input(UI_KEYCODE::UI_KEY_ENTER); +} + bool InputEditTextComponent::CreateNativeViews() { fontSize_ = ProductAdapter::GetDefaultFontSize(); diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/components/input_edittext_component.h b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/components/input_edittext_component.h index f6b2e079f..8672c1549 100644 --- a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/components/input_edittext_component.h +++ b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/components/input_edittext_component.h @@ -38,7 +38,7 @@ public: { SetComponentName(K_INPUT); } - ~InputEditTextComponent() override {}; + ~InputEditTextComponent() override; bool CreateNativeViews() override; void ReleaseNativeViews() override; bool SetPrivateAttribute(uint16_t attrKeyId, jerry_value_t attrValue) override; diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/components/list_adapter.cpp b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/components/list_adapter.cpp index abf9cec2d..a03887e8e 100644 --- a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/components/list_adapter.cpp +++ b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/components/list_adapter.cpp @@ -25,6 +25,10 @@ #include "securec.h" #include "text_component.h" +// ohos begin +// list-item adaptive +#include "list_adapter_ext.h" +// ohos end namespace OHOS { namespace ACELite { ListAdapter::ListAdapter() @@ -67,6 +71,10 @@ ListAdapter::~ListAdapter() itemsCount_ = 0; listItemsCount_ = 0; + // ohos begin + // list-item adaptive + ListAdapterExt::CleanAll(); + // ohos end } bool ListAdapter::Initialize(const JSValue descriptors) @@ -173,7 +181,12 @@ int16_t ListAdapter::CalculateItemIndex(int16_t itemIndex) const if (listItems_ == nullptr) { return FAILED; } - + // ohos begin + // list-item adaptive + if (ListAdapterExt::GetItemAdaptive()) { + return 0; + } + // ohos end for (int16_t listItemsIndex = 0; listItemsIndex < listItemsCount_; listItemsIndex++) { if (itemIndex >= listItems_[listItemsIndex].startIndex && itemIndex <= (listItems_[listItemsIndex].startIndex + listItems_[listItemsIndex].itemsCount - 1) && @@ -191,6 +204,12 @@ UIView *ListAdapter::GetView(UIView *inView, int16_t index) if (index < 0) { return nullptr; } + // ohos begin + // list-item adaptive + if (ListAdapterExt::GetItemAdaptive() && index >= itemsCount_) { + return nullptr; + } + // ohos end // 1. get UIView according to index which will show in list. int16_t listItemsIndex = CalculateItemIndex(index); if (listItemsIndex < 0) { @@ -225,7 +244,7 @@ UIView *ListAdapter::GetView(UIView *inView, int16_t index) return newView; } -JSValue ListAdapter::GetElement(int16_t listItemsIndex, int16_t index, bool &isFor) const +JSValue ListAdapter::GetElement(int16_t listItemsIndex, int16_t index, bool &isFor) { JSValue element = UNDEFINED; JSValue descriptorOrElement = listItems_[listItemsIndex].descriptorOrElement; @@ -235,12 +254,19 @@ JSValue ListAdapter::GetElement(int16_t listItemsIndex, int16_t index, bool &isF // if it is a for or for+if type list-item, we need create view dynamically. if (isFor) { // get render argument - JSValue item = jerry_get_property_by_index(getterRetList, index - startIndex); + // ohos begin + // list-item adaptive + JSValue item = + jerry_get_property_by_index(getterRetList, (ListAdapterExt::GetItemAdaptive() ? 0 : index) - startIndex); + // ohos end if (jerry_value_is_undefined(item)) { HILOG_ERROR(HILOG_MODULE_ACE, "List adapter: Get item from getterRetList failed."); return UNDEFINED; } - JSValue itemIdx = jerry_create_number(index - startIndex); + // ohos begin + // list-item adaptive + JSValue itemIdx = jerry_create_number((ListAdapterExt::GetItemAdaptive() ? 0 : index) - startIndex); + // ohos end const int8_t argsLen = 2; JSValue args[argsLen] = {item, itemIdx}; // get render function @@ -276,11 +302,15 @@ JSValue ListAdapter::GetElement(int16_t listItemsIndex, int16_t index, bool &isF } else { // if it is a common list-item element = descriptorOrElement; } + // ohos begin + // list-item adaptive + ListAdapterExt::SetItemIndex(index); + // ohos end BuildItemViewTree(element); return element; } -void ListAdapter::BuildItemViewTree(const JSValue element) const +void ListAdapter::BuildItemViewTree(const JSValue element) { Component *component = ComponentUtils::GetComponentFromBindingObject(element); if (component == nullptr) { @@ -352,6 +382,14 @@ void ListAdapter::BuildItemViewTree(const JSValue element) const Component::BuildViewTree(component, nullptr, parentParam); } } + // begin end + // ohos begin + // list-item adaptive + if (ListAdapterExt::GetItemAdaptive()) { + int16_t itemsCount = ListAdapterExt::BuildItemAdaptive(component, ListAdapterExt::GetItemIndex()); + itemsCount_ = itemsCount > 0 ? itemsCount : itemsCount_; + } + // ohos end component->OnViewAttached(); } @@ -432,6 +470,11 @@ void ListAdapter::CleanUp() itemsCount_ = 0; listItemsCount_ = 0; + // ohos begin + // list-item adaptive + ListAdapterExt::CleanVector(); + // ohos end + if (listItems_ != nullptr) { delete[] listItems_; listItems_ = nullptr; diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/components/list_adapter.h b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/components/list_adapter.h index 6d35188b9..2a4668e2c 100644 --- a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/components/list_adapter.h +++ b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/components/list_adapter.h @@ -81,10 +81,16 @@ public: private: bool GenerateListItems(const JSValue descriptors, int16_t size); int16_t CalculateItemIndex(int16_t itemIndex) const; - JSValue GetElement(int16_t listItemsIndex, int16_t index, bool &isFor) const; + // ohos begin + // list-item adaptive + JSValue GetElement(int16_t listItemsIndex, int16_t index, bool &isFor); + // ohos end bool AddForDescriptorToList(JSValue descriptorOrElement, int16_t listItemsIndex) const; void InsertItem(JSValue nativeElement, UIView *uiView); - void BuildItemViewTree(const JSValue element) const; + // ohos begin + // list-item adaptive + void BuildItemViewTree(const JSValue element); + // ohos end ListItemValue *listItems_; ViewNativePair *headNode_; ViewNativePair *tailNode_; diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/components/list_component.cpp b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/components/list_component.cpp index e41f45f39..9fd0dca1a 100644 --- a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/components/list_component.cpp +++ b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/components/list_component.cpp @@ -20,6 +20,10 @@ #include "fatal_handler.h" #include "key_parser.h" #include "keys.h" +// ohos begin +// list-item adaptive +#include "list_adapter_ext.h" +// ohos end namespace OHOS { namespace ACELite { @@ -98,7 +102,26 @@ bool ListComponent::SetPrivateAttribute(uint16_t attrKeyId, jerry_value_t attrVa list_.SetYScrollBarVisible(false); } return true; + // ohos begin + // list-item adaptive + } else if (attrKeyId == K_LONG_TEXT) { + if (jerry_value_is_boolean(attrValue)) { + ListAdapterExt::SetItemAdaptive(BoolOf(attrValue)); + } + return true; + } else if (attrKeyId == K_VALUE) { + if (jerry_value_is_string(attrValue)) { + char *value = MallocStringOf(attrValue); + if (value == nullptr) { + HILOG_ERROR(HILOG_MODULE_ACE, "value is nullptr"); + return false; + } + ListAdapterExt::SetListValue(value); + ace_free(value); + } + return true; } + // ohos end return false; } diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/context/js_ability_impl.h b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/context/js_ability_impl.h index 68b56ba9b..8d1fe06df 100644 --- a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/context/js_ability_impl.h +++ b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/context/js_ability_impl.h @@ -27,6 +27,8 @@ namespace OHOS { namespace ACELite { +int8_t GetJsPageState(); + class JSAbilityImpl final : public MemoryHeap { public: ACE_DISALLOW_COPY_AND_MOVE(JSAbilityImpl); diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/include/context/js_ability.h b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/include/context/js_ability.h index 1da3bc1fb..967009bb9 100644 --- a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/include/context/js_ability.h +++ b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/include/context/js_ability.h @@ -23,6 +23,8 @@ namespace OHOS { namespace ACELite { +int8_t GetJsPageStateInfo(); + class JSAbility final : public MemoryHeap { public: JSAbility(const JSAbility &) = delete; diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/app_module.h b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/app_module.h index 1879b6709..b023a7a8d 100644 --- a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/app_module.h +++ b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/app_module.h @@ -26,7 +26,7 @@ #ifdef CUSTOM_ZHIHUI #include "themestyle/include/ThemeStyleModel.h" #else -#include "settings/SetDesktopModel.h" +#include "settings/model/SettingDesktopModel.h" #endif namespace OHOS { @@ -86,10 +86,10 @@ void TerminateWrapper(uint32_t token, bool forceStop) (void)forceStop; uint16_t preSliceId = NativeAbility::GetInstance().GetPreSliceId(); if (preSliceId == VIEW_APPLIST) { - if (SetDesktopModel::GetInstance().GetDesktopStyle() == HEXAGONS_STYLE) { + if (SettingDesktopModel::GetInstance().GetDesktopStyle() == HEXAGONS_STYLE) { AbilityMsClient::GetInstance().TerminateAbility(token, TransitionType::TRANSITION_BACK_TO_HEXAGONS); return; - } else if (SetDesktopModel::GetInstance().GetDesktopStyle() == WATERFALL_STYLE) { + } else if (SettingDesktopModel::GetInstance().GetDesktopStyle() == WATERFALL_STYLE) { AbilityMsClient::GetInstance().TerminateAbility(token, TransitionType::TRANSITION_BACK_TO_WATERFALL); return; } diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/baidumapcomponent/baidumap.cpp b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/baidumapcomponent/baidumap.cpp index fc1c1d4d7..dfa41323b 100644 --- a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/baidumapcomponent/baidumap.cpp +++ b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/baidumapcomponent/baidumap.cpp @@ -1462,6 +1462,7 @@ int32_t BaidumapSendMsgToJS(const char *msgBody, uint8_t type) if (!ret) { HILOG_ERROR(HILOG_MODULE_ACE, "Failed to dispatch async work"); AdapterFree(params->msgBody); + params->msgBody = nullptr; delete params; params = nullptr; return -1; @@ -1493,6 +1494,7 @@ int32_t BaidumapFailSendMsgToJS(const char *msgBody, uint8_t type) if (!ret) { HILOG_ERROR(HILOG_MODULE_ACE, "Failed to dispatch async work"); AdapterFree(params->msgBody); + params->msgBody = nullptr; delete params; params = nullptr; return -1; diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/bluetooth/ble_module.h b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/bluetooth/ble_module.h new file mode 100644 index 000000000..cf6931b73 --- /dev/null +++ b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/bluetooth/ble_module.h @@ -0,0 +1,141 @@ +/* + * Copyright (c) CompanyNameMagicTag. 2025. All rights reserved. + * Description: http control interfaces + * Author: Software Group + * Create: 2025-08-06 + */ + +#ifndef BLE_CLIENT_MODULE_H +#define BLE_CLIENT_MODULE_H + +#include "ble_module_common.h" +#include "los_task.h" +#include "bts_le_gap.h" +#include "cmsis_os2.h" +#include "ohos_init.h" +#include +#include +#include + +namespace OHOS { +namespace ACELite { +class BleModule final : public MemoryHeap { +public: + BleModule() = default; + ~BleModule() = default; + static JSIValue JSGetMtu(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize); + static JSIValue Connect(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize); + static JSIValue DisConnect(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize); + static JSIValue GetServices(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize); + static JSIValue ReadCharacteristicValue(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize); + static JSIValue WriteCharacteristicValue(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize); + static JSIValue ReadDescriptorValue(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize); + static JSIValue WriteDescriptorValue(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize); + static JSIValue SetNotifyCharacteristicChanged(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize); + static JSIValue GetDeviceName(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize); + static JSIValue GetRssiValue(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize); + static JSIValue Close(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize); + static JSIValue CreateGattClientDevice(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize); + static JSIValue StartBLEScan(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize); + static JSIValue StopBLEScan(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize); + static JSIValue StartAdvertising(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize); + static JSIValue StopAdvertising(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize); + static JSIValue SetCharacteristicChangeIndication(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize); + static JSIValue SetCharacteristicChangeNotification(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize); + static JSIValue On(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize); + static JSIValue Off(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize); + static JSIValue ClientOff(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize); + static JSIValue ClientOn(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize); + static void CheckSubscription(const char *type, const JSIValue err, const JSIValue value); + static void Destroy(); + static void GetAdvertiseData(AdvertisingParams &advertisingParams, JSIValue jsiAdvertisingParams, const char *type, + bool *hasResponse); + static void GetAdvertiseWithCallback(const JSIValue *args, uint8_t argsSize, AdvertisingParams &advertisingParams, + bool *hasResponse); + static void GetAdvertiseWithParame(const JSIValue *args, uint8_t argsSize, AdvertiseSetting &setting, + AdvertiseData &advData, AdvertiseData &advResponse, bool *hasResponse); + static void DiscoverCharacteristicsForService(uint8_t client_id, uint16_t conn_id); + static void CompleteDiscovery(uint16_t conn_id, errcode_t status); + static void StartDescriptorDiscovery(uint8_t client_id, uint16_t conn_id); + static DiscoveryContext* GetValidDiscoveryContext(uint16_t connId); + static void ProcessNextDescriptorDiscovery(uint8_t client_id, uint16_t conn_id); + // 辅助函数:根据UUID查找特征值 + static bool FindCharacteristic(const uint16_t charHandle, const std::string& serviceUuid, + const std::string& charUuid, BLECharacteristic& outChar, uint16_t connId); + static void CleanupConnectionResources(uint16_t conn_id); + // 辅助函数:根据UUID查找描述符 + static bool FindDescriptor(const uint16_t descHandle, const std::string& serviceUuid, const std::string& charUuid, + const std::string& descUuid, BLEDescriptor& outDesc, uint16_t connId); + static void DsicoverExecute(void *data); + static void OnTerminate(); + + static std::map eventCallbacks; + static std::mutex scanResultMutex; + static std::vector scanResult; + static uint32_t bleMtu; + static uint8_t clientId; + static std::mutex addrMapMutex; + static std::map addrMap; + static BLEConnectionChangeState connectState; + static std::vector gattServices; // -----发现服务的回调里捞取服务、特征值、描述 + static std::vector gattCharacteristics; + static std::vector gattDescriptors; + static std::map connectMap; + static std::map advertisingMap; + static uint8_t advId; + static std::string deviceId; + static bool hasOn; + // 上下文管理相关静态成员 + static std::map discoveryContexts; + static std::mutex contextMutex; + // 操作上下文管理 + static std::vector operationContexts; + static std::mutex operationMutex; + static std::vector bleScanFilters; + static std::map> discoveredServicesMap; + + static std::queue scanDataQueue; + static std::mutex queueMutex; + static std::condition_variable queueCond; + static bool workerThreadRunning; + static osThreadId_t workerThreadId; + + static std::queue> discoveryQueue; + static std::mutex discoveryQueueMutex; + static std::condition_variable discoveryQueueCond; + static bool discoveryWorkerRunning; + static osThreadId_t discoveryWorkerThreadId; + static ScanOptions scanOptions; +private: + static errcode_t ProcessAdvertisingParameters(const JSIValue *args, uint8_t argsSize, + gap_ble_adv_params_t &adv_param, gap_ble_config_adv_data_t &cfg_adv_data, bool &hasResponse); + static errcode_t HandleAdvertiseSetting(const JSIValue *args, uint8_t argsSize, + gap_ble_config_adv_data_t &cfg_adv_data, bool &hasResponse); + static errcode_t HandleAdvertisingParams(const JSIValue *args, uint8_t argsSize, + gap_ble_adv_params_t &adv_param, gap_ble_config_adv_data_t &cfg_adv_data, bool &hasResponse); + static errcode_t ConfigureAndStartAdvertising(gap_ble_adv_params_t &adv_param, + gap_ble_config_adv_data_t &cfg_adv_data); + static JSIValue HandleExit(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize, errcode_t ret, + const gap_ble_config_adv_data_t &cfg_adv_data); + static bool CheckResponseData(const char *type, JSIValue jsiAdvertisingData, bool *hasResponse); + static void ProcessServiceUuids(AdvertisingParams &advertisingParams, JSIValue jsiAdvertisingData, + const char *type); + static void ProcessManufactureData(AdvertisingParams &advertisingParams, JSIValue jsiAdvertisingData, + const char *type); + static void ProcessManufactureValue(JSIValue jsiManufactureDataItem, ManufactureData &manufactureData); + static void ProcessServiceData(AdvertisingParams &advertisingParams, JSIValue jsiAdvertisingData, + const char *type); + static void ProcessServiceValue(JSIValue jsiServiceDataItem, ServiceData &serviceData); + static void ProcessIncludeDeviceName(AdvertisingParams &advertisingParams, JSIValue jsiAdvertisingData, + const char *type); + + static errcode_t ReleaseConnect(); + static void ReleaseClose(); + static void DestroyStopScanAndAdv(); + static JSIValue gattClient; +}; +void InitBleModule(JSIValue exports); + +} // namespace ACELite +} // namespace OHOS +#endif // BLE_CLIENT_MODULE_H \ No newline at end of file diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/bluetooth/ble_module_common.h b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/bluetooth/ble_module_common.h new file mode 100644 index 000000000..81763d635 --- /dev/null +++ b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/bluetooth/ble_module_common.h @@ -0,0 +1,409 @@ +/* + * Copyright (c) CompanyNameMagicTag. 2025. All rights reserved. + * Description: http control interfaces + * Author: Software Group + * Create: 2025-08-06 + */ + +#ifndef BLE_CLIENT_MODULE_COMMON_H +#define BLE_CLIENT_MODULE_COMMON_H + +#include +#include "jsi.h" +#include "errcode.h" +#include "bts_gatt_client.h" +#include "non_copyable.h" +#include "js_async_work.h" +#include "bts_le_gap.h" +#include +#include +#include + +namespace OHOS { +namespace ACELite { + +#define MAX_CHARACTERISTICVALUE_LEN 128 +#define MAX_BLE_NAME_LEN 10 +#define MIN_BLE_INTERVEL_LEN 48 +#define MAX_BLE_INTERVEL_LEN 96 +#define MAX_ADV_DATA_LEN 31 +#define NOMAL_MTU_VALUE 512 +#define NOMAL_ADV_ID 3 + +#define BLE_ADDR_LEN 6 +#define BLE_INVALID_CHARACTERISTIC_HANDLE 65530 +#define BLE_INVALID_DESCRIPTOR_HANDLE 65531 + +// 蓝牙广播数据类型定义 +#define BLE_AD_TYPE_FLAGS 0x01 +#define BLE_AD_TYPE_16BIT_SERVICE_UUID 0x03 +#define BLE_AD_TYPE_32BIT_SERVICE_UUID 0x05 +#define BLE_AD_TYPE_128BIT_SERVICE_UUID 0x07 +#define BLE_AD_TYPE_COMPLETE_LOCAL_NAME 0x09 +#define BLE_AD_TYPE_MANUFACTURER_SPECIFIC_DATA 0xFF +#define BLE_AD_TYPE_SERVICE_DATA_16BIT 0x16 +#define BLE_AD_TYPE_SERVICE_DATA_32BIT 0x20 +#define BLE_AD_TYPE_SERVICE_DATA_128BIT 0x21 +// 广播数据类型常量定义 +constexpr const char* ADVERTISING_DATA = "advertisingData"; +constexpr const char* ADVERTISING_RESPONSE = "advertisingResponse"; +constexpr const char* SERVICE_UUIDS = "serviceUuids"; +constexpr const char* MANUFACTURE_DATA = "manufactureData"; +constexpr const char* SERVICE_DATA = "serviceData"; +constexpr const char* MANUFACTURE_ID = "manufactureId"; +constexpr const char* MANUFACTURE_VALUE = "manufactureValue"; +constexpr const char* SERVICE_UUID = "serviceUuid"; +constexpr const char* SERVICE_VALUE = "serviceValue"; +constexpr const char* INCLUDE_DEVICE_NAME = "includeDeviceName"; + + +struct EventCallback { + JSIValue callback; + JSIValue context; +}; + +enum ErrNum { + BLE_SUCCESS = 0, + BLE_PERMISSION_DENIED = 201, + BLE_INVALID_PARAMETER = 401, + BLE_UNSUPPORT = 801, + BLE_SERVICE_STOP = 2900001, + BLE_READ_FORBID = 2901000, + BLE_OPRATION_FAILED = 2900099, +}; + +enum class MatchType { + NONE, + CHARACTERISTIC, + DESCRIPTOR +}; + +enum ChannelMap { + BLE_ONE_CHANEL = 0x1, + BLE_THREE_CHANEL = 0x7, +}; + +enum ScanDuty { + SCAN_MODE_LOW_POWER = 0, + SCAN_MODE_BALANCED = 1, + SCAN_MODE_LOW_LATENCY = 2, + SCAN_MODE_NONE, +}; + +enum MatchMode { + MATCH_MODE_AGGRESSIVE = 1, + MATCH_MODE_STICKY = 2, + MATCH_MODE_NONE, +}; + +enum PhyType { + PHY_LE_1M = 1, + PHY_LE_ALL_SUPPORTED = 255, + PHY_LE_NONE, +}; + +enum ScanReportMode { + SCAN_REPORT_MODE_NORMAL = 1, + SCAN_REPORT_MODE_NONE, +}; + +struct BLEDescriptor { + std::string serviceUuid; + std::string characteristicUuid; + std::string descriptorUuid; + std::vector descriptorValue; + gattc_discovery_descriptor_result_t descriptor; +}; + +struct GattProperties { + bool write; + bool writeNoResponse; + bool read; + bool notify; + bool indicate; +}; + +struct BLECharacteristic { + std::string serviceUuid; + std::string characteristicUuid; + std::vector characteristicValue; + std::vector descriptors; + GattProperties properties; + gattc_discovery_character_result_t character; + uint16_t service_start_hdl; + uint16_t service_end_hdl; +}; + +struct CallFuncAsyncParams : public MemoryHeap { + ACE_DISALLOW_COPY_AND_MOVE(CallFuncAsyncParams); + CallFuncAsyncParams() : err(nullptr), result(nullptr), callback(nullptr), context(nullptr), + type(nullptr), connId(0), characteristicArgs(nullptr){} + + JSIValue err; + JSIValue result; + JSIValue callback; + JSIValue context; + char* type; + uint16_t connId; + BLECharacteristic *characteristicArgs; +}; + +struct BleScanFilter { + std::string deviceId; + std::string name; + std::string serviceUuid; + std::string serviceUuidMask; + std::string serviceSolicitationUuid; + std::string serviceSolicitationUuidMask; + std::vector serviceData; + std::vector serviceDataMask; + uint16_t manufactureId = 0; + std::vector manufactureData; + std::vector manufactureDataMask; +}; + +struct ScanOptions { + double interval; + ScanDuty dutyMode; + MatchMode matchMode; + PhyType phyType; + ScanReportMode reportMode; +}; + +struct ScanResult { + std::string deviceId; + int8_t rssi; + std::vector data; + std::string deviceName; + bool connectable; +}; + +// AD结构定义 +struct AdStruct { + uint8_t length; // 类型+数据的总长度 + uint8_t type; // 类型标志 + std::vector data; // 数据内容 +}; + +struct BleParsedResult { + std::vector serviceUuids; // 服务UUID + std::vector serviceSolicitationUuids; // 服务请求UUID + std::vector>> serviceDatas; // 服务数据 + uint16_t manufactureId = 0; // 厂商ID + std::vector manufactureData; // 厂商数据 +}; + +struct ServiceData { + std::string serviceUuid; + std::vector serviceValue; +}; + +struct ManufactureData { + uint16_t manufactureId; + std::vector manufactureValue; +}; + +struct AdvertiseSetting { + double interval; + double txPower; + bool connectable; +}; + +struct AdvertiseData { + std::vector serviceUuids; + std::vector manufactureData; + std::vector serviceData; + bool includeDeviceName; +}; + + +struct AdvertisingParams { + AdvertiseSetting advertisingSettings; + AdvertiseData advertisingData; + AdvertiseData advertisingResponse; + uint32_t duration; +}; + +enum ProfileConnectionState { + STATE_DISCONNECTED = 0, + STATE_CONNECTING = 1, + STATE_CONNECTED = 2, + STATE_DISCONNECTING = 3, +}; + +enum GattWriteType { + WRITE = 1, + WRITE_NO_RESPONSE = 2, +}; + +enum AdvertisingState { + STARTED = 1, // advertising started. + ENABLED = 2, // advertising temporarily enabled. + DISABLED = 3, // advertising temporarily disabled. + STOPPED = 4, // advertising stopped. +}; + +struct AdvertisingStateChangeInfo { + uint32_t advertisingId; + AdvertisingState state; +}; + +struct BLEConnectionChangeState { + std::string deviceId; + ProfileConnectionState state; +}; + +struct GattService { + std::string serviceUuid; + bool isPrimary; + std::vector characteristics; + std::vector includeServices; + gattc_discovery_service_result_t service; + GattService() : isPrimary(true) {} +}; + +// 发现过程上下文,管理单个连接的服务发现状态 +struct DiscoveryContext { + uint16_t connId; + bool isInProgress; + JSIValue callback; + JSIValue thisVal; + uint16_t currentStartHandle; + std::vector pendingCharHandles; + uint32_t currentServiceIndex; + uint16_t currentDescHandle; + uint16_t expectedDescCount; // 预期描述符总数 + uint16_t receivedDescCount; // 已接收描述符计数 + std::vector discoveredServices; // 存储发现的服务数据 + bool isCompleted; // 标记发现是否完成 + bool isLastCharacteristic; // 新增:标记当前是否在处理最后一个特征值 + uint16_t lastServiceEndHandle; // 新增:记录最后一个服务的结束句柄 + + DiscoveryContext() : connId(0), isInProgress(false), currentStartHandle(0), + callback(JSI::CreateUndefined()), thisVal(JSI::CreateUndefined()), + currentDescHandle(0), expectedDescCount(0), receivedDescCount(0), + isCompleted(false), isLastCharacteristic(false), lastServiceEndHandle(0) {} +}; + +// 读写请求上下文,用于匹配请求和回调结果 +struct GattOperationContext { + enum Type { + READ_CHARACTERISTIC, + WRITE_CHARACTERISTIC, + READ_DESCRIPTOR, + WRITE_DESCRIPTOR + }; + + Type type; + uint16_t connId; // 新增:关联的连接ID + std::string serviceUuid; + std::string charUuid; + std::string descUuid; + uint16_t charHandle; + uint16_t descHandle; + JSIValue callback; + JSIValue thisVal; + GattWriteType writeType; // 仅用于写操作 +}; + +struct DiscoveryData { + uint16_t connId; + std::vector services; + std::vector characteristics; + std::vector descriptors; + JSIValue callback; + JSIValue thisVal; + + DiscoveryData(uint16_t id) : connId(id), + callback(JSI::CreateUndefined()), + thisVal(JSI::CreateUndefined()) {} + + ~DiscoveryData() { + JSI::ReleaseValueList(callback, thisVal); + } +}; + +struct DispatchAsync { + JSIValue err; + JSIValue result; + JSIValue callback; + JSIValue thisVal; + char* type; + uint16_t connId; + BLECharacteristic characteristicArgs; +}; +uint8_t Char2Num(int8_t c); +bool CompareHexStrings(const std::string& str1, const std::string& str2); +errcode_t DecodeUuidFromStr(const char *uuidStr, uint8_t *uuid, int32_t *cnt); +std::string FormatMacAddress(const uint8_t addr[BLE_ADDR_LEN]); +errcode_t ParseUuidList(const uint8_t *data, uint8_t len, uint8_t uuid_size, std::vector &uuid_list); +bool CheckUuidMatch(const std::string &uuid, const std::string &filter, const std::string &mask); +std::string GetUUidStr(const bt_uuid_t &uuid); +void GetAttValueData(uint8_t *dataVec, bool enable, bool indication); +errcode_t SetJsiBLECharacteristic(JSIValue jsiBleCharacteristic, uint16_t connId, + BLECharacteristic *bleCharacteristicArgs); +void DiscoveryWorkerThread(void* arg); +void GapBleEnableStackCbk(errcode_t status); +void GapBleDisableStackCbk(errcode_t status); +void GapBleSetAdvDataCbk(uint8_t adv_id, errcode_t status); +void GapBleSetAdvParamCbk(uint8_t advId, errcode_t status); +void GapBleSetScanParamCbk(errcode_t status); +void GapBleStartAdvCbk(uint8_t advId, adv_status_t status); +void GapBleStopAdvCbk(uint8_t advId, adv_status_t status); +void GattcIndicationCbk(uint8_t client_id, uint16_t connId, gattc_handle_value_t *data, + errcode_t status); +void GattcNotificationdCbk(uint8_t client_id, uint16_t connId, gattc_handle_value_t *data, errcode_t status); +void GattsMtuChangedCbk(uint8_t server_id, uint16_t conn_id, uint16_t mtu_size, errcode_t status); +void GattcMtuChangedCbk(uint8_t client_id, uint16_t conn_id, uint16_t mtu_size, errcode_t status); +void GattcWriteCfmCbk(uint8_t client_id, uint16_t conn_id, uint16_t handle, gatt_status_t status); +void GattcReadByUuidRespone(uint8_t client_id, uint16_t conn_id, + gattc_read_req_by_uuid_param_t *param, errcode_t status); +void GattcReadCfmCbk(uint8_t client_id, uint16_t conn_id, gattc_handle_value_t *read_result, gatt_status_t status); +void GattcDiscoveryDescResponse(uint8_t client_id, uint16_t conn_id, uint16_t character_handle, + errcode_t status); +void GattcDiscoveryDescCbk(uint8_t client_id, uint16_t conn_id, + gattc_discovery_descriptor_result_t* descriptor, errcode_t status); +void GattcDiscoveryCharResponse(uint8_t client_id, uint16_t conn_id, gattc_discovery_character_param_t *param, + errcode_t status); +void GattcDiscoveryCharCbk(uint8_t client_id, uint16_t conn_id, + gattc_discovery_character_result_t *character, errcode_t status); +void GattcDiscoverySvcResponse(uint8_t client_id, uint16_t conn_id, bt_uuid_t *uuid, errcode_t status); +void GattcDiscoverySvcCbk(uint8_t client_id, uint16_t conn_id, gattc_discovery_service_result_t *service, + errcode_t status); +void GapBleAuthCompeteCbk(uint16_t conn_id, const bd_addr_t *addr, errcode_t status, + const ble_auth_info_evt_t* evt); +void GapBleReadRemoteRssiCbk(uint16_t conn_id, int8_t rssi, errcode_t status); +void GapBleConnectParamUpdateCbk(uint16_t conn_id, errcode_t status, + const gap_ble_conn_param_update_t *param); +void GapBleTerminateAdvCbk(uint8_t adv_id, adv_status_t status); +void GapBlePariedCompleteCbk(uint16_t conn_id, const bd_addr_t *addr, errcode_t status); +void GapBleConnStateChangeCbk(uint16_t conn_id, bd_addr_t *addr, gap_ble_conn_state_t conn_state, + gap_ble_pair_state_t pair_state, gap_ble_disc_reason_t disc_reason); +void GapBleScanResultCbk(gap_scan_result_data_t *scan_result_data); +void WorkerThreadFunc(void *argument); +void GetCharacteristic(const JSIValue *args, BLECharacteristic &bleCharacteristicArgs, bool isRead); +void GetProperty(const JSIValue jsiCharacteristic, BLECharacteristic &bleCharacteristicArgs); +bool ValidateWriteParameters(uint8_t argsSize, const JSIValue* args); +// 解析参数函数 +errcode_t ParseWriteArguments(const JSIValue* args, BLECharacteristic& bleCharacteristicArgs, + GattWriteType& writeType); +void CleanupDiscoveryWorker(); +void InitDiscoveryWorker(); +void GetProperties(uint8_t properties, GattProperties &props); +void CreateGattServices(JSIValue *rltArray, const std::vector &services); +JSIValue ConstructJSIResult(const gattc_handle_value_t *read_result, const BLECharacteristic *charFound, + const BLEDescriptor *descFound, const std::string &serviceUuid, const std::string &charUuid, + const std::string &descUuid); +std::vector AssembleGattServicesThreaded(std::shared_ptr data); +std::string FormatDeviceName(gap_scan_result_data_t *scan_result_data); +BleParsedResult ParseMixedAdvertisingData(const uint8_t *data, uint8_t len); +bool CheckBasicDeviceMatch(const BleScanFilter& filter, const ScanResult& scanResultTmp); +bool CheckUuidMatch(const BleScanFilter& filter, const BleParsedResult& parsedResult); +bool CheckDataMatch(const BleScanFilter& filter, const BleParsedResult& parsedResult); +bool ReadMatchFilter(const BleScanFilter& filter, const BleParsedResult& parsedResult, + const ScanResult& scanResultTmp); +void UpdateScanResult(const ScanResult &scanResultTmp, std::vector::iterator existingIt, + std::vector &scanResultList); +} // namespace ACELite +} // namespace OHOS +#endif // BLE_CLIENT_MODULE_COMMON_H \ No newline at end of file diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/calendarManager/calendar_manager.cpp b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/calendarManager/calendar_manager.cpp new file mode 100644 index 000000000..9ade0c274 --- /dev/null +++ b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/calendarManager/calendar_manager.cpp @@ -0,0 +1,988 @@ +/** + * Copyright (c) CompanyNameMagicTag 2025-2025. All rights reserved. + * Description: appmanger_module module. + * Author: CompanyName + * Create: 2025-09-04 + */ +#include +#include +#include +#include +#include +#include +#include +#include "ace_mem_base.h" +#include "memory_heap.h" +#include "cJSON.h" +#include "ace_log.h" +#include "calendar_manager.h" + +#define FILE_SIZE_MAX 0xF00000 +namespace OHOS { +namespace ACELite { +// Error message mapping table +static const char *g_errorStrings[CALENDAR_ERROR_MAX] = {"Operation successful", + "File does not exist", + "File open failed", + "JSON parsing error", + "User does not exist", + "Event does not exist", + "Event ID already exists", + "User information does not match", + "Memory allocation failed", + "Invalid parameter", + "File write failed", + "Failed to allocate event ID"}; + +// Get error message string +const char *GetCalendarErrorString(CalendarError error) +{ + return (error >= 0 && error < CALENDAR_ERROR_MAX) ? g_errorStrings[error] : "Unknown error"; +} + +// Internal utility: Read JSON file content +static char *ReadJsonFile(const char *filename, CalendarError *error) +{ + if (!filename || !error) { + if (error) { + *error = CALENDAR_INVALID_PARAMETER; + } + return nullptr; + } + + FILE *file = fopen(filename, "rb"); + if (!file) { + *error = (errno == ENOENT) ? CALENDAR_FILE_NOT_FOUND : CALENDAR_FILE_OPEN_FAILED; + return nullptr; + } + + // Get file size + fseek(file, 0, SEEK_END); + long fileLen = ftell(file); + fseek(file, 0, SEEK_SET); + if (fileLen > FILE_SIZE_MAX) { + return nullptr; + } + // Allocate memory (+1 for terminator) + char *data = (char *)malloc(fileLen + 1); + if (!data) { + fclose(file); + *error = CALENDAR_MEMORY_ALLOC_FAILED; + return nullptr; + } + + // Read file + size_t readLen = fread(data, 1, fileLen, file); + fclose(file); + + if (readLen != fileLen) { + free(data); + *error = CALENDAR_FILE_OPEN_FAILED; + return nullptr; + } + data[fileLen] = '\0'; + *error = CALENDAR_SUCCESS; + return data; +} + +// Internal utility: Write to JSON file +static CalendarError writeJsonFile(const char *filename, cJSON *root) +{ + if (!filename || !root) { + return CALENDAR_INVALID_PARAMETER; + } + + char *jsonStr = cJSON_Print(root); + if (!jsonStr) { + return CALENDAR_MEMORY_ALLOC_FAILED; + } + + int fd = open(filename, O_CREAT | O_RDWR | O_TRUNC, S_IRUSR | S_IWUSR); + if (fd == -1) { + free(jsonStr); + return CALENDAR_FILE_OPEN_FAILED; + } + + size_t strLen = strlen(jsonStr); + ssize_t writeLen = write(fd, jsonStr, strLen); + close(fd); // Close file descriptor + free(jsonStr); + + return (writeLen == strLen) ? CALENDAR_SUCCESS : CALENDAR_FILE_WRITE_FAILED; +} + +// Internal utility: Get or create JSON root object +static cJSON *getOrCreateRoot(const char *filename, CalendarError *error) +{ + if (!filename || !error) { + *error = CALENDAR_INVALID_PARAMETER; + return nullptr; + } + + char *jsonData = ReadJsonFile(filename, error); + cJSON *root = nullptr; + + // Create empty root object when file doesn't exist + if (*error == CALENDAR_FILE_NOT_FOUND) { + root = cJSON_CreateObject(); + *error = (root) ? CALENDAR_SUCCESS : CALENDAR_MEMORY_ALLOC_FAILED; + return root; + } + + // Return directly if read failed + if (*error != CALENDAR_SUCCESS) { + return nullptr; + } + + // Parse JSON data + root = cJSON_Parse(jsonData); + free(jsonData); + jsonData = nullptr; + if (!root) { + *error = CALENDAR_JSON_PARSE_ERROR; + } else { + *error = CALENDAR_SUCCESS; + } + + return root; +} + +// Internal utility: Find user JSON object +static cJSON *findUserObject(cJSON *root, const char *userName) +{ + if (!root || !userName || !cJSON_IsObject(root)) { + return nullptr; + } + return cJSON_GetObjectItemCaseSensitive(root, userName); +} + +// Internal utility: Find event index in array (-1 means not exists) +static int findEventIndex(cJSON *eventsArray, int eventId) +{ + if (!eventsArray || !cJSON_IsArray(eventsArray)) { + HILOG_ERROR(HILOG_MODULE_ACE, "Invalid parameter"); + return -1; + } + + int index = 0; + cJSON *event = nullptr; + cJSON_ArrayForEach(event, eventsArray) + { + cJSON *idItem = cJSON_GetObjectItemCaseSensitive(event, "id"); + if (idItem && cJSON_IsNumber(idItem) && idItem->valueint == eventId) { + return index; + } + index++; + } + return -1; +} + +// Internal utility: Create cJSON object from CalendarEvent struct +static cJSON *createEventJson(const CalendarEvent *event) +{ + if (!event) { + return nullptr; + } + + cJSON *eventJson = cJSON_CreateObject(); + if (!eventJson) { + return nullptr; + } + cJSON_AddNumberToObject(eventJson, "id", event->id); + cJSON_AddNumberToObject(eventJson, "type", event->type); + cJSON_AddNumberToObject(eventJson, "startTime", event->startTime); + cJSON_AddNumberToObject(eventJson, "endTime", event->endTime); + cJSON_AddStringToObject(eventJson, "bundlename", event->bundlename); + cJSON_AddBoolToObject(eventJson, "isAllDay", event->isAllDay); + cJSON_AddBoolToObject(eventJson, "hasReminder", event->hasReminder); + cJSON_AddBoolToObject(eventJson, "isRepeat", event->isRepeat); + cJSON_AddNumberToObject(eventJson, "recurrenceFrequency", event->recurrenceFrequency); + cJSON_AddStringToObject(eventJson, "eventContent", event->eventContent); + return eventJson; +} + +// Internal utility: Create user account JSON object +static cJSON *createUserAccountJson(const char *name, const char *type, const char *displayName) +{ + if (!name || !type || !displayName) { + return nullptr; + } + + cJSON *account = cJSON_CreateObject(); + if (!account) { + return nullptr; + } + + // Create CalendarAccount object + cJSON *calendarAccount = cJSON_CreateObject(); + if (!calendarAccount) { + cJSON_Delete(account); + return nullptr; + } + cJSON_AddStringToObject(calendarAccount, "name", name); + cJSON_AddStringToObject(calendarAccount, "type", type); + cJSON_AddStringToObject(calendarAccount, "displayName", displayName); + cJSON_AddItemToObject(account, "CalendarAccount", calendarAccount); + + // Create empty events array + cJSON *events = cJSON_CreateArray(); + if (!events) { + cJSON_Delete(account); + return nullptr; + } + cJSON_AddItemToObject(account, "events", events); + + return account; +} + +// 1. Create or append user +const char *CreateOrAppendUser( + const char *filename, const char *name, const char *type, const char *displayName, CalendarError *error) +{ + if (!filename || !name || !type || !displayName || !error) { + if (error) { + *error = CALENDAR_INVALID_PARAMETER; + } + return nullptr; + } + + cJSON *root = getOrCreateRoot(filename, error); + if (!root || *error != CALENDAR_SUCCESS) { + return nullptr; + } + + cJSON *user = findUserObject(root, name); + if (user) { + // User already exists, check if information matches + cJSON *account = cJSON_GetObjectItemCaseSensitive(user, "CalendarAccount"); + if (!account) { + cJSON_Delete(root); + *error = CALENDAR_JSON_PARSE_ERROR; + return nullptr; + } + + cJSON *existingtype = cJSON_GetObjectItemCaseSensitive(account, "type"); + cJSON *existingDisplayName = cJSON_GetObjectItemCaseSensitive(account, "displayName"); + + if (!existingtype || !existingDisplayName || !cJSON_IsString(existingtype) || + !cJSON_IsString(existingDisplayName) || strcmp(existingtype->valuestring, type) != 0 || + strcmp(existingDisplayName->valuestring, displayName) != 0) { + cJSON_Delete(root); + *error = CALENDAR_USER_INFO_MISMATCH; + return nullptr; + } + + // Information matches, return username + cJSON_Delete(root); + *error = CALENDAR_SUCCESS; + return name; + } + + // Create new user + cJSON *newUser = createUserAccountJson(name, type, displayName); + if (!newUser) { + cJSON_Delete(root); + *error = CALENDAR_MEMORY_ALLOC_FAILED; + return nullptr; + } + + cJSON_AddItemToObject(root, name, newUser); + *error = writeJsonFile(filename, root); + cJSON_Delete(root); + + return (*error == CALENDAR_SUCCESS) ? name : nullptr; +} + +// 2. Append single event (using CalendarEvent struct for parameters) +CalendarError AppendEvent(const char *filename, const char *name, const CalendarEvent *event) +{ + if (!filename || !name || !event) { + return CALENDAR_INVALID_PARAMETER; + } + + CalendarError error = CALENDAR_INVALID_PARAMETER; + cJSON *root = getOrCreateRoot(filename, &error); + if (!root || error != CALENDAR_SUCCESS) { + return error; + } + + cJSON *user = findUserObject(root, name); + if (!user) { + cJSON_Delete(root); + return CALENDAR_USER_NOT_FOUND; + } + + cJSON *events = cJSON_GetObjectItemCaseSensitive(user, "events"); + if (!events || !cJSON_IsArray(events)) { + events = cJSON_CreateArray(); + if (!events) { + cJSON_Delete(root); + return CALENDAR_MEMORY_ALLOC_FAILED; + } + cJSON_AddItemToObject(user, "events", events); + } + + // Check if event ID already exists + if (findEventIndex(events, event->id) != -1) { + cJSON_Delete(root); + return CALENDAR_EVENT_ID_EXISTS; + } + + // Create and add new event + cJSON *eventJson = createEventJson(event); + if (!eventJson) { + cJSON_Delete(root); + return CALENDAR_MEMORY_ALLOC_FAILED; + } + + cJSON_AddItemToArray(events, eventJson); + error = writeJsonFile(filename, root); + cJSON_Delete(root); + + return error; +} + +// 3. Append multiple events +CalendarError AppendEvents(const char *filename, const char *name, const CalendarEventArray *eventArray) +{ + if (!filename || !name || !eventArray || !eventArray->events || eventArray->count == 0) { + HILOG_ERROR(HILOG_MODULE_ACE, "AppendEvents Invalid parameter"); + return CALENDAR_INVALID_PARAMETER; + } + + CalendarError error = CALENDAR_INVALID_PARAMETER; + cJSON *root = getOrCreateRoot(filename, &error); + if (!root || error != CALENDAR_SUCCESS) { + return error; + } + + cJSON *user = findUserObject(root, name); + if (!user) { + cJSON_Delete(root); + return CALENDAR_USER_NOT_FOUND; + } + + cJSON *eventsArray = cJSON_GetObjectItemCaseSensitive(user, "events"); + if (!eventsArray || !cJSON_IsArray(eventsArray)) { + eventsArray = cJSON_CreateArray(); + if (!eventsArray) { + cJSON_Delete(root); + return CALENDAR_MEMORY_ALLOC_FAILED; + } + cJSON_AddItemToObject(user, "events", eventsArray); + } + + // Check if all event IDs already exist + for (size_t i = 0; i < eventArray->count; i++) { + if (findEventIndex(eventsArray, eventArray->events[i].id) != -1) { + cJSON_Delete(root); + return CALENDAR_EVENT_ID_EXISTS; + } + } + + // Add events in batch + for (size_t i = 0; i < eventArray->count; i++) { + cJSON *eventJson = createEventJson(&eventArray->events[i]); + if (!eventJson) { + cJSON_Delete(root); + return CALENDAR_MEMORY_ALLOC_FAILED; + } + cJSON_AddItemToArray(eventsArray, eventJson); + } + + error = writeJsonFile(filename, root); + cJSON_Delete(root); + + return error; +} + +// 4. Get user's specific event +CalendarEvent *CalendarGetEvent(const char *filename, const char *name, int eventId, CalendarError *error) +{ + if (!filename || !name || !error) { + *error = CALENDAR_INVALID_PARAMETER; + HILOG_ERROR(HILOG_MODULE_ACE, "AppendEvents Invalid parameter"); + return nullptr; + } + + char *jsonData = ReadJsonFile(filename, error); + if (!jsonData || *error != CALENDAR_SUCCESS) { + return nullptr; + } + + cJSON *root = cJSON_Parse(jsonData); + free(jsonData); + jsonData = nullptr; + if (!root) { + *error = CALENDAR_JSON_PARSE_ERROR; + return nullptr; + } + + cJSON *user = findUserObject(root, name); + if (!user) { + cJSON_Delete(root); + *error = CALENDAR_USER_NOT_FOUND; + return nullptr; + } + + cJSON *events = cJSON_GetObjectItemCaseSensitive(user, "events"); + if (!events || !cJSON_IsArray(events)) { + cJSON_Delete(root); + *error = CALENDAR_EVENT_NOT_FOUND; + return nullptr; + } + + int index = findEventIndex(events, eventId); + if (index == -1) { + cJSON_Delete(root); + *error = CALENDAR_EVENT_NOT_FOUND; + return nullptr; + } + + // Extract event information + cJSON *eventObj = cJSON_GetArrayItem(events, index); + CalendarEvent *event = (CalendarEvent *)malloc(sizeof(CalendarEvent)); + if (!event) { + cJSON_Delete(root); + *error = CALENDAR_MEMORY_ALLOC_FAILED; + return nullptr; + } + + cJSON *item = nullptr; + + item = cJSON_GetObjectItemCaseSensitive(eventObj, "id"); + event->id = (item && cJSON_IsNumber(item)) ? item->valueint : -1; + + item = cJSON_GetObjectItemCaseSensitive(eventObj, "type"); + event->type = (item && cJSON_IsNumber(item)) ? item->valueint : -1; + + item = cJSON_GetObjectItemCaseSensitive(eventObj, "startTime"); + event->startTime = (item && cJSON_IsNumber(item)) ? item->valuedouble : -1; + + item = cJSON_GetObjectItemCaseSensitive(eventObj, "endTime"); + event->endTime = (item && cJSON_IsNumber(item)) ? item->valuedouble : -1; + + item = cJSON_GetObjectItemCaseSensitive(eventObj, "bundlename"); + if (item && cJSON_IsString(item)) { + if (strcpy_s(event->bundlename, sizeof(event->bundlename), item->valuestring) != EOK) { + cJSON_Delete(root); + *error = CALENDAR_MEMORY_ALLOC_FAILED; + return nullptr; + } + } + + item = cJSON_GetObjectItemCaseSensitive(eventObj, "isAllDay"); + event->isAllDay = (item && cJSON_IsBool(item)) ? item->valueint : false; + + item = cJSON_GetObjectItemCaseSensitive(eventObj, "hasReminder"); + event->hasReminder = (item && cJSON_IsBool(item)) ? item->valueint : false; + + item = cJSON_GetObjectItemCaseSensitive(eventObj, "isRepeat"); + event->isRepeat = (item && cJSON_IsBool(item)) ? item->valueint : false; + + item = cJSON_GetObjectItemCaseSensitive(eventObj, "recurrenceFrequency"); + event->recurrenceFrequency = (item && cJSON_IsNumber(item)) ? item->valuedouble : -1; + + item = cJSON_GetObjectItemCaseSensitive(eventObj, "eventContent"); + if (item && cJSON_IsString(item)) { + if (strcpy_s(event->eventContent, sizeof(event->eventContent), item->valuestring) != EOK) { + cJSON_Delete(root); + *error = CALENDAR_MEMORY_ALLOC_FAILED; + return nullptr; + } + } + + cJSON_Delete(root); + root = nullptr; + *error = CALENDAR_SUCCESS; + return event; +} + +// Batch get all events of a user +CalendarEventArray *CalendarGetEvents(const char *filename, const char *name, CalendarError *error) +{ + // Parameter validation + if (!filename || !name || !error) { + HILOG_ERROR(HILOG_MODULE_ACE, "AppendEvents Invalid parameter"); + *error = CALENDAR_INVALID_PARAMETER; + return nullptr; + } + *error = CALENDAR_SUCCESS; + + // Read JSON file content + char *jsonData = ReadJsonFile(filename, error); + if (!jsonData || *error != CALENDAR_SUCCESS) { + return nullptr; + } + + // Parse JSON + cJSON *root = cJSON_Parse(jsonData); + free(jsonData); // Free JSON string memory + jsonData = nullptr; + if (!root) { + *error = CALENDAR_JSON_PARSE_ERROR; + return nullptr; + } + + // Find user object + cJSON *user = findUserObject(root, name); + if (!user) { + cJSON_Delete(root); + *error = CALENDAR_USER_NOT_FOUND; + return nullptr; + } + + // Get events array + cJSON *events = cJSON_GetObjectItemCaseSensitive(user, "events"); + if (!events || !cJSON_IsArray(events)) { + cJSON_Delete(root); + *error = CALENDAR_EVENT_NOT_FOUND; + return nullptr; + } + + // Get event count + int eventCount = cJSON_GetArraySize(events); + if (eventCount <= 0) { + cJSON_Delete(root); + *error = CALENDAR_EVENT_NOT_FOUND; + return nullptr; + } + + // Allocate memory for event array + CalendarEvent *eventList = (CalendarEvent *)malloc(sizeof(CalendarEvent) * eventCount); + if (!eventList) { + cJSON_Delete(root); + *error = CALENDAR_MEMORY_ALLOC_FAILED; + return nullptr; + } + + // Allocate memory for event array structure + CalendarEventArray *eventArray = (CalendarEventArray *)malloc(sizeof(CalendarEventArray)); + if (!eventArray) { + free(eventList); + cJSON_Delete(root); + *error = CALENDAR_MEMORY_ALLOC_FAILED; + return nullptr; + } + + // Parse events one by one + cJSON *eventObj = nullptr; + int i = 0; + cJSON_ArrayForEach(eventObj, events) + { + cJSON *item = nullptr; + + // Parse event ID + item = cJSON_GetObjectItemCaseSensitive(eventObj, "id"); + eventList[i].id = (item && cJSON_IsNumber(item)) ? item->valueint : -1; + + // Parse event type + item = cJSON_GetObjectItemCaseSensitive(eventObj, "type"); + eventList[i].type = (item && cJSON_IsNumber(item)) ? item->valueint : -1; + + // Parse start time + item = cJSON_GetObjectItemCaseSensitive(eventObj, "startTime"); + eventList[i].startTime = (item && cJSON_IsNumber(item)) ? (int64_t)item->valuedouble : -1; + + // Parse end time + item = cJSON_GetObjectItemCaseSensitive(eventObj, "endTime"); + eventList[i].endTime = (item && cJSON_IsNumber(item)) ? (int64_t)item->valuedouble : -1; + + // Parse bundlename + item = cJSON_GetObjectItemCaseSensitive(eventObj, "bundlename"); + if (item && cJSON_IsString(item)) { + if (strcpy_s(eventList[i].bundlename, sizeof(eventList[i].bundlename), item->valuestring) != 0) { + HILOG_ERROR(HILOG_MODULE_ACE, "strcpy_s faild"); + } + } else { + memset_s(eventList[i].bundlename, sizeof(eventList[i].bundlename), 0, sizeof(eventList[i].bundlename)); + } + + // Parse isAllDay + item = cJSON_GetObjectItemCaseSensitive(eventObj, "isAllDay"); + eventList[i].isAllDay = (item && cJSON_IsBool(item)) ? item->valueint : false; + + // Parse hasReminder + item = cJSON_GetObjectItemCaseSensitive(eventObj, "hasReminder"); + eventList[i].hasReminder = (item && cJSON_IsBool(item)) ? item->valueint : false; + + // Parse isRepeat + item = cJSON_GetObjectItemCaseSensitive(eventObj, "isRepeat"); + eventList[i].isRepeat = (item && cJSON_IsBool(item)) ? (int64_t)item->valuedouble : false; + + // Parse recurrenceFrequency + item = cJSON_GetObjectItemCaseSensitive(eventObj, "recurrenceFrequency"); + eventList[i].recurrenceFrequency = (item && cJSON_IsNumber(item)) ? (int64_t)item->valuedouble : -1; + + // Parse eventContent + item = cJSON_GetObjectItemCaseSensitive(eventObj, "eventContent"); + if (item && cJSON_IsString(item)) { + if(strcpy_s((char *)eventList[i].eventContent, sizeof(eventList[i].eventContent), item->valuestring) != 0) { + HILOG_ERROR(HILOG_MODULE_ACE, "strcpy_s faild"); + } + } else { + memset_s( + eventList[i].eventContent, sizeof(eventList[i].eventContent), 0, sizeof(eventList[i].eventContent)); + } + i++; + } + + // Fill event array structure + eventArray->events = eventList; + eventArray->count = eventCount; + + // Clean up resources + cJSON_Delete(root); + + *error = CALENDAR_SUCCESS; + return eventArray; +} + +// 5. Delete single event +CalendarError CalendarDeleteEvent(const char *filename, const char *name, int eventId) +{ + if (!filename || !name) { + return CALENDAR_INVALID_PARAMETER; + } + + CalendarError error = CALENDAR_INVALID_PARAMETER; + cJSON *root = getOrCreateRoot(filename, &error); + if (!root || error != CALENDAR_SUCCESS) { + return error; + } + + cJSON *user = findUserObject(root, name); + if (!user) { + cJSON_Delete(root); + return CALENDAR_USER_NOT_FOUND; + } + + cJSON *events = cJSON_GetObjectItemCaseSensitive(user, "events"); + if (!events || !cJSON_IsArray(events)) { + cJSON_Delete(root); + return CALENDAR_EVENT_NOT_FOUND; + } + + int index = findEventIndex(events, eventId); + if (index == -1) { + cJSON_Delete(root); + return CALENDAR_EVENT_NOT_FOUND; + } + + // Delete event + cJSON_DeleteItemFromArray(events, index); + error = writeJsonFile(filename, root); + cJSON_Delete(root); + + return error; +} + +// 6. Batch delete events +CalendarError CalendarDeleteEvents(const char *filename, const char *name, const int *eventIds, size_t idCount) +{ + if (!filename || !name || !eventIds || idCount == 0) { + return CALENDAR_INVALID_PARAMETER; + } + + CalendarError error = CALENDAR_INVALID_PARAMETER; + cJSON *root = getOrCreateRoot(filename, &error); + if (!root || error != CALENDAR_SUCCESS) { + return error; + } + + cJSON *user = findUserObject(root, name); + if (!user) { + cJSON_Delete(root); + return CALENDAR_USER_NOT_FOUND; + } + + cJSON *events = cJSON_GetObjectItemCaseSensitive(user, "events"); + if (!events || !cJSON_IsArray(events)) { + cJSON_Delete(root); + return CALENDAR_EVENT_NOT_FOUND; + } + + // Mark indices of events to delete (sorted from largest to smallest to avoid index changes) + int *indices = (int *)malloc(sizeof(int) * idCount); + if (!indices) { + cJSON_Delete(root); + return CALENDAR_MEMORY_ALLOC_FAILED; + } + + size_t foundCount = 0; + for (size_t i = 0; i < idCount; i++) { + int index = findEventIndex(events, eventIds[i]); + if (index != -1) { + indices[foundCount++] = index; + } + } + + // Delete from largest index to smallest to avoid index shifting issues + for (int i = foundCount - 1; i >= 0; i--) { + cJSON_DeleteItemFromArray(events, indices[i]); + } + + free(indices); + error = writeJsonFile(filename, root); + cJSON_Delete(root); + + return error; +} + +// 7. Modify/add event (using CalendarEvent struct for parameters) +CalendarError CalendarUpdateEvent(const char *filename, const char *name, const CalendarEvent *event) +{ + if (!filename || !name || !event) { + return CALENDAR_INVALID_PARAMETER; + } + + CalendarError error = CALENDAR_INVALID_PARAMETER; + cJSON *root = getOrCreateRoot(filename, &error); + if (!root || error != CALENDAR_SUCCESS) { + return error; + } + + cJSON *user = findUserObject(root, name); + if (!user) { + cJSON_Delete(root); + return CALENDAR_USER_NOT_FOUND; + } + + cJSON *events = cJSON_GetObjectItemCaseSensitive(user, "events"); + if (!events || !cJSON_IsArray(events)) { + events = cJSON_CreateArray(); + if (!events) { + cJSON_Delete(root); + return CALENDAR_MEMORY_ALLOC_FAILED; + } + cJSON_AddItemToObject(user, "events", events); + } + + // Find if event exists + int index = findEventIndex(events, event->id); + if (index != -1) { + // Event exists, delete old event first + cJSON_DeleteItemFromArray(events, index); + // Add new event (whether update or add) + cJSON *eventJson = createEventJson(event); + if (!eventJson) { + cJSON_Delete(root); + return CALENDAR_MEMORY_ALLOC_FAILED; + } + cJSON_AddItemToArray(events, eventJson); + error = writeJsonFile(filename, root); + } else { + error = CALENDAR_EVENT_NOT_FOUND; + } + + cJSON_Delete(root); + return error; +} + +CalendarError CalendarUpdateEvents(const char *filename, const char *name, const CalendarEventArray *events) +{ + // Parameter validity check + if (!filename || !name || !events || !events->events || events->count == 0) { + return CALENDAR_INVALID_PARAMETER; + } + + CalendarError error = CALENDAR_INVALID_PARAMETER; + cJSON *root = getOrCreateRoot(filename, &error); + if (!root || error != CALENDAR_SUCCESS) { + return error; + } + + // Find user object + cJSON *user = findUserObject(root, name); + if (!user) { + cJSON_Delete(root); + return CALENDAR_USER_NOT_FOUND; + } + + // Get or create events array + cJSON *eventsArray = cJSON_GetObjectItemCaseSensitive(user, "events"); + if (!eventsArray || !cJSON_IsArray(eventsArray)) { + eventsArray = cJSON_CreateArray(); + if (!eventsArray) { + cJSON_Delete(root); + return CALENDAR_MEMORY_ALLOC_FAILED; + } + cJSON_AddItemToObject(user, "events", eventsArray); + } + + // Record whether any events were successfully updated + bool hasUpdated = false; + + // Iterate through all events to update + for (size_t i = 0; i < events->count; i++) { + const CalendarEvent *event = &events->events[i]; + + // Find event position in JSON array + int index = findEventIndex(eventsArray, event->id); + if (index != -1) { + // Found event, delete old version first + cJSON_DeleteItemFromArray(eventsArray, index); + + // Create new event JSON object + cJSON *eventJson = createEventJson(event); + if (!eventJson) { + cJSON_Delete(root); + return CALENDAR_MEMORY_ALLOC_FAILED; + } + + // Add updated event + cJSON_AddItemToArray(eventsArray, eventJson); + hasUpdated = true; + } + } + + // If any events were updated, write to file + if (hasUpdated) { + error = writeJsonFile(filename, root); + } else { + // No events found to update + error = CALENDAR_EVENT_NOT_FOUND; + } + + // Clean up resources + cJSON_Delete(root); + return error; +} + +// 8. Get user information +CalendarAccount *GetUserInfo(const char *filename, const char *name, CalendarError *error) +{ + if (!filename || !name || !error) { + *error = CALENDAR_INVALID_PARAMETER; + return nullptr; + } + + char *jsonData = ReadJsonFile(filename, error); + if (!jsonData || *error != CALENDAR_SUCCESS) { + return nullptr; + } + + cJSON *root = cJSON_Parse(jsonData); + free(jsonData); + jsonData = nullptr; + if (!root) { + *error = CALENDAR_JSON_PARSE_ERROR; + return nullptr; + } + + cJSON *user = findUserObject(root, name); + if (!user) { + cJSON_Delete(root); + *error = CALENDAR_USER_NOT_FOUND; + return nullptr; + } + + cJSON *accountObj = cJSON_GetObjectItemCaseSensitive(user, "CalendarAccount"); + if (!accountObj) { + cJSON_Delete(root); + *error = CALENDAR_JSON_PARSE_ERROR; + return nullptr; + } + + // Allocate memory for account information structure + CalendarAccount *account = (CalendarAccount *)malloc(sizeof(CalendarAccount)); + if (!account) { + cJSON_Delete(root); + *error = CALENDAR_MEMORY_ALLOC_FAILED; + return nullptr; + } + memset_s(account, sizeof(CalendarAccount), 0, sizeof(CalendarAccount)); + + // Extract account information + cJSON *item = cJSON_GetObjectItemCaseSensitive(accountObj, "name"); + if (item && cJSON_IsString(item)) { + account->name = (char *)ace_malloc(strlen(item->valuestring) + 1); + if (!account->name) { + free(account); + cJSON_Delete(root); + *error = CALENDAR_MEMORY_ALLOC_FAILED; + return nullptr; + } + memset_s(account->name, (strlen(item->valuestring) + 1), 0, (strlen(item->valuestring) + 1)); + if(memcpy_s(account->name, + strlen(item->valuestring) + 1, item->valuestring, strlen(item->valuestring) + 1) != EOK) { + HILOG_ERROR(HILOG_MODULE_ACE, "memcpy_s faild"); + } + } + + item = cJSON_GetObjectItemCaseSensitive(accountObj, "type"); + if (item && cJSON_IsString(item)) { + account->type = (char *)ace_malloc(strlen(item->valuestring) + 1); + if (!account->type) { + ace_free(account->name); + free(account); + cJSON_Delete(root); + *error = CALENDAR_MEMORY_ALLOC_FAILED; + return nullptr; + } + memset_s(account->type, (strlen(item->valuestring) + 1), 0, (strlen(item->valuestring) + 1)); + if(memcpy_s(account->type, strlen(item->valuestring) + 1, item->valuestring, strlen(item->valuestring) + 1) != EOK) { + HILOG_ERROR(HILOG_MODULE_ACE, "memcpy_s faild"); + } + } + + item = cJSON_GetObjectItemCaseSensitive(accountObj, "displayName"); + if (item && cJSON_IsString(item)) { + account->displayName = (char *)ace_malloc(strlen(item->valuestring) + 1); + if (!account->displayName) { + ace_free(account->name); + ace_free(account->type); + free(account); + cJSON_Delete(root); + *error = CALENDAR_MEMORY_ALLOC_FAILED; + return nullptr; + } + memset_s(account->displayName, (strlen(item->valuestring) + 1), 0, (strlen(item->valuestring) + 1)); + if(memcpy_s(account->displayName, + strlen(item->valuestring) + 1, item->valuestring, strlen(item->valuestring) + 1) != EOK) { + HILOG_ERROR(HILOG_MODULE_ACE, "memcpy_s faild"); + } + } + + cJSON_Delete(root); + *error = CALENDAR_SUCCESS; + return account; +} + +// Free event memory +void FreeCalendarEvent(CalendarEvent *event) +{ + if (event) { + free(event); + } +} + +// Helper function to free CalendarEventArray resources +void FreeCalendarEventArray(CalendarEventArray *array) +{ + if (array) { + free(static_cast(array->events)); // Free event array + free(array); // Free array structure + } +} + +// Convert timestamp to datetime string +// Return 0 on success, -1 on failure +int TimestampToDatetime(time_t timestamp, char *datetimeStr, size_t maxLen) +{ + if (datetimeStr == nullptr || maxLen < 20) { // At least 20 bytes needed for "YYYY-MM-DD HH:MM:SS" + return -1; + } + + struct tm *tminfo = localtime(×tamp); // Convert to local time + if (tminfo == nullptr) { + return -1; + } + + // Format datetime string + strftime(datetimeStr, maxLen, "%Y-%m-%d %H:%M:%S", tminfo); + return 0; +} + +} // namespace ACELite +} // namespace OHOS diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/calendarManager/calendar_manager.h b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/calendarManager/calendar_manager.h new file mode 100644 index 000000000..313290981 --- /dev/null +++ b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/calendarManager/calendar_manager.h @@ -0,0 +1,105 @@ +/** + * Copyright (c) CompanyNameMagicTag 2025-2025. All rights reserved. + * Description: appmanger_module module. + * Author: CompanyName + * Create: 2025-09-04 + */ +#ifndef CALENDAR_MANAGER_H +#define CALENDAR_MANAGER_H + +#include +#include +#include + +namespace OHOS { +namespace ACELite { +// Error code definitions +typedef enum { + CALENDAR_SUCCESS = 0, + CALENDAR_FILE_NOT_FOUND, + CALENDAR_FILE_OPEN_FAILED, + CALENDAR_JSON_PARSE_ERROR, + CALENDAR_USER_NOT_FOUND, + CALENDAR_EVENT_NOT_FOUND, + CALENDAR_EVENT_ID_EXISTS, + CALENDAR_USER_INFO_MISMATCH, + CALENDAR_MEMORY_ALLOC_FAILED, + CALENDAR_INVALID_PARAMETER, + CALENDAR_FILE_WRITE_FAILED, + CALENDAR_EVENT_ID_ALLOC_FAILED, + CALENDAR_ERROR_MAX +} CalendarError; + +// Calendar event structure +typedef struct { + int id; + int type; + int64_t startTime; + int64_t endTime; + bool isAllDay; + bool hasReminder; + bool isRepeat; + int64_t recurrenceFrequency; + char bundlename[64]; // String passed from outside, internal code does not handle its release + char eventContent[256]; +} CalendarEvent; + +// Batch event array structure +typedef struct { + CalendarEvent *events; // Pointer to event array + size_t count; // Number of events +} CalendarEventArray; + +// Calendar account structure +typedef struct { + char *name; + char *type; + char *displayName; +} CalendarAccount; + +// Error message retrieval interface +const char *GetCalendarErrorString(CalendarError error); + +// 1. Create or append user +// Return value: Returns username string on success, nullptr on failure +const char *CreateOrAppendUser( + const char *filename, const char *name, const char *type, const char *displayName, CalendarError *error); + +// 2. Append single event (using CalendarEvent struct for parameters) +CalendarError AppendEvent(const char *filename, const char *name, const CalendarEvent *event); + +// 3. Append multiple events +CalendarError AppendEvents(const char *filename, const char *name, const CalendarEventArray *eventArray); + +// 4. Get user's specific event +// Return value: Returns dynamically allocated CalendarEvent on success, +// needs to be released by calling FreeCalendarEvent +CalendarEvent *CalendarGetEvent(const char *filename, const char *name, int eventId, CalendarError *error); + +// Batch get all events of a user +CalendarEventArray *CalendarGetEvents(const char *filename, const char *name, CalendarError *error); + +// 5. Delete single event +CalendarError CalendarDeleteEvent(const char *filename, const char *name, int eventId); + +// 6. Batch delete events +CalendarError CalendarDeleteEvents(const char *filename, const char *name, const int *eventIds, size_t idCount); + +// 7. Modify/add event (using CalendarEvent struct for parameters) +CalendarError CalendarUpdateEvent(const char *filename, const char *name, const CalendarEvent *event); + +CalendarError CalendarUpdateEvents(const char *filename, const char *name, const CalendarEventArray *events); + +// 8. Get user information +// Return value: Returns dynamically allocated CalendarAccount on success, +CalendarAccount *GetUserInfo(const char *filename, const char *name, CalendarError *error); + +// Convert timestamp to datetime string +// Return 0 on success, -1 on failure +int TimestampToDatetime(time_t timestamp, char *datetimeStr, size_t maxLen); + +// Memory release interfaces +void FreeCalendarEvent(CalendarEvent *event); +} // namespace ACELite +} // namespace OHOS +#endif // CALENDAR_MANAGER_H diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/calendarManager/calendar_module.cpp b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/calendarManager/calendar_module.cpp new file mode 100644 index 000000000..a126972b0 --- /dev/null +++ b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/calendarManager/calendar_module.cpp @@ -0,0 +1,1194 @@ +/** + * Copyright (c) CompanyNameMagicTag 2025-2025. All rights reserved. + * Description: appmanger_module module. + * Author: CompanyName + * Create: 2025-09-04 + */ +#include +#include +#include "calendar_manager.h" +#include "event_id_manager.h" +#include "ability_env.h" +#include "calendar_utils.h" +#include "ace_log.h" +#include "calendar_module.h" +namespace OHOS { +namespace ACELite { +// Global variable for calendar file path +std::string g_canlendarFilePath = "/user/app/calendar.json"; + +// Module constant definitions +const char *const CalendarModule::MODULE_NAME = "calendar"; +const char *const CalendarModule::CREATE_CALENDAR = "createCalendar"; +const char *const CalendarModule::DELETE_CALENDAR = "deleteCalendar"; +const char *const CalendarModule::GET_CALENDAR = "getCalendar"; +const char *const CalendarModule::ADD_EVENT = "addEvent"; +const char *const CalendarModule::ADD_EVENTS = "addEvents"; +const char *const CalendarModule::DELETE_EVENT = "deleteEvent"; +const char *const CalendarModule::DELETE_EVENTS = "deleteEvents"; +const char *const CalendarModule::UPDATE_EVENT = "updateEvent"; +const char *const CalendarModule::UPDATE_EVENTS = "updateEvents"; +const char *const CalendarModule::GET_EVENT = "getEvent"; +const char *const CalendarModule::GET_EVENTS = "getEvents"; +const char *const CalendarModule::GET_ACCOUNT = "getAccount"; +const char *const CalendarModule::GET_CONFIG = "getconfig"; +const char *const CalendarModule::SET_CONFIG = "setconfig"; + +// Static member variable for callback data +CalendarCallback *CalendarModule::callbackData_ = nullptr; + +// Module initialization +void CalendarModule::Init(JSIValue exports) +{} + +void InitCalendarModule(JSIValue exports) +{ + // Register Calendar module API functions + JSI::SetModuleAPI(exports, CalendarModule::CREATE_CALENDAR, CalendarModule::CreateCalendar); + JSI::SetModuleAPI(exports, CalendarModule::DELETE_CALENDAR, CalendarModule::DeleteCalendar); + JSI::SetModuleAPI(exports, CalendarModule::GET_CALENDAR, CalendarModule::GetCalendar); +} + +// Helper function: Convert JS object to CalendarAccount +bool CalendarModule::ConvertToCalendarAccount(const JSIValue jsAccount, CalendarAccount &account) +{ + if (!JSI::ValueIsObject(jsAccount)) { + return false; + } + + // Extract name property + JSIValue nameVal = JSI::GetNamedProperty(jsAccount, "name"); + if (JSI::ValueIsString(nameVal)) { + account.name = JSI::ValueToString(nameVal); + } else { + JSI::ReleaseValue(nameVal); + return false; + } + JSI::ReleaseValue(nameVal); + + // Extract type property + JSIValue typeVal = JSI::GetNamedProperty(jsAccount, "type"); + if (JSI::ValueIsString(typeVal)) { + account.type = JSI::ValueToString(typeVal); + } else { + JSI::ReleaseValue(typeVal); + ace_free(static_cast(account.name)); + return false; + } + JSI::ReleaseValue(typeVal); + + // Extract displayName property + JSIValue displayNameVal = JSI::GetNamedProperty(jsAccount, "displayName"); + if (JSI::ValueIsString(displayNameVal)) { + account.displayName = JSI::ValueToString(displayNameVal); + } else { + JSI::ReleaseValue(displayNameVal); + ace_free(static_cast(account.name)); + ace_free(static_cast(account.type)); + return false; + } + JSI::ReleaseValue(displayNameVal); + + return true; +} + +// Helper function: Convert CalendarEvent to JS object +JSIValue CalendarModule::ConvertToJSEvent(const CalendarEvent &event) +{ + JSIValue jsEvent = JSI::CreateObject(); + + JSI::SetNamedProperty(jsEvent, "id", JSI::CreateNumber(event.id)); + JSI::SetNamedProperty(jsEvent, "type", JSI::CreateNumber(event.type)); + JSI::SetNamedProperty(jsEvent, "startTime", JSI::CreateNumber(event.startTime)); + JSI::SetNamedProperty(jsEvent, "endTime", JSI::CreateNumber(event.endTime)); + JSI::SetNamedProperty(jsEvent, "bundlename", JSI::CreateString(event.bundlename)); + JSI::SetNamedProperty(jsEvent, "isAllDay", JSI::CreateBoolean(event.isAllDay)); + JSI::SetNamedProperty(jsEvent, "hasReminder", JSI::CreateBoolean(event.hasReminder)); + JSI::SetNamedProperty(jsEvent, "isRepeat", JSI::CreateBoolean(event.isRepeat)); + JSI::SetNamedProperty(jsEvent, "recurrenceFrequency", JSI::CreateNumber(event.recurrenceFrequency)); + JSI::SetNamedProperty(jsEvent, "eventContent", JSI::CreateString(event.eventContent)); + + return jsEvent; +} + +// Helper function: Convert CalendarAccount to JS object +JSIValue CalendarModule::ConvertToJSAccount(const CalendarAccount &account) +{ + JSIValue jsAccount = JSI::CreateObject(); + + if (account.name) { + JSI::SetNamedProperty(jsAccount, "name", JSI::CreateString(account.name)); + } + if (account.type) { + JSI::SetNamedProperty(jsAccount, "type", JSI::CreateString(account.type)); + } + if (account.displayName) { + JSI::SetNamedProperty(jsAccount, "displayName", JSI::CreateString(account.displayName)); + } + + return jsAccount; +} + +// Free callback data +void CalendarModule::FreeCallbackData(CalendarCallback *callbackData) +{ + if (callbackData) { + if (callbackData->account.name) { + ace_free(callbackData->account.name); + callbackData->account.name = nullptr; + } + if (callbackData->account.type) { + ace_free(callbackData->account.type); + callbackData->account.type = nullptr; + } + if (callbackData->account.displayName) { + ace_free(callbackData->account.displayName); + callbackData->account.displayName = nullptr; + } + delete callbackData; + } +} + +// Create calendar +JSIValue CalendarModule::CreateCalendar(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum) +{ + if (argsNum < ARGC_TWO || !JSI::ValueIsObject(args[0]) || !JSI::ValueIsFunction(args[1])) { + HILOG_ERROR(HILOG_MODULE_ACE, "Invalid arguments for createCalendar"); + return JSI::CreateUndefined(); + } + + // Create callback data + CalendarCallback *callbackData = new CalendarCallback(); + if (!callbackData) { + return JSI::CreateUndefined(); + } + callbackData->account.name = nullptr; + callbackData->account.displayName = nullptr; + callbackData->account.type = nullptr; + if (!callbackData) { + HILOG_ERROR(HILOG_MODULE_ACE, "Failed to allocate memory for callback data"); + return JSI::CreateUndefined(); + } + // Save callback function and context + callbackData->callback = JSI::AcquireValue(args[1]); + callbackData->jsCtx = JSI::AcquireValue(thisVal); + + // Convert calendar account information + if (!ConvertToCalendarAccount(args[0], callbackData->account)) { + HILOG_ERROR(HILOG_MODULE_ACE, "Failed to convert to CalendarAccount"); + FreeCallbackData(callbackData); + JSI::ReleaseValue(callbackData->callback); + JSI::ReleaseValue(callbackData->jsCtx); + return JSI::CreateUndefined(); + } + // Dispatch asynchronous work + JsAsyncWork::DispatchAsyncWork(CreateCalendarCallback, static_cast(callbackData)); + + return JSI::CreateUndefined(); +} + +// Asynchronous callback for creating calendar +void CalendarModule::CreateCalendarCallback(void *data) +{ + CalendarCallback *callbackData = static_cast(data); + if (!callbackData || !JSI::ValueIsFunction(callbackData->callback)) { + HILOG_ERROR(HILOG_MODULE_ACE, "Invalid callback data"); + FreeCallbackData(callbackData); + JSI::ReleaseValue(callbackData->callback); + JSI::ReleaseValue(callbackData->jsCtx); + return; + } + // Call calendar management tool to create user + CalendarError error = CALENDAR_INVALID_PARAMETER; + const char *result = CreateOrAppendUser(GetCanlendarFilePath(), + callbackData->account.name, + callbackData->account.type, + callbackData->account.displayName, + &error); + // Prepare callback parameters + JSIValue args[ARGC_TWO]; + JSIValue addEvent; + JSIValue addEvents; + JSIValue deleteEvent; + JSIValue deleteEvents; + JSIValue updateEvent; + JSIValue updateEvents; + JSIValue getEvent; + JSIValue getEvents; + JSIValue getAccount; + JSIValue getConfig; + JSIValue setConfig; + JSIValue calendarObj; + if (error == CALENDAR_SUCCESS && result != nullptr) { + // Success: first parameter is null, second is calendar object + args[0] = JSI::CreateNull(); + // Create calendar object + calendarObj = JSI::CreateObject(); + addEvent = JSI::CreateFunction(CalendarModule::AddEvent); + addEvents = JSI::CreateFunction(CalendarModule::AddEvents); + deleteEvent = JSI::CreateFunction(CalendarModule::DeleteEvent); + deleteEvents = JSI::CreateFunction(CalendarModule::DeleteEvents); + updateEvent = JSI::CreateFunction(CalendarModule::UpdateEvent); + updateEvents = JSI::CreateFunction(CalendarModule::UpdateEvents); + getEvent = JSI::CreateFunction(CalendarModule::GetEvent); + getEvents = JSI::CreateFunction(CalendarModule::GetEvents); + getAccount = JSI::CreateFunction(CalendarModule::GetAccount); + getConfig = JSI::CreateFunction(CalendarModule::GetConfig); + setConfig = JSI::CreateFunction(CalendarModule::SetConfig); + JSI::SetNamedProperty(calendarObj, ADD_EVENT, addEvent); + JSI::SetNamedProperty(calendarObj, ADD_EVENTS, addEvents); + JSI::SetNamedProperty(calendarObj, DELETE_EVENT, deleteEvent); + JSI::SetNamedProperty(calendarObj, DELETE_EVENTS, deleteEvents); + JSI::SetNamedProperty(calendarObj, UPDATE_EVENT, updateEvent); + JSI::SetNamedProperty(calendarObj, UPDATE_EVENTS, updateEvents); + JSI::SetNamedProperty(calendarObj, GET_EVENT, getEvent); + JSI::SetNamedProperty(calendarObj, GET_EVENTS, getEvents); + JSI::SetNamedProperty(calendarObj, GET_ACCOUNT, getAccount); + JSI::SetNamedProperty(calendarObj, GET_CONFIG, getConfig); + JSI::SetNamedProperty(calendarObj, SET_CONFIG, setConfig); + // Store calendar account information; + args[1] = calendarObj; + if (callbackData_) { + FreeCallbackData(callbackData_); + callbackData_ = nullptr; + } + callbackData_ = callbackData; + JSI::CallFunction(callbackData->callback, callbackData->jsCtx, args, ARGC_TWO); + JSI::ReleaseValueList(args[0], + args[1], + callbackData->callback, + callbackData->jsCtx, + addEvent, + addEvents, + deleteEvent, + deleteEvents, + updateEvent, + updateEvents, + getConfig, + setConfig, + getEvent, + getEvents, + getAccount, + ARGS_END); + } else { + // Failure: first parameter is error message, second is null + args[0] = JSI::CreateString(GetCalendarErrorString(error)); + args[1] = JSI::CreateNull(); + JSI::CallFunction(callbackData->callback, callbackData->jsCtx, args, ARGC_TWO); + JSI::ReleaseValueList(callbackData->callback, callbackData->jsCtx, args[0], args[1], ARGS_END); + FreeCallbackData(callbackData); + } +} + +// Delete calendar +JSIValue CalendarModule::DeleteCalendar(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum) +{ + if (callbackData_) { + FreeCallbackData(callbackData_); + callbackData_ = nullptr; + } + return JSI::CreateUndefined(); +} + +// Asynchronous callback for deleting calendar +void CalendarModule::DeleteCalendarCallback(void *data) +{ + // Implement actual logic and callback handling for deleting calendar +} + +// Get default calendar +JSIValue CalendarModule::GetCalendar(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum) +{ + if (argsNum < 1 || !JSI::ValueIsFunction(args[0])) { + HILOG_ERROR(HILOG_MODULE_ACE, "Invalid arguments for getCalendar"); + return JSI::CreateUndefined(); + } + // Create callback data + CalendarCallback *callbackData = new CalendarCallback(); + if (!callbackData) { + return JSI::CreateUndefined(); + } + callbackData->account.name = nullptr; + callbackData->account.displayName = nullptr; + callbackData->account.type = nullptr; + if (!callbackData) { + HILOG_ERROR(HILOG_MODULE_ACE, "Failed to allocate memory for callback data"); + return JSI::CreateUndefined(); + } + // Save callback function and context + callbackData->callback = JSI::AcquireValue(args[0]); + callbackData->jsCtx = JSI::AcquireValue(thisVal); + + OHOS::ACELite::JsAsyncWork::DispatchAsyncWork(GetCalendarCallback, static_cast(callbackData)); + + return JSI::CreateUndefined(); +} + +// Asynchronous callback for getting default calendar +void CalendarModule::GetCalendarCallback(void *data) +{ + // Implement actual logic and callback handling for getting default calendar + CalendarCallback *callbackData = static_cast(data); + if (!callbackData || !JSI::ValueIsFunction(callbackData->callback)) { + HILOG_ERROR(HILOG_MODULE_ACE, "Invalid callback data"); + FreeCallbackData(callbackData); + return; + } + CalendarError error = CALENDAR_INVALID_PARAMETER; + CalendarAccount *account = GetUserInfo(GetCanlendarFilePath(), "default", &error); + if (account) { + callbackData->account.type = account->type; + callbackData->account.name = account->name; + callbackData->account.displayName = account->displayName; + free(account); + } + // Prepare callback parameters + JSIValue args[ARGC_TWO]; + JSIValue addEvent; + JSIValue addEvents; + JSIValue deleteEvent; + JSIValue deleteEvents; + JSIValue updateEvent; + JSIValue updateEvents; + JSIValue getEvent; + JSIValue getEvents; + JSIValue getAccount; + JSIValue getConfig; + JSIValue setConfig; + if (error == CALENDAR_SUCCESS) { + // Success: first parameter is null, second is calendar object + args[0] = JSI::CreateNull(); + // Create calendar object + JSIValue calendarObj = JSI::CreateObject(); + addEvent = JSI::CreateFunction(CalendarModule::AddEvent); + addEvents = JSI::CreateFunction(CalendarModule::AddEvents); + deleteEvent = JSI::CreateFunction(CalendarModule::DeleteEvent); + deleteEvents = JSI::CreateFunction(CalendarModule::DeleteEvents); + updateEvent = JSI::CreateFunction(CalendarModule::UpdateEvent); + updateEvents = JSI::CreateFunction(CalendarModule::UpdateEvents); + getEvent = JSI::CreateFunction(CalendarModule::GetEvent); + getEvents = JSI::CreateFunction(CalendarModule::GetEvents); + getAccount = JSI::CreateFunction(CalendarModule::GetAccount); + getConfig = JSI::CreateFunction(CalendarModule::GetConfig); + setConfig = JSI::CreateFunction(CalendarModule::SetConfig); + JSI::SetNamedProperty(calendarObj, ADD_EVENT, addEvent); + JSI::SetNamedProperty(calendarObj, ADD_EVENTS, addEvents); + JSI::SetNamedProperty(calendarObj, DELETE_EVENT, deleteEvent); + JSI::SetNamedProperty(calendarObj, DELETE_EVENTS, deleteEvents); + JSI::SetNamedProperty(calendarObj, UPDATE_EVENT, updateEvent); + JSI::SetNamedProperty(calendarObj, UPDATE_EVENTS, updateEvents); + JSI::SetNamedProperty(calendarObj, GET_EVENT, getEvent); + JSI::SetNamedProperty(calendarObj, GET_EVENTS, getEvents); + JSI::SetNamedProperty(calendarObj, GET_ACCOUNT, getAccount); + JSI::SetNamedProperty(calendarObj, GET_CONFIG, getConfig); + JSI::SetNamedProperty(calendarObj, SET_CONFIG, setConfig); + // Store calendar account information; + args[1] = calendarObj; + if (callbackData_) { + FreeCallbackData(callbackData_); + callbackData_ = nullptr; + } + callbackData_ = callbackData; + JSI::CallFunction(callbackData->callback, callbackData->jsCtx, args, ARGC_TWO); + JSI::ReleaseValueList(args[0], + args[1], + addEvent, + addEvents, + deleteEvent, + deleteEvents, + updateEvent, + updateEvents, + getConfig, + setConfig, + getEvent, + getEvents, + getAccount, + ARGS_END); + } else { + // Failure: first parameter is error message, second is null + args[0] = JSI::CreateString(GetCalendarErrorString(error)); + args[1] = JSI::CreateNull(); + JSI::CallFunction(callbackData->callback, callbackData->jsCtx, args, ARGC_TWO); + JSI::ReleaseValueList(callbackData->callback, callbackData->jsCtx, args[0], args[1], ARGS_END); + FreeCallbackData(callbackData); + } +} + +// Add event +void CalendarModule::AddEventCallback(void *data) +{ + CalendarCallback *callbackData = static_cast(data); + if (!callbackData || !JSI::ValueIsFunction(callbackData->callback)) { + HILOG_ERROR(HILOG_MODULE_ACE, "Invalid callback data"); + FreeCallbackData(callbackData); + return; + } + CalendarError error = CALENDAR_INVALID_PARAMETER; + int id = AllocateAndSetCalendarEvent(callbackData->eventarray.events); + if (id > 0) { + error = AppendEvent(GetCanlendarFilePath(), callbackData_->account.name, callbackData->eventarray.events); + if (error != CALENDAR_SUCCESS) { + FreeEventId(id); + } + } else { + error = CALENDAR_EVENT_ID_ALLOC_FAILED; + free(callbackData->eventarray.events); + } + + JSIValue args[ARGC_TWO]; + if (error == CALENDAR_SUCCESS) { + args[1] = JSI::CreateNumber(callbackData->eventarray.events->id); + args[0] = JSI::CreateNull(); + JSI::CallFunction(callbackData->callback, callbackData->jsCtx, args, ARGC_TWO); + JSI::ReleaseValueList(callbackData->callback, callbackData->jsCtx, args[0], args[1], ARGS_END); + } else { + args[0] = JSI::CreateString(GetCalendarErrorString(error)); + args[1] = JSI::CreateNull(); + JSI::CallFunction(callbackData->callback, callbackData->jsCtx, args, ARGC_TWO); + JSI::ReleaseValueList(callbackData->callback, callbackData->jsCtx, args[0], args[1], ARGS_END); + } + delete callbackData; + callbackData = nullptr; +} + +JSIValue CalendarModule::AddEvent(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum) +{ + // Implement logic for adding a single event + if (callbackData_ == nullptr) { + return nullptr; + } + if (argsNum < 1 || !JSI::ValueIsFunction(args[1]) || !JSI::ValueIsObject(args[0])) { + HILOG_ERROR(HILOG_MODULE_ACE, "Invalid arguments for AddEvent"); + return JSI::CreateUndefined(); + } + CalendarCallback *callbackData = new CalendarCallback(); + if (!callbackData) { + return JSI::CreateUndefined(); + } + callbackData->eventarray.events = (CalendarEvent *)malloc(sizeof(CalendarEvent)); + if (!callbackData->eventarray.events) { + delete callbackData; + return JSI::CreateUndefined(); + } + if (strcpy_s(callbackData->eventarray.events->bundlename, + sizeof(callbackData->eventarray.events->bundlename), + GetBundleName()) != EOK) { + free(callbackData->eventarray.events); + delete callbackData; + return JSI::CreateUndefined(); + } + callbackData->eventarray.events->startTime = (int64_t)JSI::GetNumberProperty(args[0], "startTime"); + callbackData->eventarray.events->endTime = (int64_t)JSI::GetNumberProperty(args[0], "endTime"); + callbackData->eventarray.events->type = (int)JSI::GetNumberProperty(args[0], "type"); + char *eventContent = JSI::GetStringProperty(args[0], "eventContent"); + if (strcpy_s(callbackData->eventarray.events->eventContent, + sizeof(callbackData->eventarray.events->eventContent), + eventContent) != EOK) { + free(callbackData->eventarray.events); + ace_free(eventContent); + delete callbackData; + return JSI::CreateUndefined(); + } + ace_free(eventContent); + callbackData->eventarray.events->isAllDay = JSI::GetBooleanProperty(args[0], "isAllDay"); + callbackData->eventarray.events->hasReminder = JSI::GetBooleanProperty(args[0], "hasReminder"); + callbackData->eventarray.events->isRepeat = JSI::GetBooleanProperty(args[0], "isRepeat"); + callbackData->eventarray.events->recurrenceFrequency = + (int64_t)JSI::GetNumberProperty(args[0], "recurrenceFrequency"); + // Save callback function and context + callbackData->callback = JSI::AcquireValue(args[1]); + callbackData->jsCtx = JSI::AcquireValue(thisVal); + + OHOS::ACELite::JsAsyncWork::DispatchAsyncWork(AddEventCallback, static_cast(callbackData)); + return JSI::CreateUndefined(); +} + +// Add multiple events +void CalendarModule::AddEventsCallback(void *data) +{ + CalendarCallback *callbackData = static_cast(data); + if (!callbackData || !JSI::ValueIsFunction(callbackData->callback)) { + HILOG_ERROR(HILOG_MODULE_ACE, "Invalid callback data"); + FreeCallbackData(callbackData); + return; + } + CalendarError error = CALENDAR_SUCCESS; + int *ids = static_cast(ace_malloc(sizeof(int) * callbackData->eventarray.count)); + if (!ids) { + HILOG_ERROR(HILOG_MODULE_ACE, "Invalid callback data"); + FreeCallbackData(callbackData); + return; + } + for (uint32_t arrIndex = 0; arrIndex < callbackData->eventarray.count; arrIndex++) { + CalendarEvent *event = (CalendarEvent *)malloc(sizeof(CalendarEvent)); + if (!event) { + FreeCallbackData(callbackData); + return; + } + if(memcpy_s(event, sizeof(CalendarEvent), + callbackData->eventarray.events + arrIndex, sizeof(CalendarEvent)) != EOK) { + FreeCallbackData(callbackData); + return; + } + ids[arrIndex] = AllocateAndSetCalendarEvent(event); + callbackData->eventarray.events[arrIndex].id = ids[arrIndex]; + if (ids[arrIndex] <= 0) { + error = CALENDAR_EVENT_ID_ALLOC_FAILED; + for (uint32_t i = 0; i < arrIndex; i++) { + FreeEventId(ids[i]); + } + break; + } + } + ace_free(ids); + bool flag = true; + if (error == CALENDAR_SUCCESS) { + error = AppendEvents(GetCanlendarFilePath(), callbackData_->account.name, &callbackData->eventarray); + if (error != CALENDAR_SUCCESS) { + flag = false; + } + } + JSIValue args[ARGC_TWO]; + JSIValue result[callbackData->eventarray.count]; + if (error == CALENDAR_SUCCESS) { + JSIValue evnetArray = JSI::CreateArray(callbackData->eventarray.count); + for (uint32_t evnetArrayCnt = 0; evnetArrayCnt < callbackData->eventarray.count; evnetArrayCnt++) { + result[evnetArrayCnt] = JSI::CreateNumber(callbackData->eventarray.events[evnetArrayCnt].id); + JSI::SetPropertyByIndex(evnetArray, evnetArrayCnt, result[evnetArrayCnt]); + } + args[1] = evnetArray; + args[0] = JSI::CreateNull(); + JSI::CallFunction(callbackData->callback, callbackData->jsCtx, args, ARGC_TWO); + for (uint32_t evnetArrayCnt = 0; evnetArrayCnt < callbackData->eventarray.count; evnetArrayCnt++) { + JSI::ReleaseValue(result[evnetArrayCnt]); + } + JSI::ReleaseValueList(callbackData->callback, callbackData->jsCtx, args[0], args[1], ARGS_END); + } else { + if (!flag) { + for (uint32_t arrIndex = 0; arrIndex < callbackData->eventarray.count; arrIndex++) { + FreeEventId(callbackData->eventarray.events[arrIndex].id); + } + } + args[0] = JSI::CreateString(GetCalendarErrorString(error)); + args[1] = JSI::CreateNull(); + JSI::CallFunction(callbackData->callback, callbackData->jsCtx, args, ARGC_TWO); + JSI::ReleaseValueList(callbackData->callback, callbackData->jsCtx, args[0], args[1], ARGS_END); + } + if (callbackData->eventarray.events) { + free(static_cast(callbackData->eventarray.events)); + } + + delete callbackData; + callbackData = nullptr; +} + +// Batch add events +JSIValue CalendarModule::AddEvents(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum) +{ + // Implement logic for batch adding events + if (callbackData_ == nullptr) { + return nullptr; + } + if (argsNum < 1 || !JSI::ValueIsFunction(args[1]) || !JSI::ValueIsArray(args[0])) { + HILOG_ERROR(HILOG_MODULE_ACE, "Invalid arguments for AddEvents"); + return JSI::CreateUndefined(); + } + CalendarCallback *callbackData = new CalendarCallback(); + if (!callbackData) { + return JSI::CreateUndefined(); + } + uint32_t count = JSI::GetArrayLength(args[0]); + callbackData->eventarray.events = (CalendarEvent *)malloc(sizeof(CalendarEvent) * count); + if (!callbackData->eventarray.events) { + delete callbackData; + return JSI::CreateUndefined(); + } + for (uint32_t arrIndex = 0; arrIndex < count; arrIndex++) { + JSIValue point = JSI::GetPropertyByIndex(args[0], arrIndex); + if (strcpy_s(callbackData->eventarray.events[arrIndex].bundlename, + sizeof(callbackData->eventarray.events[arrIndex].bundlename), + GetBundleName()) != EOK) { + free(callbackData->eventarray.events); + delete callbackData; + return JSI::CreateUndefined(); + } + callbackData->eventarray.events[arrIndex].startTime = (int64_t)JSI::GetNumberProperty(point, "startTime"); + callbackData->eventarray.events[arrIndex].endTime = (int64_t)JSI::GetNumberProperty(point, "endTime"); + callbackData->eventarray.events[arrIndex].type = (int)JSI::GetNumberProperty(point, "type"); + callbackData->eventarray.events[arrIndex].isAllDay = JSI::GetBooleanProperty(point, "isAllDay"); + callbackData->eventarray.events[arrIndex].hasReminder = JSI::GetBooleanProperty(point, "hasReminder"); + callbackData->eventarray.events[arrIndex].isRepeat = JSI::GetBooleanProperty(point, "isRepeat"); + callbackData->eventarray.events[arrIndex].recurrenceFrequency = + (int64_t)JSI::GetNumberProperty(point, "recurrenceFrequency"); + char *eventContent = JSI::GetStringProperty(point, "eventContent"); + if (strcpy_s(callbackData->eventarray.events[arrIndex].eventContent, + sizeof(callbackData->eventarray.events[arrIndex].eventContent), + eventContent) != EOK) { + free(callbackData->eventarray.events); + ace_free(eventContent); + delete callbackData; + return JSI::CreateUndefined(); + } + ace_free(eventContent); + JSI::ReleaseValue(point); + } + callbackData->eventarray.count = count; + // Save callback function and context + callbackData->callback = JSI::AcquireValue(args[1]); + callbackData->jsCtx = JSI::AcquireValue(thisVal); + + OHOS::ACELite::JsAsyncWork::DispatchAsyncWork(AddEventsCallback, static_cast(callbackData)); + return JSI::CreateUndefined(); +} + +// Delete event +void CalendarModule::DeleteEventCallback(void *data) +{ + CalendarCallback *callbackData = static_cast(data); + if (!callbackData || !JSI::ValueIsFunction(callbackData->callback)) { + HILOG_ERROR(HILOG_MODULE_ACE, "Invalid callback data"); + FreeCallbackData(callbackData); + return; + } + CalendarError error = CALENDAR_INVALID_PARAMETER; + error = CalendarDeleteEvent(GetCanlendarFilePath(), + callbackData_->account.name, callbackData->eventarray.events->id); + JSIValue args[ARGC_ONE]; + if (error == CALENDAR_SUCCESS) { + FreeEventId(callbackData->eventarray.events->id); + args[0] = JSI::CreateNull(); + JSI::CallFunction(callbackData->callback, callbackData->jsCtx, args, ARGC_ONE); + JSI::ReleaseValueList(callbackData->callback, callbackData->jsCtx, args[0], ARGS_END); + } else { + args[0] = JSI::CreateString(GetCalendarErrorString(error)); + JSI::CallFunction(callbackData->callback, callbackData->jsCtx, args, ARGC_ONE); + JSI::ReleaseValueList(callbackData->callback, callbackData->jsCtx, args[0], ARGS_END); + } + free(static_cast(callbackData->eventarray.events)); + delete callbackData; + callbackData = nullptr; +} + +JSIValue CalendarModule::DeleteEvent(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum) +{ + // Implement logic for deleting a single event + if (callbackData_ == nullptr) { + return nullptr; + } + if (argsNum < 1 || !JSI::ValueIsFunction(args[1]) || !JSI::ValueIsNumber(args[0])) { + HILOG_ERROR(HILOG_MODULE_ACE, "Invalid arguments for DeleteEvent"); + return JSI::CreateUndefined(); + } + CalendarCallback *callbackData = new CalendarCallback(); + if (!callbackData) { + return JSI::CreateUndefined(); + } + callbackData->eventarray.events = (CalendarEvent *)malloc(sizeof(CalendarEvent)); + if (!callbackData->eventarray.events) { + delete callbackData; + return JSI::CreateUndefined(); + } + callbackData->eventarray.events->id = static_cast(JSI::ValueToNumber(args[0])); + // Save callback function and context + callbackData->callback = JSI::AcquireValue(args[1]); + callbackData->jsCtx = JSI::AcquireValue(thisVal); + + OHOS::ACELite::JsAsyncWork::DispatchAsyncWork(DeleteEventCallback, static_cast(callbackData)); + return JSI::CreateUndefined(); +} + +// Batch delete events +void CalendarModule::DeleteEventsCallback(void *data) +{ + CalendarCallback *callbackData = static_cast(data); + if (!callbackData || !JSI::ValueIsFunction(callbackData->callback)) { + HILOG_ERROR(HILOG_MODULE_ACE, "Invalid callback data"); + FreeCallbackData(callbackData); + return; + } + CalendarError error = CALENDAR_INVALID_PARAMETER; + int *eventIds = static_cast(ace_malloc(sizeof(int) * callbackData->eventarray.count)); + if (!eventIds) { + HILOG_ERROR(HILOG_MODULE_ACE, "Invalid callback data"); + FreeCallbackData(callbackData); + return; + } + for (uint32_t i = 0; i < callbackData->eventarray.count; i++) { + eventIds[i] = callbackData->eventarray.events[i].id; + } + error = CalendarDeleteEvents(GetCanlendarFilePath(), + callbackData_->account.name, eventIds, callbackData->eventarray.count); + ace_free(eventIds); + JSIValue args[ARGC_ONE]; + if (error == CALENDAR_SUCCESS) { + for (uint32_t i = 0; i < callbackData->eventarray.count; i++) { + FreeEventId(callbackData->eventarray.events[i].id); + } + args[0] = JSI::CreateNull(); + JSI::CallFunction(callbackData->callback, callbackData->jsCtx, args, ARGC_ONE); + JSI::ReleaseValueList(callbackData->callback, callbackData->jsCtx, args[0], ARGS_END); + } else { + args[0] = JSI::CreateString(GetCalendarErrorString(error)); + JSI::CallFunction(callbackData->callback, callbackData->jsCtx, args, ARGC_ONE); + JSI::ReleaseValueList(callbackData->callback, callbackData->jsCtx, args[0], ARGS_END); + } + free(static_cast(callbackData->eventarray.events)); + delete callbackData; + callbackData = nullptr; +} + +JSIValue CalendarModule::DeleteEvents(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum) +{ + // Implement logic for batch deleting events + if (callbackData_ == nullptr) { + return nullptr; + } + if (argsNum < 1 || !JSI::ValueIsFunction(args[1]) || !JSI::ValueIsArray(args[0])) { + HILOG_ERROR(HILOG_MODULE_ACE, "Invalid arguments for DeleteEvents"); + return JSI::CreateUndefined(); + } + CalendarCallback *callbackData = new CalendarCallback(); + if (!callbackData) { + return JSI::CreateUndefined(); + } + uint32_t count = JSI::GetArrayLength(args[0]); + callbackData->eventarray.events = (CalendarEvent *)malloc(sizeof(CalendarEvent) * count); + if (!callbackData->eventarray.events) { + delete callbackData; + return JSI::CreateUndefined(); + } + for (uint32_t arrIndex = 0; arrIndex < count; arrIndex++) { + JSIValue point = JSI::GetPropertyByIndex(args[0], arrIndex); + callbackData->eventarray.events[arrIndex].id = static_cast(JSI::GetNumberProperty(point, "id")); + JSI::ReleaseValue(point); + } + callbackData->eventarray.count = count; + // Save callback function and context + callbackData->callback = JSI::AcquireValue(args[1]); + callbackData->jsCtx = JSI::AcquireValue(thisVal); + + OHOS::ACELite::JsAsyncWork::DispatchAsyncWork(DeleteEventsCallback, static_cast(callbackData)); + return JSI::CreateUndefined(); +} + +// Update event +void CalendarModule::UpdateEventCallback(void *data) +{ + CalendarCallback *callbackData = static_cast(data); + if (!callbackData || !JSI::ValueIsFunction(callbackData->callback)) { + HILOG_ERROR(HILOG_MODULE_ACE, "Invalid callback data"); + FreeCallbackData(callbackData); + return; + } + CalendarError error = CALENDAR_INVALID_PARAMETER; + error = CalendarUpdateEvent(GetCanlendarFilePath(), callbackData_->account.name, callbackData->eventarray.events); + JSIValue args[ARGC_ONE]; + if (error == CALENDAR_SUCCESS) { + FreeEventId(callbackData->eventarray.events->id); + CalendarEvent *event = (CalendarEvent *)malloc(sizeof(CalendarEvent)); + if (!event) { + FreeCallbackData(callbackData); + return; + } + if(memcpy_s(event, sizeof(CalendarEvent), callbackData->eventarray.events, sizeof(CalendarEvent)) != EOK) { + HILOG_ERROR(HILOG_MODULE_ACE, "memcpy_s fail"); + } + SetCalendarEventWithSpecificId(callbackData->eventarray.events->id, event); + args[0] = JSI::CreateNull(); + JSI::CallFunction(callbackData->callback, callbackData->jsCtx, args, ARGC_ONE); + JSI::ReleaseValueList(callbackData->callback, callbackData->jsCtx, args[0], ARGS_END); + } else { + args[0] = JSI::CreateString(GetCalendarErrorString(error)); + JSI::CallFunction(callbackData->callback, callbackData->jsCtx, args, ARGC_ONE); + JSI::ReleaseValueList(callbackData->callback, callbackData->jsCtx, args[0], ARGS_END); + } + if (static_cast(callbackData->eventarray.events)) { + free(static_cast(callbackData->eventarray.events)); + } + delete callbackData; + callbackData = nullptr; +} + +JSIValue CalendarModule::UpdateEvent(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum) +{ + // Implement logic for updating a single event + if (callbackData_ == nullptr) { + return nullptr; + } + if (argsNum < 1 || !JSI::ValueIsFunction(args[1]) || !JSI::ValueIsObject(args[0])) { + HILOG_ERROR(HILOG_MODULE_ACE, "Invalid arguments for UpdateEvent"); + return JSI::CreateUndefined(); + } + CalendarCallback *callbackData = new CalendarCallback(); + if (!callbackData) { + return JSI::CreateUndefined(); + } + callbackData->eventarray.events = (CalendarEvent *)malloc(sizeof(CalendarEvent)); + if (!callbackData->eventarray.events) { + delete callbackData; + return JSI::CreateUndefined(); + } + if (strcpy_s(callbackData->eventarray.events->bundlename, + sizeof(callbackData->eventarray.events->bundlename), + GetBundleName()) != EOK) { + free(callbackData->eventarray.events); + delete callbackData; + return JSI::CreateUndefined(); + } + callbackData->eventarray.events->startTime = (int64_t)JSI::GetNumberProperty(args[0], "startTime"); + callbackData->eventarray.events->endTime = (int64_t)JSI::GetNumberProperty(args[0], "endTime"); + callbackData->eventarray.events->type = (int)JSI::GetNumberProperty(args[0], "type"); + callbackData->eventarray.events->id = (int)JSI::GetNumberProperty(args[0], "id"); + char *eventContent = JSI::GetStringProperty(args[0], "eventContent"); + if (strcpy_s(callbackData->eventarray.events->eventContent, + sizeof(callbackData->eventarray.events->eventContent), + eventContent) != EOK) { + free(callbackData->eventarray.events); + ace_free(eventContent); + delete callbackData; + return JSI::CreateUndefined(); + } + ace_free(eventContent); + callbackData->eventarray.events->isAllDay = JSI::GetBooleanProperty(args[0], "isAllDay"); + callbackData->eventarray.events->hasReminder = JSI::GetBooleanProperty(args[0], "hasReminder"); + callbackData->eventarray.events->isRepeat = JSI::GetBooleanProperty(args[0], "isRepeat"); + callbackData->eventarray.events->recurrenceFrequency = + (int64_t)JSI::GetNumberProperty(args[0], "recurrenceFrequency"); + // Save callback function and context + callbackData->callback = JSI::AcquireValue(args[1]); + callbackData->jsCtx = JSI::AcquireValue(thisVal); + + OHOS::ACELite::JsAsyncWork::DispatchAsyncWork(UpdateEventCallback, static_cast(callbackData)); + return JSI::CreateUndefined(); +} + +// Batch update events +void CalendarModule::UpdateEventsCallback(void *data) +{ + CalendarCallback *callbackData = static_cast(data); + if (!callbackData || !JSI::ValueIsFunction(callbackData->callback)) { + HILOG_ERROR(HILOG_MODULE_ACE, "Invalid callback data"); + FreeCallbackData(callbackData); + return; + } + CalendarError error = CALENDAR_INVALID_PARAMETER; + error = CalendarUpdateEvents(GetCanlendarFilePath(), callbackData_->account.name, &callbackData->eventarray); + if (error == CALENDAR_SUCCESS) { + for (uint32_t evnetArrayCnt = 0; evnetArrayCnt < callbackData->eventarray.count; evnetArrayCnt++) { + CalendarEvent *event = (CalendarEvent *)malloc(sizeof(CalendarEvent)); + if (!event) { + FreeCallbackData(callbackData); + return; + } + memcpy_s( + event, sizeof(CalendarEvent), callbackData->eventarray.events + evnetArrayCnt, sizeof(CalendarEvent)); + FreeEventId(callbackData->eventarray.events[evnetArrayCnt].id); + SetCalendarEventWithSpecificId(callbackData->eventarray.events[evnetArrayCnt].id, event); + } + } + JSIValue args[ARGC_TWO]; + JSIValue result[callbackData->eventarray.count]; + if (error == CALENDAR_SUCCESS) { + JSIValue evnetArray = JSI::CreateArray(callbackData->eventarray.count); + for (uint32_t evnetArrayCnt = 0; evnetArrayCnt < callbackData->eventarray.count; evnetArrayCnt++) { + result[evnetArrayCnt] = JSI::CreateNumber(callbackData->eventarray.events[evnetArrayCnt].id); + JSI::SetPropertyByIndex(evnetArray, evnetArrayCnt, result[evnetArrayCnt]); + } + args[1] = evnetArray; + args[0] = JSI::CreateNull(); + JSI::CallFunction(callbackData->callback, callbackData->jsCtx, args, ARGC_TWO); + for (uint32_t evnetArrayCnt = 0; evnetArrayCnt < callbackData->eventarray.count; evnetArrayCnt++) { + JSI::ReleaseValue(result[evnetArrayCnt]); + } + JSI::ReleaseValueList(callbackData->callback, callbackData->jsCtx, args[0], args[1], ARGS_END); + } else { + args[0] = JSI::CreateString(GetCalendarErrorString(error)); + args[1] = JSI::CreateNull(); + JSI::CallFunction(callbackData->callback, callbackData->jsCtx, args, ARGC_TWO); + JSI::ReleaseValueList(callbackData->callback, callbackData->jsCtx, args[0], args[1], ARGS_END); + } + if (callbackData->eventarray.events) { + free(static_cast(callbackData->eventarray.events)); + } + delete callbackData; + callbackData = nullptr; +} + +JSIValue CalendarModule::UpdateEvents(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum) +{ + // Implement logic for batch updating events + if (callbackData_ == nullptr) { + return nullptr; + } + if (argsNum < 1 || !JSI::ValueIsFunction(args[1]) || !JSI::ValueIsArray(args[0])) { + HILOG_ERROR(HILOG_MODULE_ACE, "Invalid arguments for UpdateEvents"); + return JSI::CreateUndefined(); + } + CalendarCallback *callbackData = new CalendarCallback(); + if (!callbackData) { + return JSI::CreateUndefined(); + } + uint32_t count = JSI::GetArrayLength(args[0]); + callbackData->eventarray.events = (CalendarEvent *)malloc(sizeof(CalendarEvent) * count); + if (!callbackData->eventarray.events) { + delete callbackData; + return JSI::CreateUndefined(); + } + for (uint32_t arrIndex = 0; arrIndex < count; arrIndex++) { + JSIValue point = JSI::GetPropertyByIndex(args[0], arrIndex); + if (strcpy_s(callbackData->eventarray.events[arrIndex].bundlename, + sizeof(callbackData->eventarray.events[arrIndex].bundlename), + GetBundleName()) != EOK) { + free(callbackData->eventarray.events); + delete callbackData; + return JSI::CreateUndefined(); + } + callbackData->eventarray.events[arrIndex].startTime = (int64_t)JSI::GetNumberProperty(point, "startTime"); + callbackData->eventarray.events[arrIndex].endTime = (int64_t)JSI::GetNumberProperty(point, "endTime"); + callbackData->eventarray.events[arrIndex].type = (int)JSI::GetNumberProperty(point, "type"); + callbackData->eventarray.events[arrIndex].id = (int64_t)JSI::GetNumberProperty(point, "id"); + char *eventContent = JSI::GetStringProperty(point, "eventContent"); + if (strcpy_s(callbackData->eventarray.events[arrIndex].eventContent, + sizeof(callbackData->eventarray.events[arrIndex].eventContent), + eventContent) != EOK) { + ace_free(eventContent); + free(callbackData->eventarray.events); + delete callbackData; + return JSI::CreateUndefined(); + } + ace_free(eventContent); + callbackData->eventarray.events[arrIndex].isAllDay = JSI::GetBooleanProperty(point, "isAllDay"); + callbackData->eventarray.events[arrIndex].hasReminder = JSI::GetBooleanProperty(point, "hasReminder"); + callbackData->eventarray.events[arrIndex].isRepeat = JSI::GetBooleanProperty(point, "isRepeat"); + callbackData->eventarray.events[arrIndex].recurrenceFrequency = + (int64_t)JSI::GetNumberProperty(point, "recurrenceFrequency"); + JSI::ReleaseValue(point); + } + callbackData->eventarray.count = count; + // Save callback function and context + callbackData->callback = JSI::AcquireValue(args[1]); + callbackData->jsCtx = JSI::AcquireValue(thisVal); + + OHOS::ACELite::JsAsyncWork::DispatchAsyncWork(UpdateEventsCallback, static_cast(callbackData)); + return JSI::CreateUndefined(); +} + +// Get event +void CalendarModule::GetEventCallback(void *data) +{ + CalendarCallback *callbackData = static_cast(data); + if (!callbackData || !JSI::ValueIsFunction(callbackData->callback)) { + HILOG_ERROR(HILOG_MODULE_ACE, "Invalid callback data"); + FreeCallbackData(callbackData); + return; + } + CalendarError error = CALENDAR_INVALID_PARAMETER; + CalendarEvent *event = CalendarGetEvent(GetCanlendarFilePath(), + callbackData_->account.name, callbackData->eventarray.events->id, &error); + JSIValue args[ARGC_TWO]; + if (error == CALENDAR_SUCCESS && event != nullptr) { + args[1] = JSI::CreateObject(); + JSI::SetNumberProperty(args[1], "startTime", event->startTime); + JSI::SetNumberProperty(args[1], "endTime", event->endTime); + JSI::SetNumberProperty(args[1], "type", event->type); + JSI::SetNumberProperty(args[1], "id", event->id); + JSI::SetStringProperty(args[1], "bundlename", event->bundlename); + JSI::SetBooleanProperty(args[1], "isAllDay", event->isAllDay); + JSI::SetBooleanProperty(args[1], "hasReminder", event->hasReminder); + JSI::SetBooleanProperty(args[1], "isRepeat", event->isRepeat); + JSI::SetNumberProperty(args[1], "recurrenceFrequency", event->recurrenceFrequency); + JSI::SetStringProperty(args[1], "eventContent", event->eventContent); + args[0] = JSI::CreateNull(); + JSI::CallFunction(callbackData->callback, callbackData->jsCtx, args, ARGC_TWO); + JSI::ReleaseValueList(callbackData->callback, callbackData->jsCtx, args[0], args[1], ARGS_END); + } else { + args[0] = JSI::CreateString(GetCalendarErrorString(error)); + args[1] = JSI::CreateNull(); + JSI::CallFunction(callbackData->callback, callbackData->jsCtx, args, ARGC_TWO); + JSI::ReleaseValueList(callbackData->callback, callbackData->jsCtx, args[0], args[1], ARGS_END); + } + if (event) { + free(event); + } + free(callbackData->eventarray.events); + delete callbackData; + callbackData = nullptr; +} + +JSIValue CalendarModule::GetEvent(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum) +{ + // Implement logic for getting a single event + if (callbackData_ == nullptr) { + return nullptr; + } + if (argsNum < 1 || !JSI::ValueIsFunction(args[1]) || !JSI::ValueIsNumber(args[0])) { + HILOG_ERROR(HILOG_MODULE_ACE, "Invalid arguments for GetEvent"); + return JSI::CreateUndefined(); + } + CalendarCallback *callbackData = new CalendarCallback(); + if (!callbackData) { + return JSI::CreateUndefined(); + } + callbackData->eventarray.events = (CalendarEvent *)malloc(sizeof(CalendarEvent)); + if (!callbackData->eventarray.events) { + delete callbackData; + return JSI::CreateUndefined(); + } + callbackData->eventarray.events->id = static_cast(JSI::ValueToNumber(args[0])); + // Save callback function and context + callbackData->callback = JSI::AcquireValue(args[1]); + callbackData->jsCtx = JSI::AcquireValue(thisVal); + + OHOS::ACELite::JsAsyncWork::DispatchAsyncWork(GetEventCallback, static_cast(callbackData)); + return JSI::CreateUndefined(); +} + +// Get all events +void CalendarModule::GetEventsCallback(void *data) +{ + CalendarCallback *callbackData = static_cast(data); + if (!callbackData || !JSI::ValueIsFunction(callbackData->callback)) { + HILOG_ERROR(HILOG_MODULE_ACE, "Invalid callback data"); + FreeCallbackData(callbackData); + return; + } + CalendarError error = CALENDAR_INVALID_PARAMETER; + CalendarEventArray *eventarray = CalendarGetEvents(GetCanlendarFilePath(), callbackData_->account.name, &error); + JSIValue args[ARGC_TWO]; + if (error == CALENDAR_SUCCESS && eventarray != nullptr) { + args[1] = JSI::CreateArray(eventarray->count); + for (uint32_t arrIndex = 0; arrIndex < eventarray->count; arrIndex++) { + JSIValue point = JSI::CreateObject(); + JSI::SetNumberProperty(point, "startTime", eventarray->events[arrIndex].startTime); + JSI::SetNumberProperty(point, "endTime", eventarray->events[arrIndex].endTime); + JSI::SetNumberProperty(point, "type", eventarray->events[arrIndex].type); + JSI::SetNumberProperty(point, "id", eventarray->events[arrIndex].id); + JSI::SetStringProperty(point, "bundlename", eventarray->events[arrIndex].bundlename); + JSI::SetBooleanProperty(point, "isAllDay", eventarray->events[arrIndex].isAllDay); + JSI::SetBooleanProperty(point, "hasReminder", eventarray->events[arrIndex].hasReminder); + JSI::SetBooleanProperty(point, "isRepeat", eventarray->events[arrIndex].isRepeat); + JSI::SetNumberProperty(point, "recurrenceFrequency", eventarray->events[arrIndex].recurrenceFrequency); + JSI::SetStringProperty(point, "eventContent", eventarray->events[arrIndex].eventContent); + JSI::SetPropertyByIndex(args[1], arrIndex, point); + JSI::ReleaseValue(point); + } + args[0] = JSI::CreateNull(); + JSI::CallFunction(callbackData->callback, callbackData->jsCtx, args, ARGC_TWO); + JSI::ReleaseValueList(callbackData->callback, callbackData->jsCtx, args[0], args[1], ARGS_END); + } else { + args[0] = JSI::CreateString(GetCalendarErrorString(error)); + args[1] = JSI::CreateNull(); + JSI::CallFunction(callbackData->callback, callbackData->jsCtx, args, ARGC_TWO); + JSI::ReleaseValueList(callbackData->callback, callbackData->jsCtx, args[0], args[1], ARGS_END); + } + if (eventarray) { + if (eventarray->events) { + free(eventarray->events); + } + free(eventarray); + } + + delete callbackData; + callbackData = nullptr; +} + +JSIValue CalendarModule::GetEvents(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum) +{ + // Implement logic for getting all events + if (callbackData_ == nullptr) { + return nullptr; + } + if (argsNum < 1 || !JSI::ValueIsFunction(args[0])) { + HILOG_ERROR(HILOG_MODULE_ACE, "Invalid arguments for GetEvents"); + return JSI::CreateUndefined(); + } + CalendarCallback *callbackData = new CalendarCallback(); + if (!callbackData) { + return JSI::CreateUndefined(); + } + // Save callback function and context + callbackData->callback = JSI::AcquireValue(args[0]); + callbackData->jsCtx = JSI::AcquireValue(thisVal); + + OHOS::ACELite::JsAsyncWork::DispatchAsyncWork(GetEventsCallback, static_cast(callbackData)); + return JSI::CreateUndefined(); +} + +// Get account information +JSIValue CalendarModule::GetAccount(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum) +{ + // Implement logic for getting account information + if (argsNum != 0) { + HILOG_ERROR(HILOG_MODULE_ACE, "Invalid arguments for GetAccount"); + return JSI::CreateUndefined(); + } + if (callbackData_) { + JSIValue point = JSI::CreateObject(); + JSI::SetStringProperty(point, "name", callbackData_->account.name); + JSI::SetStringProperty(point, "displayName", callbackData_->account.displayName); + JSI::SetStringProperty(point, "type", callbackData_->account.type); + return point; + } else { + return JSI::CreateUndefined(); + } +} + +// Set Config information +JSIValue CalendarModule::SetConfig(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum) +{ + // Implement logic for getting account information + if (argsNum < 1 || !JSI::ValueIsObject(args[0])) { + HILOG_ERROR(HILOG_MODULE_ACE, "Invalid arguments for SetConfig"); + return JSI::CreateBoolean(false); + } + if (callbackData_) { + callbackData_->enableReminder = JSI::GetBooleanProperty(args[0], "enableReminder"); + callbackData_->color = JSI::GetNumberProperty(args[0], "color"); + return JSI::CreateBoolean(true); + } else { + return JSI::CreateBoolean(false); + } +} + +// Get Config information +JSIValue CalendarModule::GetConfig(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum) +{ + // Implement logic for getting account information + if (argsNum != 0) { + HILOG_ERROR(HILOG_MODULE_ACE, "Invalid arguments for GetConfig"); + return JSI::CreateUndefined(); + } + if (callbackData_) { + JSIValue point = JSI::CreateObject(); + JSI::SetBooleanProperty(point, "enableReminder", callbackData_->enableReminder); + JSI::SetNumberProperty(point, "color", callbackData_->color); + return point; + } else { + return JSI::CreateUndefined(); + } +} + +// Asynchronous callback for event operations +void CalendarModule::EventOperationCallback(void *data) +{ + // Implement callback handling for event operations +} + +#ifdef __cplusplus +extern "C" { +#endif +void SetCanlendarFilePath(char *canlendarFilePath) +{ + g_canlendarFilePath = canlendarFilePath; +} + +const char *GetCanlendarFilePath(void) +{ + return g_canlendarFilePath.c_str(); +} +#ifdef __cplusplus +}; +#endif + +} // namespace ACELite +} // namespace OHOS diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/calendarManager/calendar_module.h b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/calendarManager/calendar_module.h new file mode 100644 index 000000000..7c31598b5 --- /dev/null +++ b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/calendarManager/calendar_module.h @@ -0,0 +1,104 @@ +/** + * Copyright (c) CompanyNameMagicTag 2025-2025. All rights reserved. + * Description: appmanger_module module. + * Author: CompanyName + * Create: 2025-09-04 + */ +#ifndef OHOS_ACELITE_CALENDAR_MODULE_H +#define OHOS_ACELITE_CALENDAR_MODULE_H + +#include +#include "acelite_config.h" +#include "jsi.h" +#include "js_async_work.h" +#include "non_copyable.h" +#include "calendar_manager.h" +#include "calendar_timer.h" + +namespace OHOS { +namespace ACELite { + +// Calendar module callback structure +struct CalendarCallback { + JSIValue callback; // Asynchronous callback function + JSIValue jsCtx; // JS context + CalendarAccount account; // Calendar account + CalendarEventArray eventarray; + bool enableReminder; + uint64_t color; +}; + +class CalendarModule final : public MemoryHeap { +public: + ACE_DISALLOW_COPY_AND_MOVE(CalendarModule); + CalendarModule() = default; + ~CalendarModule() = default; + + // Module initialization + static void Init(JSIValue exports); + + // Calendar management APIs + static JSIValue CreateCalendar(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum); + static JSIValue DeleteCalendar(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum); + static JSIValue GetCalendar(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum); + + // Calendar event operation APIs + static JSIValue AddEvent(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum); + static JSIValue AddEvents(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum); + static JSIValue DeleteEvent(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum); + static JSIValue DeleteEvents(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum); + static JSIValue UpdateEvent(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum); + static JSIValue UpdateEvents(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum); + static JSIValue GetEvent(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum); + static JSIValue GetEvents(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum); + static JSIValue GetAccount(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum); + static JSIValue SetConfig(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum); + static JSIValue GetConfig(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum); + + // Asynchronous operation callback functions + static void CreateCalendarCallback(void *data); + static void DeleteCalendarCallback(void *data); + static void GetCalendarCallback(void *data); + static void EventOperationCallback(void *data); + static void AddEventCallback(void *data); + static void AddEventsCallback(void *data); + static void DeleteEventCallback(void *data); + static void GetEventsCallback(void *data); + static void DeleteEventsCallback(void *data); + static void GetEventCallback(void *data); + static void UpdateEventCallback(void *data); + static void UpdateEventsCallback(void *data); + + static const char *const MODULE_NAME; + static const char *const CREATE_CALENDAR; + static const char *const DELETE_CALENDAR; + static const char *const GET_CALENDAR; + static const char *const ADD_EVENT; + static const char *const ADD_EVENTS; + static const char *const DELETE_EVENT; + static const char *const DELETE_EVENTS; + static const char *const UPDATE_EVENT; + static const char *const UPDATE_EVENTS; + static const char *const GET_EVENT; + static const char *const GET_EVENTS; + static const char *const GET_ACCOUNT; + static const char *const GET_CONFIG; + static const char *const SET_CONFIG; + +private: + // Helper function: Convert JS object to CalendarAccount + static bool ConvertToCalendarAccount(const JSIValue jsAccount, CalendarAccount &account); + // Helper function: Convert CalendarEvent to JS object + static JSIValue ConvertToJSEvent(const CalendarEvent &event); + // Helper function: Convert CalendarAccount to JS object + static JSIValue ConvertToJSAccount(const CalendarAccount &account); + // Release callback data + static void FreeCallbackData(CalendarCallback *callbackData); + + static CalendarCallback *callbackData_; +}; + +} // namespace ACELite +} // namespace OHOS + +#endif // OHOS_ACELITE_CALENDAR_MODULE_H diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/calendarManager/calendar_timer.cpp b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/calendarManager/calendar_timer.cpp new file mode 100644 index 000000000..56293fb9d --- /dev/null +++ b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/calendarManager/calendar_timer.cpp @@ -0,0 +1,168 @@ +/** + * Copyright (c) CompanyNameMagicTag 2025-2025. All rights reserved. + * Description: appmanger_module module. + * Author: CompanyName + * Create: 2025-09-04 + */ +#include +#include +#include +#include +#include +#include +#include +#include "ace_mem_base.h" +#include "memory_heap.h" +#include "ace_log.h" +#include "calendar_timer.h" + +namespace OHOS { +namespace ACELite { + +// Timer callback function +static void TimerCallback(union sigval v) +{ + struct CalendarTimer *timer = (struct CalendarTimer *)v.sival_ptr; + if (timer != nullptr && timer->cb != nullptr) { + timer->cb(timer->arg); + } +} + +CalendarTimer *CalendarTimerInit(int32_t periodMs, CalendarTimerCb cb, void *arg, bool isPeriodic) +{ + CalendarTimer *timer = CalendarTimerCreate(periodMs, cb, arg, isPeriodic); + if (timer) { + int ret = CalendarTimerSetTime(timer, periodMs, true); + if (ret != 0) { + CalendarTimerDelete(timer); + return nullptr; + } + } else { + return nullptr; + } + int ret = CalendarTimerStart(timer); + if (ret != 0) { + CalendarTimerDelete(timer); + return nullptr; + } + return timer; +} + +CalendarTimer *CalendarTimerCreate(int32_t periodMs, CalendarTimerCb cb, void *arg, bool isPeriodic) +{ + // Parameter validation + if (periodMs <= 0 || periodMs > MAX_PERIOD_MS || cb == nullptr) { + HILOG_ERROR(HILOG_MODULE_ACE, "Timer create failed, invalid parameters. period=%d", periodMs); + return nullptr; + } + + // Allocate timer structure + struct CalendarTimer *timer = (struct CalendarTimer *)malloc(sizeof(struct CalendarTimer)); + if (timer == nullptr) { + HILOG_ERROR(HILOG_MODULE_ACE, "Timer create failed, out of memory."); + return nullptr; + } + + // Initialize timer structure + memset_s(timer, sizeof(struct CalendarTimer), 0, sizeof(struct CalendarTimer)); + timer->cb = cb; + timer->arg = arg; + timer->periodMs = periodMs; + timer->isPeriodic = isPeriodic; + + // Create system timer + struct sigevent sev; + memset_s(&sev, sizeof(sev), 0, sizeof(sev)); + sev.sigev_notify = SIGEV_THREAD; + sev.sigev_notify_function = TimerCallback; + sev.sigev_value.sival_ptr = timer; + + if (timer_create(CLOCK_REALTIME, &sev, &timer->timerId) == -1) { + HILOG_ERROR(HILOG_MODULE_ACE, "Timer create failed. err=%s", strerror(errno)); + free(timer); + return nullptr; + } + + return timer; +} + +int CalendarTimerSetTime(CalendarTimer *timer, int32_t periodMs, bool isPeriodic) +{ + if (timer == nullptr || periodMs <= 0 || periodMs > MAX_PERIOD_MS) { + HILOG_ERROR(HILOG_MODULE_ACE, "Timer set time failed, invalid parameters."); + return -1; + } + + timer->periodMs = periodMs; + timer->isPeriodic = isPeriodic; + return 0; +} + +int CalendarTimerStart(CalendarTimer *timer) +{ + if (timer == nullptr || timer->periodMs <= 0) { + HILOG_ERROR(HILOG_MODULE_ACE, "Timer start failed, invalid timer.\n"); + return -1; + } + + struct itimerspec its; + its.it_value.tv_sec = timer->periodMs / MS_PER_SECOND; + its.it_value.tv_nsec = (timer->periodMs % MS_PER_SECOND) * NS_PER_MS; + + if (timer->isPeriodic) { + its.it_interval.tv_sec = its.it_value.tv_sec; + its.it_interval.tv_nsec = its.it_value.tv_nsec; + } else { + its.it_interval.tv_sec = 0; + its.it_interval.tv_nsec = 0; + } + + if (timer_settime(timer->timerId, 0, &its, nullptr) == -1) { + HILOG_ERROR(HILOG_MODULE_ACE, "Timer start failed. err=%s\n", strerror(errno)); + return -1; + } + + return 0; +} + +int CalendarTimerStop(CalendarTimer *timer) +{ + if (timer == nullptr) { + HILOG_ERROR(HILOG_MODULE_ACE, "Timer stop failed, invalid timer.\n"); + return -1; + } + + struct itimerspec its; + memset_s(&its, sizeof(its), 0, sizeof(its)); + + if (timer_settime(timer->timerId, 0, &its, nullptr) == -1) { + HILOG_ERROR(HILOG_MODULE_ACE, "Timer stop failed. err=%s\n", strerror(errno)); + return -1; + } + + return 0; +} + +int CalendarTimerDelete(CalendarTimer *timer) +{ + if (timer == nullptr) { + HILOG_ERROR(HILOG_MODULE_ACE, "Timer delete failed, invalid timer.\n"); + return -1; + } + + // Stop the timer first + CalendarTimerStop(timer); + + // Delete system timer + if (timer_delete(timer->timerId) == -1) { + HILOG_ERROR(HILOG_MODULE_ACE, "Timer delete failed. err=%s\n", strerror(errno)); + free(timer); + return -1; + } + + // Free timer structure + free(timer); + return 0; +} +} // namespace ACELite +} // namespace OHOS diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/calendarManager/calendar_timer.h b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/calendarManager/calendar_timer.h new file mode 100644 index 000000000..71d6173c2 --- /dev/null +++ b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/calendarManager/calendar_timer.h @@ -0,0 +1,87 @@ +/** + * Copyright (c) CompanyNameMagicTag 2025-2025. All rights reserved. + * Description: appmanger_module module. + * Author: CompanyName + * Create: 2025-09-04 + */ +#ifndef CALENDAR_TIMER_H +#define CALENDAR_TIMER_H + +#include +#include +#include +#include "sys/time.h" + +#define MAX_PERIOD_MS 86400000 // Maximum period is 24 hours +#define MS_PER_SECOND 1000 +#define NS_PER_MS 1000000 + +static constexpr int16_t SEC_TO_MILLI = 1000; +static constexpr int16_t USEC_TO_MILLI = 1000; +static constexpr int16_t MIN_TO_HOUR = 60; +static constexpr int16_t HOURLY_SYSTEM = 24; + +namespace OHOS { +namespace ACELite { + +// Timer callback function type +typedef void (*CalendarTimerCb)(void *arg); + +// Timer structure definition +struct CalendarTimer { + timer_t timerId; // System timer ID + CalendarTimerCb cb; // Callback function + void *arg; // Argument for callback function + int32_t periodMs; // Period time (in milliseconds) + bool isPeriodic; // Whether it's a periodic timer +}; + +// Timer handle structure (opaque type, users don't need to know the internal implementation) +typedef struct CalendarTimer CalendarTimer; + +CalendarTimer *CalendarTimerInit(int32_t periodMs, CalendarTimerCb cb, void *arg, bool isPeriodic); + +/** + * Create a timer + * @param periodMs Period time in milliseconds. For one-shot timers, this is the first trigger time + * @param cb Timer callback function + * @param arg Argument passed to the callback function + * @param isPeriodic Whether it's a periodic timer + * @return Returns timer handle on success, nullptr on failure + */ +CalendarTimer *CalendarTimerCreate(int32_t periodMs, CalendarTimerCb cb, void *arg, bool isPeriodic); + +/** + * Set the timer's time + * @param timer Timer handle + * @param periodMs Period time in milliseconds + * @param isPeriodic Whether it's a periodic timer + * @return Returns 0 on success, -1 on failure + */ +int CalendarTimerSetTime(CalendarTimer *timer, int32_t periodMs, bool isPeriodic); + +/** + * Start the timer + * @param timer Timer handle + * @return Returns 0 on success, -1 on failure + */ +int CalendarTimerStart(CalendarTimer *timer); + +/** + * Stop the timer + * @param timer Timer handle + * @return Returns 0 on success, -1 on failure + */ +int CalendarTimerStop(CalendarTimer *timer); + +/** + * Delete the timer + * @param timer Timer handle + * @return Returns 0 on success, -1 on failure + */ +int CalendarTimerDelete(CalendarTimer *timer); + +} // namespace ACELite +} // namespace OHOS + +#endif // CALENDAR_TIMER_H diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/calendarManager/calendar_utils.h b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/calendarManager/calendar_utils.h new file mode 100644 index 000000000..34967c1f6 --- /dev/null +++ b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/calendarManager/calendar_utils.h @@ -0,0 +1,26 @@ +/** + * Copyright (c) CompanyNameMagicTag 2025-2025. All rights reserved. + * Description: appmanger_module module. + * Author: CompanyName + * Create: 2025-09-04 + */ +#ifndef OHOS_ACELITE_CALENDAR_UTILS_H +#define OHOS_ACELITE_CALENDAR_UTILS_H + +#include +namespace OHOS { +namespace ACELite { + +#ifdef __cplusplus +extern "C" { +#endif +void SetCanlendarFilePath(char *hapPath); +const char *GetCanlendarFilePath(void); +#ifdef __cplusplus +}; +#endif + +} // namespace ACELite +} // namespace OHOS + +#endif // OHOS_ACELITE_CALENDAR_MODULE_H diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/calendarManager/event_id_manager.cpp b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/calendarManager/event_id_manager.cpp new file mode 100644 index 000000000..c960af15b --- /dev/null +++ b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/calendarManager/event_id_manager.cpp @@ -0,0 +1,475 @@ +/** + * Copyright (c) CompanyNameMagicTag 2025-2025. All rights reserved. + * Description: appmanger_module module. + * Author: CompanyName + * Create: 2025-09-04 + */ +#include +#include +#include +#include +#include +#include +#include +#include "cJSON.h" +#include "calendar_utils.h" +#include "msg_center_msg.h" +#include "msg_center_client.h" +#include "event_id_manager.h" + +namespace OHOS { +namespace ACELite { +#define ALLOC_CALENDAR_EVENTID_FAILD -1 +#define MINUTE_IN_MILLISECONDS 60000 +// Global containers (after splitting) +std::map reminderEventMap; // Reminder event container +std::map normalEventMap; // Non-reminder event container +std::unordered_set usedEventIds; // Used ID set +int64_t g_reminderEventCount = 0; // Reminder event count + +/** + * @brief Read file content into a string + */ +static char *ReadFileToString(const char *filePath) +{ + if (!filePath) { + printf("[ERROR] File path is nullptr\n"); + return nullptr; + } + + FILE *file = fopen(filePath, "r"); + if (!file) { + printf("[ERROR] Failed to open file %s (errno: %d)\n", filePath, errno); + return nullptr; + } + + fseek(file, 0, SEEK_END); + long fileSize = ftell(file); + fseek(file, 0, SEEK_SET); + + if (fileSize < 0) { + printf("[ERROR] Failed to get file size (errno: %d)\n", errno); + fclose(file); + return nullptr; + } + + char *buffer = (char *)malloc(fileSize + 1); + if (!buffer) { + printf("[ERROR] Malloc buffer failed\n"); + fclose(file); + return nullptr; + } + + size_t readSize = fread(buffer, 1, fileSize, file); + if (readSize != static_cast(fileSize)) { + printf("[ERROR] Failed to read file content\n"); + free(buffer); + fclose(file); + return nullptr; + } + buffer[readSize] = '\0'; + + fclose(file); + return buffer; +} + +/** + * @brief Parse calendar event from JSON object + */ +static CalendarEvent *parseCalendarEvent(cJSON *eventJson) +{ + if (!eventJson) { + return nullptr; + } + + CalendarEvent *event = (CalendarEvent *)malloc(sizeof(CalendarEvent)); + if (!event) { + return nullptr; + } + memset_s(event, sizeof(CalendarEvent), 0, sizeof(CalendarEvent)); + + cJSON *idJson = cJSON_GetObjectItem(eventJson, "id"); + cJSON *typeJson = cJSON_GetObjectItem(eventJson, "type"); + cJSON *startTimeJson = cJSON_GetObjectItem(eventJson, "startTime"); + cJSON *endTimeJson = cJSON_GetObjectItem(eventJson, "endTime"); + cJSON *bundlenameJson = cJSON_GetObjectItem(eventJson, "bundlename"); + cJSON *isAllDayJson = cJSON_GetObjectItem(eventJson, "isAllDay"); + cJSON *hasReminderJson = cJSON_GetObjectItem(eventJson, "hasReminder"); + cJSON *isRepeatJson = cJSON_GetObjectItem(eventJson, "isRepeat"); + cJSON *recurrenceFrequencyJson = cJSON_GetObjectItem(eventJson, "recurrenceFrequency"); + cJSON *eventContentJson = cJSON_GetObjectItem(eventJson, "eventContent"); + + event->id = idJson ? idJson->valueint : 0; + event->type = typeJson ? typeJson->valueint : 0; + event->startTime = startTimeJson ? (int64_t)startTimeJson->valuedouble : 0; + event->endTime = endTimeJson ? (int64_t)endTimeJson->valuedouble : 0; + + if (bundlenameJson && bundlenameJson->valuestring) { + strncpy_s(event->bundlename, sizeof(event->bundlename) - 1, + bundlenameJson->valuestring, sizeof(event->bundlename) - 1); + } + + event->isAllDay = isAllDayJson ? (isAllDayJson->type == cJSON_True) : false; + event->hasReminder = hasReminderJson ? (hasReminderJson->type == cJSON_True) : false; + event->isRepeat = isRepeatJson ? (isRepeatJson->type == cJSON_True) : false; + event->recurrenceFrequency = recurrenceFrequencyJson ? recurrenceFrequencyJson->valuedouble : 0; + + if (eventContentJson && eventContentJson->valuestring) { + strncpy_s(event->eventContent, sizeof(event->eventContent) - 1, + eventContentJson->valuestring, sizeof(event->eventContent) - 1); + } + return event; +} + +/** + * @brief Get current timestamp (in milliseconds) + */ +static int64_t GetCurrentTimestamp() +{ + struct timeval tv; + gettimeofday(&tv, nullptr); + return static_cast( + static_cast(tv.tv_sec) * SEC_TO_MILLI + + static_cast(tv.tv_usec) / SEC_TO_MILLI + ); +} + +/** + * @brief Calendar timer callback function + */ +static void CalendarTimerCallback(void *arg) +{ + struct timeval tv; + gettimeofday(&tv, nullptr); + uint64_t currentTimeMs = GetCurrentTimestamp(); + + // Use iterator for traversal to support safe element deletion + auto it = reminderEventMap.begin(); + while (it != reminderEventMap.end()) { + // Remove const qualifier since we need to modify startTime and endTime + CalendarEvent *event = it->second; + if (!event) { + // Handle null pointer event, delete directly + it = reminderEventMap.erase(it); + g_reminderEventCount--; + continue; + } + + // Logic correction: consider "triggered" when current time exceeds start time + bool isTriggered = (currentTimeMs > event->startTime); + if (isTriggered) { + MsgCenterSendMsg(CALENDAR_TO_MSGCENTER, 0, (void *)event, sizeof(CalendarEvent)); + if (event->isRepeat) { + // Calculate next trigger time for recurring events + uint64_t times = (currentTimeMs - event->startTime) / event->recurrenceFrequency; + event->startTime += (times + 1) * event->recurrenceFrequency; + event->endTime += (times + 1) * event->recurrenceFrequency; + ++it; // Move to next element + } else { + // Insert key-value pair (not iterator) to normalEventMap + normalEventMap.insert(*it); + // Remove from reminderEventMap and move iterator + it = reminderEventMap.erase(it); + g_reminderEventCount--; + } + } else { + // Untriggered events: keep in reminder list + ++it; // Move to next element + } + } +} + +// Check if it's a valid reminder event +static bool CheckValidReminderEvent(int64_t currentTimeMs, CalendarEvent *event) +{ + bool isActiveReminder = false; + if (event->hasReminder) { + bool isExpired = (currentTimeMs > event->startTime); + if (!(isExpired && !event->isRepeat)) { + isActiveReminder = true; + if (isExpired && event->isRepeat) { + uint64_t times = (currentTimeMs - event->startTime) / event->recurrenceFrequency; + event->startTime += ((times + 1) * event->recurrenceFrequency); + event->endTime += ((times + 1) * event->recurrenceFrequency); + } + } + } + return isActiveReminder; +} + +/** + * @brief Initialize event maps from JSON file + */ +bool InitEventMaps() +{ + ClearAllEvents(); + char *jsonContent = ReadFileToString(GetCanlendarFilePath()); + if (!jsonContent) { + return false; + } + cJSON *root = cJSON_Parse(jsonContent); + free(jsonContent); + if (!root) { + return false; + } + int64_t currentTimeMs = GetCurrentTimestamp(); + + cJSON *userNode = nullptr; + cJSON_ArrayForEach(userNode, root) + { + cJSON *userProp = nullptr; + cJSON_ArrayForEach(userProp, userNode) + { + if (strcmp(userProp->string, "events") == 0 && cJSON_IsArray(userProp)) { + cJSON *eventNode = nullptr; + cJSON_ArrayForEach(eventNode, userProp) + { + CalendarEvent *event = parseCalendarEvent(eventNode); + if (!event) { + continue; + } + + usedEventIds.insert(event->id); + if (CheckValidReminderEvent(currentTimeMs, event)) { + reminderEventMap[event->id] = event; + g_reminderEventCount++; + } else { + normalEventMap[event->id] = event; + } + } + } + } + } + CalendarTimerInit(MINUTE_IN_MILLISECONDS, CalendarTimerCallback, nullptr, true); + + cJSON_Delete(root); + return true; +} + +/** + * @brief Clear all event data + */ +void ClearAllEvents() +{ + // Free reminder event memory + for (auto &pair : reminderEventMap) { + if (pair.second) + free(pair.second); + } + reminderEventMap.clear(); + + // Free non-reminder event memory + for (auto &pair : normalEventMap) { + if (pair.second) + free(pair.second); + } + normalEventMap.clear(); + + usedEventIds.clear(); + g_reminderEventCount = 0; +} + +/** + * @brief Check if specified ID is already in use + */ +bool IsEventIdInUse(int64_t id) +{ + if (id < MIN_EVENT_ID || id > MAX_EVENT_ID) { + return false; + } + return usedEventIds.find(id) != usedEventIds.end(); +} + +/** + * @brief Automatically allocate ID and set event + */ +int64_t AllocateAndSetCalendarEvent(CalendarEvent *event) +{ + if (!event) { + return ALLOC_CALENDAR_EVENTID_FAILD; + } + + // Check reminder event count + if (event->hasReminder && g_reminderEventCount >= MAX_REMINDER_COUNT) { + fprintf(stderr, "Reminder events have reached maximum limit\n"); + return ALLOC_CALENDAR_EVENTID_FAILD; + } + int64_t currentTime = GetCurrentTimestamp(); + // Find available ID + for (int64_t id = MIN_EVENT_ID; id <= MAX_EVENT_ID; ++id) { + if (!IsEventIdInUse(id)) { + event->id = id; + usedEventIds.insert(id); + + // Add to corresponding container based on reminder property + if (event->hasReminder && ((event->startTime > currentTime || event->isRepeat))) { + reminderEventMap[id] = event; + g_reminderEventCount++; + } else { + normalEventMap[id] = event; + } + return id; + } + } + fprintf(stderr, "No available event ID\n"); + return ALLOC_CALENDAR_EVENTID_FAILD; +} + +/** + * @brief Set event with specified ID + */ +bool SetCalendarEventWithSpecificId(int64_t id, CalendarEvent *event) +{ + if (!event || id < MIN_EVENT_ID || id > MAX_EVENT_ID) { + return false; + } + if (IsEventIdInUse(id)) { + return false; + } + + // Check reminder event count + if (event->hasReminder && g_reminderEventCount >= MAX_REMINDER_COUNT) { + return false; + } + + event->id = id; + usedEventIds.insert(id); + + // Add to corresponding container based on reminder property + if (event->hasReminder) { + reminderEventMap[id] = event; + g_reminderEventCount++; + } else { + normalEventMap[id] = event; + } + + return true; +} + +/** + * @brief Free resources for event with specified ID + */ +int FreeEventId(int64_t id) +{ + if (id < MIN_EVENT_ID || id > MAX_EVENT_ID) { + return 0; + } + if (!IsEventIdInUse(id)) { + return 0; + } + + // Free from corresponding container + auto remIt = reminderEventMap.find(id); + if (remIt != reminderEventMap.end()) { + free(remIt->second); + reminderEventMap.erase(remIt); + g_reminderEventCount--; + usedEventIds.erase(id); + return 1; + } + + auto normIt = normalEventMap.find(id); + if (normIt != normalEventMap.end()) { + free(normIt->second); + normalEventMap.erase(normIt); + usedEventIds.erase(id); + return 1; + } + + return 0; +} + +/** + * @brief Get event with specified ID + */ +CalendarEvent *GetCalendarEvent(int64_t id) +{ + if (id < MIN_EVENT_ID || id > MAX_EVENT_ID) { + return nullptr; + } + + auto remIt = reminderEventMap.find(id); + if (remIt != reminderEventMap.end()) + return remIt->second; + + auto normIt = normalEventMap.find(id); + if (normIt != normalEventMap.end()) + return normIt->second; + + return nullptr; +} + +/** + * @brief Get current count of reminder events + */ +int GetReminderEventCount() +{ + return g_reminderEventCount; +} + +/** + * @brief Check if more reminder events can be added + */ +bool CanAddMoreReminders() +{ + return g_reminderEventCount < MAX_REMINDER_COUNT; +} + +/** + * @brief Update non-reminder event to reminder event + */ +bool UpdateNonReminderToReminder(int64_t id, CalendarEvent *updatedEvent) +{ + if (id < MIN_EVENT_ID || id > MAX_EVENT_ID || !updatedEvent || !updatedEvent->hasReminder) { + return false; + } + + // Check if original event is a non-reminder event + auto normIt = normalEventMap.find(id); + if (normIt == normalEventMap.end() || !normIt->second) { + return false; + } + + // Check reminder event count + if (g_reminderEventCount >= MAX_REMINDER_COUNT) { + return false; + } + + // Free original event, add new event to reminder container + free(normIt->second); + normalEventMap.erase(normIt); + + updatedEvent->id = id; + reminderEventMap[id] = updatedEvent; + g_reminderEventCount++; + + return true; +} + +/** + * @brief Timer initialization function (external implementation) + */ +void CalendarTimerInit(uint32_t intervalMs, void (*callback)(void *), void *arg, bool isLoop) +{ + // Timer implementation provided externally + printf("Timer initialized, interval: %u ms\n", intervalMs); +} + +/** + * @brief Get reminder event container + */ +const std::map &GetReminderEventMap() +{ + return reminderEventMap; +} + +/** + * @brief Get non-reminder event container + */ +const std::map &GetNormalEventMap() +{ + return normalEventMap; +} + +} // namespace ACELite +} // namespace OHOS diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/calendarManager/event_id_manager.h b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/calendarManager/event_id_manager.h new file mode 100644 index 000000000..892df3c3e --- /dev/null +++ b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/calendarManager/event_id_manager.h @@ -0,0 +1,124 @@ +/** + * Copyright (c) CompanyNameMagicTag 2025-2025. All rights reserved. + * Description: appmanger_module module. + * Author: CompanyName + * Create: 2025-09-04 + */ +#ifndef EVENT_ID_MANAGER_H +#define EVENT_ID_MANAGER_H + +#include +#include +#include +#include "calendar_timer.h" +#include "calendar_manager.h" + +namespace OHOS { +namespace ACELite { + +// Event ID range constants +const int64_t MIN_EVENT_ID = 1; // Minimum event ID +const int64_t MAX_EVENT_ID = 64; // Maximum event ID +const int64_t MAX_REMINDER_COUNT = 32; // Maximum number of reminder events + +// Global container declarations +extern std::map reminderEventMap; // Reminder event container +extern std::map normalEventMap; // Non-reminder event container +extern std::unordered_set usedEventIds; // Set of used IDs +extern int64_t g_reminderEventCount; + +// Function declarations +/** + * @brief Initialize event containers from JSON file (automatically split into reminder and non-reminder containers) + * @param jsonFilePath Path to the JSON file + * @return Returns true if initialization is successful, false otherwise + */ +bool InitEventMaps(); + +/** + * @brief Clear all event containers and free memory + */ +void ClearAllEvents(); + +/** + * @brief Check if the specified ID is already in use + * @param id Event ID + * @return Returns true if the ID is in use, false otherwise + */ +bool IsEventIdInUse(int64_t id); + +/** + * @brief Automatically allocate ID and add event (classified into corresponding container based on hasReminder + * property) + * @param event Pointer to the event + * @return Returns the allocated ID on success, 0 on failure + */ +int64_t AllocateAndSetCalendarEvent(CalendarEvent *event); + +/** + * @brief Add event with specified ID (classified into corresponding container based on hasReminder property) + * @param id Event ID + * @param event Pointer to the event + * @return Returns true on success, false on failure + */ +bool SetCalendarEventWithSpecificId(int64_t id, CalendarEvent *event); + +/** + * @brief Free the event with the specified ID + * @param id Event ID + * @return Returns 1 on success, 0 on failure + */ +int FreeEventId(int64_t id); + +/** + * @brief Get the event with the specified ID + * @param id Event ID + * @return Returns pointer to the event on success, nullptr on failure + */ +CalendarEvent *GetCalendarEvent(int64_t id); + +/** + * @brief Get the count of reminder events + * @return Number of reminder events + */ +int GetReminderEventCount(); + +/** + * @brief Check if more reminder events can be added + * @return Returns true if more reminders can be added, false otherwise + */ +bool CanAddMoreReminders(); + +/** + * @brief Update a non-reminder event to a reminder event + * @param id Event ID + * @param updatedEvent Updated event + * @return Returns true on success, false on failure + */ +bool UpdateNonReminderToReminder(int64_t id, CalendarEvent *updatedEvent); + +/** + * @brief Timer initialization function + * @param intervalMs Timer interval in milliseconds + * @param callback Callback function + * @param arg Callback argument + * @param isLoop Whether to loop periodically + */ +void CalendarTimerInit(uint32_t intervalMs, void (*callback)(void *), void *arg, bool isLoop); + +/** + * @brief Get the reminder event container (for external traversal) + * @return Constant reference to the reminder event container + */ +const std::map &GetReminderEventMap(); + +/** + * @brief Get the non-reminder event container (for external traversal) + * @return Constant reference to the non-reminder event container + */ +const std::map &GetNormalEventMap(); + +} // namespace ACELite +} // namespace OHOS + +#endif // EVENT_ID_MANAGER_H diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/display/display.cpp b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/display/display.cpp index 3fc7f1ddc..99f6009bf 100644 --- a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/display/display.cpp +++ b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/display/display.cpp @@ -89,8 +89,10 @@ JSIValue DisplayModule::SetKeepScreenOn(const JSIValue thisVal, const JSIValue * if (display_api->get_screen_state() != SCREEN_ON) { display_api->turn_on_screen(); } + result = display_api->set_screen_set_keepon_timeout(0); result = display_api->set_screen_set_keepon_timeout(3600000); // 3600000ms } else { + result = display_api->set_screen_set_keepon_timeout(0); result = display_api->set_screen_set_keepon_timeout(g_keepOnTimeout); } if (result == ERRCODE_SUCC) { diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/geolocation_module.cpp b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/geolocation_module.cpp index ae517f878..a6594725c 100644 --- a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/geolocation_module.cpp +++ b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/geolocation_module.cpp @@ -27,15 +27,31 @@ namespace ACELite { using namespace OHOS::Location; -const double LocationModule::LONGITUDE = 123.456789; -const double LocationModule::LATITUDE = 45.678901; -const double LocationModule::ALTITUDE = 100.0; -const double LocationModule::ACCURACY = 10.0; -const uint32_t LocationModule::TIME = 163456789; +double LocationModule::LONGITUDE = 123.456789; +double LocationModule::LATITUDE = 45.678901; +double LocationModule::ALTITUDE = 100.0; +double LocationModule::ACCURACY = 10.0; +uint32_t LocationModule::TIME = 163456789; +double LocationModule::SPEED_ACCURACY = 14.72; +double LocationModule::ALTITUDE_ACCURACY = 8.4; +double LocationModule::DIRECTION_ACCURACY = 0; +double LocationModule::VELOCITY_NORTH = -43.311; +double LocationModule::VELOCITY_EAST = 16.366; +double LocationModule::VELOCITY_DESCEND = 10; +int32_t LocationModule::SATELLITE_NUMBER = 49; +int32_t LocationModule::STATUS_NUMBER = 1; const char *const LocationModule::LONGITUDE_NAME = "longitude"; const char *const LocationModule::LATITUDE_NAME = "latitude"; const char *const LocationModule::ALTITUDE_NAME = "altitude"; const char *const LocationModule::ACCURACY_NAME = "accuracy"; +const char *const LocationModule::SPEED_ACCURACY_NAME = "speedAccuracy"; +const char *const LocationModule::ALTITUDE_ACCURACY_NAME = "altitudeAccuracy"; +const char *const LocationModule::DIRECTION_ACCURACY_NAME = "directionAccuracy"; +const char *const LocationModule::VELOCITY_NORTH_NAME = "velocityNorth"; +const char *const LocationModule::VELOCITY_EAST_NAME = "velocityEast"; +const char *const LocationModule::VELOCITY_DESCEND_NAME = "velocityDescend"; +const char *const LocationModule::STATUS_NUMBER_NAME = "statusNumber"; +const char *const LocationModule::SATELLITE_NUMBER_NAME = "satelliteNubmer"; const char *const LocationModule::TIME_NAME = "time"; const char *const LocationModule::COORD_TYPES_NAME = "coordType"; const char *const LocationModule::LOCATIONTYPE_NAME = "types"; @@ -48,6 +64,7 @@ typedef struct { } CoordTypeMap; LocatorCallback *LocationModule::locatorCallback_ = nullptr; +GnssStatusCallback *LocationModule::gnssStatusCallback_ = nullptr; static CoordTypeMap g_coordTypeMap[] = { {WGS84, "WGS84"}, @@ -86,7 +103,7 @@ JSIValue LocationModule::GetSupportCoordTypes(const JSIValue thisVal, const JSIV JSIValue LocationModule::Unsubscribe(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum) { #if defined(ENABLE_LOCATION) - ExecuteUnsubscribe(); + JsAsyncWork::DispatchAsyncWork(ExecuteUnsubscribe, nullptr); #endif return JSI::CreateUndefined(); } @@ -139,14 +156,44 @@ JSIValue LocationModule::ExecuteAsyncWork( return undefValue; } +void LocationModule::OnDestroy() +{ + UnsubscribeAndStopLocating(); +} + +void GnssStatusCallback::OnStatusChange(const std::shared_ptr &statusInfo) +{ + LocationModule::SATELLITE_NUMBER = statusInfo->GetSatellitesNumber(); +} + void LocatorCallback::OnLocationReport(const std::shared_ptr &location) { JSIValue result = JSI::CreateObject(); + LocationModule::LONGITUDE = location->GetLongitude(); + LocationModule::LATITUDE = location->GetLatitude(); + LocationModule::ALTITUDE = location->GetAltitude(); + LocationModule::ACCURACY = location->GetAccuracy(); + LocationModule::TIME = static_cast(location->GetTimeStamp()); + LocationModule::SPEED_ACCURACY = location->GetSpeedAccuracy(); + LocationModule::ALTITUDE_ACCURACY = location->GetAltitudeAccuracy(); + LocationModule::DIRECTION_ACCURACY = location->GetDirectionAccuracy(); + LocationModule::VELOCITY_NORTH = location->GetNorthVelocity(); + LocationModule::VELOCITY_EAST = location->GetEastVelocity(); + LocationModule::VELOCITY_DESCEND = location->GetDescendVelocity(); + LocationModule::STATUS_NUMBER = location->GetStatusNumber(); JSI::SetNumberProperty(result, LocationModule::LONGITUDE_NAME, location->GetLatitude()); JSI::SetNumberProperty(result, LocationModule::LATITUDE_NAME, location->GetLongitude()); JSI::SetNumberProperty(result, LocationModule::ALTITUDE_NAME, location->GetAltitude()); JSI::SetNumberProperty(result, LocationModule::ACCURACY_NAME, location->GetAccuracy()); JSI::SetNumberProperty(result, LocationModule::TIME_NAME, static_cast(location->GetTimeStamp())); + JSI::SetNumberProperty(result, LocationModule::SPEED_ACCURACY_NAME, location->GetSpeedAccuracy()); + JSI::SetNumberProperty(result, LocationModule::ALTITUDE_ACCURACY_NAME, location->GetAltitudeAccuracy()); + JSI::SetNumberProperty(result, LocationModule::DIRECTION_ACCURACY_NAME, location->GetDirectionAccuracy()); + JSI::SetNumberProperty(result, LocationModule::VELOCITY_NORTH_NAME, location->GetNorthVelocity()); + JSI::SetNumberProperty(result, LocationModule::VELOCITY_EAST_NAME, location->GetEastVelocity()); + JSI::SetNumberProperty(result, LocationModule::VELOCITY_DESCEND_NAME, location->GetDescendVelocity()); + JSI::SetNumberProperty(result, LocationModule::STATUS_NUMBER_NAME, location->GetStatusNumber()); + JSI::SetNumberProperty(result, LocationModule::SATELLITE_NUMBER_NAME, LocationModule::SATELLITE_NUMBER); LocationModule::SuccessCallBack(thisVal_, args_, result); JSI::ReleaseValueList(result, ARGS_END); } @@ -166,6 +213,18 @@ LocatorCallback::~LocatorCallback() JSI::ReleaseValueList(args_, thisVal_, ARGS_END); } +void LocationModule::DestroyResources() +{ + if (locatorCallback_ != nullptr) { + delete locatorCallback_; + locatorCallback_ = nullptr; + } + if (gnssStatusCallback_ != nullptr) { + delete gnssStatusCallback_; + gnssStatusCallback_ = nullptr; + } +} + int32_t LocationModule::SubscribeAndStartLocating(void *data) { LocationParams *params = reinterpret_cast(data); @@ -184,6 +243,16 @@ int32_t LocationModule::SubscribeAndStartLocating(void *data) HILOG_ERROR(HILOG_MODULE_ACE, "locator EnableAbility failed:%d", errCode); return errCode; } + gnssStatusCallback_ = new (std::nothrow) GnssStatusCallback; + if (gnssStatusCallback_ == nullptr) { + HILOG_ERROR(HILOG_MODULE_ACE, "locator gnssStatusCallback_ null"); + return ERRCODE_FAILURE; + } + errCode = Locator::GetInstance().RegisterGnssStatusCallback(gnssStatusCallback_); + if (errCode != ERRCODE_SUCCESS) { + HILOG_ERROR(HILOG_MODULE_ACE, "locator RegisterGnssStatusCallback failed:%d\n", errCode); + return errCode; + } locatorCallback_ = new (std::nothrow) LocatorCallback(params->args, params->thisVal); if (locatorCallback_ == nullptr) { HILOG_ERROR(HILOG_MODULE_ACE, "locator locatorCallback_ null"); @@ -211,6 +280,10 @@ int32_t LocationModule::UnsubscribeAndStopLocating() HILOG_ERROR(HILOG_MODULE_ACE, "locator Is not LocationEnabled"); return ERRCODE_FAILURE; } + errCode = Locator::GetInstance().UnregisterGnssStatusCallback(gnssStatusCallback_); + if (errCode != ERRCODE_SUCCESS) { + HILOG_ERROR(HILOG_MODULE_ACE, "locator UnregisterGnssStatusCallback failed:%d", errCode); + } errCode = Locator::GetInstance().StopLocating(locatorCallback_); if (errCode != ERRCODE_SUCCESS) { HILOG_ERROR(HILOG_MODULE_ACE, "locator StopLocating failed:%d", errCode); @@ -219,10 +292,7 @@ int32_t LocationModule::UnsubscribeAndStopLocating() if (errCode != ERRCODE_SUCCESS) { HILOG_ERROR(HILOG_MODULE_ACE, "locator EnableAbility failed:%d", errCode); } - if (locatorCallback_ != nullptr) { - delete locatorCallback_; - locatorCallback_ = nullptr; - } + DestroyResources(); return ERRCODE_SUCCESS; } @@ -242,7 +312,7 @@ void LocationModule::ExecuteSubscribe(void *data) delete params; } -void LocationModule::ExecuteUnsubscribe() +void LocationModule::ExecuteUnsubscribe(void *data) { int32_t ret = UnsubscribeAndStopLocating(); if (ret != ERRCODE_SUCCESS) { @@ -286,30 +356,54 @@ void LocationModule::ExecuteGetLocation(void *data) JSI::SetNumberProperty(result, ALTITUDE_NAME, ALTITUDE); JSI::SetNumberProperty(result, ACCURACY_NAME, ACCURACY); JSI::SetNumberProperty(result, TIME_NAME, static_cast(TIME)); + JSI::SetNumberProperty(result, SPEED_ACCURACY_NAME, SPEED_ACCURACY); + JSI::SetNumberProperty(result, ALTITUDE_ACCURACY_NAME, ALTITUDE_ACCURACY); + JSI::SetNumberProperty(result, DIRECTION_ACCURACY_NAME, DIRECTION_ACCURACY); + JSI::SetNumberProperty(result, VELOCITY_NORTH_NAME, VELOCITY_NORTH); + JSI::SetNumberProperty(result, VELOCITY_EAST_NAME, VELOCITY_EAST); + JSI::SetNumberProperty(result, VELOCITY_DESCEND_NAME, VELOCITY_DESCEND); + JSI::SetNumberProperty(result, STATUS_NUMBER_NAME, STATUS_NUMBER); + JSI::SetNumberProperty(result, SATELLITE_NUMBER_NAME, SATELLITE_NUMBER); SuccessCallBack(thisVal, args, result); JSI::ReleaseString(coordType); JSI::ReleaseValueList(args, thisVal, result, ARGS_END); delete params; } -void LocationModule::SuccessCallBack(const JSIValue thisVal, const JSIValue args, JSIValue jsiValue) +void LocationModule::SuccessCallBackDispatch(void *data) { - if (JSI::ValueIsUndefined(args)) { + LocationParams *param = (LocationParams *)data; + if (JSI::ValueIsUndefined(param->args) || JSI::ValueIsUndefined(param->thisVal)) { + JSI::ReleaseValueList(param->jsiValue, param->args, param->thisVal); + delete param; return; } - JSIValue success = JSI::GetNamedProperty(args, CB_SUCCESS); - JSIValue complete = JSI::GetNamedProperty(args, CB_COMPLETE); + JSIValue success = JSI::GetNamedProperty(param->args, CB_SUCCESS); + JSIValue complete = JSI::GetNamedProperty(param->args, CB_COMPLETE); if (!JSI::ValueIsUndefined(success)) { - if (JSI::ValueIsUndefined(jsiValue)) { - JSI::CallFunction(success, thisVal, nullptr, 0); + if (JSI::ValueIsUndefined(param->jsiValue)) { + JSI::CallFunction(success, param->thisVal, nullptr, 0); } else { - JSI::CallFunction(success, thisVal, &jsiValue, ARGC_ONE); + JSI::CallFunction(success, param->thisVal, ¶m->jsiValue, ARGC_ONE); } } if (!JSI::ValueIsUndefined(complete)) { - JSI::CallFunction(complete, thisVal, nullptr, 0); + JSI::CallFunction(complete, param->thisVal, nullptr, 0); } - JSI::ReleaseValueList(success, complete, ARGS_END); + JSI::ReleaseValueList(param->jsiValue, param->args, param->thisVal, success, complete, ARGS_END); + delete param; +} + +void LocationModule::SuccessCallBack(const JSIValue thisVal, const JSIValue args, JSIValue jsiValue) +{ + LocationParams *params = new (std::nothrow) LocationParams(); + if (params == nullptr) { + return; + } + params->thisVal = JSI::AcquireValue(thisVal); + params->args = JSI::AcquireValue(args); + params->jsiValue = JSI::AcquireValue(jsiValue); + JsAsyncWork::DispatchAsyncWork(SuccessCallBackDispatch, reinterpret_cast(params)); } void LocationModule::FailCallBack(const JSIValue thisVal, const JSIValue args, int ret) diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/geolocation_module.h b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/geolocation_module.h index 422635f7a..505fce201 100644 --- a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/geolocation_module.h +++ b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/geolocation_module.h @@ -31,6 +31,16 @@ namespace ACELite { struct LocationParams { JSIValue args = JSI::CreateUndefined(); JSIValue thisVal = JSI::CreateUndefined(); + JSIValue jsiValue = JSI::CreateUndefined(); +}; + +class GnssStatusCallback : public Location::IGnssStatusCallback { +public: + GnssStatusCallback() {}; + ~GnssStatusCallback() {}; + + void OnStatusChange(const std::shared_ptr &statusInfo) override; +private: }; class LocatorCallback : public Location::ILocatorCallback { @@ -56,11 +66,19 @@ public: LocationModule() = default; ~LocationModule() = default; static const char * const COORD_TYPES; - static const double LONGITUDE; - static const double LATITUDE; - static const double ALTITUDE; - static const double ACCURACY; - static const uint32_t TIME; + static double LONGITUDE; + static double LATITUDE; + static double ALTITUDE; + static double ACCURACY; + static uint32_t TIME; + static double SPEED_ACCURACY; + static double ALTITUDE_ACCURACY; + static double DIRECTION_ACCURACY; + static double VELOCITY_NORTH; + static double VELOCITY_EAST; + static double VELOCITY_DESCEND; + static int32_t SATELLITE_NUMBER; + static int32_t STATUS_NUMBER; static const char * const LONGITUDE_NAME; static const char * const LATITUDE_NAME; static const char * const ALTITUDE_NAME; @@ -70,25 +88,35 @@ public: static const char * const LOCATIONTYPE_NAME; static const char * const LOCATIONTYPE; static const char * const TIMEOUT; + static const char * const SPEED_ACCURACY_NAME; + static const char * const ALTITUDE_ACCURACY_NAME; + static const char * const DIRECTION_ACCURACY_NAME; + static const char * const VELOCITY_NORTH_NAME; + static const char * const VELOCITY_EAST_NAME; + static const char * const VELOCITY_DESCEND_NAME; + static const char * const STATUS_NUMBER_NAME; + static const char * const SATELLITE_NUMBER_NAME; static JSIValue GetSupportCoordTypes(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum); static JSIValue Unsubscribe(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum); static JSIValue Subscribe(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum); static JSIValue GetLocationType(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum); static JSIValue GetLocation(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum); static void ExecuteSubscribe(void* data); - static void ExecuteUnsubscribe(); + static void ExecuteUnsubscribe(void* data); static void ExecuteGetLocationType(void* data); static void ExecuteGetLocation(void* data); - + static void OnDestroy(); private: friend class LocatorCallback; static JSIValue ExecuteAsyncWork(const JSIValue thisVal, const JSIValue* args, uint8_t argsNum, AsyncWorkHandler ExecuteFunc); static void SuccessCallBack(const JSIValue thisVal, const JSIValue args, JSIValue jsiValue); + static void SuccessCallBackDispatch(void *data); static void FailCallBack(const JSIValue thisVal, const JSIValue args, int ret); static int32_t SubscribeAndStartLocating(void *data); static int32_t UnsubscribeAndStopLocating(); + static void DestroyResources(); static LocatorCallback *locatorCallback_; - + static GnssStatusCallback *gnssStatusCallback_; }; void InitLocationModule(JSIValue exports) @@ -98,6 +126,8 @@ void InitLocationModule(JSIValue exports) JSI::SetModuleAPI(exports, "subscribe", LocationModule::Subscribe); JSI::SetModuleAPI(exports, "getLocationType", LocationModule::GetLocationType); JSI::SetModuleAPI(exports, "getLocation", LocationModule::GetLocation); + JSI::SetOnDestroy(exports, LocationModule::OnDestroy); + JSI::SetOnTerminate(exports, LocationModule::OnDestroy); } } // namespace ACELite diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/http/http_callback.h b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/http/http_callback.h new file mode 100644 index 000000000..ee078b248 --- /dev/null +++ b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/http/http_callback.h @@ -0,0 +1,62 @@ +/* + * Copyright (c) CompanyNameMagicTag. 2025-2025. All rights reserved. + * Description: http callback interfaces + * Author: Software Group + * Create: 2025-09-1 + */ + +#ifndef HTTP_CALLBACK_H +#define HTTP_CALLBACK_H + +#include "jsi.h" +#include "httpclient.h" +#include "http_errcode.h" +#include "ace_mem_base.h" + +namespace OHOS { +namespace ACELite { + +typedef HTTP_REQUEST_TYPE HttpRequestType; +typedef HTTP_ERRCODE HttpErrcode; +typedef HTTPC_RESULT HttpcResult; + +enum HttpDataType { + DATA_TYPE_STRING = 0, + DATA_TYPE_OBJECT = 1, + DATA_TYPE_ARRAY_BUFFER = 2 +}; + +enum HttpEventId { + HTTP_EVENT_RECEIVE = 0, + HTTP_EVENT_PROGRESS = 1, + HTTP_EVENT_END = 2, + HTTP_EVENT_MAX = 3 +}; + +struct HttpResult { + HttpErrcode resCode; + int responseCode; + const char *errMsg; + uint8_t *data; + int dataLen; + int receiveSize; + int totalSize; + bool isMore; + bool isFinish; + HttpDataType datatype; + HttpEventId eventId; + JSIValue context; + JSIValue callback; +}; + +class HttpCallback : public MemoryHeap { +public: + virtual ~HttpCallback() {} + virtual void CreateCallback(HttpResult* result) {} + virtual void CreateSubscription(HttpResult* result){} +}; + +} // namespace ACELite +} // namespace OHOS + +#endif \ No newline at end of file diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/http/http_module.h b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/http/http_module.h new file mode 100644 index 000000000..8d817bcf9 --- /dev/null +++ b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/http/http_module.h @@ -0,0 +1,47 @@ +/* + * Copyright (c) CompanyNameMagicTag. 2024-2025. All rights reserved. + * Description: http control interfaces + * Author: Software Group + * Create: 2025-03-28 + */ + +#ifndef HTTP_MODULE_H +#define HTTP_MODULE_H + +#include +#include +#include +#include "cmsis_os2.h" +#include "jsi.h" +#include "httpclient.h" + +namespace OHOS { +namespace ACELite { + +class HttpModule final : public MemoryHeap { +public: + HttpModule() = default; + ~HttpModule() = default; + + static JSIValue CreateHttp(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize); + static JSIValue Request(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize); + static JSIValue RequestInStream(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize); + static JSIValue Download(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize); + static JSIValue Upload(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize); + static JSIValue On(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize); + static JSIValue Once(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize); + static JSIValue Off(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize); + static JSIValue Destroy(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize); + static void OnTerminate(); + +private: + static HttpRequestType GetRequestType(const char *method); + static HttpEventId GetEventId(const char *event); + static char *HeaderJsonToString(char* headerJson); +}; +void InitHttpClientModule(JSIValue exports); + +} // namespace ACELite +} // namespace OHOS + +#endif // HTTP_MODULE_H \ No newline at end of file diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/http/http_module_callback.h b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/http/http_module_callback.h new file mode 100644 index 000000000..42f8353c1 --- /dev/null +++ b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/http/http_module_callback.h @@ -0,0 +1,43 @@ +/* + * Copyright (c) CompanyNameMagicTag. 2025-2025. All rights reserved. + * Description: http module callback interfaces + * Author: Software Group + * Create: 2025-09-1 + */ + +#ifndef HTTP_MODULE_CALLBACK_H +#define HTTP_MODULE_CALLBACK_H + +#include "jsi.h" +#include "http_errcode.h" +#include "http_callback.h" + +namespace OHOS { +namespace ACELite { + +class HttpModuleCallback final : public HttpCallback { +public: + + static HttpModuleCallback* GetInstance() + { + static HttpModuleCallback instance; + return &instance; + } + + void CreateCallback(HttpResult* result) override; + void CreateSubscription(HttpResult* result) override; + + static void ExecuteCallFunc(void *params); + static void ExecuteSubscription(void *params); +private: + HttpModuleCallback() = default; + ~HttpModuleCallback() = default; + + static void SendData(HttpResult* result); + static void SendStateInfo(HttpResult* result); +}; + +} // namespace ACELite +} // namespace OHOS + +#endif // HTTP_MODULE_CALLBACK_H \ No newline at end of file diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/http/http_module_client.h b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/http/http_module_client.h new file mode 100644 index 000000000..5076f79ae --- /dev/null +++ b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/http/http_module_client.h @@ -0,0 +1,123 @@ +/* + * Copyright (c) CompanyNameMagicTag. 2025-2025. All rights reserved. + * Description: http client interfaces + * Author: Software Group + * Create: 2025-10-20 + */ + +#ifndef HTTP_MODULE_CLIENT_H +#define HTTP_MODULE_CLIENT_H + +#include +#include "cmsis_os2.h" +#include "http_errcode.h" +#include "httpclient.h" +#include "http_module_callback.h" + +namespace OHOS { +namespace ACELite { + +enum HttpRequestId { + HTTP_REQUEST, + HTTP_REQUESTINSTREAM, + HTTP_DOWNLOAD, + HTTP_UPLOAD, + HTTP_FINISH, +}; + +struct HttpParam { + const char *url; + const char *header; + const char *filePath; + const char *clientCert; + char *postBuf; +}; + +struct HttpMessage { + HttpRequestId requestId; + HttpRequestType requestType; + HttpParam param; + int dataType; + JSIValue context; + JSIValue callback; +}; + +struct HttpRequest { + JSIValue request; + JSIValue requestInStream; + JSIValue download; + JSIValue upload; + JSIValue on; + JSIValue once; + JSIValue off; + JSIValue destroy; +}; + +struct HttpEvent { + JSIValue callback; + bool isOnce; +}; + +class HttpModuleClient final : public MemoryHeap { +public: + HttpModuleClient(); + ~HttpModuleClient(); + + bool IsRunning(void) const + { + return isRunning_ ; + } + + void InitCallback(HttpCallback* cbkInstance) + { + cbkInstance_ = cbkInstance; + } + + void Request(HttpParam ¶m, HttpRequestType requestType, int expectDataType, JSIValue context, JSIValue callback); + void RequestInStream(HttpParam ¶m, HttpRequestType requestType, int expectDataType, JSIValue context, JSIValue callback); + void Download(HttpParam ¶m, JSIValue context, JSIValue callback); + void Upload(HttpParam ¶m, JSIValue context, JSIValue callback); + + bool InitClient(void); + bool CreateHttpThread(void); + void StopThread(void); + osStatus_t HttpMessagePut(HttpMessage *message); + osStatus_t HttpMessageGet(HttpMessage *message); + HttpErrcode GetErrorCode(int errorCode); + + void SetHttpEvent(JSIValue callback, bool isOnce, HttpEventId id); + JSIValue GetHttpEvent(HttpEventId id); + + HttpClient client_{}; + HttpClientData clientData_{}; + osMessageQueueId_t httpQueueId_ = nullptr; + HttpRequest request_; + HttpEvent httpEvents_[HTTP_EVENT_MAX]; +private: + void ReleaseJSIValue(JSIValue value) + { + if (!JSI::ValueIsUndefined(value)) { + JSI::ReleaseValue(value); + } + } + + HttpDataType GetContentType(int expectDataType); + void CheckSubscription(HttpResult result); + + void ResetClient(void); + void CloseClient(void); + void ReleaseThread(void); + + static const uint32_t REQ_BUF_SIZE = 2048; + static const uint32_t RSP_BUF_SIZE = 2048; + bool isRunning_ = false; + void *stackMem_ = nullptr; + osThreadId_t streamId_ = nullptr; + HttpCallback* cbkInstance_; + std::mutex clientMutex_; +}; + +} // namespace ACELite +} // namespace OHOS + +#endif // HTTP_MODULE_CLIENT_H \ No newline at end of file diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/http_errcode.h b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/http_errcode.h index ce683ec8d..f7c90a02c 100644 --- a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/http_errcode.h +++ b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/http_errcode.h @@ -18,7 +18,7 @@ /** @brief http requst type */ typedef enum { - NET_SUCCESS = 200, + NET_SUCCESS = 0, NET_PARAMETER_ERROR = 401, NET_PERMISSION_DENIED = 201, NET_UNSUPPORTED_PROTOCOL = 2300001, @@ -52,5 +52,21 @@ typedef enum { NET_UNKNOWN_ERROR = 2300999, } HTTP_ERRCODE; +typedef enum { + WEBSOCKET_SUCCESS = 0, + WEBSOCKET_CONNECT_FAILED = 200, + WEBSOCKET_URL_ERROR = 2302001, + WEBSOCKET_CERT_MISSING = 2302002, + WEBSOCKET_CONN_EXISTS = 2302003, + WEBSOCKET_NIC_ERROR = 2302004, + WEBSOCKET_PORT_ERROR = 2302005, + WEBSOCKET_DOMAIN_DENIED = 2302998, + WEBSOCKET_INTERNAL_ERROR = 2302999, + WEBSOCKET_AUTH_FAILED = 201, + WEBSOCKET_API_AUTH_FAILED = 202, + WEBSOCKET_FUNC_DENIED = 203, + WEBSOCKET_PARAM_ERROR = 401, + WEBSOCKET_API_UNSUPPORTED = 801 +} WEBSOCKET_ERRCODE; #endif /* HTTPCLIENT_H */ \ No newline at end of file diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/netstack/http/include/httpclient.h b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/netstack/http/include/httpclient.h index 9a4712ade..28d2b03ca 100644 --- a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/netstack/http/include/httpclient.h +++ b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/netstack/http/include/httpclient.h @@ -76,6 +76,8 @@ typedef struct { char *headerBuf; /**< buffer to store the response head data. */ bool isRedirected; /**< redirected URL? if 1, has redirect url; if 0, no redirect url */ char *redirectUrl; /**< redirect url when got http 3** response code. */ + char *leftBuffer; /**< buffer to store last recv not report to user */ + int leftBufferLen; /**< last recv buffer length, not report to user */ } HttpClientData; /** @@ -186,6 +188,15 @@ HTTPC_RESULT HttpClientRecvResponse(HttpClient *client, HttpClientData *clientDa */ void HttpClientClse(HttpClient *client); +/** + * This function sends HTTP request. + * @param[in] client a pointer to the #HttpClient. + * @param[in] data post data buffer + * @param[in] length buffer length + * @return length of data be uploaded to server; value < 0, if errors occurred. + */ +int HttpClientSendData(HttpClient *client, const char *postData, size_t length); + /** * This function sets a custom header. * @param[in] client client is a pointer to the #HttpClient. @@ -211,6 +222,33 @@ int HttpClientGetResponseCode(HttpClient *client); */ int HttpClientGetResponseHeaderValue(char *headerBuf, char *name, int *valPos, int *valLen); +/** + * This function add text formdata information. + * @param[in] clientData clientData is a pointer to the #HttpClientData. + * @param[in] contentType contentType is a pointer to the content type string. + * @param[in] name name is a pointer to the name string. + * @param[in] data data is a pointer to the data. + * @param[in] dataLen dataLen is the data length. + * @return The HTTP response code of the last request. + */ +int HttpClientFormdataAddText(HttpClientData *clientData, char *contentType, char *name, char *data, int dataLen); + +/** + * This function add file formdata information. + * @param[in] clientData clientData is a pointer to the #HttpClientData. + * @param[in] name name is a pointer to the name string. + * @param[in] contentType contentType is a pointer to the content type string. + * @param[in] filePath filePath is a pointer to the file path. + * @return The HTTP response code of the last request. + */ +int HttpClientFormdataAddfile(HttpClientData *clientData, char *name, char *contentType, char *filePath); + +/** + * This function clear file formdata information. + * @param[in] clientData clientData is a pointer to the #HttpClientData. + * @return None. + */ +void HttpClientClearFormData(HttpClientData *clientData); #ifdef __cplusplus } #endif diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/netstack/http/internal/http_form_data.h b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/netstack/http/internal/http_form_data.h new file mode 100644 index 000000000..7c5e1bfed --- /dev/null +++ b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/netstack/http/internal/http_form_data.h @@ -0,0 +1,41 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved. + */ +#ifndef HTTP_FORM_DATA +#define HTTP_FORM_DATA + +#ifdef __cplusplus +extern "C" { +#endif + +#define FORM_DATA_PATH_MAXLEN 64 +#define CLIENT_FORM_DATA_NUM 1 + +#define FORM_DATA_BOUNDARY "----WebKitFormBoundarypXEfCkZnHjoOSnPc0" +#define FORM_DATA_BOUNDARY_START "\r\n--" FORM_DATA_BOUNDARY +#define FORM_DATA_BOUNDARY_END FORM_DATA_BOUNDARY_START "--\r\n" + +typedef struct HttpFormDataNode HttpFormDataNode; +struct HttpFormDataNode { + HttpFormDataNode *next; + int isFile; + char filePath[FORM_DATA_PATH_MAXLEN]; + char *formatContent; + int formatLen; +}; + +typedef struct { + int isUsed; + HttpFormDataNode *formDataNode; + HttpClient *clientData; +} FormDataInfo; + +void HttpClientClearFormData(HttpClientData *clientData); +int HttpClientFormdataLen(HttpClientData *clientData); +int HttpClientSendFormdata(HttpClient *client, HttpClientData *clientData); + +#ifdef __cplusplus +} +#endif + +#endif \ No newline at end of file diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/netstack/http/internal/http_opts.h b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/netstack/http/internal/http_opts.h index 9b00983d8..c3bef203a 100644 --- a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/netstack/http/internal/http_opts.h +++ b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/netstack/http/internal/http_opts.h @@ -25,6 +25,7 @@ #define HTTPCLIENT_MAX_URL_LEN 1024 // 512 #endif +#ifndef HTTPCLIENT_MAX_FILE_DATA_LEN #ifndef HTTPCLIENT_MAX_RECV_WAIT_MS #define HTTPCLIENT_MAX_RECV_WAIT_MS 5000 #endif diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/netstack/http/internal/http_wrappers.h b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/netstack/http/internal/http_wrappers.h index 21295992c..9d8232ec9 100644 --- a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/netstack/http/internal/http_wrappers.h +++ b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/netstack/http/internal/http_wrappers.h @@ -14,10 +14,10 @@ extern "C" { #define http_debug #ifndef HTTP_MIN -#define HTTP_MIN(x,y) (((x)<(y))?(x):(y)) +#define HTTP_MIN(x, y) (((x) < (y)) ? (x) : (y)) #endif #ifndef HTTP_MAX -#define HTTP_MAX(x,y) (((x)>(y))?(x):(y)) +#define HTTP_MAX(x, y) (((x) > (y)) ? (x) : (y)) #endif int HttpTcpConnWrapper(HttpClient *client, const char *host); diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/netstack/websocket/include/net_websocket_type.h b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/netstack/websocket/include/net_websocket_type.h index c9d627801..41829d4b2 100644 --- a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/netstack/websocket/include/net_websocket_type.h +++ b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/netstack/websocket/include/net_websocket_type.h @@ -39,7 +39,6 @@ struct WebSocketErrorResult { * @brief Defines the callback function invoked when an open message is received. * * @param client WebSocket client fd. - * @param openResult Content of the open message received by the WebSocket client. * @since 11 * @version 1.0 */ @@ -73,7 +72,7 @@ typedef void (*WebSocketOnErrorCallback)(int client, struct WebSocketErrorResult * * @param client WebSocket client. */ -typedef void (*WebSocketOnCloseCallback)(int client); +typedef void (*WebSocketOnCloseCallback)(int client, struct WebSocketErrorResult errorResult); typedef enum WebSocketErrCode { @@ -158,6 +157,8 @@ typedef enum WebSocketErrCode { WEBSOCKET_ERROR_CONNECT_TO_HOST = (-19), WEBSOCKET_ERROR_CONNECT_CLOSED = (-20), + + WEBSOCKE_ERROR_CONNECTION_NOT_CLOSED = (-21), } WebSocketErrCode; diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/netstack/websocket/internal/net_websocket_debug.h b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/netstack/websocket/internal/net_websocket_debug.h new file mode 100644 index 000000000..4e4a0be2b --- /dev/null +++ b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/netstack/websocket/internal/net_websocket_debug.h @@ -0,0 +1,39 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved. + */ + +#ifndef __NET_WEBSOCKET_DEBUG_H__ +#define __NET_WEBSOCKET_DEBUG_H__ + +#include + +#define WS_DBG_LEVEL WEBSOCKET_DBG_OFF + +#define WS_INFO_LEVEL WEBSOCKET_DBG_ON + +#define WS_ERR_LEVEL WEBSOCKET_DBG_ON + +/** flag for WEBSOCKET_DEBUGF to enable that debug message */ +#define WEBSOCKET_DBG_ON 0x80U +/** flag for WEBSOCKET_DEBUGF to disable that debug message */ +#define WEBSOCKET_DBG_OFF 0x00U + +#define WEBSOCKET_DEBUG + +#ifdef WEBSOCKET_DEBUG +#define WS_PLATFORM_DIAG(x) \ + do { \ + printf x; \ + } while (0) +#define WEBSOCKET_DEBUGF(debug, message) \ + do { \ + if (((debug)&WEBSOCKET_DBG_ON)) { \ + WS_PLATFORM_DIAG(message); \ + } \ + } while (0) + +#else /* WEBSOCKET_DEBUG */ +#define WEBSOCKET_DEBUGF(debug, message) +#endif /* WEBSOCKET_DEBUG */ + +#endif \ No newline at end of file diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/netstack/websocket/internal/net_websocket_frame.h b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/netstack/websocket/internal/net_websocket_frame.h new file mode 100644 index 000000000..fd6971db4 --- /dev/null +++ b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/netstack/websocket/internal/net_websocket_frame.h @@ -0,0 +1,53 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved. + */ + +#ifndef _NET_WS_FRAME_H__ +#define _NET_WS_FRAME_H__ + +#include +#include "net_websocket.h" +#include "net_websocket_priv.h" + +typedef enum { + WS_OPCODE_CONTINUATION = 0x0, // %x0 denotes a continuation frame + WS_OPCODE_TEXT_FRAME = 0x1, // %x1 denotes a text frame + WS_OPCODE_BINARY_FRAME = 0x2, // %x2 denotes a binary frame + WS_OPCODE_CONNECTION_CLOSE = 0x8, // %x8 denotes a connection close + WS_OPCODE_PING = 0x9, // %x9 denotes a ping + WS_OPCODE_PONG = 0xA // %xA denotes a pong +} WsOpcode; + +typedef enum WsBinaryCode { WS_BINARY_START, WS_BINARY_CONTINUE, WS_BINARY_END } WsBinary; + +typedef struct WsFrameStruct { + uint8_t *data; + size_t length; + WsOpcode opcode; + uint8_t mask[4]; /* 4: mask length */ + bool isMasked; + bool isFinished; + uint8_t headerSize; +} WsFrame; + +size_t WsCheckRecvFrameSize(const uint8_t *data, const size_t data_size); + +WsFrame *WsFrameCreateWithRecvData(struct WebSocketClient *clientPtr, const uint8_t *data, const size_t length); + +void WsFrameFillWithSendBinData(WsFrame *frame, const uint8_t *data, const size_t length, WsBinary binType); + +// data - should be null, and setted by newly created. 'data' & 'data_size' can be null +void WsFrameFillWithSendData(WsFrame *frame, const uint8_t *data, const size_t data_size, bool is_finish); + +// combine datas of 2 frames. combined is 'to' +void WsFrameCombineDatas(WsFrame *to, WsFrame *from); + +WsFrame *WsFrameCreate(struct WebSocketClient *clientPtr); + +void WsDeleteFrame(WsFrame *frame); + +void WsInitFrameRandom(struct WebSocketClient *clientPtr); + +void WsFreeRandom(struct WebSocketClient *clientPtr); + +#endif diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/netstack/websocket/internal/net_websocket_list.h b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/netstack/websocket/internal/net_websocket_list.h new file mode 100644 index 000000000..74bd2747a --- /dev/null +++ b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/netstack/websocket/internal/net_websocket_list.h @@ -0,0 +1,28 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved. + */ + +#ifndef __NET_WS_LIST_H__ +#define __NET_WS_LIST_H__ + +#include + +typedef union WsNodeValueUnion { + void *object; + char *string; +} WsNodeValue; + +typedef struct WsNodeStruct { + WsNodeValue value; + struct WsNodeStruct *next; +} WsNode, WsList; + +WsList *WsListCreate(void); + +void WsListDelete(WsList *list); + +void WsListDeleteClean(WsList **list); + +int WsListAppend(WsList *list, WsNodeValue value); + +#endif diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/netstack/websocket/internal/net_websocket_opts.h b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/netstack/websocket/internal/net_websocket_opts.h new file mode 100644 index 000000000..54dca87d0 --- /dev/null +++ b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/netstack/websocket/internal/net_websocket_opts.h @@ -0,0 +1,22 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved. + */ + +#ifndef NET_WEBSOCKET_OPTS_H +#define NET_WEBSOCKET_OPTS_H + +#define WEBSOCKET_RECV_BUFF_SIZE (20 * 1024) + +#define WS_MAX_THRESH_VAL (20 * 1024) /* common TTS play size */ + +#define WS_MAX_CLIENT_NUM 4 + +#define WS_MAX_DATA_LENGTH (20 * 1024) + +#define WSS_READ_TIMEOUT_MS 100 + +#define WS_THREAD_STACK_SIZE (6 * 1024) + +#define WS_THREAD_SLEEP_MS 100 + +#endif \ No newline at end of file diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/netstack/websocket/internal/net_websocket_priv.h b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/netstack/websocket/internal/net_websocket_priv.h new file mode 100644 index 000000000..0151115c8 --- /dev/null +++ b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/netstack/websocket/internal/net_websocket_priv.h @@ -0,0 +1,127 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved. + */ + +#ifndef __NET_WEBSOCKET_PRIV_H__ +#define __NET_WEBSOCKET_PRIV_H__ + +#include "lwip/sockets.h" +#include +#include +#include + +#include "net_websocket.h" +#include "net_websocket_type.h" +#include "net_websocket_opts.h" +#include "net_websocket_thread.h" +#include "net_websocket_frame.h" +#include "net_websocket_list.h" + +#include "mbedtls/ctr_drbg.h" +#include "mbedtls/entropy.h" + +#ifdef WEBSOCKET_SSL_ENABLE +#include "mbedtls/net_sockets.h" +#include "mbedtls/ssl.h" +#endif + +typedef int WsSocket; +#define WS_INVALID_SOCKET -1 +#define WS_SOCK_CLOSE(sock) closesocket(sock) + +#define O_NONBLOCK 04000 + +#ifdef WEBSOCKET_SSL_ENABLE +typedef struct WsSslStruct { + mbedtls_ssl_context sslCtx; /* mbedtls ssl context */ + mbedtls_net_context netCtx; /* Fill in socket id */ + mbedtls_ssl_config sslConf; /* SSL configuration */ + mbedtls_entropy_context entropy; + mbedtls_ctr_drbg_context ctrDrbg; + mbedtls_x509_crt_profile profile; + mbedtls_x509_crt cacert; + mbedtls_x509_crt clicert; + mbedtls_pk_context pkey; +} WsSsl; +#endif + +#define WS_MAX_SCHEME_LEN 16 + +struct WebSocketClient { + int clientfd; + int port; + WsSocket socket; + char scheme[WS_MAX_SCHEME_LEN]; + char *url; + char *host; + char *requestOption; + + char *secWsProtocol; // "Sec-WebSocket-Protocol" field + char *secWsAccept; // "Sec-WebSocket-Accept" field from handshake + + WsThread workThread; + + int command; + + bool isConnected; // sock connected + handshake done + + /** Pointer to the callback invoked when a connection message is received */ + WebSocketOnOpenCallback onOpen; + /** Pointer to the callback invoked when a message is received */ + WebSocketOnMessageCallback onMessage; + /** Pointer to the callback invoked when an error message is received */ + WebSocketOnErrorCallback onError; + /** Pointer to the callback invoked when a close message is received */ + WebSocketOnCloseCallback onClose; + + uint8_t *received; + size_t receivedSize; // size of 'received' memory + size_t receivedLen; // length of actualy readed message + + WsList *sendFrames; + WsList *recvdFrames; + + WsMutex workMutex; + WsMutex sendMutex; + + mbedtls_entropy_context randomEntropy; /* random entropy */ + mbedtls_ctr_drbg_context randomCtrDrbg; + +#ifdef WEBSOCKET_SSL_ENABLE + const char *serverCert; /**< Server certification. */ + const char *clientCert; /**< Client certification. */ + const char *clientPk; /**< Client private key. */ + int serverCertLen; /**< Server certification lenght, server_cert buffer size. */ + int clientCertLen; /**< Client certification lenght, client_cert buffer size. */ + int clientPkLen; /**< Client private key lenght, client_pk buffer size. */ + WsSsl *ssl; /**< Ssl content. */ +#endif + char *recvBuffer; + int recvBufferSize; + + struct WebSocketErrorResult errorResult; +}; + +void WebSocketClientClosePriv(struct WebSocketClient *clientPtr); + +struct WebSocketClient *WsGetClient(int fd); + +int AllocWsClient(void); + +int WsSocketSendTextPriv(struct WebSocketClient *clientPtr, const char *text); + +int WsClientSendBinStartPriv(struct WebSocketClient *clientPtr, const char *data, size_t length); + +int WsClientIdleDataSend(struct WebSocketClient *clientPtr); + +#define COMMAND_IDLE -1 +#define COMMAND_NONE 0 +#define COMMAND_CONNECT_TO_HOST 1 +#define COMMAND_SEND_HANDSHAKE 2 +#define COMMAND_WAIT_HANDSHAKE_RESPONCE 3 +#define COMMAND_INFORM_CONNECTED 4 +#define COMMAND_INFORM_DISCONNECTED 5 + +#define COMMAND_END 9999 + +#endif diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/netstack/websocket/internal/net_websocket_string.h b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/netstack/websocket/internal/net_websocket_string.h new file mode 100644 index 000000000..2e4325c37 --- /dev/null +++ b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/netstack/websocket/internal/net_websocket_string.h @@ -0,0 +1,19 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved. + */ +#ifndef __NET_WS_STRING_H__ +#define __NET_WS_STRING_H__ + +#include +#include +#include + +char *WsStringCopy(const char *str); + +char *WsStringCopyLen(const char *str, const size_t len); + +void WsStringDelete(char *str); + +void WsStringDeleteClean(char **str); + +#endif diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/netstack/websocket/internal/net_websocket_thread.h b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/netstack/websocket/internal/net_websocket_thread.h new file mode 100644 index 000000000..08d6fea63 --- /dev/null +++ b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/netstack/websocket/internal/net_websocket_thread.h @@ -0,0 +1,67 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved. + */ + +#ifndef __NET_WS_THREAD_H__ +#define __NET_WS_THREAD_H__ + +#include +#include "cmsis_os2.h" + +#define RWS_WAIT_FOREVER 0xffffffffu + +/** + @brief Callback type of thread function. + @param userObject User object provided during thread creation. + */ +typedef void (*WsThreadFunct)(void *userObject); + +struct WsThreadStruct { + WsThreadFunct threadFunction; + osThreadId_t thread; + void *stackMem; +}; + +/** + @brief Type of all public objects. + */ +typedef void *WsHandle; + +/** + @brief Mutex object handle. + */ +typedef WsHandle WsMutex; + +/** + @brief Mutex object handle. + */ +typedef WsHandle WsSem; + +/** + @brief Thread object handle. + */ +typedef struct WsThreadStruct *WsThread; + +WsThread WsThreadCreate(WsThreadFunct threadFunction, void *userObject); + +void WsThreadMsleep(const unsigned int millisec); + +WsMutex WsMutexCreateRecursive(void); + +void WsMutexLock(WsMutex mutex); + +void WsMutexUnLock(WsMutex mutex); + +void WsMutexDelete(WsMutex mutex); + +WsSem WsSemCreate(void); + +void WsSemDelete(WsSem sem); + +void WsSemSignal(WsSem sem); + +int WsThreadSuspend(WsThread workThread); + +int WsThreadResume(WsThread workThread); + +#endif diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/network/connection_manage/connection_manage.cpp b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/network/connection_manage/connection_manage.cpp new file mode 100644 index 000000000..d0da47458 --- /dev/null +++ b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/network/connection_manage/connection_manage.cpp @@ -0,0 +1,143 @@ +/* + * Copyright (c) CompanyNameMagicTag. 2025-2025. All rights reserved. + * Description: network connection manage + * Author: SoftwarePlatform Group + * Create: 2025-11-12 + */ + +#include +#include +#include "settings/model/SettingBluetoothModel.h" +#include "msg_center_protocol.h" +#include "connection_manage.h" + +typedef struct NetConnectionParam { + uint8_t networkType; + NetConnectionCallback callback; +} NetConnectionParam; + +static std::list g_callbackList; +static std::mutex g_callbackMutex; +static int g_registerCount = 0; + + +void NetConnectChange(uint8_t networkType, uint8_t netConnectState) +{ + g_callbackMutex.lock(); + for (auto iter = g_callbackList.begin(); iter != g_callbackList.end(); iter++) { + NetConnectionCallback callback = (*iter)->callback; + uint8_t type = (*iter)->networkType; + + if (type == networkType && callback != nullptr) { + g_callbackMutex.unlock(); + callback(networkType, netConnectState); + g_callbackMutex.lock(); + } + } + g_callbackMutex.unlock(); +} + +static void LwipNetConnectionChange(uint8_t netifType, uint8_t netConnectState) +{ + uint8_t networkType = NETWORK_TYPE_UNKNOWN; + if (netifType == LWIP_NETIF_VOLTE) { + networkType = NETWORK_TYPE_CELL_LTE_CAT1; + } + if (netifType == LWIP_NETIF_BT_PAN) { + networkType = NETWORK_TYPE_BLUETOOTH_PAN; + } + NetConnectChange(networkType, netConnectState); +} + +static void RegisterLwipNetListener(uint8_t networkType) +{ + if (networkType != NETWORK_TYPE_BLUETOOTH_PAN && networkType != NETWORK_TYPE_CELL_LTE_CAT1) { + return; + } + if (g_registerCount == 0) { + lwip_register_connect_listener(LwipNetConnectionChange); + } + g_registerCount++; +} + +static void UnRegisterLwipNetListener(uint8_t networkType) +{ + if (networkType == NETWORK_TYPE_BLUETOOTH_PAN || networkType == NETWORK_TYPE_CELL_LTE_CAT1) { + g_registerCount--; + if (g_registerCount == 0) { + lwip_unregister_connect_listener(LwipNetConnectionChange); + } + } +} + +int RegisterConnectListener(uint8_t networkType, NetConnectionCallback callback) +{ + if (callback == nullptr) { + return -1; + } + NetConnectionParam *param = (NetConnectionParam *)malloc(sizeof(NetConnectionParam)); + if (param == nullptr) { + return -1; + } + param->networkType = networkType; + param->callback = callback; + + g_callbackMutex.lock(); + for (auto iter = g_callbackList.begin(); iter != g_callbackList.end(); iter++) { + if ((*iter)->callback == callback && (*iter)->networkType == networkType) { + g_callbackMutex.unlock(); + free(param); + return 0; + } + } + g_callbackList.push_back(param); + g_callbackMutex.unlock(); + RegisterLwipNetListener(networkType); + return 0; +} + +void UnregisterConnectListener(uint8_t networkType, NetConnectionCallback callback) +{ + if (callback == nullptr) { + return; + } + g_callbackMutex.lock(); + for (auto iter = g_callbackList.begin(); iter != g_callbackList.end();) { + if ((*iter)->networkType == networkType && (*iter)->callback == callback) { + UnRegisterLwipNetListener((*iter)->networkType); + free(*iter); + *iter = nullptr; + iter = g_callbackList.erase(iter); + } else { + iter++; + } + } + g_callbackMutex.unlock(); +} + +uint8_t GetNetConnectState(uint8_t netType) +{ + uint8_t state = CONNECTION_STATUS_UNKNOWN; + switch (netType) { + case NETWORK_TYPE_WIFI: + break; + case NETWORK_TYPE_BLUETOOTH: + state = OHOS::SettingBluetoothModel::GetInstance()->GetAclConnected() ? CONNECTION_STATUS_CONNECTED + : CONNECTION_STATUS_DISCONNECTED; + break; + case NETWORK_TYPE_BLUETOOTH_LE: + state = (msg_center_get_ble_conn_state() == GAP_BLE_STATE_CONNECTED) ? CONNECTION_STATUS_CONNECTED + : CONNECTION_STATUS_DISCONNECTED; + break; + case NETWORK_TYPE_BLUETOOTH_PAN: + lwip_get_connect_status(LWIP_NETIF_BT_PAN, &state); + break; + case NETWORK_TYPE_CELL_LTE_CAT1: + lwip_get_connect_status(LWIP_NETIF_VOLTE, &state); + break; + default: + state = CONNECTION_STATUS_UNKNOWN; + break; + } + return state; +} diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/network/connection_manage/connection_manage.h b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/network/connection_manage/connection_manage.h new file mode 100644 index 000000000..d40d8f4f7 --- /dev/null +++ b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/network/connection_manage/connection_manage.h @@ -0,0 +1,51 @@ +/* + * Copyright (c) CompanyNameMagicTag. 2025-2025. All rights reserved. + * Description: network connection manage + * Author: SoftwarePlatform Group + * Create: 2025-11-12 + */ + + +#include "lwip_driver_adapter.h" +#include "network_listener.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief Defines the callback function net connection status change. + * + * @param networkType network type, refer to #NetworkType. + * @param netConnectState net connection status, refer to #ConnectionState. + */ +typedef void (*NetConnectionCallback)(const uint8_t networkType, const uint8_t netConnectState); + +/** + * @brief This function register network connection status listener. + * @param[in] networkType network type, refer to #NetworkType. + * @param[in] callback net connection callback. + * @return 0 if success; non-0 otherwise. + */ +int RegisterConnectListener(uint8_t networkType, NetConnectionCallback callback); + +/** + * @brief Defines the callback unregister function for listening net connection status change. + * @param[in] networkType network type, refer to #NetworkType. + * @param[in] callback net connection callback. + * @return 0 if success; non-0 otherwise. + */ +void UnregisterConnectListener(uint8_t networkType, NetConnectionCallback callback); + +/** + * @brief This function get current network connection status. + * @param[in] networkType network type, refer to #NetworkType. + * @return netConnectState net connection status, refer to #ConnectionState. + */ +uint8_t GetNetConnectState(uint8_t networkType); + +void NetConnectChange(uint8_t networkType, uint8_t netConnectState); + +#ifdef __cplusplus +} +#endif \ No newline at end of file diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/network/network_listener.cpp b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/network/network_listener.cpp new file mode 100644 index 000000000..ab2df113b --- /dev/null +++ b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/network/network_listener.cpp @@ -0,0 +1,14 @@ +/* + * Copyright (c) CompanyNameMagicTag. 2024-2025. All rights reserved. + * Description: network wrapper + * Author: SoftwarePlatform Group + * Create: 2025-11-14 + */ + +#include "connection_manage.h" +#include "network_listener.h" + +void net_connect_status_change(uint8_t type, uint8_t netConnectState) +{ + NetConnectChange(type, netConnectState); +} \ No newline at end of file diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/network/network_listener.h b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/network/network_listener.h index 8d76a8cb0..097bd133c 100644 --- a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/network/network_listener.h +++ b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/network/network_listener.h @@ -8,25 +8,36 @@ #ifndef OHOS_ACELITE_NETWORK_LISTENER_H #define OHOS_ACELITE_NETWORK_LISTENER_H +#include "lwip_driver_adapter.h" + #ifdef __cplusplus extern "C" { #endif // 网络类型枚举 typedef enum { + // short reach NETWORK_TYPE_WIFI = 0, - NETWORK_TYPE_BLUETOOTH, - NETWORK_TYPE_BLUETOOTH_LE, - NETWORK_TYPE_UNKNOWN + NETWORK_TYPE_BLUETOOTH = 1, + NETWORK_TYPE_BLUETOOTH_LE = 2, + NETWORK_TYPE_BLUETOOTH_PAN = 3, + // long reach + NETWORK_TYPE_CELL_LTE_CAT1 = 30, + NETWORK_TYPE_CELL_4G = 31, + // unknown + NETWORK_TYPE_UNKNOWN = 100 } NetworkType; + // 连接状态枚举 typedef enum { + // to be connected CONNECTION_STATUS_CONNECTING = 0, - CONNECTION_STATUS_CONNECTED, - CONNECTION_STATUS_DISCONNECTING, - CONNECTION_STATUS_DISCONNECTED, - CONNECTION_STATUS_UNKNOWN + CONNECTION_STATUS_CONNECTED = 1, + // to be disconnected + CONNECTION_STATUS_DISCONNECTING = 2, + CONNECTION_STATUS_DISCONNECTED = 3, + CONNECTION_STATUS_UNKNOWN = 100 } ConnectionState; void net_connect_status_change(uint8_t type, uint8_t netConnectState); diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/network/network_module.cpp b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/network/network_module.cpp index 983827a99..35306c036 100644 --- a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/network/network_module.cpp +++ b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/network/network_module.cpp @@ -13,33 +13,28 @@ * limitations under the License. */ +#include +#include #include "ace_log.h" -#include "js_app_context.h" #include "js_async_work.h" #include "product_adapter.h" -#include -#include -#include "network_module.h" -#ifdef CUSTOM_ZHIHUI -#include "bluetooth/include/BluetoothModel.h" -#else -#include "bluetooth/BluetoothModel.h" -#endif -#include "msg_center_protocol.h" -#include "bts_le_gap.h" +#include "connection_manage.h" #include "network_listener.h" +#include "network_module.h" + +constexpr uint8_t ARGS_NUM_2 = 2; namespace OHOS { namespace ACELite { std::map NetWorkModule::callbackSet; -void NetWorkModule::TriggerCallbackListener(uint8_t type, uint8_t netConnectState) +void NetWorkModule::TriggerCallbackListener(const uint8_t networkType, const uint8_t netConnectState) { - auto it = callbackSet.find(type); + auto it = callbackSet.find(networkType); if (it != callbackSet.end()) { NetCallBack *callback = it->second; callback->netParam.state = netConnectState; - callback->netParam.net_type = type; + callback->netParam.net_type = networkType; if (!JsAsyncWork::DispatchAsyncWork(AsyncExecuteCallback, const_cast(callback))) { HILOG_ERROR(HILOG_MODULE_ACE, "dispatch async work failed."); } @@ -51,28 +46,7 @@ static bool ValidJsValue(JSIValue value) return (value != nullptr) && (!JSI::ValueIsUndefined(value)); } -static uint8_t GetNetConnectState(uint8_t net_type) -{ - uint8_t state; - switch (net_type) { - case NETWORK_TYPE_WIFI: - break; - case NETWORK_TYPE_BLUETOOTH: - state = OHOS::BluetoothModel::GetInstance()->GetAclConnected() ? CONNECTION_STATUS_CONNECTED - : CONNECTION_STATUS_DISCONNECTED; - break; - case NETWORK_TYPE_BLUETOOTH_LE: - state = (msg_center_get_ble_conn_state() == GAP_BLE_STATE_CONNECTED) ? CONNECTION_STATUS_CONNECTED - : CONNECTION_STATUS_DISCONNECTED; - break; - default: - state = CONNECTION_STATUS_UNKNOWN; - break; - } - return state; -} - -const JSIValue GetNetworkStateString(uint8_t type, uint8_t state) +static JSIValue GetNetworkStateString(uint8_t type, uint8_t state) { // 网络类型 const char *networkType; @@ -86,6 +60,12 @@ const JSIValue GetNetworkStateString(uint8_t type, uint8_t state) case NETWORK_TYPE_BLUETOOTH_LE: networkType = "Bluetooth LE"; break; + case NETWORK_TYPE_BLUETOOTH_PAN: + networkType = "Bluetooth PAN"; + break; + case NETWORK_TYPE_CELL_LTE_CAT1: + networkType = "Cell CAT1"; + break; default: networkType = "Unknown Network Type"; break; @@ -116,7 +96,7 @@ const JSIValue GetNetworkStateString(uint8_t type, uint8_t state) HILOG_ERROR(HILOG_MODULE_ACE, "result buff is too long"); } JSIValue result = JSI::CreateObject(); - JSI::SetStringProperty(result, "type", networkType); + JSI::SetNumberProperty(result, "type", type); JSI::SetNumberProperty(result, "state", state); JSI::SetStringProperty(result, "description", description); return result; @@ -140,7 +120,7 @@ JSIValue NetWorkModule::RegisterConnectListener(const JSIValue thisVal, const JS if (argsNum == 1) { type = NETWORK_TYPE_BLUETOOTH; callbackArg = args[0]; - } else if (argsNum == 2) { + } else if (argsNum == ARGS_NUM_2) { if (args == nullptr || JSI::ValueIsUndefined(args[0])) { HILOG_ERROR(HILOG_MODULE_ACE, "Invalid type argument for registering net connection callback"); return JSI::CreateUndefined(); @@ -174,8 +154,7 @@ JSIValue NetWorkModule::RegisterConnectListener(const JSIValue thisVal, const JS } newCallback->netParam.net_type = type; callbackSet[type] = newCallback; - uint8_t state = GetNetConnectState(type); - net_connect_status_change(type, state); + ::RegisterConnectListener(type, TriggerCallbackListener); return JSI::CreateUndefined(); } @@ -201,6 +180,7 @@ JSIValue NetWorkModule::UnregisterConnectListener(const JSIValue thisVal, const NetCallBack *callback = it->second; callbackSet.erase(it); Clean(callback); + ::UnregisterConnectListener(type, TriggerCallbackListener); } else { HILOG_ERROR(HILOG_MODULE_ACE, "No callback registered for the given type"); } @@ -259,16 +239,3 @@ void InitNetWorkModule(JSIValue exports) } // namespace ACELite } // namespace OHOS - -#ifdef __cplusplus -extern "C" { -#endif - -void net_connect_status_change(uint8_t type, uint8_t netConnectState) -{ - OHOS::ACELite::NetWorkModule::TriggerCallbackListener(type, netConnectState); -} - -#ifdef __cplusplus -} -#endif diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/network/network_module.h b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/network/network_module.h index fc8061b2b..ad6ff6d40 100644 --- a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/network/network_module.h +++ b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/network/network_module.h @@ -8,15 +8,10 @@ #ifndef OHOS_ACELITE_NETWORK_MODULE_H #define OHOS_ACELITE_NETWORK_MODULE_H -#include -#include "acelite_config.h" -#include "jsi.h" #include -#include "js_async_work.h" #include "non_copyable.h" -#include "product_adapter.h" -#include "abilityms_slite_client.h" -#include "network_listener.h" +#include "jsi.h" +#include "js_async_work.h" namespace OHOS { namespace ACELite { diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/ohos_module_config.h b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/ohos_module_config.h index a38ac4aa9..2928a1c60 100644 --- a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/ohos_module_config.h +++ b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/ohos_module_config.h @@ -37,6 +37,7 @@ extern void InitAppModule(JSIValue exports); #ifdef FEATURE_MODULE_AUDIO extern void InitAudioModule(JSIValue exports); extern void InitAudioCapturerModule(JSIValue exports); +extern void InitAudioRecorderModule(JSIValue exports); extern void InitBaiduMapComponentModule(JSIValue exports); #endif // FEATURE_MODULE_AUDIO #ifdef FEATURE_ACELITE_DFX_MODULE @@ -78,12 +79,20 @@ extern void InitBrightnessModule(JSIValue exports); extern void InitHttpClientModule(JSIValue exports); #endif +#ifdef FEATURE_MODULE_BLE +extern void InitBleModule(JSIValue exports); +#endif + #ifdef FEATURE_MODULE_BATTERY extern void InitBatteryModule(JSIValue exports); #endif +#ifdef FEATURE_MODULE_WATCHFACE +extern void InitWatchFaceModule(JSIValue exports); +#endif + #ifdef FEATURE_MODULE_WEBSOCKET -extern void InitWebsocketClientModule(JSIValue exports); +extern void InitWebSocketClientModule(JSIValue exports); #endif #ifdef FEATURE_MODULE_CONFIGURATION @@ -93,6 +102,9 @@ extern void InitLocaleModule(JSIValue exports); #ifdef FEATURE_MODULE_NFC extern void NfcHceInitModule(JSIValue exports); #endif +#ifdef ENABLE_MODULE_CALENDAR +extern void InitCalendarModule(JSIValue exports); +#endif extern void InitNetWorkModule(JSIValue exports); extern void InitKeyInputModule(JSIValue exports); // #ifdef FEATURE_ACELITE_SYSTEM_CAPABILITY @@ -108,6 +120,7 @@ const Module OHOS_MODULES[] = { #ifdef FEATURE_MODULE_AUDIO {"audio", InitAudioModule}, {"audiocapturer", InitAudioCapturerModule}, + {"multimedia.AudioRecorder", InitAudioRecorderModule}, #endif #ifdef FEATURE_MODULE_BAIDU {"baidumapcomponent",InitBaiduMapComponentModule}, @@ -152,6 +165,9 @@ const Module OHOS_MODULES[] = { #ifdef FEATURE_MODULE_HTTP {"net.http", InitHttpClientModule}, #endif +#ifdef FEATURE_MODULE_BLE + {"bluetooth.ble", InitBleModule}, +#endif #ifdef FEATURE_MODULE_BATTERY {"battery", InitBatteryModule}, #endif @@ -162,13 +178,19 @@ const Module OHOS_MODULES[] = { // {"capability", InitCapabilityModule}, // #endif #ifdef FEATURE_MODULE_WEBSOCKET - {"net.webSocket", InitWebsocketClientModule}, + {"net.webSocket", InitWebSocketClientModule}, #endif #ifdef FEATURE_MODULE_NFC {"nfc.cardEmulation", NfcHceInitModule}, +#endif +#ifdef FEATURE_MODULE_WATCHFACE + {"watchface", InitWatchFaceModule}, #endif {"network", InitNetWorkModule}, {"keyinput", InitKeyInputModule}, +#ifdef ENABLE_MODULE_CALENDAR + {"CalendarManager", InitCalendarModule}, +#endif }; } // namespace ACELite } // namespace OHOS diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/router_module.cpp b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/router_module.cpp index 73f33c2c3..2a446dc4f 100644 --- a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/router_module.cpp +++ b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/router_module.cpp @@ -18,12 +18,15 @@ #include "js_app_context.h" #include "js_profiler.h" #include "jsi/internal/jsi_internal.h" +#include "NativeAbility.h" +#include "AppViewIDs.h" namespace OHOS { namespace ACELite { void InitRouterModule(JSIValue exports) { JSI::SetModuleAPI(exports, "replace", RouterModule::Replace); + JSI::SetModuleAPI(exports, "replaceToNative", RouterModule::ReplaceToNative); } JSIValue RouterModule::Replace(const JSIValue thisVal, const JSIValue* args, uint8_t argsNum) @@ -50,5 +53,42 @@ JSIValue RouterModule::Replace(const JSIValue thisVal, const JSIValue* args, uin jerry_value_t replaceResult = router->Replace(object); return AS_JSI_VALUE(replaceResult); } + +JSIValue RouterModule::ReplaceToNative(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum) +{ + uint16_t sliceId = 0; + // router.replaceToNative({sliceId: 1}} + JSIValue jsId = JSI::GetNamedProperty(args[0], "sliceId"); + // router.replaceToNative({sliceName: "APP_LIST"}} + JSIValue jsName = JSI::GetNamedProperty(args[0], "sliceName"); + + // If sliceId and sliceName are contained, only sliceId is used. + if (!JSI::ValueIsUndefined(jsId)) { + sliceId = static_cast(JSI::ValueToNumber(jsId)); + } else if (!JSI::ValueIsUndefined(jsName)) { + char *sliceName = JSI::ValueToString(jsName); + if (sliceName == nullptr) { + HILOG_ERROR(HILOG_MODULE_ACE, "ReplaceToSlice sliceName is invalid"); + return JSI::CreateUndefined(); + } + + if (strcmp(sliceName, "LAUNCHER") == 0) { + sliceId = VIEW_MAIN_SAMPLE; + } else if (strcmp(sliceName, "APP_LIST") == 0) { + sliceId = VIEW_APPLIST; + } else { + HILOG_ERROR(HILOG_MODULE_ACE, "ReplaceToSlice sliceName mismatch"); + JSI::ReleaseString(sliceName); + return JSI::CreateUndefined(); + } + JSI::ReleaseString(sliceName); + } else { + HILOG_ERROR(HILOG_MODULE_ACE, "ReplaceToSlice args is nullptr"); + return JSI::CreateUndefined(); + } + + OHOS::NativeAbility::GetInstance().ChangeSlice(sliceId); + return JSI::CreateUndefined(); +} } // namespace ACELite } // namespace OHOS diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/router_module.h b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/router_module.h index c4c71f572..003b29fb6 100644 --- a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/router_module.h +++ b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/router_module.h @@ -30,6 +30,7 @@ public: RouterModule() {} ~RouterModule() {} static JSIValue Replace(const JSIValue thisVal, const JSIValue* args, uint8_t argsNum); + static JSIValue ReplaceToNative(const JSIValue thisVal, const JSIValue* args, uint8_t argsNum); }; void InitRouterModule(JSIValue exports); diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/sensor_module.cpp b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/sensor_module.cpp index 2909c8bd5..98880038e 100644 --- a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/sensor_module.cpp +++ b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/sensor_module.cpp @@ -20,7 +20,6 @@ #include "product_adapter.h" #include #include "sensor_module.h" -#include "media_log.h" #include "global.h" #include "screen.h" @@ -42,24 +41,38 @@ const uint32_t SensorModule::Z = 80; SensorInfo *SensorModule::sensorInfo_ = nullptr; int32_t SensorModule::sensorCnt_ = 0; +static void RecordAccelSensorCallback(SensorEvent *event); +static void RecordBarSensorCallback(SensorEvent *event); +static void RecordGyroSensorCallback(SensorEvent *event); +static void RecordHrSensorCallback(SensorEvent *event); +static void RecordObsSensorCallback(SensorEvent *event); +static void RecordScSensorCallback(SensorEvent *event); + +struct SensorDev { + SensorTypeId sensorTypeId; + SensorUser user; + bool subscribed; + SensorParams sensorParams; +}; + static struct SensorDev g_sensorDev[] = { - {SENSOR_TYPE_ID_ACCELEROMETER, {"SensorModule", SensorModule::RecordAccelSensorCallback, nullptr}, SensorModule::UnsubscribeBySensorTypeId, false}, - {SENSOR_TYPE_ID_BAROMETER, {"SensorModule", SensorModule::RecordBarSensorCallback, nullptr}, SensorModule::UnsubscribeBySensorTypeId, false}, - {SENSOR_TYPE_ID_GYROSCOPE, {"SensorModule", SensorModule::RecordCyroSensorCallback, nullptr}, SensorModule::UnsubscribeBySensorTypeId, false}, - {SENSOR_TYPE_ID_HEART_RATE, {"SensorModule", SensorModule::RecordHrSensorCallback, nullptr}, SensorModule::UnsubscribeBySensorTypeId, false}, - {SENSOR_TYPE_ID_WEAR_DETECTION, {"SensorModule", SensorModule::RecordObsSensorCallback, nullptr}, SensorModule::UnsubscribeBySensorTypeId, false}, - {SENSOR_TYPE_ID_PEDOMETER, {"SensorModule", SensorModule::RecordScSensorCallback, nullptr}, SensorModule::UnsubscribeBySensorTypeId, false}, + {SENSOR_TYPE_ID_ACCELEROMETER, {"SensorModule", RecordAccelSensorCallback, nullptr}, false}, + {SENSOR_TYPE_ID_BAROMETER, {"SensorModule", RecordBarSensorCallback, nullptr}, false}, + {SENSOR_TYPE_ID_GYROSCOPE, {"SensorModule", RecordGyroSensorCallback, nullptr}, false}, + {SENSOR_TYPE_ID_HEART_RATE, {"SensorModule", RecordHrSensorCallback, nullptr}, false}, + {SENSOR_TYPE_ID_WEAR_DETECTION, {"SensorModule", RecordObsSensorCallback, nullptr}, false}, + {SENSOR_TYPE_ID_PEDOMETER, {"SensorModule", RecordScSensorCallback, nullptr}, false}, }; -SensorDev *SensorModule::GetSensorIdBySensorDevIndex(SensorTypeId sensorTypeId) +static struct SensorDev *GetSensorIdBySensorDevIndex(SensorTypeId sensorTypeId) { - if (sensorCnt_ <= 0 || sensorInfo_ == nullptr) { + if (SensorModule::sensorCnt_ <= 0 || SensorModule::sensorInfo_ == nullptr) { HILOG_ERROR(HILOG_MODULE_ACE, "must GetAllSensors first"); return nullptr; } bool found = false; - for (int32_t index = 0; index < sensorCnt_; index++) { - if (sensorInfo_[index].sensorTypeId == sensorTypeId) { + for (int32_t index = 0; index < SensorModule::sensorCnt_; index++) { + if (SensorModule::sensorInfo_[index].sensorTypeId == sensorTypeId) { found = true; break; } @@ -116,8 +129,13 @@ void SensorModule::FailCallBack(const JSIValue thisVal, const JSIValue args, int JSI::ReleaseValueList(fail, complete, errInfo, errCode, ARGS_END); } -void SensorModule::RecordAccelSensorCallback(SensorEvent *event) +void RecordAccelSensorCallbackDispatch(void *arg) { + SensorEvent *event = reinterpret_cast(arg); + if (event == nullptr) { + HILOG_ERROR(HILOG_MODULE_ACE, "Sensor event is NULL!"); + return; + } if (event->data == NULL || event->dataLen == 0 || event->dataLen != sizeof(AccelData)) { HILOG_ERROR(HILOG_MODULE_ACE, "SensorEvent data invalid"); return; @@ -126,7 +144,7 @@ void SensorModule::RecordAccelSensorCallback(SensorEvent *event) HILOG_ERROR(HILOG_MODULE_ACE, "sensorTypeId %d is not ACCELEROMETER", event->sensorTypeId); return; } - SensorDev *sensorDev = GetSensorIdBySensorDevIndex((SensorTypeId)event->sensorTypeId); + struct SensorDev *sensorDev = GetSensorIdBySensorDevIndex((SensorTypeId)event->sensorTypeId); if (sensorDev == nullptr) { HILOG_ERROR(HILOG_MODULE_ACE, "GetSensorIdBySensorDevIndex failed"); return; @@ -137,13 +155,19 @@ void SensorModule::RecordAccelSensorCallback(SensorEvent *event) JSI::SetNumberProperty(result, "x", static_cast(accelData->axisX)); JSI::SetNumberProperty(result, "y", static_cast(accelData->axisY)); JSI::SetNumberProperty(result, "z", static_cast(accelData->axisZ)); - SuccessCallBack(sensorDev->sensorParams.thisVal, sensorDev->sensorParams.args, result, false); + SensorModule::SuccessCallBack(sensorDev->sensorParams.thisVal, sensorDev->sensorParams.args, result, false); JSI::ReleaseString(interval); JSI::ReleaseValueList(result, ARGS_END); } -void SensorModule::RecordBarSensorCallback(SensorEvent *event) +void RecordAccelSensorCallback(SensorEvent *event) { + JsAsyncWork::DispatchAsyncWork(RecordAccelSensorCallbackDispatch, event); +} + +void RecordBarSensorCallbackDispatch(void *arg) +{ + SensorEvent *event = reinterpret_cast(arg); if (event->data == NULL || event->dataLen == 0 || event->dataLen != sizeof(PressureData)) { HILOG_ERROR(HILOG_MODULE_ACE, "SensorEvent data invalid"); return; @@ -152,7 +176,7 @@ void SensorModule::RecordBarSensorCallback(SensorEvent *event) HILOG_ERROR(HILOG_MODULE_ACE, "sensorTypeId %d is not BAROMETER", event->sensorTypeId); return; } - SensorDev *sensorDev = GetSensorIdBySensorDevIndex((SensorTypeId)event->sensorTypeId); + struct SensorDev *sensorDev = GetSensorIdBySensorDevIndex((SensorTypeId)event->sensorTypeId); if (sensorDev == nullptr) { HILOG_ERROR(HILOG_MODULE_ACE, "GetSensorIdBySensorDevIndex failed"); return; @@ -160,12 +184,18 @@ void SensorModule::RecordBarSensorCallback(SensorEvent *event) PressureData *pressureData = (PressureData *)event->data; JSIValue result = JSI::CreateObject(); JSI::SetNumberProperty(result, SensorModule::PRESSURE, static_cast(pressureData->pressure)); - SuccessCallBack(sensorDev->sensorParams.thisVal, sensorDev->sensorParams.args, result, false); + SensorModule::SuccessCallBack(sensorDev->sensorParams.thisVal, sensorDev->sensorParams.args, result, false); JSI::ReleaseValueList(result, ARGS_END); } -void SensorModule::RecordCyroSensorCallback(SensorEvent *event) +void RecordBarSensorCallback(SensorEvent *event) { + JsAsyncWork::DispatchAsyncWork(RecordBarSensorCallbackDispatch, event); +} + +void RecordGyroSensorCallbackDispatch(void *arg) +{ + SensorEvent *event = reinterpret_cast(arg); if (event->data == NULL || event->dataLen == 0 || event->dataLen != sizeof(GyroData)) { HILOG_ERROR(HILOG_MODULE_ACE, "SensorEvent data invalid"); return; @@ -174,7 +204,7 @@ void SensorModule::RecordCyroSensorCallback(SensorEvent *event) HILOG_ERROR(HILOG_MODULE_ACE, "sensorTypeId %d is not GYROSCOPE", event->sensorTypeId); return; } - SensorDev *sensorDev = GetSensorIdBySensorDevIndex((SensorTypeId)event->sensorTypeId); + struct SensorDev *sensorDev = GetSensorIdBySensorDevIndex((SensorTypeId)event->sensorTypeId); if (sensorDev == nullptr) { HILOG_ERROR(HILOG_MODULE_ACE, "GetSensorIdBySensorDevIndex failed"); return; @@ -185,13 +215,19 @@ void SensorModule::RecordCyroSensorCallback(SensorEvent *event) JSI::SetNumberProperty(result, "x", static_cast(gyroData->axisX)); JSI::SetNumberProperty(result, "y", static_cast(gyroData->axisY)); JSI::SetNumberProperty(result, "z", static_cast(gyroData->axisZ)); - SuccessCallBack(sensorDev->sensorParams.thisVal, sensorDev->sensorParams.args, result, false); + SensorModule::SuccessCallBack(sensorDev->sensorParams.thisVal, sensorDev->sensorParams.args, result, false); JSI::ReleaseString(interval); JSI::ReleaseValueList(result, ARGS_END); } -void SensorModule::RecordHrSensorCallback(SensorEvent *event) +void RecordGyroSensorCallback(SensorEvent *event) +{ + JsAsyncWork::DispatchAsyncWork(RecordGyroSensorCallbackDispatch, event); +} + +void RecordHrSensorCallbackDispatch(void *arg) { + SensorEvent *event = reinterpret_cast(arg); if (event->data == NULL || event->dataLen == 0 || event->dataLen != sizeof(uint32_t)) { HILOG_ERROR(HILOG_MODULE_ACE, "SensorEvent data invalid"); return; @@ -200,7 +236,7 @@ void SensorModule::RecordHrSensorCallback(SensorEvent *event) HILOG_ERROR(HILOG_MODULE_ACE, "sensorTypeId %d is not HEART_RATE", event->sensorTypeId); return; } - SensorDev *sensorDev = GetSensorIdBySensorDevIndex((SensorTypeId)event->sensorTypeId); + struct SensorDev *sensorDev = GetSensorIdBySensorDevIndex((SensorTypeId)event->sensorTypeId); if (sensorDev == nullptr) { HILOG_ERROR(HILOG_MODULE_ACE, "GetSensorIdBySensorDevIndex failed"); return; @@ -208,12 +244,18 @@ void SensorModule::RecordHrSensorCallback(SensorEvent *event) uint32_t heartRate = *(uint32_t *)event->data; JSIValue result = JSI::CreateObject(); JSI::SetNumberProperty(result, SensorModule::HEARTRATE, static_cast(heartRate)); - SuccessCallBack(sensorDev->sensorParams.thisVal, sensorDev->sensorParams.args, result, false); + SensorModule::SuccessCallBack(sensorDev->sensorParams.thisVal, sensorDev->sensorParams.args, result, false); JSI::ReleaseValueList(result, ARGS_END); } -void SensorModule::RecordObsSensorCallback(SensorEvent *event) +void RecordHrSensorCallback(SensorEvent *event) { + JsAsyncWork::DispatchAsyncWork(RecordHrSensorCallbackDispatch, event); +} + +void RecordObsSensorCallbackDispatch(void *arg) +{ + SensorEvent *event = reinterpret_cast(arg); if (event->data == NULL || event->dataLen == 0 || event->dataLen != sizeof(uint8_t)) { HILOG_ERROR(HILOG_MODULE_ACE, "SensorEvent data invalid"); return; @@ -222,7 +264,7 @@ void SensorModule::RecordObsSensorCallback(SensorEvent *event) HILOG_ERROR(HILOG_MODULE_ACE, "sensorTypeId %d is not WEAR_DETECTION", event->sensorTypeId); return; } - SensorDev *sensorDev = GetSensorIdBySensorDevIndex((SensorTypeId)event->sensorTypeId); + struct SensorDev *sensorDev = GetSensorIdBySensorDevIndex((SensorTypeId)event->sensorTypeId); if (sensorDev == nullptr) { HILOG_ERROR(HILOG_MODULE_ACE, "GetSensorIdBySensorDevIndex failed"); return; @@ -231,12 +273,22 @@ void SensorModule::RecordObsSensorCallback(SensorEvent *event) bool value = isonbody == 0 ? false : true; JSIValue result = JSI::CreateObject(); JSI::SetNumberProperty(result, SensorModule::ISONBODY, static_cast(value)); - SuccessCallBack(sensorDev->sensorParams.thisVal, sensorDev->sensorParams.args, result, false); + SensorModule::SuccessCallBack(sensorDev->sensorParams.thisVal, sensorDev->sensorParams.args, result, false); JSI::ReleaseValueList(result, ARGS_END); } -void SensorModule::RecordScSensorCallback(SensorEvent *event) +void RecordObsSensorCallback(SensorEvent *event) +{ + JsAsyncWork::DispatchAsyncWork(RecordObsSensorCallbackDispatch, event); +} + +void RecordScSensorCallbackDispatch(void *arg) { + SensorEvent *event = reinterpret_cast(arg); + if (event == nullptr) { + HILOG_ERROR(HILOG_MODULE_ACE, "GetSensorIdBySensorDevIndex failed"); + return; + } if (event->data == NULL || event->dataLen == 0 || event->dataLen != sizeof(uint32_t)) { HILOG_ERROR(HILOG_MODULE_ACE, "SensorEvent data invalid"); return; @@ -245,7 +297,7 @@ void SensorModule::RecordScSensorCallback(SensorEvent *event) HILOG_ERROR(HILOG_MODULE_ACE, "sensorTypeId %d is not PEDOMETER", event->sensorTypeId); return; } - SensorDev *sensorDev = GetSensorIdBySensorDevIndex((SensorTypeId)event->sensorTypeId); + struct SensorDev *sensorDev = GetSensorIdBySensorDevIndex((SensorTypeId)event->sensorTypeId); if (sensorDev == nullptr) { HILOG_ERROR(HILOG_MODULE_ACE, "GetSensorIdBySensorDevIndex failed"); return; @@ -253,14 +305,19 @@ void SensorModule::RecordScSensorCallback(SensorEvent *event) uint32_t steps = *(uint32_t *)event->data; JSIValue result = JSI::CreateObject(); JSI::SetNumberProperty(result, SensorModule::STEPS, static_cast(steps)); - SuccessCallBack(sensorDev->sensorParams.thisVal, sensorDev->sensorParams.args, result, false); + SensorModule::SuccessCallBack(sensorDev->sensorParams.thisVal, sensorDev->sensorParams.args, result, false); JSI::ReleaseValueList(result, ARGS_END); } +void RecordScSensorCallback(SensorEvent *event) +{ + JsAsyncWork::DispatchAsyncWork(RecordScSensorCallbackDispatch, event); +} + void SensorModule::ExecuteGetAllSensors() { if (sensorCnt_ != 0 || sensorInfo_ != nullptr) { - HILOG_INFO(HILOG_MODULE_ACE, "sensorInfo is Got"); + HILOG_ERROR(HILOG_MODULE_ACE, "sensorInfo is Got"); return; } int32_t errCode = GetAllSensors(&sensorInfo_, &sensorCnt_); @@ -270,22 +327,33 @@ void SensorModule::ExecuteGetAllSensors() } } +void SensorModule::ExecuteUnsubscribeAllSensors() +{ + HILOG_INFO(HILOG_MODULE_ACE, "ExecuteUnsubscribeAllSensors"); + for (uint32_t index = 0; index < ARRAY_SIZE(g_sensorDev); index++) { + if (!g_sensorDev[index].subscribed) { + continue; + } + UnsubscribeBySensorTypeId(g_sensorDev[index].sensorTypeId); + } +} + int32_t SensorModule::SubscribeBySensorTypeId(void *data, SensorTypeId sensorTypeId) { SensorParams *params = reinterpret_cast(data); - SensorDev *sensorDev = GetSensorIdBySensorDevIndex(sensorTypeId); + struct SensorDev *sensorDev = GetSensorIdBySensorDevIndex(sensorTypeId); if (sensorDev == nullptr) { HILOG_ERROR(HILOG_MODULE_ACE, "GetSensorIdBySensorDevIndex failed"); return SENSOR_ERROR_UNKNOWN; } - int32_t errCode = ActivateSensor(sensorTypeId, &sensorDev->user); + int32_t errCode = SubscribeSensor(sensorTypeId, &sensorDev->user); if (errCode != SENSOR_OK) { - HILOG_ERROR(HILOG_MODULE_ACE, "ActivateSensor failed:%d", errCode); + HILOG_ERROR(HILOG_MODULE_ACE, "SubscribeSensor failed:%d", errCode); return SENSOR_ERROR_UNKNOWN; } - errCode = SubscribeSensor(sensorTypeId, &sensorDev->user); + errCode = ActivateSensor(sensorTypeId, &sensorDev->user); if (errCode != SENSOR_OK) { - HILOG_ERROR(HILOG_MODULE_ACE, "SubscribeSensor failed:%d", errCode); + HILOG_ERROR(HILOG_MODULE_ACE, "ActivateSensor failed:%d", errCode); return SENSOR_ERROR_UNKNOWN; } sensorDev->sensorParams.args = params->args; @@ -296,9 +364,10 @@ int32_t SensorModule::SubscribeBySensorTypeId(void *data, SensorTypeId sensorTyp int32_t SensorModule::UnsubscribeBySensorTypeId(SensorTypeId sensorTypeId) { - SensorDev *sensorDev = GetSensorIdBySensorDevIndex(sensorTypeId); - if (sensorDev == nullptr) { + struct SensorDev *sensorDev = GetSensorIdBySensorDevIndex(sensorTypeId); + if (sensorDev == nullptr || sensorDev->subscribed == false) { HILOG_ERROR(HILOG_MODULE_ACE, "GetSensorIdBySensorDevIndex failed"); + return SENSOR_ERROR_UNKNOWN; } int32_t errCode = UnsubscribeSensor(sensorTypeId, &sensorDev->user); if (errCode != SENSOR_OK) { @@ -325,6 +394,8 @@ void SensorModule::ExecuteSubscribeStepCounter(void *data) if (errCode != SENSOR_OK) { FailCallBack(thisVal, args, -1, false); HILOG_ERROR(HILOG_MODULE_ACE, "SubscribeSensor failed:%d", errCode); + delete params; + return; } delete params; } @@ -341,6 +412,8 @@ void SensorModule::ExecuteSubscribeBarometer(void *data) if (errCode != SENSOR_OK) { FailCallBack(thisVal, args, -1, false); HILOG_ERROR(HILOG_MODULE_ACE, "SubscribeSensor failed:%d", errCode); + delete params; + return; } delete params; } @@ -357,6 +430,8 @@ void SensorModule::ExecuteSubscribeHeartRate(void *data) if (errCode != SENSOR_OK) { FailCallBack(thisVal, args, -1, false); HILOG_ERROR(HILOG_MODULE_ACE, "SubscribeSensor failed:%d", errCode); + delete params; + return; } delete params; } @@ -373,6 +448,8 @@ void SensorModule::ExecuteSubscribeOnBodyState(void *data) if (errCode != SENSOR_OK) { FailCallBack(thisVal, args, -1, false); HILOG_ERROR(HILOG_MODULE_ACE, "SubscribeSensor failed:%d", errCode); + delete params; + return; } delete params; } @@ -410,6 +487,8 @@ void SensorModule::ExecuteSubscribeAccelerometer(void *data) if (errCode != SENSOR_OK) { FailCallBack(thisVal, args, -1, false); HILOG_ERROR(HILOG_MODULE_ACE, "SubscribeSensor failed:%d", errCode); + delete params; + return; } delete params; } @@ -426,51 +505,118 @@ void SensorModule::ExecuteSubscribeGyroscope(void *data) if (errCode != SENSOR_OK) { FailCallBack(thisVal, args, -1, false); HILOG_ERROR(HILOG_MODULE_ACE, "SubscribeSensor failed:%d", errCode); + delete params; + return; } delete params; } -struct SensorParams *SensorModule::GetSensorParamsFromArgs(const JSIValue thisVal, const JSIValue* args, uint8_t argsNum) +void SensorModule::ExecuteGetAccelerometerData(void *data) { - JSIValue undefValue = JSI::CreateUndefined(); - if ((args == nullptr) || (argsNum == 0) || (JSI::ValueIsUndefined(args[0]))) { - HILOG_ERROR(HILOG_MODULE_ACE, "Error in obtaining Sensor information parameters"); - return nullptr; + SensorParams *params = reinterpret_cast(data); + if (params == nullptr) { + return; + } + JSIValue args = params->args; + JSIValue thisVal = params->thisVal; + struct SensorDev *sensorDev = GetSensorIdBySensorDevIndex(SENSOR_TYPE_ID_ACCELEROMETER); + if (sensorDev == nullptr) { + HILOG_ERROR(HILOG_MODULE_ACE, "GetSensorIdBySensorDevIndex failed"); + return; + } + SensorData *sensorData = new SensorData; + if (sensorData == nullptr) { + HILOG_ERROR(HILOG_MODULE_ACE, "malloc failed!"); + SensorModule::FailCallBack(thisVal, args, SENSOR_ERROR_UNKNOWN, false); + return; } + int32_t ret = GetSensorData(SENSOR_TYPE_ID_ACCELEROMETER, &sensorDev->user, sensorData); + if (ret != SENSOR_OK) { + HILOG_ERROR(HILOG_MODULE_ACE, "Get accelerometer data failed!"); + delete sensorData; + SensorModule::FailCallBack(thisVal, args, SENSOR_ERROR_UNKNOWN, false); + return; + } + AccelData *accelData = (AccelData *)sensorData->data; + JSIValue result = JSI::CreateObject(); + for (uint32_t i = 0; i < sensorData->batchCnt; i++) { + JSI::SetNumberProperty(result, "x", static_cast(accelData[i].axisX)); + JSI::SetNumberProperty(result, "y", static_cast(accelData[i].axisY)); + JSI::SetNumberProperty(result, "z", static_cast(accelData[i].axisZ)); + SensorModule::SuccessCallBack(thisVal, args, result, false); + } + JSI::SetNumberProperty(result, "batchCnt", static_cast(sensorData->batchCnt)); + JSI::SetNumberProperty(result, "timestamp", static_cast(sensorData->timestamp)); + SensorModule::SuccessCallBack(thisVal, args, result, false); + JSI::ReleaseValueList(result, ARGS_END); + delete sensorData; +} - SensorParams *params = new (std::nothrow) SensorParams(); +void SensorModule::ExecuteGetGyroscopeData(void *data) +{ + SensorParams *params = reinterpret_cast(data); if (params == nullptr) { - HILOG_ERROR(HILOG_MODULE_ACE, "Error in new Sensor information parameters"); - return nullptr; + return; } - params->thisVal = JSI::AcquireValue(thisVal); - if (args != nullptr) { - params->args = JSI::AcquireValue(args[0]); + JSIValue args = params->args; + JSIValue thisVal = params->thisVal; + struct SensorDev *sensorDev = GetSensorIdBySensorDevIndex(SENSOR_TYPE_ID_GYROSCOPE); + if (sensorDev == nullptr) { + HILOG_ERROR(HILOG_MODULE_ACE, "GetSensorIdBySensorDevIndex failed"); + return; + } + SensorData *sensorData = new SensorData; + if (sensorData == nullptr) { + HILOG_ERROR(HILOG_MODULE_ACE, "malloc failed!"); + SensorModule::FailCallBack(thisVal, args, SENSOR_ERROR_UNKNOWN, false); + return; + } + int32_t ret = GetSensorData(SENSOR_TYPE_ID_GYROSCOPE, &sensorDev->user, sensorData); + if (ret != 0) { + HILOG_ERROR(HILOG_MODULE_ACE, "Get accelerometer data failed!"); + delete sensorData; + SensorModule::FailCallBack(thisVal, args, SENSOR_ERROR_UNKNOWN, false); + return; } - return params; + GyroData *gyroData = (GyroData *)sensorData->data; + JSIValue result = JSI::CreateObject(); + for (uint32_t i = 0; i < sensorData->batchCnt; i++) { + JSI::SetNumberProperty(result, "x", static_cast(gyroData->axisX)); + JSI::SetNumberProperty(result, "y", static_cast(gyroData->axisY)); + JSI::SetNumberProperty(result, "z", static_cast(gyroData->axisZ)); + SensorModule::SuccessCallBack(thisVal, args, result, false); + } + JSI::SetNumberProperty(result, "batchCnt", static_cast(sensorData->batchCnt)); + JSI::SetNumberProperty(result, "timestamp", static_cast(sensorData->timestamp)); + SensorModule::SuccessCallBack(thisVal, args, result, false); + JSI::ReleaseValueList(result, ARGS_END); + delete sensorData; } -JSIValue SensorModule::ExecuteSyncWork( +JSIValue SensorModule::ExecuteAsyncWork( const JSIValue thisVal, const JSIValue *args, uint8_t argsNum, AsyncWorkHandler ExecuteFunc) { JSIValue undefValue = JSI::CreateUndefined(); - SensorParams *params = GetSensorParamsFromArgs(thisVal, args, argsNum); + if ((args == nullptr) || (argsNum == 0) || (JSI::ValueIsUndefined(args[0]))) { + HILOG_ERROR(HILOG_MODULE_ACE, "Error in obtaining Sensor information parameters"); + return undefValue; + } + + SensorParams *params = new (std::nothrow) SensorParams(); if (params == nullptr) { return undefValue; } - ExecuteFunc(reinterpret_cast(params)); + params->thisVal = JSI::AcquireValue(thisVal); + if (args != nullptr) { + params->args = JSI::AcquireValue(args[0]); + } + JsAsyncWork::DispatchAsyncWork(ExecuteFunc, reinterpret_cast(params)); return undefValue; } JSIValue SensorModule::SubscribeStepCounter(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum) { - JSIValue undefValue = JSI::CreateUndefined(); - SensorParams *params = GetSensorParamsFromArgs(thisVal, args, argsNum); - if (params == nullptr) { - return undefValue; - } - ExecuteSubscribeStepCounter(reinterpret_cast(params)); - return undefValue; + return ExecuteAsyncWork(thisVal, args, argsNum, ExecuteSubscribeStepCounter); } JSIValue SensorModule::UnsubscribeStepCounter(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum) @@ -484,13 +630,7 @@ JSIValue SensorModule::UnsubscribeStepCounter(const JSIValue thisVal, const JSIV JSIValue SensorModule::SubscribeBarometer(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum) { - JSIValue undefValue = JSI::CreateUndefined(); - SensorParams *params = GetSensorParamsFromArgs(thisVal, args, argsNum); - if (params == nullptr) { - return undefValue; - } - ExecuteSubscribeBarometer(reinterpret_cast(params)); - return undefValue; + return ExecuteAsyncWork(thisVal, args, argsNum, ExecuteSubscribeBarometer); } JSIValue SensorModule::UnsubscribeBarometer(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum) @@ -504,13 +644,7 @@ JSIValue SensorModule::UnsubscribeBarometer(const JSIValue thisVal, const JSIVal JSIValue SensorModule::SubscribeHeartRate(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum) { - JSIValue undefValue = JSI::CreateUndefined(); - SensorParams *params = GetSensorParamsFromArgs(thisVal, args, argsNum); - if (params == nullptr) { - return undefValue; - } - ExecuteSubscribeHeartRate(reinterpret_cast(params)); - return undefValue; + return ExecuteAsyncWork(thisVal, args, argsNum, ExecuteSubscribeHeartRate); } JSIValue SensorModule::UnsubscribeHeartRate(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum) @@ -524,13 +658,7 @@ JSIValue SensorModule::UnsubscribeHeartRate(const JSIValue thisVal, const JSIVal JSIValue SensorModule::SubscribeOnBodyState(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum) { - JSIValue undefValue = JSI::CreateUndefined(); - SensorParams *params = GetSensorParamsFromArgs(thisVal, args, argsNum); - if (params == nullptr) { - return undefValue; - } - ExecuteSubscribeOnBodyState(reinterpret_cast(params)); - return undefValue; + return ExecuteAsyncWork(thisVal, args, argsNum, ExecuteSubscribeOnBodyState); } JSIValue SensorModule::UnsubscribeOnBodyState(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum) @@ -544,18 +672,12 @@ JSIValue SensorModule::UnsubscribeOnBodyState(const JSIValue thisVal, const JSIV JSIValue SensorModule::GetOnBodyState(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum) { - return ExecuteSyncWork(thisVal, args, argsNum, ExecuteGetOnBodyState); + return ExecuteAsyncWork(thisVal, args, argsNum, ExecuteGetOnBodyState); } JSIValue SensorModule::SubscribeAccelerometer(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum) { - JSIValue undefValue = JSI::CreateUndefined(); - SensorParams *params = GetSensorParamsFromArgs(thisVal, args, argsNum); - if (params == nullptr) { - return undefValue; - } - ExecuteSubscribeAccelerometer(reinterpret_cast(params)); - return undefValue; + return ExecuteAsyncWork(thisVal, args, argsNum, ExecuteSubscribeAccelerometer); } JSIValue SensorModule::UnsubscribeAccelerometer(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum) @@ -569,13 +691,7 @@ JSIValue SensorModule::UnsubscribeAccelerometer(const JSIValue thisVal, const JS JSIValue SensorModule::SubscribeGyroscope(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum) { - JSIValue undefValue = JSI::CreateUndefined(); - SensorParams *params = GetSensorParamsFromArgs(thisVal, args, argsNum); - if (params == nullptr) { - return undefValue; - } - ExecuteSubscribeGyroscope(reinterpret_cast(params)); - return undefValue; + return ExecuteAsyncWork(thisVal, args, argsNum, ExecuteSubscribeGyroscope); } JSIValue SensorModule::UnsubscribeGyroscope(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum) @@ -587,18 +703,21 @@ JSIValue SensorModule::UnsubscribeGyroscope(const JSIValue thisVal, const JSIVal return JSI::CreateUndefined(); } -void SensorModule::OnDestroy() +JSIValue SensorModule::GetAccelerometerData(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum) { - for (uint32_t index = 0; index < ARRAY_SIZE(g_sensorDev); index++) { - SensorTypeId sensorTypeId = g_sensorDev[index].sensorTypeId; - if (!g_sensorDev[index].subscribed) { - continue; - } - int32_t errCode = g_sensorDev[index].unSubscribeSensor(sensorTypeId); - if (errCode != SENSOR_OK) { - HILOG_INFO(HILOG_MODULE_ACE, "Unsubscribe :%d failed:%d", sensorTypeId, errCode); - } - } + return ExecuteAsyncWork(thisVal, args, argsNum, ExecuteGetAccelerometerData); +} + +JSIValue SensorModule::GetGyroscopeData(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum) +{ + return ExecuteAsyncWork(thisVal, args, argsNum, ExecuteGetGyroscopeData); +} + +void SensorModule::OnTerminate() +{ + ExecuteUnsubscribeAllSensors(); + sensorInfo_ = nullptr; + sensorCnt_ = 0; } } // namespace ACELite diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/sensor_module.h b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/sensor_module.h index 1333e7b99..62bc37b70 100644 --- a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/sensor_module.h +++ b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/sensor_module.h @@ -35,16 +35,6 @@ struct SensorParams { JSIValue thisVal = JSI::CreateUndefined(); }; -typedef int32_t (*UnsubscribeBySensorTypeId)(SensorTypeId sensorTypeId); - -struct SensorDev { - SensorTypeId sensorTypeId; - SensorUser user; - UnsubscribeBySensorTypeId unSubscribeSensor; - bool subscribed; - SensorParams sensorParams; -}; - class SensorModule final : public MemoryHeap { public: ACE_DISALLOW_COPY_AND_MOVE(SensorModule); @@ -74,27 +64,21 @@ public: static JSIValue UnsubscribeAccelerometer(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum); static JSIValue SubscribeGyroscope(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum); static JSIValue UnsubscribeGyroscope(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum); + static JSIValue GetAccelerometerData(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum); + static JSIValue GetGyroscopeData(const JSIValue thisVal, const JSIValue *args, uint8_t argsNum); static void SuccessCallBack(const JSIValue thisVal, const JSIValue args, JSIValue jsiValue, bool flag); - - static void RecordAccelSensorCallback(SensorEvent *event); - static void RecordBarSensorCallback(SensorEvent *event); - static void RecordCyroSensorCallback(SensorEvent *event); - static void RecordHrSensorCallback(SensorEvent *event); - static void RecordObsSensorCallback(SensorEvent *event); - static void RecordScSensorCallback(SensorEvent *event); - static void ExecuteGetAllSensors(); + static void ExecuteUnsubscribeAllSensors(); static int32_t SubscribeBySensorTypeId(void *data, SensorTypeId sensorTypeId); static int32_t UnsubscribeBySensorTypeId(SensorTypeId sensorTypeId); + static void OnTerminate(); - static void OnDestroy(); + static SensorInfo *sensorInfo_; + static int32_t sensorCnt_; private: - static JSIValue ExecuteSyncWork(const JSIValue thisVal, const JSIValue* args, uint8_t argsNum, AsyncWorkHandler ExecuteFunc); - static SensorDev *GetSensorIdBySensorDevIndex(SensorTypeId sensorTypeId); - static SensorParams *GetSensorParamsFromArgs(const JSIValue thisVal, const JSIValue* args, uint8_t argsNum); + static JSIValue ExecuteAsyncWork(const JSIValue thisVal, const JSIValue* args, uint8_t argsNum, AsyncWorkHandler ExecuteFunc); static void FailCallBack(const JSIValue thisVal, const JSIValue args, int ret, bool flag); - static void ExecuteSubscribeStepCounter(void *data); static void ExecuteSubscribeBarometer(void *data); static void ExecuteSubscribeHeartRate(void *data); @@ -102,9 +86,8 @@ private: static void ExecuteGetOnBodyState(void *data); static void ExecuteSubscribeGyroscope(void *data); static void ExecuteSubscribeAccelerometer(void *data); - static SensorInfo *sensorInfo_; - static int32_t sensorCnt_; - + static void ExecuteGetAccelerometerData(void *data); + static void ExecuteGetGyroscopeData(void *data); }; void InitSensorModule(JSIValue exports) @@ -122,7 +105,10 @@ void InitSensorModule(JSIValue exports) JSI::SetModuleAPI(exports, "unsubscribeAccelerometer", SensorModule::UnsubscribeAccelerometer); JSI::SetModuleAPI(exports, "subscribeGyroscope", SensorModule::SubscribeGyroscope); JSI::SetModuleAPI(exports, "unsubscribeGyroscope", SensorModule::UnsubscribeGyroscope); - JSI::SetOnDestroy(exports, SensorModule::OnDestroy); + JSI::SetModuleAPI(exports, "getAccelerometerData", SensorModule::GetAccelerometerData); + JSI::SetModuleAPI(exports, "getGyroscopeData", SensorModule::GetGyroscopeData); + JSI::SetOnTerminate(exports, SensorModule::OnTerminate); + JSI::SetOnDestroy(exports, SensorModule::OnTerminate); SensorModule::ExecuteGetAllSensors(); } diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/watchface/watchface_module.cpp b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/watchface/watchface_module.cpp new file mode 100644 index 000000000..0da6cc1b4 --- /dev/null +++ b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/watchface/watchface_module.cpp @@ -0,0 +1,267 @@ +/* + * Copyright (c) CompanyNameMagicTag. 2025-2025. All rights reserved. + * Description: watchface JS intarface + * Author: Software Group + * Create: 2025-09-5 + */ + +#include +#include "jsi.h" +#include "securec.h" +#include "ace_log.h" +#include "js_async_work.h" +#include "watchface_module.h" + +namespace OHOS { +namespace ACELite { + +bool WatchfaceModule::isListenerRunning_ = false; +bool WatchfaceModule::isTerminate_ = false; + +constexpr static uint32_t STEP_SIZE = 512; +constexpr static uint32_t DELAY_TIME = 500; + +// 下载状态打桩变量 +static uint32_t totalSize = 16 * 1024; +static uint32_t receivedSize = 0; + +bool WatchfaceModule::GetDialInfo(uint32_t uuid, WatchDialInfo& watch, JSIValue& dialInfo) +{ + bool isGet = ::GetWatchFaceInfo(uuid, &watch); + if (isGet) { + JSI::SetNumberProperty(dialInfo, "uuid", watch.uuid); + JSI::SetNumberProperty(dialInfo, "install_state", watch.install_state); + JSI::SetNumberProperty(dialInfo, "is_current_watch", watch.is_current_watch); + JSI::SetStringProperty(dialInfo, "watch_protocol_version", reinterpret_cast(watch.watch_protocol_version)); + JSI::SetStringProperty(dialInfo, "watch_version", reinterpret_cast(watch.watch_version)); + return true; + } else { + return false; + } +} + +JSIValue WatchfaceModule::SetWatchFace(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize) +{ + if (argsSize != ARGC_TWO) { + HILOG_ERROR(HILOG_MODULE_ACE, "Invalid parameter!"); + return JSI::CreateUndefined(); + } + + WATCHFACE_ERRCODE ret = WATCHFACE_SUCCESS; + JSIValue dialInfo = JSI::CreateObject(); + JSIValue callback = JSI::AcquireValue(args[1]); + bool isGet = false; + + uint32_t uuid = JSI::ValueToNumber(args[0]); + bool installed = SetCurrentWatchFace(uuid); + if (!installed) { + HILOG_ERROR(HILOG_MODULE_ACE, "SetCurrentWatchFace failed!"); + ret = WATCHFACE_INSTALL_ERROR; + goto exit; + } + + WatchDialInfo watch; + memset_s(&watch, sizeof(WatchDialInfo), 0, sizeof(WatchDialInfo)); + isGet = GetDialInfo(uuid, watch, dialInfo); + if (!isGet) { + HILOG_ERROR(HILOG_MODULE_ACE, "GetDialInfo failed!"); + ret = WATCHFACE_GETINFO_ERROR; + } + +exit: + JSIValue err = JSI::CreateNumber(ret); + JSIValue argv[ARGC_TWO] = {err, dialInfo}; + JSI::CallFunction(callback, thisVal, argv, ARGC_TWO); + JSI::ReleaseValueList(err, callback, dialInfo); + return JSI::CreateUndefined(); +} + +JSIValue WatchfaceModule::GetWatchFaceInfo(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize) +{ + if (argsSize != ARGC_TWO) { + HILOG_ERROR(HILOG_MODULE_ACE, "Invalid parameter!"); + return JSI::CreateUndefined(); + } + + WatchDialInfo watch; + memset_s(&watch, sizeof(WatchDialInfo), 0, sizeof(WatchDialInfo)); + WATCHFACE_ERRCODE ret = WATCHFACE_SUCCESS; + + uint32_t uuid = JSI::ValueToNumber(args[0]); + JSIValue dialInfo = JSI::CreateObject(); + bool isGet = GetDialInfo(uuid, watch, dialInfo); + if (!isGet) { + HILOG_ERROR(HILOG_MODULE_ACE, "GetDialInfo failed!"); + ret = WATCHFACE_GETINFO_ERROR; + } + + JSIValue err = JSI::CreateNumber(ret); + JSIValue callback = JSI::AcquireValue(args[1]); + JSIValue argv[ARGC_TWO] = {err, dialInfo}; + JSI::CallFunction(callback, thisVal, argv, ARGC_TWO); + JSI::ReleaseValueList(err, callback, dialInfo); + + return JSI::CreateUndefined(); +} + +// 下载状态打桩函数 +static int GetDownloadStatus(DownloadStatus& status) +{ + status.receivedSize = receivedSize; + status.totalSize = totalSize; + receivedSize += STEP_SIZE; + if (receivedSize > totalSize) { + receivedSize = totalSize; + } + status.uuid = 1; + + osal_msleep(DELAY_TIME); + return 0; +} + +void WatchfaceModule::FailCallback(void *data) +{ + if (data == nullptr) { + HILOG_ERROR(HILOG_MODULE_ACE, "Invalid null argument in FailCallback"); + isListenerRunning_ = false; + return; + } + + WatchfaceParams *params = static_cast(data); + + JSIValue installInfo = JSI::CreateObject(); + JSIValue err = JSI::CreateNumber(WATCHFACE_GETMSG_ERROR); + JSIValue callback = params->callback; + JSIValue thisVal = params->thisVal; + + JSIValue argv[ARGC_TWO] = {err, installInfo}; + + if (!isTerminate_) { + JSI::CallFunction(callback, thisVal, argv, ARGC_TWO); + } + JSI::ReleaseValueList(callback, thisVal); + JSI::ReleaseValueList(err, installInfo); + delete params; + isListenerRunning_ = false; + return; +} + +void WatchfaceModule::SuccessCallback(void *data) +{ + if (data == nullptr) { + HILOG_ERROR(HILOG_MODULE_ACE, "Invalid null argument in SuccessCallback"); + return; + } + + WatchfaceParams *params = static_cast(data); + JSIValue callback = params->callback; + JSIValue thisVal = params->thisVal; + + JSIValue installInfo = JSI::CreateObject(); + JSIValue err = JSI::CreateNumber(WATCHFACE_SUCCESS); + JSI::SetNumberProperty(installInfo, "process", params->process); + JSI::SetNumberProperty(installInfo, "install_state", params->installState); + + JSIValue argv[ARGC_TWO] = {err, installInfo}; + + if (!isTerminate_) { + JSI::CallFunction(callback, thisVal, argv, ARGC_TWO); + } + + JSI::ReleaseValueList(err, installInfo); + if (params->installState || isTerminate_) { + JSI::ReleaseValueList(callback, thisVal); + delete params; + isListenerRunning_ = false; + } + return; +} + +static void WatchFaceDownload(void *argument) +{ + if (argument == nullptr) { + HILOG_ERROR(HILOG_MODULE_ACE, "Invalid null argument in DownloadListener"); + return; + } + WatchfaceParams *params = static_cast(argument); + + do { + DownloadStatus status; + int ret = GetDownloadStatus(status); + if (ret != 0) { + HILOG_ERROR(HILOG_MODULE_ACE, "GetDownloadStatus failed"); + JsAsyncWork::DispatchAsyncWork(WatchfaceModule::FailCallback, static_cast(params)); + break; + } + + WatchDialInfo watch; + if (status.receivedSize == status.totalSize) { + bool isGet = ::GetWatchFaceInfo(status.uuid, &watch); + if (!isGet) { + HILOG_ERROR(HILOG_MODULE_ACE, "GetWatchFaceInfo failed"); + JsAsyncWork::DispatchAsyncWork(WatchfaceModule::FailCallback, static_cast(params)); + break; + } + params->installState = watch.install_state; + } + + params->process = static_cast(status.receivedSize) / status.totalSize; + + JsAsyncWork::DispatchAsyncWork(WatchfaceModule::SuccessCallback, static_cast(params)); + } while(!params->installState && !WatchfaceModule::isTerminate_); +} + +JSIValue WatchfaceModule::SetDownloadListener(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize) +{ + if (argsSize != ARGC_ONE) { + HILOG_ERROR(HILOG_MODULE_ACE, "Invalid parameter!"); + return JSI::CreateUndefined(); + } + + if (isListenerRunning_) { + HILOG_ERROR(HILOG_MODULE_ACE, "another DownloadListener is running!"); + return JSI::CreateUndefined(); + } + + WatchfaceParams *params = new WatchfaceParams{}; + if (params == nullptr) { + HILOG_ERROR(HILOG_MODULE_ACE, "Failed to allocate memory for params!"); + return JSI::CreateUndefined(); + } + + params->thisVal = JSI::AcquireValue(thisVal); + params->callback = JSI::AcquireValue(args[0]); + + osThreadId_t id; + osThreadAttr_t attr; + attr.name = "WatchFaceDownload"; + attr.attr_bits = osThreadDetached; + attr.cb_mem = NULL; + attr.cb_size = 0U; + attr.stack_mem = NULL; + attr.stack_size = 0x1000; + attr.priority = osPriorityNormal; + + isTerminate_ = false; + isListenerRunning_ = true; + receivedSize = 0; // 打桩数据初始化 + id = osThreadNew((osThreadFunc_t)WatchFaceDownload, (void *)params, &attr); + + return JSI::CreateUndefined(); +} + +JSIValue WatchfaceModule::Destroy(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize) +{ + isTerminate_ = true; + return JSI::CreateUndefined(); +} + +void InitWatchFaceModule(JSIValue exports) +{ + JSI::SetModuleAPI(exports, "setWatchFace", WatchfaceModule::SetWatchFace); + JSI::SetModuleAPI(exports, "getWatchFaceInfo", WatchfaceModule::GetWatchFaceInfo); + JSI::SetModuleAPI(exports, "setDownloadListener", WatchfaceModule::SetDownloadListener); + JSI::SetModuleAPI(exports, "destroy", WatchfaceModule::Destroy); +} +} // namespace ACELite +} // namespace OHOS \ No newline at end of file diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/watchface/watchface_module.h b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/watchface/watchface_module.h new file mode 100644 index 000000000..24bfac305 --- /dev/null +++ b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/watchface/watchface_module.h @@ -0,0 +1,62 @@ +/* + * Copyright (c) CompanyNameMagicTag. 2025-2025. All rights reserved. + * Description: watchface JS intarface + * Author: Software Group + * Create: 2025-09-5 + */ + +#ifndef WATCHFACE_MODULE_H +#define WATCHFACE_MODULE_H + +#include +#include +#include "jsi.h" +#include "WatchInterface.h" + +namespace OHOS { +namespace ACELite { + +typedef enum { + WATCHFACE_SUCCESS = 0, + WATCHFACE_PARAM_ERROR = 401, + WATCHFACE_INSTALL_ERROR = 2400001, + WATCHFACE_GETINFO_ERROR = 2400002, + WATCHFACE_GETMSG_ERROR = 2400003, +} WATCHFACE_ERRCODE; + +typedef watch_dial_info WatchDialInfo; + +struct DownloadStatus { + uint32_t receivedSize; + uint32_t totalSize; + uint32_t uuid; +}; + +struct WatchfaceParams{ + JSIValue thisVal; + JSIValue callback; + double process; + uint8_t installState; +}; + +class WatchfaceModule final : public MemoryHeap { +public: + WatchfaceModule() = default; + ~WatchfaceModule() = default; + static JSIValue SetWatchFace(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize); + static JSIValue GetWatchFaceInfo(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize); + static JSIValue SetDownloadListener(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize); + static JSIValue Destroy(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize); + static void FailCallback(void *data); + static void SuccessCallback(void *data); + static bool isTerminate_; +private: + static bool GetDialInfo(uint32_t uuid, WatchDialInfo& watch, JSIValue& dialInfo); + static bool isListenerRunning_; +}; +void InitWatchFaceModule(JSIValue exports); + +} // namespace ACELite +} // namespace OHOS + +#endif // WATCHFACE_MODULE_H \ No newline at end of file diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/websocket/websocket_common.h b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/websocket/websocket_common.h new file mode 100644 index 000000000..9fd3cdcac --- /dev/null +++ b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/websocket/websocket_common.h @@ -0,0 +1,29 @@ +/* + * Copyright (c) CompanyNameMagicTag. 2025-2025. All rights reserved. + * Description: websocket common definition + * Author: Software Group + * Create: 2025-11-19 + */ + +#ifndef WEBSOCKET_COMMON_H +#define WEBSOCKET_COMMON_H + + +namespace OHOS { +namespace ACELite { + +#define net_malloc ace_malloc +#define net_free ace_free + +enum WsEventId { + WS_EVENT_OPEN = 0, + WS_EVENT_MESSAGE = 1, + WS_EVENT_CLOSE = 2, + WS_EVENT_ERROR = 3, + WS_EVENT_MAX = 4 +}; + +} // namespace ACELite +} // namespace OHOS + +#endif \ No newline at end of file diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/websocket/websocket_module.h b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/websocket/websocket_module.h index a65747196..7cb1201d8 100644 --- a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/websocket/websocket_module.h +++ b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/websocket/websocket_module.h @@ -12,6 +12,8 @@ #include "jsi.h" #include #include +#include "websocket_common.h" +#include "websocket_module_callback.h" namespace OHOS { namespace ACELite { @@ -21,21 +23,27 @@ struct EventCallback { JSIValue context; }; -class WebsocketModule final : public MemoryHeap { +class WebSocketModule final : public MemoryHeap { public: - WebsocketModule() = default; - ~WebsocketModule() = default; - static JSIValue CreateWebsocket(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize); + WebSocketModule() = default; + ~WebSocketModule() = default; + static JSIValue CreateWebSocket(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize); static JSIValue Connect(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize); static JSIValue Send(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize); + static JSIValue SendInit(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize); + static JSIValue SendUpdate(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize); + static JSIValue SendFinish(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize); static JSIValue Close(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize); + static JSIValue Destroy(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize); static JSIValue On(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize); static JSIValue Off(const JSIValue thisVal, const JSIValue *args, uint8_t argsSize); static std::map eventCallbacks; - static void Destroy(); static void OnTerminate(); +private: + static WsEventId GetEventId(const char *event); + static char *HeaderJsonToString(char* headerJson); }; -void InitWebsocketModule(JSIValue exports); +void InitWebSocketClientModule(JSIValue exports); } // namespace ACELite } // namespace OHOS diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/websocket/websocket_module_callback.h b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/websocket/websocket_module_callback.h new file mode 100644 index 000000000..7d48719a9 --- /dev/null +++ b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/websocket/websocket_module_callback.h @@ -0,0 +1,47 @@ +/* + * Copyright (c) CompanyNameMagicTag. 2025-2025. All rights reserved. + * Description: websocket callback interfaces + * Author: Software Group + * Create: 2025-09-1 + */ + +#ifndef WEBSOCKET_MODULE_CALLBACK_H +#define WEBSOCKET_MODULE_CALLBACK_H + +#include "jsi.h" +#include "net_websocket_type.h" +#include "http_errcode.h" +#include "websocket_common.h" + +namespace OHOS { +namespace ACELite { + +struct WsResult { + int resCode; + char* reason; + char* data; + int length; + bool isBinary; + int clientId; + WsEventId eventId; +}; + +class WsCallback final : public MemoryHeap { +public: + WsCallback() = default; + ~WsCallback() = default; + + static void DispatchStateInfo(int resCode, const char* reason, WsEventId eventId, int clientId); + static void DispatchMessage(const char *data, size_t length, bool isBinary, int clientId); + +private: + static void SendStateInfo(void *param); + static void SendMessage(void *param); + +private: +}; + +} // namespace ACELite +} // namespace OHOS + +#endif \ No newline at end of file diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/websocket/websocket_module_client.h b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/websocket/websocket_module_client.h new file mode 100644 index 000000000..4dbbfca09 --- /dev/null +++ b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/modules/websocket/websocket_module_client.h @@ -0,0 +1,80 @@ +/* + * Copyright (c) CompanyNameMagicTag. 2025-2025. All rights reserved. + * Description: websocket client interfaces + * Author: Software Group + * Create: 2025-10-20 + */ + +#ifndef WEBSOCKET_CLIENT_H +#define WEBSOCKET_CLIENT_H + +#include "jsi.h" +#include "net_websocket.h" +#include "net_websocket_type.h" +#include "websocket_common.h" + +namespace OHOS { +namespace ACELite { + +enum WsDataType { + DATA_TYPE_STRING = 0, + DATA_TYPE_OBJECT = 1, + DATA_TYPE_ARRAY_BUFFER = 2 +}; + +struct WsHandler { + JSIValue send; + JSIValue sendInit; + JSIValue sendUpdate; + JSIValue sendFinish; + JSIValue connect; + JSIValue close; + JSIValue destroy; + JSIValue on; + JSIValue off; +}; + +class WsModuleClient final : public MemoryHeap { +public: + WsModuleClient(); + ~WsModuleClient(); + + int GetClientId(void) const + { + return clientId_; + } + + int Connect(const char *url, const char *option); + int Send(const char *data, size_t length, WsDataType dataType); + int SendInit(uint32_t size); + int SendUpdate(const char *data, size_t length); + int SendFinish(const char *data, size_t length, WsDataType dataType); + int Close(void); + static int GetErrorCode(int8_t errorCode); + + WsHandler handler_; + JSIValue context_; + JSIValue WsEvents_[WS_EVENT_MAX]; +private: + void ReleaseJSIValue(JSIValue value) + { + if (!JSI::ValueIsUndefined(value)) { + JSI::ReleaseValue(value); + } + } + + int SendBinary(const char *data, size_t bufferSize); + + static const uint32_t WS_MAX_DATA_LENGTH = 20 * 1024; + static const uint32_t WS_MAX_SEND_LENGTH = 100 * 1024; + int clientId_ = -1; + char *msgBuffer_ = nullptr; + uint32_t bufferSize_ = 0; + uint32_t dataSize_ = 0; + +}; + +} // namespace ACELite +} // namespace OHOS + +#endif // WEBSOCKET_CLIENT_H \ No newline at end of file diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/router/js_router.h b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/router/js_router.h index fa561a693..fcd9e6476 100644 --- a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/router/js_router.h +++ b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/router/js_router.h @@ -20,6 +20,8 @@ namespace OHOS { namespace ACELite { +int8_t GetStateMachineInfo(); + class Router final : public MemoryHeap { public: ACE_DISALLOW_COPY_AND_MOVE(Router); diff --git a/code/sdk/open_source/openharmony/foundation/appexecfwk/appexecfwk_lite/brandy-auto-ota-cli/libbms.a b/code/sdk/open_source/openharmony/foundation/appexecfwk/appexecfwk_lite/brandy-auto-ota-cli/libbms.a index 0f8144c2d1968de77dfb6d92300e8e81ffd16d0a..07676668a0535647c74820b9f892cbac97d7f9f5 100644 GIT binary patch delta 370 zcmbPrM_|?+feBI^W+tZQW~LU#8}>+Kj>kp#py&vS0#K@qSEVBw8A3SHux>+Kj>kwwHd&vS0#K^3tJVBxJg3SHux>+Kj>kwwHd&vS0#K^3tJVB$%3k8(Yb%3s3QBG z+*3gj*}jXD@s=vGkofk^`i#C>$U3$g6waG@%bk6uuP|>A252NfR)u-vUZK`n1d6+$SaCstlnN2BWhoUkqA6QS zyhvm$7=kFYENM@JwF$0(QizBmA+;D6qHRUQsG|_?yRSX>g8sbcefQk6ednCFGCO5u zcFNj*B%QLaP21O{cju*c^d83UE#0xeizj;VD`M?E*HCAmsJ3)R-@UuwhAS?SJWq}R zIi?iovNR5}zg8v-ZP0p3Da=6xO)l3g$ooa98!cqrU&rEf)iv612oCgQ!}tNhqdb#R zcyz3QipML*%=bDs#ev4eXBinBZQ3OD&O^7Un^uxy9J+@cx%KHv~?0Q zuj+YkZlS;>Plqhn^NIIr5fIw`x*7-NhQG@2bl0e7A_xIyUk$+{O|FPq@XA(| z_=U_#Gwt_183v~s)QqGmS)r9F(A}&?J&1;?Qlm_vOh{mHi~5fueQ8y{7>P%^dXABR zXFAotr3i8-Sb~QL3wfmJp}ATSSmU)7qK0T|GbwE<)|yn*2`no?VIZ%AGxuokClKN0 zjcGd|6an*Nkpj_0nlAalgiA$uq5Kw|`5IoP5gD^wJ1>1 zzL%m*mVm#r+Hy&je4Ew8Mnzv6=(RQFQs9n|-hT|r96JOBQ;z9nN^Q%gT>3_(_8c4` z>PUs|+Na)3?<>+{(zPOe!&BlIuGd99rC6LSsNb#6Kz~zku`=?ALgzN6q z8534rOF9)gv(%7$VHGw{vXmX4R$%7ihJu+%LHSI>((n;rnaP#xXlwE%;Dh;wDM8v7 z8P^F2B&*~{DC1)sc0OmE?u$xkW(uQw{RYDlDTB5*jmraDzRmb=U`K8>qHx;|LkcXi z`d)=r{blIT(qQBWm)y$j-feUg2ov0{cHYpitGUT!Z{DZWCO5|@3t%-ICF%%;Ua651 zyz254e$a_3y}`nkfPjy9MPO)hiN64*hRI2(T3Oey;O;(T7PbzSTt-J2lq7?>mL+ZOR~}5Z&b4gJ!rm+P2;|9rCyM zswJ=!2w<81?NaapC~5GC7}&s=c(wE{pOyn!d88(4E$i+#m*dq|h!UxyvRrrh(4 z>8}>5c$>N@;SXc)x1ExILV>2S{vejT?KEQxzP0@=<3%)FpubWE0^>n{;UU*Qb%j3< z+o0{v`qwi4g-A0VYzszp`A6V1@3rG&Pe8K6Spb-E`FcR`(dLiLAb~l!k1_ups{E7} z=s>FU`2W*Yf$743C>b3%YNAWDq=>nhe`}y~h>-E(m@qqVa1F|OVpNsA#5O(*;MWU* zkQ6xQcH@BHLTo+ES!c=G9SRL$WONf)of|cKg?bj!R{i z*%%rp6)!K7i!U-9d-b!+E24j5{@Af5dTJtmbu*VZ5p8@x$oQ1+8XcRA z4CQ87@Zk8^cbJ&8yPcL!j*Xab+1>50#^z$_vM1k;iLHoTb2g>6#@J^<73WFw{@5rB zH36%|!XO^qwsF@Fu|C2mV0-wL?+OTWJOO+6nO`9D!aG0TGY(L1}V4jdCZ;G+O+IPCw@JSh3b`gR<)pETbSnt%~)JyJeRS^HqW Sfj^qXk}7W0%V*8y!G8fU<6T(* delta 3759 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 diff --git a/code/sdk/open_source/openharmony/third_party/jerryscript/brandy-xts/libjerryscript.a b/code/sdk/open_source/openharmony/third_party/jerryscript/brandy-xts/libjerryscript.a index 59ffd4c763292bea743babe4ce8a2797b5bd67e6..2f2a74a186947b10cc0d08004b289cfed53f8125 100644 GIT binary patch delta 3704 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 VpPI#S|8Z{NSg7mi3(n)A-vJKLQUw42 diff --git a/code/sdk/open_source/openharmony/third_party/lwip/CMakeLists.txt b/code/sdk/open_source/openharmony/third_party/lwip/CMakeLists.txt index e083e5ee6..3a0e8b4fd 100644 --- a/code/sdk/open_source/openharmony/third_party/lwip/CMakeLists.txt +++ b/code/sdk/open_source/openharmony/third_party/lwip/CMakeLists.txt @@ -5,16 +5,17 @@ cmake_minimum_required(VERSION 3.7) # @brief cmake file # Copyright (c) @CompanyNameMagicTag 2022-2022. All rights reserved. #=============================================================================== +if("BRANDY_PRODUCT_EVB4" IN_LIST DEFINES OR "BRANDY_PRODUCT_EVB" IN_LIST DEFINES) set(COMPONENT_NAME "lwip") +else() +set(COMPONENT_NAME "ohos_lwip") +endif() set(CMAKE_LWIP_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/lwip_v2.1.3) set(LWIP_DIR ${CMAKE_CURRENT_SOURCE_DIR}/lwip_v2.1.3) -if("liteos_207_1_0" IN_LIST TARGET_COMPONENT) - set(CMAKE_LWIP_ADAPTER_DIR - ${CMAKE_CURRENT_SOURCE_DIR}/lwip_adapter/liteos) -elseif("liteos_207_0_0" IN_LIST TARGET_COMPONENT) +if("__LITEOS__" IN_LIST DEFINES) set(CMAKE_LWIP_ADAPTER_DIR ${CMAKE_CURRENT_SOURCE_DIR}/lwip_adapter/liteos) elseif("freertos" IN_LIST TARGET_COMPONENT) @@ -22,40 +23,6 @@ elseif("freertos" IN_LIST TARGET_COMPONENT) ${CMAKE_CURRENT_SOURCE_DIR}/lwip_adapter/freertos) endif() -# PPP -set(lwipppp_SRCS - ${LWIP_DIR}/src/netif/ppp/auth.c - ${LWIP_DIR}/src/netif/ppp/ccp.c - ${LWIP_DIR}/src/netif/ppp/chap-md5.c - ${LWIP_DIR}/src/netif/ppp/chap_ms.c - ${LWIP_DIR}/src/netif/ppp/chap-new.c - ${LWIP_DIR}/src/netif/ppp/demand.c - ${LWIP_DIR}/src/netif/ppp/eap.c - ${LWIP_DIR}/src/netif/ppp/ecp.c - ${LWIP_DIR}/src/netif/ppp/eui64.c - ${LWIP_DIR}/src/netif/ppp/fsm.c - ${LWIP_DIR}/src/netif/ppp/ipcp.c - ${LWIP_DIR}/src/netif/ppp/ipv6cp.c - ${LWIP_DIR}/src/netif/ppp/lcp.c - ${LWIP_DIR}/src/netif/ppp/magic.c - ${LWIP_DIR}/src/netif/ppp/mppe.c - ${LWIP_DIR}/src/netif/ppp/multilink.c - ${LWIP_DIR}/src/netif/ppp/ppp.c - ${LWIP_DIR}/src/netif/ppp/pppapi.c - ${LWIP_DIR}/src/netif/ppp/pppcrypt.c - ${LWIP_DIR}/src/netif/ppp/pppoe.c - ${LWIP_DIR}/src/netif/ppp/pppol2tp.c - ${LWIP_DIR}/src/netif/ppp/pppos.c - ${LWIP_DIR}/src/netif/ppp/upap.c - ${LWIP_DIR}/src/netif/ppp/utils.c - ${LWIP_DIR}/src/netif/ppp/vj.c - ${LWIP_DIR}/src/netif/ppp/polarssl/arc4.c - ${LWIP_DIR}/src/netif/ppp/polarssl/des.c - ${LWIP_DIR}/src/netif/ppp/polarssl/md4.c - ${LWIP_DIR}/src/netif/ppp/polarssl/md5.c - ${LWIP_DIR}/src/netif/ppp/polarssl/sha1.c -) - set(SOURCES ${CMAKE_LWIP_SOURCE_DIR}/src/core/tcp_out.c ${CMAKE_LWIP_SOURCE_DIR}/src/core/inet_chksum.c @@ -109,26 +76,15 @@ set(SOURCES ${CMAKE_LWIP_SOURCE_DIR}/src/api/api_lib.c ${CMAKE_LWIP_ADAPTER_DIR}/src/arch/sys_arch.c ${CMAKE_LWIP_ADAPTER_DIR}/src/arch/ethernetif.c - ${CMAKE_LWIP_ADAPTER_DIR}/src/arch/sio.c - ${CMAKE_LWIP_SOURCE_DIR}/src/netif/slipif.c - ${CMAKE_LWIP_ADAPTER_DIR}/src/test/lwip_test.c - ${CMAKE_LWIP_ADAPTER_DIR}/src/test/socket_test.c - ${CMAKE_LWIP_ADAPTER_DIR}/src/test/slip_test.c - ${CMAKE_CURRENT_SOURCE_DIR}/lwip_adapter/lwip_driver_adapter/lwip_driver_adapter.c - ${lwipppp_SRCS} ) if("__LITEOS__" IN_LIST DEFINES) list(APPEND SOURCES ${ROOT_DIR}/open_source/mbedtls/mbedtls_v3.6.0/library/net_sockets.c + ${CMAKE_CURRENT_SOURCE_DIR}/lwip_adapter/lwip_driver_adapter/lwip_net_manage.c ) endif() - - - - - set(PUBLIC_HEADER ) @@ -150,13 +106,24 @@ set(PUBLIC_DEFINES MBEDTLS_NET_C ) +if("SUPPORT_BREDR" IN_LIST DEFINES AND "__LITEOS__" IN_LIST DEFINES) + list(APPEND SOURCES + ${CMAKE_CURRENT_SOURCE_DIR}/lwip_adapter/lwip_driver_adapter/lwip_driver_adapter.c + ) +endif() # use this when you want to add ccflags like -include xxx set(COMPONENT_PUBLIC_CCFLAGS ) +if("BRANDY_PRODUCT_EVB4" IN_LIST DEFINES OR "BRANDY_PRODUCT_EVB" IN_LIST DEFINES) +set(COMPONENT_CCFLAGS +) +else() set(COMPONENT_CCFLAGS + -Wno-unused-but-set-variable ) +endif() if("__ALIOS__" IN_LIST DEFINES) list(APPEND PRIVATE_HEADER diff --git a/code/sdk/open_source/openharmony/third_party/lwip/lwip_adapter/liteos/src/arch/sys_arch.c b/code/sdk/open_source/openharmony/third_party/lwip/lwip_adapter/liteos/src/arch/sys_arch.c index 2485b79a3..6f1c02a1f 100644 --- a/code/sdk/open_source/openharmony/third_party/lwip/lwip_adapter/liteos/src/arch/sys_arch.c +++ b/code/sdk/open_source/openharmony/third_party/lwip/lwip_adapter/liteos/src/arch/sys_arch.c @@ -24,6 +24,12 @@ #define UNUSED(a) ((void)(a)) #endif +struct sys_arch_thread { + void *arg; + u8_t *stackMem; + u32_t taskId; +}; + #define LWIP_SEM_ID(x) (u32_t)(uintptr_t)((x)->sem) #define MBOX_EXPAND_MULTIPLE_SIZE 2 @@ -473,35 +479,75 @@ u32_t sys_now(void) /* Lwip docs mentioned like wraparound is not a problem in this funtion */ return (u32_t)((LOS_TickCountGet() * 1000) / LOSCFG_BASE_CORE_TICK_PER_SECOND); } + +void sys_thread_delete(void *param) +{ + if (param == NULL) { + return; + } + struct sys_arch_thread *threadCtl = (struct sys_arch_thread *)param; + LOS_TaskJoin(threadCtl->taskId, NULL); + + if (threadCtl->stackMem != NULL) { + free(threadCtl->stackMem); + threadCtl->stackMem = NULL; + } + free(threadCtl); +} + u32_t sys_jiffies(void) { /*sys_jiffies is the same as sys_now*/ return (u32_t)((LOS_TickCountGet() * 1000) / LOSCFG_BASE_CORE_TICK_PER_SECOND); } + sys_thread_t sys_thread_new(const char *name, lwip_thread_fn function, void *arg, int stacksize, int prio) { - TSK_INIT_PARAM_S task; - UINT32 taskid, ret; - (void)memset_s(&task, sizeof(task), 0, sizeof(task)); - + TSK_INIT_PARAM_S task = {0}; + u32_t taskId, ret; +#ifdef LOSCFG_TASK_STACK_STATIC_ALLOCATION + u8_t *stackMem = NULL; +#endif + if (function == NULL) { + return 0; + } + struct sys_arch_thread *param = calloc(1, sizeof(struct sys_arch_thread)); + if (param == NULL) { + return 0; + } + param->arg = arg; /* Create host Task */ task.pfnTaskEntry = (TSK_ENTRY_FUNC)function; task.uwStackSize = 3072; // 修改为3K=3072 task.pcName = (char *)name; task.usTaskPrio = prio; - task.uwResved = LOS_TASK_STATUS_DETACHED; + task.uwResved = LOS_TASK_STATUS_JOINABLE; #ifdef BR_HW_LITEOS_VERSION LOS_TASK_PARAM_INIT_ARG(task, arg); #else task.auwArgs[0] = (UINTPTR)arg; #endif - ret = LOS_TaskCreate(&taskid, &task); +#ifdef LOSCFG_TASK_STACK_STATIC_ALLOCATION + stackMem = memalign(LOSCFG_STACK_POINT_ALIGN_SIZE, task.uwStackSize); + if (stackMem == NULL) { + LWIP_DEBUGF(SYS_DEBUG, ("sys_thread_new: memalign fail\r\n")); + free(param); + return 0; + } + param->stackMem = stackMem; + ret = LOS_TaskCreateStatic(&taskId, &task, stackMem); +#else + ret = LOS_TaskCreate(&taskId, &task); +#endif + param->taskId = taskId; if (ret != LOS_OK) { LWIP_DEBUGF(SYS_DEBUG, ("sys_thread_new: LOS_TaskCreate error %u\n", ret)); - return SYS_ARCH_ERROR; + free(stackMem); + free(param); + return 0; } (void)stacksize; - return taskid; + return (uintptr_t)param; } #ifdef LWIP_DEBUG diff --git a/code/sdk/open_source/openharmony/third_party/lwip/lwip_adapter/liteos/src/include/arch/cc.h b/code/sdk/open_source/openharmony/third_party/lwip/lwip_adapter/liteos/src/include/arch/cc.h index 89350f727..cf1056c1a 100644 --- a/code/sdk/open_source/openharmony/third_party/lwip/lwip_adapter/liteos/src/include/arch/cc.h +++ b/code/sdk/open_source/openharmony/third_party/lwip/lwip_adapter/liteos/src/include/arch/cc.h @@ -31,6 +31,7 @@ #include #include "asm/atomic.h" +#include #ifdef __cplusplus extern "C" { diff --git a/code/sdk/open_source/openharmony/third_party/lwip/lwip_adapter/liteos/src/include/arch/sys_arch.h b/code/sdk/open_source/openharmony/third_party/lwip/lwip_adapter/liteos/src/include/arch/sys_arch.h index ff8b94360..c18d3f5ca 100644 --- a/code/sdk/open_source/openharmony/third_party/lwip/lwip_adapter/liteos/src/include/arch/sys_arch.h +++ b/code/sdk/open_source/openharmony/third_party/lwip/lwip_adapter/liteos/src/include/arch/sys_arch.h @@ -95,7 +95,7 @@ struct sys_mbox { typedef struct sys_mbox *sys_mbox_t; -typedef unsigned int sys_thread_t; +typedef uintptr_t sys_thread_t; #define sys_sem_valid(x) (((*x).sem == NULL) ? 0 : 1) #define sys_sem_set_invalid(x) ((*x).sem = NULL) diff --git a/code/sdk/open_source/openharmony/third_party/lwip/lwip_adapter/liteos/src/include/lwip/lwipopts_default.h b/code/sdk/open_source/openharmony/third_party/lwip/lwip_adapter/liteos/src/include/lwip/lwipopts_default.h index 0bee4e3f5..516f985b9 100644 --- a/code/sdk/open_source/openharmony/third_party/lwip/lwip_adapter/liteos/src/include/lwip/lwipopts_default.h +++ b/code/sdk/open_source/openharmony/third_party/lwip/lwip_adapter/liteos/src/include/lwip/lwipopts_default.h @@ -776,8 +776,12 @@ extern "C" { #define TCP_SND_BUF (65535 / 3) #endif +/** + * TCP_SND_QUEUELEN: TCP sender buffer space (pbufs). This must be at least + * as much as (2 * TCP_SND_BUF/TCP_MSS) for things to work. + */ #ifndef TCP_SND_QUEUELEN -#define TCP_SND_QUEUELEN (TCP_SND_BUF / TCP_MSS) +#define TCP_SND_QUEUELEN ((4 * (TCP_SND_BUF) + (TCP_MSS - 1))/(TCP_MSS)) #endif #ifndef TCP_WND @@ -833,11 +837,11 @@ extern "C" { #endif #ifndef MEMP_NUM_NETDB -#define MEMP_NUM_NETDB 1 +#define MEMP_NUM_NETDB 8 #endif #ifndef DNS_TABLE_SIZE -#define DNS_TABLE_SIZE 2 +#define DNS_TABLE_SIZE 8 #endif #ifndef DNS_MAX_IPADDR @@ -1026,6 +1030,13 @@ extern "C" { #define IP_REASSEMBLY 1 #endif +#if IP_REASSEMBLY +/* The IP reassembly timer interval in milliseconds. */ +#ifndef IP_TMR_INTERVAL +#define IP_TMR_INTERVAL 2000 +#endif +#endif + #ifndef LWIP_RPL #define LWIP_RPL 0 #endif @@ -1338,6 +1349,11 @@ extern "C" { #define TCP_OOSEQ_MAX_PBUFS 8 #endif +/** LWIP_TIMEVAL_PRIVATE: if you want to use the struct timeval provided + * by your system, set this to 0 and include in cc.h */ +#ifndef LWIP_TIMEVAL_PRIVATE +#define LWIP_TIMEVAL_PRIVATE 0 +#endif /** * NO_SYS==1: Provides very minimal functionality. Otherwise, @@ -1452,13 +1468,6 @@ a lot of data that needs to be copied, this should be set high. */ */ #ifndef LWIP_NUM_SOCKETS -/** - * DEFAULT_LWIP_NUM_SOCKETS is default number of sockets. - */ -#ifndef DEFAULT_LWIP_NUM_SOCKETS -#define DEFAULT_LWIP_NUM_SOCKETS 8 -#endif /* DEFAULT_LWIP_NUM_SOCKETS */ - #else /* else LWIP_NUM_SOCKETS*/ #ifndef DEFAULT_LWIP_NUM_SOCKETS @@ -1683,6 +1692,12 @@ extern unsigned int g_lwip_num_sockets; /* @ingroup Config_TCP * Defines the TCP TTL value. */ +#if LWIP_TCP +#ifndef TCP_TMR_INTERVAL +#define TCP_TMR_INTERVAL 2000 /* The TCP timer interval in milliseconds. */ +#endif /* TCP_TMR_INTERVAL */ +#endif + #ifndef TCP_TTL #define TCP_TTL 255 #endif @@ -1692,6 +1707,12 @@ extern unsigned int g_lwip_num_sockets; #define LWIP_ARP 1 #endif +#if LWIP_ARP +#ifndef ARP_TMR_INTERVAL +#define ARP_TMR_INTERVAL 2000 +#endif +#endif + /** * Defines the mailbox size for the tcpip thread messages * The queue size value itself is platform-dependent, but is passed to @@ -1798,7 +1819,38 @@ TCP sender buffer space (pbufs). This must be at least = 2 * /* ---------- IGMP options ---------- */ #ifndef LWIP_IGMP -#define LWIP_IGMP 1 +#define LWIP_IGMP 0 +#endif + +#if LWIP_IPV6 +#ifndef ND6_TMR_INTERVAL +#define ND6_TMR_INTERVAL 2000 +#endif + +#ifndef MLD6_TMR_INTERVAL +#define MLD6_TMR_INTERVAL 2000 /* Milliseconds */ +#endif + +/** The IPv6 reassembly timer interval in milliseconds. */ +#ifndef IP6_REASS_TMR_INTERVAL +#define IP6_REASS_TMR_INTERVAL 2000 +#endif + +#endif + +/* IGMP timer */ +#if LWIP_IGMP +#ifndef IGMP_TMR_INTERVAL +#define IGMP_TMR_INTERVAL 2000 /* Milliseconds */ +#endif + +#ifndef IGMP_V1_DELAYING_MEMBER_TMR +#define IGMP_V1_DELAYING_MEMBER_TMR 10 +#endif + +#ifndef IGMP_JOIN_DELAYING_MEMBER_TMR +#define IGMP_JOIN_DELAYING_MEMBER_TMR 5 +#endif #endif /* ---------- DHCP options ---------- */ @@ -1809,6 +1861,12 @@ TCP sender buffer space (pbufs). This must be at least = 2 * #define LWIP_DHCP 1 #endif +#if LWIP_DHCP +/** period (in milliseconds) of the application calling dhcp_fine_tmr() */ +#ifndef DHCP_FINE_TIMER_MSECS +#define DHCP_FINE_TIMER_MSECS 2000 +#endif +#endif /* ---------- DNS options ---------- */ /** * LWIP_DNS==1: Turn on DNS module. UDP must be available for DNS @@ -1822,6 +1880,10 @@ TCP sender buffer space (pbufs). This must be at least = 2 * #ifndef LWIP_DNS_REVERSE #define LWIP_DNS_REVERSE 1 #endif +/** DNS timer period */ +#ifndef DNS_TMR_INTERVAL +#define DNS_TMR_INTERVAL 3000 +#endif #else #undef LWIP_DNS_REVERSE #define LWIP_DNS_REVERSE 0 @@ -1829,6 +1891,14 @@ TCP sender buffer space (pbufs). This must be at least = 2 * #if !defined DNS_MAX_RETRIES && LWIP_SMALL_SIZE #define DNS_MAX_RETRIES 2 + +/** period (in milliseconds) of the application calling dhcp6_tmr() */ +#if LWIP_IPV6_DHCP6 +#ifndef DHCP6_TIMER_MSECS +#define DHCP6_TIMER_MSECS 2000 +#endif +#endif + #endif /* ---------- UDP options ---------- */ @@ -1892,31 +1962,15 @@ TCP sender buffer space (pbufs). This must be at least = 2 * /* -----------LOOPIF options -----------*/ #ifndef LWIP_HAVE_LOOPIF -#define LWIP_HAVE_LOOPIF 1 +#define LWIP_HAVE_LOOPIF 0 #endif /* -----------LOOPBACK options -----------*/ #ifndef LWIP_NETIF_LOOPBACK -#define LWIP_NETIF_LOOPBACK 1 +#define LWIP_NETIF_LOOPBACK 0 #endif -/* ---------- Statistics options ---------- */ -/** - * LWIP_STATS==1: Enables statistics gathering in lwip_stats. - */ -#ifndef LWIP_STATS -#define LWIP_STATS 1 -#endif -/* ---------- TFTP options ---------- */ -#ifndef LWIP_TFTP -#define LWIP_TFTP 1 -#endif - -/* ---------- SNTP options ---------- */ -#ifndef LWIP_SNTP -#define LWIP_SNTP 1 -#endif #if LWIP_SNTP @@ -1976,10 +2030,10 @@ TCP sender buffer space (pbufs). This must be at least = 2 * #if LWIP_LITEOS_COMPAT #ifndef TCPIP_THREAD_STACKSIZE -#define TCPIP_THREAD_STACKSIZE 0x6000 +#define TCPIP_THREAD_STACKSIZE 0x1000 #endif #ifndef TCPIP_THREAD_PRIO -#define TCPIP_THREAD_PRIO 5 +#define TCPIP_THREAD_PRIO 24 #endif #ifndef LWIP_SOCKET_START_NUM @@ -2170,10 +2224,6 @@ upto 255 interfaces . New versions donot have these restrictions but we stick to #endif #endif -#ifndef LWIP_IPV6_MLD -#define LWIP_IPV6_MLD 1 -#endif - #ifndef LWIP_MLD6_ENABLE_MLD_ON_DAD #define LWIP_MLD6_ENABLE_MLD_ON_DAD LWIP_IPV6 && LWIP_IPV6_MLD #endif diff --git a/code/sdk/open_source/openharmony/third_party/lwip/lwip_adapter/lwip_driver_adapter/lwip_driver_adapter.c b/code/sdk/open_source/openharmony/third_party/lwip/lwip_adapter/lwip_driver_adapter/lwip_driver_adapter.c index bc845a7bf..352e49a36 100644 --- a/code/sdk/open_source/openharmony/third_party/lwip/lwip_adapter/lwip_driver_adapter/lwip_driver_adapter.c +++ b/code/sdk/open_source/openharmony/third_party/lwip/lwip_adapter/lwip_driver_adapter/lwip_driver_adapter.c @@ -4,20 +4,46 @@ #include "lwip_driver_adapter.h" #include "lwip/tcpip.h" +#include "lwip/etharp.h" #include "lwip/netifapi.h" #include "lwip/arch.h" -#ifdef SUPPORT_BREDR #include "bts_pan.h" #include "bts_br_gap.h" + +#define LWIP_ADAPTER_DEBUG +#ifdef LWIP_ADAPTER_DEBUG +#define LWIP_DEBUG_LOG(message) LWIP_PLATFORM_DIAG(message) +#else +#define LWIP_DEBUG_LOG(message) #endif +#define PAN_LOW_POWER + +static struct netif *g_bt_pan_netif = NULL; +static net_connection_callback g_bt_pan_callback = NULL; +static uint8_t g_pan_net_state = CONNECTION_UNKNOWN; -#ifdef SUPPORT_BREDR -static struct netif *bt_pan_netif = NULL; +#ifndef PAN_LOW_POWER +typedef struct { + uint8_t thread_run; + uint8_t end_thread; + sys_sem_t pan_sem; + void *param; +} thread_ctl; + +static thread_ctl g_pan_thread = {0}; #endif + +#define BTPAN_THREAD_NAME "bt_pan_listen" +#define BTPAN_THREAD_STACKSIZE 0xc00 +#define BTPAN_THREAD_PRIO 30 +#define BTPAN_MAX_PAIRED_DEVICES 5 +#define DEVICE_MAJOR_CLASS_PHONE 0x200 /* 手机设备COD:Major Device Class = phone */ + static err_t lwip_driver_output(struct netif *netif, struct pbuf *p, const ip4_addr_t *ipaddr); static err_t lwip_netif_linkout(struct netif *netif, struct pbuf *p) { + (void)netif; if (p == NULL || p->payload == NULL) { return ERR_ARG; } @@ -26,19 +52,21 @@ static err_t lwip_netif_linkout(struct netif *netif, struct pbuf *p) payload += SIZEOF_ETH_HDR; p->len -= SIZEOF_ETH_HDR; } -#ifdef SUPPORT_BREDR pan_service_write_data(payload, p->len, PAN_NETWORK_PROTOCOL_ARP, PAN_PACKET_TYPE_DEST_ONLY_UNICAST); -#endif return ERR_OK; } static err_t lwip_driver_init_fn(struct netif *netif_p) { + if (netif_p == NULL) { + return ERR_ARG; + } netif_p->output = lwip_driver_output; netif_p->linkoutput = lwip_netif_linkout; netifapi_netif_set_up(netif_p); netifapi_netif_set_link_up(netif_p); + netifapi_netif_set_default(netif_p); netif_p->mtu = 1000; /* 1000: mtu */ return ERR_OK; @@ -50,13 +78,6 @@ static err_t lwip_driver_init_fn(struct netif *netif_p) static struct netif *lwip_driver_init_netif(const char *name, const unsigned char *hw_addr) { struct netif *netif = (struct netif *)malloc(sizeof(struct netif)); -#if LWIP_IPV4 - ip4_addr_t ipaddr, netmask, gw; - - IP4_ADDR(&gw, 192, 168, 44, 1); /* 192 168 44 1 : default gw addr */ - IP4_ADDR(&ipaddr, 192, 168, 44, 66); /* 192 168 44 66 : default ip addr */ - IP4_ADDR(&netmask, 255, 255, 255, 0); /* 255 0 : default netmask */ -#endif if (netif == NULL) { return NULL; @@ -68,16 +89,7 @@ static struct netif *lwip_driver_init_netif(const char *name, const unsigned cha return NULL; } netif->hwaddr_len = NETIF_MAX_HWADDR_LEN; - netifapi_netif_add(netif, -#if LWIP_IPV4 - &ipaddr, - &netmask, - &gw, -#endif - NULL, - lwip_driver_init_fn, - tcpip_input); - netif_set_default(netif); + netifapi_netif_add(netif, NULL, NULL, NULL, NULL, lwip_driver_init_fn, tcpip_input); return netif; } @@ -114,24 +126,51 @@ static err_t lwip_driver_output(struct netif *netif, struct pbuf *p, const ip4_a if (netif == NULL || p == NULL || ipaddr == NULL) { return ERR_ARG; } -#ifdef SUPPORT_BREDR + + uint8_t *payload = NULL; + struct pbuf *p_clone = NULL; + if (p->tot_len > p->len && p->next != NULL) { + p_clone = pbuf_clone(PBUF_RAW, PBUF_RAM, p); /* packet queue copy to one packet */ + if (p_clone == NULL) { + return ERR_MEM; + } + payload = p_clone->payload; + } else { + payload = p->payload; + } if (ip4_addr_isbroadcast(ipaddr, netif)) { - pan_service_write_data(p->payload, p->len, PAN_NETWORK_PROTOCOL_IPV4, PAN_PACKET_TYPE_DEST_ONLY_BORADCAST); + pan_service_write_data(payload, p->tot_len, PAN_NETWORK_PROTOCOL_IPV4, PAN_PACKET_TYPE_DEST_ONLY_BORADCAST); } else { - pan_service_write_data(p->payload, p->len, PAN_NETWORK_PROTOCOL_IPV4, PAN_PACKET_TYPE_DEST_ONLY_UNICAST); + pan_service_write_data(payload, p->tot_len, PAN_NETWORK_PROTOCOL_IPV4, PAN_PACKET_TYPE_DEST_ONLY_UNICAST); + } + if (p_clone != NULL) { + pbuf_free(p_clone); } -#endif return ERR_OK; } -#ifdef SUPPORT_BREDR -static void sample_pan_net_state_callback(uint8_t net_state) +static void bt_pan_net_state_callback(uint8_t net_state) { - printf("sample pan net_state=%u\n", net_state); + struct netif *netif_p = g_bt_pan_netif; + if (netif_p == NULL) { + return; + } if (net_state == 1) { + netifapi_netif_set_link_up(netif_p); + netifapi_netif_set_up(netif_p); #if defined(LWIP_DHCP) && LWIP_DHCP - netifapi_dhcp_start(bt_pan_netif); - printf("dhcp start\n"); + netifapi_dhcp_start(netif_p); +#endif + } else { + netifapi_netif_set_link_down(netif_p); + netifapi_netif_set_down(netif_p); +#if LWIP_IPV4 + ip_addr_set_zero_ip4(&netif_p->ip_addr); + ip_addr_set_zero_ip4(&netif_p->netmask); + ip_addr_set_zero_ip4(&netif_p->gw); +#endif +#ifndef PAN_LOW_POWER + sys_sem_signal(&g_pan_thread.pan_sem); #endif } } @@ -157,24 +196,28 @@ static int lwip_input_arp(u8_t *data, u16_t len, struct netif *netif) } #endif -static void sample_pan_rpt_ethernet(uint8_t *packet, uint16_t packet_length, uint16_t network_protocol) +static void bt_pan_rpt_ethernet(uint8_t *packet, uint16_t packet_length, uint16_t network_protocol) { int ret = ERR_OK; + struct netif *netif_p = g_bt_pan_netif; + if (netif_p == NULL) { + return; + } if (network_protocol == PAN_NETWORK_PROTOCOL_ARP) { #if defined(LWIP_IPV4) && LWIP_IPV4 && defined(LWIP_ARP) && LWIP_ARP - ret = lwip_input_arp(packet, packet_length, bt_pan_netif); + ret = lwip_input_arp(packet, packet_length, netif_p); #endif } else if (network_protocol == PAN_NETWORK_PROTOCOL_IPV4) { - ret = lwip_driver_input(packet, packet_length, bt_pan_netif); + ret = lwip_driver_input(packet, packet_length, netif_p); } else { return; } if (ret != 0) { - printf("pan receive packet fail, ret=0x%x\n", ret); + LWIP_DEBUG_LOG(("pan receive packet fail, ret=0x%x\n", ret)); } } -static pan_callbacks_t g_sample_pan_callbacks_t = {sample_pan_net_state_callback, sample_pan_rpt_ethernet}; +static pan_callbacks_t g_bt_pan_callbacks_t = {bt_pan_net_state_callback, bt_pan_rpt_ethernet}; /* mac addr to big-endian */ static void mac_addr_hton(uint8_t *data) @@ -194,47 +237,244 @@ static void mac_addr_hton(uint8_t *data) data[3] = temp; /* 3 : byte index */ } -static void lwip_register_bt_netif(void) +static void init_register_bt_netif(void) { - unsigned char local_addr[6]; /* 6: mac addr length */ +#if defined(BRANDY_PRODUCT_EVB4) || defined(BRANDY_PRODUCT_EVB) + unsigned char local_addr[6]; /* 6: mac addr length */ bluetooth_get_local_addr(local_addr, 6); /* 6: mac addr length */ mac_addr_hton(local_addr); - if (bt_pan_netif != NULL) { +#else + bd_addr_t local_addr = {0}; + bluetooth_get_local_addr(&local_addr); + mac_addr_hton(local_addr.addr); +#endif + if (g_bt_pan_netif != NULL) { return; } - bt_pan_netif = lwip_driver_init_netif("bt", local_addr); - if (bt_pan_netif == NULL) { - printf("sample pan init lwip fail\n"); +#if defined(BRANDY_PRODUCT_EVB4) || defined(BRANDY_PRODUCT_EVB) + g_bt_pan_netif = lwip_driver_init_netif("bt", local_addr); +#else + g_bt_pan_netif = lwip_driver_init_netif("bt", local_addr.addr); +#endif + if (g_bt_pan_netif == NULL) { + LWIP_DEBUG_LOG(("bt pan init lwip fail\n")); } } -void bt_pan_open(void) +static int bt_pan_get_paired_device(bd_addr_t *addr) { - int result; - bool ret; - gap_paired_device_info_t dev_info[1] = {0}; - int number = 1; - lwip_register_bt_netif(); - ret = gap_get_paired_devices_list(dev_info, &number); - if (ret) { - printf("get bt dev info ok\n"); + int index = 0; + int number = BTPAN_MAX_PAIRED_DEVICES; +#if defined(BRANDY_PRODUCT_EVB4) || defined(BRANDY_PRODUCT_EVB) + gap_paired_device_info_t dev_info[BTPAN_MAX_PAIRED_DEVICES] = {0}; +#else + gap_remote_device_info_t dev_info[BTPAN_MAX_PAIRED_DEVICES] = {0}; +#endif +#if defined(BRANDY_PRODUCT_EVB4) || defined(BRANDY_PRODUCT_EVB) + if (!gap_get_paired_devices_list(dev_info, &number)) { + LWIP_DEBUG_LOG(("get bt dev info fail\n")); + return -1; + } +#else + if (gap_br_get_paired_devices_list(dev_info, &number) != ERRCODE_BT_SUCCESS) { + LWIP_DEBUG_LOG(("get bt dev info fail\n")); + return -1; + } +#endif + for (index = 0; index < BTPAN_MAX_PAIRED_DEVICES; index++) { +#if defined(BRANDY_PRODUCT_EVB4) || defined(BRANDY_PRODUCT_EVB) + if ((gap_get_device_class(&dev_info[index].addr) & DEVICE_MAJOR_CLASS_PHONE) != 0) { + break; + } +#else + if((dev_info[index].device_class & DEVICE_MAJOR_CLASS_PHONE) != 0) { + break; + } +#endif + } + if (index >= BTPAN_MAX_PAIRED_DEVICES) { + LWIP_DEBUG_LOG(("Not find paired phone\n")); + return -1; + } + if (memcpy_s(addr, sizeof(bd_addr_t), &dev_info[index].addr, sizeof(bd_addr_t)) != 0) { + return -1; + } + return 0; +} + +#if defined(PAN_LOW_POWER) +static int bt_pan_open_service(void) +{ + bd_addr_t addr; + int ret; + ret = bt_pan_get_paired_device(&addr); + if (ret != 0) { + LWIP_DEBUG_LOG(("bt_pan_get_paired_device fail\n")); + return ret; + } + ret = pan_service_open(&addr); + if (ret == 0) { + LWIP_DEBUG_LOG(("pan_service_open ok\n")); } else { - printf("get bt dev info fail\n"); + LWIP_DEBUG_LOG(("pan_service_open fail, ret=0x%x\n", ret)); + } + return ret; +} + +#else +static void bt_pan_thread(void *arg) +{ + bd_addr_t addr; + int ret; + thread_ctl *thread = (thread_ctl *)arg; + if (thread == NULL) { return; } - result = pan_register_callbacks(&g_sample_pan_callbacks_t); - if (result == 0) { - printf("pan register callbacks ok\n"); - } else { - printf("pan register fail\n"); + thread->thread_run = 1; + sys_sem_new(&thread->pan_sem, 0); + + while (thread->end_thread == 0) { + ret = bt_pan_get_paired_device(&addr); + if (ret != 0) { + LWIP_DEBUG_LOG(("bt_pan_get_paired_device fail\n")); + break; + } + if (pan_service_open(&addr) == 0) { + sys_arch_sem_wait(&thread->pan_sem, 0); + pan_service_close(&addr); + } else { + break; + } + if (thread->end_thread) { + break; + } + sleep(30); /* 30 : sleep 30s */ + } + sys_sem_free(&thread->pan_sem); + thread->thread_run = 0; + thread->end_thread = 0; +} +#endif + +void bt_pan_close(void) +{ + int ret; + bd_addr_t addr; + struct netif *netif_p = g_bt_pan_netif; + if (netif_p == NULL) { return; } + pan_deregister_callbacks(); +#ifndef PAN_LOW_POWER + if (g_pan_thread.thread_run == 1) { + g_pan_thread.end_thread = 1; + sys_sem_signal(&g_pan_thread.pan_sem); + } - result = pan_service_open(&dev_info[0].addr); + if (g_pan_thread.param != NULL) { + sys_thread_delete(g_pan_thread.param); + g_pan_thread.param = NULL; + } +#endif + netifapi_netif_set_link_down(netif_p); + netifapi_netif_set_down(netif_p); + netifapi_netif_remove(netif_p); + + free(netif_p); + g_bt_pan_netif = NULL; + g_pan_net_state = CONNECTION_DISCONNECTED; + + ret = bt_pan_get_paired_device(&addr); + if (ret != 0) { + return; + } + pan_service_close(&addr); +} + +void bt_pan_open(void) +{ + int result; + + init_register_bt_netif(); + + result = pan_register_callbacks(&g_bt_pan_callbacks_t); if (result == 0) { - printf("pan_service_open ok\n"); + LWIP_DEBUG_LOG(("pan register callbacks ok\n")); } else { - printf("pan_service_open fail\n"); + bt_pan_close(); + LWIP_DEBUG_LOG(("pan register fail\n")); + return; } +#ifdef PAN_LOW_POWER + result = bt_pan_open_service(); + if (result != 0) { + bt_pan_close(); + } +#else + if (g_pan_thread.thread_run == 0) { + g_pan_thread.end_thread = 0; + g_pan_thread.param = + (void *)sys_thread_new(BTPAN_THREAD_NAME, bt_pan_thread, &g_pan_thread, BTPAN_THREAD_STACKSIZE, BTPAN_THREAD_PRIO); + if (g_pan_thread.param == NULL) { + LWIP_DEBUG_LOG(("bt pan thread create fail\n")); + } + } +#endif } -#endif /* SUPPORT_BREDR */ \ No newline at end of file + +uint8_t pan_get_net_state(void) +{ + return g_pan_net_state; +} + +#if LWIP_NETIF_EXT_STATUS_CALLBACK +static netif_ext_callback_t g_netif_ext_callback; + +static void pan_net_callback(struct netif *netif, netif_nsc_reason_t reason, const netif_ext_callback_args_t *args) +{ + if (netif != g_bt_pan_netif) { + return; + } + + if ((reason & LWIP_NSC_IPV4_ADDRESS_CHANGED || reason & LWIP_NSC_IPV6_SET) && + g_pan_net_state != CONNECTION_CONNECTED) { + g_pan_net_state = CONNECTION_CONNECTED; + if (g_bt_pan_callback != NULL) { + LWIP_DEBUG_LOG(("pan CONNECTION_CONNECTED\n")); + g_bt_pan_callback(LWIP_NETIF_BT_PAN, CONNECTION_CONNECTED); + } + } + + if (reason & LWIP_NSC_STATUS_CHANGED && args->status_changed.state == 0 && + g_pan_net_state != CONNECTION_DISCONNECTED) { + g_pan_net_state = CONNECTION_DISCONNECTED; + if (g_bt_pan_callback != NULL) { + LWIP_DEBUG_LOG(("pan CONNECTION_DISCONNECTED\n")); + g_bt_pan_callback(LWIP_NETIF_BT_PAN, CONNECTION_DISCONNECTED); + } + } +} + +void bt_pan_register_net_callback(net_connection_callback callback) +{ + if (g_bt_pan_callback != NULL) { + return; + } + g_bt_pan_callback = callback; + netif_add_ext_callback(&g_netif_ext_callback, pan_net_callback); +} + +void bt_pan_unregister_net_callback(void) +{ + g_bt_pan_callback = NULL; + netif_remove_ext_callback(&g_netif_ext_callback); +} +#else +void bt_pan_register_net_callback(net_connection_callback callback) +{ + (void)callback; +} + +void bt_pan_unregister_net_callback(void) +{} +#endif \ No newline at end of file diff --git a/code/sdk/open_source/openharmony/third_party/lwip/lwip_adapter/lwip_driver_adapter/lwip_driver_adapter.h b/code/sdk/open_source/openharmony/third_party/lwip/lwip_adapter/lwip_driver_adapter/lwip_driver_adapter.h index 00869f86b..8bf42a8cc 100644 --- a/code/sdk/open_source/openharmony/third_party/lwip/lwip_adapter/lwip_driver_adapter/lwip_driver_adapter.h +++ b/code/sdk/open_source/openharmony/third_party/lwip/lwip_adapter/lwip_driver_adapter/lwip_driver_adapter.h @@ -1,17 +1,73 @@ /* - * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved. + * Copyright (c) CompanyNameMagicTag 2023-2023. All rights reserved. + * Description: extend functions */ -#ifndef LWIP_DRIVER_ADAPTER_H -#define LWIP_DRIVER_ADAPTER_H +#ifndef INCLUDE_LWIP_PUBLIC_H +#define INCLUDE_LWIP_PUBLIC_H + +#include #ifdef __cplusplus extern "C" { #endif -#ifdef SUPPORT_BREDR -void bt_pan_open(void); -#endif +typedef enum { + /* 4g Cat1 netif */ + LWIP_NETIF_VOLTE = 0, + /* bluetooth BT PAN netif */ + LWIP_NETIF_BT_PAN = 1, + /* NULL netif */ + LWIP_NETIF_NONE +} lwip_netif_type; + +typedef enum { + CONNECTION_CONNECTING = 0, + CONNECTION_CONNECTED = 1, + + CONNECTION_DISCONNECTING = 2, + CONNECTION_DISCONNECTED = 3, + + CONNECTION_UNKNOWN = 100 +} lwip_net_connection_state; + +/** + * @brief Defines the callback function net connection status change. + * + * @param netif_type net if type, refer to #lwip_netif_type. + * @param net_connect_state net connection status, refer to #lwip_net_connection_state. + */ +typedef void (*net_connection_callback)(const uint8_t netif_type, const uint8_t net_connect_state); + +/** + * @brief This function register network connection status listener. + * @param[in] conn_listener net_connection_callback. + * @return 0 if success; non-0 otherwise. + */ +int lwip_register_connect_listener(net_connection_callback conn_listener); + +/** + * @brief Defines the callback unregister function for listening net connection status change. + */ +void lwip_unregister_connect_listener(net_connection_callback conn_listener); + +/** + * @brief This function get current network connection status. + * @param[in] netif_type netif type, refer to #lwip_netif_type. + * @param[in, out] net_connect_state network connection statue, refer to #lwip_net_connection_state. + * @return 0 if success; non-0 otherwise. + */ +int lwip_get_connect_status(uint8_t netif_type, uint8_t *net_connect_state); + +/** + * @brief init and open bt pan net interface. + */ +void lwip_open_bt_pan(void); + +/** + * @brief close bt pan net interface. + */ +void lwip_close_bt_pan(void); #ifdef __cplusplus } diff --git a/code/sdk/open_source/openharmony/third_party/lwip/lwip_adapter/lwip_driver_adapter/lwip_net_manage.c b/code/sdk/open_source/openharmony/third_party/lwip/lwip_adapter/lwip_driver_adapter/lwip_net_manage.c new file mode 100644 index 000000000..0006027ac --- /dev/null +++ b/code/sdk/open_source/openharmony/third_party/lwip/lwip_adapter/lwip_driver_adapter/lwip_net_manage.c @@ -0,0 +1,221 @@ +/* + * Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved. + */ + +#include + +#include "lwip_driver_adapter.h" + +#if defined(SUPPORT_VOLTE) +static lwip_netif_type g_netif_state = LWIP_NETIF_VOLTE; +#elif defined(SUPPORT_BREDR) +static lwip_netif_type g_netif_state = LWIP_NETIF_BT_PAN; +#else +static lwip_netif_type g_netif_state = LWIP_NETIF_NONE; +#endif + +typedef struct net_status_callback_t { + net_connection_callback callback_fn; + struct net_status_callback_t *next; +} net_status_callback_t; + +static net_status_callback_t g_head_callback = {0}; +static uint8_t g_net_is_register = 0; + +static void net_status_litener(const uint8_t netif_type, const uint8_t net_connect_state) +{} + +void lwip_netif_switch_volte(void) +{ +#if defined(SUPPORT_VOLTE) && defined(SUPPORT_BREDR) + if (g_netif_state == LWIP_NETIF_VOLTE) { + return; + } + if (g_net_is_register == 0) { + lwip_register_connect_listener(net_status_litener); + g_net_is_register = 1; + } + bt_pan_close(); + cat1_open_inner(); + g_netif_state = LWIP_NETIF_VOLTE; +#endif +} + +void lwip_netif_switch_bt_pan(void) +{ +#if defined(SUPPORT_VOLTE) && defined(SUPPORT_BREDR) + if (g_netif_state == LWIP_NETIF_BT_PAN) { + return; + } + if (g_net_is_register == 0) { + lwip_register_connect_listener(net_status_litener); + g_net_is_register = 1; + } + cat1_close_inner(); + bt_pan_open(); + g_netif_state = LWIP_NETIF_BT_PAN; +#endif +} + +void lwip_open_bt_pan(void) +{ +#if defined(SUPPORT_BREDR) + if (g_netif_state != LWIP_NETIF_BT_PAN) { + return; + } + if (g_net_is_register == 0) { + lwip_register_connect_listener(net_status_litener); + g_net_is_register = 1; + } + bt_pan_open(); +#endif +} + +void lwip_close_bt_pan(void) +{ +#if defined(SUPPORT_BREDR) + if (g_netif_state != LWIP_NETIF_BT_PAN) { + return; + } + if (g_net_is_register) { + lwip_unregister_connect_listener(net_status_litener); + g_net_is_register = 0; + } + bt_pan_close(); +#endif +} + +void lwip_cat1_open(void) +{ +#if defined(SUPPORT_VOLTE) + if (g_netif_state != LWIP_NETIF_VOLTE) { + return; + } + if (g_net_is_register == 0) { + lwip_register_connect_listener(net_status_litener); + g_net_is_register = 1; + } + cat1_open_inner(); +#endif +} + +void lwip_cat1_close(void) +{ +#if defined(SUPPORT_VOLTE) + if (g_netif_state != LWIP_NETIF_VOLTE) { + return; + } + if (g_net_is_register) { + lwip_unregister_connect_listener(net_status_litener); + g_net_is_register = 0; + } + cat1_close_inner(); +#endif +} + +int lwip_get_connect_status(uint8_t netif_type, uint8_t *net_connect_state) +{ + if (g_netif_state != netif_type) { + *net_connect_state = CONNECTION_DISCONNECTED; + return 0; + } +#if defined(SUPPORT_VOLTE) + if (netif_type == LWIP_NETIF_VOLTE) { + *net_connect_state = cat1_get_net_state(); + return 0; + } +#endif +#if defined(SUPPORT_BREDR) + if (netif_type == LWIP_NETIF_BT_PAN) { + *net_connect_state = pan_get_net_state(); + return 0; + } +#endif + return -1; +} + +static void lwip_net_conn_callback(const uint8_t netif_type, const uint8_t net_connect_state) +{ + net_status_callback_t *iter_node = &g_head_callback; + while (iter_node != NULL) { + if (iter_node->callback_fn != NULL) { + iter_node->callback_fn(netif_type, net_connect_state); + } + iter_node = iter_node->next; + } +} + +int lwip_register_connect_listener(net_connection_callback callback) +{ + net_status_callback_t *iter_node = &g_head_callback; + if (callback == NULL) { + return -1; + } +#if defined(SUPPORT_VOLTE) + cat1_register_net_callback(lwip_net_conn_callback); +#endif +#if defined(SUPPORT_BREDR) + bt_pan_register_net_callback(lwip_net_conn_callback); +#endif + if (g_head_callback.callback_fn == NULL) { + g_head_callback.callback_fn = callback; + return 0; + } + net_status_callback_t *ext_call_node = (net_status_callback_t *)malloc(sizeof(net_status_callback_t)); + if (ext_call_node == NULL) { + return -1; + } + (void)memset_s(ext_call_node, sizeof(net_status_callback_t), 0, sizeof(net_status_callback_t)); + ext_call_node->callback_fn = callback; + + while (iter_node != NULL) { + if (iter_node->callback_fn == callback) { + free(ext_call_node); + return 0; + } + if (iter_node->next == NULL) { + iter_node->next = ext_call_node; + return 0; + } + iter_node = iter_node->next; + } + return 0; +} + +void lwip_unregister_connect_listener(net_connection_callback callback) +{ + net_status_callback_t *iter_node = &g_head_callback; + net_status_callback_t *last = iter_node; + if (callback == NULL) { + return; + } + + if (iter_node->callback_fn == callback) { + if (iter_node->next != NULL) { + g_head_callback.callback_fn = iter_node->next->callback_fn; + g_head_callback.next = iter_node->next->next; + free(iter_node->next); + return; + } else { + iter_node->callback_fn = NULL; + goto END; + } + } + while (iter_node != NULL) { + if (iter_node->callback_fn == callback) { + last->next = iter_node->next; + free(iter_node); + return; + } + last = iter_node; + iter_node = iter_node->next; + } + return; +END: +#if defined(SUPPORT_VOLTE) + cat1_unregister_net_callback(); +#endif +#if defined(SUPPORT_BREDR) + bt_pan_unregister_net_callback(); +#endif +} \ No newline at end of file diff --git a/code/sdk/open_source/openharmony/third_party/lwip/lwip_v2.1.3/src/core/dns.c b/code/sdk/open_source/openharmony/third_party/lwip/lwip_v2.1.3/src/core/dns.c index 8e3a11212..5c6023898 100644 --- a/code/sdk/open_source/openharmony/third_party/lwip/lwip_v2.1.3/src/core/dns.c +++ b/code/sdk/open_source/openharmony/third_party/lwip/lwip_v2.1.3/src/core/dns.c @@ -324,16 +324,15 @@ const ip_addr_t dns_mquery_v6group = DNS_MQUERY_IPV6_GROUP_INIT; void dns_init(void) { - - #ifdef DNS_SERVER_ADDRESS +#ifdef DNS_SERVER_ADDRESS /* initialize default DNS server address */ ip_addr_t dnsserver = {0}; + u8_t n; DNS_SERVER_ADDRESS(&dnsserver); - dns_setserver(0, &dnsserver); -#ifdef DNS_SERVER_ADDRESS_SECONDARY - DNS_SERVER_ADDRESS_SECONDARY(&dnsserver); - dns_setserver(1, &dnsserver); -#endif + /* DNS servers */ + for (n = 0; (n < LWIP_DHCP_MAX_DNS_SERVERS); n++) { + dns_setserver(n, &dnsserver); + } #endif /* DNS_SERVER_ADDRESS */ LWIP_ASSERT("sanity check SIZEOF_DNS_QUERY", diff --git a/code/sdk/open_source/openharmony/third_party/lwip/lwip_v2.1.3/src/core/ipv4/dhcp.c b/code/sdk/open_source/openharmony/third_party/lwip/lwip_v2.1.3/src/core/ipv4/dhcp.c index 063a8ca26..5e09f0a73 100644 --- a/code/sdk/open_source/openharmony/third_party/lwip/lwip_v2.1.3/src/core/ipv4/dhcp.c +++ b/code/sdk/open_source/openharmony/third_party/lwip/lwip_v2.1.3/src/core/ipv4/dhcp.c @@ -421,7 +421,7 @@ dhcp_select(struct netif *netif) if (dhcp->tries < 255) { dhcp->tries++; } - msecs = (u16_t)((dhcp->tries < 6 ? 1 << dhcp->tries : 60) * 1000); + msecs = (u16_t)((dhcp->tries < 6 ? 2 : 60) * 1000); /* 6, 2, 60, 1000 : retry interval */ dhcp->request_timeout = (u16_t)((msecs + DHCP_FINE_TIMER_MSECS - 1) / DHCP_FINE_TIMER_MSECS); LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_STATE, ("dhcp_select(): set request timeout %"U16_F" msecs\n", msecs)); return result; @@ -1143,7 +1143,7 @@ dhcp_discover(struct netif *netif) autoip_start(netif); } #endif /* LWIP_DHCP_AUTOIP_COOP */ - msecs = (u16_t)((dhcp->tries < 6 ? 1 << dhcp->tries : 60) * 1000); + msecs = (u16_t)((dhcp->tries < 6 ? 2 : 60) * 1000); /* 6, 2, 60, 1000 : retry interval */ dhcp->request_timeout = (u16_t)((msecs + DHCP_FINE_TIMER_MSECS - 1) / DHCP_FINE_TIMER_MSECS); LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_discover(): set request timeout %"U16_F" msecs\n", msecs)); return result; diff --git a/code/sdk/open_source/openharmony/third_party/lwip/lwip_v2.1.3/src/core/netif.c b/code/sdk/open_source/openharmony/third_party/lwip/lwip_v2.1.3/src/core/netif.c index 088b50ed4..dd4d82c35 100644 --- a/code/sdk/open_source/openharmony/third_party/lwip/lwip_v2.1.3/src/core/netif.c +++ b/code/sdk/open_source/openharmony/third_party/lwip/lwip_v2.1.3/src/core/netif.c @@ -1808,8 +1808,7 @@ netif_invoke_ext_callback(struct netif *netif, netif_nsc_reason_t reason, const netif_ext_callback_t *callback = ext_callback; LWIP_ASSERT("netif must be != NULL", netif != NULL); - - while (callback != NULL) { + while (callback != NULL && callback->callback_fn != NULL) { callback->callback_fn(netif, reason, args); callback = callback->next; } diff --git a/code/sdk/open_source/openharmony/third_party/lwip/lwip_v2.1.3/src/core/tcp_out.c b/code/sdk/open_source/openharmony/third_party/lwip/lwip_v2.1.3/src/core/tcp_out.c index 8149d394f..a0688fafc 100644 --- a/code/sdk/open_source/openharmony/third_party/lwip/lwip_v2.1.3/src/core/tcp_out.c +++ b/code/sdk/open_source/openharmony/third_party/lwip/lwip_v2.1.3/src/core/tcp_out.c @@ -1327,7 +1327,7 @@ tcp_output(struct tcp_pcb *pcb) /* useg should point to last segment on unacked queue */ useg = pcb->unacked; if (useg != NULL) { - for (; useg->next != NULL; useg = useg->next); + for (; useg != NULL && useg->next != NULL; useg = useg->next); } /* data available and window allows it to be sent? */ while (seg != NULL && @@ -1387,6 +1387,7 @@ tcp_output(struct tcp_pcb *pcb) /* In the case of fast retransmit, the packet should not go to the tail * of the unacked queue, but rather somewhere before it. We need to check for * this case. -STJ Jul 27, 2004 */ + if (useg != NULL) { if (TCP_SEQ_LT(lwip_ntohl(seg->tcphdr->seqno), lwip_ntohl(useg->tcphdr->seqno))) { /* add segment to before tail of unacked list, keeping the list sorted */ struct tcp_seg **cur_seg = &(pcb->unacked); @@ -1401,6 +1402,7 @@ tcp_output(struct tcp_pcb *pcb) useg->next = seg; useg = useg->next; } + } } /* do not queue empty segments on the unacked list */ } else { diff --git a/code/sdk/open_source/openharmony/third_party/lwip/lwip_v2.1.3/src/include/lwip/dhcp.h b/code/sdk/open_source/openharmony/third_party/lwip/lwip_v2.1.3/src/include/lwip/dhcp.h index 040f039a6..e0ee8d070 100644 --- a/code/sdk/open_source/openharmony/third_party/lwip/lwip_v2.1.3/src/include/lwip/dhcp.h +++ b/code/sdk/open_source/openharmony/third_party/lwip/lwip_v2.1.3/src/include/lwip/dhcp.h @@ -72,8 +72,11 @@ typedef u32_t dhcp_num_t; #define DHCP_COARSE_TIMER_SECS 60 /** period (in milliseconds) of the application calling dhcp_coarse_tmr() */ #define DHCP_COARSE_TIMER_MSECS (DHCP_COARSE_TIMER_SECS * 1000UL) + /** period (in milliseconds) of the application calling dhcp_fine_tmr() */ +#ifndef DHCP_FINE_TIMER_MSECS #define DHCP_FINE_TIMER_MSECS 500 +#endif #define DHCP_BOOT_FILE_LEN 128U diff --git a/code/sdk/open_source/openharmony/third_party/lwip/lwip_v2.1.3/src/include/lwip/dhcp6.h b/code/sdk/open_source/openharmony/third_party/lwip/lwip_v2.1.3/src/include/lwip/dhcp6.h index 4f994a801..e6753a31d 100644 --- a/code/sdk/open_source/openharmony/third_party/lwip/lwip_v2.1.3/src/include/lwip/dhcp6.h +++ b/code/sdk/open_source/openharmony/third_party/lwip/lwip_v2.1.3/src/include/lwip/dhcp6.h @@ -52,7 +52,9 @@ extern "C" { #endif /** period (in milliseconds) of the application calling dhcp6_tmr() */ +#ifndef DHCP6_TIMER_MSECS #define DHCP6_TIMER_MSECS 500 +#endif struct dhcp6 { diff --git a/code/sdk/open_source/openharmony/third_party/lwip/lwip_v2.1.3/src/include/lwip/dns.h b/code/sdk/open_source/openharmony/third_party/lwip/lwip_v2.1.3/src/include/lwip/dns.h index bafd9626b..2197533be 100644 --- a/code/sdk/open_source/openharmony/third_party/lwip/lwip_v2.1.3/src/include/lwip/dns.h +++ b/code/sdk/open_source/openharmony/third_party/lwip/lwip_v2.1.3/src/include/lwip/dns.h @@ -51,7 +51,9 @@ extern "C" { #endif /** DNS timer period */ +#ifndef DNS_TMR_INTERVAL #define DNS_TMR_INTERVAL 1000 +#endif /* DNS resolve types: */ #define LWIP_DNS_ADDRTYPE_IPV4 0 diff --git a/code/sdk/open_source/openharmony/third_party/lwip/lwip_v2.1.3/src/include/lwip/etharp.h b/code/sdk/open_source/openharmony/third_party/lwip/lwip_v2.1.3/src/include/lwip/etharp.h index 7e9f2c739..a1b9021ef 100644 --- a/code/sdk/open_source/openharmony/third_party/lwip/lwip_v2.1.3/src/include/lwip/etharp.h +++ b/code/sdk/open_source/openharmony/third_party/lwip/lwip_v2.1.3/src/include/lwip/etharp.h @@ -61,7 +61,9 @@ extern "C" { #endif /** 1 seconds period */ +#ifndef ARP_TMR_INTERVAL #define ARP_TMR_INTERVAL 1000 +#endif #if ARP_QUEUEING /** struct for queueing outgoing packets for unknown address diff --git a/code/sdk/open_source/openharmony/third_party/lwip/lwip_v2.1.3/src/include/lwip/igmp.h b/code/sdk/open_source/openharmony/third_party/lwip/lwip_v2.1.3/src/include/lwip/igmp.h index 32451c6c6..d14391cf8 100644 --- a/code/sdk/open_source/openharmony/third_party/lwip/lwip_v2.1.3/src/include/lwip/igmp.h +++ b/code/sdk/open_source/openharmony/third_party/lwip/lwip_v2.1.3/src/include/lwip/igmp.h @@ -52,9 +52,17 @@ extern "C" { #endif /* IGMP timer */ +#ifndef IGMP_TMR_INTERVAL #define IGMP_TMR_INTERVAL 100 /* Milliseconds */ -#define IGMP_V1_DELAYING_MEMBER_TMR (1000/IGMP_TMR_INTERVAL) -#define IGMP_JOIN_DELAYING_MEMBER_TMR (500 /IGMP_TMR_INTERVAL) +#endif + +#ifndef IGMP_V1_DELAYING_MEMBER_TMR +#define IGMP_V1_DELAYING_MEMBER_TMR 10 +#endif + +#ifndef IGMP_JOIN_DELAYING_MEMBER_TMR +#define IGMP_JOIN_DELAYING_MEMBER_TMR 5 +#endif /* Compatibility defines (don't use for new code) */ #define IGMP_DEL_MAC_FILTER NETIF_DEL_MAC_FILTER diff --git a/code/sdk/open_source/openharmony/third_party/lwip/lwip_v2.1.3/src/include/lwip/ip4_frag.h b/code/sdk/open_source/openharmony/third_party/lwip/lwip_v2.1.3/src/include/lwip/ip4_frag.h index 13744f2da..e66242c17 100644 --- a/code/sdk/open_source/openharmony/third_party/lwip/lwip_v2.1.3/src/include/lwip/ip4_frag.h +++ b/code/sdk/open_source/openharmony/third_party/lwip/lwip_v2.1.3/src/include/lwip/ip4_frag.h @@ -53,7 +53,9 @@ extern "C" { #if IP_REASSEMBLY /* The IP reassembly timer interval in milliseconds. */ +#ifndef IP_TMR_INTERVAL #define IP_TMR_INTERVAL 1000 +#endif /** IP reassembly helper struct. * This is exported because memp needs to know the size. diff --git a/code/sdk/open_source/openharmony/third_party/lwip/lwip_v2.1.3/src/include/lwip/ip6_frag.h b/code/sdk/open_source/openharmony/third_party/lwip/lwip_v2.1.3/src/include/lwip/ip6_frag.h index b278dddb0..95371e169 100644 --- a/code/sdk/open_source/openharmony/third_party/lwip/lwip_v2.1.3/src/include/lwip/ip6_frag.h +++ b/code/sdk/open_source/openharmony/third_party/lwip/lwip_v2.1.3/src/include/lwip/ip6_frag.h @@ -55,7 +55,9 @@ extern "C" { #if LWIP_IPV6 && LWIP_IPV6_REASS /* don't build if not configured for use in lwipopts.h */ /** The IPv6 reassembly timer interval in milliseconds. */ +#ifndef IP6_REASS_TMR_INTERVAL #define IP6_REASS_TMR_INTERVAL 1000 +#endif /** IP6_FRAG_COPYHEADER==1: for platforms where sizeof(void*) > 4, "struct * ip6_reass_helper" is too large to be stored in the IPv6 fragment header, and diff --git a/code/sdk/open_source/openharmony/third_party/lwip/lwip_v2.1.3/src/include/lwip/mld6.h b/code/sdk/open_source/openharmony/third_party/lwip/lwip_v2.1.3/src/include/lwip/mld6.h index 77ec0cb6a..e7fce0642 100644 --- a/code/sdk/open_source/openharmony/third_party/lwip/lwip_v2.1.3/src/include/lwip/mld6.h +++ b/code/sdk/open_source/openharmony/third_party/lwip/lwip_v2.1.3/src/include/lwip/mld6.h @@ -70,7 +70,9 @@ struct mld_group { u8_t use; }; +#ifndef MLD6_TMR_INTERVAL #define MLD6_TMR_INTERVAL 100 /* Milliseconds */ +#endif err_t mld6_stop(struct netif *netif); void mld6_report_groups(struct netif *netif); diff --git a/code/sdk/open_source/openharmony/third_party/lwip/lwip_v2.1.3/src/include/lwip/nd6.h b/code/sdk/open_source/openharmony/third_party/lwip/lwip_v2.1.3/src/include/lwip/nd6.h index e262ff63b..6e4995442 100644 --- a/code/sdk/open_source/openharmony/third_party/lwip/lwip_v2.1.3/src/include/lwip/nd6.h +++ b/code/sdk/open_source/openharmony/third_party/lwip/lwip_v2.1.3/src/include/lwip/nd6.h @@ -56,7 +56,9 @@ extern "C" { #endif /** 1 second period */ +#ifndef ND6_TMR_INTERVAL #define ND6_TMR_INTERVAL 1000 +#endif /** Router solicitations are sent in 4 second intervals (see RFC 4861, ch. 6.3.7) */ #ifndef ND6_RTR_SOLICITATION_INTERVAL diff --git a/code/sdk/open_source/openharmony/utils/native/lite/js/builtin/filekit/include/nativeapi_fs.h b/code/sdk/open_source/openharmony/utils/native/lite/js/builtin/filekit/include/nativeapi_fs.h index 2a3c2b5fd..c2176fe14 100644 --- a/code/sdk/open_source/openharmony/utils/native/lite/js/builtin/filekit/include/nativeapi_fs.h +++ b/code/sdk/open_source/openharmony/utils/native/lite/js/builtin/filekit/include/nativeapi_fs.h @@ -25,7 +25,7 @@ class NativeapiFs { public: NativeapiFs() = default; ~NativeapiFs() = default; - + static int GetFullPath(const char* uri, char* fullPath, int len); static JSIValue MoveFile(const JSIValue thisVal, const JSIValue* args, uint8_t argsNum); static JSIValue CopyFile(const JSIValue thisVal, const JSIValue* args, uint8_t argsNum); static JSIValue DeleteFile(const JSIValue thisVal, const JSIValue* args, uint8_t argsNum); diff --git a/code/sdk/open_source/openharmony/utils/native/lite/js/builtin/filekit/src/nativeapi_fs.cpp b/code/sdk/open_source/openharmony/utils/native/lite/js/builtin/filekit/src/nativeapi_fs.cpp index 44a4b6ea2..75f51c460 100644 --- a/code/sdk/open_source/openharmony/utils/native/lite/js/builtin/filekit/src/nativeapi_fs.cpp +++ b/code/sdk/open_source/openharmony/utils/native/lite/js/builtin/filekit/src/nativeapi_fs.cpp @@ -21,6 +21,7 @@ #include "js_async_work.h" #include "nativeapi_common.h" #include "nativeapi_fs_impl.h" +#include namespace OHOS { namespace ACELite { @@ -29,6 +30,7 @@ char g_uriFullPath[FILE_NAME_MAX_LEN + 1] = {0}; const unsigned int PREFIX_LEN = strlen(FILE_PREFIX); const char *trustPath = "/user/music"; const int trustPathSize = strlen(trustPath); +const int MAX_READ_FILE_SIZE = 10 * 1024 * 1024; bool IsValidPath(const char* path) { @@ -65,33 +67,6 @@ bool IsValidPath(const char* path) return true; } -int GetFullPath(const char* uri, char* fullPath, int len) -{ - if (!IsValidPath(uri) || (fullPath == nullptr)) { - return ERROR_CODE_PARAM; - } - const char* dataPath = GetDataPath(); - int size = PREFIX_LEN; - bool isTrustPath = (strncmp(uri, trustPath, strlen(trustPath)) == 0); - if (isTrustPath) { - size = 0; - } - - if (dataPath == nullptr) { - return ERROR_CODE_PARAM; - } - - if (memset_s(fullPath, len, 0x0, len) != EOK) { - return ERROR_CODE_GENERAL; - } - - if (sprintf_s(fullPath, len, "%s%s", (isTrustPath ? "" : dataPath), uri + size) < 0) { - return ERROR_CODE_GENERAL; - } - - return NATIVE_SUCCESS; -} - JSIValue ExecuteAsyncWork(const JSIValue thisVal, const JSIValue* args, uint8_t argsNum, AsyncWorkHandler ExecuteFunc, bool flag = false) { @@ -132,7 +107,7 @@ void ExecuteCopyFile(void* data) char* dest = JSI::GetStringProperty(args, FILE_DESTINATION_URI); char* destFullPath = nullptr; JSIValue result = JSI::CreateUndefined(); - int ret = GetFullPath(src, g_uriFullPath, sizeof(g_uriFullPath)); + int ret = NativeapiFs::GetFullPath(src, g_uriFullPath, sizeof(g_uriFullPath)); JSI::ReleaseString(src); if (ret != NATIVE_SUCCESS) { NativeapiCommon::FailCallBack(thisVal, args, ret); @@ -143,7 +118,7 @@ void ExecuteCopyFile(void* data) NativeapiCommon::FailCallBack(thisVal, args, ERROR_CODE_GENERAL); goto EXIT; } - ret = GetFullPath(dest, destFullPath, FILE_NAME_MAX_LEN + 1); + ret = NativeapiFs::GetFullPath(dest, destFullPath, FILE_NAME_MAX_LEN + 1); if (ret != NATIVE_SUCCESS) { NativeapiCommon::FailCallBack(thisVal, args, ret); goto EXIT; @@ -178,7 +153,7 @@ void ExecuteDeleteAccess(void* data) JSIValue args = params->args; JSIValue thisVal = params->thisVal; char* src = JSI::GetStringProperty(args, FILE_URI); - int ret = GetFullPath(src, g_uriFullPath, sizeof(g_uriFullPath)); + int ret = NativeapiFs::GetFullPath(src, g_uriFullPath, sizeof(g_uriFullPath)); JSI::ReleaseString(src); if (ret != NATIVE_SUCCESS) { NativeapiCommon::FailCallBack(thisVal, args, ret); @@ -247,7 +222,7 @@ void ExecuteGetFileList(void* data) JSIValue thisVal = params->thisVal; char* uri = JSI::GetStringProperty(args, FILE_URI); JSIValue result = JSI::CreateObject(); - int ret = GetFullPath(uri, g_uriFullPath, sizeof(g_uriFullPath)); + int ret = NativeapiFs::GetFullPath(uri, g_uriFullPath, sizeof(g_uriFullPath)); JSI::ReleaseString(uri); if (ret != NATIVE_SUCCESS) { NativeapiCommon::FailCallBack(thisVal, args, ret); @@ -280,7 +255,7 @@ void ExecuteGetFileInfo(void* data) bool recursive = JSI::GetBooleanProperty(args, RECURSIVE); struct stat info = {0}; JSIValue result = JSI::CreateObject(); - int ret = GetFullPath(src, g_uriFullPath, sizeof(g_uriFullPath)); + int ret = NativeapiFs::GetFullPath(src, g_uriFullPath, sizeof(g_uriFullPath)); if (ret != NATIVE_SUCCESS) { NativeapiCommon::FailCallBack(thisVal, args, ret); goto EXIT; @@ -320,7 +295,7 @@ void ExecuteWriteTextFile(void* data) char* src = JSI::GetStringProperty(args, FILE_URI); char* text = JSI::GetStringProperty(args, TEXT); bool append = JSI::GetBooleanProperty(args, FILE_APPEND); - int ret = GetFullPath(src, g_uriFullPath, sizeof(g_uriFullPath)); + int ret = NativeapiFs::GetFullPath(src, g_uriFullPath, sizeof(g_uriFullPath)); JSI::ReleaseString(src); if ((text == nullptr) || (ret != NATIVE_SUCCESS)) { NativeapiCommon::FailCallBack(thisVal, args, ERROR_CODE_PARAM); @@ -346,7 +321,7 @@ int ReadTextInner(const char* src, int position, int length, JSIValue& result) if (length == 0) { length = TEXT_MAX_READ_LEN; } - int ret = GetFullPath(src, g_uriFullPath, sizeof(g_uriFullPath)); + int ret = NativeapiFs::GetFullPath(src, g_uriFullPath, sizeof(g_uriFullPath)); if (ret != NATIVE_SUCCESS) { return ret; } @@ -407,7 +382,7 @@ void ExecuteDirFunc(void* data) JSIValue args = params->args; JSIValue thisVal = params->thisVal; char* src = JSI::GetStringProperty(args, FILE_URI); - int ret = GetFullPath(src, g_uriFullPath, sizeof(g_uriFullPath)); + int ret = NativeapiFs::GetFullPath(src, g_uriFullPath, sizeof(g_uriFullPath)); JSI::ReleaseString(src); bool recursive = JSI::GetBooleanProperty(args, RECURSIVE); if (ret != NATIVE_SUCCESS) { @@ -436,29 +411,56 @@ int ReadArrayFileInner(const char* path, size_t len, unsigned int position, JSIV if (ret != NATIVE_SUCCESS) { return ret; } - void* text = malloc(info.st_size + 1); - if (text == nullptr) { + + size_t fileSize = (info.st_size < 0) ? 0 : static_cast(info.st_size); + if (fileSize > static_cast(MAX_READ_FILE_SIZE)) { + return ERROR_CODE_GENERAL; + } + + size_t pos = static_cast(position); + if (pos > static_cast(INT_MAX)) { + return ERROR_CODE_GENERAL; + } + + size_t maxCanRead = (pos < fileSize) ? (fileSize - pos) : 0; + size_t toRead = (len == 0 || len > maxCanRead) ? maxCanRead : len; + + if (toRead == 0) { + uint8_t *p = nullptr; + JSIValue emptyBuf = JSI::CreateArrayBuffer(0, p); + JSIValue emptyArr = JSI::CreateTypedArray(TypedArrayType::JSI_UINT8_ARRAY, 0, emptyBuf, 0); + JSI::SetNamedProperty(result, FILE_BUFFER, emptyArr); + JSI::ReleaseValueList(emptyArr, emptyBuf, ARGS_END); + return NATIVE_SUCCESS; + } + + void *buf = malloc(toRead); + if (buf == nullptr) { return ERROR_CODE_GENERAL; } + size_t actualLen = 0; - ret = ReadFileImpl(path, text, len, static_cast(position), &actualLen); + ret = ReadFileImpl(path, buf, toRead, static_cast(position), &actualLen); if (ret != NATIVE_SUCCESS) { - free(text); + free(buf); return ret; } - uint8_t* ptr = nullptr; + + uint8_t *ptr = nullptr; JSIValue arrayBuffer = JSI::CreateArrayBuffer(actualLen, ptr); if (ptr == nullptr) { - free(text); + free(buf); JSI::ReleaseValue(arrayBuffer); return ERROR_CODE_GENERAL; } - ret = memcpy_s(ptr, actualLen, text, actualLen); - free(text); + + ret = memcpy_s(ptr, actualLen, buf, actualLen); + free(buf); if (ret != EOK) { JSI::ReleaseValue(arrayBuffer); return ERROR_CODE_GENERAL; } + JSIValue typedArray = JSI::CreateTypedArray(TypedArrayType::JSI_UINT8_ARRAY, actualLen, arrayBuffer, 0); JSI::SetNamedProperty(result, FILE_BUFFER, typedArray); JSI::ReleaseValueList(typedArray, arrayBuffer, ARGS_END); @@ -483,7 +485,7 @@ void ExecuteReadArrayFile(void* data) NativeapiCommon::FailCallBack(thisVal, args, ret); goto EXIT; } - ret = GetFullPath(src, g_uriFullPath, sizeof(g_uriFullPath)); + ret = NativeapiFs::GetFullPath(src, g_uriFullPath, sizeof(g_uriFullPath)); JSI::ReleaseString(src); if (ret != NATIVE_SUCCESS) { NativeapiCommon::FailCallBack(thisVal, args, ret); @@ -509,7 +511,7 @@ void ExecuteWriteArrayFile(void* data) JSIValue args = params->args; JSIValue thisVal = params->thisVal; char* src = JSI::GetStringProperty(args, FILE_URI); - int ret = GetFullPath(src, g_uriFullPath, sizeof(g_uriFullPath)); + int ret = NativeapiFs::GetFullPath(src, g_uriFullPath, sizeof(g_uriFullPath)); JSI::ReleaseString(src); if (ret != NATIVE_SUCCESS) { NativeapiCommon::FailCallBack(thisVal, args, ret); @@ -564,6 +566,33 @@ void InitNativeApiFs(JSIValue exports) #endif } +int NativeapiFs::GetFullPath(const char* uri, char* fullPath, int len) +{ + if (!IsValidPath(uri) || (fullPath == nullptr)) { + return ERROR_CODE_PARAM; + } + const char* dataPath = GetDataPath(); + int size = PREFIX_LEN; + bool isTrustPath = (strncmp(uri, trustPath, strlen(trustPath)) == 0); + if (isTrustPath) { + size = 0; + } + + if (dataPath == nullptr) { + return ERROR_CODE_PARAM; + } + + if (memset_s(fullPath, len, 0x0, len) != EOK) { + return ERROR_CODE_GENERAL; + } + + if (sprintf_s(fullPath, len, "%s%s", (isTrustPath ? "" : dataPath), uri + size) < 0) { + return ERROR_CODE_GENERAL; + } + + return NATIVE_SUCCESS; +} + JSIValue NativeapiFs::MoveFile(const JSIValue thisVal, const JSIValue* args, uint8_t argsNum) { return ExecuteAsyncWork(thisVal, args, argsNum, ExecuteCopyFile, true); -- 2.17.1

  3. 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 literal 71436 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 diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/brandy-auto-ota-ser/libace_websocket.a b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/brandy-auto-ota-ser/libace_websocket.a new file mode 100644 index 0000000000000000000000000000000000000000..32d6613e1ffc220f95666169c0153e38c955cd68 GIT binary patch literal 59366 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 Hw7~xd!g+3% literal 0 HcmV?d00001 diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/brandy-auto-ota-ser/libnetstack_http.a b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/brandy-auto-ota-ser/libnetstack_http.a index 055db3bd025a158ac7c64871983e7ec61e80b8c7..0e01cdedcdbb106e0042ec1ffbd19556d2e03f2e 100644 GIT binary patch literal 64222 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 bE!jV^Gj6i+QH}SLaO<}=&%d8?W#jj6P~wIP literal 49228 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 diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/brandy-auto-ota-ser/libwebsocket.a b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/brandy-auto-ota-ser/libwebsocket.a index 8dfa5e2516a72978a71d525b53eb9ec19139d182..f5dd2f8e37be60c21123da92af3864315b6df196 100644 GIT binary patch literal 64792 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 literal 417200 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�zqiMpaHl6MHiMYtXW8_ zeql5`Wm;Z%bk*`osEaGhqImz5__6tLs!Y&WJU3ceQ&wG6Qd3n_S~YimQFSz0+OwA^ zJxY}oKhz!GH+xyevMgglMR6(pQWwowR1%eSjFxr_D=*6iWe+PVsj4ZeEUu!T%kxT8 zO=W&Gg>GJX9vc>&7hT@MxOJbuRW)TzomNEcGH>DhqSENR;w5D@)xVWRuA^IfmA9zk zf^uFzX9Y4!vz(@aSv7TMq29zw0c4Dc~Q-nys8%EAM%U-Qq}203eKy!IY zRYgrjNkv&}X=m`;9EOK;1|$TjE~R4^logJfv|#ScQPpQn8?|I^|3Qn+I(_6w1Dkc& z=`TZWa%k(IfmgxN&lk!|Dwh{k^U795OP0z(8_o`w(%ad1g`%`oRYqxEDJiR-dXSr4-3Xf^!WQeu$7}>Wg4_eK2`Pf-ztK7%RqOHA#v5vL!O}Y#(L#&lvj%h@d znJ%}?lH;tT$8fo&o!%I;lxyuBOtCqRugcmwo5nG^)oDx9SfC1zEm2=jtzxZXY-X>K ze5unC+KZl=>A#anKBA2WMI3A;i{X^xF_ukHYeNOKo}e}4F`YH5X)|xJ**wNTy$a4F zGqHB$q}(x#O+3ap)M{)RPS3?UIA#?!7qR)YB&};>t(p&p-`vPschl-&_;FaT}chuXsx3`@MK<4fNhQR$8+r zc52gX(s0yRKic4E9b+@-mC{)&?)bC(=CE&lm0}%hz4yBqo40x0o%Yc-*x$uim(42O z+U$RPE&RKyq8YTTg0tWIAFBUfZXy3e30gZldnm2hTCUE2S*7N^x=?L-zacm44`;us z?P8muGgvkC_$nN0)x0`do6J`gK4zP=*2S?!nC|b=TgR3eT63#)amx%&54KFw*6Dx3 zmL7j+AZXh}>lo{?*^aeYMC)D+k3T;-Tk0GTH1pgnqIGdIy;(#vimgENL9|GXoZpa5 z!?9=`W8M3VD_-|Fs}Y;}Tb0!I0$SBIjCFK;mC=TwhAn+*+mC}Sty&vOEv>Y1>&zpj z__d;F>SJa&#+GqBg*Wd*ts<@MRAMXQGm<_II33rtW)aw_ z1pL>l;xYO=9%Ai|*)2}BV{`e93+eId&d2b2Jk51{W9YYstkb~9VRFo&+}bWAc9oB> zvd1@vX_aY)+EoK*-86&PD$#0}9Zwg;<~wGeA5Xzroitw>wk%Owwc{BY`tWU5nlmId zwPk7AN@y7zY?_sI!ImXD4zy#qWJ46Ru0%9GdlU6WX^dZnAK*6}psZ)E-rIkxC#YuhaH|B_|1M$*>D z>HFAnv|jePrv}F?@xQccS&UOpZPsgP<<#>S7sa%CYS_}(e_3U1 z8r9rtYReL|b<*a_*3_1HwKdh|rPkDzd9^8bo;wdXYRe4HfQwD?8OvV3#MzQ#Q)xqR zH}lxUW{vb;wslKiTBA8_5Nk!%aSvkYx^S6V_gKSbRXgvutn_R7&Dp(RY}dez%QXRX&_vuFkW zF2?4yjHDG!?zl09_XG`%kDH9> zgwL2{;OF9Y^N*MG$fA{MZr0Py$@zN47H_E!rer$BTj=iI7CRG>K2AX*+BepTsF-17 zbv5zHly?4^p;^|M)K2}#XU81!mTehb5&${y1n3Xj86C(n1j_*^9r{45cH^jy`0~o2 z*m9_{^r9tqoeERJl$V~vhG-=@dK$PxokvFb8E&cG@+Gz7%&sv!NG=;&^NB5$*6`KokAmAe!0h3 zGLqj+Kuhs10D8$lE5QS82>qp{SzfSrG%b8K=|006M@&EXHH>9mvwr|!QUbky#^r%N z!Ew+B#R*OU4{js4FL+27mxqR39@gFElY6>6qL1MI$a_k*U{P-FK*85SABC^1(R<{; z1tSFC3m%&*81M2m3-bjJq!lwy8z=Zw@Wcs%KZMPsDK1Z*F8B=CoIca#sj~&+eY)oK zIWEsA75pOfGZ)06K8NT&q&c&VM@0UG0?wY`btAK^y%K_NxV6iX6VZl==&3|>yI2_3JA_H1$_I%MtkJ@Iz!&t; z`Xl)AtpH&{BD^P}Rd|Ksd?$$&f=qiy!6?KR@fmLB)2w{T5u7ZYSvLvyai(=P=DGxP`(GUQ`^ni2Y!d;?Cm@PjGpXu!+K^BGm|5gm#8C4NRx9ux;*W1*WY_y`)bks!ps zA(|=IjNdLQQAT?Foo+M5-^EP>pYac-3L7|xf3%}up+C;^)-vSX9Tr>hbKreLO%Xv| z;`h_50==k!+^~YRvI@b|MHM=l!BZWV!CbC_sB0d#!+m5Q92;kNpCAxU@{OP~t~Xf+ zNN#Q24eKN1{Du|?W?xaAH_xxQ%q&*#8g+BC$MPvjb|M7Phk%@?WLw$qA-N>LolWR6K zuvJ7vIl}{Yxsefpdqo5rQ)pCRryCg)c)&Fq7kF4iFhPeV1|Am?(K^L}U2bGLq z2|VXUqJjNxWI^C%H?lDBiW^xJcwIz9Mau$jiil{C#esL+NO|A`5xKhqRi`@ev51J) zSsFMfBADJo8v@^n2zE80TLV9eh^Y0Qfg_aFFof&70){DKqSPG$AIC)6gMm1XeTNo) zD9}cWJsjxBu?@7PhMo>|=a^`tX9D?JY)_zoV+KtMp%((O7CSlGz%bqn{mBxmA-2`KEyIo6V|heGl>eaRb0ZH~oJXWQZ1Dsk zB9B@D*X(gC&W-G{;@!wI7M+b!5P6=pLT+TA)y9n+uo6T>^u*t-L^tI%E6I(#VI{kf zx2<*}@(+yd&#hDu5gl>R>L?=bAmux&i-?FOJ7k4L1UrV%k5+d#Fl5G7TU!>Q$&75N;m&(5usOW7@-XR9M{bDmx>5a1O5dfg4d9R`ufX6p zk<pDM0}LZhq&TM87bnJ z*|01ccd5zpJ+h$(z1lGZzH-dRPuTq#RyHk@#6i?>qSP@EDTHcyPyVtQ`qn4bK}^kb znBYc!@tGnbHpgFmyxEHh!7DfWi!dtua(fm{8YeeY(RJ~1a}*O-P;PXaktZa#3^A{uoTJBtOg?&?MQ0KTefa26a9{UeHlZIMvErSMK6w`Uz~zU z3vPt{s2|1gqo~8^I6fME2?_bB91&Jy#&HDgoG?xv!HP(sJc1RG@pIS=+hxLpQq94n z1suW1O_;KbBcjl$7jYzodM#nvYK|;HWO@TfFry~SSj&+|ka8BiZ#!5jPUPs^_Vr+e z#Kdd)geq~JSV7b&@k;J249mo;xU(=`6R)O|1cq+p#A_jEBV_z3XztL+b57iK>F68s|)|+uL=m>CgW{C4sMf} zc(z;J}OMQqC7<~fT&J6U^rd_XKo`@~Mabg)SmO-%$iDetHOcKjvv1})nDMoOGEFozs zmylE_QVg*)#nK~|ElcBBKVVpx0)qRbqc)M?D-x}%c?O9~{YWaICwyJ#mC+CLM7t_#4o>b?SHD!;>Q(ty@8gJ{ECzGdtEObnh z$um9?jO{-8jL!xC4L;94XarY_aYvEiVx4l6d$|63Y3tOR*Gbf?ueMGDvW5Kt_!~OH zu;9-^Ls@SUCE=*v`VZ(cS_HqR1wy+Ec&lqS|G(Ypg#EF%_XJ^+Nb^4()gh#OCDtu2 zz;9UBlNiK+5Sh2}#_X|h+~yt=(1nz}(tqdRVn{_cv8btk4QJf?r74;C`xYGrbm`9ev zG3@BgfG%=vCCr&-fFvKS) zFiO%oxY&_LdVAg%wX9sTv22`lEpHI?O}XySvXjTNXeHzzFEalG8I038e^FA9E zHez|HSRT8wxP?yp&coy@Xq_PP8tqRK?U~fRgJ@6O`=LvOf-zp(cj66nE}6IQ%=7hP z@Cot41~(kqcS&%$YocJBC$vAYtr2`j_FMZDFEnxOmX3dLwY3}9fL3xQC@pI=Ez^~l zmW7p!+$HNN-ezxfsD~&{-ZEO`KN)GZlYeCM=s0+H+(p`VVM7@h08)U@*h(m=RKdLpo|eEX?-{^1srsr_ zkt_c_3QAXE+V`lJ7M(_GuSFx&*KW@o#B1)z)5s7z85VJ(!NX>fd4rZ7cfG>SYZ*FCJiGODo{hu9W*z~q=Ect zCpY0)nIH#Dzr-S{1Wm6rcn6_W1le$=&+Sgrhx@2*clmtiE;sJ=p?f2$v)H@8W8xFS zJ8qwe0qPmVeKZ)wr0qe2nM0V-EfOIQ73#CC;$Kp*62TMYs&uMw_QM^Q4iou`rPpHD zYcX7L0mYbp`QrthW{Ppk$FMczFcBx6B5GL6DSq;BI1H^!MfSw&VIlS}Ff%ONB@qUl zCTf0!saRmkOx%rnTF4OF!Vi1h7JgXVtB=qp1x1MbQH&Mh*ez|F7p~om+c;zIFlXfH z$I}DAtjcY5iz!#)cSAFz$Cd&TJ+d#6W_xZY_#={e1}96LBJ^8&rh3w*A> z3^jEFgp;~LkYO#*oq+~$36ypSsy)EM=75IWZI;9n#M z{~~vDD#HxPBYv^ig<5ZrOYP|cZrU64roBOQCpX3oS~G7DM!6_4?J=M1l&AHaPir}! z7CG4q8}Ul*5gBB2yrr7-Ev-r4(zk+-bpIb|wfRK%bGjuP`*aKIF1`0qUC@KOAa*8P zqRoU$yqGrKeakYDB`+-&-pq_hl~qc;g6#}Eah2}IV(u+6#zOBvEKEjq?nv_@In zAky;k!knIVwKrM#8c#yrnMxhwi5F@K3BoZB?gcDYP^aK31ve4&znc~aX^*gn2f{Mr z3kv>0U=%cKtH+(Ds&Jc%>hlpyDWu&f`}AN~dOM;ZjwaZ=p0q$n3wq?i5eZ@iMk0B< zO8(m9mCSog{G(M_Cp%`3s^ZHE-c<0hg6|Xq*GJMj79#U>of6o{`zo9`$gg_mdzR5#K-(@Bu;oL0X6!A0aTB5Bhx` zrzb15p3EAeH*Av^M!6*AO_X|CiI;ok3=+nAuX*^=xdft=as?MESf$`v0we4HVeif3 zt1QmH{|P6d5JCtsARuBSAjq1Njf0|+4M9VQNdQIV5RwxT$<{1vZq!m->Q=S5R#6eH zTh&^%YSmh5)mp2#weD40sa5MJbh78;Us~LAo`(x6`{#V+{FE!q=swQv!43kRU zuzYKn#D*V?wKmSrLF`n=h8gUqgKajlVQW9by=?O+8(!*X_#4}N#RfOg?;qh{T`ib{ zJ3svm`&&P}DmaA09KnW0HgI6}%G1%jqY7+IxTV^0Y{Rqvyv=OGE3`b9U$?Fc6JW1J z<|DN}owqqMA0kd!aEpyRw;=4FrGClfaXLPDh8BGsd$wyO=Dg9?A+MMX&c?}1A_%;h zy}HVHgKaqfd8tLV3io6~5gTw4Szmc^Hn>p7v(5QzxPc9ivEg+#9Bcaq@Cq=m zjcr`Def<(U&xQIop8rko^_-S7Y-Sra%;%E!TPA%rz^`^b(~~tnIrvIX3qAjH03BZT z{N;eTm~(mlLUZZMcA16mk7Vlh`5P>tm$sh#4>An+K}7_?bY~dGhP~J@i4BD?BhwJ|_XCS{+FvJDF<3+=(|u&ke9JKMOmCD*jq6&zh2Ct%~% zpNZ5GX*UI$QfRU0+oMU(7JdC5r`-?JK}NKu&|Ka-wgkK?h1OMOGTI!t87{p_Pxvv! z^`s2b4fPXPXu~~h_zeuYrJiELD=?J4jX!jaSZpT+AHzb2OhJk|z)&`fX2V3CndCP8 zVG4$`)w;Pl{Fs;LS}E;7lTcoP4vgmNr?PxSyQ=>te%LcNGIv6==P+iTt}=6|nwDA< z&DwvjRaC3q+SrcVSMO~2%?mvWj?AO|AH8cR_BG6A;#9piWHyMj=P@TybL#yBzfGb| zCW$fcXm_2uPRwNLaH^gmAAd{lp6G9$t08ZV$ovBhYH4%~O?w#H70INh@`kcXQZhf& z9_V59B#L3|a*Ew#x1P+tRjqed5K@SB-c)a+?=tXSI&+MKyu+t7Jzy^k}v z%G4=&%sid`=q(&yYiVc0QaoqW&r5U~3n-Ix*`89Qm)yRm6zTPl?+hh+89t-ZY9b0b zq6`z1)b;oQnQF4lJKDPCwX?x>;Z1Dg4Ck@URyN$shI`rYC>x%$1}huWofO!8!O5oW zUAfIs{ji8P>B{m&yh$qq$;q3(x1`Xa`opNGYQ#@;;Q1f(I50$SM#052@#TT6xy?Dd zlQ`3~w{Eqe!}TbjCHvQ;Z>AL5b(i^MCh8n9WH2SB_#NRA>$ZZ^( z1{p_P0AuyM^-tX`lOFQgk}opl)g{+%x(Avt_uFWEZ5jI~tv#KkG&_yD)`#plNS8xz zm_DfU^&83;b$8?8xnbS|=?Ry<)C zhWyY3r7YPzT$8QU)Jh%sD*Vl&4PB%C3eBSw4SNsId@UEDGz^$!${Fs-BkHrw?v-nn!#fxkg^;tA^H8Io{7mq=0RpGzBtU`>Z`IO>;GHggIKu+9(Sr4Qm z)@co@@`kb2+LyJK7NN+^DR&_qA$5_vLz~gqG4AsgtL~2IbQ_fU$o@=l1K&IRAneGANnceOBq`o>VRSw3z3o z+T3cMpK9}Q=J}~M+gFh2nae(H<|Nt8h-{yB^PUZjwEJ|J!yYu%-lr2s*nY~XWsN>Y zr}io=MjvZZ`x}{;r)c|6$Q&P_(&>>aU8B0w$uC`_5Ar7fGEHaL=X;bTKefpmkGXB; zG@9V1O~T(SDrOpGLs#=Yn=;948}yiic zO`A@QNasPypPnA1{f6>K6%(e|om!o;jIuDIJC)R4wOIj!sIb*3$5=N~AJt}!>fDwK zw|;Z=i9vQJ>gav;C#I4Hl}zfucmMr$c+ZnGyXTMn(wh^cHz!DMPAchTpWd9*ig&wqRjgs3z`1U zd=kF23HV#HG1r_OD+c85jdMt)Fz9m(x%TjRY8n+_6cuJr+F*0mn@%^wtY{vfz71yp zz3B*Ry3*E~EL4ju=uW8r_*t3JVWoOfXLVSqc#=@6mwHnv#u3Jo(N*O-fH7BSKlX`1 z9zT!B6S3r_(1SnYdr}HXk1_8j%o9^cDon)ED_E$4oI@=R7*XQRK&7Ku4C;|4&T-l8;qO6Z6)^x`6 zW3cP&N_50~I{UgC6WZL;(B0nIv3{oh)P(*}&CCWk;eR~Qfp3E(;%)dG#?1E4roOgB z&&-ZQFFu#kxO%4hAjQm{?nbhXJDWJZQL<)6<2TDrUvF1mugxV=?d(oinBIZhtVv8i zu4iT^6~yOAt%|ShDc9ffQRb6A%}w~iN3ZJY?Cw?e!yWtu3)R!uf{*afmsPq|JYHH` zTY6NyZo#t3c>Pf|mGQXh>uytszZaj&_;z2Sr*~0TFTRmNAKh5m!{0eEWIoQJ)^>KU zuGe1!#?JP3 zG?;4bu^;KcCqv?8ot)6=jjq53*{T32=8 zD?n5w^z9L(D?(XsB48zbAW7+up_Jo$B*w(CxsciyK4yYX{K)9EwTP^ozQQ6sXba~7 zpJg%ML2lKN4LvJFEFS7Kt_q8?jq88b%y(vy#^>H6DvWy}MANZt{iRPc2wDodOl;$6MI5MAus#YWA- zK*HbC(%B|*fVj{Y{5>X)+hz>;?M?J^v}IJLYRh}OEAUk;mxeA(!siGn;(J-9jKaFB zJJHmt`(PYC(6kL5jXtBCk2c5=XWm8xu}gGApqza}g1*h=o25gfy*l36+>9?#InOKm zniWZIVF8+mORZxt4d*;ILzgDYOqa9aaPEs>Tq8ZmS)#if-~F;$P8e%eqerka^$(*5 z$%m(!)nvx!v*>@hC=^m?c6q~>*y8j>GCSUQ^?|lU(hJKfE9$H2;&pXZ@gM`?e63AuY!1`jOrJ3mVGxXHguNN^29O!0P}}`1Xb#C<5n^z9*)?Nat+m z6LskB&G6LSuvYaptWr8EmwZD{N0fXx3;k_AvglpeqquXS)8adU7?oGWJCS^APfs6G zq8NMn^nj+###)gNshemVi?=865yd8#icYozpZIEuH#PJ&ID4Hs*>l7c6UyJ*-Px|z zComVntWPyTU|TR3ROoIr$4L%OHEM(Pb}D>4kn-8J+SLhclEyg8LPlXDhcrT~8Ewf? zLM}KJwlGdZHQO|_^~R|PJxbQAE^!ad)kw#4>+AA5TaE$WQHvv9(g>aSs@r<{@F7{? zwx9_rxwW|!4eFdpeJ;>Vl5AI}TdleeiJ_|O7aVnpE~ujJi0B$=LeSOO*4o%Ax{4me z*LMjUbXxS;?mpiINDp^4^tMO|rR?_UNgc)DiG{oagB7WPUc~L11;QoG@%ARCjTctL zs~1&QN?uq|EU|V$P36LhXi2`bteamN4Y;77D6}aq32X}S<8wTGAZ5f-9Q7ju*(@v! zJQT+JM-03EQOEm7UKpq7xp^?*qFNEcNSzMS%Q>n!Jh?8wwRNS^xw8E5%A@*O#4F|} z+f^ioLL~9hs(R@MR&}tgsjHK=i)u=bSX}8cjLxx}40m>6bl@^+k;CUcUGqY%v^LY2 zrf20W6=qOzo(v{wKDKIYPUuda91>p?P3Ykf!xJ=sR=7^Y$L}~ zB#sYahS_LtYgpyS5XyPGUT|sYma?DhEXfYsd^F)PgQ?5{=T7>vQvlcS z6ta;9Og(h^_Q$N9KEbPpQW@U(B{%Q4%lhMbL)ea1SFNZeLCx_s-OYY3)0K?P@va^* z3M5f8G<@gk)smGbSR(mr(TD%4ty1S<#PP5OIt-U0UT&>*qXv(Ui<1&y|rgWT7 zYAk2TzM${1(8VY#EwJ;@+tS(-@9VxGRRh&UQVo6 zjomO|2<24lM8m5^TMWP8As;ObJuPBvBCCcr(MxsBm`NdP&&u+ectuUJ2DNr|xJPFf z)cPSqI6%FBjYDzC?j4}$ckfVK5bf_!R)fJ}ch%b)9Vhs-p3w^7y+rjJ0C*fLg&%ktZ}7l2=a;iH?9=EnmXbw zXd6GsYhACusO?H%c1}1qwmf9n*RPbe@E8}wLdTXh$&Q8&>@%_+p;XC25As%#jlhE9u31_ypZ=(U-30*J4@G9j$J$b zO>p}9d4pKD>%D{K&hB=sW0K1099&kNOa(dxH(qM+gonte$8#`IE zdQ>N$qFT+8y1!pqXlq;Hmxea1O1UzD*m;uJ(v*a9j{u(K6b;zAMh0!~@kz{_NU#Z)ca7wYr^VQh}rg_54+o z--L2WAfA>UnW>JI@ePS?FSe@_2~1r2y3rA7J#Kd0IX>Nq8ro<=z*d@)*J#EHdJmt1 zcm8@FZB~h#8cfP8=E;57y)xP_+`qF6A*#8gK(uWm+*}s) z2G8ysD1elB%Sn;Co}J_qd%SuRi{^ekZcwLfQ>-H6l}FYrs;!UH?r1@LVQF1`Wo;aj ziP}oPP~45zcwxM}YC&aneY~=?whGU!zDWq<)g<^|rZT^@x&q7e!|`yewshXS1?Ar? z#kxw&mulnx!_c;br8PBG3(8CDX@mKHlKQ_1FV!c_%xyzy!R84b)jsWW*VN8Sp4CbR z)Q#MC2%O|L1v$+>ykZ_TJSvqoKf;iKGlk}i((Y$hHx@&B&xmblEE6&&bUL0U2-%bV zdA|)0Xz2+69+a{xJ+ft2#9U6#1ZaIhPqv^`>|+?S*1>v`6dHP^zIUM#@pP=Nr_DW2 zgPES!ttqp6q|T_Hf;L+RLAGn*VoWP1_e2fFRd)IPNn7L zl{NKhXiPxMi?yr>>-x$g>*MokOBYrO%d!R4rL{-(vqluvmE~I4 z%BvRD$q+RQst*+r)GPvGNkmUn^|MN!u|T z)-I~uy;DtTZCz!2acx!n-*~EC6kk}ma8d11yN^Scu_9h}RJ^7V_3Lw8QCU}CyXdH- zY}M2*s$W#TsDFC9OQfz6(p^znUm6ceuI;KSs}HT8k4{itSy_>k2)4c!SH{2I9clSC z5*c2&psud6B92NaT_~(|)j(SzGfoZlb2c^k_3mh(iulsn1@)D2BYOQ}uvv=NFN)7! zR0o-KLTWO=?xw!|V{kkr*N@gA!&V^c>Pu_2Oj|}sl4&i7)(V9|FDq;9Xy{(ALwEK- z;yQcuBX_>nn>jWkI+;G(!CXT#-UL0{u;HpZar~eYdkdBq)YZaRrxz0lOb->C@LT|o z5-`TE>TOY-UHZY;(w;@efW58NcyO^0H~4Jrnb+FUitU3Y)q+)AqFeX(r9Jvtz0(ew zXz=amZRW@7<+RC|sHIW82j@Isy`ZDDSNp8hkJ;H{RVQ|gmiAO6+E5M?)6yP#es65b z+Y$}*yk9?|U)*7Rm(xDeQtbIBOl?7RLAljnrmJ-k_VVpP5nZvmgy!G~u`WZOeyU5B zs0ip<${(#2bbNd|!p`8@*0$0%W3ZkwTVUD^6LE?OySa$R9Q82e2QF=B?WGe3dWnK2 z=<1{g8~X4`BPN&qomzT(yL7h6umnxp+}7F9t8g{|JD{j@dVoR)BM?U|+N56u`j~|3 zfwMVDvH*u2&<<-#_4>?Ax$0 zy11hmt13>zly<%r5oOL8boOFztIfo2GE#>cbh%Z!`e?yU9y_&1He;yiRaP6)FoeOY zLqD?7&wb4nb7CD9_NeT(p6Wy|i55mRI@|&8ny?>0RZx!cuDq|Ox3k?I{6XfDN?d~( zxG5DH#+tZPOL1tVsuQaXwxAMJwDw?J?V!^sn5^T3fPQStK8z4ib@Ry+bO3~>(6m3#Htn~xwYPkBMz`=an^@{s70v- zIbnCOA}KyQ)k#j;d8Jb(u7FxmG0kgjYolt=Elt&cB6IqtV=u(wG2wULTyf0aHRlTD z(H68^a9O1~vQ^TQXl}q!D_y1Soof<7O_DFHg~YxYN6c}U-6!-Iy<6SS)t!>)=i;`i z`?=`F5KRR8xzN-8ewK7RKw3gFAjW}B+&$0<9cZUW+O@EbOtPgd4!e-+wi8SYK8b`I zL+Z3p>}IU6J;976rCm5&M@>!xi&M?I8^{)ip3}0=hx!idgpOmVPjqARkaqI5&Tlj) z;j9LtJSAmZJI6b46a`OO%mC8T*Ng27FS$;1nq^=}P7+gt_p`84lw|LuJIR(iLXxHE zW!j$fq*iH%CVKHuubZ@(YG{ocRZE73_SUxbWJStHudHBp`Wj{m)`o6rjSBsku#b-Y z!E7UNCS$87A`~Nqrl8PT$OsKn0DZ8JT=X#nvyDpUNJyDkVW5$y7J~%_jPCXJ2|ka= zE~K`gawgjtHEJ8vYIN^dcFIQ6c<#Gp~(hCSj&49)o4 ziNPM_qn$ZA-(h1CGlT`G>uwsmjn3BN2*!CDPTUO3IAOkkGkMU-=2T?|^p;lJWJ`6B zByyxLAmV64yY?!@$tWCiwFKekahsI98K275+j$>*quB!W0aAd7%w)rY=~9SQcN|QZ zs5ilr=}?$tcK6bdY0tWHV6vhkvq`bhWTFQ9#1vW&WTuBwLMC$OKvw9N#xtLeHDUB9 zX=5=N)i#t6CJnZKTFI{OoKL5KX`;EZZxsSzw~(g~ws>YPL3QI?2zUz4<-u@m=MrpV zgP0=ty5&dGilh{eo;#Xow~yvMIAcab7+GN;qNhAG=GcPM!-hrX_$wU`HPbe#=_NSU zgR!`tPJ{5mLAC0ME@ty<5^YM41#K9vA&?Lc3?C3(h%aQ+$Rqaca7ub5{RBY^44TF)6cn}s{)cDOkHfob5w#WXcBZ6!kvSB9Q&MoMAOBPS?;Kx8J14q3&<(#y z@~h!B(KeHg#N$Z1xy9EM3TkCU%s$zLETLAx3+#! zUBS!+9gS^$nDTv-RR8zS?6>|GssB&Q+}_vIHq$0FQ)|cnwybvapUJa;HH9-uP|X~t zwf?_Ug?R1Z8>RfeQGMSip|6t?95Lu_qRD3O`k6G;=syrzh-{&Ld4ubd9KTUY|4or_ zD7KfD&FCyEG4yfceWP?_iT;BuV8Zf^qWo{No|L>4<{oVD9Y@pSojnCWycQRDgwlpRUV+0o6}|5Z!Yi7|zGx&ck+oB#cq7tI-wf~!&k#qt(hl0k6=a@DKPO*A>8)&t+!P3h{g+mF(dL_0-``V3}GTWnu?>bPk-2lEgNNvR`L8oj-!A~RCbveF|dNG~OAu)U{5QZ;8p zPS*DnV-GWiG#~W9l(eDg#_K@+<XJ1)oRdW&Cz6lIVC^q6(yQ-jkqo-ye^S(!q^6|h*lJ5dSxxnf9cZfs zkr|tjoON!MaW+3w*vBOHu~(4863gZ6b5Gw0$yJ#ZS+Dat+2);7=a@O|u{K648DW_| zNkMg`N78g$LroQP+ItO*4AJ&uBWv{C)!V{>wlP}S?-&-Jp*Bofm<}IZg$VW?FD?L^vExC|3NJq72yKp4~)Egg7!1mHpmd0t`$sEbtWB7H=D(3h^^ScHVk** zw8&99PS@O{Z1;eL$#I(1V!4r1OpcIq-7DEcu8o@Q)6xe<-m*F6d>q0;RL?g1_-<&@ zDYfajE-{o7$cZf1d35!Qu3>V`LOt1r-G^hJJuvbs6D?%Z=#W}_pJeZI?LCL9XrdL~ zgE<70i_s9%*=Dc}<9dxN^B&v>MA;T3GFQit5!qq#Jvef&(K^{qOih;dw7fsZWm|wN!es3G zrlR(YoMk!@3$rhV$!WGNXqJm@U}RsN6O5K7CoCP@(&)-(>RxVxvhvS~ToQ=*e^P>J z`$o2FHI?St!s!WTgPfUybGK))%8BeWWn+i5|Crv`$iqfXSR~UTcbO4xOr+JeU~(;w z4hreAg{Cw<=WspQsf@L^uH)?8g+mwKZUT;u9H^7rolqFHl98;xy?<=vWi$G5eR1SdY;?1@d4~AzuPfcUkF!M%!;iA= zY4$!g@{wsPS9m9l&IW~^qs42_$T9k!6WMBN%#8@sIT!Z6n3cmY+q!nDmNwHi8Ruh| z9TtX~36jlKj+t_#x%eSKrap#S|AS4ukvEKD;Tbf~U0gdMplPS9$kj#y*@V58$lZt`O*}0aAcFQnPl_vb#t+&j1n4ZS~D##vfT)h8|1QVB3QpXWRgQS zHiik@$XtpUwh`ypN^G;$!!2XNaaB*?CXd`<`pa}{F_9CPZ4(-2?+^|nGrEwj?t`}7 z-}<&nn=@&v+=j}sY5CeUVl~UwS15;jm?ewX)-yO>?sD9uSvG~ik=a`K(juSg9u)bB zk%+NeY%b+wu8=Uz{(a*2M%VeJn#uH7E2MkdSw0U-X*MbD%V7dvXWvhAPYkn|1{;$$ z$C);+pC8zmB9F11fb)|R*blaxV`YCY>wh0tm8OY#MB?x~lyT<_?Z?~jDUqj*#14+s zQJdg@($e60EDf+;=dNQ47AoZ_VY|6G@z-nu+=P{K|K;p3uDE?|d`@SeUzwCA+v-R$ z_b|7+{#|aZo{S9DvX|j1K*t=$^h&x|x8&GSYj3BqOntC0@j4?VGF-=<6@_wf?X_N_4gccCUw!<CQOYg+Pl)YIO)bmUcr7gk+Ln<|Sai+X0{1*3?$$fQAZudo4lpxHNar74H& zQ2l4?Zf3EU%|H9)di>8be(TfJnXS1La}R6xv$T}7x#^K(bt{jws>QDyP1|PK7PZS1 zOQWrCo-7PADRBE@JTRfLlVdw3ONJd+tv&nm3gQDZJh|G$s?0<+$rfh16&^ z21e4U2CR=Tk$X)dwurW<|J#Y|G>KS^ViU1*dfSS;_=M6ma+b&9;ud{a-I|uOWq0kU zCq`yFjYFfj+BPiiImih%tBfFijShKZKuX%^bi1v_+fF=Jz^u>Y4=GHedQBS=S*q`Y zBa7+I?$C_7-qS|e9U|6lX<}2mQxOov*U*q?|UOECUZf`uop?9sQS=_J4Zhywvm4E*SX3Z|RW#F3wyT z80OuD5A!(}{wDwXa9ajlIQXJ;oA2GGe|qHW^Jd*LkcOxql^>>=dG3H9zb4&_hg_0z z=};a2*f0#$r>UQR?{4#+`}N^n{eEp4Hje*O_ptuEkf;CS`nP%8ZQFbUw|?no-jcGL zw$L%{HVxaxVcBX>HunRtw(fTm??vg~q>XJkO6jMiyK(e)jY=tnF*Pf#dre_MYe83j zyq*3u)1OBAvknJv*0nc8opGf%Ho|Cg8@1u{=Xc+fPO6zte;sry9hl}7FPrh zmG#fdI=kI79@5&&xZ|N}5_@?|Rrm#0eNjE9pa)U>_>_gcOn6`4hVA#A;0F)6#TCKh z;pF`7p7CqR_A>62wz&-BQx!>^!)W98X&C=w0(ajE#(i$!UJ-Cj!1Vzy3HX?RR|MP? za7(~l0rv)cLckjXJ|p0>1Ktww)_}JOc19Q?c#iJtmRxqvUcQXGmoLMlm(69^x3^*6 z-iCdehP^&8?AzC{mtVtPUI%f)`X0e?0v|V7?Vf#kjJwaTVIPNKpC7~HU8;t??lbKB zkKv-g|G@#51?=V3gr6U{R|V|lIbBV&D&`{G2jHjcsVpl3|HlQ~7I25){j8bVV1UZh z@pTJ#iho1En*;XpYRYp};J#h3Gr|zD`S*6FJRy61VcdOt820sVxWq+ZxH{n4fa?Q3 zGGMPCOnl9OyRTp4?(5I+n!x{-fPMcp{vQb3cLe-sz>f#~e86u7{C2<}1pH~hUk2=l zIg{TaH|!an6Y$)CD*`?&;Oc;D16~qvuVC(b)W-&>v09$b6z(L?)OXC4!3KSgSo!ys zray$7>MV@A*HVVP{xs}UG3@2pFy+ZyhP}Qt?DdmjuP-w>puR`2!timC)$ZBn-?;ny zXQ?V1V?HuHKxOOre0hw2pT1$QuMJPIad7&qW0Hf{Ebr9rlXU%5xM`k=e}2F<0Us0a%7A+X zUu4r83A+I*SEsj8xKn$dA^1A$f4lZSRr|k4xRd|O0^S<%wt%k>_^yEO4fwu*9}jqE zz<&t%F9E+D@Vfzj5b#F)qvj!cvrw*2At{?vXRG(fU^P~8}Rsm^8=0rJSX6?fU5$o33yq+ z%L8r+xGmr{0iP7`X#t-b@Root3;6ng?+EzrfbR?V!GIqM_|br$5BTMPUkmsz0lyXS zM*)8x@K*s3z}a(i8TrW!I6L4O0UsRj{D7+ht_ip{;AH_X4|rw3%>f@5a9hA#0j~*o zL%=5myfNTS0iPZ4c>!M@@Kpid81O9t-yQJIfS(QcjevIr{8qs42K;HjUj|HX0Z927 zDEMdAEa2fQNS;{-o|{L)o`{{v7O z%KsYSPP`%DO#z=B@Oc4m3HZ8zZw&aBfbR|XzJMPJ_zwZU8t`iY|0Uq}0{$rAPXqoc zVDnWxRGgikXXtO(c{X3f^K8C~=XpZle{#Sx0xk%+B;W%AJ~-gAfNKL@67Y(En*weL zxGmt`fKLnfjDRl-cx%8{1-w1r>jS0=_KZtpVR2@Erl)7x04t?+EzefOiJ`Y{1V4{6@gL0{$f6 zPXngo2<9^KMu!6=X9qkk;0XcKV|N*TM!@+27X^H9z-0l?54a{^I*1_CUluUE`oZph zw5B<@4^Y$f__|KG)A&j!FU@7@XJf#d13n|*vjaXa;4J}f4fv{nZwvT=fFBQdXTZ+} z{CvPK2fQobj{+XxHr!183=DWsz#{`56Y#Wv=LB38@G$`|54btt;{xst`0Ri$3iy(M zw+DQ4z;_3{Bj85^emdZn1AZ;ww*r1I;7O?@ z4*0%+cLe-cz)uAHY``xE{93@f0)8*xRQG_v$X`ytw3pBF$tJo-RF2lq-fs8ohBxcq zKkqgENvE63u-|Vt?4Ms4-jBW8`26!b<6aiH&lBv7FhuP7&D)vvT*z*@V*R`BYuQzg zWuJc&U#^SL@c4jzd5pV%o?)2Qn&$E~MI6EDuVkCuv(KM#_s@?E`}#HPpU)VcW>crr zW|SU{&E_(E7^8Ks7VL~LMAVodzq@C*J!SoS`7!=|c?^4bGVIG|*w>L^Up~YB`IF(v zF4Kmm1nk?#xR(U(2L$Zp(fIfBXxP`6;gv!7mVny=?hSZNz^4dyMi?UY`KGrs&pSi* z@^9R|{2TV|Vc55aVc#BxC%6O*d-*r)<=rqplT|jqbA#}{evSVM;qHtuMC|^Pw=?@u zA$$2V?q2>3`|=ykbP*WN4%o||argbru&)opUj7XG{%6?Bn_*vG!}Ejms{*bM_{e}) z1l$y`mq(LcSKz)O;FAL09Pk+dpBM0D0dEWVmVj>)?2Ir(?DJ1=XP$?K?Ay<{d-*l& z^}AuO4-6N$2o3x8GVI&Ka82NUNx;hj?he@Ze-qycf&0dQZw%Pip9$~l&+y%W|Azv8 zG~mYr-Wl+-0lyaTTLHft@FxMMyYm<(zoP;kC-@y3b}sG%)c$%rnk?K$!rq@pG4YiJ z?*9CVarfs<40i|q{rM8(zAkXz8t}~l-xl!Q0Y4P*69GRP@bdw`8t@wd?+WWy(uu56qRz27QmtuKEu9zhJE=A`|=s~ z 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 diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/brandy-native-js/libace.a b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/brandy-native-js/libace.a index e807091dc672a3867702edc9f9e39df75ced5492..8d5a59281b8b1b8f1d7b30d9c55184b4b7bc8371 100644 GIT binary patch delta 54185 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�e4 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

  4. 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 literal 417200 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�zqiMpaHl6MHiMYtXW8_ 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 z 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 diff --git a/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/brandy-auto-ota-ser/libace.a b/code/sdk/open_source/openharmony/foundation/ace/ace_engine_lite/brandy-auto-ota-ser/libace.a index 9ec1739110dae8ec639e02bde3f9b7252b0da471..bc72f9a19e4133a096a9355d577ed4079bf5b6d9 100644 GIT binary patch delta 54185 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