From c0ace98dffb25982d1aa54b64e50239ebf610ecb Mon Sep 17 00:00:00 2001 From: OutBlue <1824835816@qq.com> Date: Sun, 30 Aug 2026 14:13:24 +0800 Subject: [PATCH] =?UTF-8?q?=E9=99=A4=E4=BA=86=E6=98=BE=E7=A4=BA=E9=A9=B1?= =?UTF-8?q?=E5=8A=A8=EF=BC=8C=E5=85=B6=E4=BD=99=E5=85=A8=E9=83=A8=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=E9=80=9A=E8=BF=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/app_config.h | 51 ++ app/app_log.h | 23 + app/app_main.c | 90 +++ app/irq_task_config.c | 45 ++ app/irq_task_config.h | 9 + audio/audio_test.c | 362 +++++++++ audio/audio_test.h | 34 + board/wl82/JL-AIBT-SoundBox.cbp | 343 +++++++++ board/wl82/Makefile | 433 +++++++++++ board/wl82/board.c | 165 ++++ .../apps/JL-AIBT-SoundBox/app/app_main.c.d | 72 ++ .../apps/JL-AIBT-SoundBox/app/app_main.c.o | Bin 0 -> 4240 bytes .../JL-AIBT-SoundBox/app/irq_task_config.c.d | 65 ++ .../JL-AIBT-SoundBox/app/irq_task_config.c.o | Bin 0 -> 2780 bytes .../JL-AIBT-SoundBox/audio/audio_test.c.d | 127 +++ .../JL-AIBT-SoundBox/audio/audio_test.c.o | Bin 0 -> 29276 bytes .../JL-AIBT-SoundBox/board/wl82/board.c.d | 138 ++++ .../JL-AIBT-SoundBox/board/wl82/board.c.o | Bin 0 -> 11888 bytes .../objs/apps/JL-AIBT-SoundBox/led/led.c.d | 109 +++ .../objs/apps/JL-AIBT-SoundBox/led/led.c.o | Bin 0 -> 3112 bytes .../JL-AIBT-SoundBox/mqtt/mqtt_config.c.d | 36 + .../JL-AIBT-SoundBox/mqtt/mqtt_config.c.o | Bin 0 -> 9192 bytes .../JL-AIBT-SoundBox/mqtt/mqtt_manager.c.d | 113 +++ .../JL-AIBT-SoundBox/mqtt/mqtt_manager.c.o | Bin 0 -> 18296 bytes .../JL-AIBT-SoundBox/mqtt/mqtt_protocol.c.d | 83 ++ .../JL-AIBT-SoundBox/mqtt/mqtt_protocol.c.o | Bin 0 -> 15616 bytes .../apps/JL-AIBT-SoundBox/radar/r60abd1.c.d | 126 +++ .../apps/JL-AIBT-SoundBox/radar/r60abd1.c.o | Bin 0 -> 15896 bytes .../radar/radar_command_service.c.d | 67 ++ .../radar/radar_command_service.c.o | Bin 0 -> 12140 bytes .../radar/radar_data_service.c.d | 68 ++ .../radar/radar_data_service.c.o | Bin 0 -> 6452 bytes .../JL-AIBT-SoundBox/radar/radar_manager.c.d | 66 ++ .../JL-AIBT-SoundBox/radar/radar_manager.c.o | Bin 0 -> 13768 bytes .../radar/radar_report_service.c.d | 67 ++ .../radar/radar_report_service.c.o | Bin 0 -> 9156 bytes .../JL-AIBT-SoundBox/radar/radar_uart.c.d | 108 +++ .../JL-AIBT-SoundBox/radar/radar_uart.c.o | Bin 0 -> 7236 bytes .../JL-AIBT-SoundBox/wifi/wifi_manager.c.d | 69 ++ .../JL-AIBT-SoundBox/wifi/wifi_manager.c.o | Bin 0 -> 14444 bytes .../apps/JL-AIBT-SoundBox/wifi/wifi_sta.c.d | 68 ++ .../apps/JL-AIBT-SoundBox/wifi/wifi_sta.c.o | Bin 0 -> 4540 bytes .../apps/common/audio_music/audio_config.c.d | 50 ++ .../apps/common/audio_music/audio_config.c.o | Bin 0 -> 10564 bytes .../objs/apps/common/c++/cpp_run_init.c.d | 20 + .../objs/apps/common/c++/cpp_run_init.c.o | Bin 0 -> 2580 bytes .../objs/apps/common/c++/cxx_runtime.cpp.d | 2 + .../objs/apps/common/c++/cxx_runtime.cpp.o | Bin 0 -> 13020 bytes .../config/log_config/lib_driver_config.c.d | 64 ++ .../config/log_config/lib_driver_config.c.o | Bin 0 -> 18704 bytes .../config/log_config/lib_system_config.c.d | 64 ++ .../config/log_config/lib_system_config.c.o | Bin 0 -> 8372 bytes .../config/log_config/lib_update_config.c.d | 65 ++ .../config/log_config/lib_update_config.c.o | Bin 0 -> 2960 bytes .../wl82/objs/apps/common/config/user_cfg.c.d | 75 ++ .../wl82/objs/apps/common/config/user_cfg.c.o | Bin 0 -> 9336 bytes board/wl82/objs/apps/common/debug/debug.c.d | 20 + board/wl82/objs/apps/common/debug/debug.c.o | Bin 0 -> 5752 bytes .../objs/apps/common/debug/debug_user.c.d | 22 + .../objs/apps/common/debug/debug_user.c.o | Bin 0 -> 2796 bytes .../objs/apps/common/net/assign_macaddr.c.d | 101 +++ .../objs/apps/common/net/assign_macaddr.c.o | Bin 0 -> 21924 bytes .../objs/apps/common/net/config_network.c.d | 108 +++ .../objs/apps/common/net/config_network.c.o | Bin 0 -> 8416 bytes .../objs/apps/common/net/platform_cfg.c.d | 22 + .../objs/apps/common/net/platform_cfg.c.o | Bin 0 -> 2588 bytes board/wl82/objs/apps/common/net/wifi_conf.c.d | 67 ++ board/wl82/objs/apps/common/net/wifi_conf.c.o | Bin 0 -> 34896 bytes board/wl82/objs/apps/common/system/init.c.d | 115 +++ board/wl82/objs/apps/common/system/init.c.o | Bin 0 -> 18932 bytes .../common/system/system_reset_reason.c.d | 23 + .../common/system/system_reset_reason.c.o | Bin 0 -> 9180 bytes .../wl82/objs/apps/common/system/version.c.d | 64 ++ .../wl82/objs/apps/common/system/version.c.o | Bin 0 -> 5020 bytes board/wl82/objs/apps/common/update/update.c.d | 81 ++ board/wl82/objs/apps/common/update/update.c.o | Bin 0 -> 27620 bytes board/wl82/objs/cpu/wl82/debug.c.d | 76 ++ board/wl82/objs/cpu/wl82/debug.c.o | Bin 0 -> 39380 bytes board/wl82/objs/cpu/wl82/iic.c.d | 122 +++ board/wl82/objs/cpu/wl82/iic.c.o | Bin 0 -> 24156 bytes board/wl82/objs/cpu/wl82/key/adc_api.c.d | 26 + board/wl82/objs/cpu/wl82/key/adc_api.c.o | Bin 0 -> 24916 bytes board/wl82/objs/cpu/wl82/key/ctmu.c.d | 27 + board/wl82/objs/cpu/wl82/key/ctmu.c.o | Bin 0 -> 1184 bytes board/wl82/objs/cpu/wl82/key/irflt.c.d | 28 + board/wl82/objs/cpu/wl82/key/irflt.c.o | Bin 0 -> 1184 bytes board/wl82/objs/cpu/wl82/key/plcnt.c.d | 29 + board/wl82/objs/cpu/wl82/key/plcnt.c.o | Bin 0 -> 1184 bytes board/wl82/objs/cpu/wl82/key/rdec.c.d | 25 + board/wl82/objs/cpu/wl82/key/rdec.c.o | Bin 0 -> 1184 bytes board/wl82/objs/cpu/wl82/port_waked_up.c.d | 121 +++ board/wl82/objs/cpu/wl82/port_waked_up.c.o | Bin 0 -> 11152 bytes board/wl82/objs/cpu/wl82/setup.c.d | 123 +++ board/wl82/objs/cpu/wl82/setup.c.o | Bin 0 -> 3048 bytes .../objs/include_lib/btctrler/version.z.S.d | 2 + .../objs/include_lib/btctrler/version.z.S.o | Bin 0 -> 516 bytes .../objs/include_lib/btstack/version.z.S.d | 2 + .../objs/include_lib/btstack/version.z.S.o | Bin 0 -> 472 bytes .../objs/include_lib/driver/version.z.S.d | 2 + .../objs/include_lib/driver/version.z.S.o | Bin 0 -> 468 bytes .../wl82/objs/include_lib/media/version.z.S.d | 2 + .../wl82/objs/include_lib/media/version.z.S.o | Bin 0 -> 468 bytes board/wl82/objs/include_lib/net/version.z.S.d | 2 + board/wl82/objs/include_lib/net/version.z.S.o | Bin 0 -> 464 bytes .../objs/include_lib/server/version.z.S.d | 2 + .../objs/include_lib/server/version.z.S.o | Bin 0 -> 468 bytes .../objs/include_lib/system/version.z.S.d | 2 + .../objs/include_lib/system/version.z.S.o | Bin 0 -> 468 bytes .../objs/include_lib/update/version.z.S.d | 2 + .../objs/include_lib/update/version.z.S.o | Bin 0 -> 468 bytes .../wl82/objs/include_lib/utils/version.z.S.d | 2 + .../wl82/objs/include_lib/utils/version.z.S.o | Bin 0 -> 468 bytes board/wl82/objs/lib/net/version.z.S.d | 1 + board/wl82/objs/lib/net/version.z.S.o | Bin 0 -> 448 bytes board/wl82/objs/lib/server/version.z.S.d | 1 + board/wl82/objs/lib/server/version.z.S.o | Bin 0 -> 452 bytes board/wl82/objs/lib/utils/version.z.S.d | 1 + board/wl82/objs/lib/utils/version.z.S.o | Bin 0 -> 452 bytes display/st7789v2.c | 473 ++++++++++++ display/st7789v2.h | 10 + display/st7789v2_test.c | 73 ++ display/st7789v2_test.h | 6 + led/led.c | 21 + led/led.h | 16 + mqtt/mqtt_config.c | 162 ++++ mqtt/mqtt_config.h | 57 ++ mqtt/mqtt_manager.c | 369 +++++++++ mqtt/mqtt_manager.h | 88 +++ mqtt/mqtt_protocol.c | 389 ++++++++++ mqtt/mqtt_protocol.h | 138 ++++ radar/r60abd1.c | 726 ++++++++++++++++++ radar/r60abd1.h | 106 +++ radar/radar_command_service.c | 449 +++++++++++ radar/radar_command_service.h | 55 ++ radar/radar_data_service.c | 159 ++++ radar/radar_data_service.h | 49 ++ radar/radar_manager.c | 332 ++++++++ radar/radar_manager.h | 115 +++ radar/radar_report_service.c | 307 ++++++++ radar/radar_report_service.h | 94 +++ radar/radar_uart.c | 119 +++ radar/radar_uart.h | 18 + wifi/wifi_manager.c | 481 ++++++++++++ wifi/wifi_manager.h | 80 ++ wifi/wifi_sta.c | 71 ++ wifi/wifi_sta.h | 15 + 146 files changed, 9476 insertions(+) create mode 100644 app/app_config.h create mode 100644 app/app_log.h create mode 100644 app/app_main.c create mode 100644 app/irq_task_config.c create mode 100644 app/irq_task_config.h create mode 100644 audio/audio_test.c create mode 100644 audio/audio_test.h create mode 100644 board/wl82/JL-AIBT-SoundBox.cbp create mode 100644 board/wl82/Makefile create mode 100644 board/wl82/board.c create mode 100644 board/wl82/objs/apps/JL-AIBT-SoundBox/app/app_main.c.d create mode 100644 board/wl82/objs/apps/JL-AIBT-SoundBox/app/app_main.c.o create mode 100644 board/wl82/objs/apps/JL-AIBT-SoundBox/app/irq_task_config.c.d create mode 100644 board/wl82/objs/apps/JL-AIBT-SoundBox/app/irq_task_config.c.o create mode 100644 board/wl82/objs/apps/JL-AIBT-SoundBox/audio/audio_test.c.d create mode 100644 board/wl82/objs/apps/JL-AIBT-SoundBox/audio/audio_test.c.o create mode 100644 board/wl82/objs/apps/JL-AIBT-SoundBox/board/wl82/board.c.d create mode 100644 board/wl82/objs/apps/JL-AIBT-SoundBox/board/wl82/board.c.o create mode 100644 board/wl82/objs/apps/JL-AIBT-SoundBox/led/led.c.d create mode 100644 board/wl82/objs/apps/JL-AIBT-SoundBox/led/led.c.o create mode 100644 board/wl82/objs/apps/JL-AIBT-SoundBox/mqtt/mqtt_config.c.d create mode 100644 board/wl82/objs/apps/JL-AIBT-SoundBox/mqtt/mqtt_config.c.o create mode 100644 board/wl82/objs/apps/JL-AIBT-SoundBox/mqtt/mqtt_manager.c.d create mode 100644 board/wl82/objs/apps/JL-AIBT-SoundBox/mqtt/mqtt_manager.c.o create mode 100644 board/wl82/objs/apps/JL-AIBT-SoundBox/mqtt/mqtt_protocol.c.d create mode 100644 board/wl82/objs/apps/JL-AIBT-SoundBox/mqtt/mqtt_protocol.c.o create mode 100644 board/wl82/objs/apps/JL-AIBT-SoundBox/radar/r60abd1.c.d create mode 100644 board/wl82/objs/apps/JL-AIBT-SoundBox/radar/r60abd1.c.o create mode 100644 board/wl82/objs/apps/JL-AIBT-SoundBox/radar/radar_command_service.c.d create mode 100644 board/wl82/objs/apps/JL-AIBT-SoundBox/radar/radar_command_service.c.o create mode 100644 board/wl82/objs/apps/JL-AIBT-SoundBox/radar/radar_data_service.c.d create mode 100644 board/wl82/objs/apps/JL-AIBT-SoundBox/radar/radar_data_service.c.o create mode 100644 board/wl82/objs/apps/JL-AIBT-SoundBox/radar/radar_manager.c.d create mode 100644 board/wl82/objs/apps/JL-AIBT-SoundBox/radar/radar_manager.c.o create mode 100644 board/wl82/objs/apps/JL-AIBT-SoundBox/radar/radar_report_service.c.d create mode 100644 board/wl82/objs/apps/JL-AIBT-SoundBox/radar/radar_report_service.c.o create mode 100644 board/wl82/objs/apps/JL-AIBT-SoundBox/radar/radar_uart.c.d create mode 100644 board/wl82/objs/apps/JL-AIBT-SoundBox/radar/radar_uart.c.o create mode 100644 board/wl82/objs/apps/JL-AIBT-SoundBox/wifi/wifi_manager.c.d create mode 100644 board/wl82/objs/apps/JL-AIBT-SoundBox/wifi/wifi_manager.c.o create mode 100644 board/wl82/objs/apps/JL-AIBT-SoundBox/wifi/wifi_sta.c.d create mode 100644 board/wl82/objs/apps/JL-AIBT-SoundBox/wifi/wifi_sta.c.o create mode 100644 board/wl82/objs/apps/common/audio_music/audio_config.c.d create mode 100644 board/wl82/objs/apps/common/audio_music/audio_config.c.o create mode 100644 board/wl82/objs/apps/common/c++/cpp_run_init.c.d create mode 100644 board/wl82/objs/apps/common/c++/cpp_run_init.c.o create mode 100644 board/wl82/objs/apps/common/c++/cxx_runtime.cpp.d create mode 100644 board/wl82/objs/apps/common/c++/cxx_runtime.cpp.o create mode 100644 board/wl82/objs/apps/common/config/log_config/lib_driver_config.c.d create mode 100644 board/wl82/objs/apps/common/config/log_config/lib_driver_config.c.o create mode 100644 board/wl82/objs/apps/common/config/log_config/lib_system_config.c.d create mode 100644 board/wl82/objs/apps/common/config/log_config/lib_system_config.c.o create mode 100644 board/wl82/objs/apps/common/config/log_config/lib_update_config.c.d create mode 100644 board/wl82/objs/apps/common/config/log_config/lib_update_config.c.o create mode 100644 board/wl82/objs/apps/common/config/user_cfg.c.d create mode 100644 board/wl82/objs/apps/common/config/user_cfg.c.o create mode 100644 board/wl82/objs/apps/common/debug/debug.c.d create mode 100644 board/wl82/objs/apps/common/debug/debug.c.o create mode 100644 board/wl82/objs/apps/common/debug/debug_user.c.d create mode 100644 board/wl82/objs/apps/common/debug/debug_user.c.o create mode 100644 board/wl82/objs/apps/common/net/assign_macaddr.c.d create mode 100644 board/wl82/objs/apps/common/net/assign_macaddr.c.o create mode 100644 board/wl82/objs/apps/common/net/config_network.c.d create mode 100644 board/wl82/objs/apps/common/net/config_network.c.o create mode 100644 board/wl82/objs/apps/common/net/platform_cfg.c.d create mode 100644 board/wl82/objs/apps/common/net/platform_cfg.c.o create mode 100644 board/wl82/objs/apps/common/net/wifi_conf.c.d create mode 100644 board/wl82/objs/apps/common/net/wifi_conf.c.o create mode 100644 board/wl82/objs/apps/common/system/init.c.d create mode 100644 board/wl82/objs/apps/common/system/init.c.o create mode 100644 board/wl82/objs/apps/common/system/system_reset_reason.c.d create mode 100644 board/wl82/objs/apps/common/system/system_reset_reason.c.o create mode 100644 board/wl82/objs/apps/common/system/version.c.d create mode 100644 board/wl82/objs/apps/common/system/version.c.o create mode 100644 board/wl82/objs/apps/common/update/update.c.d create mode 100644 board/wl82/objs/apps/common/update/update.c.o create mode 100644 board/wl82/objs/cpu/wl82/debug.c.d create mode 100644 board/wl82/objs/cpu/wl82/debug.c.o create mode 100644 board/wl82/objs/cpu/wl82/iic.c.d create mode 100644 board/wl82/objs/cpu/wl82/iic.c.o create mode 100644 board/wl82/objs/cpu/wl82/key/adc_api.c.d create mode 100644 board/wl82/objs/cpu/wl82/key/adc_api.c.o create mode 100644 board/wl82/objs/cpu/wl82/key/ctmu.c.d create mode 100644 board/wl82/objs/cpu/wl82/key/ctmu.c.o create mode 100644 board/wl82/objs/cpu/wl82/key/irflt.c.d create mode 100644 board/wl82/objs/cpu/wl82/key/irflt.c.o create mode 100644 board/wl82/objs/cpu/wl82/key/plcnt.c.d create mode 100644 board/wl82/objs/cpu/wl82/key/plcnt.c.o create mode 100644 board/wl82/objs/cpu/wl82/key/rdec.c.d create mode 100644 board/wl82/objs/cpu/wl82/key/rdec.c.o create mode 100644 board/wl82/objs/cpu/wl82/port_waked_up.c.d create mode 100644 board/wl82/objs/cpu/wl82/port_waked_up.c.o create mode 100644 board/wl82/objs/cpu/wl82/setup.c.d create mode 100644 board/wl82/objs/cpu/wl82/setup.c.o create mode 100644 board/wl82/objs/include_lib/btctrler/version.z.S.d create mode 100644 board/wl82/objs/include_lib/btctrler/version.z.S.o create mode 100644 board/wl82/objs/include_lib/btstack/version.z.S.d create mode 100644 board/wl82/objs/include_lib/btstack/version.z.S.o create mode 100644 board/wl82/objs/include_lib/driver/version.z.S.d create mode 100644 board/wl82/objs/include_lib/driver/version.z.S.o create mode 100644 board/wl82/objs/include_lib/media/version.z.S.d create mode 100644 board/wl82/objs/include_lib/media/version.z.S.o create mode 100644 board/wl82/objs/include_lib/net/version.z.S.d create mode 100644 board/wl82/objs/include_lib/net/version.z.S.o create mode 100644 board/wl82/objs/include_lib/server/version.z.S.d create mode 100644 board/wl82/objs/include_lib/server/version.z.S.o create mode 100644 board/wl82/objs/include_lib/system/version.z.S.d create mode 100644 board/wl82/objs/include_lib/system/version.z.S.o create mode 100644 board/wl82/objs/include_lib/update/version.z.S.d create mode 100644 board/wl82/objs/include_lib/update/version.z.S.o create mode 100644 board/wl82/objs/include_lib/utils/version.z.S.d create mode 100644 board/wl82/objs/include_lib/utils/version.z.S.o create mode 100644 board/wl82/objs/lib/net/version.z.S.d create mode 100644 board/wl82/objs/lib/net/version.z.S.o create mode 100644 board/wl82/objs/lib/server/version.z.S.d create mode 100644 board/wl82/objs/lib/server/version.z.S.o create mode 100644 board/wl82/objs/lib/utils/version.z.S.d create mode 100644 board/wl82/objs/lib/utils/version.z.S.o create mode 100644 display/st7789v2.c create mode 100644 display/st7789v2.h create mode 100644 display/st7789v2_test.c create mode 100644 display/st7789v2_test.h create mode 100644 led/led.c create mode 100644 led/led.h create mode 100644 mqtt/mqtt_config.c create mode 100644 mqtt/mqtt_config.h create mode 100644 mqtt/mqtt_manager.c create mode 100644 mqtt/mqtt_manager.h create mode 100644 mqtt/mqtt_protocol.c create mode 100644 mqtt/mqtt_protocol.h create mode 100644 radar/r60abd1.c create mode 100644 radar/r60abd1.h create mode 100644 radar/radar_command_service.c create mode 100644 radar/radar_command_service.h create mode 100644 radar/radar_data_service.c create mode 100644 radar/radar_data_service.h create mode 100644 radar/radar_manager.c create mode 100644 radar/radar_manager.h create mode 100644 radar/radar_report_service.c create mode 100644 radar/radar_report_service.h create mode 100644 radar/radar_uart.c create mode 100644 radar/radar_uart.h create mode 100644 wifi/wifi_manager.c create mode 100644 wifi/wifi_manager.h create mode 100644 wifi/wifi_sta.c create mode 100644 wifi/wifi_sta.h diff --git a/app/app_config.h b/app/app_config.h new file mode 100644 index 0000000..7be08e6 --- /dev/null +++ b/app/app_config.h @@ -0,0 +1,51 @@ +#ifndef APP_CONFIG_H +#define APP_CONFIG_H + +/* WiFi配置 */ +#define CONFIG_WIFI_ENABLE + +#ifdef CONFIG_NO_SDRAM_ENABLE +#define CONFIG_RF_TRIM_CODE_MOVABLE +#else +#define CONFIG_RF_TRIM_CODE_AT_RAM +#endif + + + + + +/* AC7911BB 存储容量 */ +#define __FLASH_SIZE__ (16 * 1024 * 1024) +#define __SDRAM_SIZE__ (8 * 1024 * 1024) + +/* 电源配置 */ +#define TCFG_LOWPOWER_BTOSC_DISABLE 0 +#define TCFG_LOWPOWER_LOWPOWER_SEL 0//(RF_SLEEP_EN|RF_FORCE_SYS_SLEEP_EN|SYS_SLEEP_EN) //该宏在睡眠低功耗才用到,此处设置为0 +#define TCFG_LOWPOWER_VDDIOM_LEVEL VDDIOM_VOL_32V //正常工作的内部vddio电压值,一般使用外部3.3V,内部设置需比外部3.3V小 +#ifdef CONFIG_RTC_ENABLE +#define TCFG_LOWPOWER_VDDIOW_LEVEL VDDIOW_VOL_32V //弱VDDIO电压档位。RTCVDD电压低于3.2V可能不走时,因此RTCVDD由IOVDD供电时,VDDIOW应设置为VDDIOW_VOL_32V档 +#else +#define TCFG_LOWPOWER_VDDIOW_LEVEL VDDIOW_VOL_21V //弱VDDIO电压档位 +#endif +#define VDC14_VOL_SEL_LEVEL VDC14_VOL_SEL_140V //内部的1.4V默认1.4V +#define SYSVDD_VOL_SEL_LEVEL SYSVDD_VOL_SEL_126V //系统内核电压,默认1.26V + +/* C++程序识别开关 */ +#define CONFIG_CXX_SUPPORT //使能C++支持 + +/* 调试开关 */ +#define CONFIG_USER_DEBUG_ENABLE // 保留 user_printf 业务日志 +#define CONFIG_SYS_DEBUG_DISABLE // 关闭 SDK 和普通 printf 日志 +#define CONFIG_DEBUG_ENABLE // 串口打印调试:printf()、puts()、log_print()正常输出 +//#define SDTAP_DEBUG // JTAG/SWD调试 +#define CONFIG_LIB_DEBUG_DISABLE // 关闭 SDK 库 Tag 日志 + +#define CONFIG_APP_LOG_ENABLE 1 // JL-AIBT-SoundBox 业务日志总开关 + +#if !defined CONFIG_DEBUG_ENABLE || defined CONFIG_LIB_DEBUG_DISABLE +#define LIB_DEBUG 0 +#else +#define LIB_DEBUG 1 +#endif +#define CONFIG_DEBUG_LIB(x) (x & LIB_DEBUG) +#endif diff --git a/app/app_log.h b/app/app_log.h new file mode 100644 index 0000000..5c42a88 --- /dev/null +++ b/app/app_log.h @@ -0,0 +1,23 @@ +#ifndef APP_LOG_H +#define APP_LOG_H + +#include "app_config.h" +#include "system/generic/printf.h" + +/* + * APP_LOG 使用独立的 user_printf 输出。 + * 这样关闭 SDK printf 后,仍可保留 JL-AIBT-SoundBox 自己的日志。 + */ +#if defined(CONFIG_USER_DEBUG_ENABLE) && \ + defined(CONFIG_APP_LOG_ENABLE) && \ + CONFIG_APP_LOG_ENABLE + +#define APP_LOG(...) user_printf(__VA_ARGS__) + +#else + +#define APP_LOG(...) do { } while (0) + +#endif + +#endif \ No newline at end of file diff --git a/app/app_main.c b/app/app_main.c new file mode 100644 index 0000000..722ed79 --- /dev/null +++ b/app/app_main.c @@ -0,0 +1,90 @@ +#include "app_config.h" +#include "system/includes.h" +#include "os/os_api.h" + +#include "app_log.h" +#include "wifi_manager.h" +#include "audio_test.h" +#include "led.h" +#include "mqtt_config.h" +#include "mqtt_manager.h" + + +//#define WIFI_TEST_PASSWORD "12345678" +//#define WIFI_TEST_SSID "JLTEST24" +//#define WIFI_TEST_PASSWORD "12345678" +#define WIFI_TEST_SSID "超导体" +#define WIFI_TEST_PASSWORD "12345678" +/* + * MQTT测试回调 + * + * 接收服务器下发消息 + */ +static void mqtt_message_handler(const char *topic, + const uint8_t *payload,uint32_t len) +{ + APP_LOG("\n======== MQTT RX ========\n"); + APP_LOG("topic:%s\n", topic); + APP_LOG( + "payload:%.*s\n", + len, + payload + ); + APP_LOG("=========================\n"); +} + + + + +/* + * wifi任务 + */ +static void wifi_connect_task(void *arg) +{ + int msg[4]; + os_taskq_pend("taskq",msg,ARRAY_SIZE(msg)); + const char *ssid = (const char *)msg[1]; + const char *password = (const char *)msg[2]; + APP_LOG("ssid=%s,password=%s\n",ssid,password); + wifi_manager_connect(ssid,password); + os_time_dly(1); +} + + +/* + * AC79入口 + */ +void app_main(void) +{ + int ret; + + led_init(); + APP_LOG("===START===\n"); + wifi_manager_init(); + + //mqtt_manager_set_callback(mqtt_message_handler); + + + thread_fork + ( + "wifi_connect_task", + 9, + 2048, + 16, + NULL, + wifi_connect_task, + NULL + ); + + os_taskq_post( + "wifi_connect_task", + 2, + (int)WIFI_TEST_SSID, + (int)WIFI_TEST_PASSWORD + ); + mqtt_manager_init(); + mqtt_manager_start(); + + + +} \ No newline at end of file diff --git a/app/irq_task_config.c b/app/irq_task_config.c new file mode 100644 index 0000000..cafeff1 --- /dev/null +++ b/app/irq_task_config.c @@ -0,0 +1,45 @@ +#include "app_config.h" +#include "irq_task_config.h" + +/*中断列表 */ +const struct irq_info irq_info_table[] = { + //中断号 //优先级0-7 //注册的cpu(0或1) +#ifdef CONFIG_IPMASK_ENABLE + //不可屏蔽中断方法:支持写flash,但中断函数和调用函数和const要全部放在内部ram + { IRQ_SOFT5_IDX, 6, 0 }, //此中断强制注册到cpu0 + { IRQ_SOFT4_IDX, 6, 1 }, //此中断强制注册到cpu1 +#if 0 //如下,SPI1使用不可屏蔽中断设置,优先级固定7 + { IRQ_SPI1_IDX, 7, 1 },//中断强制注册到cpu0/1 +#endif +#endif +#if CPU_CORE_NUM == 1 + { IRQ_SOFT5_IDX, 7, 0 }, //此中断强制注册到cpu0 + { IRQ_SOFT4_IDX, 7, 1 }, //此中断强制注册到cpu1 + { -2, -2, -2 },//如果加入了该行, 那么只有该行之前的中断注册到对应核, 其他所有中断强制注册到CPU0 +#endif + + { -1, -1, -1 }, +}; + +/*任务列表 */ +const struct task_info task_info_table[] = { + {"app_core", 15, 2048, 1024 }, + {"sys_event", 29, 512, 0 }, + {"systimer", 14, 256, 0 }, + {"sys_timer", 9, 512, 128 }, + + /* 音频服务任务(audio_server + audio_encoder) */ + {"audio_server", 16, 512, 64 }, + {"audio_encoder", 12, 384, 64 }, + + {"tcpip_thread", 16, 800, 0}, + +#ifdef CONFIG_WIFI_ENABLE + {"tasklet", 10, 1400, 0}, + {"RtmpMlmeTask", 17, 700, 0}, + {"RtmpCmdQTask", 17, 300, 0}, + {"wl_rx_irq_thread", 5, 256, 0}, +#endif + + {0, 0, 0, 0, 0}, +}; diff --git a/app/irq_task_config.h b/app/irq_task_config.h new file mode 100644 index 0000000..3d5feed --- /dev/null +++ b/app/irq_task_config.h @@ -0,0 +1,9 @@ +#ifndef IRQ_TASK_CONFIG_H +#define IRQ_TASK_CONFIG_H + +#include "system/includes.h" + +extern const struct irq_info irq_info_table[]; +extern const struct task_info task_info_table[]; + +#endif diff --git a/audio/audio_test.c b/audio/audio_test.c new file mode 100644 index 0000000..e1bc901 --- /dev/null +++ b/audio/audio_test.c @@ -0,0 +1,362 @@ +#include "app_config.h" +#include "app_log.h" +#include "system/includes.h" +#include "os/os_api.h" +#include "asm/includes.h" +#include "server/audio_server.h" +#include "generic/printf.h" +#include "audio_test.h" + +#define AUDIO_TEST_BYTES_PER_SEC \ + (AUDIO_TEST_SAMPLE_RATE * AUDIO_TEST_RECORD_CHANNEL * 2) + +#define AUDIO_TEST_RECORD_BUF_SIZE \ + (AUDIO_TEST_BYTES_PER_SEC * AUDIO_TEST_RECORD_MS / 1000) + +#define AUDIO_TEST_FRAME_SIZE \ + (AUDIO_TEST_SAMPLE_RATE / 100 * 2 * AUDIO_TEST_RECORD_CHANNEL) + +#define AUDIO_TEST_TASK_NAME "audio_test" +#define AUDIO_TEST_TASK_PRIO 6 +#define AUDIO_TEST_TASK_STK 1024 +#define AUDIO_TEST_MS_TO_TICKS(ms) ((ms) / (1000 / OS_TICKS_PER_SEC)) + +struct audio_test_hdl { + struct server *enc_server; + struct server *dec_server; + u8 *record_buf; + volatile u32 record_len; /* 已录音字节数(单声道) */ + volatile u32 play_pos; /* 已回放字节数(单声道计) */ + volatile u8 running; + volatile u8 recording; + volatile u8 playing; + u32 peak; + u32 sum_abs; + u32 samples; + int task_pid; +}; + +static struct audio_test_hdl audio_test_hdl; + +/* MIC录音数据回调: 拷贝进内存缓冲并统计峰值/均值 */ +static int audio_test_rec_fwrite(void *file, void *data, u32 len) +{ + struct audio_test_hdl *p = (struct audio_test_hdl *)file; + u32 remain, copy_len, i, n; + s16 *s; + u32 a; + + if (!p->recording || !p->record_buf) { + return len; + } + + remain = AUDIO_TEST_RECORD_BUF_SIZE - p->record_len; + if (!remain) { + return len; + } + copy_len = (len > remain) ? remain : len; + memcpy(p->record_buf + p->record_len, data, copy_len); + p->record_len += copy_len; + + s = (s16 *)data; + n = copy_len / 2; + for (i = 0; i < n; i++) { + a = (s[i] < 0) ? (u32)(-s[i]) : (u32)s[i]; + p->sum_abs += a; + if (a > p->peak) { + p->peak = a; + } + } + p->samples += n; + + return len; +} + +/* DAC回放数据回调: 单声道->双声道 */ +static int audio_test_play_fread(void *file, void *data, u32 len) +{ + struct audio_test_hdl *p = (struct audio_test_hdl *)file; + u32 mono_remain, stereo_remain, frames, i; + s16 *src, *dst; + + if (!p->playing || !p->record_buf || p->play_pos >= p->record_len) { + return 0; + } + + mono_remain = p->record_len - p->play_pos; + stereo_remain = mono_remain * 2; + if (len > stereo_remain) { + len = stereo_remain; + } + frames = len / (2 * 2); + if (!frames) { + return 0; + } + + src = (s16 *)(p->record_buf + p->play_pos); + dst = (s16 *)data; + for (i = 0; i < frames; i++) { + s16 v = src[i] * AUDIO_TEST_PLAYBACK_GAIN; + dst[i * 2] = v; + dst[i * 2 + 1] = v; + } + p->play_pos += frames * 2; + + return frames * 2 * 2; +} + +static int audio_test_play_flen(void *file) +{ + struct audio_test_hdl *p = (struct audio_test_hdl *)file; + return p->record_len * 2; +} + +static int audio_test_vfs_fclose(void *file) +{ + return 0; +} + +static const struct audio_vfs_ops audio_test_rec_vfs = { + .fwrite = audio_test_rec_fwrite, + .fclose = audio_test_vfs_fclose, +}; + +static const struct audio_vfs_ops audio_test_play_vfs = { + .fread = audio_test_play_fread, + .fclose = audio_test_vfs_fclose, + .flen = audio_test_play_flen, +}; + +static int audio_test_record_start(void) +{ + struct audio_test_hdl *p = &audio_test_hdl; + union audio_req req = {0}; + + if (!p->record_buf) { + p->record_buf = malloc(AUDIO_TEST_RECORD_BUF_SIZE); + if (!p->record_buf) { + APP_LOG("[AUDIO_TEST] malloc record buf fail: %d\n", + AUDIO_TEST_RECORD_BUF_SIZE); + return -1; + } + } + p->record_len = 0; + p->peak = 0; + p->sum_abs = 0; + p->samples = 0; + + p->enc_server = server_open("audio_server", "enc"); + if (!p->enc_server) { + APP_LOG("[AUDIO_TEST] enc server open fail\n"); + return -1; + } + p->recording = 1; + + req.enc.cmd = AUDIO_ENC_OPEN; + req.enc.channel = AUDIO_TEST_RECORD_CHANNEL; + req.enc.volume = AUDIO_TEST_ADC_GAIN; + req.enc.output_buf = NULL; + req.enc.output_buf_len = AUDIO_TEST_DMA_BUF_SIZE; + req.enc.sample_rate = AUDIO_TEST_SAMPLE_RATE; + req.enc.format = "pcm"; + req.enc.frame_size = AUDIO_TEST_FRAME_SIZE; + req.enc.sample_source = "mic"; + req.enc.channel_bit_map = BIT(AUDIO_TEST_ADC_CHANNEL_L); + req.enc.vfs_ops = &audio_test_rec_vfs; + req.enc.file = (FILE *)p; + req.enc.msec = 0; + + if (server_request(p->enc_server, AUDIO_REQ_ENC, &req)) { + APP_LOG("[AUDIO_TEST] enc open fail\n"); + goto __err; + } + req.enc.cmd = AUDIO_ENC_START; + if (server_request(p->enc_server, AUDIO_REQ_ENC, &req)) { + APP_LOG("[AUDIO_TEST] enc start fail\n"); + goto __err; + } + return 0; + +__err: + p->recording = 0; + server_close(p->enc_server); + p->enc_server = NULL; + return -1; +} + +static void audio_test_record_stop(void) +{ + struct audio_test_hdl *p = &audio_test_hdl; + union audio_req req = {0}; + + if (p->enc_server) { + req.enc.cmd = AUDIO_ENC_STOP; + server_request(p->enc_server, AUDIO_REQ_ENC, &req); + server_close(p->enc_server); + p->enc_server = NULL; + } + p->recording = 0; +} + +static int audio_test_play_start(void) +{ + struct audio_test_hdl *p = &audio_test_hdl; + union audio_req req = {0}; + + p->play_pos = 0; + p->dec_server = server_open("audio_server", "dec"); + if (!p->dec_server) { + APP_LOG("[AUDIO_TEST] dec server open fail\n"); + return -1; + } + p->playing = 1; + + req.dec.cmd = AUDIO_DEC_OPEN; + req.dec.channel = AUDIO_TEST_PLAYBACK_CHANNEL; + req.dec.volume = AUDIO_TEST_DAC_VOLUME; + req.dec.output_buf = NULL; + req.dec.output_buf_len = AUDIO_TEST_DMA_BUF_SIZE; + req.dec.sample_rate = AUDIO_TEST_SAMPLE_RATE; + req.dec.dec_type = "pcm"; + req.dec.sample_source = "dac"; + req.dec.vfs_ops = &audio_test_play_vfs; + req.dec.file = (FILE *)p; + req.dec.priority = 1; + + if (server_request(p->dec_server, AUDIO_REQ_DEC, &req)) { + APP_LOG("[AUDIO_TEST] dec open fail\n"); + goto __err; + } + req.dec.cmd = AUDIO_DEC_START; + if (server_request(p->dec_server, AUDIO_REQ_DEC, &req)) { + APP_LOG("[AUDIO_TEST] dec start fail\n"); + goto __err; + } + return 0; + +__err: + p->playing = 0; + server_close(p->dec_server); + p->dec_server = NULL; + return -1; +} + +static void audio_test_play_stop(void) +{ + struct audio_test_hdl *p = &audio_test_hdl; + union audio_req req = {0}; + + if (p->dec_server) { + req.dec.cmd = AUDIO_DEC_STOP; + server_request(p->dec_server, AUDIO_REQ_DEC, &req); + server_close(p->dec_server); + p->dec_server = NULL; + } + p->playing = 0; +} + +/* 显式驱动功放SD脚 */ +static void audio_test_amp_set(u8 enable) +{ + u8 level = enable ? AUDIO_TEST_AMP_ENABLE_LEVEL : !AUDIO_TEST_AMP_ENABLE_LEVEL; + gpio_direction_output(AUDIO_TEST_AMP_PORT, level); + APP_LOG("[AUDIO_TEST] amp SD=PA0 -> %s\n", level ? "HIGH" : "LOW"); +} + +static void audio_test_task(void *priv) +{ + struct audio_test_hdl *p = (struct audio_test_hdl *)priv; + u32 timeout; + + APP_LOG("[AUDIO_TEST] ===== audio test start =====\n"); + APP_LOG("[AUDIO_TEST] sample=%dHz record=%dms adc_gain=%d dac_vol=%d ch=%d\n", + AUDIO_TEST_SAMPLE_RATE, AUDIO_TEST_RECORD_MS, + AUDIO_TEST_ADC_GAIN, AUDIO_TEST_DAC_VOLUME, + AUDIO_TEST_ADC_CHANNEL_L); + + audio_test_amp_set(0); /* 测试开始先静音功放, 防止上电杂音 */ + + /* 1. MIC 录音 */ + if (audio_test_record_start()) { + goto __exit; + } + APP_LOG("[AUDIO_TEST] recording, please speak to MIC...\n"); + timeout = AUDIO_TEST_MS_TO_TICKS(AUDIO_TEST_RECORD_MS); + while (timeout--) { + os_time_dly(1); + if (p->record_len >= AUDIO_TEST_RECORD_BUF_SIZE) { + break; + } + } + audio_test_record_stop(); + + APP_LOG("[AUDIO_TEST] record done: %d bytes, peak=%d, avg=%d\n", + p->record_len, p->peak, + p->samples ? (u32)(p->sum_abs / p->samples) : 0); + if (p->peak >= AUDIO_TEST_PEAK_PASS_THRESHOLD) { + APP_LOG("[AUDIO_TEST] MIC result: PASS (peak=%d)\n", p->peak); + } else { + APP_LOG("[AUDIO_TEST] MIC result: WEAK/FAIL (peak=%d < %d), check mic circuit\n", + p->peak, AUDIO_TEST_PEAK_PASS_THRESHOLD); + } + + /* 2. 回放录音到功放 */ + if (p->record_len < AUDIO_TEST_FRAME_SIZE * 2) { + APP_LOG("[AUDIO_TEST] record too short, skip playback\n"); + goto __exit; + } + if (audio_test_play_start()) { + goto __exit; + } + audio_test_amp_set(1); /* 使能功放 */ + APP_LOG("[AUDIO_TEST] playing, listen speaker...\n"); + timeout = AUDIO_TEST_MS_TO_TICKS(AUDIO_TEST_RECORD_MS) + AUDIO_TEST_MS_TO_TICKS(2000); + while (timeout--) { + os_time_dly(1); + if (p->play_pos >= p->record_len) { + break; + } + } + audio_test_play_stop(); + audio_test_amp_set(0); /* 回放结束静音功放 */ + APP_LOG("[AUDIO_TEST] playback done: %d bytes\n", p->play_pos); + APP_LOG("[AUDIO_TEST] ===== audio test finish =====\n"); + +__exit: + p->running = 0; + p->task_pid = 0; +} + +int audio_test_start(void) +{ + struct audio_test_hdl *p = &audio_test_hdl; + + if (p->running || p->task_pid) { + APP_LOG("[AUDIO_TEST] already running\n"); + return -1; + } + p->running = 1; + if (thread_fork(AUDIO_TEST_TASK_NAME, AUDIO_TEST_TASK_PRIO, + AUDIO_TEST_TASK_STK, 0, &p->task_pid, + audio_test_task, p) != OS_NO_ERR) { + p->running = 0; + p->task_pid = 0; + APP_LOG("[AUDIO_TEST] task fork fail\n"); + return -1; + } + return 0; +} + +int audio_test_stop(void) +{ + struct audio_test_hdl *p = &audio_test_hdl; + + audio_test_play_stop(); + audio_test_record_stop(); + if (p->task_pid) { + thread_kill(&p->task_pid, KILL_WAIT); + p->task_pid = 0; + } + p->running = 0; + return 0; +} diff --git a/audio/audio_test.h b/audio/audio_test.h new file mode 100644 index 0000000..651bc28 --- /dev/null +++ b/audio/audio_test.h @@ -0,0 +1,34 @@ +#ifndef AUDIO_TEST_H +#define AUDIO_TEST_H + +/* ==================== 功放控制(NS4150B) ==================== */ +/* 测试时由本模块直接驱动功放SD脚, 以便验证功放通路 */ +#define AUDIO_TEST_AMP_PORT IO_PORTA_00 /* NS4150B SD脚 -> PA0 */ +#define AUDIO_TEST_AMP_ENABLE_LEVEL 1 /* 实测确认: NS4150B SD 高电平使能功放(低电平静音) */ + +/* ==================== 测试参数 ==================== */ +#define AUDIO_TEST_SAMPLE_RATE 16000 /* 采样率 */ +#define AUDIO_TEST_RECORD_CHANNEL 1 /* MIC 录音单声道 */ +#define AUDIO_TEST_PLAYBACK_CHANNEL 2 /* DAC 播放双声道(单声道复制成左右) */ +#define AUDIO_TEST_RECORD_MS 5000 /* 录音时长 ms */ +#define AUDIO_TEST_ADC_GAIN 75 /* MIC 模拟增益 0-100 */ +#define AUDIO_TEST_DAC_VOLUME 85 /* 播放音量 0-100 */ +#define AUDIO_TEST_PLAYBACK_GAIN 1 /* 回放数字增益倍数 */ +#define AUDIO_TEST_DMA_BUF_SIZE (4 * 1024) /* 编解码DMA缓冲 */ +#define AUDIO_TEST_PEAK_PASS_THRESHOLD 2000 /* 峰值>=此值判 MIC PASS(可调) */ + +/* + * 逻辑ADC通道号: + * MIC1 -> 1, MIC2 -> 2, MIC3 -> 3 (参考官方 CONFIG_AUDIO_ADC_CHANNEL_L/R) + * 需与 board.c 中 adc_platform_data.mic_channel 对应的物理通道一致 + */ +#define AUDIO_TEST_ADC_CHANNEL_L 1 + +/* ==================== 接口 ==================== */ +/* 异步启动完整测试(MIC录音->回放), 成功返回0 */ +int audio_test_start(void); + +/* 停止/复位测试 */ +int audio_test_stop(void); + +#endif diff --git a/board/wl82/JL-AIBT-SoundBox.cbp b/board/wl82/JL-AIBT-SoundBox.cbp new file mode 100644 index 0000000..a0ed79c --- /dev/null +++ b/board/wl82/JL-AIBT-SoundBox.cbp @@ -0,0 +1,343 @@ + + + + + + diff --git a/board/wl82/Makefile b/board/wl82/Makefile new file mode 100644 index 0000000..c650260 --- /dev/null +++ b/board/wl82/Makefile @@ -0,0 +1,433 @@ + +# make 编译并下载 +# make VERBOSE=1 显示编译详细过程 +# make clean 清除编译临时文件 +# +# 注意: Linux 下编译方式: +# 1. 从 http://pkgman.jieliapp.com/doc/all 处找到下载链接 +# 2. 下载后,解压到 /opt/jieli 目录下,保证 +# /opt/jieli/common/bin/clang 存在(注意目录层次) +# 3. 确认 ulimit -n 的结果足够大(建议大于8096),否则链接可能会因为打开文件太多而失败 +# 可以通过 ulimit -n 8096 来设置一个较大的值 +# + +# 工具路径设置 +ifeq ($(OS), Windows_NT) +# Windows 下工具链位置 +TOOL_DIR := C:/JL/pi32/bin +CC := clang.exe +CXX := clang.exe +LD := pi32v2-lto-wrapper.exe +AR := llvm-ar.exe +MKDIR := mkdir_win -p +RM := rm -rf + +SYS_LIB_DIR := +SYS_INC_DIR := +EXT_CFLAGS := # Windows 下不需要 -D__SHELL__ +export PATH:=$(TOOL_DIR);$(PATH) + +## 后处理脚本 +FIXBAT := ../../../../tools/utils/fixbat.exe # 用于处理 utf8->gbk 编码问题 +POST_SCRIPT := ../../../../cpu/wl82/tools/download.bat +RUN_POST_SCRIPT := ..\..\..\..\cpu\wl82\tools\download.bat +else +# Linux 下工具链位置 +TOOL_DIR := /opt/jieli/pi32v2/bin +CC := clang +CXX := clang +LD := lto-wrapper +AR := lto-ar +MKDIR := mkdir -p +RM := rm -rf +export OBJDUMP := $(TOOL_DIR)/objdump +export OBJCOPY := $(TOOL_DIR)/objcopy +export OBJSIZEDUMP := $(TOOL_DIR)/objsizedump + +SYS_LIB_DIR := $(TOOL_DIR)/../lib/r3 +SYS_INC_DIR := $(TOOL_DIR)/../include +EXT_CFLAGS := -D__SHELL__ # Linux 下需要这个保证正确处理 download.c +export PATH:=$(TOOL_DIR):$(PATH) + +## 后处理脚本 +FIXBAT := touch # Linux下不需要处理 bat 编码问题 +POST_SCRIPT := ../../../../cpu/wl82/tools/download.sh +RUN_POST_SCRIPT := bash $(POST_SCRIPT) +endif + +CC := $(TOOL_DIR)/$(CC) +CXX := $(TOOL_DIR)/$(CXX) +LD := $(TOOL_DIR)/$(LD) +AR := $(TOOL_DIR)/$(AR) +# 输出文件设置 +OUT_ELF := ../../../../cpu/wl82/tools/sdk.elf +OBJ_FILE := $(OUT_ELF).objs.txt +# 编译路径设置 +BUILD_DIR := objs +# 工程路径前缀 +ROOT_PREFIX := ../../../.. + +# 编译参数设置 +CFLAGS := \ + -target pi32v2 \ + -integrated-as \ + -mcpu=r3 \ + -mfprev1 \ + -Wuninitialized \ + -Wno-invalid-noreturn \ + -fno-common \ + -integrated-as \ + -Oz \ + -g \ + -flto \ + -fallow-pointer-null \ + -fprefer-gnu-section \ + -femulated-tls \ + -Wno-shift-negative-value \ + -Wframe-larger-than=2560 \ + -mllvm -pi32v2-large-program=true \ + -fms-extensions \ + -w \ + -fno-unwind-tables \ + -ffunction-sections \ + -fdata-sections \ + -fmessage-length=0 \ + + +# C++额外的编译参数 +CXXFLAGS := \ + -std=gnu++14 \ + -fno-exceptions \ + -fno-rtti \ + + +# 宏定义 +DEFINES := \ + -DSUPPORT_MS_EXTENSIONS \ + -DCONFIG_RELEASE_ENABLE \ + -DCONFIG_CPU_WL82 \ + -DCONFIG_FREE_RTOS_ENABLE \ + -DCONFIG_THREAD_ENABLE \ + -DCONFIG_AUDIO_ONCHIP \ + -DCONFIG_AUDIO_ENABLE \ + -DCONFIG_PCM_DEC_ENABLE \ + -DCONFIG_PCM_ENC_ENABLE \ + -D__GCC_PI32V2__ \ + -DCONFIG_NEW_ECC_ENABLE \ + -DCONFIG_EQ_SUPPORT_ASYNC \ + -DEQ_CORE_V1 \ + -DCONFIG_SFC_ENABLE \ + -DCONFIG_NET_ENABLE=1 \ + -DEVENT_HANDLER_NUM_CONFIG=2 \ + -DEVENT_TOUCH_ENABLE_CONFIG=0 \ + -DEVENT_POOL_SIZE_CONFIG=256 \ + -DCONFIG_EVENT_KEY_MAP_ENABLE=0 \ + -DTIMER_POOL_NUM_CONFIG=15 \ + -DAPP_ASYNC_POOL_NUM_CONFIG=0 \ + -DVFS_ENABLE=1 \ + -DUSE_SDFILE_NEW=1 \ + -DSDFILE_STORAGE=1 \ + -DVFS_FILE_POOL_NUM_CONFIG=8 \ + -DVM_MAX_PAGE_ALIGN_SIZE_CONFIG=64*1024 \ + -DVM_MAX_SECTOR_ALIGN_SIZE_CONFIG=64*1024 \ + -DVM_ITEM_MAX_NUM=256 \ + -DCONFIG_UPDATA_ENABLE \ + -DCONFIG_OTA_UPDATA_ENABLE \ + -DCONFIG_ITEM_FORMAT_VM \ + -D_XOPEN_SOURCE=700 \ + -D_GNU_SOURCE \ + -D__ELF__ \ + + +DEFINES += $(EXT_CFLAGS) # 额外的一些定义 + +# 头文件搜索路径 +INCLUDES := \ + -I../../../../include_lib/c++ \ + -I../../../../include_lib/c++/include \ + -I../../../../include_lib/newlib/include \ + -I../../../../include_lib/c++/simple_pthread \ + -I../../../../include_lib \ + -I../../../../include_lib/driver \ + -I../../../../include_lib/driver/device \ + -I../../../../include_lib/driver/cpu/wl82 \ + -I../../../../include_lib/system \ + -I../../../../include_lib/system/generic \ + -I../../../../include_lib/btctrler \ + -I../../../../include_lib/btctrler/port/wl82 \ + -I../../../../include_lib/update \ + -I../../../../include_lib/btstack/third_party/common \ + -I../../../../include_lib/btstack/third_party/rcsp \ + -I../../../../include_lib/utils \ + -I../../../../include_lib/utils/syscfg \ + -I../../../../include_lib/utils/event \ + -I../../../../include_lib/media \ + -I../../../../include_lib/media/cpu/wl82 \ + -I../../../../include_lib/net \ + -I../../../../include_lib/net/mbedtls_3_4_0 \ + -I../../../../include_lib/net/lwip_2_2_0/lwip/src/include \ + -I../../../../include_lib/net/lwip_2_2_0/lwip/src/include/lwip \ + -I../../../../include_lib/net/lwip_2_2_0/lwip/port \ + -I../../../../include_lib/net/lwip_2_2_0/lwip/app \ + -I../../../../apps/common \ + -I../../../../apps/common/include \ + -I../../../../apps \ + -I../../../../apps/JL-AIBT-SoundBox/app \ + -I../../../../apps/JL-AIBT-SoundBox/audio \ + -I../../../../apps/JL-AIBT-SoundBox/led \ + -I../../../../apps/JL-AIBT-SoundBox/radar \ + -I../../../../apps/JL-AIBT-SoundBox/wifi \ + -I../../../../apps/JL-AIBT-SoundBox/display \ + -I../../../../apps/JL-AIBT-SoundBox/mqtt \ + -I../../../../include_lib/system/os \ + + +# 需要编译的 .c 文件 +c_SRC_FILES := \ + ../../../../apps/common/c++/cpp_run_init.c \ + ../../../../apps/common/config/log_config/lib_driver_config.c \ + ../../../../apps/common/config/log_config/lib_system_config.c \ + ../../../../apps/common/config/log_config/lib_update_config.c \ + ../../../../apps/common/config/user_cfg.c \ + ../../../../apps/common/debug/debug.c \ + ../../../../apps/common/debug/debug_user.c \ + ../../../../apps/common/net/assign_macaddr.c \ + ../../../../apps/common/net/config_network.c \ + ../../../../apps/common/net/platform_cfg.c \ + ../../../../apps/common/net/wifi_conf.c \ + ../../../../apps/common/system/init.c \ + ../../../../apps/common/system/system_reset_reason.c \ + ../../../../apps/common/system/version.c \ + ../../../../apps/common/update/update.c \ + ../../../../apps/common/audio_music/audio_config.c \ + ../../../../apps/JL-AIBT-SoundBox/app/app_main.c \ + ../../../../apps/JL-AIBT-SoundBox/app/irq_task_config.c \ + ../../../../apps/JL-AIBT-SoundBox/led/led.c \ + ../../../../apps/JL-AIBT-SoundBox/radar/radar_uart.c \ + ../../../../apps/JL-AIBT-SoundBox/radar/r60abd1.c \ + ../../../../apps/JL-AIBT-SoundBox/radar/radar_manager.c \ + ../../../../apps/JL-AIBT-SoundBox/radar/radar_data_service.c \ + ../../../../apps/JL-AIBT-SoundBox/radar/radar_command_service.c \ + ../../../../apps/JL-AIBT-SoundBox/radar/radar_report_service.c \ + ../../../../apps/JL-AIBT-SoundBox/wifi/wifi_sta.c \ + ../../../../apps/JL-AIBT-SoundBox/wifi/wifi_manager.c \ + ../../../../apps/JL-AIBT-SoundBox/audio/audio_test.c \ + ../../../../apps/JL-AIBT-SoundBox/mqtt/mqtt_config.c \ + ../../../../apps/JL-AIBT-SoundBox/mqtt/mqtt_manager.c \ + ../../../../apps/JL-AIBT-SoundBox/mqtt/mqtt_protocol.c \ + ../../../../apps/JL-AIBT-SoundBox/board/wl82/board.c \ + ../../../../cpu/wl82/debug.c \ + ../../../../cpu/wl82/iic.c \ + ../../../../cpu/wl82/key/adc_api.c \ + ../../../../cpu/wl82/key/ctmu.c \ + ../../../../cpu/wl82/key/irflt.c \ + ../../../../cpu/wl82/key/plcnt.c \ + ../../../../cpu/wl82/key/rdec.c \ + ../../../../cpu/wl82/port_waked_up.c \ + ../../../../cpu/wl82/setup.c \ + + +# 需要编译的 .S 文件 +S_SRC_FILES := \ + ../../../../include_lib/btctrler/version.z.S \ + ../../../../include_lib/btstack/version.z.S \ + ../../../../include_lib/driver/version.z.S \ + ../../../../include_lib/media/version.z.S \ + ../../../../include_lib/net/version.z.S \ + ../../../../include_lib/server/version.z.S \ + ../../../../include_lib/system/version.z.S \ + ../../../../include_lib/update/version.z.S \ + ../../../../include_lib/utils/version.z.S \ + ../../../../lib/net/version.z.S \ + ../../../../lib/server/version.z.S \ + ../../../../lib/utils/version.z.S \ + + +# 需要编译的 .s 文件 +s_SRC_FILES := + + +# 需要编译的 .cpp 文件 +cpp_SRC_FILES := \ + ../../../../apps/common/c++/cxx_runtime.cpp \ + + +# 需要编译的 .cc 文件 +cc_SRC_FILES := + + +# 需要编译的 .cxx 文件 +cxx_SRC_FILES := + + +# 链接参数 +LFLAGS := \ + --plugin-opt=-pi32v2-always-use-itblock=false \ + --plugin-opt=-enable-ipra=true \ + --plugin-opt=-pi32v2-merge-max-offset=4096 \ + --plugin-opt=-pi32v2-enable-simd=true \ + --plugin-opt=mcpu=r3 \ + --plugin-opt=-global-merge-on-const \ + --plugin-opt=-inline-threshold=5 \ + --plugin-opt=-inline-max-allocated-size=32 \ + --plugin-opt=-inline-normal-into-special-section=true \ + --plugin-opt=-dont-used-symbol-list=malloc,free,sprintf,printf,puts,putchar \ + --plugin-opt=save-temps \ + --plugin-opt=-pi32v2-enable-rep-memop \ + --plugin-opt=-emulated-tls \ + --sort-common \ + --plugin-opt=-used-symbol-file=../../../../cpu/wl82/sdk_used_list.used \ + --plugin-opt=-enable-movable-region=true \ + --plugin-opt=-movable-region-section-prefix=.movable.slot. \ + --plugin-opt=-movable-region-stub-section-prefix=.movable.stub. \ + --plugin-opt=-movable-region-prefix=.movable.region. \ + --plugin-opt=-movable-region-stub-prefix=__movable_stub_ \ + --plugin-opt=-movable-region-stub-swi-number=-2 \ + --plugin-opt=-movable-region-map-file-list=../../../../apps/common/movable/funcname.txt \ + --plugin-opt=-movable-region-section-map-file-list=../../../../apps/common/movable/section.txt \ + --plugin-opt=-movable-region-exclude-func-file-list=../../../../apps/common/movable/exclude.txt \ + --plugin-opt=-pi32v2-large-program=true \ + --start-group \ + ../../../../include_lib/newlib/pi32v2-lib/libm.a \ + ../../../../include_lib/newlib/pi32v2-lib/libc.a \ + ../../../../include_lib/newlib/pi32v2-lib/libcompiler_rt.a \ + --start-group \ + ../../../../cpu/wl82/liba/cpu.a \ + ../../../../cpu/wl82/liba/event.a \ + ../../../../cpu/wl82/liba/system.a \ + ../../../../cpu/wl82/liba/cfg_tool.a \ + ../../../../cpu/wl82/liba/fs.a \ + ../../../../cpu/wl82/liba/common_lib.a \ + ../../../../cpu/wl82/liba/update.a \ + ../../../../cpu/wl82/liba/wl_rf_common.a \ + ../../../../cpu/wl82/liba/hsm.a \ + ../../../../cpu/wl82/liba/wpasupplicant.a \ + ../../../../cpu/wl82/liba/audio_server.a \ + ../../../../cpu/wl82/liba/media_app.a \ + ../../../../cpu/wl82/liba/libmbedtls_3_4_0.a \ + ../../../../cpu/wl82/liba/lib_mqtt.a \ + ../../../../cpu/wl82/liba/json.a \ + ../../../../cpu/wl82/liba/lwip_2_2_0_sfc.a \ + ../../../../cpu/wl82/liba/wl_wifi_sfc.a \ + --end-group \ + ../../../../include_lib/c++/libstdc++/libemutls.a \ + ../../../../include_lib/c++/libstdc++/libc++.a \ + ../../../../include_lib/c++/libstdc++/libc++abi.a \ + -T../../../../cpu/wl82/sdk.ld \ + -M=../../../../cpu/wl82/tools/sdk.map \ + --end-group \ + --plugin-opt=mcpu=r3 \ + --plugin-opt=-mattr=+fprev1 \ + + + +c_OBJS := $(c_SRC_FILES:%.c=%.c.o) +S_OBJS := $(S_SRC_FILES:%.S=%.S.o) +s_OBJS := $(s_SRC_FILES:%.s=%.s.o) +cpp_OBJS := $(cpp_SRC_FILES:%.cpp=%.cpp.o) +cxx_OBJS := $(cxx_SRC_FILES:%.cxx=%.cxx.o) +cc_OBJS := $(cc_SRC_FILES:%.cc=%.cc.o) + +OBJS := $(c_OBJS) $(S_OBJS) $(s_OBJS) $(cpp_OBJS) $(cxx_OBJS) $(cc_OBJS) +DEP_FILES := $(OBJS:%.o=%.d) + + +OBJS := $(addprefix $(BUILD_DIR)/, $(OBJS:$(ROOT_PREFIX)/%=%)) +DEP_FILES := $(addprefix $(BUILD_DIR)/, $(DEP_FILES:$(ROOT_PREFIX)/%=%)) + + +VERBOSE ?= 0 +ifeq ($(VERBOSE), 1) +QUITE := +else +QUITE := @ +endif + +# 一些旧的 make 不支持 file 函数,需要 make 的时候指定 LINK_AT=0 make +LINK_AT ?= 1 + +# 表示下面的不是一个文件的名字,无论是否存在 all, clean, pre_build 这样的文件 +# 还是要执行命令 +# see: https://www.gnu.org/software/make/manual/html_node/Phony-Targets.html +.PHONY: all clean pre_build + +# 不要使用 make 预设置的规则 +# see: https://www.gnu.org/software/make/manual/html_node/Suffix-Rules.html +.SUFFIXES: + +all: pre_build $(OUT_ELF) + $(info +POST-BUILD) + $(QUITE) $(RUN_POST_SCRIPT) sdk + +pre_build: + $(info +PRE-BUILD) + $(QUITE) $(CC) $(CFLAGS) $(DEFINES) $(INCLUDES) -D__LD__ -E -P ../../../../cpu/wl82/sdk_used_list.c -o ../../../../cpu/wl82/sdk_used_list.used + $(QUITE) $(CC) $(CFLAGS) $(DEFINES) $(INCLUDES) -D__LD__ -E -P ../../../../apps/common/movable/section.c -o ../../../../apps/common/movable/section.txt + $(QUITE) $(CC) $(CFLAGS) $(DEFINES) $(INCLUDES) -D__LD__ -E -P ../../../../cpu/wl82/sdk_ld.c -o ../../../../cpu/wl82/sdk.ld + $(QUITE) $(CC) $(CFLAGS) $(DEFINES) $(INCLUDES) -D__LD__ -E -P ../../../../cpu/wl82/tools/download.c -o $(POST_SCRIPT) + $(QUITE) $(FIXBAT) $(POST_SCRIPT) + $(QUITE) $(CC) $(CFLAGS) $(DEFINES) $(INCLUDES) -D__LD__ -E -P ../../../../cpu/wl82/tools/isd_config_rule.c -o ../../../../cpu/wl82/tools/isd_config.ini + $(QUITE) $(CC) $(CFLAGS) $(DEFINES) $(INCLUDES) -D__LD__ -E -P ../../../../cpu/wl82/tools/isd_config_rule_loader.c -o ../../../../cpu/wl82/tools/isd_config_loader.ini + +clean: + $(QUITE) $(RM) $(OUT_ELF) + $(QUITE) $(RM) $(BUILD_DIR) + + +# sdk.ld / sdk_used_list.used 等文件由 pre_build 动态生成。 +# +# 顶层 make 可能启用并行编译。原来的: +# all: pre_build $(OUT_ELF) +# 只表示二者都是 all 的前置条件,并不保证 pre_build +# 一定先于 $(OUT_ELF) 的链接命令完成。 +# +# 显式让 ELF 依赖 pre_build,确保链接器读取 sdk.ld 前, +# pre_build 已经完整生成链接脚本。 +$(OUT_ELF): pre_build + + +ifeq ($(LINK_AT), 1) +$(OUT_ELF): $(OBJS) + $(info +LINK $@) + $(shell $(MKDIR) $(@D)) + $(file >$(OBJ_FILE), $(OBJS)) + $(QUITE) $(LD) -o $(OUT_ELF) @$(OBJ_FILE) $(LFLAGS) $(LIBPATHS) $(LIBS) +else +$(OUT_ELF): $(OBJS) + $(info +LINK $@) + $(shell $(MKDIR) $(@D)) + $(QUITE) $(LD) -o $(OUT_ELF) $(OBJS) $(LFLAGS) $(LIBPATHS) $(LIBS) +endif + + +$(BUILD_DIR)/%.c.o : $(ROOT_PREFIX)/%.c + $(info +CC $<) + $(QUITE) $(MKDIR) $(@D) + $(QUITE) $(CC) $(CFLAGS) $(DEFINES) $(INCLUDES) -MMD -MF $(@:.o=.d) -c $< -o $@ + +$(BUILD_DIR)/%.S.o : $(ROOT_PREFIX)/%.S + $(info +AS $<) + $(QUITE) $(MKDIR) $(@D) + $(QUITE) $(CC) $(CFLAGS) $(DEFINES) $(INCLUDES) -MMD -MF $(@:.o=.d) -c $< -o $@ + +$(BUILD_DIR)/%.s.o : $(ROOT_PREFIX)/%.s + $(info +AS $<) + $(QUITE) $(MKDIR) $(@D) + $(QUITE) $(CC) $(CFLAGS) $(DEFINES) $(INCLUDES) -MMD -MF $(@:.o=.d) -c $< -o $@ + +$(BUILD_DIR)/%.cpp.o : $(ROOT_PREFIX)/%.cpp + $(info +CXX $<) + $(QUITE) $(MKDIR) $(@D) + $(QUITE) $(CXX) $(CXXFLAGS) $(CFLAGS) $(DEFINES) $(INCLUDES) -MMD -MF $(@:.o=.d) -c $< -o $@ + +$(BUILD_DIR)/%.cxx.o : $(ROOT_PREFIX)/%.cxx + $(info +CXX $<) + $(QUITE) $(MKDIR) $(@D) + $(QUITE) $(CXX) $(CXXFLAGS) $(CFLAGS) $(DEFINES) $(INCLUDES) -MMD -MF $(@:.o=.d) -c $< -o $@ + +$(BUILD_DIR)/%.cc.o : $(ROOT_PREFIX)/%.cc + $(info +CXX $<) + $(QUITE) $(MKDIR) $(@D) + $(QUITE) $(CXX) $(CXXFLAGS) $(CFLAGS) $(DEFINES) $(INCLUDES) -MMD -MF $(@:.o=.d) -c $< -o $@ + +-include $(DEP_FILES) diff --git a/board/wl82/board.c b/board/wl82/board.c new file mode 100644 index 0000000..ff0688f --- /dev/null +++ b/board/wl82/board.c @@ -0,0 +1,165 @@ +#include "app_config.h" + +#include "system/includes.h" +#include "device/includes.h" +#include "asm/includes.h" +#include "wifi/wifi_connect.h" +#include "asm/spi.h" +#include "server/audio_dev.h" + +/* Wi-Fi RF 校准参数 */ +const struct wifi_calibration_param wifi_calibration_param = { + .xosc_l = 0x0b, + .xosc_r = 0x0b, + + .pa_trim_data = {1, 7, 4, 7, 11, 1, 7}, + + .mcs_dgain = {50,50,50,50,72,72,85,80,64,64,62,52,72,90,80,64,64,64,50,43} +}; + + +//灯带配置 +PWM_PLATFORM_DATA_BEGIN(lamp_warm_pwm_data)/* PC1:暖光 */ + .port = IO_PORTC_01, + .pwm_ch = PWM_TIMER2_OPCH2, + .freq = 5000, + .duty = 100, + .point_bit = 1, +PWM_PLATFORM_DATA_END() + +PWM_PLATFORM_DATA_BEGIN(lamp_cool_pwm_data)/* PC2:冷光 */ + .port = IO_PORTC_02, + .pwm_ch = PWM_TIMER3_OPCH3, + .freq = 5000, + .duty = 50, + .point_bit = 1, +PWM_PLATFORM_DATA_END() + + +//显示器配置 +SPI2_PLATFORM_DATA_BEGIN(spi2_data) + .clk = 1000000, + .mode = SPI_1WIRE_MODE, + .port = 'C', + .attr = SPI_SCLK_L_UPL_SMPH | SPI_UNIDIR_MODE, +SPI2_PLATFORM_DATA_END() + + +/* debug串口配置 */ +UART2_PLATFORM_DATA_BEGIN(uart2_data) + .baudrate = 1000000, + .port = PORT_REMAP, + .output_channel = OUTPUT_CHANNEL0, + .tx_pin = IO_PORTA_10, + .rx_pin = -1, + .max_continue_recv_cnt = 1024, + .idle_sys_clk_cnt = 500000, + .clk_src = PLL_48M, + .flags = UART_DEBUG, +UART2_PLATFORM_DATA_END(); + +/* 音频配置 MIC1(PH8=+ / PH9=-) 差分接法, 功放 NS4150B(SD脚->PA0) */ +static const struct dac_platform_data dac_data = { + .pa_auto_mute = 0, /* 测试中由 audio_test 直接控制功放SD脚(PA0), 关掉SDK自动静音 */ + .pa_mute_port = 0xff, /* 不使用SDK静音机制 */ + .pa_mute_value = 0, + .differ_output = 0, /* 单端输出 */ + .hw_channel = 0x03, /* BIT(0)=DACL | BIT(1)=DACR 双通道都开, 兼容功放接任意一路 */ + .ch_num = 2, /* 数字通道数(与回放双声道对应) */ + .vcm_init_delay_ms = 1000, +}; + +//设备注册 +REGISTER_DEVICES(device_table) = { + {"uart2", &uart_dev_ops, (void *)&uart2_data }, + {"rtc", &rtc_dev_ops, NULL}, + {"spi2", &spi_dev_ops, (void *)&spi2_data }, + //{"audio", &audio_dev_ops, (void *)&audio_data }, + {"lamp_warm_pwm",&pwm_dev_ops,(void *)&lamp_warm_pwm_data},//warm + {"lamp_cool_pwm",&pwm_dev_ops,(void *)&lamp_cool_pwm_data},//cool +}; + +static const struct adc_platform_data adc_data = { + .mic_channel = LADC_CH_MIC1_P_N, /* MIC1 差分: PH8=正 PH9=负 */ + .linein_channel = 0, + .mic_ch_num = 1, + .linein_ch_num = 0, + .all_channel_open = 1, + .isel = 2, + .dump_num = 320, +}; + +static const struct audio_pf_data audio_pf_d = { + .adc_pf_data = &adc_data, + .dac_pf_data = &dac_data, +}; + +static const struct audio_platform_data audio_data = { + .private_data = (void *)&audio_pf_d, +}; + +/* 电源配置 */ +static const struct low_power_param power_param = { + .config = TCFG_LOWPOWER_LOWPOWER_SEL, //系统休眠 + .btosc_disable = TCFG_LOWPOWER_BTOSC_DISABLE, //进入低功耗时BTOSC是否保持 + .vddiom_lev = TCFG_LOWPOWER_VDDIOM_LEVEL, //强VDDIO等级,可选:2.8V 2.9V 3.0V 3.1V 3.2V 3.3V 3.4V 3.5V + .vddiow_lev = TCFG_LOWPOWER_VDDIOW_LEVEL, //弱VDDIO等级,可选:2.1V 2.4V 2.8V 3.2V + .vdc14_dcdc = TRUE, //打开内部1.4VDCDC,关闭则用外部 + .vdc14_lev = VDC14_VOL_SEL_LEVEL, //VDD1.4V配置 + .sysvdd_lev = SYSVDD_VOL_SEL_LEVEL, //内核、sdram电压配置 + .vlvd_enable = TRUE, //TRUE电压复位使能 + .vlvd_value = VLVD_SEL_25V, //低电压复位电压值 +}; + +/* 复位配置 */ +#define LONG_PRESS_RESET_IO IO_PORTB_01 + +static const struct long_press lpres_port = { + .enable = TRUE, + .use_sec4 = TRUE, + .edge = FALLING_EDGE, + .iomap = LONG_PRESS_RESET_IO, +}; + +/* 官方示例中的保留唤醒参数。*/ +static const struct sub_wakeup sub_wkup = { + .attribute = BLUETOOTH_RESUME, +}; + +static const struct charge_wakeup charge_wkup = { + .attribute = BLUETOOTH_RESUME, +}; + +/* 唤醒/长按复位参数 */ +static const struct wakeup_param wk_param = { + .port[0] = NULL, + .sub = &sub_wkup, + .charge = &charge_wkup, + .lpres = &lpres_port, +}; + + +#ifdef CONFIG_DEBUG_ENABLE +void debug_uart_init() +{ + uart_init(&uart2_data); +} +#endif + +void board_early_init() +{ + dac_early_init(0, dac_data.differ_output ? (dac_data.ch_num > 1 ? 0xf : 0x3) : dac_data.hw_channel, 1000); + devices_init(); +} + +static void board_power_init(void) +{ + + power_init(&power_param); //电源模块初始化 + power_wakeup_init(&wk_param);//复位模块初始化 +} + +void board_init() +{ + board_power_init(); +} \ No newline at end of file diff --git a/board/wl82/objs/apps/JL-AIBT-SoundBox/app/app_main.c.d b/board/wl82/objs/apps/JL-AIBT-SoundBox/app/app_main.c.d new file mode 100644 index 0000000..717e14a --- /dev/null +++ b/board/wl82/objs/apps/JL-AIBT-SoundBox/app/app_main.c.d @@ -0,0 +1,72 @@ +objs/apps/JL-AIBT-SoundBox/app/app_main.c.o: \ + ../../../../apps/JL-AIBT-SoundBox/app/app_main.c \ + ../../../../apps/JL-AIBT-SoundBox/app/app_config.h \ + ../../../../include_lib\system/includes.h \ + ../../../../include_lib/system/generic/includes.h \ + ../../../../include_lib/system/generic/errno-base.h \ + ../../../../include_lib/system/generic/typedef.h \ + ../../../../include_lib/driver/cpu/wl82\asm/cpu.h \ + ../../../../include_lib/driver/cpu/wl82\asm/WL82.h \ + ../../../../include_lib/driver/cpu/wl82\asm/csfr.h \ + ../../../../include_lib/driver/cpu/wl82\asm/irq.h \ + ../../../../include_lib/driver/cpu/wl82\asm/hwi.h \ + ../../../../include_lib/system\generic/typedef.h \ + ../../../../include_lib/system\generic/printf.h \ + ../../../../include_lib\system/generic/log.h \ + ../../../../include_lib/c++/include\string.h \ + ../../../../include_lib/c++/include\__config \ + ../../../../include_lib/newlib/include\strings.h \ + ../../../../include_lib/newlib/include\sys/types.h \ + ../../../../include_lib/newlib/include\sys/_stdint.h \ + ../../../../include_lib/c++/include\stddef.h \ + ../../../../include_lib/newlib/include\machine/types.h \ + ../../../../include_lib\system/malloc.h \ + ../../../../include_lib/system/generic/ascii.h \ + ../../../../include_lib/system/generic/atomic.h \ + ../../../../include_lib/system/generic/cpu.h \ + ../../../../include_lib/system/generic/irq.h \ + ../../../../include_lib/system/generic/ioctl.h \ + ../../../../include_lib/system/generic/jiffies.h \ + ../../../../include_lib/system/generic/list.h \ + ../../../../include_lib/system/generic/rect.h \ + ../../../../include_lib/system/generic/version.h \ + ../../../../include_lib/system/generic/lbuf.h \ + ../../../../include_lib\system/spinlock.h \ + ../../../../include_lib/system/generic/lbuf_lite.h \ + ../../../../include_lib/system/generic/circular_buf.h \ + ../../../../include_lib/system/generic/debug_lite.h \ + ../../../../include_lib/system/init.h \ + ../../../../include_lib/system/task.h \ + ../../../../include_lib/system/os/os_api.h \ + ../../../../include_lib/system\os/os_cpu.h \ + ../../../../include_lib/system\os/os_error.h \ + ../../../../include_lib/system\os/os_type.h \ + ../../../../include_lib/system/os/FreeRTOS/FreeRTOS.h \ + ../../../../include_lib/system/os/FreeRTOS/FreeRTOSConfig.h \ + ../../../../include_lib/system/os/FreeRTOS/pi32v2/portmacro.h \ + ../../../../include_lib/c++/include\stdint.h \ + ../../../../include_lib/system/os/FreeRTOS/projdefs.h \ + ../../../../include_lib/system/os/FreeRTOS/portable.h \ + ../../../../include_lib/system/os/FreeRTOS/deprecated_definitions.h \ + ../../../../include_lib/system/os/FreeRTOS/mpu_wrappers.h \ + ../../../../include_lib/system/os/FreeRTOS/semphr.h \ + ../../../../include_lib/system/os/FreeRTOS/queue.h \ + ../../../../include_lib/system/os/FreeRTOS/task.h \ + ../../../../include_lib/system/os/FreeRTOS/list.h \ + ../../../../include_lib/system/os/FreeRTOS/event_groups.h \ + ../../../../include_lib/system/os/FreeRTOS/timers.h \ + ../../../../include_lib/system/timer.h \ + ../../../../include_lib/system/sys_time.h \ + ../../../../include_lib/system/wait.h \ + ../../../../include_lib/system/app_core.h \ + ../../../../include_lib\utils/event/event.h \ + ../../../../include_lib/system/app_msg.h \ + ../../../../include_lib/system/bank_switch.h \ + ../../../../apps/JL-AIBT-SoundBox/app/app_log.h \ + ../../../../apps/JL-AIBT-SoundBox/wifi\wifi_manager.h \ + ../../../../apps/JL-AIBT-SoundBox/audio\audio_test.h \ + ../../../../apps/JL-AIBT-SoundBox/led\led.h \ + ../../../../include_lib/driver\device/gpio.h \ + ../../../../include_lib/driver/cpu/wl82\asm/gpio.h \ + ../../../../apps/JL-AIBT-SoundBox/mqtt\mqtt_config.h \ + ../../../../apps/JL-AIBT-SoundBox/mqtt\mqtt_manager.h diff --git a/board/wl82/objs/apps/JL-AIBT-SoundBox/app/app_main.c.o b/board/wl82/objs/apps/JL-AIBT-SoundBox/app/app_main.c.o new file mode 100644 index 0000000000000000000000000000000000000000..2e55d589b126e9ea977679e31cbb08ae9c81857f GIT binary patch literal 4240 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 aVvu_*BlxSUCGl==-{`o#{Sng*`}`Ai5T1wt literal 0 HcmV?d00001 diff --git a/board/wl82/objs/apps/JL-AIBT-SoundBox/app/irq_task_config.c.d b/board/wl82/objs/apps/JL-AIBT-SoundBox/app/irq_task_config.c.d new file mode 100644 index 0000000..55cf638 --- /dev/null +++ b/board/wl82/objs/apps/JL-AIBT-SoundBox/app/irq_task_config.c.d @@ -0,0 +1,65 @@ +objs/apps/JL-AIBT-SoundBox/app/irq_task_config.c.o: \ + ../../../../apps/JL-AIBT-SoundBox/app/irq_task_config.c \ + ../../../../apps/JL-AIBT-SoundBox/app/app_config.h \ + ../../../../apps/JL-AIBT-SoundBox/app/irq_task_config.h \ + ../../../../include_lib\system/includes.h \ + ../../../../include_lib/system/generic/includes.h \ + ../../../../include_lib/system/generic/errno-base.h \ + ../../../../include_lib/system/generic/typedef.h \ + ../../../../include_lib/driver/cpu/wl82\asm/cpu.h \ + ../../../../include_lib/driver/cpu/wl82\asm/WL82.h \ + ../../../../include_lib/driver/cpu/wl82\asm/csfr.h \ + ../../../../include_lib/driver/cpu/wl82\asm/irq.h \ + ../../../../include_lib/driver/cpu/wl82\asm/hwi.h \ + ../../../../include_lib/system\generic/typedef.h \ + ../../../../include_lib/system\generic/printf.h \ + ../../../../include_lib\system/generic/log.h \ + ../../../../include_lib/c++/include\string.h \ + ../../../../include_lib/c++/include\__config \ + ../../../../include_lib/newlib/include\strings.h \ + ../../../../include_lib/newlib/include\sys/types.h \ + ../../../../include_lib/newlib/include\sys/_stdint.h \ + ../../../../include_lib/c++/include\stddef.h \ + ../../../../include_lib/newlib/include\machine/types.h \ + ../../../../include_lib\system/malloc.h \ + ../../../../include_lib/system/generic/ascii.h \ + ../../../../include_lib/system/generic/atomic.h \ + ../../../../include_lib/system/generic/cpu.h \ + ../../../../include_lib/system/generic/irq.h \ + ../../../../include_lib/system/generic/ioctl.h \ + ../../../../include_lib/system/generic/jiffies.h \ + ../../../../include_lib/system/generic/list.h \ + ../../../../include_lib/system/generic/rect.h \ + ../../../../include_lib/system/generic/version.h \ + ../../../../include_lib/system/generic/lbuf.h \ + ../../../../include_lib\system/spinlock.h \ + ../../../../include_lib/system/generic/lbuf_lite.h \ + ../../../../include_lib/system/generic/circular_buf.h \ + ../../../../include_lib/system/generic/debug_lite.h \ + ../../../../include_lib/system/init.h \ + ../../../../include_lib/system/task.h \ + ../../../../include_lib/system/os/os_api.h \ + ../../../../include_lib/system\os/os_cpu.h \ + ../../../../include_lib/system\os/os_error.h \ + ../../../../include_lib/system\os/os_type.h \ + ../../../../include_lib/system/os/FreeRTOS/FreeRTOS.h \ + ../../../../include_lib/system/os/FreeRTOS/FreeRTOSConfig.h \ + ../../../../include_lib/system/os/FreeRTOS/pi32v2/portmacro.h \ + ../../../../include_lib/c++/include\stdint.h \ + ../../../../include_lib/system/os/FreeRTOS/projdefs.h \ + ../../../../include_lib/system/os/FreeRTOS/portable.h \ + ../../../../include_lib/system/os/FreeRTOS/deprecated_definitions.h \ + ../../../../include_lib/system/os/FreeRTOS/mpu_wrappers.h \ + ../../../../include_lib/system/os/FreeRTOS/semphr.h \ + ../../../../include_lib/system/os/FreeRTOS/queue.h \ + ../../../../include_lib/system/os/FreeRTOS/task.h \ + ../../../../include_lib/system/os/FreeRTOS/list.h \ + ../../../../include_lib/system/os/FreeRTOS/event_groups.h \ + ../../../../include_lib/system/os/FreeRTOS/timers.h \ + ../../../../include_lib/system/timer.h \ + ../../../../include_lib/system/sys_time.h \ + ../../../../include_lib/system/wait.h \ + ../../../../include_lib/system/app_core.h \ + ../../../../include_lib\utils/event/event.h \ + ../../../../include_lib/system/app_msg.h \ + ../../../../include_lib/system/bank_switch.h diff --git a/board/wl82/objs/apps/JL-AIBT-SoundBox/app/irq_task_config.c.o b/board/wl82/objs/apps/JL-AIBT-SoundBox/app/irq_task_config.c.o new file mode 100644 index 0000000000000000000000000000000000000000..5b576aad1410c6da1001f01b05fb04b1d6e7b45a GIT binary patch literal 2780 zcmb7GYfu~46}~HpT>;A?jFL)5QdT??TpL&fj*)>zLc$iY>=N@EZ;Q*+V3N z1IULzEKqbn9p^Qn0)_G*GK`mG@WnFTix$7Ik<)N6yJ1?O5Z3TT+p-ip!#YMtYPN)r z0LSPXi@w`Y82r4o40kUR%;_@_or}Z(>_P4Tg}Em&4~ca$ME8S9 zuL}FO+(i7xa*6OwV%?^+!XlcS#OSou=GB60!x@pLpcnxFwpx*m4i={^P1qZ_o8bWf+f5Ub%sB{vA2umo zl~At%0Q!#x)o9JC^SA(e;Cw;6yz1PbSr54B_-p0*9iPRn54_h_@zYPPyZP6Vcqqsj^2$=|nxYqcHw zGnqppk$9P{>;>;vI^I_o^YUUUnrAu|EFD@NKR!iV6C7Fp{^;hgC478&?Z*^R`2LYS z$GA=7Y0zGo2ANbEG_5VZ4<1Z|#m#B(_1$B~mye7!<{VjfJ{oPLiq<~7si|E%$JsO! zaXgcfh}Ps}OYNE?=C?icmg)_@SI&h;8$U~m&qr74e*l%A*w(HsK*({NDwV8xaiK`@ zW*g^i5deE&jjQ;6$$V1ME=20XnwsIci3UH`@54NiZu|zw{Zv4F?kB472HEV4^xTxB zoyth71q%|~`naZkf?J>PO?YW+FCXjIg=iWZpt-%i5KV@}i9F&aLnNtO7nOT$g;+5V zRf2ixRk`FtxpdYnYp2F)PX=ojHOhCmbti*$!`#}$im=y&?R8+A93eOC{UMqO(I%|7 z6zjd40p0fbLq>k6TNH9fLj94zhFdGdttH}%7;%&0TH;fZ)RZKV?ys07XXKLkfb@(R zz07Eoag8#P?oZ6s9MaT;xwVJpDqzriL$#NV&8lS=+-q3B2!pwI1JF+bun}%ti%dsq!njx|E@lp>7UFS7p@A<{{9GiKZ;dm} zS5Ewh1N!JSmpquA5%BV`hBt71WzASVrZZQ=%?!%RD^{DCracu;>dVwk4XtG@T|F*a zLzk}tO52?7Zll-i*<-YJx!Rq(%dOhYZEDRX}FH=_O!pr|JztN`kdvC2j)(f&F+J|j82=j z&+Kj|pT1vRt=-bIn{0x0eINm&e}f+oe5fHoV20lyM2q+bL=(K6i%B#S_~BLl0t*&Y zO(4j$`ZB75*N<+IdTu(302F}lLol&`TMdZQFu{Sh3e_s4Y!rL(*a2|B>xwcUJPt?z zy%_h4KnuzRXbc|`zdobNFz^AD$Bn=Z5W}D!eHFkdO%yFsH^9{-N+pKwQoD>*vA4RT!aS zgT%D>VyP?o;~qaS-B(bVfCM`IA~D0e^0m|ImkOvyWPSu>0ct00w+ZWyVS`_1sbZOdi?|9T1jDmB29^u> zIVkX#!U<&j>ir}RaK48^dg(a(8nT`fT|zh{8>d>l&Sy4Ye1ODo&AQ0!x&%e<+B6sI zyo%4zGzbSo;ehTK_laZNCr=u+PO4E=llZ8GwJj6nO eA5BAlER(Pvwioz=+Qt3VBX^!sMcFq3pML=!x0wk5 literal 0 HcmV?d00001 diff --git a/board/wl82/objs/apps/JL-AIBT-SoundBox/audio/audio_test.c.d b/board/wl82/objs/apps/JL-AIBT-SoundBox/audio/audio_test.c.d new file mode 100644 index 0000000..dcb7883 --- /dev/null +++ b/board/wl82/objs/apps/JL-AIBT-SoundBox/audio/audio_test.c.d @@ -0,0 +1,127 @@ +objs/apps/JL-AIBT-SoundBox/audio/audio_test.c.o: \ + ../../../../apps/JL-AIBT-SoundBox/audio/audio_test.c \ + ../../../../apps/JL-AIBT-SoundBox/app\app_config.h \ + ../../../../apps/JL-AIBT-SoundBox/app\app_log.h \ + ../../../../include_lib\system/generic/printf.h \ + ../../../../include_lib\system/includes.h \ + ../../../../include_lib/system/generic/includes.h \ + ../../../../include_lib/system/generic/errno-base.h \ + ../../../../include_lib/system/generic/typedef.h \ + ../../../../include_lib/driver/cpu/wl82\asm/cpu.h \ + ../../../../include_lib/driver/cpu/wl82\asm/WL82.h \ + ../../../../include_lib/driver/cpu/wl82\asm/csfr.h \ + ../../../../include_lib/driver/cpu/wl82\asm/irq.h \ + ../../../../include_lib/driver/cpu/wl82\asm/hwi.h \ + ../../../../include_lib/system\generic/typedef.h \ + ../../../../include_lib\system/generic/log.h \ + ../../../../include_lib/c++/include\string.h \ + ../../../../include_lib/c++/include\__config \ + ../../../../include_lib/newlib/include\strings.h \ + ../../../../include_lib/newlib/include\sys/types.h \ + ../../../../include_lib/newlib/include\sys/_stdint.h \ + ../../../../include_lib/c++/include\stddef.h \ + ../../../../include_lib/newlib/include\machine/types.h \ + ../../../../include_lib\system/malloc.h \ + ../../../../include_lib/system/generic/ascii.h \ + ../../../../include_lib/system/generic/atomic.h \ + ../../../../include_lib/system/generic/cpu.h \ + ../../../../include_lib/system/generic/irq.h \ + ../../../../include_lib/system/generic/ioctl.h \ + ../../../../include_lib/system/generic/jiffies.h \ + ../../../../include_lib/system/generic/list.h \ + ../../../../include_lib/system/generic/rect.h \ + ../../../../include_lib/system/generic/version.h \ + ../../../../include_lib/system/generic/lbuf.h \ + ../../../../include_lib\system/spinlock.h \ + ../../../../include_lib/system/generic/lbuf_lite.h \ + ../../../../include_lib/system/generic/circular_buf.h \ + ../../../../include_lib/system/generic/debug_lite.h \ + ../../../../include_lib/system/init.h \ + ../../../../include_lib/system/task.h \ + ../../../../include_lib/system/os/os_api.h \ + ../../../../include_lib/system\os/os_cpu.h \ + ../../../../include_lib/system\os/os_error.h \ + ../../../../include_lib/system\os/os_type.h \ + ../../../../include_lib/system/os/FreeRTOS/FreeRTOS.h \ + ../../../../include_lib/system/os/FreeRTOS/FreeRTOSConfig.h \ + ../../../../include_lib/system/os/FreeRTOS/pi32v2/portmacro.h \ + ../../../../include_lib/c++/include\stdint.h \ + ../../../../include_lib/system/os/FreeRTOS/projdefs.h \ + ../../../../include_lib/system/os/FreeRTOS/portable.h \ + ../../../../include_lib/system/os/FreeRTOS/deprecated_definitions.h \ + ../../../../include_lib/system/os/FreeRTOS/mpu_wrappers.h \ + ../../../../include_lib/system/os/FreeRTOS/semphr.h \ + ../../../../include_lib/system/os/FreeRTOS/queue.h \ + ../../../../include_lib/system/os/FreeRTOS/task.h \ + ../../../../include_lib/system/os/FreeRTOS/list.h \ + ../../../../include_lib/system/os/FreeRTOS/event_groups.h \ + ../../../../include_lib/system/os/FreeRTOS/timers.h \ + ../../../../include_lib/system/timer.h \ + ../../../../include_lib/system/sys_time.h \ + ../../../../include_lib/system/wait.h \ + ../../../../include_lib/system/app_core.h \ + ../../../../include_lib\utils/event/event.h \ + ../../../../include_lib/system/app_msg.h \ + ../../../../include_lib/system/bank_switch.h \ + ../../../../include_lib/driver/cpu/wl82\asm/includes.h \ + ../../../../include_lib/driver/cpu/wl82\asm/audio.h \ + ../../../../include_lib/driver/cpu/wl82\asm/ladc.h \ + ../../../../include_lib/driver/cpu/wl82\asm/dac.h \ + ../../../../include_lib/driver/cpu/wl82\asm/iis.h \ + ../../../../include_lib/driver/cpu/wl82\asm/plnk.h \ + ../../../../include_lib/driver/cpu/wl82\asm/src.h \ + ../../../../include_lib/driver/cpu/wl82\asm/spdif.h \ + ../../../../include_lib/driver/cpu/wl82\asm/adc_api.h \ + ../../../../include_lib/driver/cpu/wl82\asm/cache.h \ + ../../../../include_lib/driver/cpu/wl82\asm/dma.h \ + ../../../../include_lib/driver/cpu/wl82\asm/debug.h \ + ../../../../include_lib/driver/cpu/wl82\asm/gpio.h \ + ../../../../include_lib/driver/cpu/wl82\asm/iic.h \ + ../../../../include_lib/driver/cpu/wl82\asm/lock.h \ + ../../../../include_lib/driver/cpu/wl82\asm/sdmmc.h \ + ../../../../include_lib/driver\device/device.h \ + ../../../../include_lib/driver\device/ioctl_cmds.h \ + ../../../../include_lib/driver/device\sdio/sdmmc.h \ + ../../../../include_lib/driver/cpu/wl82\asm/spiflash.h \ + ../../../../include_lib/driver\device/spiflash.h \ + ../../../../include_lib/driver/cpu/wl82\asm/startup.h \ + ../../../../include_lib/driver/cpu/wl82\asm/uart.h \ + ../../../../include_lib/driver\device/uart.h \ + ../../../../include_lib/driver/cpu/wl82\asm/imc.h \ + ../../../../include_lib/driver/cpu/wl82\asm/isc.h \ + ../../../../include_lib/utils\fs/fs.h \ + ../../../../include_lib/utils\fs/fs_file_name.h \ + ../../../../include_lib/utils\fs/sdfile.h \ + ../../../../include_lib/driver/cpu/wl82\asm/isp_dev.h \ + ../../../../include_lib/driver/cpu/wl82\asm/device_drive.h \ + ../../../../include_lib/driver/cpu/wl82\asm/isp_alg.h \ + ../../../../include_lib/driver/cpu/wl82\asm/rtc.h \ + ../../../../include_lib/driver/cpu/wl82\asm/clock.h \ + ../../../../include_lib/driver/cpu/wl82\asm/crc16.h \ + ../../../../include_lib/driver/cpu/wl82\asm/spi.h \ + ../../../../include_lib/driver/cpu/wl82\asm/imd.h \ + ../../../../include_lib/driver/device\video/fb.h \ + ../../../../include_lib/driver/cpu/wl82\asm/imr.h \ + ../../../../include_lib/driver/cpu/wl82\asm/port_waked_up.h \ + ../../../../include_lib/driver/cpu/wl82\asm/image_enc.h \ + ../../../../include_lib/driver/device\video/video.h \ + ../../../../include_lib/driver/device\video/video_ioctl.h \ + ../../../../include_lib/driver/cpu/wl82\asm/jpeg_codec.h \ + ../../../../include_lib/driver/cpu/wl82\asm/jpeg_encoder.h \ + ../../../../include_lib/driver/cpu/wl82\asm/jpeg_abr.h \ + ../../../../include_lib/driver/cpu/wl82\asm/imb_driver.h \ + ../../../../include_lib/driver/cpu/wl82\asm/uvc_device.h \ + ../../../../include_lib/driver/device\video/camera.h \ + ../../../../include_lib/driver/cpu/wl82\asm/bus_device.h \ + ../../../../include_lib/driver/cpu/wl82\asm/pap.h \ + ../../../../include_lib/driver/cpu/wl82\asm/emi.h \ + ../../../../include_lib/driver\device/gpio.h \ + ../../../../include_lib/driver/cpu/wl82\asm/power_interface.h \ + ../../../../include_lib/driver/cpu/wl82\asm/p33.h \ + ../../../../include_lib/driver/cpu/wl82\asm/pwm.h \ + ../../../../include_lib/driver/cpu/wl82\asm/pwm_led.h \ + ../../../../include_lib/driver/cpu/wl82\asm/wdt.h \ + ../../../../include_lib/driver/cpu/wl82\asm/jpeg_decoder.h \ + ../../../../include_lib\server/audio_server.h \ + ../../../../include_lib\server/audio_dev.h \ + ../../../../apps/JL-AIBT-SoundBox/audio/audio_test.h diff --git a/board/wl82/objs/apps/JL-AIBT-SoundBox/audio/audio_test.c.o b/board/wl82/objs/apps/JL-AIBT-SoundBox/audio/audio_test.c.o new file mode 100644 index 0000000000000000000000000000000000000000..7547c6917be6bc65d778a12a5d693b9d3a7bd4d8 GIT binary patch literal 29276 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 literal 0 HcmV?d00001 diff --git a/board/wl82/objs/apps/JL-AIBT-SoundBox/board/wl82/board.c.d b/board/wl82/objs/apps/JL-AIBT-SoundBox/board/wl82/board.c.d new file mode 100644 index 0000000..8429528 --- /dev/null +++ b/board/wl82/objs/apps/JL-AIBT-SoundBox/board/wl82/board.c.d @@ -0,0 +1,138 @@ +objs/apps/JL-AIBT-SoundBox/board/wl82/board.c.o: \ + ../../../../apps/JL-AIBT-SoundBox/board/wl82/board.c \ + ../../../../apps/JL-AIBT-SoundBox/app\app_config.h \ + ../../../../include_lib\system/includes.h \ + ../../../../include_lib/system/generic/includes.h \ + ../../../../include_lib/system/generic/errno-base.h \ + ../../../../include_lib/system/generic/typedef.h \ + ../../../../include_lib/driver/cpu/wl82\asm/cpu.h \ + ../../../../include_lib/driver/cpu/wl82\asm/WL82.h \ + ../../../../include_lib/driver/cpu/wl82\asm/csfr.h \ + ../../../../include_lib/driver/cpu/wl82\asm/irq.h \ + ../../../../include_lib/driver/cpu/wl82\asm/hwi.h \ + ../../../../include_lib/system\generic/typedef.h \ + ../../../../include_lib/system\generic/printf.h \ + ../../../../include_lib\system/generic/log.h \ + ../../../../include_lib/c++/include\string.h \ + ../../../../include_lib/c++/include\__config \ + ../../../../include_lib/newlib/include\strings.h \ + ../../../../include_lib/newlib/include\sys/types.h \ + ../../../../include_lib/newlib/include\sys/_stdint.h \ + ../../../../include_lib/c++/include\stddef.h \ + ../../../../include_lib/newlib/include\machine/types.h \ + ../../../../include_lib\system/malloc.h \ + ../../../../include_lib/system/generic/ascii.h \ + ../../../../include_lib/system/generic/atomic.h \ + ../../../../include_lib/system/generic/cpu.h \ + ../../../../include_lib/system/generic/irq.h \ + ../../../../include_lib/system/generic/ioctl.h \ + ../../../../include_lib/system/generic/jiffies.h \ + ../../../../include_lib/system/generic/list.h \ + ../../../../include_lib/system/generic/rect.h \ + ../../../../include_lib/system/generic/version.h \ + ../../../../include_lib/system/generic/lbuf.h \ + ../../../../include_lib\system/spinlock.h \ + ../../../../include_lib/system/generic/lbuf_lite.h \ + ../../../../include_lib/system/generic/circular_buf.h \ + ../../../../include_lib/system/generic/debug_lite.h \ + ../../../../include_lib/system/init.h \ + ../../../../include_lib/system/task.h \ + ../../../../include_lib/system/os/os_api.h \ + ../../../../include_lib/system\os/os_cpu.h \ + ../../../../include_lib/system\os/os_error.h \ + ../../../../include_lib/system\os/os_type.h \ + ../../../../include_lib/system/os/FreeRTOS/FreeRTOS.h \ + ../../../../include_lib/system/os/FreeRTOS/FreeRTOSConfig.h \ + ../../../../include_lib/system/os/FreeRTOS/pi32v2/portmacro.h \ + ../../../../include_lib/c++/include\stdint.h \ + ../../../../include_lib/system/os/FreeRTOS/projdefs.h \ + ../../../../include_lib/system/os/FreeRTOS/portable.h \ + ../../../../include_lib/system/os/FreeRTOS/deprecated_definitions.h \ + ../../../../include_lib/system/os/FreeRTOS/mpu_wrappers.h \ + ../../../../include_lib/system/os/FreeRTOS/semphr.h \ + ../../../../include_lib/system/os/FreeRTOS/queue.h \ + ../../../../include_lib/system/os/FreeRTOS/task.h \ + ../../../../include_lib/system/os/FreeRTOS/list.h \ + ../../../../include_lib/system/os/FreeRTOS/event_groups.h \ + ../../../../include_lib/system/os/FreeRTOS/timers.h \ + ../../../../include_lib/system/timer.h \ + ../../../../include_lib/system/sys_time.h \ + ../../../../include_lib/system/wait.h \ + ../../../../include_lib/system/app_core.h \ + ../../../../include_lib\utils/event/event.h \ + ../../../../include_lib/system/app_msg.h \ + ../../../../include_lib/system/bank_switch.h \ + ../../../../include_lib/driver\device/includes.h \ + ../../../../include_lib/driver/device/device.h \ + ../../../../include_lib/driver\device/ioctl_cmds.h \ + ../../../../include_lib/driver/device/key/key_driver.h \ + ../../../../include_lib/utils\event/key_event.h \ + ../../../../include_lib/driver/device/key/adkey.h \ + ../../../../include_lib/driver/device/key/iokey.h \ + ../../../../include_lib/driver/device/key/irkey.h \ + ../../../../include_lib/driver/device/key/slidekey.h \ + ../../../../include_lib/driver/device/key/touch_key.h \ + ../../../../include_lib/driver/device/key/ctmu_key.h \ + ../../../../include_lib/driver/device/key/rdec_key.h \ + ../../../../include_lib/driver/cpu/wl82\asm/rdec.h \ + ../../../../include_lib/driver/device/key/tent600_key.h \ + ../../../../include_lib/driver/cpu/wl82\asm/includes.h \ + ../../../../include_lib/driver/cpu/wl82\asm/audio.h \ + ../../../../include_lib/driver/cpu/wl82\asm/ladc.h \ + ../../../../include_lib/driver/cpu/wl82\asm/dac.h \ + ../../../../include_lib/driver/cpu/wl82\asm/iis.h \ + ../../../../include_lib/driver/cpu/wl82\asm/plnk.h \ + ../../../../include_lib/driver/cpu/wl82\asm/src.h \ + ../../../../include_lib/driver/cpu/wl82\asm/spdif.h \ + ../../../../include_lib/driver/cpu/wl82\asm/adc_api.h \ + ../../../../include_lib/driver/cpu/wl82\asm/cache.h \ + ../../../../include_lib/driver/cpu/wl82\asm/dma.h \ + ../../../../include_lib/driver/cpu/wl82\asm/debug.h \ + ../../../../include_lib/driver/cpu/wl82\asm/gpio.h \ + ../../../../include_lib/driver/cpu/wl82\asm/iic.h \ + ../../../../include_lib/driver/cpu/wl82\asm/lock.h \ + ../../../../include_lib/driver/cpu/wl82\asm/sdmmc.h \ + ../../../../include_lib/driver/device\sdio/sdmmc.h \ + ../../../../include_lib/driver/cpu/wl82\asm/spiflash.h \ + ../../../../include_lib/driver\device/spiflash.h \ + ../../../../include_lib/driver/cpu/wl82\asm/startup.h \ + ../../../../include_lib/driver/cpu/wl82\asm/uart.h \ + ../../../../include_lib/driver\device/uart.h \ + ../../../../include_lib/driver/cpu/wl82\asm/imc.h \ + ../../../../include_lib/driver/cpu/wl82\asm/isc.h \ + ../../../../include_lib/utils\fs/fs.h \ + ../../../../include_lib/utils\fs/fs_file_name.h \ + ../../../../include_lib/utils\fs/sdfile.h \ + ../../../../include_lib/driver/cpu/wl82\asm/isp_dev.h \ + ../../../../include_lib/driver/cpu/wl82\asm/device_drive.h \ + ../../../../include_lib/driver/cpu/wl82\asm/isp_alg.h \ + ../../../../include_lib/driver/cpu/wl82\asm/rtc.h \ + ../../../../include_lib/driver/cpu/wl82\asm/clock.h \ + ../../../../include_lib/driver/cpu/wl82\asm/crc16.h \ + ../../../../include_lib/driver/cpu/wl82\asm/spi.h \ + ../../../../include_lib/driver/cpu/wl82\asm/imd.h \ + ../../../../include_lib/driver/device\video/fb.h \ + ../../../../include_lib/driver/cpu/wl82\asm/imr.h \ + ../../../../include_lib/driver/cpu/wl82\asm/port_waked_up.h \ + ../../../../include_lib/driver/cpu/wl82\asm/image_enc.h \ + ../../../../include_lib/driver/device\video/video.h \ + ../../../../include_lib/driver/device\video/video_ioctl.h \ + ../../../../include_lib/driver/cpu/wl82\asm/jpeg_codec.h \ + ../../../../include_lib/driver/cpu/wl82\asm/jpeg_encoder.h \ + ../../../../include_lib/driver/cpu/wl82\asm/jpeg_abr.h \ + ../../../../include_lib/driver/cpu/wl82\asm/imb_driver.h \ + ../../../../include_lib/driver/cpu/wl82\asm/uvc_device.h \ + ../../../../include_lib/driver/device\video/camera.h \ + ../../../../include_lib/driver/cpu/wl82\asm/bus_device.h \ + ../../../../include_lib/driver/cpu/wl82\asm/pap.h \ + ../../../../include_lib/driver/cpu/wl82\asm/emi.h \ + ../../../../include_lib/driver\device/gpio.h \ + ../../../../include_lib/driver/cpu/wl82\asm/power_interface.h \ + ../../../../include_lib/driver/cpu/wl82\asm/p33.h \ + ../../../../include_lib/driver/cpu/wl82\asm/pwm.h \ + ../../../../include_lib/driver/cpu/wl82\asm/pwm_led.h \ + ../../../../include_lib/driver/cpu/wl82\asm/wdt.h \ + ../../../../include_lib/driver/cpu/wl82\asm/jpeg_decoder.h \ + ../../../../include_lib/net\wifi/wifi_connect.h \ + ../../../../include_lib/net\wifi/wifi_def.h \ + ../../../../include_lib\server/audio_dev.h diff --git a/board/wl82/objs/apps/JL-AIBT-SoundBox/board/wl82/board.c.o b/board/wl82/objs/apps/JL-AIBT-SoundBox/board/wl82/board.c.o new file mode 100644 index 0000000000000000000000000000000000000000..513ec4d522ecf6d6954e07292886ac18db462081 GIT binary patch literal 11888 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 G-@gE0JT(yj literal 0 HcmV?d00001 diff --git a/board/wl82/objs/apps/JL-AIBT-SoundBox/mqtt/mqtt_config.c.d b/board/wl82/objs/apps/JL-AIBT-SoundBox/mqtt/mqtt_config.c.d new file mode 100644 index 0000000..c16be70 --- /dev/null +++ b/board/wl82/objs/apps/JL-AIBT-SoundBox/mqtt/mqtt_config.c.d @@ -0,0 +1,36 @@ +objs/apps/JL-AIBT-SoundBox/mqtt/mqtt_config.c.o: \ + ../../../../apps/JL-AIBT-SoundBox/mqtt/mqtt_config.c \ + ../../../../apps/JL-AIBT-SoundBox/mqtt/mqtt_config.h \ + ../../../../include_lib/c++/include\stdint.h \ + ../../../../include_lib/c++/include\__config \ + ../../../../include_lib/net\wifi/wifi_connect.h \ + ../../../../include_lib/system\generic/typedef.h \ + ../../../../include_lib/driver/cpu/wl82\asm/cpu.h \ + ../../../../include_lib/driver/cpu/wl82\asm/WL82.h \ + ../../../../include_lib/driver/cpu/wl82\asm/csfr.h \ + ../../../../include_lib/driver/cpu/wl82\asm/irq.h \ + ../../../../include_lib/driver/cpu/wl82\asm/hwi.h \ + ../../../../include_lib/system\generic/printf.h \ + ../../../../include_lib\system/generic/log.h \ + ../../../../include_lib/system\generic/errno-base.h \ + ../../../../include_lib/c++/include\string.h \ + ../../../../include_lib/newlib/include\strings.h \ + ../../../../include_lib/newlib/include\sys/types.h \ + ../../../../include_lib/c++/include\stddef.h \ + ../../../../include_lib/newlib/include\machine/types.h \ + ../../../../include_lib\system/malloc.h \ + ../../../../include_lib/net\wifi/wifi_def.h \ + ../../../../include_lib/net/mbedtls_3_4_0\mbedtls/md.h \ + ../../../../include_lib/net/mbedtls_3_4_0\mbedtls/private_access.h \ + ../../../../include_lib/net/mbedtls_3_4_0\mbedtls/build_info.h \ + ../../../../include_lib/net/mbedtls_3_4_0\mbedtls/mbedtls_config.h \ + ../../../../include_lib/net/mbedtls_3_4_0\mbedtls/config_psa.h \ + ../../../../include_lib/net/mbedtls_3_4_0\mbedtls/check_config.h \ + ../../../../include_lib/c++/include\limits.h \ + ../../../../include_lib/net/mbedtls_3_4_0\mbedtls/platform_util.h \ + ../../../../include_lib/net/mbedtls_3_4_0\mbedtls/platform_time.h \ + ../../../../include_lib/newlib/include\time.h \ + ../../../../include_lib/newlib/include\machine/time.h \ + ../../../../include_lib/newlib/include\sys/timespec.h \ + ../../../../include_lib/newlib/include\sys/_timespec.h \ + ../../../../include_lib/c++/include\stdio.h diff --git a/board/wl82/objs/apps/JL-AIBT-SoundBox/mqtt/mqtt_config.c.o b/board/wl82/objs/apps/JL-AIBT-SoundBox/mqtt/mqtt_config.c.o new file mode 100644 index 0000000000000000000000000000000000000000..6f728817d1bad39d5c0556a687d52276701c90b2 GIT binary patch literal 9192 zcmeG>dwdgRw%=sZnY2wO=>te<5+4F)quFh)$2|Dp%+*8Za`MqmFp&L=~gUk1g>_G%cfEg-L8g*Ecn`cz7!B$@Ba4w ze)mu3H=TUn`ObIVbG~z?W%|I0n^O>qK?qe#xr|l!zPb35BM&bvCvq_eX`~26BnZVj zStNpaGW^kwgTm6T0j1`aO&b``)`g=+-D=0+lyY6RIrNLC3J^Z zupvoDrqJyb3V2{Dv>60=7I1VIkYecoMm{~HM8m2RLkSZ)_3#iT6`oQZ4yw)!DW``L z4mebYhg7J?BlKj_W~hlK9Ye&dDb)!+-@av~Td;!vH?D9>C|!Axo-f!#sH*AQKs z(J|yHP>kY8lks9>+F&}G%QFRvKD0#p>mk!)cwqq|J^X+|==4Ng@1r}$g#wQNq1ed^ zHdZKL1-oCc!??lK-A{M>W&`89QaP1}Euflm5@h4m!y47(P{J5QAVkhJ*?91{7rO~- zsu1iDcu|jog0^qM6}vm2oYp9h0V$+Dp-~+NJA+|;%1Mpt7y)m`PKa0v`<cGB%! zR14r00yQIug?Dy(N_oHmp#_4eQMdQ{&>|sDtUdvP*5;+nII5?IlrtIzJ+B5`h9M@u zKh$?d-*KDxNXEb{y}mG1yY;L&z!>HLI+S7dH7i04_WJn zto8qwwMO3LaCEIe6qk51!klAer#R+9fVmu^&PABd!pyXhnGR9Y9_FG4kDEE!Sypx- zM4d*m<`6Tbm7PIeeW8D(WIL(#=$B9E3;W69?fSHkzHkRwyeC-bCW~Peot85*oa_{m z&ls8WoU9qi&Ka4L9_BpIG&2!Qis6d@c|u==+{OF!Xm|=oH>o; zpG25u5A%tcIsg6g?;R=L<0y8!K!!9gS+Yl0>?TWnq?wrtU^&qgW_RAhd>Cd=Y~e6m-GzQ-6^&7x?d}5CRp*l7N2s-jSleqn0DPAZJec8ElFO7W<@D_9-iCW|_~- z%;~5W!0U71t488dx2xn?eNjlCHb|BnC0SWJlEe0MR*(b>0193(Vw0XnuQ-YVu9EGp z(osTt6zfvx)fepnpgwJnzA!{C|Hc=efk!~22y;40WF~?gdd&-IU%zk}2S>D6;wpaYb!X0jSoOBO)Qj#hj8;o~PSIFJNN@AOq zFA`-2(QT{Nl*c~t2knsy@prCa$5v=ESczEV4DynX5UXE|BwG{F-P2-TaT&3<^&!c& z7_@B=ZRg9LED{-6ZEEH`X&ohs)BUljVD#yQ$W`R@DN>|?lb7W?r3z_Z`I8ZIi6Z?; zpZ3M{F3$Z67wyvgm*sHE>fz};BB$b!3wa}t=l7n!t454=Z3&(8yqxmf+%cDC-3^(~ zyj`!~U2WtPkAJA&BbFl1QVnw7L86a#6WWrb3L+Hkk&>ld2BFA9ZuGbkIw5O@m>zf{ zSr13sd~`cYLvCxkI_S{S-@whxx29nRI-NFi6d^=S`DkccVEb~}4v%Kx%5s#XN$4w9 z)EHeE2!V~wv`f0)BSr}B8S{2W!Zw6>xK+};J-Vc*Fa54IYMBB0E4VwjP=s2AkQSi; zbL;#M*jR+1vzrVWT*?drA-Ibb4g59Y3lrL}5SMn}7^Q$wkm6je7VnE*-1HQWAZ((S zd7PxQ(Fnp*ZaR@+vDDE^an1`E^tGiBP=_@wUhFG*5Q()Q zJd0;~^)gTdka3jq8krIiJdCg~0S}$PBO{D3S@ZZpT8p4{jb7aJ5J)oj$}A+Y*lwq@ z-h2C0&u^--pZfEhzL5{J7ri>CBJQPMe)PsCi{t-v=_kc^{`>EawJrau_~ADWe)Q`4 zCA)M!?j{k^&Xwc?m0Yz~k(yZH8H`EoQM# ze!!O>$MKSdsCKf?@#0%1@4}yN8q&DaU%32w{@;FfddE70S9af`((3Bx6gLs$ zrlNlBmx&yD$Mi*h(b4XM=gV6ncUbwve>l@#HyXEuvtj!~D z+j_o^+5Cr(;;CXCy^)(hneDJEu0LB znTV0elaJyy4f>a1i@Kg0DBc$>B=(Rc`|#0RJP}EO#(!f2y$rX^^fDfIj`*_x^fH%X zfNUo(m?T1*BHBQC9ZR5u_$17H7Jy=gtRBZbxDwh)cpkSX56m|E7V2FOu2qWQ*oEib zk;3h>MbSt$F#Xb5d=yti(%&}<)^&o->asV`UC^FGU*;2153P}X5-p9O;(~f$ie;c) z%40KC$Ah?mJq(SKLw!7qTj`Gpb-iMBpjE3YFED!zI)D;(nNtsGCK|3ejJ!Hn94BX=+hw zhG(mGY<#>S-6%=PeNK_8xozCDT1s-BJi9e%yQ<_+^2*iaH^-|&I=x)1VmJE=W1Sgy z9Wfx3m6d(%wpgw0*|%3L)vYR9yL3(KhL+m0)~@X4HoLtFKTI{PE%l8LWYv@}uhQw4 z72RpF+FBp1tFc$rcP_;MlWtY(TGN{HJC@q&n(8d=by4V@cVdv~o}8@QEbjk;ip8n= zt~gcItrlBtRcBLSZcUS=dGv;xi+hzvTSAf+KM%%%5u}4cip-2x@l$k&DYJ=7<4(`p62G} ze+O`L!M6cQCE%vO24e-nX)(zE7jqMGylk!fBt)9JSHg3x6sy95q zu4<`oy$V6-^hY=w!pY?f4+JI7+o*+-pQa9q6Ose81neN)UGlq5Xv6{DygAVy$;0_D;O{7e$~ zdz9X+k-biT|i(;4V#R!lmc=D`wouL^+sw4cu6U|HD9^lSzW4IBq2Cul(T)4hpMy2 z$&pKhD)QiS%7lE+u)%{*`AbAUfx@_o05&JjI_7T=-oz_VA0PtZ-_z@j)UQxA^2Q^M zOpn{?iTi~=?iCcjiyL7nGe_k~tL0QJm{F-h)htyVPWm{U)Douf`05?ulb%(3$RcY? z;5Ux6oi4SH_)*fuFxBFtKh`oA1G02Y(w98-tfAj+2#~6fV^F*}b6!Eg8wK-ncjY~` z>$j^#dE@<$9{i7kFZ|`vS04N2#QwphGfgciy1Dh5IT-D!{N1_B0P9~Ax!^DvdI_F5 zkmBRuLv<%l_pGye^`&qe`Js;-ah_I=!Dn3^K4wpARA-{+1G2CP4T0&C#g$92U5emO ztRPt3y&qC3>if40<;NL)+S^Mz-{1Gp#`hjAS!7i1HwK9PEylQ*Od}h!mbs8huoFgM zxAcUftA<-!mclQiVEE8C!y4|WMF};*359fn;mFjZFuYPJJc)-YLpl@^A#|35Y7gFqbbPYibF>H4Mxoq%y^@{a6t|^FX>rMFSVq^UvBs80du?4u zV@;h2CkdOSv)Qt~&U7_d;7oO0a=kvc)!HD3*s>vSWaE>j%F^D9C$otyFV|$hmXCl) z^@jSUx|Z6;2kP4G&9$aR$R$^gnk!S2y%ACz&SixrdsK#+)@G}v#%=;|YjaDZwbc#@ zEt>k*G&WnC>R5fY{-&GQwPiY8G~=OU_Z`o$Rqu~2a8=lKI*4mLo<$>d}8@N2oyHySpw}5`?t)$$j;+SyU2f)hzh|_<<2~W z_MqC?8scecz}bWDSv{iml72d=N*si@zhC?SLUv-}M$yJeveR%(m2{5q{#bn3Pgmu> zEIDV94f|mFm7lg40cZ0hnUi^sls!Aom-DjZf<<#7eTUhLOc2UcCl3=+s}kStMPZ~0!jYSLB6!>)^vuFi-QXn#7zkw9(* z{Gquy0T^@1W*GbX2{rtzKmg%&G5&ZFn#n=AXJR=-ziN^9>+0wrIHY(y)4;t`br_z^CS23@2Et5q~p@h&0i^dBw31l3EoH zvaNs-#vzm!wM;;S_*EWmKtKODZXC6k%Oi?Fl90bQUb_S)JP3f(bqx;bCDlA6dwxj( z#^$Q@J{2{rplGjV&s>#WSKdHWMh&r(67>=tl*KqR3n@<2Y@aBwt!ALW-v( zmm~2T*(o<>r&$2(ZhRWVAQR`=rslTq(insUa{1By%bOHOgIVud^me9W7tIc{2S|p`^90|Ms}?t zB|;i&jR9F8OC%q_IDt~Yc?21%WzPG>5I^#nbhK@f95M`PGx+7bqOEALq|+Cl>@Jz? zjU84;hQ&j&9t)h^BjVs1A+{`S6b7#fvCa==(Ay+-gwN_S2Ng=K#7TS@myf@Hyn_EH z#QhZ>BZEXDeV{ZvQXy7%ZIZ_=q-eR*9QaSsL0FV+!pNboFmjD{JZP6);*y7G^#b>B ze~@sq3aejx9u~>t70iwJ|X*pOAZ3s;PB~$pn4`aND%S8rD!2VkxsMc;Bcxq znF?H?u-h1=@E1&>^9lvOZ<6GyJ&2W1W_kR3^EW-@IjE5DGtNRa63T9lyJrzq5*HS{+o*s3$V~z zLFj5T2P{*U?$B`-G^j{nz+&_FlmT&T?24HYt3FJdVPzs$yb{A!-7+(>!~vtVc%KG7t}_YP5Ux)iOS|!RkyUtEIa)PYMUqcIAPAS8O6!K3! zZZX%S6}NE+bX(#8aRd6qq(HxeaIlJgT{iE?gRs$CWB^J6kVlt&#&HAhNGDTzP`;1!!W9)nkeoHOtvdl8SpZ>`3-zw)y8 z3yd%O`aI_M@K#tMOSEn=K$ZbESZ zOtotkOLrE$v6sj`3ZQrBKj4kTVE~OgvbJL@@$tXJ0_=>wM>X0BM<)n+T;7D8d&!ZW zbcuUApoG0s^fm+R)lI=(ACaAsM~yC+c3=>Z4h9K0vZc2gL5@r_uH3uRHG{0fi3`y&a2iU;nx zxFZeWktHL~i(&T-DLWjp#gSlay;QPh{C3fT0>?Og-_Bn17|-?oA|qls+4t$({#0@} zWx|&cafq~D4rN6~v6ZYPV5J8=j5rMlxo^l=3XK6G>>P&_f8Hcxj@l$#RJ{3#B2niUvQeOL-lMM-fyq z=st1a>c>0O#v*hF!0u+`>9x)sO16A_+EAqJ_Y4ijxFvsdX)3oy%yYGu4yUA!>{&AB zWVS(9A<@lp! z`_izcaC2hO#0rbdGB@rDa9#Oz#LDx$y?}a zBWGh7vnGPGF@jTzTGusjHX8IbB2J@HzqyRLu|eOc=D=(Xz+`YXWk6dW-=S|Xa2m^) zwUj=-Os_U_>X0oYa8MO|iXaCqg3lR04D~$x=asDHZg&q%@c^LK$1C+UTo91E zp+O&?!Py|zgVg_t|I5Qc7o|ZrJA;O3{;?pBa*mg)^=kEREmsDg8xFkO8931CF%Aq5 zgE$^GBKV>)s8$PvfwkFfuq1cCnz@f zrVNk-Q*%JuU}cj&0kt-QET9>u33ThZoJQ#{RyYt0wg4(uEHn~L(3OzD(T5@^t$*QS z&zg_eV$W-1{JW&!x|lz1=Ko-4-yP$BKg1tV@JH(px z!&1R0>X0XxtjW8WQiD9nCQoQ(&f6squ*(y=nDe?V2~Es-FpF*o`M1P^>qvM@!M`UK zR3gD$1^=3Xe-Cgf`C}LrpGpK^n>-OU%{w6v=+GrM$uTOkbzYZlo?V_eAP?BZoYy6v zhsH_4_X@swh<_V6AqB&B{&hQhY>fZ)5Pw|3ziVe-H}k)?^D6;hh+k>uUl;OkAmMjo z{7M7=J0<_#f9Ai(IlwWBS zTqgy$K^DwE`&%J@occEr>>vU&*(^`$u_pcsTZ~{_$iHUdV^xe{wy#MAw@E=I$^Tx- zzd=g@w0;D-!HAX8q)Xl}PqfPe+L*}~n53W<31RtNHE@C%00GApSf%&SVNIf0m%K}t z(nm-yU|AA6Dun2jq!u%oLOSiEd5u33*BnGjSI) z5n#G>DP7Q(2iWAv15Cj1pI8Dvd1(Vs?AmG<#a5=1haGr;ZvF7cvCWDQznAU_Y zYck-(_L3(U{>@mw;TtGrK%TOTDW;7Mu9eUYS|Whqq#kAph|?`gG|7{?=M8~7UU7m>E%80gr478E*5;P=6^@;JFq_Z#&5VQ z0a7HGnaRM?{$Jboo>VX_=6?fQ0~}RKZ|yO>JFY4OH^67W*?<1{Vu% zD`_NV{%vs7hY`bMiTD?|*0X3Tbx|r}m@347z^*ohibq`@6}ktwgG4A0d5MY7Ab`Mf zwE#Bt_uvmm070Nqilw-&>V6Zq=H)p*hGTc3c+_U3;R^c|5_>d8rtCMLcv|y z)qlNVS&86CO}YdybT^UGBu_HIUZcI;_KQtv9 zQ@WY3A0b>|K_20pUjChs|J`pbx5<*nFzs(Avoz=_}TQjkK(A439Q>8oEwzrJK} zr#5R6Y^VV%4&4wCATo4o5-#WxAsj&@2U?>L>Kh)7V`Bc8LO>oI41E>ic9ci0VRo|2?^yEK zO5%{mPrXimgDCg^;}~|%A^z~tZv`Jqa+fu+N1kYq2Y@NT(7$zV!fqW#f-!J%HUC$c zgN>QeWKB3shx8N76o~3}>pXChR(VPX#1`-zprw0a7n6D{C|yH>@6muY@X_-TybBC{ zK?g@eGFl5qGmZ~}bw~)w44f;Y=)WR1$Iw1=U{3R8~39Xp3k*mk3 zDE$UVM2-3ygFZfjvpz$=9*xR^Z*~S!mj59ezi1A+VhOrP1)T~Bv=JoEqRF7kmcZXi zeK&A98#)}B|G%f5bn<^ABrCJ%)iIQ5J*9T9v1;_FS8o8q5F)INFI-dV|P=8w9>LZE9sw2eB+_F}{QRr)$McxEukM;UF80 zWN;YY1s;kJFUm%d3sV(Y!nUGRDofa|>^07|v1H}pyfd{~ zT%&6$YYDf@wRh?gVMMuBD)VNq(T4MKU7)*GD_-HvzNtlMD~Zqnz$XbEa3zbISv$kJ zn&9JFQ>VelE9(z!?oA_E!UxtsLL^lF0cE-n9vNbWcp-Xm>JrasS$}!`*qfOdUP|Er z;G}i_l$uVxij}<$;b#FH-v@)X%y3&LS`yu45V(0OW!5_A+lHK=@y@; zNN8RoeC>{=zg(fn(Dc@y^I6tAQc&^6pF{t#@9K|=}aS9q=966xm3N2M(B5G&6@*19s1_I;MAnxv#nDR_pKeTwt9vCX{GSMULgzg z+02lV!VJ=z|61CssUkNQ)EV(dKgQG7o2aJ~MWpd}HQb2ZEbTWAMSON_2_Xx4^>3-W zU7iW=E1z0yL))6A>KAERuUU6!HQ z_M<{7Cq#BORJ1%UQcFlbTaL0_P}5tkQ!~VtWwd%??QuV8&-=9AS<3x5_?<6q$=-OS z(zWNpn+&7$Z=opL=Pi~IMc8||6yuMdpafzxd7;q93bau9@;w$YAv`XmG70H-T2Z#Q zlu#hy2_Cg``^YQe*)M)F?X0&#DqTO*u5zQIMy9f-f!dHauOUO9XkczK=sY$+Jht;2 z;S&iO#he-=rt{2yfJLKTDG^G_fi(flJ6ug6MLA=X(8+=(R%T7%edAntOW8vFf^iD(mUEo9F_pk% zun-8fB)^PU6f{WqkK`{Y94$bMsE|)*AcBMzh=|OF*L)C`mwqV+cEY9t{;+D0ctqtw z(olF(boT^9NY}q`kGHXq;3DugDeko-zl~Vf_vn}Wr4^5oTMFKxgb4?^={^*ek0zoV z$Z?m_;|_A~0Xa+@BNE*m2XZh@K?leMBM~3B;3c~I;IXOR$2hqLC}0_hA>}XCAO;EO zoPsAJf`nlQCkulpq<|iNDF=!Of`o=+N)J=NFnNvtD3cn_qf8DkA7yg+W1NfwCs-8x znjDgq{f+s0<9qqhd%n3|^Fgor{)1PFk7+YQ{ygWIzkXRf9Psm+kG>xN-MsAAp1q{n za6fpJD zH&da!h*V8zU_`1mb!xOnH5VE!;k>vd zKeIBP3m>1Gobve}Z@4|(h76@FDk}`_noJn~`1H34FY;gb>&bgZk|U#Zw&A$rSx+7O z><{O^CVv$1Cx7_mcXvDZ68-rKmp|tM|8@2gQ7=7zy?mYj_^MgCYZknIVffOwQO|!( z{?PNg&{?CegdXvG<>S!bw@q8K=j+kAE4sYTo-O~!7f&AB^JSf1{=ZuGTpvH-{;!wL zr_c6Go-KIytI#i3rA1vjf32o{_PMQ#YCRWEjkf-+CTWf!dRtv+UE=K5wtb>{zjc~+ z&-Hun?#p|1&qw2u6ZS$DQ{j}mlSj%>eH`=YyEw8 ze{%ls064#LXgK+wLE+yliux=c`^6F1c5C4~mP-Zp4F{I`5Gk$lgeGfSDr6!JoZ60c zJjaC+ib=7&)ZkuA5Y+!l#V$0ME&wuRs9V5w%GS^Zh0;xs>|{VWlhdeXLRDBz>iun= z`1&|37F3A^*T&#R#g7&C;j-UgNKmgTxKzA#-U%JPlfg|9?qs;+Hs%9`hHBrY>U3VGiJ&~Bjg1zi0)k-nw_>b{!U_+sj~g^QVmkm^D*MQ34wmsL2uqHC_~ z&kgvV=eX@9_E;0(8iz}R)@UI5KucGTth|rP_3Au*japY%#%X|ZuSj2K)cc>w5qwAA z^Pn087y4n650~IrG6E7(To64M5_nk?e0d0$W^WR~rJ`kU*~K?kn_{X{5T$-Y1E-;5 zS=P8gfHe@jhR)VQaFV-)z}cTIBxp><&TZBuz#Y*fPXUEI=uIAx&ufLQwaxkhXQK!g z+SehpkwoYaRQwBrGe~(W&p*+Bs$qw;e_)_2RKfL;yd?4uSvX)=w##)(!b)u8dbL+> zQ1YaDS*2LWigEL_rY-C0vz#S)xg0+k=UGDpFCfrWlD4%*c(Pag@jK)NBy&3|+TJvv zvG5kMrhSqVsb3y(YBE_boa5mY$UDb@9~ihga#wu>cR5EN!eQ6UUT+Uve2#r;M;tST z)C~omI?CNXo+dpaL{U-E58o=ax;A=IR-`O5H8(P+y1uG7wYnj?a$Q|rKK>}ER8^@~ zm()ZRr6uLdszpz?WQ=Gq{B0*AAp{iOE_` zR8e1CQczJ|7+qE3P;4~DBd;hgsj7=ATUMR3Y-x@d{>Q+7$#1NUuGmnnE|9=KG2O)S z=GRsitu0Wg%cCb6QDqaYg38*}1$7(MB{@swiwknnv(pN4m(uO!>GG#0+UZZFXXh5k zvVJF9kwZ^9#VW{oQZ9dNV1X<%iyn9~dwKf8|Hf!>O*vR7x=39gjct~%s;$JGsIvO< zs=9=Ny85cx^3_!(#bi;Lss@k6N*)=6eq~8*Ex27lk*cDiP*t?{Q9}P)3l};3_unuT z)M1*B;(OdW8?cd_L;1BEYoiNl>xzM+sIvd%no3nsS$S1SbU|@Rsj9xBj@Eu{R9QiR zQ+P)MOH4Be4zZ!S<}nE$=jaiC$ttg^Z-^?(b}XsfSb)u3LgT3^QDHVKs$q9LR4>*f zY~l?y<#i>+<+VlCRaLNaiwX-$>#K^?V5HhQRb5GaZAo!KT}5q7fuu-PTc9qfEKsZJ z%8Dw=AGXzNOEx+Nod6Xj;M0zIXwuX0O$$_0;-mu_s8DUJkCixwRmBB`^`)gHHFUqW zr0VfLX2mgsTTbl&5!fM)eNt7@PzOw4iOY+Nsw*Kh0pI17CDrv1r)mLrL2Y?si98A7 zN4~l|R+3*>UX>pel@BJ(r{hLG9WU}9nzybPj0BqnRu$A?4Nl;IZ)bOHNr_rk0q&ex zRaa88UR9wkuUcII6hU=Wpz+lkROP@GsQsaSONyQDn*k6N5UHG=u*Bht&QWJCO;x8V zR|B%5wKQfdPfafVz&L5~YG_qe*4LFZ{5Ky2M+N2OSJy^Y*U}CbRkk#zV9ArY>3P4s z1mL3=)RdGghp6zd5mlB0CMYk;DXCPc%c^TYIgWv4^(FPtX~1DKQ(my_$@C}F)$7yh zD=Rm~)Hl%Iu@1=kG=UCkTfd_22^^$0Hbxj@Yq?+oevL{pFP|1Z52Kb6-8grcA z@lN~+&VJ$qV_BIwxz4#5Cw~$LUrWlX$}w-5psrs8Spp|O0bW#)nVY`EAxKPadC^)Y zS;vS3dn~rke-o#wkDd2ivAB6aPWrkftSN3#oHTpHDG~VTU3ib zs;i2@=Ko8K6Vb_uwV>b;6i%#Eh|McJy~lK7G6q@cHE6n(Ph)YZV=D5|Bu zATl@_7h4)q>~MsZ|>*s#V3#FIe*UCaR@5 zTu@#Cd$UxXwn0@>NsOPRRi)JvBh{5vh$r;9lT%))t|%ep(ehcd z$XqB#(F9dh8%cFFsJNsCD;q6%hJK6#iM7aX;W8AQFfJ9;M)vdu-5c*3Q%jpeb^-^Ae{B@;=XgUk<4%h;$o?^`^Ld+Ru;dh<*#XKx4e z`efT!kR=|CVdjq#=74H@s0^;;6*lCz35_lIitc6D#hum{`T`IIkAJ)cH(Rk+T-Jyw z{5~5g2_!uPq=2@cDg4N4U-*Fx31`7bn9SPbzV>P(Ldy{{z@6RGl+XS zfhkRh_Bnw4vjnCwFILnUGWliM z+40Ac=UOaNLz}TP08-osA*#N5f3}h=p#fA_h@nq%=u1TP8cE~%1 z@&}-9po+wv%w+g_i@=?GBIIA8M1cVC%A5Tx^CJLn(g3l-Lw6=02?@wyGsk?*yDX^H zMO-3ADk96Dhw=~}_Qu2aS$H^^u&M0}DhK;3hZa6pkX z5(al7vy=I}$qf{t42CH)k2Mx>eO+*@CxZ$G)L2tp9B@v|!0zdO#poc7T0!j6V5C$D z`&K8B;^gqOziHuLy$?OqQx_pZCml$-Cy;;?Xe}*8GF!@CgV^R6`JLb~&ndSt^Ozo`XGw4Y8IYVRLSS7VzggWx&N{1cyjqE^mv` zZ$0X9_Trv3`gINYnrL$YXH2)oWo}hO0B}ZN=Q=>r&b3|JcAp@p00yl6Che*Y?MfS0 zgpAn!Qn_2B%B?CU3>GnIab}F3oY9lM8Blo9;=F3~J2>Qf2Z-d+2=;4Nb!k_cK_5n1 z-#WL(PPeMF0bHm4UN`!^G35J!2946wFS|8b9Me;f_%u?OdBpP$Ii)M9GVtiNqYiKVc5nJi;HO|p1#utb zfgS(7`=)kxYBRvVVTBi&rw<`S;o|`oEr~w-F)aEMaFYZF-c;~J^d2X63vN$5y!9_Tn%98A*tA~1GKGK7ZksUJaZ~s|7x=yg zN{IkBkiXvHb_f{Wopj4J0Ue=r0qiFo-g;tt^C8+*G7Pwse2@(%0I87lnXI^93!F}W-_7atr&C5<0!=61b`mf;2z>rT z)3#`|#;Ft7J5&!104g8Rt?DCIwz)$%!}ZUh)F{WvVu!Hd@Vy7Zs1rut8^8hWF4qOa z?e5a2p@Z#vUNC&leT^o{slWY;-v@b4&u{u9vg;%cfwcapw4R~Vr#mKSeA5dwq~2bQ z>)31W_$dJqcJa_ozcLe!6EFbNv0jZk*lQt-P+)q{rz}%yjsdW#oqlUfzIPaeng%QK zYCOVTOGkHFm8UaDT>=iDYy;AKB-RZ_-DX7Jl|+w2E)X}P)9-D&FOKB&(wDs&3HM4_ zxYA+z!B0N0iEVw0?0r0ImMLwCO~{L7-KNhNh7H+-J$*d+;s@K7*u)fXV6d-FBeo)M zvdBA@SB@m{F;*en@rjm6;+IM0!Wrl_t;jpP*89AxHpWWQlX3R}l90?LBuO!ndCMdT zJ0yuQR-MmQp~!=Jx%y+WGyn%4Ld8j zrzxOEgW=(A(q=f?c8#-v$BC#`R?vNIz$gK~?Ab$z$*GpB=%^6Vcbpx9b{qv zvo2{=6JXFK*)>Unx*0Ii!I;%UB#trXx8m^(JN?7p}4BePIG}r+!0;9aTbgV;G&Ixn|kA*W^O)v zXnXS4exw~9ewR+A+|igH3S;+qX_aEPW8xy|t;{^Ym*E7lKMEWwRNf*V0MC61@J1I^eC_H@R)_#?LE?`X$r4L2&{GWp5PfQZG>#* z$xjdw?^^N8u;mx@Ga4>0b{%BA^>gfUixM!O|KYG{vW)dofkQp+QxKT)akBU%_! zBlHKz)fTo7NxZTU9Tev-=d3rPT4W={9C^@MGuvGZk8AVlFB8FHGd$QMzOaMSXvY8+ z#lqlG4buTwIm8w`1e7`ek8m~%2^#RD$tD@`5Rl^lJV6AK4nR*%je#cltv;#yW6+)n z>mBRvZ3vvSof|uBFoZrH3Oq06cwA%eHYB+Bl1 zple=Qf}=2*nN|e9c~sRxWe
  • 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 KQ!YLk5&D1LToUO3 literal 0 HcmV?d00001 diff --git a/board/wl82/objs/apps/JL-AIBT-SoundBox/mqtt/mqtt_protocol.c.d b/board/wl82/objs/apps/JL-AIBT-SoundBox/mqtt/mqtt_protocol.c.d new file mode 100644 index 0000000..ce06bd6 --- /dev/null +++ b/board/wl82/objs/apps/JL-AIBT-SoundBox/mqtt/mqtt_protocol.c.d @@ -0,0 +1,83 @@ +objs/apps/JL-AIBT-SoundBox/mqtt/mqtt_protocol.c.o: \ + ../../../../apps/JL-AIBT-SoundBox/mqtt/mqtt_protocol.c \ + ../../../../apps/JL-AIBT-SoundBox/mqtt/mqtt_protocol.h \ + ../../../../include_lib/c++/include\stdint.h \ + ../../../../include_lib/c++/include\__config \ + ../../../../include_lib/c++/include\stddef.h \ + ../../../../apps/JL-AIBT-SoundBox/mqtt/mqtt_config.h \ + ../../../../apps/JL-AIBT-SoundBox/mqtt/mqtt_manager.h \ + ../../../../apps/JL-AIBT-SoundBox/app\app_log.h \ + ../../../../apps/JL-AIBT-SoundBox/app/app_config.h \ + ../../../../include_lib\system/generic/printf.h \ + ../../../../include_lib\system/includes.h \ + ../../../../include_lib/system/generic/includes.h \ + ../../../../include_lib/system/generic/errno-base.h \ + ../../../../include_lib/system/generic/typedef.h \ + ../../../../include_lib/driver/cpu/wl82\asm/cpu.h \ + ../../../../include_lib/driver/cpu/wl82\asm/WL82.h \ + ../../../../include_lib/driver/cpu/wl82\asm/csfr.h \ + ../../../../include_lib/driver/cpu/wl82\asm/irq.h \ + ../../../../include_lib/driver/cpu/wl82\asm/hwi.h \ + ../../../../include_lib/system\generic/typedef.h \ + ../../../../include_lib\system/generic/log.h \ + ../../../../include_lib/c++/include\string.h \ + ../../../../include_lib/newlib/include\strings.h \ + ../../../../include_lib/newlib/include\sys/types.h \ + ../../../../include_lib/newlib/include\machine/types.h \ + ../../../../include_lib\system/malloc.h \ + ../../../../include_lib/system/generic/ascii.h \ + ../../../../include_lib/system/generic/atomic.h \ + ../../../../include_lib/system/generic/cpu.h \ + ../../../../include_lib/system/generic/irq.h \ + ../../../../include_lib/system/generic/ioctl.h \ + ../../../../include_lib/system/generic/jiffies.h \ + ../../../../include_lib/system/generic/list.h \ + ../../../../include_lib/system/generic/rect.h \ + ../../../../include_lib/system/generic/version.h \ + ../../../../include_lib/system/generic/lbuf.h \ + ../../../../include_lib\system/spinlock.h \ + ../../../../include_lib/system/generic/lbuf_lite.h \ + ../../../../include_lib/system/generic/circular_buf.h \ + ../../../../include_lib/system/generic/debug_lite.h \ + ../../../../include_lib/system/init.h \ + ../../../../include_lib/system/task.h \ + ../../../../include_lib/system/os/os_api.h \ + ../../../../include_lib/system\os/os_cpu.h \ + ../../../../include_lib/system\os/os_error.h \ + ../../../../include_lib/system\os/os_type.h \ + ../../../../include_lib/system/os/FreeRTOS/FreeRTOS.h \ + ../../../../include_lib/system/os/FreeRTOS/FreeRTOSConfig.h \ + ../../../../include_lib/system/os/FreeRTOS/pi32v2/portmacro.h \ + ../../../../include_lib/system/os/FreeRTOS/projdefs.h \ + ../../../../include_lib/system/os/FreeRTOS/portable.h \ + ../../../../include_lib/system/os/FreeRTOS/deprecated_definitions.h \ + ../../../../include_lib/system/os/FreeRTOS/mpu_wrappers.h \ + ../../../../include_lib/system/os/FreeRTOS/semphr.h \ + ../../../../include_lib/system/os/FreeRTOS/queue.h \ + ../../../../include_lib/system/os/FreeRTOS/task.h \ + ../../../../include_lib/system/os/FreeRTOS/list.h \ + ../../../../include_lib/system/os/FreeRTOS/event_groups.h \ + ../../../../include_lib/system/os/FreeRTOS/timers.h \ + ../../../../include_lib/system/timer.h \ + ../../../../include_lib/system/sys_time.h \ + ../../../../include_lib/system/wait.h \ + ../../../../include_lib/system/app_core.h \ + ../../../../include_lib\utils/event/event.h \ + ../../../../include_lib/system/app_msg.h \ + ../../../../include_lib/system/bank_switch.h \ + ../../../../include_lib/net\json_c/json.h \ + ../../../../include_lib/net\json_c/json_debug.h \ + ../../../../include_lib/c++/include\stdlib.h \ + ../../../../include_lib/net\json_c/linkhash.h \ + ../../../../include_lib/net\json_c/json_object.h \ + ../../../../include_lib/net\json_c/json_inttypes.h \ + ../../../../include_lib/net\json_c/json_config.h \ + ../../../../include_lib/c++/include\inttypes.h \ + ../../../../include_lib/net\json_c/printbuf.h \ + ../../../../include_lib/net\json_c/arraylist.h \ + ../../../../include_lib/net\json_c/json_util.h \ + ../../../../include_lib/net\json_c/json_pointer.h \ + ../../../../include_lib/net\json_c/json_tokener.h \ + ../../../../include_lib/net\json_c/json_object_iterator.h \ + ../../../../include_lib/net\json_c/json_c_version.h \ + ../../../../include_lib/c++/include\stdio.h diff --git a/board/wl82/objs/apps/JL-AIBT-SoundBox/mqtt/mqtt_protocol.c.o b/board/wl82/objs/apps/JL-AIBT-SoundBox/mqtt/mqtt_protocol.c.o new file mode 100644 index 0000000000000000000000000000000000000000..4673177c72364ffeed66225b1afedbbf387459e1 GIT binary patch literal 15616 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 D@xrME literal 0 HcmV?d00001 diff --git a/board/wl82/objs/apps/JL-AIBT-SoundBox/radar/r60abd1.c.d b/board/wl82/objs/apps/JL-AIBT-SoundBox/radar/r60abd1.c.d new file mode 100644 index 0000000..ef9ac65 --- /dev/null +++ b/board/wl82/objs/apps/JL-AIBT-SoundBox/radar/r60abd1.c.d @@ -0,0 +1,126 @@ +objs/apps/JL-AIBT-SoundBox/radar/r60abd1.c.o: \ + ../../../../apps/JL-AIBT-SoundBox/radar/r60abd1.c \ + ../../../../include_lib\system/includes.h \ + ../../../../include_lib/system/generic/includes.h \ + ../../../../include_lib/system/generic/errno-base.h \ + ../../../../include_lib/system/generic/typedef.h \ + ../../../../include_lib/driver/cpu/wl82\asm/cpu.h \ + ../../../../include_lib/driver/cpu/wl82\asm/WL82.h \ + ../../../../include_lib/driver/cpu/wl82\asm/csfr.h \ + ../../../../include_lib/driver/cpu/wl82\asm/irq.h \ + ../../../../include_lib/driver/cpu/wl82\asm/hwi.h \ + ../../../../include_lib/system\generic/typedef.h \ + ../../../../include_lib/system\generic/printf.h \ + ../../../../include_lib\system/generic/log.h \ + ../../../../include_lib/c++/include\string.h \ + ../../../../include_lib/c++/include\__config \ + ../../../../include_lib/newlib/include\strings.h \ + ../../../../include_lib/newlib/include\sys/types.h \ + ../../../../include_lib/newlib/include\sys/_stdint.h \ + ../../../../include_lib/c++/include\stddef.h \ + ../../../../include_lib/newlib/include\machine/types.h \ + ../../../../include_lib\system/malloc.h \ + ../../../../include_lib/system/generic/ascii.h \ + ../../../../include_lib/system/generic/atomic.h \ + ../../../../include_lib/system/generic/cpu.h \ + ../../../../include_lib/system/generic/irq.h \ + ../../../../include_lib/system/generic/ioctl.h \ + ../../../../include_lib/system/generic/jiffies.h \ + ../../../../include_lib/system/generic/list.h \ + ../../../../include_lib/system/generic/rect.h \ + ../../../../include_lib/system/generic/version.h \ + ../../../../include_lib/system/generic/lbuf.h \ + ../../../../include_lib\system/spinlock.h \ + ../../../../include_lib/system/generic/lbuf_lite.h \ + ../../../../include_lib/system/generic/circular_buf.h \ + ../../../../include_lib/system/generic/debug_lite.h \ + ../../../../include_lib/system/init.h \ + ../../../../include_lib/system/task.h \ + ../../../../include_lib/system/os/os_api.h \ + ../../../../include_lib/system\os/os_cpu.h \ + ../../../../include_lib/system\os/os_error.h \ + ../../../../include_lib/system\os/os_type.h \ + ../../../../include_lib/system/os/FreeRTOS/FreeRTOS.h \ + ../../../../include_lib/system/os/FreeRTOS/FreeRTOSConfig.h \ + ../../../../include_lib/system/os/FreeRTOS/pi32v2/portmacro.h \ + ../../../../include_lib/c++/include\stdint.h \ + ../../../../include_lib/system/os/FreeRTOS/projdefs.h \ + ../../../../include_lib/system/os/FreeRTOS/portable.h \ + ../../../../include_lib/system/os/FreeRTOS/deprecated_definitions.h \ + ../../../../include_lib/system/os/FreeRTOS/mpu_wrappers.h \ + ../../../../include_lib/system/os/FreeRTOS/semphr.h \ + ../../../../include_lib/system/os/FreeRTOS/queue.h \ + ../../../../include_lib/system/os/FreeRTOS/task.h \ + ../../../../include_lib/system/os/FreeRTOS/list.h \ + ../../../../include_lib/system/os/FreeRTOS/event_groups.h \ + ../../../../include_lib/system/os/FreeRTOS/timers.h \ + ../../../../include_lib/system/timer.h \ + ../../../../include_lib/system/sys_time.h \ + ../../../../include_lib/system/wait.h \ + ../../../../include_lib/system/app_core.h \ + ../../../../include_lib\utils/event/event.h \ + ../../../../include_lib/system/app_msg.h \ + ../../../../include_lib/system/bank_switch.h \ + ../../../../apps/JL-AIBT-SoundBox/app\app_log.h \ + ../../../../apps/JL-AIBT-SoundBox/app/app_config.h \ + ../../../../apps/JL-AIBT-SoundBox/radar/r60abd1.h \ + ../../../../apps/JL-AIBT-SoundBox/radar/radar_uart.h \ + ../../../../include_lib/driver\device/uart.h \ + ../../../../include_lib/driver\device/device.h \ + ../../../../include_lib/driver\device/ioctl_cmds.h \ + ../../../../include_lib/driver/cpu/wl82\asm/includes.h \ + ../../../../include_lib/driver/cpu/wl82\asm/audio.h \ + ../../../../include_lib/driver/cpu/wl82\asm/ladc.h \ + ../../../../include_lib/driver/cpu/wl82\asm/dac.h \ + ../../../../include_lib/driver/cpu/wl82\asm/iis.h \ + ../../../../include_lib/driver/cpu/wl82\asm/plnk.h \ + ../../../../include_lib/driver/cpu/wl82\asm/src.h \ + ../../../../include_lib/driver/cpu/wl82\asm/spdif.h \ + ../../../../include_lib/driver/cpu/wl82\asm/adc_api.h \ + ../../../../include_lib/driver/cpu/wl82\asm/cache.h \ + ../../../../include_lib/driver/cpu/wl82\asm/dma.h \ + ../../../../include_lib/driver/cpu/wl82\asm/debug.h \ + ../../../../include_lib/driver/cpu/wl82\asm/gpio.h \ + ../../../../include_lib/driver/cpu/wl82\asm/iic.h \ + ../../../../include_lib/driver/cpu/wl82\asm/lock.h \ + ../../../../include_lib/driver/cpu/wl82\asm/sdmmc.h \ + ../../../../include_lib/driver/device\sdio/sdmmc.h \ + ../../../../include_lib/driver/cpu/wl82\asm/spiflash.h \ + ../../../../include_lib/driver\device/spiflash.h \ + ../../../../include_lib/driver/cpu/wl82\asm/startup.h \ + ../../../../include_lib/driver/cpu/wl82\asm/uart.h \ + ../../../../include_lib/driver/cpu/wl82\asm/imc.h \ + ../../../../include_lib/driver/cpu/wl82\asm/isc.h \ + ../../../../include_lib/utils\fs/fs.h \ + ../../../../include_lib/utils\fs/fs_file_name.h \ + ../../../../include_lib/utils\fs/sdfile.h \ + ../../../../include_lib/driver/cpu/wl82\asm/isp_dev.h \ + ../../../../include_lib/driver/cpu/wl82\asm/device_drive.h \ + ../../../../include_lib/driver/cpu/wl82\asm/isp_alg.h \ + ../../../../include_lib/driver/cpu/wl82\asm/rtc.h \ + ../../../../include_lib/driver/cpu/wl82\asm/clock.h \ + ../../../../include_lib/driver/cpu/wl82\asm/crc16.h \ + ../../../../include_lib/driver/cpu/wl82\asm/spi.h \ + ../../../../include_lib/driver/cpu/wl82\asm/imd.h \ + ../../../../include_lib/driver/device\video/fb.h \ + ../../../../include_lib/driver/cpu/wl82\asm/imr.h \ + ../../../../include_lib/driver/cpu/wl82\asm/port_waked_up.h \ + ../../../../include_lib/driver/cpu/wl82\asm/image_enc.h \ + ../../../../include_lib/driver/device\video/video.h \ + ../../../../include_lib/driver/device\video/video_ioctl.h \ + ../../../../include_lib/driver/cpu/wl82\asm/jpeg_codec.h \ + ../../../../include_lib/driver/cpu/wl82\asm/jpeg_encoder.h \ + ../../../../include_lib/driver/cpu/wl82\asm/jpeg_abr.h \ + ../../../../include_lib/driver/cpu/wl82\asm/imb_driver.h \ + ../../../../include_lib/driver/cpu/wl82\asm/uvc_device.h \ + ../../../../include_lib/driver/device\video/camera.h \ + ../../../../include_lib/driver/cpu/wl82\asm/bus_device.h \ + ../../../../include_lib/driver/cpu/wl82\asm/pap.h \ + ../../../../include_lib/driver/cpu/wl82\asm/emi.h \ + ../../../../include_lib/driver\device/gpio.h \ + ../../../../include_lib/driver/cpu/wl82\asm/power_interface.h \ + ../../../../include_lib/driver/cpu/wl82\asm/p33.h \ + ../../../../include_lib/driver/cpu/wl82\asm/pwm.h \ + ../../../../include_lib/driver/cpu/wl82\asm/pwm_led.h \ + ../../../../include_lib/driver/cpu/wl82\asm/wdt.h \ + ../../../../include_lib/driver/cpu/wl82\asm/jpeg_decoder.h diff --git a/board/wl82/objs/apps/JL-AIBT-SoundBox/radar/r60abd1.c.o b/board/wl82/objs/apps/JL-AIBT-SoundBox/radar/r60abd1.c.o new file mode 100644 index 0000000000000000000000000000000000000000..50fb58712a81981370f2630f4f9ef1c5cfe58c65 GIT binary patch literal 15896 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 Ym&LBecz~BCR{jOP)r0ZCqYk0}2fbxr^Z)<= literal 0 HcmV?d00001 diff --git a/board/wl82/objs/apps/JL-AIBT-SoundBox/radar/radar_command_service.c.d b/board/wl82/objs/apps/JL-AIBT-SoundBox/radar/radar_command_service.c.d new file mode 100644 index 0000000..13d1923 --- /dev/null +++ b/board/wl82/objs/apps/JL-AIBT-SoundBox/radar/radar_command_service.c.d @@ -0,0 +1,67 @@ +objs/apps/JL-AIBT-SoundBox/radar/radar_command_service.c.o: \ + ../../../../apps/JL-AIBT-SoundBox/radar/radar_command_service.c \ + ../../../../include_lib\system/includes.h \ + ../../../../include_lib/system/generic/includes.h \ + ../../../../include_lib/system/generic/errno-base.h \ + ../../../../include_lib/system/generic/typedef.h \ + ../../../../include_lib/driver/cpu/wl82\asm/cpu.h \ + ../../../../include_lib/driver/cpu/wl82\asm/WL82.h \ + ../../../../include_lib/driver/cpu/wl82\asm/csfr.h \ + ../../../../include_lib/driver/cpu/wl82\asm/irq.h \ + ../../../../include_lib/driver/cpu/wl82\asm/hwi.h \ + ../../../../include_lib/system\generic/typedef.h \ + ../../../../include_lib/system\generic/printf.h \ + ../../../../include_lib\system/generic/log.h \ + ../../../../include_lib/c++/include\string.h \ + ../../../../include_lib/c++/include\__config \ + ../../../../include_lib/newlib/include\strings.h \ + ../../../../include_lib/newlib/include\sys/types.h \ + ../../../../include_lib/newlib/include\sys/_stdint.h \ + ../../../../include_lib/c++/include\stddef.h \ + ../../../../include_lib/newlib/include\machine/types.h \ + ../../../../include_lib\system/malloc.h \ + ../../../../include_lib/system/generic/ascii.h \ + ../../../../include_lib/system/generic/atomic.h \ + ../../../../include_lib/system/generic/cpu.h \ + ../../../../include_lib/system/generic/irq.h \ + ../../../../include_lib/system/generic/ioctl.h \ + ../../../../include_lib/system/generic/jiffies.h \ + ../../../../include_lib/system/generic/list.h \ + ../../../../include_lib/system/generic/rect.h \ + ../../../../include_lib/system/generic/version.h \ + ../../../../include_lib/system/generic/lbuf.h \ + ../../../../include_lib\system/spinlock.h \ + ../../../../include_lib/system/generic/lbuf_lite.h \ + ../../../../include_lib/system/generic/circular_buf.h \ + ../../../../include_lib/system/generic/debug_lite.h \ + ../../../../include_lib/system/init.h \ + ../../../../include_lib/system/task.h \ + ../../../../include_lib/system/os/os_api.h \ + ../../../../include_lib/system\os/os_cpu.h \ + ../../../../include_lib/system\os/os_error.h \ + ../../../../include_lib/system\os/os_type.h \ + ../../../../include_lib/system/os/FreeRTOS/FreeRTOS.h \ + ../../../../include_lib/system/os/FreeRTOS/FreeRTOSConfig.h \ + ../../../../include_lib/system/os/FreeRTOS/pi32v2/portmacro.h \ + ../../../../include_lib/c++/include\stdint.h \ + ../../../../include_lib/system/os/FreeRTOS/projdefs.h \ + ../../../../include_lib/system/os/FreeRTOS/portable.h \ + ../../../../include_lib/system/os/FreeRTOS/deprecated_definitions.h \ + ../../../../include_lib/system/os/FreeRTOS/mpu_wrappers.h \ + ../../../../include_lib/system/os/FreeRTOS/semphr.h \ + ../../../../include_lib/system/os/FreeRTOS/queue.h \ + ../../../../include_lib/system/os/FreeRTOS/task.h \ + ../../../../include_lib/system/os/FreeRTOS/list.h \ + ../../../../include_lib/system/os/FreeRTOS/event_groups.h \ + ../../../../include_lib/system/os/FreeRTOS/timers.h \ + ../../../../include_lib/system/timer.h \ + ../../../../include_lib/system/sys_time.h \ + ../../../../include_lib/system/wait.h \ + ../../../../include_lib/system/app_core.h \ + ../../../../include_lib\utils/event/event.h \ + ../../../../include_lib/system/app_msg.h \ + ../../../../include_lib/system/bank_switch.h \ + ../../../../apps/JL-AIBT-SoundBox/app\app_log.h \ + ../../../../apps/JL-AIBT-SoundBox/app/app_config.h \ + ../../../../apps/JL-AIBT-SoundBox/radar/radar_command_service.h \ + ../../../../apps/JL-AIBT-SoundBox/radar/r60abd1.h diff --git a/board/wl82/objs/apps/JL-AIBT-SoundBox/radar/radar_command_service.c.o b/board/wl82/objs/apps/JL-AIBT-SoundBox/radar/radar_command_service.c.o new file mode 100644 index 0000000000000000000000000000000000000000..3e265685e549cd666bc30e460707133ed691f842 GIT binary patch literal 12140 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 Kn<(sP`20VuoW)E4 literal 0 HcmV?d00001 diff --git a/board/wl82/objs/apps/JL-AIBT-SoundBox/radar/radar_uart.c.d b/board/wl82/objs/apps/JL-AIBT-SoundBox/radar/radar_uart.c.d new file mode 100644 index 0000000..2d34dc9 --- /dev/null +++ b/board/wl82/objs/apps/JL-AIBT-SoundBox/radar/radar_uart.c.d @@ -0,0 +1,108 @@ +objs/apps/JL-AIBT-SoundBox/radar/radar_uart.c.o: \ + ../../../../apps/JL-AIBT-SoundBox/radar/radar_uart.c \ + ../../../../apps/JL-AIBT-SoundBox/radar/radar_uart.h \ + ../../../../include_lib/driver\device/uart.h \ + ../../../../include_lib/system\generic/typedef.h \ + ../../../../include_lib/driver/cpu/wl82\asm/cpu.h \ + ../../../../include_lib/driver/cpu/wl82\asm/WL82.h \ + ../../../../include_lib/driver/cpu/wl82\asm/csfr.h \ + ../../../../include_lib/driver/cpu/wl82\asm/irq.h \ + ../../../../include_lib/driver/cpu/wl82\asm/hwi.h \ + ../../../../include_lib/system\generic/printf.h \ + ../../../../include_lib\system/generic/log.h \ + ../../../../include_lib/system\generic/errno-base.h \ + ../../../../include_lib/c++/include\string.h \ + ../../../../include_lib/c++/include\__config \ + ../../../../include_lib/newlib/include\strings.h \ + ../../../../include_lib/newlib/include\sys/types.h \ + ../../../../include_lib/newlib/include\sys/_stdint.h \ + ../../../../include_lib/c++/include\stddef.h \ + ../../../../include_lib/newlib/include\machine/types.h \ + ../../../../include_lib\system/malloc.h \ + ../../../../include_lib/driver\device/device.h \ + ../../../../include_lib/system\generic/list.h \ + ../../../../include_lib/system\generic/atomic.h \ + ../../../../include_lib/system/generic/cpu.h \ + ../../../../include_lib/system/generic/irq.h \ + ../../../../include_lib/driver\device/ioctl_cmds.h \ + ../../../../include_lib/system\generic/ioctl.h \ + ../../../../include_lib\system/task.h \ + ../../../../include_lib/system/os/os_api.h \ + ../../../../include_lib/system\os/os_cpu.h \ + ../../../../include_lib/system\generic/jiffies.h \ + ../../../../include_lib/system\os/os_error.h \ + ../../../../include_lib/system\os/os_type.h \ + ../../../../include_lib/system/os/FreeRTOS/FreeRTOS.h \ + ../../../../include_lib/system/os/FreeRTOS/FreeRTOSConfig.h \ + ../../../../include_lib/system/os/FreeRTOS/pi32v2/portmacro.h \ + ../../../../include_lib/c++/include\stdint.h \ + ../../../../include_lib/system/os/FreeRTOS/projdefs.h \ + ../../../../include_lib/system/os/FreeRTOS/portable.h \ + ../../../../include_lib/system/os/FreeRTOS/deprecated_definitions.h \ + ../../../../include_lib/system/os/FreeRTOS/mpu_wrappers.h \ + ../../../../include_lib/system/os/FreeRTOS/semphr.h \ + ../../../../include_lib/system/os/FreeRTOS/queue.h \ + ../../../../include_lib/system/os/FreeRTOS/task.h \ + ../../../../include_lib/system/os/FreeRTOS/list.h \ + ../../../../include_lib/system/os/FreeRTOS/event_groups.h \ + ../../../../include_lib/system/os/FreeRTOS/timers.h \ + ../../../../include_lib/driver/cpu/wl82\asm/includes.h \ + ../../../../include_lib/driver/cpu/wl82\asm/audio.h \ + ../../../../include_lib/driver/cpu/wl82\asm/ladc.h \ + ../../../../include_lib/driver/cpu/wl82\asm/dac.h \ + ../../../../include_lib/driver/cpu/wl82\asm/iis.h \ + ../../../../include_lib/driver/cpu/wl82\asm/plnk.h \ + ../../../../include_lib/driver/cpu/wl82\asm/src.h \ + ../../../../include_lib/system\generic/circular_buf.h \ + ../../../../include_lib\system/spinlock.h \ + ../../../../include_lib/driver/cpu/wl82\asm/spdif.h \ + ../../../../include_lib/driver/cpu/wl82\asm/adc_api.h \ + ../../../../include_lib/driver/cpu/wl82\asm/cache.h \ + ../../../../include_lib/driver/cpu/wl82\asm/dma.h \ + ../../../../include_lib/driver/cpu/wl82\asm/debug.h \ + ../../../../include_lib/driver/cpu/wl82\asm/gpio.h \ + ../../../../include_lib/driver/cpu/wl82\asm/iic.h \ + ../../../../include_lib/driver/cpu/wl82\asm/lock.h \ + ../../../../include_lib/driver/cpu/wl82\asm/sdmmc.h \ + ../../../../include_lib/driver/device\sdio/sdmmc.h \ + ../../../../include_lib/driver/cpu/wl82\asm/spiflash.h \ + ../../../../include_lib/driver\device/spiflash.h \ + ../../../../include_lib/driver/cpu/wl82\asm/startup.h \ + ../../../../include_lib/driver/cpu/wl82\asm/uart.h \ + ../../../../include_lib/driver/cpu/wl82\asm/imc.h \ + ../../../../include_lib/driver/cpu/wl82\asm/isc.h \ + ../../../../include_lib/utils\fs/fs.h \ + ../../../../include_lib\system/sys_time.h \ + ../../../../include_lib/utils\fs/fs_file_name.h \ + ../../../../include_lib/utils\fs/sdfile.h \ + ../../../../include_lib/driver/cpu/wl82\asm/isp_dev.h \ + ../../../../include_lib/driver/cpu/wl82\asm/device_drive.h \ + ../../../../include_lib/driver/cpu/wl82\asm/isp_alg.h \ + ../../../../include_lib/driver/cpu/wl82\asm/rtc.h \ + ../../../../include_lib/driver/cpu/wl82\asm/clock.h \ + ../../../../include_lib/driver/cpu/wl82\asm/crc16.h \ + ../../../../include_lib/driver/cpu/wl82\asm/spi.h \ + ../../../../include_lib/driver/cpu/wl82\asm/imd.h \ + ../../../../include_lib/driver/device\video/fb.h \ + ../../../../include_lib/driver/cpu/wl82\asm/imr.h \ + ../../../../include_lib/driver/cpu/wl82\asm/port_waked_up.h \ + ../../../../include_lib/driver/cpu/wl82\asm/image_enc.h \ + ../../../../include_lib/driver/device\video/video.h \ + ../../../../include_lib/driver/device\video/video_ioctl.h \ + ../../../../include_lib/system\generic/lbuf.h \ + ../../../../include_lib/driver/cpu/wl82\asm/jpeg_codec.h \ + ../../../../include_lib/driver/cpu/wl82\asm/jpeg_encoder.h \ + ../../../../include_lib/driver/cpu/wl82\asm/jpeg_abr.h \ + ../../../../include_lib/driver/cpu/wl82\asm/imb_driver.h \ + ../../../../include_lib/driver/cpu/wl82\asm/uvc_device.h \ + ../../../../include_lib/driver/device\video/camera.h \ + ../../../../include_lib/driver/cpu/wl82\asm/bus_device.h \ + ../../../../include_lib/driver/cpu/wl82\asm/pap.h \ + ../../../../include_lib/driver/cpu/wl82\asm/emi.h \ + ../../../../include_lib/driver\device/gpio.h \ + ../../../../include_lib/driver/cpu/wl82\asm/power_interface.h \ + ../../../../include_lib/driver/cpu/wl82\asm/p33.h \ + ../../../../include_lib/driver/cpu/wl82\asm/pwm.h \ + ../../../../include_lib/driver/cpu/wl82\asm/pwm_led.h \ + ../../../../include_lib/driver/cpu/wl82\asm/wdt.h \ + ../../../../include_lib/driver/cpu/wl82\asm/jpeg_decoder.h diff --git a/board/wl82/objs/apps/JL-AIBT-SoundBox/radar/radar_uart.c.o b/board/wl82/objs/apps/JL-AIBT-SoundBox/radar/radar_uart.c.o new file mode 100644 index 0000000000000000000000000000000000000000..d0e42936b946d36aa4dfad91b35ab5baba1e0acd GIT binary patch literal 7236 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 JUwx#%{{zKte#8I( literal 0 HcmV?d00001 diff --git a/board/wl82/objs/apps/JL-AIBT-SoundBox/wifi/wifi_manager.c.d b/board/wl82/objs/apps/JL-AIBT-SoundBox/wifi/wifi_manager.c.d new file mode 100644 index 0000000..53913c0 --- /dev/null +++ b/board/wl82/objs/apps/JL-AIBT-SoundBox/wifi/wifi_manager.c.d @@ -0,0 +1,69 @@ +objs/apps/JL-AIBT-SoundBox/wifi/wifi_manager.c.o: \ + ../../../../apps/JL-AIBT-SoundBox/wifi/wifi_manager.c \ + ../../../../include_lib\system/includes.h \ + ../../../../include_lib/system/generic/includes.h \ + ../../../../include_lib/system/generic/errno-base.h \ + ../../../../include_lib/system/generic/typedef.h \ + ../../../../include_lib/driver/cpu/wl82\asm/cpu.h \ + ../../../../include_lib/driver/cpu/wl82\asm/WL82.h \ + ../../../../include_lib/driver/cpu/wl82\asm/csfr.h \ + ../../../../include_lib/driver/cpu/wl82\asm/irq.h \ + ../../../../include_lib/driver/cpu/wl82\asm/hwi.h \ + ../../../../include_lib/system\generic/typedef.h \ + ../../../../include_lib/system\generic/printf.h \ + ../../../../include_lib\system/generic/log.h \ + ../../../../include_lib/c++/include\string.h \ + ../../../../include_lib/c++/include\__config \ + ../../../../include_lib/newlib/include\strings.h \ + ../../../../include_lib/newlib/include\sys/types.h \ + ../../../../include_lib/newlib/include\sys/_stdint.h \ + ../../../../include_lib/c++/include\stddef.h \ + ../../../../include_lib/newlib/include\machine/types.h \ + ../../../../include_lib\system/malloc.h \ + ../../../../include_lib/system/generic/ascii.h \ + ../../../../include_lib/system/generic/atomic.h \ + ../../../../include_lib/system/generic/cpu.h \ + ../../../../include_lib/system/generic/irq.h \ + ../../../../include_lib/system/generic/ioctl.h \ + ../../../../include_lib/system/generic/jiffies.h \ + ../../../../include_lib/system/generic/list.h \ + ../../../../include_lib/system/generic/rect.h \ + ../../../../include_lib/system/generic/version.h \ + ../../../../include_lib/system/generic/lbuf.h \ + ../../../../include_lib\system/spinlock.h \ + ../../../../include_lib/system/generic/lbuf_lite.h \ + ../../../../include_lib/system/generic/circular_buf.h \ + ../../../../include_lib/system/generic/debug_lite.h \ + ../../../../include_lib/system/init.h \ + ../../../../include_lib/system/task.h \ + ../../../../include_lib/system/os/os_api.h \ + ../../../../include_lib/system\os/os_cpu.h \ + ../../../../include_lib/system\os/os_error.h \ + ../../../../include_lib/system\os/os_type.h \ + ../../../../include_lib/system/os/FreeRTOS/FreeRTOS.h \ + ../../../../include_lib/system/os/FreeRTOS/FreeRTOSConfig.h \ + ../../../../include_lib/system/os/FreeRTOS/pi32v2/portmacro.h \ + ../../../../include_lib/c++/include\stdint.h \ + ../../../../include_lib/system/os/FreeRTOS/projdefs.h \ + ../../../../include_lib/system/os/FreeRTOS/portable.h \ + ../../../../include_lib/system/os/FreeRTOS/deprecated_definitions.h \ + ../../../../include_lib/system/os/FreeRTOS/mpu_wrappers.h \ + ../../../../include_lib/system/os/FreeRTOS/semphr.h \ + ../../../../include_lib/system/os/FreeRTOS/queue.h \ + ../../../../include_lib/system/os/FreeRTOS/task.h \ + ../../../../include_lib/system/os/FreeRTOS/list.h \ + ../../../../include_lib/system/os/FreeRTOS/event_groups.h \ + ../../../../include_lib/system/os/FreeRTOS/timers.h \ + ../../../../include_lib/system/timer.h \ + ../../../../include_lib/system/sys_time.h \ + ../../../../include_lib/system/wait.h \ + ../../../../include_lib/system/app_core.h \ + ../../../../include_lib\utils/event/event.h \ + ../../../../include_lib/system/app_msg.h \ + ../../../../include_lib/system/bank_switch.h \ + ../../../../apps/JL-AIBT-SoundBox/app\app_log.h \ + ../../../../apps/JL-AIBT-SoundBox/app/app_config.h \ + ../../../../include_lib/net\wifi/wifi_connect.h \ + ../../../../include_lib/net\wifi/wifi_def.h \ + ../../../../apps/JL-AIBT-SoundBox/wifi/wifi_sta.h \ + ../../../../apps/JL-AIBT-SoundBox/wifi/wifi_manager.h diff --git a/board/wl82/objs/apps/JL-AIBT-SoundBox/wifi/wifi_manager.c.o b/board/wl82/objs/apps/JL-AIBT-SoundBox/wifi/wifi_manager.c.o new file mode 100644 index 0000000000000000000000000000000000000000..d0d1490eddff887f8d1d45e1e8aa4456027ed4a3 GIT binary patch literal 14444 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 literal 0 HcmV?d00001 diff --git a/board/wl82/objs/apps/common/c++/cpp_run_init.c.d b/board/wl82/objs/apps/common/c++/cpp_run_init.c.d new file mode 100644 index 0000000..cb9d70e --- /dev/null +++ b/board/wl82/objs/apps/common/c++/cpp_run_init.c.d @@ -0,0 +1,20 @@ +objs/apps/common/c++/cpp_run_init.c.o: \ + ../../../../apps/common/c++/cpp_run_init.c \ + ../../../../include_lib/system/generic\typedef.h \ + ../../../../include_lib/driver/cpu/wl82\asm/cpu.h \ + ../../../../include_lib/driver/cpu/wl82\asm/WL82.h \ + ../../../../include_lib/driver/cpu/wl82\asm/csfr.h \ + ../../../../include_lib/driver/cpu/wl82\asm/irq.h \ + ../../../../include_lib/driver/cpu/wl82\asm/hwi.h \ + ../../../../include_lib/system\generic/typedef.h \ + ../../../../include_lib/system\generic/printf.h \ + ../../../../include_lib\system/generic/log.h \ + ../../../../include_lib/system\generic/errno-base.h \ + ../../../../include_lib/c++/include\string.h \ + ../../../../include_lib/c++/include\__config \ + ../../../../include_lib/newlib/include\strings.h \ + ../../../../include_lib/newlib/include\sys/types.h \ + ../../../../include_lib/newlib/include\sys/_stdint.h \ + ../../../../include_lib/c++/include\stddef.h \ + ../../../../include_lib/newlib/include\machine/types.h \ + ../../../../include_lib\system/malloc.h diff --git a/board/wl82/objs/apps/common/c++/cpp_run_init.c.o b/board/wl82/objs/apps/common/c++/cpp_run_init.c.o new file mode 100644 index 0000000000000000000000000000000000000000..f1fccf3ae44db68c6863eccff248d0b5aae968a5 GIT binary patch literal 2580 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 TgW_D{Q&Slc%t7Z$`lRt6M3RM{ literal 0 HcmV?d00001 diff --git a/board/wl82/objs/apps/common/c++/cxx_runtime.cpp.d b/board/wl82/objs/apps/common/c++/cxx_runtime.cpp.d new file mode 100644 index 0000000..10cb83f --- /dev/null +++ b/board/wl82/objs/apps/common/c++/cxx_runtime.cpp.d @@ -0,0 +1,2 @@ +objs/apps/common/c++/cxx_runtime.cpp.o: \ + ../../../../apps/common/c++/cxx_runtime.cpp diff --git a/board/wl82/objs/apps/common/c++/cxx_runtime.cpp.o b/board/wl82/objs/apps/common/c++/cxx_runtime.cpp.o new file mode 100644 index 0000000000000000000000000000000000000000..dfb33170737daf6b613515bd186cf0011cd456b7 GIT binary patch literal 13020 zcmeHtdt4J&+W(nMG7}(9!bJ>{#EGIy6)=FsAka-ntk}{P)Vf}%BtQ_9O9(*%-EAic z5^ULSblpn3`*wr1yY#lj*0#2_ZMdkc#Wq^DrM|Wc6|HTprD}J(``Y?GXF>pL+u#2F zfAhh~%sFSy^L_5mb7HQ+|Iy7c2#F9vB@#`-%Jpw7xcKgU$wnd#4cPMYKrfi^Op%;e#cdV!0r9S48fZEG#=z~HVw_mJ&j(vDbZ8sqqhxsGQ6I~F1itBS-i&H?Xkmsg}bSZ zZt{6DG_<3_y-iFv>uA5C*Qq?$sX#8pNwca~uNdxBoZ?iyYUOa}j3a8rFw7DfkJaR9 zN~AfH$JXI#svsReRPM2Nz@B71=Yg$kXb={gRmTYS^r-TbUooauoPw>8>La!Cv{Q9V zuR7&Z46Bu=2p`?l<*^~E(SeaPi9OpAJsF&*F^_KaVRkYS>1}zQZ53prgKn%KVb%%^ zT0M;wZo8GP@AzT-y~>X|XAE_!P7x}MpJ!wma{M~kD5e{K>h*JK<=Z{VV@|~>-5db? zky!3iEq4)ogrl9^CJMuo@fqwP~#_zZLbR7RD9{3gSr%3h~xl7$R;E=tn9 z*je0)Eo=@Vz1)ufGa+n3r`3wnKc)8$k6lYQCemQ}ze=Q=9M~Pe1#XZ(_5w}?UNAza zPWC9@zQKyxz!R-bmH9P%AhB&+`Hpz%?G(*T|Mn;vO5%5ZI!(&e6$xbB# z(KRR1CO%5kdp*_)>{bp3csC8>O%-mN$z!j;vA5Cc$$&5@1_t>!08vZxQ#PPee%7gk z7y|e)Bh!)NFk!!3q8Wpo zpas=ude}t8-3-zOEq8mgsI3`z0m*<`e<;Q5RY9TwDj)Umn>dvpL1de>MiY68#kTcx zM6txXGUkGx`O+$_9$~)rGZ&Eb3M;MFF=tunSrda&nJ-!Cr2^)RPI|#Bt!AZP7Dz9` ztd4;-pPHnf!hL|cER$Z+NvloFc!2ss#$4eTF0+Nq8Z=}gVdlQR>=w7S+mLyH$Z0Vw z>o&x<8?@apOPZKbKXbW&K|Rb_jr4MW8V8~p=2MLn_B@BAu+{;yGh-_zN`bz z%mIV;0NyJ5kYU+DGH16t`+z>P+pz2asRNwSvq*AroB<@4WXu-@Of`~z>18hJq`*#f z0dv92d=a2v!NmY|p@10$21l7M1JtJ@%sI^u<8R42WQgxFcVc8$tS-Z*11I}9j@S(nJV8m~TKVZ-X$Ytmpr~p_-GK?I!kTK&(3XndzL74s7 z0fV-^ZyB&Z(3cf3WVVwzhd=^O?T|aO!vMmG2U_Pr><%QmB4aLDK~vId4KrRK<+29} z9lSo!m${qF0RX#!x*=!4kU2uCLokOxSBeQ@75XC++>p+hd3>6G)k_8zU#%0hZFOV}{ zY@fVggB+%;nzxD$cXo>bZ{_dH+ULgV0Qv7Gv-TOX5IE7-1&n_LTh}>OIvT+893N*u ztyh4Z0Cm>Sd>UZD>AoCcs{PDa8D2Vfn`I6EHECxj~SVc9KSxo zjE?-&>pj`~`Z5n1GQEa)uoJMNK|_28*tQ<)(KqFiykP?uqewaqkgUuNU zz&@BXnX|i38|cdd3A7nDOqWPl1HsP1%1i zWCj3$0m4PjkUJZ*vlYS!4nER4Bm@0k2FVlzRq*}TV$6XE15^&V`AtZ0RdA?KRPj^u z{*7&m@S-hl^|$yI$^8eM9l{YwhHMS`Ll3ntxIlx#I-s>cE1@5VgYRgU$;C>d#d|dm zg$bPbaxwXcE};c(+60eiWZ`N0bsb^)bbWz0%zarB-BQ+}(H_(2t*v3Xu6&uItk)|W z5UQOEgaKivZh>T_Ghe(n%(+D0@n{%vv);EaOb^}74i=$hKr3zTKp0!LUHIF1`&!^~ zrlr#x6P5o^dqm4vzU*MHg4m@&;bRhx`m4YvAkKRipxeg8TtjQ`JMC817l&_ zf=>zGZ7JydE*c$cN4rgiKV%9tU9L}bf1F#z#4K!CVb=!QvVS+eJ9~cG%#W?(3h~{- zcbsc1;|iw#DfcH<_I(ABxZ6x-6+9zT^^fXaSmj_I>vL{du63MWD}HCx>MM%OR-U?N z-W`$i^S_%DX-xlhBpO=O-}A{=f#)RjZ#=H; zyLPWe^+EzgOB{KgOfPw_*FB>V^ci59;fkcq8rtTg>scBMA6ly5%{Co9HEv?AdmLe) z_^C7T3j)-rkA`X--dZNz=T*;JZse5tnhW|Ugk%VHyW^-^@}P5szipbs0eU4uI)wbp zIoVYt=kSu@o`k+R2?Rp$m(^iG+Y=B1&6wzSC40R>gy8Rj=`nN6E`&JvQx2xJ{GA->1ejQxuT zhAAV{Kp%lo;#J7+-3+}jnCQe*G{rMH@m4DIvEeWWe87f2_=0H;9+0GI2(BOk9e!%f z-U3&cX7Q6jm4VO*++ZS{`Zw{xcY@@8#&9SP#_`8A5KZY&V(^zk!w8aVA!Iyp zJS}PZ7>PNI9)DW1>j60sXYrHav1LfW!8<{6?K)A-uA+ul6#^xw9&AHDxQ%C`@FHM;mv%HsRKsLXs_RsNvv(yR9}%_)W@1)0`|-zt-RJ7bII zeMY z?%71`c;oM>w_LsX&mWq%Z77~xcwQsWg(csBW67I+XDgR}m?Ze?=NB{2zalx2d)U7| z<+u7POS_bt_UJFadPoxW$UByQ7YTR0|6zTgK5kX&4e-hx|8>i(NkEczg#(<(OY*`uF(uY=k1=MU{Kh!dWB?GxW8X~vmf zy!1q7#G1K{@78<&=MMV#=hkmF-nsa<`hTU}qu+D)zMJOm9oX?*TiVtb_hs1(Y#sZ- z;Va-fUCb%^M-}BUL{6JQ+tSyb3w@Xa4r%Hn!Acp5?sQ2m^q|lIE6Oz@ewjNSvh;u< z2kOK@M?3Ub_reiK9&|!OC(mpn_#==D|KK)Texbvlxh8b!83VGEH){(qmoc zv02^r3fcjkBAku+JaKQYmR{uRH7En2QyFC$DB{xDMCIuo+)JH=lLn{i^a$?iJ|k4+ z@nC0v)-7c61cxU-3$@1XNr2zD=$Cs7HAp-{lXgmE&e=&33mIir;QS z4wQRWd$Y$3S#9u0q9ztX1$cXjDvvd^N#Zi&61+QgM+OEe<`#%!(jJq?saFhm3$JRU z1!$`^DrP_RSC(F}M3Nh+&7T){!X!L$DZ599P)f?;$v?BzTEDoowz|5uW^w7FMMb3! zN3pG;#$H)%Nh!5jjmwJkhNYQz7F%t#TP&saqVmRMJW#A(S-Ylqwej|3o2ANPuD9@` zcixGIir1#5q@`&7f0kktMYrWA>sRKkNnTysP*av$>nJLzHQUOH8mqKvrB&vd&FnUd zt-i9hhFy}PNl9f(E6lb@HsI!aoGktxC)>>RR$FC_y&V1-mI1LMYh`*`QAuS@QA$ct zRb@#LPo#+7yr{CKw5p-ZQdDm*Gut+&RBSUBS5?;Ai;GJdDy!_3HN_JHB@N}})poNL zgQ+hmUQ=wTw%VKUsKr)XTvlIOTw$&$tFjmy&9-uOZIA(@rKDjqyRxRdHZ)RS*=#Ac zSJeWO4K?+Zn`>sj>5dSY26d zt+KF&MT^)qxq7|TY6np@TM$}s92^@y8rR4NJz`fQJx{DswX=S`Du4NmIuoi3L^LDe z8?d5HxET@!8ayH?Lqr|RY>`18fv3$fqAoyH;jAK=DH6_>fCcJjA0QB9C?Pph$0EPP zpH1l~p+Fv;>W3`qqfD4$B#DzNUrh|M&k*tXaS|>Lt)|EV$}e%nAL`MG3dBhB8^YT| zP`cFM@~yb0K+&nN5}__2723znPmnXwT;w-OOgB}SBK)&q8n6A`u#?6K8)-;2U0*;u zG|_6*gd}^!W!?Sy#e;f;`sNGbG{9^Fz_sqsQFkb=2vicJDVpnbM$;oKFoTzm_v^LK zz)tBg_xkByjnMaN`Vh5BKB(b(5~y@xpM=0$??Zzus={}FLiw}Am*psKjR`3L$@0TJ zXdj>8-7L+ocp44Ltm%@Ci`si6?sMU#n!fSy=QLEhxXKrv9x0GT_>U7TRl-sg+$`wH zQ${JT%IjY2bH*PeW*;OHy=11>9p6P}a<2GqT#NCaV9`Nm{JMwZ+u-WcF%=`!!?0NC zbG8c?B+kmncr9aA+Wz!C`(G^-qz|z{pLyun!Ncvz7piJvh?rdUOuTH* zlIPQw!m2`fnw;{@XqB{ztf0RqAs{Os^4sn^@=G6;fpOW70)As*b% z#&8_a`!OCi0S{+?j0by&htUuZEqnf7Jmm2_=y@Grj{qI;a$gX_9VNu&J!(&rOkg+L zEsjcinFT^jL#e&i2JsH!)`Sk+nt+JKLenK^Ni;4p1-*037Nfl!rdAt1r+ijPARRnrlF56l##9M0+J9i!SyKltaMJ$svB!rLdcO4Dq zu`dc?XN;l&HA3}`!R*(FGgYy@5n84Ye)rN55sQtK*D<0^5Rr*wjwnbf!ClBmtRL2b z;yb{e{8(=2K{;+g21FnuG+Z!1q;$Db(C@{>Fy?(YH@Uwjek2#6Gf_RU&uAUw-7L;C%&S7KV<{I=jR@tnk$DK zFku6|ybZW{8z9q4b%&g)VS%Qkz@!#af1CsEZ&W0_gvLO^1NxE(oemlt6qK#+I@#U| z<2TyH(cT!g?%HWhYxtW+RbYN;_`{`jZ-%F2tT)GYOW01oZh*emH+aWvO&4* zIq#6b+t*GI5i6%+@%1)U2DC!_0%V-C5((E#fwFbk+?&2y+p`e{G0#evn~29G4FRY; z7}6kN)lcebJ@D-d@r`{?O;;7r{sp#{2!hE|{=Z=#vYy3PFEIFm^>5%v6LTl{xzWkF zZt6wUE{|C!cJ=&|?rkRuu@ru$*mi{L-o7uEizMffdQF=vOFprku$ya|UxT^k%(!3XOG*F`Tpz)3#l6pyZ7uA}O_%<*UD z`nGHH=&H4mUcKU=A^mCb0LzSZK61D4Wf^@*M!)dDNbJX)$`>Zs1(kqd<^u6i9Pl=D zu#T4?Gt_|eM|y=l?_!$>*`kt<2E$K);9vLcBtn7@e27KPtv?3l8L?GIh0;RqW;{-= zy$KS);t?Va_Th7_(*>E}YHlv&w;JYhP%7w|x0BEdlI7TB#{yowaTRF0fu*~w36O}K zOk^C2m9rhGY=DpsAbF~elL^VY#cu2XbF_mXPJgGGG#ymu1x!b{JkO3;Zg$jTsqB#X zDUqok5xFwS8nfgItiFGINyQNkd0Hjhr>!PgxunfrF|{L0^4fhP`O%3T`+a_R_abi= zdzA~*uraXM7>@D3YtfqFeR1Smg(?lT#tRq;*g&JTis-N;wg3(*rV{BcjnHcb+*vZ; z<|CY!{v2DLP^{M!Y)>D?0@6#ew@e@!Z5`3O2^`}!}V#jLnw0LBJ9E(yoUgEnT8yd+t7osFe} zZbQC5RfioVQ>Vpe9ME~cr-Jc0Sg}sUx?SM&8aU_X>z9F0jrv5eMipjuZHEFCih-2K z3Zl)ut7|(#8N!1a{rOek?;*Py=Hu9EK8``IDU6zRecb+oaU$2;_TzDTL6DbhTw7qz z2*s)$a9><)uBxgnEwc}1)#gnP1X?76KgccN~Dt|^2sSP>QS_#m3@k17h` zv(gpVXp@P*@ip&>s2`29^QYmP%6a_)DDqHoxy@oJwuP{f9a<6F7Q)8oj6m)zTGR7G zc{-LywKIf`h?a-2$*6LSEsZ!K;L@p<{2!Oy`f1p3AIZyZqF33mUyO=NC*)TQIBV?1 z8`iAO2;N%lp*;QQu!!vrVTL+3Dk1-XjJ_GP%>NkhVs{&%g8L!_#>mYO#*euccJ)GL zu;a||^2lNR9b+K*Gf|_lZ)m&1f>rBj*G&56&Tul+#vBaGfMS^JiFkb^;!Oxr?llmt zo`RdT5UskWY8N?QtFGp)3foh3*;KzGcnJrwJ|Xrz1Jq(eLdEIH6v91;hc&O`YXQja z<`eYGkV52;LiCC4PAtx)`VS|Ud->%$ez^(HeHCndoY8#iGf@-yud9hR@v=7Zaa{oS ze7=Qm9LKQ@2kq7<$_L5SS}is+bcJkQ3JBMhCdC?9gXGEB6e&<3&fisB^+7{3HdLRzOas$?Ykk_jz+IdMtw8fh=NjZ zo%SV^zf^35@Xjq?HC6te!y=z5f4^zDJ5;8eCgSnwz`AUlsac)aWOD4fNBNklk1tFw$bL`5+_^yTU!jm(0IWBdunN8%?9WB$( z84_U}VjdqSq9^6uFS_%4^4@q4NZedKDQ{mg$oq6i-ZgwZGk#dV@jr+cCt~?N0p~s| zZNf%W+XHnOF!5CoEVct&1Hc#mF|(6BGLLhr-ZWCbnT|7f^ijN_tg2ueycx0$F6B-_ z{8^A|Hkc{DHu~00gcHW2`i@D4U=tJ0jivj!95cZ&)AvzS}y7Bw{{P*JW ziCOD;tg~Du8MO)57|RR!e%=@PNZ2YI}E2WJHw-ecR>yI5pMA&bs^`q5Y5MSh-3QM4`cp<=QYFE`=Nez$y7fs;2o|n z0bGcWao*N=+>cvvKmK@NMlOh^gDQ*AfzP&7LT3)`+eEDLU1x(ooUZB~( zL(r!cgk&+1vtsEd|C5}xbM|DP=A+gFxMwIM53Ya9kLRpaAg566f^#U2qXFk^eCBDn z85hW!p*r(JN5fUngyPtWdEsL#6Fh?pFNJd%IM}z@YHj#Om#Kq)7^-Qg4(a&)0TJs6 z@pWDlI-jvtv12;sy^+|ANC6jt6}%l3{Jz(Xc*Q5xjm+N41{I&g6rG8s(6HuwZ^}57 z)VBvu--NaJ2y;@ON?yxyzQTq=dUSTjl&(MI?O>Q+!Ou-Qd&&J7)-qX+uWmSdIY{wm zFTAejB#H@0asFH3&?O37w(2Kz{d2(beR;lz54P5`sAybcJLG{a~M;vK7$K2lMsTFg~ZN9ss|_XH{F& zOvU4j5Dl|qt`x{RklGbb0gaHo$Mf93$6ui((8o{nh5zQ|^YGLhFP|R155A8TLKrj0 z??^_O$K|q@cMb;+qJuGa%HHc(_&+;9Zxth(TjtuQV2uM~d6~L4Z)dxxMf~aED`cVU zPIH1WG7|nX#2ZVNZ`qr<^Qxpf>7nrzw-ufrx%#G+xZk0y)eK3dF@lV`Gr^OOH*GO`S$YZUvO89dFeAZ{rcJ$cWK^f5v?hd?R;MQ z3;DI|q{=7ee-cG$B4?$oe?X1i`WSxlKhAy&1g;sD_ZO>A7>Ng8^=*)2Dv!@Rz_gX+ zM4rswzIWeU32&mL2j^YgS+^ue`=rqL+Zmc`KhJynessKB);u@6?&@-*?EbR&cb{L= z{w6C*RZB*1kCxr>YVHO=Mrsyz4j1r*bV>b2$^F}n(W0c-)iKfgliss_b28>%4bRR# zFI({y2A<(sb23_ee9iER14%Q_EY8#Ciw)lZvu*XpRRljH?;E{+_1OCdPG|wmcQW~X zqNJG4lVVR-7DMMti=3u7YYE8nYIb63lf)n@g| z`8V@7G@gHME49d2m_3xRzJ*7>u(YW&Z-Q)2{&bO0@GI7asT71jG3?K4F|d1|csygl3FFNU+WmjR5Tg|KqRq zt_{^&h4UN&gEw-@?8aN$xOiB-k*KkoJz~~I!7RB$;OHP5=XoOo11sm&jP{hysoaBH z0%vv471q>xwMB<6SiAmO>GjvGT;}jz^Mu$CGjOcl##3HywaIID8GQS(Y*)?bQ4z1M z7nI2(97g9^#Y^hEC3CqP=!%@|3g=b?*Kk+Wl-d_W3p39Ni{U#G75npZck=T*`I$As z9McbK37_zI;ShOMSh$m)6OTKb<6Yay&&ICFZqLP+F9|A_?JSRm@6P2*vdiOkS~v2? z>T7Dp&N?aNImdFH5pqDN^8_kQLtMnHO^9=Rw0%565`^OUT)THUuyi&E-HO+QPSZf* z9Heo#^WV$!N5~VQgQXnaMZ`nM3L&+>_Mod4Aq_&>p~1Q7B=}NuaBsVV94n47co}E9 z2EsAH*ZXUE4pzqCj=WB^ZZP;sG)CfJ3_iy>o@+D0n7Iu%1BDJ|o}jV!v@vG>IQZjb zd0Z`chd$m!kI$CJry_pMJ$_j{euw_ISBrBt3AtT--~W7hz4+(~zc+t*;#J*G2l|eE zx8|7a$B(~lc%ilP*WU{I)!Wbi^i+t?gN@gftKuHGw|;ly?xks4J3XU2&vKBb0Io%F zc|w66b)GJc5jE>=C%kydN_x^pVmms{ar7*gnmN#l(1&mjONW0?vC+7-U2{tw&6!y# z4Jy;EpQYg!74q}ya_nv((QOCeU5#*x-7JrjC*05Oa!dBN#@$NCv~y?br8C!aXSNrv z&(G$svf&rat;o*i7iV+Tg%#PJ6)x?L!do@MYyKjYzv#zaVQ;i>ibI?G6)(3=FZYuP z9?AZ%g?w5Xa!wlD%zggT(&x*#A?>}R)$#mQsr=_sD{|qxrXsthB0HY1p2%0mjemTMIw3l1kTKCflyp9@a zuwEKmhrhSzf;LNoD!Cz>b$&2t|GJP1+>nDhyDyX#*-I;OvrF?+`GxTn`OX#jJ1bny z#)u3^bSGNaT_gNaBD&@&yaluHoalb}gvZHHk8ix(F0b{teATV{n)}Zjk7VZsK?kKX z8cIXjqsI+SB)+1ckY8B0AmVO~h*<%TG>_8>ZarS^S5COE;dn3!d%5=}@M6nLgW7c= z2c;!&D#z^${KHnowkBmg0~f(R=ch)R zzL?f;k7O=~Cg{*K*qQN8hdv8N&t72a2{L@+xNxvv1p7Gn*&HPDd@Nwb1pP0N;E~R+ zCM<=P!=Inf%H#dx>(u3IdAvAp4&>?U>u3H-$j;95OUla3%u>O>RLRN|zl^LDneoRJ z8OlVNJXfh!9}L4bO^|#e~iC$yH=167m$7 zMny45wm85y(AWR}(v`_;#Y+)Bq2aS)ePXg!s^qh>3Rfg%CFIIi6l4SiCS@e3QamBC zJY|;3bE>buZ-6J0czyy-J}+OUkSz`mn>}B)aJJMuTlnFBov`096HZD^$Q>HFfJ7eJ zpnOz={80_+M>UwT51TC=I)-U*R)cA9R)cA9R)cA9R)cA9X=vo^g`vZbKU|wBh2h#v zSq#@^N@Tb;Q!e3=FAkpwtHG27tHG24tHCrrtHC^Y%p;ycxMhQRaLWes;Fb;M!7Uq1 zgTE9#`w>%Tx0r@!x0uFfx0n)Ox0o_mwD=LzXEm6{XEm6HXEm5cXEh8CKI}su3I_)r z3I_)q3I_)p3Kg>G(CDG4fQ^)FBxfTv8!2SrkztnMSxCw5C1)cw8!2S7Bf~AjvyhVA zOU_1WHd4q!7lnn-mxaw?YDY4EVnN31=o!8ACl!8ACl!8ACl!8CYi*dqpKHJAox zHJAoxHJAoxH7I0DB3Q$+kdoa?&PHlBQpgsCE{wH&plqfbrk{KmrXGeVWMPr4>jMiZ z*}dd!q-G<9Y+)>Gg;+?*?j>g5OyycGIcs9JYu%xN)1PuN@e$DN|jBS zT4hr>Pv*&QunIClk5Iayl#oPsXwrJQ+&_PsS2K_$gCZ;Vluw zvP3YVC4%slNFj?@$U0A1NXhOcXCpNmLHKA{Y&iT%X*q@AISe#xe;9384nq#h6*6hW zd@1YlGz?S@*HbPnvg$zDj z@H2j#;+K@Y(vSHZV?{z9V|{JXv0Dl5Axjj12!yEy$A>%90XPvaD=HZbH67mYJCZI#-^qP-NpDWC{7Q zgrt1KBDYAEl&XO7aFpz<0!40? zYB0&XY$bef1T%*m;3K32=%~udP0mQjOO+MmDj|hjMS?sr0o=wI3YA4WERAfXDm5!Z z9#)W$o9wyR_=!)LB5`GkXSgak%S7OFt)}mpPht`BUxyB!vKevC)!Rms-hRq1L5d7k z6MC)SqgqDgA;Vp7vnoY~ZlX3J!v&)Lg$!*(9YTiPMCp)WGg0S}p^T^>ks+U`-;hC0 z6qjQNBg%Yq z6ZJ2Sp^T_Q978@)I*vh3)On5}mZ%?L4n+M1Srf(OX+p|vp69>^jfVoHon@S>QJy2_ zOW-dCGTI%cC!&_~C0Zx=ziRx)Oes6#42%D?c^Xo%_VLZu&0zhTW40!vmQ8Dj)dkj{ zSWCfrjaYYs^><=TLoG3@iPaSu!iZG|)-%M~4AwiuszNPJuMq1Ps2vY;!d$*4yN}*49iqVtRBcP znpkyUT}!NY!TK4ou7PFBBG#v&`p1yDj?{$Q=9wQ(*@&xApAhTYFjp0^PJ|6WtWvOE zBG%1dJxr`kV9g}fNyspcSWChBIkD~r>p^0D7nUiVSf7Dvay2Kc1M7#x+6>nBi1h$6Zz#3}`A6|r6b>)XV71m>DbtUgdpPni=g z1?!*I<`wP+>uO^C1gtV*^@VC8RvlQc6YE{D782`cuuT6XRzIjFV&w`oAzu?~8TV>b z9%e0(WgQ1$9By$Dpeq!AX)-+=M8Roi-SZ6>r z5vvZY+laLptO{Z^fHjU-L!g?7l`Dd?iCEjf8c(cuV43C<>+?`ePUeKAVC}OqKb#9- z4I$RwVVR+{5vvZYXNdJKSObam0n9amSjA9H zqs$3&N5R=dtYubLqkM>UET_e39N>q}5g#Hs`9T4HSm>jPvy{e3wtF=Aq!2h}7Zb9I8ViEDm1ZD9S2 zSOa0MFA!@4R1>jE!Fq{UFM#zPu}%l;Ok$0MY9iKBuzpUg-C*q{))}x&A;cO5)g&}0 ztOM(Z#CjL3zYyySuuLt?Y2 zK&;6y*C1kzgK83(6D|eopCimGyc?{?i8T$Ze#E*As)<;2V7*SP&0uXIRuwFh53w$X zY9dzdQ*bsBYa3V(5o<0i)3e070;-8vrC>cltQWxg0kNuKnI;qKKcSjNlDUF)Ke2X$ z^<82uhPggNtS>_~5vvZY+lcipSoaX?8n8|xRvAM7 z3f06nCoBc)HO@@am1`$h3nb>9vk#WZz0-Wjd3N$UKs0fY(Jd0fXRDc1e13wj*W2-#(!e` z8IFx{C&u?MK8|B!tjD+y<4llO6q58&7s_h5V!;}39bj5{$tjPZUP8)H4jA7cDIj{OYI8{_>LzlURE zycgqr7{7~SV_b*v9*pewLR$#mh$Hur4;{=TBaBOd!w+*gu zjH_{MjC(K+#&`pcjd3T&(=e{Wu`$+T9Dwn99D6Lz8)F}g-@vgk-iz@hj9Pj*W2-#(!eG2FJ#@6XSarug0-4)??g<@hdpC z2hJPg+ZeCHu`%9@@lA}2acqq1Fusm)5sr;YeE{i&$Gt-8NmG;pDM;IimJclCo?qK9{@ANGrE%4=+@ z9BjAL*fu(h+*31hzk}d#jo`S0-RCuSXB_M=*4TgNAiQ29yzL;mS0fs5a4xTPu5xtQ zQtQ&_=(?xYb-&}7!?k0MJGy;d>vqP`{bH^Aca9#{Ydvl|K7FtD=>f-y&+OUw%>Gf64{w}&eAKg_Z+!O5D4&ZPeZCvzdwrwt?NNUBHu?>W3M$_eROJ-B zWm9mY(~LcvX6$zgv5!UN2>s@aT%2vdw1>u6Uv)sv7s+ch4!IR$7G zu6O*@6%@gw1fd{6JS zwx`Rh&U|pDJmOZn;(gU-lo6PibSOPfxyt*!q{(>!NrI5=V`d+GXVpu%+xV*Y+pD10 zj#uq?$a%Y0sTa~G>*F0XAGriN^RyX&M+5=hh0X!?*E9nbN-_akEoFLhIsr#(jsSjA z%V1t1)0=Y@aJHreu!lqi*rtx@J)#G2jph@;6SNE-*~0W5(F^#X=2O7Fk}SY>olI}; zeZc25p8=k(Ww7u*)0-iP=)i5Fey#&IUt7SwWiUKi_i&lb| zf);`Z;z}4X6)gram#bmKG_(xFQm&Q})6vTyQn^SC;yIKEqL3?LL=Z{_QOVUXA{eEC zsN-rGF$1YU?B${Y5FscRLIM4`2W5lhhx5S7*%M#Q0?LDX4m83DikfY@t|N3hu4k8aN1QEoSFd`o<1~HefVZ=(b48&5tmJw?7GKf?@dKE+gN(52JmoTCbC4;Es zYZy_4(m>SlwTvi6DiC}5r~FunbOS`Ct%ecX(9a<1Y_*K2M+OjkZBaFd?dT4O z7F!7;8qn_`^tKvCG@`#iblPee@fLajqQ@3(2C)OpQo?*}C5$+T=76vfXc+M!dI^NH zK+A}aP!x!X0<;ChA+!)gkU+wSX0#Z@T!DrWhtV<+O9fg+96>LGNEM*1AU;NkAPNN% zMzo-05S0QABaWgp5Oo4ABR)YY5PJpaO%TUWE{GO^gb|-2H3+>x!-(Uk7(}N)%ZSg= z8W24K)BvItodj`TAYsHgbP9xxy@nBAqthUq?X`^f2Au^l(H=E|IFG&o5o9l6#0Au0 z3-9rL@Hg(ve{F`i) zIj8)Bs-_Nfv>s{rnkRoF zsoyESf8F`H=jZny=q&2-`>0_pFM_7~w$`U;DWiTz+CJOVb>~M{_RSOB5uBCuZw?D< zMK=6|qDwzGKeTdgy*l-qyGvScsK@^G#@O`OZwOp2{`QjeFv+3qt1S~>T;@WNi@&C& zr@wHXSVSf1A50kMv!QRkrcV&%9a(a(wW(-Gem7SykJlU_K|2l{ZLEBtEZTS^fY`)$ z-uWZ*MJn!+)-P4BA|9Sb$fmw|f@sHwl87?@0lNVAv%TM*a@|SH4|`h^f7eR4-8*knn%q@_kGcJ!LqeY4sE{)Bvbpfcey9aV%z*8wPE4v zY4jL}_N6*g2`(==n)~~h8qx!14q24^l%uAp_zpu`Q`dD&CtX|b>BgsQ;!x2y!)>0(W-Z=0;CWODtLv=C}y%f&bU zeZ=`7J$Ghe;_d1mQpR5(;Y8wyPxb{YB84p*$oM#|DJPN;aew-kE@|`w)ek;Umt2~* zVfx+|E|;iX(f0ke`X|Cku&jXt%0wzp?~;_XCu8U|3$EN)_ax#~IXxlpbZ>pa%c<{0 zD}O7^&i<33HmB!LT}(e^hICo&4bRcF_-+X@GJS6R}P>88M-q7bpED0jMbLhKww>3>Ar1jphTggvS77K#jqo2YFg?t^XP)JdN6@{(;2_NNxVw`&3YEIv4Lt_x36l9e7{q^6z*5mj3`+q74lnpR&$JT!+v#Ej? z;r*2Eo)SYHj!^L1=%Y}_9EDry4d(=#cn54+(>*J!f-#=_w_Q>U5u z4&M38-rB9C5BjWuw=Z2fLp_bQ9VeTnQ5#0w&uo~(OUdNs_h%u$xoTSsWK`zr-xm+YSvCEc_*i1NNF7KNqLXcMFK6s(X03Im&u2m0{Au4 z_(y#PO^qkU*e@@oN~pTUblD1e9@xF?i@0v|H0~^r2%&U75bRGV=v-F z8fj9>ZctMb_rcpMjNTa!)0cfgCD^g! z%EvRQ%FMz?`G?djtNXM69hXBt7~{Jc4sA(C(1H)qH+{<;107p?qs159&IT@3(Or$_ z``fnlL!KcHuxtyJM%!2FSLxmOu=kDR6i4bT5)Gb3aa3mT+Igm{hKizlSU+LN_Utol z&j5Nq7*7{wKe))KiZNbx-qyQ*MTKmeU;NQ=>SQt=LI+kh1Wt3si{ix#wR3H60dIRidHnW^*0Ace@C&-rWJ*i{>jTG2Ziz4`jxT?4kuS?*NFS@ z#pv(c=|gJoorB7g^x3i8baoU|qZ`j>xV)aCyL#iU2Ru@iQ^mUk4wc{OOOSC~<`T4$ zUR!bhzOAl94iMv`Yy6|DlUnf(xJK0SsK*5Nh|Z$DK2!zG@Ao~njlNImnfsIjRd-7U z>ux;dss`63dY8AsF3+J}w&H%cNYfqk&>@uCWpLWV659`b@c58cH3SdIm?!-KT zH;apKvp7oSC>v<}_~_2sXi`S90sos#N2s@h@io~x@uMU39vAn)9*?857H@xj>yRFI zpvN)#ZXv>TgYOoO^r{%QO>1$(HF`q$f%o{;?;KBWropqE*-Wof`{p9P5G|(1Z@mY1 zf*>lxC2%KD&mrfp_|CDeF4rvjI5)nv@Nr&3z4?sW;GOH?_4K`<1MUUZ^gOEZ9SNT9 z32KF_`=wM92vtl+6`Cp0M=uSvO9t35q4cD1-vI2#Gidxzq}g z1L$e+mt7-jl3E-SoZZ4AHWT&SC!9E50>{_0tGRNAn9VLRYPT@Ya1Q^asbOIa@kURf zEUw`_a^2$ab);#X0*?H3i*@Uknw)m9 z11-j;z?g2HGha>c5pqN5To>wj2C)#;n@GO0*-42|G(t)?i~A9R)ln$6jO6?2)tjPha12b?@+} z->vzS{Ndo=-+aFF+|R#MjOe$Yx;is5=-yYqlvN!b_3QlZ%B^qbZ#^eeRGx;b)x{A_ zL2!=}H2ZqFCmI{4%zELdqpX_~J;l=$O*nXXN&~hKTDXuA>VW$~KKz`^srEf`$v4-N zh-#39*Y`BWRI^uAvdfxFxL1(tKiqh?s(Ev{F@o+czpq++bHz?Ltj?#G6=jh{HL{|5 zD;vvo>{mGKRq+O$j$Nf==_?I7p~0)yoi}LYT@t$%iCupf;teTybKQ>kT@3I&7vR^e z66A_EM1EEmc|sPkpSAF_x`p+u$lf7Oy^{S(9(zHap%jkQ2A$EMQ?m85+4|p|AZZ<*XKoDfZdiH0nt6j_R<@f3+G?TSix^1A>);<0{{Q0Kbb}erpH;Rd9gckjgn@U0rx@Ph`6+3K}xf zy|7;v*#NSqv1c256`u`rFF|OP5TR4Bdf9?_p{#-H72)-`u_^kf#gZ4O;CP0;#rFz$ z!D3A9b;@W@AYg4*>pVQqupQ;8p6gZo%tf|8e0UFpdL?XrJOSREK2Z4g-&TKr`%mAz z{HO1R6n~lFyk&oacZGb~(S*kO`5p)b2ZxNmR61Q*NKSEKVQ~@sD9Y8Y2q`FDLE7GC z6=<``vQ=f}n!+&>oD=(8mQ=PNBAL{c7O&LglxO8u1W|yLCKP9o>9H>bm1+t!sxl3x z$;lKVGed*Jg2n%nP^zx17ZZb|2{9Q#>BTP>sbh*Ov$Bg-rRuDTg7C1M0#(rpp7evT{;GCdMp^8=ok=`NO$}*qLiio~rcWq!l>n!%S<3sqHYm z9i}0r3I!=kNs~XEvtkmiorJ3=;rdCqhE$MA@}x%xwF9;GBGvYw-X7GDnf3;<1GV-d z)%Kv?9@LQWa;csAD<{kErY5gCch7K)FCo_`L z9xcf(hR)cFhOXGd&=DI}YxLS24VnFNK|WckQK?B)*{Y%(Qd6YLF3@O;%Ht9e<)kz* zF-1lurNqkPq#1GPWL!#Gk~D){lrAUJq)9gRf*d|e6jGV|VVu55LG4^}aaux#oRlrf zNQsNH86G~9F3ps~ZAY4%k&q;}4GOVjnmk#WBqx&>jg6AFm`su`A!Slo{8%jy(xkv% zN|(zrQqst@#kLWsRO!^<gxoQSw!x?qRN-kP%rPNZKH*$^LTs#@VaXuH z=?Tjo#APO=!H{HJqBK2z%$gpHXORi*N|VPfg1*>>vwcpJ`a-fyrPq+!BC=FfIM(m6 zb7P<1+M?XzF`_Cf)0B?A*OkJucSD0!0sEyTR zzq~@20LdN@gx0?UUqs=LxE7u6<~S%_L>zNa?@?}%6p7NNJ>dYq;!vstiDGC~gG6Dp zYC@twTD2gN2dz4g=%&YbmM$c^OshU5I!UWbNYqWMVI=y9RsLR3nt zP(qYVD=8sLqg5&)3Zs>Z5Czhzgb;bqs)i6b(5i_L-E}{Li7=> z`UufZT3v!U&}tZ}rWN6AZa62~0AFj-zRkw_tMU9q7+Uf=U=Z(*#2CVyO>$_mRPFq)^#)ju;t2YvD zrmbCIHPP1nV7*FPi%?^H1a0+!y+d0Gwz;8^wjKfNW!hQ_)^OVD3){zKykIF(?PbAy?-);ov;_tMs#Q1H`lK3G?$r;x~D>XQ#HxKyx?bdAro8LVq`<6B}E zw8@{gJ`L9nd)(Rt)xW zmSCKMb5Emk4>?k~BQZ|KxiPk4ya3}QoEzg47|+Ex5$DF(jByCYFX7xCxNeN+VEiJ^ zjj;*iCoxXIxiL0kEW$V*=f=1ig3Fk z!DlHc5r*Hzk&603@ST*DNJ9f4W;>ZEk&XsIggaR&k%5Ll z#5)NkAQqupAeJ~ODUpeO2a)GwqQqh}0;1B%N{J;X8h+9IfN%SE9ha%4v*Gz7yK0H9 zSr!G43EO26CwgkH_#SO}Y(Ppq{=5?4XM1jkN`wd*;6ove=N720eb-kQYw3@Vh;A^p zG&VU7uCXZm-+V{`JL8zCvQz#JD|N*T-ExW;`N-7Y08n>Q}L%# zMz$O)X|1EPNp2e6+Ip{b#j-Cx4nHa(j)sJ9oHu&r>*IspZ~IV{MH`Dp+j{TqKD_KP zMwlgKmG6qM)65ZH+p{}q;oD29Iy1M|F+75nxky`FIjxzdihB<|ejQEuC_@&G#pJm3cW5jP7kN29wSgA9Tt^WDZ zjEOJD6Mu=hyE?bFN(_76n$Boo@hG(lmy~q<#T_h9;485>w~)3$-XJ$8Uz*)v~P zUBAAYO1Obh9_+fY>3=KZzq;&hhva(eQ=c4=eD>Pz+xyO6A8p;WV|QNF)>4<~%;ENi_ii8Dd2KZK`tG$?S6{w1dhvt8_f{k_R(3J9vhKRt zQ=SdOi+e+e>BFKg{fXX`dC~1|&kCnd`!hs!GFB`(>G|g!j1h}RbN<Ip{&)8d6|WrrTAMYnl(`%|)N({Jn!kMP(taxM?XznJ zzkjXu*v|aB2X9o}!?SpnF^lDrA4}f+X9m3@l98WbjlOuOU}))j-RkUXqtMK?v-LYF zY*i>?u6%SZ&5dD=-4x#9Dqw+UqVkoa&uqU-Gf(F5}U2_oU%t!>gS~or*LF^ m`2x4;fo^M~gO2;Vn}=8)XE~BS)D_drTx$!gHT7Qw(0>EhB+9P< literal 0 HcmV?d00001 diff --git a/board/wl82/objs/apps/common/config/log_config/lib_update_config.c.d b/board/wl82/objs/apps/common/config/log_config/lib_update_config.c.d new file mode 100644 index 0000000..97d17ff --- /dev/null +++ b/board/wl82/objs/apps/common/config/log_config/lib_update_config.c.d @@ -0,0 +1,65 @@ +objs/apps/common/config/log_config/lib_update_config.c.o: \ + ../../../../apps/common/config/log_config/lib_update_config.c \ + ../../../../apps/JL-AIBT-SoundBox/app\app_config.h \ + ../../../../include_lib\system/includes.h \ + ../../../../include_lib/system/generic/includes.h \ + ../../../../include_lib/system/generic/errno-base.h \ + ../../../../include_lib/system/generic/typedef.h \ + ../../../../include_lib/driver/cpu/wl82\asm/cpu.h \ + ../../../../include_lib/driver/cpu/wl82\asm/WL82.h \ + ../../../../include_lib/driver/cpu/wl82\asm/csfr.h \ + ../../../../include_lib/driver/cpu/wl82\asm/irq.h \ + ../../../../include_lib/driver/cpu/wl82\asm/hwi.h \ + ../../../../include_lib/system\generic/typedef.h \ + ../../../../include_lib/system\generic/printf.h \ + ../../../../include_lib\system/generic/log.h \ + ../../../../include_lib/c++/include\string.h \ + ../../../../include_lib/c++/include\__config \ + ../../../../include_lib/newlib/include\strings.h \ + ../../../../include_lib/newlib/include\sys/types.h \ + ../../../../include_lib/newlib/include\sys/_stdint.h \ + ../../../../include_lib/c++/include\stddef.h \ + ../../../../include_lib/newlib/include\machine/types.h \ + ../../../../include_lib\system/malloc.h \ + ../../../../include_lib/system/generic/ascii.h \ + ../../../../include_lib/system/generic/atomic.h \ + ../../../../include_lib/system/generic/cpu.h \ + ../../../../include_lib/system/generic/irq.h \ + ../../../../include_lib/system/generic/ioctl.h \ + ../../../../include_lib/system/generic/jiffies.h \ + ../../../../include_lib/system/generic/list.h \ + ../../../../include_lib/system/generic/rect.h \ + ../../../../include_lib/system/generic/version.h \ + ../../../../include_lib/system/generic/lbuf.h \ + ../../../../include_lib\system/spinlock.h \ + ../../../../include_lib/system/generic/lbuf_lite.h \ + ../../../../include_lib/system/generic/circular_buf.h \ + ../../../../include_lib/system/generic/debug_lite.h \ + ../../../../include_lib/system/init.h \ + ../../../../include_lib/system/task.h \ + ../../../../include_lib/system/os/os_api.h \ + ../../../../include_lib/system\os/os_cpu.h \ + ../../../../include_lib/system\os/os_error.h \ + ../../../../include_lib/system\os/os_type.h \ + ../../../../include_lib/system/os/FreeRTOS/FreeRTOS.h \ + ../../../../include_lib/system/os/FreeRTOS/FreeRTOSConfig.h \ + ../../../../include_lib/system/os/FreeRTOS/pi32v2/portmacro.h \ + ../../../../include_lib/c++/include\stdint.h \ + ../../../../include_lib/system/os/FreeRTOS/projdefs.h \ + ../../../../include_lib/system/os/FreeRTOS/portable.h \ + ../../../../include_lib/system/os/FreeRTOS/deprecated_definitions.h \ + ../../../../include_lib/system/os/FreeRTOS/mpu_wrappers.h \ + ../../../../include_lib/system/os/FreeRTOS/semphr.h \ + ../../../../include_lib/system/os/FreeRTOS/queue.h \ + ../../../../include_lib/system/os/FreeRTOS/task.h \ + ../../../../include_lib/system/os/FreeRTOS/list.h \ + ../../../../include_lib/system/os/FreeRTOS/event_groups.h \ + ../../../../include_lib/system/os/FreeRTOS/timers.h \ + ../../../../include_lib/system/timer.h \ + ../../../../include_lib/system/sys_time.h \ + ../../../../include_lib/system/wait.h \ + ../../../../include_lib/system/app_core.h \ + ../../../../include_lib\utils/event/event.h \ + ../../../../include_lib/system/app_msg.h \ + ../../../../include_lib/system/bank_switch.h \ + ../../../../include_lib/update\update_loader_download.h diff --git a/board/wl82/objs/apps/common/config/log_config/lib_update_config.c.o b/board/wl82/objs/apps/common/config/log_config/lib_update_config.c.o new file mode 100644 index 0000000000000000000000000000000000000000..d852a71e3f555603961ab1b72f33e044e3b7f733 GIT binary patch literal 2960 zcmb7G4Ny~87QP`NFG_p_h&9n9CjK=$D-Z)p5O5L_6e>k1wAEc^U;bVo8j?p6Ld0Et zA;His*5}W(?ACU}tQ~h}`h(r>*0#QxaQvY-h3THNkc%!1>ma;0J6HJ z06st-yb<5ZLz*b7hRsu!9%cl%t1~%53F}oO$*sz$Je*Z&<|+9qj$rFTrLwo0;!Cxg zd*1;NO3%zA69BpR?IA+2G%A{`0}z4JR(Xe=@@M4ex{b?vThvia~FITaY#{QN@U?PDtfi5z(`*uiR|_wuKsrJEs%Yeht85{5w}t@ zJS4s_AhIYj6K4Kpqs)q^wxW+&G3xDe6UZJ8vb#D+5J(rn^mv1WG$$}TBOW>8d5{TdJINr%3APJ@&i>%;e&5=AG4$RfdOwWbQ810s0nzk;Xfz?O8bs%0 zqKHp?&cMDxX-lKp(*A@zHKIDIRrNBe7H#H$aw z1wnTxD7?^^eGg=RTaQjt=nZxDloY)KtB}gYSBE6S8p$P@=&Db0by74vCH{sXu?QMe zgW8S9{AHu{tL6&P2Rprpx4)rwmdd7gK(bSE&LFxi6JHw=?`25ngk|EGf!);OSB;L8 z4QeakhQx=Cz;`^eKHyu=w#L|RooIVuC8MCAaDEsF!c}N;w6!_x z@L{)DTMBKC7A!e!wpoo>2Vpk2@j0Zxq}$l6(Uz3fVT9AM6F0e=EuHx^fN5$RO<1FD zYrYe=;RY9;KpNGPUAx$z^E6Q*2J$g*!dC8S8S`am?ayn&3R?k}@F-E|=AVr`YXyCzc>{ zxt$#*cL!vc%gjl?$H&O%h~^H1?TO@Yd&=Aai*R?k66s)WYa5P1>eQm$;k4Kcu2!tW z(wT~!c1^D)Pg{EBDe;nrGey$oFyp#TgVQ2?DR~-nxUr)}T4T33QV9IUZN35pycFG_ zb|nX_?*>i3TgP0+19Gxk4!^*F)kr$D+lu5q%}2=A4_XGAg9t=HOwrn)dIQgINg;-&vI>QMu- zlgy}EsD}N>HX3F>0~T@=rHm>WJi1m0yRa0S>2YK2_& zQqag|l5842mVhk@SV+U_1l*T^jR{yl!yp0wly>pb!c7Yz%pF@6)`+4*qA`tlVn{rx zk=!1V#5Btv45>5gIY4ocLHT^(td6UP{S^$r8;qKOIZQI@Ya_q{RmDOm!d$J#TErFp z;XIG~A2#@+JqEJBH@*p>aLA|F)Us2)CkJC`h#t06J_*H?Q+`3OuaC7xzGTCO&o(Sk zo-BIf!ZB~&cA>Dox2C#eeJ!`&-?Q4*z9~C|2f%W+U$+u50xdKHe@sklmZZ5 zw4b{lc>OZJ22ARsdI70|Fh`9-IHMoJL*O=qRpdqp^TIUDIz?MEVi4X=mP1&e&W131 zg0^NnfUuX`1bz#9Fa19%YoSvPdm7TUo#@wAz}7UVEgc)_z9l+4u;{jiZn?K);$*J? z?Na#NhdwW$ycOo|<07dpI$d3=?xhC$G6Ni8cU1*bk+aXYHc}`GgyOkj-W7fRYct!( znXI~%&p(QNWfrRKeGBEEbUQ15xLHLJ^!%~*uz9Q=#{?-9sGmSm>=jwW$$IiVZ$eKaazfKw>WGJrs Nj+tdFhQCGn`Y*wu0WX|IhIRn$@Y)|jp`@6s2 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 VXzz_{QCqx1c1EKdh@uht{{Ygirtkm& literal 0 HcmV?d00001 diff --git a/board/wl82/objs/apps/common/net/config_network.c.d b/board/wl82/objs/apps/common/net/config_network.c.d new file mode 100644 index 0000000..57e8a65 --- /dev/null +++ b/board/wl82/objs/apps/common/net/config_network.c.d @@ -0,0 +1,108 @@ +objs/apps/common/net/config_network.c.o: \ + ../../../../apps/common/net/config_network.c \ + ../../../../include_lib/net\wifi/wifi_connect.h \ + ../../../../include_lib/system\generic/typedef.h \ + ../../../../include_lib/driver/cpu/wl82\asm/cpu.h \ + ../../../../include_lib/driver/cpu/wl82\asm/WL82.h \ + ../../../../include_lib/driver/cpu/wl82\asm/csfr.h \ + ../../../../include_lib/driver/cpu/wl82\asm/irq.h \ + ../../../../include_lib/driver/cpu/wl82\asm/hwi.h \ + ../../../../include_lib/system\generic/printf.h \ + ../../../../include_lib\system/generic/log.h \ + ../../../../include_lib/system\generic/errno-base.h \ + ../../../../include_lib/c++/include\string.h \ + ../../../../include_lib/c++/include\__config \ + ../../../../include_lib/newlib/include\strings.h \ + ../../../../include_lib/newlib/include\sys/types.h \ + ../../../../include_lib/newlib/include\sys/_stdint.h \ + ../../../../include_lib/c++/include\stddef.h \ + ../../../../include_lib/newlib/include\machine/types.h \ + ../../../../include_lib\system/malloc.h \ + ../../../../include_lib/net\wifi/wifi_def.h \ + ../../../../include_lib/net/lwip_2_2_0/lwip/src/include\lwip/sockets.h \ + ../../../../include_lib/net/lwip_2_2_0/lwip/src/include\lwip/opt.h \ + ../../../../include_lib/net/lwip_2_2_0/lwip/port\lwipopts.h \ + ../../../../include_lib/c++/include\errno.h \ + ../../../../include_lib\utils/crypto_toolbox/endian.h \ + ../../../../include_lib/newlib/include\sys/time.h \ + ../../../../include_lib/newlib/include\sys/_timeval.h \ + ../../../../include_lib/newlib/include\sys/timespec.h \ + ../../../../include_lib/newlib/include\sys/_timespec.h \ + ../../../../include_lib/newlib/include\time.h \ + ../../../../include_lib/newlib/include\machine/time.h \ + ../../../../include_lib/net/lwip_2_2_0/lwip/src/include\lwip/debug.h \ + ../../../../include_lib/net/lwip_2_2_0/lwip/src/include\lwip/arch.h \ + ../../../../include_lib/net/lwip_2_2_0/lwip/port\arch/cc.h \ + ../../../../include_lib/net/lwip_2_2_0/lwip/port\arch/cpu.h \ + ../../../../include_lib/c++/include\stdint.h \ + ../../../../include_lib/c++/include\inttypes.h \ + ../../../../include_lib/c++/include\limits.h \ + ../../../../include_lib/net/lwip_2_2_0/lwip/src/include\lwip/ip_addr.h \ + ../../../../include_lib/net/lwip_2_2_0/lwip/src/include\lwip/def.h \ + ../../../../include_lib/net/lwip_2_2_0/lwip/src/include\lwip/ip4_addr.h \ + ../../../../include_lib/net/lwip_2_2_0/lwip/src/include\lwip/ip6_addr.h \ + ../../../../include_lib/net/lwip_2_2_0/lwip/src/include\lwip/ip6_zone.h \ + ../../../../include_lib/net/lwip_2_2_0/lwip/src/include\lwip/netif.h \ + ../../../../include_lib/net/lwip_2_2_0/lwip/src/include\lwip/err.h \ + ../../../../include_lib/net/lwip_2_2_0/lwip/src/include\lwip/pbuf.h \ + ../../../../include_lib/net/lwip_2_2_0/lwip/src/include\lwip/stats.h \ + ../../../../include_lib/net/lwip_2_2_0/lwip/src/include\lwip/mem.h \ + ../../../../include_lib/net/lwip_2_2_0/lwip/src/include\lwip/memp.h \ + ../../../../include_lib/net/lwip_2_2_0/lwip/src/include\lwip/priv/memp_std.h \ + ../../../../include_lib/net/lwip_2_2_0/lwip/src/include\lwip/priv/memp_priv.h \ + ../../../../include_lib/net/lwip_2_2_0/lwip/src/include\lwip/priv/mem_priv.h \ + ../../../../include_lib/net/lwip_2_2_0/lwip/src/include\lwip/inet.h \ + ../../../../include_lib/net/lwip_2_2_0/lwip/src/include\lwip/errno.h \ + ../../../../include_lib/net/lwip_2_2_0/lwip/src/include\lwip/netdb.h \ + ../../../../include_lib/system\os/os_api.h \ + ../../../../include_lib/system\os/os_cpu.h \ + ../../../../include_lib/system\generic/jiffies.h \ + ../../../../include_lib/system\os/os_error.h \ + ../../../../include_lib/system\os/os_type.h \ + ../../../../include_lib/system/os/FreeRTOS/FreeRTOS.h \ + ../../../../include_lib/system/os/FreeRTOS/FreeRTOSConfig.h \ + ../../../../include_lib/system/os/FreeRTOS/pi32v2/portmacro.h \ + ../../../../include_lib/system/os/FreeRTOS/projdefs.h \ + ../../../../include_lib/system/os/FreeRTOS/portable.h \ + ../../../../include_lib/system/os/FreeRTOS/deprecated_definitions.h \ + ../../../../include_lib/system/os/FreeRTOS/mpu_wrappers.h \ + ../../../../include_lib/system/os/FreeRTOS/semphr.h \ + ../../../../include_lib/system/os/FreeRTOS/queue.h \ + ../../../../include_lib/system/os/FreeRTOS/task.h \ + ../../../../include_lib/system/os/FreeRTOS/list.h \ + ../../../../include_lib/system/os/FreeRTOS/event_groups.h \ + ../../../../include_lib/system/os/FreeRTOS/timers.h \ + ../../../../include_lib/system\generic/list.h \ + ../../../../include_lib\system/init.h \ + ../../../../include_lib/net/lwip_2_2_0/lwip/port\lwip.h \ + ../../../../include_lib/net/lwip_2_2_0/lwip/src/include\lwip/prot/ethernet.h \ + ../../../../include_lib/net/lwip_2_2_0/lwip/src/include\lwip/prot/ieee.h \ + ../../../../include_lib/driver\device/device.h \ + ../../../../include_lib/system\generic/atomic.h \ + ../../../../include_lib/system/generic/cpu.h \ + ../../../../include_lib/system/generic/irq.h \ + ../../../../include_lib/driver\device/ioctl_cmds.h \ + ../../../../include_lib\system/app_core.h \ + ../../../../include_lib\utils/event/event.h \ + ../../../../include_lib/system\server/server_core.h \ + ../../../../include_lib\system/task.h \ + ../../../../include_lib/system\spinlock.h \ + ../../../../include_lib\system/timer.h \ + ../../../../include_lib/driver/cpu/wl82\asm/debug.h \ + ../../../../include_lib/driver/cpu/wl82\asm/power_interface.h \ + ../../../../apps/JL-AIBT-SoundBox/app\app_config.h \ + ../../../../include_lib/net\http/http_cli.h \ + ../../../../include_lib/system\database.h \ + ../../../../include_lib/net\json_c/json_tokener.h \ + ../../../../include_lib/net\json_c/json_object.h \ + ../../../../include_lib/net\json_c/json_inttypes.h \ + ../../../../include_lib/net\json_c/json_config.h \ + ../../../../include_lib/net\json_c/printbuf.h \ + ../../../../apps/common/net/voiceprint_cfg.h \ + ../../../../include_lib/net\server/net_server.h \ + ../../../../include_lib/utils\fs/fs.h \ + ../../../../include_lib/system\generic/ioctl.h \ + ../../../../include_lib\system/sys_time.h \ + ../../../../include_lib/utils\fs/fs_file_name.h \ + ../../../../include_lib/utils\fs/sdfile.h \ + ../../../../include_lib/utils\event/net_event.h diff --git a/board/wl82/objs/apps/common/net/config_network.c.o b/board/wl82/objs/apps/common/net/config_network.c.o new file mode 100644 index 0000000000000000000000000000000000000000..3e6cd9074220552b696d42e84901704971d6ae10 GIT binary patch literal 8416 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 literal 0 HcmV?d00001 diff --git a/board/wl82/objs/apps/common/net/wifi_conf.c.d b/board/wl82/objs/apps/common/net/wifi_conf.c.d new file mode 100644 index 0000000..1d42ff2 --- /dev/null +++ b/board/wl82/objs/apps/common/net/wifi_conf.c.d @@ -0,0 +1,67 @@ +objs/apps/common/net/wifi_conf.c.o: \ + ../../../../apps/common/net/wifi_conf.c \ + ../../../../include_lib/c++/include\string.h \ + ../../../../include_lib/c++/include\__config \ + ../../../../include_lib/system\generic/typedef.h \ + ../../../../include_lib/driver/cpu/wl82\asm/cpu.h \ + ../../../../include_lib/driver/cpu/wl82\asm/WL82.h \ + ../../../../include_lib/driver/cpu/wl82\asm/csfr.h \ + ../../../../include_lib/driver/cpu/wl82\asm/irq.h \ + ../../../../include_lib/driver/cpu/wl82\asm/hwi.h \ + ../../../../include_lib/system\generic/printf.h \ + ../../../../include_lib\system/generic/log.h \ + ../../../../include_lib/system\generic/errno-base.h \ + ../../../../include_lib/newlib/include\strings.h \ + ../../../../include_lib/newlib/include\sys/types.h \ + ../../../../include_lib/newlib/include\sys/_stdint.h \ + ../../../../include_lib/c++/include\stddef.h \ + ../../../../include_lib/newlib/include\machine/types.h \ + ../../../../include_lib\system/malloc.h \ + ../../../../apps/JL-AIBT-SoundBox/app\app_config.h \ + ../../../../include_lib/driver/cpu/wl82\asm/crc16.h \ + ../../../../include_lib/driver/cpu/wl82\asm/gpio.h \ + ../../../../include_lib/system\database.h \ + ../../../../include_lib/utils\syscfg/syscfg_id.h \ + ../../../../include_lib/driver/cpu/wl82\asm/sfc_norflash_api.h \ + ../../../../include_lib/driver\device/device.h \ + ../../../../include_lib/system\generic/list.h \ + ../../../../include_lib/system\generic/atomic.h \ + ../../../../include_lib/system/generic/cpu.h \ + ../../../../include_lib/system/generic/irq.h \ + ../../../../include_lib/driver\device/ioctl_cmds.h \ + ../../../../include_lib/net\wifi/wifi_connect.h \ + ../../../../include_lib/net\wifi/wifi_def.h \ + ../../../../include_lib/net/lwip_2_2_0/lwip/port\lwip.h \ + ../../../../include_lib/net/lwip_2_2_0/lwip/src/include\lwip/netif.h \ + ../../../../include_lib/net/lwip_2_2_0/lwip/src/include\lwip/opt.h \ + ../../../../include_lib/net/lwip_2_2_0/lwip/port\lwipopts.h \ + ../../../../include_lib/c++/include\errno.h \ + ../../../../include_lib\utils/crypto_toolbox/endian.h \ + ../../../../include_lib/newlib/include\sys/time.h \ + ../../../../include_lib/newlib/include\sys/_timeval.h \ + ../../../../include_lib/newlib/include\sys/timespec.h \ + ../../../../include_lib/newlib/include\sys/_timespec.h \ + ../../../../include_lib/newlib/include\time.h \ + ../../../../include_lib/newlib/include\machine/time.h \ + ../../../../include_lib/net/lwip_2_2_0/lwip/src/include\lwip/debug.h \ + ../../../../include_lib/net/lwip_2_2_0/lwip/src/include\lwip/arch.h \ + ../../../../include_lib/net/lwip_2_2_0/lwip/port\arch/cc.h \ + ../../../../include_lib/net/lwip_2_2_0/lwip/port\arch/cpu.h \ + ../../../../include_lib/c++/include\stdint.h \ + ../../../../include_lib/c++/include\inttypes.h \ + ../../../../include_lib/c++/include\limits.h \ + ../../../../include_lib/net/lwip_2_2_0/lwip/src/include\lwip/err.h \ + ../../../../include_lib/net/lwip_2_2_0/lwip/src/include\lwip/ip_addr.h \ + ../../../../include_lib/net/lwip_2_2_0/lwip/src/include\lwip/def.h \ + ../../../../include_lib/net/lwip_2_2_0/lwip/src/include\lwip/ip4_addr.h \ + ../../../../include_lib/net/lwip_2_2_0/lwip/src/include\lwip/ip6_addr.h \ + ../../../../include_lib/net/lwip_2_2_0/lwip/src/include\lwip/ip6_zone.h \ + ../../../../include_lib/net/lwip_2_2_0/lwip/src/include\lwip/pbuf.h \ + ../../../../include_lib/net/lwip_2_2_0/lwip/src/include\lwip/stats.h \ + ../../../../include_lib/net/lwip_2_2_0/lwip/src/include\lwip/mem.h \ + ../../../../include_lib/net/lwip_2_2_0/lwip/src/include\lwip/memp.h \ + ../../../../include_lib/net/lwip_2_2_0/lwip/src/include\lwip/priv/memp_std.h \ + ../../../../include_lib/net/lwip_2_2_0/lwip/src/include\lwip/priv/memp_priv.h \ + ../../../../include_lib/net/lwip_2_2_0/lwip/src/include\lwip/priv/mem_priv.h \ + ../../../../include_lib/net/lwip_2_2_0/lwip/src/include\lwip/prot/ethernet.h \ + ../../../../include_lib/net/lwip_2_2_0/lwip/src/include\lwip/prot/ieee.h diff --git a/board/wl82/objs/apps/common/net/wifi_conf.c.o b/board/wl82/objs/apps/common/net/wifi_conf.c.o new file mode 100644 index 0000000000000000000000000000000000000000..45234f6d87577ddc153d7262cf31b7b26fc53094 GIT binary patch literal 34896 zcmeEvd0dmn*6?I82^d0H)F2Qazy&u5iwKIEuqY@33R+xh!jcHe5&>DXr3oO5(iS&} zJE&EvwnecPD{aFfqM*g47MEI3RJ3YQX~ovwerF~LU~Bun@9+2hdAXG5nKNh3oH=v0 zSst&CulCj?ON0g?grc~jk%5c89{uEU)d3jfp6NA{HBW%h9O%iqfI=lExfE(mkDo6gk9w(Ei~cvGTS<}u$3mtSIY7;9oZ@>KUI^jzLu*ql`y zb{f>87CW1^NZ~me)mCnEFH(3NLDx2ocDDC`rq-st97x%q6hPMGCnHXJM!tuLoyp0^ zq*VFo0qpd${N&<%4@Y)dKz7)g$yB~aD`q%dg9nlko0G<2uMxAgHZTP+WK@Sahf&nggza{=H#=

    |xjNsH%& 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 literal 0 HcmV?d00001 diff --git a/board/wl82/objs/cpu/wl82/setup.c.d b/board/wl82/objs/cpu/wl82/setup.c.d new file mode 100644 index 0000000..13233fa --- /dev/null +++ b/board/wl82/objs/cpu/wl82/setup.c.d @@ -0,0 +1,123 @@ +objs/cpu/wl82/setup.c.o: ../../../../cpu/wl82/setup.c \ + ../../../../apps/JL-AIBT-SoundBox/app\app_config.h \ + ../../../../include_lib/driver/cpu/wl82\asm/includes.h \ + ../../../../include_lib/driver/cpu/wl82\asm/audio.h \ + ../../../../include_lib/system/generic\typedef.h \ + ../../../../include_lib/driver/cpu/wl82\asm/cpu.h \ + ../../../../include_lib/driver/cpu/wl82\asm/WL82.h \ + ../../../../include_lib/driver/cpu/wl82\asm/csfr.h \ + ../../../../include_lib/driver/cpu/wl82\asm/irq.h \ + ../../../../include_lib/driver/cpu/wl82\asm/hwi.h \ + ../../../../include_lib/system\generic/typedef.h \ + ../../../../include_lib/system\generic/printf.h \ + ../../../../include_lib\system/generic/log.h \ + ../../../../include_lib/system\generic/errno-base.h \ + ../../../../include_lib/c++/include\string.h \ + ../../../../include_lib/c++/include\__config \ + ../../../../include_lib/newlib/include\strings.h \ + ../../../../include_lib/newlib/include\sys/types.h \ + ../../../../include_lib/newlib/include\sys/_stdint.h \ + ../../../../include_lib/c++/include\stddef.h \ + ../../../../include_lib/newlib/include\machine/types.h \ + ../../../../include_lib\system/malloc.h \ + ../../../../include_lib/driver/cpu/wl82\asm/ladc.h \ + ../../../../include_lib/driver/cpu/wl82\asm/dac.h \ + ../../../../include_lib/driver/cpu/wl82\asm/iis.h \ + ../../../../include_lib/driver/cpu/wl82\asm/plnk.h \ + ../../../../include_lib/driver/cpu/wl82\asm/src.h \ + ../../../../include_lib/system\generic/circular_buf.h \ + ../../../../include_lib\system/spinlock.h \ + ../../../../include_lib/driver/cpu/wl82\asm/spdif.h \ + ../../../../include_lib/driver/cpu/wl82\asm/adc_api.h \ + ../../../../include_lib/driver/cpu/wl82\asm/cache.h \ + ../../../../include_lib/driver/cpu/wl82\asm/dma.h \ + ../../../../include_lib/driver/cpu/wl82\asm/debug.h \ + ../../../../include_lib/driver/cpu/wl82\asm/gpio.h \ + ../../../../include_lib/driver/cpu/wl82\asm/iic.h \ + ../../../../include_lib/driver/cpu/wl82\asm/lock.h \ + ../../../../include_lib/driver/cpu/wl82\asm/sdmmc.h \ + ../../../../include_lib/driver\device/device.h \ + ../../../../include_lib/system\generic/list.h \ + ../../../../include_lib/system\generic/atomic.h \ + ../../../../include_lib/system/generic/cpu.h \ + ../../../../include_lib/system/generic/irq.h \ + ../../../../include_lib/driver\device/ioctl_cmds.h \ + ../../../../include_lib/driver/device\sdio/sdmmc.h \ + ../../../../include_lib/system\generic/ioctl.h \ + ../../../../include_lib/driver/cpu/wl82\asm/spiflash.h \ + ../../../../include_lib/driver\device/spiflash.h \ + ../../../../include_lib\system/task.h \ + ../../../../include_lib/system/os/os_api.h \ + ../../../../include_lib/system\os/os_cpu.h \ + ../../../../include_lib/system\generic/jiffies.h \ + ../../../../include_lib/system\os/os_error.h \ + ../../../../include_lib/system\os/os_type.h \ + ../../../../include_lib/system/os/FreeRTOS/FreeRTOS.h \ + ../../../../include_lib/system/os/FreeRTOS/FreeRTOSConfig.h \ + ../../../../include_lib/system/os/FreeRTOS/pi32v2/portmacro.h \ + ../../../../include_lib/c++/include\stdint.h \ + ../../../../include_lib/system/os/FreeRTOS/projdefs.h \ + ../../../../include_lib/system/os/FreeRTOS/portable.h \ + ../../../../include_lib/system/os/FreeRTOS/deprecated_definitions.h \ + ../../../../include_lib/system/os/FreeRTOS/mpu_wrappers.h \ + ../../../../include_lib/system/os/FreeRTOS/semphr.h \ + ../../../../include_lib/system/os/FreeRTOS/queue.h \ + ../../../../include_lib/system/os/FreeRTOS/task.h \ + ../../../../include_lib/system/os/FreeRTOS/list.h \ + ../../../../include_lib/system/os/FreeRTOS/event_groups.h \ + ../../../../include_lib/system/os/FreeRTOS/timers.h \ + ../../../../include_lib/driver/cpu/wl82\asm/startup.h \ + ../../../../include_lib/driver/cpu/wl82\asm/uart.h \ + ../../../../include_lib/driver\device/uart.h \ + ../../../../include_lib/driver/cpu/wl82\asm/imc.h \ + ../../../../include_lib/driver/cpu/wl82\asm/isc.h \ + ../../../../include_lib/utils\fs/fs.h \ + ../../../../include_lib\system/sys_time.h \ + ../../../../include_lib/utils\fs/fs_file_name.h \ + ../../../../include_lib/utils\fs/sdfile.h \ + ../../../../include_lib/driver/cpu/wl82\asm/isp_dev.h \ + ../../../../include_lib/driver/cpu/wl82\asm/device_drive.h \ + ../../../../include_lib/driver/cpu/wl82\asm/isp_alg.h \ + ../../../../include_lib/driver/cpu/wl82\asm/rtc.h \ + ../../../../include_lib/driver/cpu/wl82\asm/clock.h \ + ../../../../include_lib/driver/cpu/wl82\asm/crc16.h \ + ../../../../include_lib/driver/cpu/wl82\asm/spi.h \ + ../../../../include_lib/driver/cpu/wl82\asm/imd.h \ + ../../../../include_lib/driver/device\video/fb.h \ + ../../../../include_lib/driver/cpu/wl82\asm/imr.h \ + ../../../../include_lib/driver/cpu/wl82\asm/port_waked_up.h \ + ../../../../include_lib/driver/cpu/wl82\asm/image_enc.h \ + ../../../../include_lib/driver/device\video/video.h \ + ../../../../include_lib/driver/device\video/video_ioctl.h \ + ../../../../include_lib/system\generic/lbuf.h \ + ../../../../include_lib/driver/cpu/wl82\asm/jpeg_codec.h \ + ../../../../include_lib/driver/cpu/wl82\asm/jpeg_encoder.h \ + ../../../../include_lib/driver/cpu/wl82\asm/jpeg_abr.h \ + ../../../../include_lib/driver/cpu/wl82\asm/imb_driver.h \ + ../../../../include_lib/driver/cpu/wl82\asm/uvc_device.h \ + ../../../../include_lib/driver/device\video/camera.h \ + ../../../../include_lib/driver/cpu/wl82\asm/bus_device.h \ + ../../../../include_lib/driver/cpu/wl82\asm/pap.h \ + ../../../../include_lib/driver/cpu/wl82\asm/emi.h \ + ../../../../include_lib/driver\device/gpio.h \ + ../../../../include_lib/driver/cpu/wl82\asm/power_interface.h \ + ../../../../include_lib/driver/cpu/wl82\asm/p33.h \ + ../../../../include_lib/driver/cpu/wl82\asm/pwm.h \ + ../../../../include_lib/driver/cpu/wl82\asm/pwm_led.h \ + ../../../../include_lib/driver/cpu/wl82\asm/wdt.h \ + ../../../../include_lib/driver/cpu/wl82\asm/jpeg_decoder.h \ + ../../../../include_lib\system/includes.h \ + ../../../../include_lib/system/generic/includes.h \ + ../../../../include_lib/system/generic/ascii.h \ + ../../../../include_lib/system/generic/rect.h \ + ../../../../include_lib/system/generic/version.h \ + ../../../../include_lib/system/generic/lbuf_lite.h \ + ../../../../include_lib/system/generic/debug_lite.h \ + ../../../../include_lib/system/init.h \ + ../../../../include_lib/system/timer.h \ + ../../../../include_lib/system/wait.h \ + ../../../../include_lib/system/app_core.h \ + ../../../../include_lib\utils/event/event.h \ + ../../../../include_lib/system/app_msg.h \ + ../../../../include_lib/system/bank_switch.h \ + ../../../../include_lib/driver/cpu/wl82\asm/system_reset_reason.h diff --git a/board/wl82/objs/cpu/wl82/setup.c.o b/board/wl82/objs/cpu/wl82/setup.c.o new file mode 100644 index 0000000000000000000000000000000000000000..c8af07dc5392e769af82cc0beab2bdfc41d3786d GIT binary patch literal 3048 zcmeHJe@q+K9e>8gcL}yJ!K&=!?s^7-$jT36QetXQZEO;g($q9GN>;0!aiGqRhOY@r)*_J6%Mb&89q;4`l#5`oRj7BZ77{dxhD9a+6q*668W#4lW zvTEz3{Xfh1eth5eeSg2td#$$A(vup53K2p*3PVNvk>6L|`r_3ZyTmAxkY0h%dI3U3 zQ5r#qO5wvI<>#zvS-V_qY&tI)QS22fKoSB=-LQfXihB~G4Ot%NO(-4)Um!9MQV<)& zv9RS)7CxjP7ocTnA}=IDF6oK2O&1ucUdCxpF1(i$>kCVv${u3LO06V`nFzI@e>`iU zmXg$BgqV#GS&o>WpypwmRIci&l?ath5fJ38D3E+q8-Az<9P>fGywWhv4={YA79s|f z^T?{Gm=uUAgau+U4~2I>!g?aTY1{qq{%~Pn9M}mJs}(bzB3AT77Cc4NlAc_QP-1My zhy^{FO)7z5F{xaD08Tt8ODM&R`v>g*e}#O%LRvS(+CW-P)&cm|4wxhpu`bF)X+>$& z9i`Q!1qJ908X+~%jb)B4^wHO4@048}f#&*1QqXMcI6GQ2aWVBb`?2)RA9KWpSh$I#iCM0$iX)W(qSQ{3_4Y>%&EfAqT;Xt^N(Qx8hb@h`5q1i zE!ZPEqx#--Sp~@GWAY4h^4u5(FbCUhA0Whm9t(WvOtVZaA~z>a6hkT+$zcG9i?p{Z zEC}E|kL!k&b`F8xdB>UbCkTKTAsoJx@JmSn0|U`@PX8Q|rC>nAhd>d|fhdbOIn#`( zk#tj0!6QX;xZ9upt*h?6zkcoio$I5ov@gB(=WC{GCtmu+SGkWqo|Z>G%z%MMXwfhu zl~C(SI)u?JmHTF7He;I;?-iwg47Qzsz5(Zm=^W9gk+j5Zrje=9RsiS_7D)IMtEl*I zYSmp%)u3plCMQV1ls-dYo-MW`BW+3BT1KTUnb0VJ?=X%HIRGNDFe`ofYR;@{;Bp%FVtYhb z$M$d{x``-Ig$;gJ2x5aA-;MJ=E$>gjT@tCjwXV9gtok;kx@nO1q{VxJ0LX)O(M`Okp6)O=NH9-mVD;TX>z=KXAJz>9_83eoZd zW4!LOgT=Q{@olGSMNnP06z6EwP4I%QA{Qq_ke$~PfEtU-BHZ7QP<`4?)41)a3o&!X zS@FOTh7X3YP@=Qru23vSfI6NBbUnE=LB1*xK{KN#*WL22*JGy4lzH6N0s+~WY+kXM z<1n2Xoq8V|(u$Y251}C%p&vuedMF2Niz{?Zx(eZ(WhR~WmN{{a@dK?+zb`FxR;&Ml z&|+{h+TT%QZEx+WIoN;t)X~=dkgKQP z?LX=g&GDRcpL&@d?DYqZ^`D}5*BWZ;X?xJ^@1qahr`daZPQOgIpX%#>NP#yFK4XkB zhH`vwLzl)d3uj4P4elbfq6vQx95`+0ez`Cpu4bQ&+*EXxn1Sa4JXR*)^+T@ZbBf$FLi=G)smxj}9&qst?%o>fkVNIe_zTispXDyp zY#VRe0%Y_JK*D3tmx)>1INY%Tb!N2c zXG%~&M9DV z$L69H7N=p+=@-T^fG(t~+{m-k^Wk;hI3EG}saWq-tLUOcl1i!|` zc9)j4U2XV>Bi8X4cX;YX`t63Lf;hBX{q{Exx03c~gZk;~ hU6ygRxV5BNTH>5}PVy&Fr!Hz#OL{jz8`vuT{t2`58(9DV literal 0 HcmV?d00001 diff --git a/board/wl82/objs/include_lib/btctrler/version.z.S.d b/board/wl82/objs/include_lib/btctrler/version.z.S.d new file mode 100644 index 0000000..bfbf735 --- /dev/null +++ b/board/wl82/objs/include_lib/btctrler/version.z.S.d @@ -0,0 +1,2 @@ +objs/include_lib/btctrler/version.z.S.o: \ + ../../../../include_lib/btctrler/version.z.S diff --git a/board/wl82/objs/include_lib/btctrler/version.z.S.o b/board/wl82/objs/include_lib/btctrler/version.z.S.o new file mode 100644 index 0000000000000000000000000000000000000000..74f4703f19282dacb03572ab32a0bfbc48617d5a GIT binary patch literal 516 zcmb7AJr4mv6nu+N5rs-45ru+{0+k9Ukz5o$O1W4za>+T#-4aCN5BYOyjrY#3J35=Z zotd4#z+Mb3r#~Oer?xe1*1DZew=G&w$5aZc zcr*4aHTJflWMqH=Muv|J2p$8&3#fz%nATum1Il{(Is1gVxW+q$1cx{}d+Vy08knah zrW!D402MJYC;>@E#@~FrKoV>+&^$(lvecsD%=|pPD!pK+kr)&^l868UGXsNONoqw2 zLuOubPH9SNd`@Okd{RkqNn&z#Jk&G>z2eGZJvb*NHK{Zms4g!RC{a>Wl9&WikPD)T z1vWs1K%3!U4v^&o=Yc!|0U#QL*`Rz#_&_;8iV4b82GZ#2BoWHs<{3cM!K8eF3>_E; ZNzMhxhM5hLt^r~NAcnbz1;`cvVgSyeFBt#; literal 0 HcmV?d00001 diff --git a/board/wl82/objs/include_lib/driver/version.z.S.d b/board/wl82/objs/include_lib/driver/version.z.S.d new file mode 100644 index 0000000..97d2db6 --- /dev/null +++ b/board/wl82/objs/include_lib/driver/version.z.S.d @@ -0,0 +1,2 @@ +objs/include_lib/driver/version.z.S.o: \ + ../../../../include_lib/driver/version.z.S diff --git a/board/wl82/objs/include_lib/driver/version.z.S.o b/board/wl82/objs/include_lib/driver/version.z.S.o new file mode 100644 index 0000000000000000000000000000000000000000..080b24961155643a4d588a8ca4277bf3d2bc1b34 GIT binary patch literal 468 zcma)2!4APd6nu+tB94wC4i2n~o*bz}G!BGoqq>zQRMM8<;x~MtA8>XtueQa_OJ?Uy zXEK}a)wD)J2uerLgFcGru8m&8Eh@qtPY2dwXxhWscxlc$&6VL9p0lPFGC6AC6yjMa z<4lTCC+Mic$lnL@BImmCmr7r3b zVu6AYhw;kcz>fLv=_84ov$+9lM+Re5F Xw0Y5!dIRXRo2?U22iRv6fGY3;X0$HL literal 0 HcmV?d00001 diff --git a/board/wl82/objs/include_lib/media/version.z.S.d b/board/wl82/objs/include_lib/media/version.z.S.d new file mode 100644 index 0000000..24b9ee3 --- /dev/null +++ b/board/wl82/objs/include_lib/media/version.z.S.d @@ -0,0 +1,2 @@ +objs/include_lib/media/version.z.S.o: \ + ../../../../include_lib/media/version.z.S diff --git a/board/wl82/objs/include_lib/media/version.z.S.o b/board/wl82/objs/include_lib/media/version.z.S.o new file mode 100644 index 0000000000000000000000000000000000000000..d9fec9ffb9ccd0c3db816d3267e896d033ab1788 GIT binary patch literal 468 zcmb<-^>JflWMqH=Muv|J2p$8&6R3mSUUU6ly9-NbsnpBz&RF#(slqe}GNlXGM$OX~F11q3X zpv`bF1IY4%^FZE!01yqrY*0QVY@i$<#RO$40%>%0;s|AM^YozVU{c;dh7OE_BJflWMqH=Muv|J2p$8&1E_=vnATum1Il{(Is1gVxW@arhUlu8r z02MGXC;>@E#@~FrKoV>!&@4uVvecsD%=|pPD!pK+aTpXkl868UGXsNONoqw2LuOub zPH9SNd`@Okd|qlvJk%rxz2eGZJvb*NHK{Zms3tEJC{a>Wl9&WikPD)T1r|VsKwIHp z29V_e=Yc!{0U#QL*`Rz#xIj5TiV4b;2h!;3L=np1=IKDy!K6Ha43HQM!0dGZ3c$<; T$yETc0uY1bL6`-I1%Ma;{p2gk literal 0 HcmV?d00001 diff --git a/board/wl82/objs/include_lib/server/version.z.S.d b/board/wl82/objs/include_lib/server/version.z.S.d new file mode 100644 index 0000000..dcb4219 --- /dev/null +++ b/board/wl82/objs/include_lib/server/version.z.S.d @@ -0,0 +1,2 @@ +objs/include_lib/server/version.z.S.o: \ + ../../../../include_lib/server/version.z.S diff --git a/board/wl82/objs/include_lib/server/version.z.S.o b/board/wl82/objs/include_lib/server/version.z.S.o new file mode 100644 index 0000000000000000000000000000000000000000..a38857cf6eb565d0dd09a7a587139eb72a3264d2 GIT binary patch literal 468 zcma)2O%K696nu+tB94wC4i2n~kBB3ch{l0%ZB#eXgi6{HT>K3`&>wJiF|W48%}ZwI zO=mKj?$t0yLI{dS(1SjT=&p@c#5Kyo9Zv`5VrW=%W41JAjcU8o>UEtJ)sRV11*Z_t zLLO&Sj5@v81nwZ*e!< YCQ#=^PwWk#<8HQ2Kp9}4kpYUp3$c4HSpWb4 literal 0 HcmV?d00001 diff --git a/board/wl82/objs/include_lib/system/version.z.S.d b/board/wl82/objs/include_lib/system/version.z.S.d new file mode 100644 index 0000000..ea56405 --- /dev/null +++ b/board/wl82/objs/include_lib/system/version.z.S.d @@ -0,0 +1,2 @@ +objs/include_lib/system/version.z.S.o: \ + ../../../../include_lib/system/version.z.S diff --git a/board/wl82/objs/include_lib/system/version.z.S.o b/board/wl82/objs/include_lib/system/version.z.S.o new file mode 100644 index 0000000000000000000000000000000000000000..f98f15b581fc880993dd316d3b9b4717afdaf172 GIT binary patch literal 468 zcmb<-^>JflWMqH=Muv|J2p$8&6R3mZ+ue8JHwn zm@sGn)i5zA0ZB&2-+a745^ONgI7WuD)S}|d{5-uXyu?~m< b1u!{hARlHnNU8#e6@VBd55g=!EC9p+&U`Lz literal 0 HcmV?d00001 diff --git a/board/wl82/objs/include_lib/update/version.z.S.d b/board/wl82/objs/include_lib/update/version.z.S.d new file mode 100644 index 0000000..83b7a2a --- /dev/null +++ b/board/wl82/objs/include_lib/update/version.z.S.d @@ -0,0 +1,2 @@ +objs/include_lib/update/version.z.S.o: \ + ../../../../include_lib/update/version.z.S diff --git a/board/wl82/objs/include_lib/update/version.z.S.o b/board/wl82/objs/include_lib/update/version.z.S.o new file mode 100644 index 0000000000000000000000000000000000000000..067d02fff139cd6d97e3fb071ed00d969790cae1 GIT binary patch literal 468 zcmb<-^>JflWMqH=Muv|J2p$8&6R3mZ&9rrzE9V zq%vp#)i5zA0ZB&2-+a745^ONgI7WuD)S}|d{5-uXy+w1BsCst5`$iGWw9QdlaiWLnhsQ!mkN|9DJn@!0x8G^(L@7l zph}?4a4-YN@`m$3zJLG_4Z>_tJ|t|Q93aI6Wr9Nj$VOHtflvlFPah}-GaDrB1H?KY d1{A>LoPm6p*&wM3AXWfkkUR*p0I>iN0|1y9F6aON literal 0 HcmV?d00001 diff --git a/board/wl82/objs/include_lib/utils/version.z.S.d b/board/wl82/objs/include_lib/utils/version.z.S.d new file mode 100644 index 0000000..cedb48f --- /dev/null +++ b/board/wl82/objs/include_lib/utils/version.z.S.d @@ -0,0 +1,2 @@ +objs/include_lib/utils/version.z.S.o: \ + ../../../../include_lib/utils/version.z.S diff --git a/board/wl82/objs/include_lib/utils/version.z.S.o b/board/wl82/objs/include_lib/utils/version.z.S.o new file mode 100644 index 0000000000000000000000000000000000000000..585cd2a139472aa2f13032bcff4faf2d15d16083 GIT binary patch literal 468 zcma)2y$%6E82lEYBG+jVg@VmV6e#^AxM)yc97`@aCvkg%#%p*$FQC?#W$%c}m(0#L znaON+FMVsk7^7$y-RYx55R2ky@2XFk=1Ka}~>1|^BO6h}#}zx2YDuszqYL+N^ft(%Akr+~*|C7f`B zlrLb&y<9jduvPs3v=PP4@m#TuVx^w(9>of2t>1s61t_7{BKS9#|HR@xu5*z!#!`*M Um)F4_bu0S_6aaOHLJBZ|C)SWHoB#j- literal 0 HcmV?d00001 diff --git a/board/wl82/objs/lib/net/version.z.S.d b/board/wl82/objs/lib/net/version.z.S.d new file mode 100644 index 0000000..61a750f --- /dev/null +++ b/board/wl82/objs/lib/net/version.z.S.d @@ -0,0 +1 @@ +objs/lib/net/version.z.S.o: ../../../../lib/net/version.z.S diff --git a/board/wl82/objs/lib/net/version.z.S.o b/board/wl82/objs/lib/net/version.z.S.o new file mode 100644 index 0000000000000000000000000000000000000000..c3b99f493c647e124c49870bb291c2668571e936 GIT binary patch literal 448 zcmb<-^>JflWMqH=Muv|J2p$8&1*n7xnATum1IqfjhUlso7@8TGq?sEtXaHrH7?gk{ zBjayAULXlJ4rmA?Ls@E3ab|v=UX@-j)Esn*9Z5idfti6puOzjigdrz0DLyZ?Bpzx2 zgI;lEu^yb0lA2VS9-ot$mkN|9DJn@!0x8G^(Zm7+phBQ+a4-SLa)9$dZifI64Z>_t zJ|rBV93aI6Wr_o7bai|PWpMLUpz2^!PC$kZjDsX+0c69>21yqHu>ugo+`|H73ji?y D(YGc2 literal 0 HcmV?d00001 diff --git a/board/wl82/objs/lib/server/version.z.S.d b/board/wl82/objs/lib/server/version.z.S.d new file mode 100644 index 0000000..89fa7e2 --- /dev/null +++ b/board/wl82/objs/lib/server/version.z.S.d @@ -0,0 +1 @@ +objs/lib/server/version.z.S.o: ../../../../lib/server/version.z.S diff --git a/board/wl82/objs/lib/server/version.z.S.o b/board/wl82/objs/lib/server/version.z.S.o new file mode 100644 index 0000000000000000000000000000000000000000..9cc480805a6394272145a5fec7e1cd5d7aae5f72 GIT binary patch literal 452 zcmb<-^>JflWMqH=Muv|J2p$8&6{v&>nATum1Ih-w28Fo>>8hj}r5dHBq%vp#<(L?h zfFvX1Z$4fi2{sUD3?oBXYEf}!ex6>HUNF=oREiymE5N|az@S%>T2aD~lbIA>oLU6b z9S=2uL9e*7SP#xgNlhwEkI%`>O9e`l6qO_JflWMqH=Muv|J2p$8&6{v&>nATum1ImVmc=`nEs+gN5TNs(AF=zm#m>86R zBqQT*K3*URHVf^7ueh>U56($RO)5=~&&kY71xl0@l_VyC6y$ 命令 -> 可选参数 -> CS 高 + */ +static int lcd_send_command_locked(u8 cmd, const u8 *data, u32 len) +{ + int ret; + + lcd_cs(0); + + ret = lcd_write_cmd_raw_locked(cmd); + if (ret == 0 && len != 0) { + ret = lcd_write_data_raw_locked(data, len); + } + + lcd_cs(1); + + if (ret != 0) { + APP_LOG("st7789v2: command 0x%02x failed, ret=%d\n", + cmd, ret); + } + + return ret; +} + +static void lcd_hardware_reset_locked(void) +{ + lcd_cs(1); + lcd_dc(1); + + lcd_reset(1); + lcd_delay_ms(10); + + lcd_reset(0); + lcd_delay_ms(20); + + lcd_reset(1); + lcd_delay_ms(120); +} + +static int lcd_controller_init_locked(void) +{ + int ret; + u32 i; + + lcd_hardware_reset_locked(); + + ret = lcd_send_command_locked(LCD_CMD_SLPOUT, NULL, 0); + if (ret != 0) { + return ret; + } + + lcd_delay_ms(120); + + for (i = 0; + i < sizeof(lcd_init_seq) / sizeof(lcd_init_seq[0]); + i++) { + ret = lcd_send_command_locked( + lcd_init_seq[i].cmd, + lcd_init_seq[i].data, + lcd_init_seq[i].len); + + if (ret != 0) { + return ret; + } + } + + ret = lcd_send_command_locked(LCD_CMD_DISPON, NULL, 0); + if (ret != 0) { + return ret; + } + + lcd_delay_ms(20); + return 0; +} + +/* + * 调用本函数前 CS 必须已经拉低。 + */ +static int lcd_set_window_raw_locked(u16 x1, u16 y1, u16 x2, u16 y2) +{ + int ret; + u8 data[4]; + + data[0] = x1 >> 8; + data[1] = x1 & 0xff; + data[2] = x2 >> 8; + data[3] = x2 & 0xff; + + ret = lcd_write_cmd_raw_locked(LCD_CMD_CASET); + if (ret != 0) { + return ret; + } + + ret = lcd_write_data_raw_locked(data, sizeof(data)); + if (ret != 0) { + return ret; + } + + data[0] = y1 >> 8; + data[1] = y1 & 0xff; + data[2] = y2 >> 8; + data[3] = y2 & 0xff; + + ret = lcd_write_cmd_raw_locked(LCD_CMD_RASET); + if (ret != 0) { + return ret; + } + + ret = lcd_write_data_raw_locked(data, sizeof(data)); + if (ret != 0) { + return ret; + } + + return lcd_write_cmd_raw_locked(LCD_CMD_RAMWR); +} + +static int lcd_fill_rgb_locked(u8 red, u8 green, u8 blue) +{ + int ret; + u32 x; + u32 y; + + if (!lcd_spi_hdl) { + return -ENODEV; + } + + /* + * COLMOD=0x06 时为 RGB666。 + * 每个颜色分量只有高 6 bit 有效。 + */ + red &= 0xfc; + green &= 0xfc; + blue &= 0xfc; + + for (x = 0; x < LCD_WIDTH; x++) { + lcd_line_buf[x * 3 + 0] = red; + lcd_line_buf[x * 3 + 1] = green; + lcd_line_buf[x * 3 + 2] = blue; + } + + /* + * 窗口设置和所有像素属于同一个 SPI 事务。 + * 任意错误发生时,也必须恢复 CS 高电平。 + */ + lcd_cs(0); + + ret = lcd_set_window_raw_locked( + 0, + 0, + LCD_WIDTH - 1, + LCD_HEIGHT - 1); + + if (ret == 0) { + lcd_dc(1); + + for (y = 0; y < LCD_HEIGHT; y++) { + ret = lcd_spi_write_locked( + lcd_line_buf, + sizeof(lcd_line_buf)); + + if (ret != 0) { + break; + } + } + } + + lcd_cs(1); + return ret; +} + +int st7789v2_open(void) +{ + int ret; + + ret = lcd_lock(); + if (ret != 0) { + return ret; + } + + if (lcd_spi_hdl) { + lcd_unlock(); + return 0; + } + + lcd_backlight_off(); + lcd_cs(1); + lcd_dc(1); + lcd_reset(1); + + lcd_spi_hdl = dev_open(LCD_SPI_NAME, NULL); + if (!lcd_spi_hdl) { + APP_LOG("st7789v2: dev_open(%s) failed\n", + LCD_SPI_NAME); + + lcd_unlock(); + return -ENODEV; + } + + ret = lcd_controller_init_locked(); + if (ret != 0) { + goto open_failed; + } + + /* + * 背光打开前先清成黑色,避免显示未初始化显存。 + * 1 MHz 下该操作约需要 1.84 秒。 + */ + ret = lcd_fill_rgb_locked(0, 0, 0); + if (ret != 0) { + goto open_failed; + } + + lcd_backlight_on(); + lcd_unlock(); + + APP_LOG("st7789v2: open success\n"); + return 0; + +open_failed: + lcd_backlight_off(); + lcd_cs(1); + + dev_close(lcd_spi_hdl); + lcd_spi_hdl = NULL; + + lcd_unlock(); + + APP_LOG("st7789v2: initialization failed, ret=%d\n", + ret); + + return ret; +} + +int st7789v2_close(void) +{ + int ret; + int tmp; + + ret = lcd_lock(); + if (ret != 0) { + return ret; + } + + lcd_backlight_off(); + + if (!lcd_spi_hdl) { + lcd_cs(1); + lcd_unlock(); + return 0; + } + + ret = lcd_send_command_locked(LCD_CMD_DISPOFF, NULL, 0); + lcd_delay_ms(20); + + tmp = lcd_send_command_locked(LCD_CMD_SLPIN, NULL, 0); + if (ret == 0 && tmp != 0) { + ret = tmp; + } + + /* + * 使用与 SDK 官方 SleepIn 类似的保守等待时间。 + */ + lcd_delay_ms(120); + lcd_cs(1); + + tmp = dev_close(lcd_spi_hdl); + lcd_spi_hdl = NULL; + + if (ret == 0 && tmp != 0) { + ret = tmp; + } + + lcd_unlock(); + return ret; +} + +int st7789v2_fill_rgb(u8 red, u8 green, u8 blue) +{ + int ret; + + ret = lcd_lock(); + if (ret != 0) { + return ret; + } + + ret = lcd_fill_rgb_locked(red, green, blue); + + lcd_unlock(); + + if (ret != 0) { + APP_LOG("st7789v2: fill failed, ret=%d\n", + ret); + } + + return ret; +} diff --git a/display/st7789v2.h b/display/st7789v2.h new file mode 100644 index 0000000..e7f79c9 --- /dev/null +++ b/display/st7789v2.h @@ -0,0 +1,10 @@ +#ifndef ST7789V2_H +#define ST7789V2_H + +#include "system/includes.h" + +int st7789v2_open(void); +int st7789v2_close(void); +int st7789v2_fill_rgb(u8 red, u8 green, u8 blue); + +#endif \ No newline at end of file diff --git a/display/st7789v2_test.c b/display/st7789v2_test.c new file mode 100644 index 0000000..0796950 --- /dev/null +++ b/display/st7789v2_test.c @@ -0,0 +1,73 @@ +#include "st7789v2.h" +#include "app_log.h" +#include "system/includes.h" + + +static u8 lcd_test_task_created; + +static void lcd_test_color(const char *name, u8 r, u8 g, u8 b) +{ + int ret; + + ret = st7789v2_fill_rgb(r, g, b); + if (ret != 0) { + APP_LOG("lcd test: fill %s failed, ret=%d\n", + name, ret); + } else { + APP_LOG("lcd test: %s\n", + name); + } + + os_time_dly(100); +} + +static void st7789v2_test_task(void *priv) +{ + int ret; + + while (1) { + ret = st7789v2_open(); + if (ret == 0) { + break; + } + + APP_LOG("lcd test: open failed, ret=%d; retrying\n", + ret); + + os_time_dly(100); + } + + while (1) { + lcd_test_color("red", 255, 0, 0); + lcd_test_color("green", 0, 255, 0); + lcd_test_color("blue", 0, 0, 255); + lcd_test_color("white", 255, 255, 255); + lcd_test_color("black", 0, 0, 0); + } +} + +int st7789v2_test_init(void) +{ + int ret; + + if (lcd_test_task_created) { + return 0; + } + + ret = os_task_create( + st7789v2_test_task, + NULL, + 20, + 1000, + 0, + "st7789v2_test"); + + if (ret == 0) { + lcd_test_task_created = 1; + } else { + APP_LOG("lcd test: task create failed, ret=%d\n", + ret); + } + + return ret; +} diff --git a/display/st7789v2_test.h b/display/st7789v2_test.h new file mode 100644 index 0000000..f2e9494 --- /dev/null +++ b/display/st7789v2_test.h @@ -0,0 +1,6 @@ +#ifndef ST7789V2_TEST_H +#define ST7789V2_TEST_H + +int st7789v2_test_init(void); + +#endif \ No newline at end of file diff --git a/led/led.c b/led/led.c new file mode 100644 index 0000000..3b7d165 --- /dev/null +++ b/led/led.c @@ -0,0 +1,21 @@ +#include "led.h" +#include "asm/pwm.h" + +//static void *warm_pwm_handle; +//static void *cool_pwm_handle; + +int led_status = 1; + +void pwm_init(void) +{ +// gpio_direction_output(IO_PORTC_01, 1); +// gpio_direction_output(IO_PORTC_02, 1); + dev_open("lamp_warm_pwm", NULL); +// dev_open("lamp_cool_pwm", NULL); +} +void led_init(void) +{ + gpio_direction_output(LED_PIN, led_status); + led_status =!led_status; + //gpio_direction_output(IO_PORTC_02, led_status); +} diff --git a/led/led.h b/led/led.h new file mode 100644 index 0000000..eb8be3a --- /dev/null +++ b/led/led.h @@ -0,0 +1,16 @@ +#ifndef LED_H +#define LED_H + +#include "device/gpio.h" +//上电指示灯 +extern int led_status; +#define LED_PIN IO_PORTH_06 + +// +#define LAMP_WARM_GPIO IO_PORTC_01 +#define LAMP_COOL_GPIO IO_PORTC_02 + +void led_init(void); +void pwm_init(void); + +#endif \ No newline at end of file diff --git a/mqtt/mqtt_config.c b/mqtt/mqtt_config.c new file mode 100644 index 0000000..175d50b --- /dev/null +++ b/mqtt/mqtt_config.c @@ -0,0 +1,162 @@ +#include "mqtt_config.h" + +#include "wifi/wifi_connect.h" +#include "mbedtls/md.h" + +#include +#include + + +static mqtt_config_t mqtt_config; + + +/* + * 生成紧凑MAC == 用户名 + * + * AA:BB:CC:DD:EE:FF -> AABBCCDDEEFF(大写) + */ +static int make_compact_mac(char *buf, uint32_t len) +{ + uint8_t mac[6]; + int i; + + if (!buf || len < 13) + { + return -1; + } + + if (wifi_get_mac(mac)) + { + return -1; + } + + for (i = 0; i < 6; i++) + { + sprintf(buf + i * 2, "%02X", mac[i]); + } + + return 0; +} + + +/* + * 生成密码 + * + * password = MD5(PRODUCT_SECRET + client_id) 小写hex + */ +static int make_password(const char *client_id, char *buf, uint32_t len) +{ + char raw[128]; + unsigned char digest[16]; + const mbedtls_md_info_t *md_info; + int i; + + if (!client_id || !buf || len < 33) + { + return -1; + } + + snprintf(raw, sizeof(raw), "%s%s", MQTT_PRODUCT_SECRET, client_id); + + md_info = mbedtls_md_info_from_type(MBEDTLS_MD_MD5); + if (!md_info || + mbedtls_md(md_info, (const unsigned char *)raw, strlen(raw), digest)) + { + return -1; + } + + for (i = 0; i < 16; i++) + { + sprintf(buf + i * 2, "%02x", digest[i]); + } + buf[32] = '\0'; + + return 0; +} + + +void mqtt_config_init(void) +{ + char device_name[13]; + + memset( + &mqtt_config, + 0, + sizeof(mqtt_config) + ); + + + /* + * MQTT服务器 + */ + strcpy( + mqtt_config.host, + MQTT_SERVER_HOST + ); + + mqtt_config.port = MQTT_SERVER_PORT; + + + mqtt_config.keepalive = 60;//秒 + + + /* + * 设备身份 + * username = 紧凑MAC + * client_id = PRODUCT_KEY_MAC_MODEL + * password = MD5(PRODUCT_SECRET + client_id) + * + */ + if (make_compact_mac(device_name, sizeof(device_name))) { + strcpy(device_name, "unknown"); + } + + strcpy( + mqtt_config.username, + device_name + ); + + snprintf( + mqtt_config.client_id, + sizeof(mqtt_config.client_id), + "%s_%s_%s", + MQTT_PRODUCT_ID, + device_name, + MQTT_DEVICE_MODEL + ); + + make_password( + mqtt_config.client_id, + mqtt_config.password, + sizeof(mqtt_config.password) + ); + + + /* + * topic + */ + snprintf( + mqtt_config.subscribe_topic, + sizeof(mqtt_config.subscribe_topic), + "/sys/%s/%s/c/#", + MQTT_PRODUCT_ID, + device_name + ); + + snprintf( + mqtt_config.publish_topic, + sizeof(mqtt_config.publish_topic), + "/sys/%s/%s/s/event/property/post", + MQTT_PRODUCT_ID, + device_name + ); + + +} + +mqtt_config_t *mqtt_config_get(void) +{ + + return &mqtt_config; + +} diff --git a/mqtt/mqtt_config.h b/mqtt/mqtt_config.h new file mode 100644 index 0000000..c5f7dd9 --- /dev/null +++ b/mqtt/mqtt_config.h @@ -0,0 +1,57 @@ +#ifndef MQTT_CONFIG_H +#define MQTT_CONFIG_H + + +#include + + +/* + * MQTT固定配置 + */ +#define MQTT_PRODUCT_ID "cHXbMScFyRs6rmX8" //产品标识 +#define MQTT_PRODUCT_SECRET "7e0b7bd5f1fd4f218c8094267818b83c" //产品密钥 +#define MQTT_DEVICE_MODEL "ai_voice_radar_1.0" //设备型号 +#define MQTT_SERVER_HOST "mqtt.lmhrt.cn" +#define MQTT_SERVER_PORT 11883 + + +#define MQTT_SERVER_HOST_MAX_LEN 64 + +#define MQTT_CLIENT_ID_MAX_LEN 64 + +#define MQTT_USERNAME_MAX_LEN 64 + +#define MQTT_PASSWORD_MAX_LEN 64 + +#define MQTT_TOPIC_MAX_LEN 96 + + + +/* + * MQTT运行配置结构 + */ +typedef struct +{ + char host[MQTT_SERVER_HOST_MAX_LEN]; + uint16_t port; + char client_id[MQTT_CLIENT_ID_MAX_LEN]; + char username[MQTT_USERNAME_MAX_LEN]; + char password[MQTT_PASSWORD_MAX_LEN]; + + uint16_t keepalive; //心跳时间;掉线 + char subscribe_topic[MQTT_TOPIC_MAX_LEN];//订阅主题 + char publish_topic[MQTT_TOPIC_MAX_LEN]; //发布主题 + +}mqtt_config_t; + +/* + * 获取MQTT配置 + */ +mqtt_config_t *mqtt_config_get(void); + +/* + * 初始化MQTT配置 + */ +void mqtt_config_init(void); + +#endif \ No newline at end of file diff --git a/mqtt/mqtt_manager.c b/mqtt/mqtt_manager.c new file mode 100644 index 0000000..2e0fa0d --- /dev/null +++ b/mqtt/mqtt_manager.c @@ -0,0 +1,369 @@ +#include "mqtt_manager.h" + +#include "mqtt_config.h" +#include "mqtt_protocol.h" +#include "wifi_manager.h" +#include "app_log.h" + +#include "mqtt/MQTTClient.h" +#include "os/os_api.h" +#include +#include + + + +/* + * MQTT对象 + * + * 按AC79官方demo改成静态生命周期 + */ +static Client mqtt_client; + +static Network mqtt_network; + + + +/* + * MQTT状态 + */ +static mqtt_state_t mqtt_state = MQTT_STATE_INIT; + +static u32 mqtt_reconnect_delay = 0; + + + +/* + * MQTT消息回调 + */ +static mqtt_message_callback_t message_callback = NULL; + + + +/* + * MQTT缓存 + * + * AC79 Paho需要 + */ +static unsigned char mqtt_send_buffer[2048]; + +static unsigned char mqtt_read_buffer[2048]; + + + +/* + * 收到MQTT消息 + * + * 对应ESP32: + * + * mqtt event callback + */ +static void message_arrived +( + MessageData *data +) +{ + + /* + * 先交给协议层 + * + * 已识别的小智消息由协议层处理 + */ + if( + mqtt_protocol_handle_message( + data->topicName->lenstring.data, + (uint8_t *)data->message->payload, + data->message->payloadlen + ) == 0 + ) + { + return; + } + + + if(message_callback == NULL) + { + return; + } + APP_LOG("mqtt message arrived\n"); + + APP_LOG( + "topic:%s\n", + data->topicName->lenstring.data + ); + + + APP_LOG( + "payload:%.*s\n", + data->message->payloadlen, + data->message->payload + ); + + + mqtt_message_callback_t cb = + message_callback; + + + + cb( + data->topicName->lenstring.data, + (uint8_t *)data->message->payload, + data->message->payloadlen + ); + +} + + + + +/* + * MQTT连接 + */ +static int mqtt_connect_server(void) +{ + mqtt_config_t *cfg = mqtt_config_get(); + + MQTTPacket_connectData connect_data = MQTTPacket_connectData_initializer; + + /* + * 创建Network + */ + NewNetwork(&mqtt_network); + + SetNetworkRecvTimeout( + &mqtt_network, + 1000 + ); + + + /* + * TCP连接 + */ + if(ConnectNetwork(&mqtt_network,cfg->host,cfg->port)) + { + APP_LOG("mqtt tcp connect fail\n"); + mqtt_state = + MQTT_STATE_ERROR; + + return -1; + } + APP_LOG("mqtt tcp connect ok\n"); + + + /* + * 创建MQTT Client + */ + MQTTClient( + &mqtt_client, // 客户端对象-->我的设备 + &mqtt_network, // 已经建立的 TCP 网络 + 1000, // 命令超时 ms + mqtt_send_buffer, // 发送缓冲区 + sizeof(mqtt_send_buffer), + mqtt_read_buffer, // 接收缓冲区 + sizeof(mqtt_read_buffer) + ); + + /* + * MQTT身份 + * + * 暂时使用config中的固定值 + */ + connect_data.clientID.cstring = cfg->client_id; + + if (cfg->username[0]) + { + connect_data.username.cstring = + cfg->username; + } + + if (cfg->password[0]) + { + connect_data.password.cstring = + cfg->password; + } + + connect_data.keepAliveInterval = + cfg->keepalive; + + /* + * 建立MQTT连接 + */ + int rc = MQTTConnect( &mqtt_client, &connect_data); + APP_LOG("MQTTConnect rc=%d\n", rc); + if(rc) + { + APP_LOG("mqtt connect failed\n"); + mqtt_network.disconnect( + &mqtt_network + ); + mqtt_state = MQTT_STATE_ERROR; + return -1; + } + APP_LOG("mqtt connect ok\n"); + mqtt_state = MQTT_STATE_CONNECTED; + return 0; + +} + + +/* + * MQTT任务 + */ +static void mqtt_task(void *arg) +{ + while(1) + { + if( + !wifi_manager_is_network_ready() + ) + { + os_time_dly(200); + continue; + } + + + if( + mqtt_state != MQTT_STATE_CONNECTED + ) + { + mqtt_state = MQTT_STATE_CONNECTING; + if(mqtt_connect_server()) + { + if (mqtt_reconnect_delay < 16000) + { + mqtt_reconnect_delay = + mqtt_reconnect_delay ? + mqtt_reconnect_delay * 2 : 500; + } + os_time_dly(mqtt_reconnect_delay); + continue; + } + + mqtt_reconnect_delay = 0; + + + + /* + * 连接成功后订阅 + */ + if(MQTTSubscribe + ( + &mqtt_client, + mqtt_config_get()->subscribe_topic, + QOS0, + message_arrived + ) + ) + { + + APP_LOG("mqtt subscribe failed\n"); + + MQTTDisconnect( + &mqtt_client + ); + mqtt_network.disconnect( + &mqtt_network + ); + mqtt_state = + MQTT_STATE_ERROR; + + continue; + + } + + APP_LOG("mqtt subscribe ok\n"); + + char online_payload[256]; + + snprintf( + online_payload, + sizeof(online_payload), + "{\"id\":1,\"method\":\"thing.event.property.post\"," + "\"params\":{\"deviceId\":\"%s\",\"reportType\":\"heartbeat\"," + "\"personDetected\":0,\"heartbeat\":1}}", + mqtt_config_get()->username + ); + + int pub_ret = mqtt_manager_publish( + mqtt_config_get()->publish_topic, + (const uint8_t *)online_payload, + (uint32_t)strlen(online_payload) + ); + + APP_LOG("mqtt online publish ret=%d\n", pub_ret); + } + + /* + * 保持MQTT通信 + * + * 收消息依靠yield + */ + MQTTYield + ( + &mqtt_client, + 1000 + ); + os_time_dly(10); + + } + +} + + + +int mqtt_manager_init(void) +{ + mqtt_config_init(); + mqtt_state = MQTT_STATE_INIT; + return 0; +} + + +int mqtt_manager_start(void) +{ + + return thread_fork( + "mqtt_task", + 10, + 2048, + 0, + NULL, + mqtt_task, + NULL + ); +} + + +int mqtt_manager_publish(const char *topic,const uint8_t *data,uint32_t len) +{ + MQTTMessage message; + memset( + &message, + 0, + sizeof(message) + ); + message.qos = QOS0; + message.payload = (void *)data; + message.payloadlen = len; + + return MQTTPublish + ( + &mqtt_client, + + topic, + + &message + ); + +} + + +void mqtt_manager_set_callback(mqtt_message_callback_t callback) +{ + message_callback = callback; +} + + +mqtt_state_t mqtt_manager_get_state(void) +{ + return mqtt_state; +} \ No newline at end of file diff --git a/mqtt/mqtt_manager.h b/mqtt/mqtt_manager.h new file mode 100644 index 0000000..053c576 --- /dev/null +++ b/mqtt/mqtt_manager.h @@ -0,0 +1,88 @@ +#ifndef MQTT_MANAGER_H +#define MQTT_MANAGER_H + + +#include + + + +/* + * MQTT状态 + */ +typedef enum +{ + MQTT_STATE_INIT = 0, + MQTT_STATE_CONNECTING, + MQTT_STATE_CONNECTED, + MQTT_STATE_DISCONNECTED, + MQTT_STATE_ERROR + +} mqtt_state_t; + + + +/* + * MQTT消息接收回调 + * + * topic: + * 主题 + * + * payload: + * 数据 + * + * len: + * 长度 + */ +typedef void (*mqtt_message_callback_t)//函数指针==指针==保存函数地址的指针 +( + const char *topic, + const uint8_t *payload, + uint32_t len +); + + + +/* + * MQTT初始化 + */ +int mqtt_manager_init(void); + + + +/* + * 启动MQTT任务 + */ +int mqtt_manager_start(void); + + + +/* + * 发布数据 + */ +int mqtt_manager_publish +( + const char *topic, + const uint8_t *data, + uint32_t len +); + + + +/* + * 设置接收回调 + */ +void mqtt_manager_set_callback +( + mqtt_message_callback_t callback +); + + + +/* + * 获取MQTT状态 + */ +mqtt_state_t mqtt_manager_get_state(void); + + + +#endif \ No newline at end of file diff --git a/mqtt/mqtt_protocol.c b/mqtt/mqtt_protocol.c new file mode 100644 index 0000000..109438b --- /dev/null +++ b/mqtt/mqtt_protocol.c @@ -0,0 +1,389 @@ +#include "mqtt_protocol.h" + +#include "mqtt_config.h" +#include "mqtt_manager.h" +#include "app_log.h" +#include "system/includes.h" + +#include "json_c/json.h" + +#include +#include +#include + + +/* + * 当前会话ID + */ +static char protocol_session_id[64]; + + +/* + * 协议消息回调 + */ +static mqtt_protocol_callback_t protocol_callback = NULL; + + +/* + * 解析type字段 + */ +static enum mqtt_protocol_message_type parse_type(const char *value) +{ + + if (!value) + { + return MQTT_PROTOCOL_MSG_UNKNOWN; + } + + if (!strcmp(value, "hello")) + { + return MQTT_PROTOCOL_MSG_HELLO; + } + + if (!strcmp(value, "tts")) + { + return MQTT_PROTOCOL_MSG_TTS; + } + + if (!strcmp(value, "stt")) + { + return MQTT_PROTOCOL_MSG_STT; + } + + if (!strcmp(value, "llm")) + { + return MQTT_PROTOCOL_MSG_LLM; + } + + if (!strcmp(value, "listen")) + { + return MQTT_PROTOCOL_MSG_LISTEN; + } + + if (!strcmp(value, "goodbye")) + { + return MQTT_PROTOCOL_MSG_GOODBYE; + } + + return MQTT_PROTOCOL_MSG_UNKNOWN; + +} + + +/* + * 解析state字段 + */ +static enum mqtt_protocol_message_state parse_state(const char *value) +{ + + if (!value) + { + return MQTT_PROTOCOL_STATE_NONE; + } + + if (!strcmp(value, "start")) + { + return MQTT_PROTOCOL_STATE_START; + } + + if (!strcmp(value, "sentence_start")) + { + return MQTT_PROTOCOL_STATE_SENTENCE_START; + } + + if (!strcmp(value, "stop")) + { + return MQTT_PROTOCOL_STATE_STOP; + } + + if (!strcmp(value, "detect")) + { + return MQTT_PROTOCOL_STATE_DETECT; + } + + return MQTT_PROTOCOL_STATE_NONE; + +} + + +/* + * 解析收到的MQTT消息 + */ +static int protocol_parse +( + const char *payload, + uint32_t len, + struct mqtt_protocol_message *message +) +{ + + json_object *root; + json_object *item; + char *json_buf; + const char *value; + + if (!payload || !len || !message) + { + return -1; + } + + memset(message, 0, sizeof(*message)); + + json_buf = zalloc(len + 1); + if (!json_buf) + { + return -1; + } + memcpy(json_buf, payload, len); + + root = json_tokener_parse(json_buf); + free(json_buf); + + if (!root) + { + return -1; + } + + if (json_object_object_get_ex(root, "type", &item)) + { + message->type = parse_type(json_object_get_string(item)); + } + + if (json_object_object_get_ex(root, "state", &item)) + { + message->state = parse_state(json_object_get_string(item)); + } + + if (json_object_object_get_ex(root, "code", &item)) + { + message->has_code = 1; + message->code = json_object_get_int(item); + } + + if (json_object_object_get_ex(root, "version", &item)) + { + message->has_version = 1; + message->version = json_object_get_int(item); + } + + if (json_object_object_get_ex(root, "transport", &item)) + { + value = json_object_get_string(item); + if (value) + { + snprintf(message->transport, sizeof(message->transport), "%s", value); + } + } + + if (json_object_object_get_ex(root, "session_id", &item)) + { + value = json_object_get_string(item); + if (value) + { + snprintf(message->session_id, sizeof(message->session_id), "%s", value); + } + } + + if (json_object_object_get_ex(root, "text", &item)) + { + value = json_object_get_string(item); + if (value) + { + snprintf(message->text, sizeof(message->text), "%s", value); + } + } + + json_object_put(root); + + return message->type == MQTT_PROTOCOL_MSG_UNKNOWN ? -1 : 0; + +} + + +/* + * 发送JSON文本到发布topic + */ +static int protocol_send_text(const char *text) +{ + + if (!text) + { + return -1; + } + + return mqtt_manager_publish( + mqtt_config_get()->publish_topic, + (const uint8_t *)text, + strlen(text) + ); + +} + + +/* + * 带session_id拼接JSON + */ +static int protocol_send_jsonf(const char *fmt, ...) +{ + + char buf[256]; + va_list ap; + int len; + + if (!fmt) + { + return -1; + } + + va_start(ap, fmt); + len = vsnprintf(buf, sizeof(buf), fmt, ap); + va_end(ap); + + if (len <= 0 || len >= sizeof(buf)) + { + return -1; + } + + return protocol_send_text(buf); + +} + + +int mqtt_protocol_handle_message +( + const char *topic, + const uint8_t *payload, + uint32_t len +) +{ + + struct mqtt_protocol_message message; + + if (protocol_parse((const char *)payload, len, &message)) + { + return -1; + } + + if (message.session_id[0]) + { + strcpy(protocol_session_id, message.session_id); + } + + if (message.type == MQTT_PROTOCOL_MSG_HELLO) + { + APP_LOG( + "[MQTT_P] hello: code=%d session=%s\n", + message.has_code ? message.code : -1, + protocol_session_id + ); + } + else if (message.type == MQTT_PROTOCOL_MSG_GOODBYE) + { + APP_LOG( + "[MQTT_P] goodbye: session=%s\n", + message.session_id[0] ? message.session_id : "-" + ); + protocol_session_id[0] = '\0'; + } + + if (protocol_callback) + { + protocol_callback(&message); + } + + return 0; + +} + + +int mqtt_protocol_send_hello(void) +{ + + return protocol_send_jsonf( + "{\"type\":\"hello\",\"version\":3,\"transport\":\"udp\"," + "\"features\":{\"mcp\":true}," + "\"audio_params\":{\"format\":\"opus\",\"sample_rate\":16000," + "\"channels\":1,\"frame_duration\":60}}" + ); + +} + + +int mqtt_protocol_send_listen_start(void) +{ + + if (protocol_session_id[0]) + { + return protocol_send_jsonf( + "{\"type\":\"listen\",\"state\":\"start\",\"session_id\":\"%s\"}", + protocol_session_id + ); + } + + return protocol_send_jsonf("{\"type\":\"listen\",\"state\":\"start\"}"); + +} + + +int mqtt_protocol_send_listen_stop(void) +{ + + if (protocol_session_id[0]) + { + return protocol_send_jsonf( + "{\"type\":\"listen\",\"state\":\"stop\",\"session_id\":\"%s\"}", + protocol_session_id + ); + } + + return protocol_send_jsonf("{\"type\":\"listen\",\"state\":\"stop\"}"); + +} + + +int mqtt_protocol_send_abort(void) +{ + + if (protocol_session_id[0]) + { + return protocol_send_jsonf( + "{\"type\":\"abort\",\"session_id\":\"%s\"}", + protocol_session_id + ); + } + + return protocol_send_jsonf("{\"type\":\"abort\"}"); + +} + + +int mqtt_protocol_send_goodbye(void) +{ + + if (protocol_session_id[0]) + { + return protocol_send_jsonf( + "{\"type\":\"goodbye\",\"session_id\":\"%s\"}", + protocol_session_id + ); + } + + return -1; + +} + + +const char *mqtt_protocol_session_id(void) +{ + + return protocol_session_id; + +} + + +void mqtt_protocol_set_callback(mqtt_protocol_callback_t callback) +{ + + protocol_callback = callback; + +} diff --git a/mqtt/mqtt_protocol.h b/mqtt/mqtt_protocol.h new file mode 100644 index 0000000..c339d24 --- /dev/null +++ b/mqtt/mqtt_protocol.h @@ -0,0 +1,138 @@ +#ifndef MQTT_PROTOCOL_H +#define MQTT_PROTOCOL_H + + +#include +#include + + +/* + * 小智MQTT消息类型 + */ +enum mqtt_protocol_message_type +{ + + MQTT_PROTOCOL_MSG_UNKNOWN = 0, + + MQTT_PROTOCOL_MSG_HELLO, + + MQTT_PROTOCOL_MSG_TTS, + + MQTT_PROTOCOL_MSG_STT, + + MQTT_PROTOCOL_MSG_LLM, + + MQTT_PROTOCOL_MSG_LISTEN, + + MQTT_PROTOCOL_MSG_GOODBYE + +}; + + +/* + * 小智MQTT消息状态 + */ +enum mqtt_protocol_message_state +{ + + MQTT_PROTOCOL_STATE_NONE = 0, + + MQTT_PROTOCOL_STATE_START, + + MQTT_PROTOCOL_STATE_SENTENCE_START, + + MQTT_PROTOCOL_STATE_STOP, + + MQTT_PROTOCOL_STATE_DETECT + +}; + + +/* + * 小智MQTT消息 + */ +struct mqtt_protocol_message +{ + + enum mqtt_protocol_message_type type; + + enum mqtt_protocol_message_state state; + + int has_code; + + int code; + + int has_version; + + int version; + + char transport[16]; + + char session_id[64]; + + char text[160]; + +}; + + +/* + * 消息回调 + * + * 返回0表示协议层已处理, 返回-1表示无法识别 + */ +int mqtt_protocol_handle_message +( + const char *topic, + const uint8_t *payload, + uint32_t len +); + + +/* + * 发送hello, 申请会话 + */ +int mqtt_protocol_send_hello(void); + + +/* + * 发送监听开始 + */ +int mqtt_protocol_send_listen_start(void); + + +/* + * 发送监听停止 + */ +int mqtt_protocol_send_listen_stop(void); + + +/* + * 发送中止 + */ +int mqtt_protocol_send_abort(void); + + +/* + * 发送bye + */ +int mqtt_protocol_send_goodbye(void); + + +/* + * 获取当前会话ID + */ +const char *mqtt_protocol_session_id(void); + + +/* + * 设置协议消息回调 + */ +typedef void (*mqtt_protocol_callback_t) +( + const struct mqtt_protocol_message *message +); + +void mqtt_protocol_set_callback(mqtt_protocol_callback_t callback); + + +#endif diff --git a/radar/r60abd1.c b/radar/r60abd1.c new file mode 100644 index 0000000..2bc2b31 --- /dev/null +++ b/radar/r60abd1.c @@ -0,0 +1,726 @@ +#include "system/includes.h" +#include "system/timer.h" +#include "app_log.h" +#include "r60abd1.h" +#include "radar_uart.h" +#include + + +/* + * R60ABD1协议格式: + * + * [0] 0x53 + * [1] 0x59 + * [2] CTRL + * [3] CMD + * [4] DATA_LEN_H + * [5] DATA_LEN_L + * [6..] DATA + * [-3] CHECKSUM + * [-2] 0x54 + * [-1] 0x43 + * + * full_len = 9 + data_len + */ + +#define R60_FRAME_HEADER1 0x53 +#define R60_FRAME_HEADER2 0x59 +#define R60_FRAME_TAIL1 0x54 +#define R60_FRAME_TAIL2 0x43 + +#define R60_CTRL_PRESENCE 0x80 +#define R60_CTRL_BREATH 0x81 +#define R60_CTRL_SLEEP 0x84 +#define R60_CTRL_HEART 0x85 + +#define R60_PARSE_BUF_SIZE 128 + + +#ifndef R60ABD1_DEBUG_LOG +#define R60ABD1_DEBUG_LOG 1 +#endif + + +#if R60ABD1_DEBUG_LOG +#define R60_LOG(...) APP_LOG(__VA_ARGS__) +#else +#define R60_LOG(...) +#endif + + +static u8 r60_parse_buf[R60_PARSE_BUF_SIZE]; +static u16 r60_parse_len; + +static u32 r60_rx_bytes; +static u32 r60_valid_frame_count; +static u32 r60_data_update_count; +static u32 r60_checksum_error_count; + +static struct radar_r60abd1_data radar_data; + +static OS_MUTEX radar_data_mutex; +static u8 radar_data_mutex_ready; + + +/* + * R60坐标格式: + * + * bit15 = 符号位 + * bit14..0 = 数值绝对值 + */ +static s16 r60_parse_signed_coordinate(u16 raw_value) +{ + s16 value = (s16)(raw_value & 0x7fff); + + if (raw_value & 0x8000) { + value = -value; + } + + return value; +} + + +/* + * 协议层初始化。 + * + * 必须在: + * radar_r60abd1_input_bytes() + * radar_r60abd1_get_data() + * + * 之前调用。 + */ +int radar_r60abd1_init(void) +{ + memset(r60_parse_buf, 0, sizeof(r60_parse_buf)); + memset(&radar_data, 0, sizeof(radar_data)); + + r60_parse_len = 0; + r60_rx_bytes = 0; + r60_valid_frame_count = 0; + r60_data_update_count = 0; + r60_checksum_error_count = 0; + + if (!radar_data_mutex_ready) { + os_mutex_create(&radar_data_mutex); + radar_data_mutex_ready = 1; + } + + R60_LOG("[R60] init success\n"); + + return 0; +} + + +/* + * 完整帧合法性校验。 + */ +static int r60_validate_frame(const u8 *frame, u16 frame_len) +{ + u8 checksum = 0; + u16 data_len; + u16 i; + + if (!frame || frame_len < 9) { + return -1; + } + + if (frame[0] != R60_FRAME_HEADER1 || + frame[1] != R60_FRAME_HEADER2) { + return -2; + } + + data_len = + ((u16)frame[4] << 8) | + frame[5]; + + if ((u16)(9 + data_len) != frame_len) { + return -3; + } + + if (frame[frame_len - 2] != R60_FRAME_TAIL1 || + frame[frame_len - 1] != R60_FRAME_TAIL2) { + return -4; + } + + /* + * checksum: + * + * frame[0] 到 DATA最后一个字节之和。 + * 不包含checksum本身和帧尾。 + */ + for (i = 0; i < frame_len - 3; i++) { + checksum += frame[i]; + } + + if (checksum != frame[frame_len - 3]) { + + if (radar_data_mutex_ready) { + + os_mutex_pend(&radar_data_mutex, 0); + + r60_checksum_error_count++; + radar_data.checksum_errors = + r60_checksum_error_count; + + os_mutex_post(&radar_data_mutex); + + } else { + + r60_checksum_error_count++; + } + + R60_LOG("[R60] checksum error: calc=%02X recv=%02X\n", + checksum, + frame[frame_len - 3]); + + return -5; + } + + return 0; +} + + +/* + * 业务解析。 + * + * 只负责: + * 1. CTRL/CMD解释 + * 2. 更新RAM中的最新状态 + * + * 不做: + * Flash + * 网络上传 + */ +static int r60_parse_frame(const u8 *frame, u16 frame_len) +{ + u8 ctrl; + u8 cmd; + u16 data_len; + int updated = 0; + + if (!frame || frame_len < 9) { + return 0; + } + + if (!radar_data_mutex_ready) { + return 0; + } + + ctrl = frame[2]; + cmd = frame[3]; + + data_len = + ((u16)frame[4] << 8) | + frame[5]; + + + os_mutex_pend(&radar_data_mutex, 0); + + + switch (ctrl) { + + /* + * 人体存在 / 运动 / 距离 / 坐标 + */ + case R60_CTRL_PRESENCE: + + switch (cmd) { + + case 0x01: + case 0x81: + + if (data_len >= 1) { + radar_data.presence = frame[6]; + updated = 1; + + R60_LOG("[R60][PARSE] presence=%u\n", + radar_data.presence); + } + + break; + + + case 0x02: + + if (data_len >= 1) { + radar_data.motion = frame[6]; + updated = 1; + + R60_LOG("[R60][PARSE] motion=%u\n", + radar_data.motion); + } + + break; + + + case 0x03: + + if (data_len >= 1) { + radar_data.body_movement = frame[6]; + updated = 1; + + R60_LOG("[R60][PARSE] body_movement=%u\n", + radar_data.body_movement); + } + + break; + + + case 0x04: + + if (data_len >= 2) { + + radar_data.distance_cm = + ((u16)frame[6] << 8) | + frame[7]; + updated = 1; + + R60_LOG("[R60][PARSE] distance=%u cm\n", + radar_data.distance_cm); + } + + break; + + + case 0x05: + + if (data_len >= 6) { + + radar_data.pos_x_mm = + r60_parse_signed_coordinate( + ((u16)frame[6] << 8) | + frame[7]); + + radar_data.pos_y_mm = + r60_parse_signed_coordinate( + ((u16)frame[8] << 8) | + frame[9]); + + radar_data.pos_z_mm = + r60_parse_signed_coordinate( + ((u16)frame[10] << 8) | + frame[11]); + updated = 1; + + R60_LOG("[R60][PARSE] pos=(%d,%d,%d) mm\n", + radar_data.pos_x_mm, + radar_data.pos_y_mm, + radar_data.pos_z_mm); + } + + break; + + + default: + break; + } + + break; + + + /* + * 呼吸 + */ + case R60_CTRL_BREATH: + + switch (cmd) { + + case 0x02: + case 0x82: + + if (data_len >= 1) { + + radar_data.breath_rate_x10 = + (u16)frame[6] * 10; + updated = 1; + + R60_LOG("[R60][PARSE] breath=%u /min\n", + radar_data.breath_rate_x10 / 10); + } + + break; + + + case 0x05: + + if (data_len >= 1) { + radar_data.breath_waveform = frame[6]; + updated = 1; + } + + break; + + + default: + break; + } + + break; + + + /* + * 心率 + */ + case R60_CTRL_HEART: + + switch (cmd) { + + case 0x02: + case 0x82: + + if (data_len >= 1) { + + radar_data.heart_rate_x10 = + (u16)frame[6] * 10; + updated = 1; + + R60_LOG("[R60][PARSE] heart=%u bpm\n", + radar_data.heart_rate_x10 / 10); + } + + break; + + + case 0x05: + + if (data_len >= 1) { + radar_data.heart_waveform = frame[6]; + updated = 1; + } + + break; + + + default: + break; + } + + break; + + + /* + * 睡眠 + */ + case R60_CTRL_SLEEP: + + switch (cmd) { + + case 0x0c: + case 0x8d: + + if (data_len >= 2) { + + radar_data.presence = frame[6]; + radar_data.sleep_state = frame[7]; + updated = 1; + + R60_LOG("[R60][PARSE] sleep presence=%u state=%u\n", + radar_data.presence, + radar_data.sleep_state); + } + + break; + + + default: + break; + } + + break; + + + /* + * 手册已确认、但当前公共状态结构尚未承载的合法帧,例如: + * + * ctrl=07 cmd=07 + * ctrl=81 cmd=01 + * + * 本阶段暂不映射,避免顺带扩展业务字段。 + */ + default: + break; + } + + + /* + * 通信统计和业务新鲜度严格分开: + * + * frame_count: + * 所有checksum正确的合法帧都会增加。 + * + * data_update_count / update_ms: + * 只有当前parser真正识别并更新业务字段时才推进。 + * + * 因此07/07、01/01等未知合法帧不会把旧数据“续鲜”。 + */ + radar_data.rx_bytes = r60_rx_bytes; + radar_data.frame_count = r60_valid_frame_count; + radar_data.checksum_errors = + r60_checksum_error_count; + + if (updated) { + r60_data_update_count++; + radar_data.data_update_count = + r60_data_update_count; + radar_data.update_ms = timer_get_ms(); + } else { + R60_LOG( + "[R60] ignored business frame ctrl=%02X cmd=%02X " + "frame=%u data=%u\n", + ctrl, + cmd, + r60_valid_frame_count, + r60_data_update_count + ); + } + + + os_mutex_post(&radar_data_mutex); + + return updated; +} + + +/* + * 收到一帧完整数据。 + */ +static void r60_frame_received(const u8 *frame, u16 frame_len) +{ + int ret; + u32 frame_count; + + ret = r60_validate_frame(frame, frame_len); + + if (ret != 0) { + + R60_LOG("[R60] invalid frame, ret=%d\n", + ret); + + return; + } + + + if (!radar_data_mutex_ready) { + return; + } + + + os_mutex_pend(&radar_data_mutex, 0); + + r60_valid_frame_count++; + + radar_data.frame_count = + r60_valid_frame_count; + + frame_count = + r60_valid_frame_count; + + os_mutex_post(&radar_data_mutex); + + + R60_LOG("[R60] valid frame=%u len=%u ctrl=%02X cmd=%02X\n", + frame_count, + frame_len, + frame[2], + frame[3]); + + + r60_parse_frame(frame, frame_len); +} + + +/* + * 逐字节组帧。 + */ +static void r60_feed_byte(u8 byte) +{ + u16 data_len; + u16 full_len; + + + /* + * 找0x53。 + */ + if (r60_parse_len == 0) { + + if (byte != R60_FRAME_HEADER1) { + return; + } + + r60_parse_buf[0] = byte; + r60_parse_len = 1; + + return; + } + + + /* + * 已收到0x53,找0x59。 + */ + if (r60_parse_len == 1) { + + if (byte == R60_FRAME_HEADER2) { + + r60_parse_buf[1] = byte; + r60_parse_len = 2; + + return; + } + + /* + * 53 53: + * 后一个53仍可能是新帧头。 + */ + if (byte == R60_FRAME_HEADER1) { + return; + } + + r60_parse_len = 0; + + return; + } + + + /* + * parser buffer保护。 + */ + if (r60_parse_len >= sizeof(r60_parse_buf)) { + + R60_LOG("[R60] frame buffer overflow\n"); + + r60_parse_len = 0; + + return; + } + + + r60_parse_buf[r60_parse_len++] = byte; + + + /* + * 前6字节收齐后才能读取DATA_LEN。 + */ + if (r60_parse_len < 6) { + return; + } + + + data_len = + ((u16)r60_parse_buf[4] << 8) | + r60_parse_buf[5]; + + + full_len = + (u16)(9 + data_len); + + + if (full_len > sizeof(r60_parse_buf)) { + + R60_LOG("[R60] invalid frame length: data=%u full=%u\n", + data_len, + full_len); + + r60_parse_len = 0; + + return; + } + + + if (r60_parse_len < full_len) { + return; + } + + + r60_frame_received( + r60_parse_buf, + full_len + ); + + + r60_parse_len = 0; +} + + +/* + * UART层收到数据后调用。 + */ +int radar_r60abd1_input_bytes(const u8 *data, u16 len) +{ + u16 i; + + if (!data || !len) { + return -1; + } + + if (!radar_data_mutex_ready) { + return -2; + } + + + /* + * 统计UART输入字节数。 + */ + os_mutex_pend(&radar_data_mutex, 0); + + r60_rx_bytes += len; + radar_data.rx_bytes = r60_rx_bytes; + + os_mutex_post(&radar_data_mutex); + + + /* + * 逐字节送入组帧器。 + */ + for (i = 0; i < len; i++) { + r60_feed_byte(data[i]); + } + + return 0; +} + + +/* + * 获取当前最新雷达状态快照。 + * + * 可供其他任务调用。 + */ +int radar_r60abd1_get_data(struct radar_r60abd1_data *out) +{ + if (!out) { + return -1; + } + + if (!radar_data_mutex_ready) { + return -2; + } + + + os_mutex_pend(&radar_data_mutex, 0); + + memcpy(out, + &radar_data, + sizeof(*out)); + + os_mutex_post(&radar_data_mutex); + + + return 0; +} + + +/* + * 向R60ABD1发送原始协议命令。 + * + * 协议层只负责把完整命令交给UART层发送。 + */ +int radar_r60abd1_send_command(const u8 *cmd, u16 len) +{ + if (!cmd || !len) { + return -1; + } + + return radar_uart_write( + cmd, + len + ); +} \ No newline at end of file diff --git a/radar/r60abd1.h b/radar/r60abd1.h new file mode 100644 index 0000000..3578efa --- /dev/null +++ b/radar/r60abd1.h @@ -0,0 +1,106 @@ +#ifndef R60ABD1_H +#define R60ABD1_H + +#include "typedef.h" + + +/* + * R60ABD1最新状态快照。 + * + * 该结构只表示“当前最新值”, + * 不负责历史数据存储。 + */ +struct radar_r60abd1_data { + + /* 人体存在/运动 */ + u8 presence; + u8 motion; + u8 body_movement; + + /* 距离 */ + u16 distance_cm; + + /* + * 心率/呼吸率。 + * + * x10保存: + * 例如 72.0 bpm -> 720 + */ + u16 heart_rate_x10; + u16 breath_rate_x10; + + /* 睡眠状态 */ + u8 sleep_state; + + /* XYZ坐标 */ + s16 pos_x_mm; + s16 pos_y_mm; + s16 pos_z_mm; + + /* 最新波形采样值 */ + u8 heart_waveform; + u8 breath_waveform; + + /* + * 最近一次“已识别业务数据更新”的系统时间。 + * + * 未知但checksum正确的合法帧不会刷新该时间。 + * 单位:ms。 + */ + u32 update_ms; + + /* 运行统计 */ + u32 rx_bytes; + + /* + * checksum正确的合法帧总数。 + * 包含当前没有解析业务含义的帧。 + */ + u32 frame_count; + + /* + * 当前parser真正识别并更新业务字段的帧数。 + */ + u32 data_update_count; + + u32 checksum_errors; +}; + + +/* + * 初始化R60ABD1协议层。 + * + * 必须在input/get_data之前调用。 + */ +int radar_r60abd1_init(void); + + +/* + * 输入UART收到的原始字节流。 + */ +int radar_r60abd1_input_bytes( + const u8 *data, + u16 len +); + + +/* + * 获取当前最新状态快照。 + * + * 内部使用mutex保护。 + */ +int radar_r60abd1_get_data( + struct radar_r60abd1_data *out +); + + +/* + * 发送一条已经组好的R60ABD1协议命令。 + */ +int radar_r60abd1_send_command( + const u8 *cmd, + u16 len +); + + +#endif \ No newline at end of file diff --git a/radar/radar_command_service.c b/radar/radar_command_service.c new file mode 100644 index 0000000..c4b08ba --- /dev/null +++ b/radar/radar_command_service.c @@ -0,0 +1,449 @@ +#include "system/includes.h" +#include "system/timer.h" + +#include "app_log.h" + +#include "radar_command_service.h" +#include "r60abd1.h" + + +#define RADAR_COMMAND_FRAME_LEN 10 + +#define RADAR_COMMAND_STARTUP_INTERVAL_MS 50 +#define RADAR_COMMAND_PERIODIC_INTERVAL_MS 2000 +#define RADAR_COMMAND_SKIP_INTERVAL_MS 100 +#define RADAR_COMMAND_RETRY_INTERVAL_MS 100 + +#define RADAR_COMMAND_TASK_PRIO 20 +#define RADAR_COMMAND_TASK_STACK 1024 + + +enum radar_command_phase { + RADAR_COMMAND_PHASE_STARTUP = 0, + RADAR_COMMAND_PHASE_PERIODIC +}; + + +/* + * ESP32参考工程启动阶段: + * + * 1. queryPresenceCmd原始10字节 + * 2. 12条startupCommands + * + * 每条之间50ms。 + */ +static const u8 radar_startup_commands[][RADAR_COMMAND_FRAME_LEN] = { + {0x53, 0x59, 0x80, 0x81, 0x00, 0x01, 0x00, 0xAE, 0x54, 0x43}, + + {0x53, 0x59, 0x80, 0x00, 0x00, 0x01, 0x01, 0x2E, 0x54, 0x43}, + {0x53, 0x59, 0x81, 0x00, 0x00, 0x01, 0x01, 0x2F, 0x54, 0x43}, + {0x53, 0x59, 0x85, 0x00, 0x00, 0x01, 0x01, 0x33, 0x54, 0x43}, + {0x53, 0x59, 0x84, 0x00, 0x00, 0x01, 0x01, 0x32, 0x54, 0x43}, + + {0x53, 0x59, 0x81, 0x0C, 0x00, 0x01, 0x01, 0x3B, 0x54, 0x43}, + {0x53, 0x59, 0x85, 0x0A, 0x00, 0x01, 0x01, 0x3D, 0x54, 0x43}, + {0x53, 0x59, 0x84, 0x13, 0x00, 0x01, 0x01, 0x45, 0x54, 0x43}, + {0x53, 0x59, 0x84, 0x14, 0x00, 0x01, 0x01, 0x46, 0x54, 0x43}, + + {0x53, 0x59, 0x80, 0x80, 0x00, 0x01, 0x0F, 0xBC, 0x54, 0x43}, + {0x53, 0x59, 0x81, 0x80, 0x00, 0x01, 0x0F, 0xBD, 0x54, 0x43}, + {0x53, 0x59, 0x85, 0x80, 0x00, 0x01, 0x0F, 0xC1, 0x54, 0x43}, + {0x53, 0x59, 0x84, 0x80, 0x00, 0x01, 0x0F, 0xC0, 0x54, 0x43}, +}; + + +/* + * 周期查询命令: + * + * 84系列保持ESP32参考任务的查询顺序; + * 心率/呼吸数值查询按R60ABD1 V3.4手册使用85/82、81/82。 + * 每条value固定为0x0F,正常每2秒发送一条。 + */ +static const u8 radar_periodic_commands[][RADAR_COMMAND_FRAME_LEN] = { + {0x53, 0x59, 0x84, 0x81, 0x00, 0x01, 0x0F, 0xC1, 0x54, 0x43}, + {0x53, 0x59, 0x84, 0x8D, 0x00, 0x01, 0x0F, 0xCD, 0x54, 0x43}, + {0x53, 0x59, 0x84, 0x8F, 0x00, 0x01, 0x0F, 0xCF, 0x54, 0x43}, + {0x53, 0x59, 0x84, 0x8E, 0x00, 0x01, 0x0F, 0xCE, 0x54, 0x43}, + {0x53, 0x59, 0x84, 0x91, 0x00, 0x01, 0x0F, 0xD1, 0x54, 0x43}, + {0x53, 0x59, 0x84, 0x92, 0x00, 0x01, 0x0F, 0xD2, 0x54, 0x43}, + {0x53, 0x59, 0x84, 0x83, 0x00, 0x01, 0x0F, 0xC3, 0x54, 0x43}, + {0x53, 0x59, 0x84, 0x84, 0x00, 0x01, 0x0F, 0xC4, 0x54, 0x43}, + {0x53, 0x59, 0x84, 0x85, 0x00, 0x01, 0x0F, 0xC5, 0x54, 0x43}, + {0x53, 0x59, 0x84, 0x86, 0x00, 0x01, 0x0F, 0xC6, 0x54, 0x43}, + {0x53, 0x59, 0x84, 0x90, 0x00, 0x01, 0x0F, 0xD0, 0x54, 0x43}, + {0x53, 0x59, 0x85, 0x82, 0x00, 0x01, 0x0F, 0xC3, 0x54, 0x43}, + {0x53, 0x59, 0x81, 0x82, 0x00, 0x01, 0x0F, 0xBF, 0x54, 0x43}, +}; + + +static enum radar_command_phase radar_command_phase; + +static u8 radar_command_sleep_query_enabled; + +static u16 radar_command_startup_cmd_index; +static u16 radar_command_periodic_query_index; + +static u32 radar_command_next_ms; + +static int radar_command_task_pid; + + +/* + * ESP32中可关闭的睡眠查询: + * periodic_query_index 1 -> 84/8D + * periodic_query_index 10 -> 84/90 + */ +static int radar_command_is_sleep_query(u16 query_index) +{ + return (query_index == 1) || + (query_index == 10); +} + + +static int radar_command_time_reached( + u32 now, + u32 deadline +) +{ + /* + * 兼容u32毫秒计数回绕。 + */ + return ((s32)(now - deadline) >= 0); +} + + +static int radar_command_send_frame( + const u8 *frame +) +{ + int ret; + + + ret = radar_r60abd1_send_command( + frame, + RADAR_COMMAND_FRAME_LEN + ); + + + if (ret < 0) { + return ret; + } + + + /* + * 当前UART写接口成功时应返回实际写入长度。 + */ + if (ret != RADAR_COMMAND_FRAME_LEN) { + return -2; + } + + + return 0; +} + + +/* + * 单次非阻塞调度。 + * + * 只由本模块内部任务调用。 + */ +static int radar_command_process_once(void) +{ + int ret; + + u32 now; + + const u8 *frame; + + + now = timer_get_ms(); + + + if (!radar_command_time_reached( + now, + radar_command_next_ms + )) { + + return 0; + } + + + /* + * 第一阶段: + * 13条启动命令,50ms间隔。 + */ + if (radar_command_phase == + RADAR_COMMAND_PHASE_STARTUP) { + + frame = + radar_startup_commands[ + radar_command_startup_cmd_index + ]; + + + ret = radar_command_send_frame(frame); + + if (ret != 0) { + + radar_command_next_ms = + now + + RADAR_COMMAND_RETRY_INTERVAL_MS; + + APP_LOG( + "[RADAR_CMD] startup send failed " + "startup_cmd_index=%u ctrl=%02X cmd=%02X ret=%d\n", + radar_command_startup_cmd_index, + frame[2], + frame[3], + ret + ); + + return ret; + } + + + APP_LOG( + "[RADAR_CMD] startup sent " + "startup_cmd_index=%u ctrl=%02X cmd=%02X value=%02X\n", + radar_command_startup_cmd_index, + frame[2], + frame[3], + frame[6] + ); + + + radar_command_startup_cmd_index++; + + + if (radar_command_startup_cmd_index >= + (sizeof(radar_startup_commands) / + sizeof(radar_startup_commands[0]))) { + + radar_command_phase = + RADAR_COMMAND_PHASE_PERIODIC; + + radar_command_periodic_query_index = 0; + + radar_command_next_ms = + now + + RADAR_COMMAND_PERIODIC_INTERVAL_MS; + + APP_LOG( + "[RADAR_CMD] startup complete\n" + ); + + } else { + + radar_command_next_ms = + now + + RADAR_COMMAND_STARTUP_INTERVAL_MS; + } + + + return 1; + } + + + /* + * 第二阶段: + * 周期查询。 + */ + if ((!radar_command_sleep_query_enabled) && + radar_command_is_sleep_query( + radar_command_periodic_query_index + )) { + + APP_LOG( + "[RADAR_CMD] periodic skip " + "periodic_query_index=%u ctrl=%02X cmd=%02X\n", + radar_command_periodic_query_index, + radar_periodic_commands[ + radar_command_periodic_query_index + ][2], + radar_periodic_commands[ + radar_command_periodic_query_index + ][3] + ); + + + radar_command_periodic_query_index = + (u16)( + (radar_command_periodic_query_index + 1) % + ( + sizeof(radar_periodic_commands) / + sizeof(radar_periodic_commands[0]) + ) + ); + + + radar_command_next_ms = + now + + RADAR_COMMAND_SKIP_INTERVAL_MS; + + + return 0; + } + + + frame = + radar_periodic_commands[ + radar_command_periodic_query_index + ]; + + + ret = radar_command_send_frame(frame); + + if (ret != 0) { + + radar_command_next_ms = + now + + RADAR_COMMAND_RETRY_INTERVAL_MS; + + APP_LOG( + "[RADAR_CMD] periodic send failed " + "periodic_query_index=%u ctrl=%02X cmd=%02X ret=%d\n", + radar_command_periodic_query_index, + frame[2], + frame[3], + ret + ); + + return ret; + } + + + APP_LOG( + "[RADAR_CMD] periodic sent " + "periodic_query_index=%u ctrl=%02X cmd=%02X value=%02X\n", + radar_command_periodic_query_index, + frame[2], + frame[3], + frame[6] + ); + + + radar_command_periodic_query_index = + (u16)( + (radar_command_periodic_query_index + 1) % + ( + sizeof(radar_periodic_commands) / + sizeof(radar_periodic_commands[0]) + ) + ); + + + radar_command_next_ms = + now + + RADAR_COMMAND_PERIODIC_INTERVAL_MS; + + + return 1; +} + + +static void radar_command_task(void *priv) +{ + (void)priv; + + + while (1) { + + /* + * process_once自身按timer_get_ms()判断是否到期。 + * 这里仅短暂让出CPU,不依赖app_main的UART阻塞周期。 + */ + radar_command_process_once(); + + os_time_dly(1); + } +} + + +int radar_command_service_init(void) +{ + int ret; + + + if (radar_command_task_pid) { + return 0; + } + + + radar_command_phase = + RADAR_COMMAND_PHASE_STARTUP; + + radar_command_sleep_query_enabled = 1; + + radar_command_startup_cmd_index = 0; + radar_command_periodic_query_index = 0; + + /* + * 任务启动后允许立即发送首条queryPresenceCmd。 + */ + radar_command_next_ms = + timer_get_ms(); + + + ret = thread_fork( + "radar_cmd", + RADAR_COMMAND_TASK_PRIO, + RADAR_COMMAND_TASK_STACK, + 0, + &radar_command_task_pid, + radar_command_task, + NULL + ); + + + if (ret != OS_NO_ERR) { + + radar_command_task_pid = 0; + + APP_LOG( + "[RADAR_CMD] task start failed ret=%d\n", + ret + ); + + return -1; + } + + + APP_LOG( + "[RADAR_CMD] init success " + "startup=%u periodic=%u\n", + (u32)( + sizeof(radar_startup_commands) / + sizeof(radar_startup_commands[0]) + ), + (u32)( + sizeof(radar_periodic_commands) / + sizeof(radar_periodic_commands[0]) + ) + ); + + + return 0; +} + + +void radar_command_service_set_sleep_query_enabled( + u8 enabled +) +{ + radar_command_sleep_query_enabled = + enabled ? 1 : 0; + + + APP_LOG( + "[RADAR_CMD] sleep query %s\n", + radar_command_sleep_query_enabled ? + "enabled" : + "disabled" + ); +} + + +u8 radar_command_service_get_sleep_query_enabled(void) +{ + return radar_command_sleep_query_enabled; +} \ No newline at end of file diff --git a/radar/radar_command_service.h b/radar/radar_command_service.h new file mode 100644 index 0000000..6c7af55 --- /dev/null +++ b/radar/radar_command_service.h @@ -0,0 +1,55 @@ +#ifndef RADAR_COMMAND_SERVICE_H +#define RADAR_COMMAND_SERVICE_H + +#include "typedef.h" + + +/* + * radar_command_service + * + * 职责: + * - 按参考工程顺序发送R60ABD1启动命令 + * - 启动完成后按周期轮询查询命令 + * - 控制是否跳过睡眠相关查询 + * + * 调度任务由本模块内部持有。 + * + * 不负责: + * - UART硬件初始化 + * - 雷达接收/协议解析 + * - radar_manager状态 + * - MQTT/WiFi + */ + + +/* + * 初始化并启动命令调度任务。 + * + * 调用前要求: + * radar_uart_init() 已成功 + * radar_r60abd1_init() 已成功 + * + * 重复调用安全:已经启动时直接返回0。 + */ +int radar_command_service_init(void); + + +/* + * 是否发送睡眠相关周期查询。 + * + * 默认开启,与ESP32参考工程一致。 + * + * enabled: + * 0 跳过84/8D和84/90 + * 非0 正常发送 + */ +void radar_command_service_set_sleep_query_enabled(u8 enabled); + + +/* + * 获取当前睡眠查询开关。 + */ +u8 radar_command_service_get_sleep_query_enabled(void); + + +#endif diff --git a/radar/radar_data_service.c b/radar/radar_data_service.c new file mode 100644 index 0000000..6c816ae --- /dev/null +++ b/radar/radar_data_service.c @@ -0,0 +1,159 @@ +#include "system/includes.h" +#include "app_log.h" + +#include "radar_data_service.h" +#include "r60abd1.h" +#include "radar_manager.h" + + +#include + + +/* + * 已经成功同步到radar_manager的 + * R60 data_update_count。 + * + * 不使用frame_count: + * 未知但checksum正确的合法帧只增加frame_count, + * 不应该触发manager业务状态更新。 + */ +static u32 radar_data_service_last_update_count; + + +/* + * 把R60协议层的公开快照 + * 映射成manager通用输入结构。 + * + * 这里不做: + * - 合法性判断 + * - meaningful change判断 + * - freshness判断 + * + * 这些都属于radar_manager职责。 + */ +static void radar_data_service_build_manager_input( + const struct radar_r60abd1_data *r60, + struct radar_manager_input *input +) +{ + memset(input, 0, sizeof(*input)); + + + input->presence = + r60->presence; + + input->motion = + r60->motion; + + input->body_movement = + r60->body_movement; + + + input->distance_cm = + r60->distance_cm; + + + input->heart_rate_x10 = + r60->heart_rate_x10; + + input->breath_rate_x10 = + r60->breath_rate_x10; + + + input->sleep_state = + r60->sleep_state; + + + input->pos_x_mm = + r60->pos_x_mm; + + input->pos_y_mm = + r60->pos_y_mm; + + input->pos_z_mm = + r60->pos_z_mm; + + + /* + * 当前稳定R60接口没有abnormal_state来源。 + * 不猜协议,保持0。 + */ + input->abnormal_state = 0; + + + /* + * 使用协议层“真正业务数据更新”的时间。 + * + * manager自身不依赖AC79 timer API。 + */ + input->update_ms = + r60->update_ms; +} + + +int radar_data_service_init(void) +{ + radar_data_service_last_update_count = 0; + + APP_LOG("[RADAR_DATA] init success\n"); + + return 0; +} + + +int radar_data_service_process(void) +{ + int ret; + + struct radar_r60abd1_data r60; + struct radar_manager_input input; + + + ret = radar_r60abd1_get_data(&r60); + + if (ret != 0) { + return ret; + } + + + /* + * 没有新的“已识别业务更新”: + * 不重复刷新manager。 + * + * 这里直接比较计数即可。 + * 即使u32未来发生回绕,也仍能识别下一次变化。 + */ + if (r60.data_update_count == + radar_data_service_last_update_count) { + + return 0; + } + + + radar_data_service_build_manager_input( + &r60, + &input + ); + + + ret = radar_manager_update(&input); + + if (ret != 0) { + /* + * manager更新失败时不要推进last_update_count, + * 下次process还能重试同一份最新数据。 + */ + return ret; + } + + + /* + * 只有manager真正接收成功后, + * 才认为这次R60更新已被消费。 + */ + radar_data_service_last_update_count = + r60.data_update_count; + + + return 1; +} diff --git a/radar/radar_data_service.h b/radar/radar_data_service.h new file mode 100644 index 0000000..397e341 --- /dev/null +++ b/radar/radar_data_service.h @@ -0,0 +1,49 @@ +#ifndef RADAR_DATA_SERVICE_H +#define RADAR_DATA_SERVICE_H + + +/* + * radar_data_service 的职责: + * + * R60ABD1最新业务数据 + * ↓ + * radar_manager_input + * ↓ + * radar_manager + * + * 它只负责协议层与业务状态层之间的数据适配。 + * + * 它不知道: + * - UART硬件 + * - R60 CTRL/CMD具体含义 + * - MQTT + * - WiFi + * - Flash + * - 上报周期 + */ + + +/* + * 初始化数据适配服务。 + * + * 注意: + * radar_r60abd1_init() 和 radar_manager_init() + * 仍由更上层负责。 + */ +int radar_data_service_init(void); + + +/* + * 尝试把R60ABD1最新业务数据同步到radar_manager。 + * + * 返回: + * 1 本次发现新业务数据,并成功更新manager + * 0 本次没有新的业务数据 + * <0 读取R60或更新manager失败 + * + * 建议由单一任务/主循环调用。 + */ +int radar_data_service_process(void); + + +#endif diff --git a/radar/radar_manager.c b/radar/radar_manager.c new file mode 100644 index 0000000..4cce4e6 --- /dev/null +++ b/radar/radar_manager.c @@ -0,0 +1,332 @@ +#include "system/includes.h" +#include "radar_manager.h" +#include +#include "app_log.h" + +static struct radar_sensor_data current_data; +static struct radar_sensor_data consumed_data; + +static OS_MUTEX radar_manager_mutex; +static u8 radar_manager_mutex_ready; +static u8 has_consumed_snapshot; + + +static u16 abs_diff_u16(u16 a, u16 b) +{ + return (a >= b) ? (u16)(a - b) : (u16)(b - a); +} + + +static u8 abs_diff_u8(u8 a, u8 b) +{ + return (a >= b) ? (u8)(a - b) : (u8)(b - a); +} + + +/* + * 保留 ESP32 当前最终业务判定: + * heart: > 0 && < 200 bpm + * breath: > 0 && <= 60 /min + * + * AC79 内部使用 x10 整数。 + */ +static u8 heart_rate_valid(u16 value_x10) +{ + return (value_x10 > 0 && value_x10 < 2000) ? 1 : 0; +} + + +static u8 breath_rate_valid(u16 value_x10) +{ + return (value_x10 > 0 && value_x10 <= 600) ? 1 : 0; +} + + +/* + * 调用者必须持有 radar_manager_mutex。 + */ +static void build_change_flags_locked( + struct radar_change_flags *flags +) +{ + memset(flags, 0, sizeof(*flags)); + + if (!has_consumed_snapshot) { + + if (current_data.last_update_ms != 0) { + flags->any_changed = 1; + } + + return; + } + + + flags->presence_changed = + current_data.presence != consumed_data.presence; + + flags->motion_changed = + current_data.motion != consumed_data.motion; + + flags->sleep_state_changed = + current_data.sleep_state != consumed_data.sleep_state; + + /* + * ESP32 当前 meaningful-change 阈值: + * body movement >= 5 + * distance >= 10 cm + * heart >= 3 bpm + * breath >= 2 /min + */ + flags->body_movement_changed = + abs_diff_u8( + current_data.body_movement, + consumed_data.body_movement + ) >= 5; + + flags->distance_changed = + abs_diff_u16( + current_data.distance_cm, + consumed_data.distance_cm + ) >= 10; + + flags->heart_rate_changed = + abs_diff_u16( + current_data.heart_rate_x10, + consumed_data.heart_rate_x10 + ) >= 30; + + flags->breath_rate_changed = + abs_diff_u16( + current_data.breath_rate_x10, + consumed_data.breath_rate_x10 + ) >= 20; + + flags->abnormal_state_changed = + current_data.abnormal_state != + consumed_data.abnormal_state; + + + flags->any_changed = + flags->presence_changed || + flags->motion_changed || + flags->sleep_state_changed || + flags->body_movement_changed || + flags->distance_changed || + flags->heart_rate_changed || + flags->breath_rate_changed || + flags->abnormal_state_changed; +} + + +int radar_manager_init(void) +{ + memset(¤t_data, 0, sizeof(current_data)); + memset(&consumed_data, 0, sizeof(consumed_data)); + + has_consumed_snapshot = 0; + + if (!radar_manager_mutex_ready) { + os_mutex_create(&radar_manager_mutex); + radar_manager_mutex_ready = 1; + } + + APP_LOG("[RADAR_MGR] init success\n"); + + return 0; +} + + +int radar_manager_update( + const struct radar_manager_input *input +) +{ + if (!input) { + return -1; + } + + if (!radar_manager_mutex_ready) { + return -2; + } + + + os_mutex_pend(&radar_manager_mutex, 0); + + + current_data.presence = input->presence; + current_data.motion = input->motion; + current_data.body_movement = input->body_movement; + + current_data.distance_cm = input->distance_cm; + + current_data.heart_rate_x10 = input->heart_rate_x10; + current_data.breath_rate_x10 = input->breath_rate_x10; + + current_data.heart_valid = + heart_rate_valid(input->heart_rate_x10); + + current_data.breath_valid = + breath_rate_valid(input->breath_rate_x10); + + current_data.sleep_state = input->sleep_state; + + current_data.pos_x_mm = input->pos_x_mm; + current_data.pos_y_mm = input->pos_y_mm; + current_data.pos_z_mm = input->pos_z_mm; + + current_data.abnormal_state = input->abnormal_state; + + current_data.last_update_ms = input->update_ms; + + + os_mutex_post(&radar_manager_mutex); + + + return 0; +} + + +int radar_manager_get_sensor_data( + struct radar_sensor_data *out +) +{ + if (!out) { + return -1; + } + + if (!radar_manager_mutex_ready) { + return -2; + } + + + os_mutex_pend(&radar_manager_mutex, 0); + + memcpy(out, ¤t_data, sizeof(*out)); + + os_mutex_post(&radar_manager_mutex); + + + return 0; +} + + +int radar_manager_get_change_flags( + struct radar_change_flags *out +) +{ + if (!out) { + return -1; + } + + if (!radar_manager_mutex_ready) { + return -2; + } + + + os_mutex_pend(&radar_manager_mutex, 0); + + build_change_flags_locked(out); + + os_mutex_post(&radar_manager_mutex); + + + return 0; +} + + +int radar_manager_get_report_snapshot( + u32 now_ms, + u32 max_age_ms, + struct radar_report_snapshot *out +) +{ + struct radar_change_flags flags; + u32 age; + + if (!out) { + return -1; + } + + if (!radar_manager_mutex_ready) { + return -2; + } + + + memset(out, 0, sizeof(*out)); + + + os_mutex_pend(&radar_manager_mutex, 0); + + + memcpy( + &out->sensor, + ¤t_data, + sizeof(out->sensor) + ); + + build_change_flags_locked(&flags); + + + out->has_person = + current_data.presence != 0; + + /* + * 先保持 ESP32 当前语义: + * presence != 0 或 sleep_state > 0 + */ + out->bed_occupied = + (current_data.presence != 0) || + (current_data.sleep_state > 0); + + out->has_valid_vitals = + current_data.heart_valid || + current_data.breath_valid; + + out->has_meaningful_change = + flags.any_changed; + + + if (current_data.last_update_ms != 0) { + + age = + (u32)( + now_ms - + current_data.last_update_ms + ); + + out->sample_age_ms = age; + + if (age <= max_age_ms) { + out->has_fresh_sample = 1; + } + } + + + os_mutex_post(&radar_manager_mutex); + + + return 0; +} + + +int radar_manager_mark_snapshot_consumed(void) +{ + if (!radar_manager_mutex_ready) { + return -1; + } + + + os_mutex_pend(&radar_manager_mutex, 0); + + memcpy( + &consumed_data, + ¤t_data, + sizeof(consumed_data) + ); + + has_consumed_snapshot = 1; + + os_mutex_post(&radar_manager_mutex); + + + return 0; +} diff --git a/radar/radar_manager.h b/radar/radar_manager.h new file mode 100644 index 0000000..c0986eb --- /dev/null +++ b/radar/radar_manager.h @@ -0,0 +1,115 @@ +#ifndef RADAR_MANAGER_H +#define RADAR_MANAGER_H + +#include "typedef.h" +/* + * radar_manager 的职责: + * 1. 保存“当前最新雷达状态” + * 2. 对上层提供一致快照 + * 3. 判断 fresh / valid / meaningful change + * + * 它不知道: + * - UART + * - R60 CTRL/CMD + * - MQTT + * - WiFi + * - Flash + */ + +struct radar_manager_input { + u8 presence; + u8 motion; + u8 body_movement; + + u16 distance_cm; + + u16 heart_rate_x10; + u16 breath_rate_x10; + + u8 sleep_state; + + s16 pos_x_mm; + s16 pos_y_mm; + s16 pos_z_mm; + + u8 abnormal_state; + + /* + * 由调用者传入本次数据真正更新的系统时间。 + * manager 自己不依赖 AC79 timer API, + * 保持模块纯净。 + */ + u32 update_ms; +}; + +struct radar_sensor_data { + u8 presence; + u8 motion; + u8 body_movement; + + u16 distance_cm; + + u16 heart_rate_x10; + u16 breath_rate_x10; + + u8 heart_valid; + u8 breath_valid; + + u8 sleep_state; + + s16 pos_x_mm; + s16 pos_y_mm; + s16 pos_z_mm; + + u8 abnormal_state; + + u32 last_update_ms; +}; + +struct radar_change_flags { + u8 presence_changed; + u8 motion_changed; + u8 sleep_state_changed; + u8 body_movement_changed; + u8 distance_changed; + u8 heart_rate_changed; + u8 breath_rate_changed; + u8 abnormal_state_changed; + u8 any_changed; +}; + +struct radar_report_snapshot { + struct radar_sensor_data sensor; + + u8 has_person; + u8 bed_occupied; + u8 has_valid_vitals; + u8 has_fresh_sample; + u8 has_meaningful_change; + + u32 sample_age_ms; +}; + +int radar_manager_init(void); + +int radar_manager_update( + const struct radar_manager_input *input +); + +int radar_manager_get_sensor_data( + struct radar_sensor_data *out +); + +int radar_manager_get_change_flags( + struct radar_change_flags *out +); + +int radar_manager_get_report_snapshot( + u32 now_ms, + u32 max_age_ms, + struct radar_report_snapshot *out +); + +int radar_manager_mark_snapshot_consumed(void); + +#endif diff --git a/radar/radar_report_service.c b/radar/radar_report_service.c new file mode 100644 index 0000000..a5a7e0a --- /dev/null +++ b/radar/radar_report_service.c @@ -0,0 +1,307 @@ +#include "system/includes.h" + +#include "app_log.h" +#include "radar_report_service.h" + +#include + + +static struct radar_report_service_config report_config; + +static struct radar_report_snapshot pending_snapshot; + +static u8 report_service_initialized; +static u8 report_pending; +static u8 pending_reason; + +static u32 last_report_ms; + + +/* + * 判断两个快照在“manager meaningful-change 关注的字段”上 + * 是否仍然一致。 + * + * 不比较 position: + * 当前 manager 的 meaningful-change 本来就不以 XYZ 作为 + * 上报变化条件,位置的持续抖动不应阻止 consumed baseline 推进。 + * + * 不比较 last_update_ms/sample_age_ms: + * 它们是时间信息,不是业务状态本身。 + */ +static u8 radar_report_business_equal( + const struct radar_report_snapshot *a, + const struct radar_report_snapshot *b +) +{ + if (!a || !b) { + return 0; + } + + if (a->sensor.presence != b->sensor.presence) { + return 0; + } + + if (a->sensor.motion != b->sensor.motion) { + return 0; + } + + if (a->sensor.sleep_state != b->sensor.sleep_state) { + return 0; + } + + if (a->sensor.body_movement != + b->sensor.body_movement) { + return 0; + } + + if (a->sensor.distance_cm != + b->sensor.distance_cm) { + return 0; + } + + if (a->sensor.heart_rate_x10 != + b->sensor.heart_rate_x10) { + return 0; + } + + if (a->sensor.breath_rate_x10 != + b->sensor.breath_rate_x10) { + return 0; + } + + if (a->sensor.abnormal_state != + b->sensor.abnormal_state) { + return 0; + } + + return 1; +} + + +int radar_report_service_init( + const struct radar_report_service_config *config +) +{ + if (!config) { + return -1; + } + + if (config->max_age_ms == 0) { + return -2; + } + + memset( + &pending_snapshot, + 0, + sizeof(pending_snapshot) + ); + + report_config = *config; + + report_pending = 0; + pending_reason = RADAR_REPORT_REASON_NONE; + last_report_ms = 0; + + report_service_initialized = 1; + + APP_LOG( + "[RADAR_REPORT] init success max_age=%u periodic=%u\n", + report_config.max_age_ms, + report_config.periodic_interval_ms + ); + + return 0; +} + + +int radar_report_service_check( + u32 now_ms, + struct radar_report_snapshot *out, + u8 *reason +) +{ + int ret; + u8 due_reason; + struct radar_report_snapshot current; + + if (!out || !reason) { + return -1; + } + + if (!report_service_initialized) { + return -2; + } + + + /* + * 已经有一份等待真正发送成功的快照: + * 始终返回同一份,避免发送失败重试时内容漂移。 + */ + if (report_pending) { + + memcpy( + out, + &pending_snapshot, + sizeof(*out) + ); + + *reason = pending_reason; + + return 1; + } + + + ret = radar_manager_get_report_snapshot( + now_ms, + report_config.max_age_ms, + ¤t + ); + + if (ret != 0) { + return ret; + } + + + /* + * 没有真正业务样本,或者样本已经过期: + * 不把旧数据交给上层发送。 + */ + if (current.sensor.last_update_ms == 0 || + !current.has_fresh_sample) { + + *reason = RADAR_REPORT_REASON_NONE; + return 0; + } + + + due_reason = RADAR_REPORT_REASON_NONE; + + + /* + * 第一次成功上报之前, + * 只要已经有 fresh sample 就先产生一份初始快照。 + */ + if (last_report_ms == 0) { + + due_reason = + RADAR_REPORT_REASON_INITIAL; + + } else if (current.has_meaningful_change) { + + due_reason = + RADAR_REPORT_REASON_CHANGE; + + } else if ( + report_config.periodic_interval_ms != 0 && + (u32)(now_ms - last_report_ms) >= + report_config.periodic_interval_ms + ) { + + due_reason = + RADAR_REPORT_REASON_PERIODIC; + } + + + if (due_reason == RADAR_REPORT_REASON_NONE) { + + *reason = RADAR_REPORT_REASON_NONE; + return 0; + } + + + memcpy( + &pending_snapshot, + ¤t, + sizeof(pending_snapshot) + ); + + report_pending = 1; + pending_reason = due_reason; + + + memcpy( + out, + &pending_snapshot, + sizeof(*out) + ); + + *reason = pending_reason; + + + return 1; +} + + +int radar_report_service_mark_reported( + u32 now_ms +) +{ + int ret; + struct radar_report_snapshot current; + + if (!report_service_initialized) { + return -1; + } + + if (!report_pending) { + return 0; + } + + + /* + * 发送成功后重新看一次 manager 当前状态。 + * + * 如果从生成 pending 到发送成功之间, + * meaningful-change 相关业务字段没有变化, + * 才安全推进 manager consumed baseline。 + * + * 如果已经变化,则不消费: + * 下一次 check 会继续看到 CHANGE, + * 防止“发送旧快照却把新状态标记为已消费”。 + */ + ret = radar_manager_get_report_snapshot( + now_ms, + report_config.max_age_ms, + ¤t + ); + + if (ret != 0) { + return ret; + } + + + if (radar_report_business_equal( + &pending_snapshot, + ¤t + )) { + + ret = + radar_manager_mark_snapshot_consumed(); + + if (ret != 0) { + return ret; + } + + } else { + + APP_LOG( + "[RADAR_REPORT] state changed while pending, " + "keep manager change for next report\n" + ); + } + + + last_report_ms = now_ms; + + report_pending = 0; + pending_reason = RADAR_REPORT_REASON_NONE; + + memset( + &pending_snapshot, + 0, + sizeof(pending_snapshot) + ); + + + return 0; +} diff --git a/radar/radar_report_service.h b/radar/radar_report_service.h new file mode 100644 index 0000000..f0f442a --- /dev/null +++ b/radar/radar_report_service.h @@ -0,0 +1,94 @@ +#ifndef RADAR_REPORT_SERVICE_H +#define RADAR_REPORT_SERVICE_H + +#include "typedef.h" +#include "radar_manager.h" + +/* + * radar_report_service 的职责: + * + * 1. 从 radar_manager 获取统一业务快照 + * 2. 判断当前是否需要上报 + * 3. 在真正上报成功后推进“已上报”状态 + * + * 它不知道: + * - UART + * - R60 CTRL/CMD + * - WiFi + * - MQTT + * - JSON + * - Flash + * + * 本模块不创建任务。 + * 由未来的上报/网络执行流主动调用。 + */ + +enum radar_report_reason { + RADAR_REPORT_REASON_NONE = 0, + RADAR_REPORT_REASON_INITIAL, + RADAR_REPORT_REASON_CHANGE, + RADAR_REPORT_REASON_PERIODIC, +}; + +struct radar_report_service_config { + /* + * manager 快照允许的最大数据年龄。 + * 超过这个时间的数据不提交给上层上报。 + */ + u32 max_age_ms; + + /* + * 即使没有 meaningful change, + * 也允许按周期强制产生一次快照。 + * + * 设为 0 表示关闭周期强制上报。 + */ + u32 periodic_interval_ms; +}; + +/* + * 初始化上报决策层。 + */ +int radar_report_service_init( + const struct radar_report_service_config *config +); + +/* + * 检查当前是否存在待上报快照。 + * + * return: + * 1 有快照需要上报,out/reason 有效 + * 0 当前不需要上报 + * <0 错误 + * + * 注意: + * 一旦产生 pending snapshot, + * 在 radar_report_service_mark_reported() 成功调用前, + * 后续 check 会返回同一份 pending snapshot。 + * + * 这样上层发送失败时可以重试, + * 不会因为 manager 又更新而偷偷替换发送内容。 + */ +int radar_report_service_check( + u32 now_ms, + struct radar_report_snapshot *out, + u8 *reason +); + +/* + * 只有“上层已经真正发送成功”后才调用。 + * + * 该函数会: + * - 清除 pending snapshot + * - 记录成功上报时间 + * - 在安全情况下推进 manager 的 consumed baseline + * + * 如果 pending 产生以后 manager 又发生了有意义字段变化, + * 本函数不会把那个新变化错误地消费掉; + * 下一次 check 仍会重新产生 CHANGE 上报。 + */ +int radar_report_service_mark_reported( + u32 now_ms +); + +#endif diff --git a/radar/radar_uart.c b/radar/radar_uart.c new file mode 100644 index 0000000..ed39bba --- /dev/null +++ b/radar/radar_uart.c @@ -0,0 +1,119 @@ +#include "radar_uart.h" + +static struct device *radar_uart_hdl = NULL;//串口操作句柄 +static u8 radar_uart_rx_buf[RADAR_UART_RX_BUF_SIZE]//串口驱动环形缓冲区 +__attribute__((aligned(32))); + +/* UART1初始化 PC6 = TX PC7 = RX */ +UART1_PLATFORM_DATA_BEGIN(radar_uart_data) + .baudrate = RADAR_UART_BAUDRATE, + .port = PORT_REMAP, + + .tx_pin = IO_PORTC_06, + .rx_pin = IO_PORTC_07, + + .output_channel = OUTPUT_CHANNEL3, + .input_channel = INPUT_CHANNEL3, + + .max_continue_recv_cnt = RADAR_UART_RX_BUF_SIZE, + .idle_sys_clk_cnt = 500000, + .clk_src = PLL_48M, +UART1_PLATFORM_DATA_END(); + +/* 注册串口设备 */ +REGISTER_DEVICES(radar_uart_devices) = { + { + RADAR_UART_NAME, + &uart_dev_ops, + (void *)&radar_uart_data + }, +}; +int radar_uart_init(void) +{ + int ret; + + if (radar_uart_hdl) { + return 0; + } + + radar_uart_hdl = dev_open(RADAR_UART_NAME, NULL); + if (!radar_uart_hdl) { + return -1; + }//句柄写入失败跳出返回-1 + + ret = dev_ioctl( + radar_uart_hdl, + UART_SET_CIRCULAR_BUFF_ADDR,//配置驱动缓冲区地址 + (u32)radar_uart_rx_buf + ); + if (ret) { + goto error; + } + + ret = dev_ioctl( + radar_uart_hdl, + UART_SET_CIRCULAR_BUFF_LENTH,//配置驱动缓冲区长度 + sizeof(radar_uart_rx_buf) + ); + if (ret) { + goto error; + } + + ret = dev_ioctl( + radar_uart_hdl, + UART_SET_RECV_BLOCK,//配置为阻塞接收模式 + 1 + ); + if (ret) { + goto error; + } + + ret = dev_ioctl( + radar_uart_hdl, + UART_SET_RECV_TIMEOUT,//配置接收超时时间 + RADAR_UART_RX_TIMEOUT_MS + ); + if (ret) { + goto error; + } + + ret = dev_ioctl( + radar_uart_hdl, + UART_START,//启动串口 + 0 + ); + if (ret) { + goto error; + } + + return 0; +//goto error时会跳转至此,释放资源返回ret +error: + dev_close(radar_uart_hdl); + radar_uart_hdl = NULL; + return ret; +} + + +int radar_uart_read(u8 *buf, u32 len)//从驱动缓冲区读取数据并存到buf中,len为读取的最大长度 +{ + if (!radar_uart_hdl || !buf || !len) { + return -1; + } + + return dev_read(radar_uart_hdl, buf, len); +} + + +int radar_uart_write(const u8 *data, u32 len)//给雷达写命令,data为写入数据,len为实际写入长度 +{ + if (!radar_uart_hdl || !data || !len) { + return -1; + } + + return dev_write( + radar_uart_hdl, + (void *)data, + len + ); +} diff --git a/radar/radar_uart.h b/radar/radar_uart.h new file mode 100644 index 0000000..135226b --- /dev/null +++ b/radar/radar_uart.h @@ -0,0 +1,18 @@ +#ifndef RADAR_UART_H +#define RADAR_UART_H + +#include "device/uart.h" //串口驱动头文件 +#include "asm/includes.h" //芯片引脚定义 +#include "typedef.h" + +#define RADAR_UART_NAME "uart1" +#define RADAR_UART_BAUDRATE 115200 +#define RADAR_UART_RX_BUF_SIZE 1024 +#define RADAR_UART_RX_TIMEOUT_MS 500 + +int radar_uart_init(void); +int radar_uart_read(u8 *buf, u32 len); +int radar_uart_write(const u8 *data, u32 len); +int radar_uart_flush(void); + +#endif \ No newline at end of file diff --git a/wifi/wifi_manager.c b/wifi/wifi_manager.c new file mode 100644 index 0000000..247448a --- /dev/null +++ b/wifi/wifi_manager.c @@ -0,0 +1,481 @@ +#include "system/includes.h" + +#include + +#include "app_log.h" +#include "wifi/wifi_connect.h" + +#include "wifi_sta.h" +#include "wifi_manager.h" + + +static struct wifi_manager_status wifi_manager_status_data; + +/* + * 第一次启动 Wi-Fi 前保存的目标凭据。 + * + * 当前只保存在 RAM。 + */ +static char wifi_manager_target_ssid[33]; +static char wifi_manager_target_password[64]; +static u8 wifi_manager_target_valid; + + +/* + * 在 WIFI_EVENT_MODULE_INIT 阶段配置启动 STA。 + * + * 当前诊断阶段与已经验证可联网的官方 demo_wifi 保持一致: + * + * force = 0: + * 使用 SDK 最后记忆的模式启动。 + * + * store = 1: + * STA 模式下保存本次默认 SSID / password。 + */ +static int wifi_manager_set_startup_sta_mode(void) +{ + struct wifi_store_info parm; + int index; + + if (!wifi_manager_target_valid) { + return -1; + } + + memset( + &parm, + 0, + sizeof(parm) + ); + + parm.mode = STA_MODE; + parm.connect_best_network = 0; + + index = parm.mode - STA_MODE; + + strncpy( + (char *)parm.ssid[index], + wifi_manager_target_ssid, + sizeof(parm.ssid[index]) - 1 + ); + + strncpy( + (char *)parm.pwd[index], + wifi_manager_target_password, + sizeof(parm.pwd[index]) - 1 + ); + + return wifi_set_default_mode( + &parm, + 0, /* force: 与当前官方 demo 测试路径一致 */ + 1 /* store: STA 默认配置写入 SDK 存储 */ + ); +} + + +/* + * AC79NN SDK Wi-Fi 事件回调。 + * + * SDK 事件来到这里后直接处理, + * 不经过额外 wifi_event 转发层。 + */ +static int wifi_manager_sdk_event_callback( + void *network_ctx, + enum WIFI_EVENT event +) +{ + int ret; + int mode_ret; + + (void)network_ctx; + + switch (event) { + + case WIFI_EVENT_MODULE_INIT: + wifi_manager_status_data.module_initialized = 1; + + /* + * STA 的通用参数配置。 + */ + ret = wifi_sta_configure(); + + /* + * Wi-Fi 启动时的默认 STA 配置必须在 + * WIFI_EVENT_MODULE_INIT 阶段完成。 + */ + mode_ret = wifi_manager_set_startup_sta_mode(); + + APP_LOG( + "[WIFI_MANAGER] module init " + "sta_configure_ret=%d startup_mode_ret=%d\n", + ret, + mode_ret + ); + break; + + case WIFI_EVENT_MODULE_START: + { + /* + * 与已经验证可联网的官方 demo_wifi 保持一致: + * 开启 CCK / OFDM / HT MCS0~MCS7 全部发送速率。 + * + * BIT(0) ~ BIT(19) 全部置位: + * mask = 0x000FFFFF + */ + u32 tx_rate_control_tab = + 0 + | BIT(0) /* CCK 1M */ + | BIT(1) /* CCK 2M */ + | BIT(2) /* CCK 5.5M */ + | BIT(3) /* OFDM 6M */ + | BIT(4) /* MCS0 / 7.2M */ + | BIT(5) /* OFDM 9M */ + | BIT(6) /* CCK 11M */ + | BIT(7) /* OFDM 12M */ + | BIT(8) /* MCS1 / 14.4M */ + | BIT(9) /* OFDM 18M */ + | BIT(10) /* MCS2 / 21.7M */ + | BIT(11) /* OFDM 24M */ + | BIT(12) /* MCS3 / 28.9M */ + | BIT(13) /* OFDM 36M */ + | BIT(14) /* MCS4 / 43.3M */ + | BIT(15) /* OFDM 48M */ + | BIT(16) /* OFDM 54M */ + | BIT(17) /* MCS5 / 57.8M */ + | BIT(18) /* MCS6 / 65.0M */ + | BIT(19); /* MCS7 / 72.2M */ + + wifi_set_tx_rate_control_tab( + tx_rate_control_tab + ); + + wifi_manager_status_data.module_started = 1; + + APP_LOG( + "[WIFI_MANAGER] module started " + "tx_rate_mask=0x%08x\n", + (unsigned int)tx_rate_control_tab + ); + break; + } + + case WIFI_EVENT_MODULE_STOP: + wifi_manager_status_data.module_initialized = 0; + wifi_manager_status_data.module_started = 0; + wifi_manager_status_data.sta_started = 0; + wifi_manager_status_data.connecting = 0; + wifi_manager_status_data.sta_associated = 0; + wifi_manager_status_data.network_ready = 0; + + APP_LOG("[WIFI_MANAGER] module stopped\n"); + break; + + case WIFI_EVENT_MODULE_START_ERR: + wifi_manager_status_data.module_started = 0; + wifi_manager_status_data.sta_started = 0; + wifi_manager_status_data.connecting = 0; + wifi_manager_status_data.sta_associated = 0; + wifi_manager_status_data.network_ready = 0; + + APP_LOG("[WIFI_MANAGER] module start failed\n"); + break; + + case WIFI_EVENT_STA_START: + wifi_manager_status_data.sta_started = 1; + + APP_LOG("[WIFI_MANAGER] sta started\n"); + break; + + case WIFI_EVENT_STA_STOP: + wifi_manager_status_data.sta_started = 0; + wifi_manager_status_data.connecting = 0; + wifi_manager_status_data.sta_associated = 0; + wifi_manager_status_data.network_ready = 0; + + APP_LOG("[WIFI_MANAGER] sta stopped\n"); + break; + + /* + * 只表示 802.11 关联成功。 + * DHCP 还没有完成,因此不能认为网络已经可用。 + */ + case WIFI_EVENT_STA_CONNECT_SUCC: + wifi_manager_status_data.sta_associated = 1; + wifi_manager_status_data.network_ready = 0; + + APP_LOG( + "[WIFI_MANAGER] sta associated, waiting dhcp\n" + ); + break; + + case WIFI_EVENT_STA_DISCONNECT: + wifi_manager_status_data.connecting = 0; + wifi_manager_status_data.sta_associated = 0; + wifi_manager_status_data.network_ready = 0; + + APP_LOG("[WIFI_MANAGER] sta disconnected\n"); + break; + + case WIFI_EVENT_STA_CONNECT_TIMEOUT_NOT_FOUND_SSID: + wifi_manager_status_data.connecting = 0; + wifi_manager_status_data.sta_associated = 0; + wifi_manager_status_data.network_ready = 0; + + APP_LOG("[WIFI_MANAGER] ssid not found\n"); + break; + + case WIFI_EVENT_STA_CONNECT_ASSOCIAT_FAIL: + wifi_manager_status_data.connecting = 0; + wifi_manager_status_data.sta_associated = 0; + wifi_manager_status_data.network_ready = 0; + + APP_LOG("[WIFI_MANAGER] association failed\n"); + break; + + case WIFI_EVENT_STA_CONNECT_ASSOCIAT_TIMEOUT: + wifi_manager_status_data.connecting = 0; + wifi_manager_status_data.sta_associated = 0; + wifi_manager_status_data.network_ready = 0; + + APP_LOG("[WIFI_MANAGER] association timeout\n"); + break; + + /* + * DHCP 成功后,才认为 IPv4 网络真正可用。 + */ + case WIFI_EVENT_STA_NETWORK_STACK_DHCP_SUCC: + wifi_manager_status_data.connecting = 0; + wifi_manager_status_data.sta_associated = 1; + wifi_manager_status_data.network_ready = 1; + + APP_LOG( + "[WIFI_MANAGER] network ready rssi=%d\n", + (int)wifi_get_rssi() + ); + break; + + /* + * DHCP 超时不等价于 802.11 已断开。 + */ + case WIFI_EVENT_STA_NETWORK_STACK_DHCP_TIMEOUT: + wifi_manager_status_data.connecting = 0; + wifi_manager_status_data.network_ready = 0; + + APP_LOG("[WIFI_MANAGER] dhcp timeout\n"); + break; + + default: + break; + } + + return 0; +} + + +int wifi_manager_init(void) +{ + if (wifi_manager_status_data.initialized) { + return 0; + } + + /* + * manager 必须在 Wi-Fi 启动前取得 SDK callback 所有权, + * 否则 MODULE_INIT / MODULE_START 等早期事件会丢失。 + */ + if (wifi_is_on()) { + APP_LOG( + "[WIFI_MANAGER] init failed: wifi already on\n" + ); + return -1; + } + + memset( + &wifi_manager_status_data, + 0, + sizeof(wifi_manager_status_data) + ); + + memset( + wifi_manager_target_ssid, + 0, + sizeof(wifi_manager_target_ssid) + ); + + memset( + wifi_manager_target_password, + 0, + sizeof(wifi_manager_target_password) + ); + + wifi_manager_target_valid = 0; + + /* + * 与 AC79NN 官方 demo_wifi 的启动顺序保持一致: + * 在注册 callback / wifi_on() 之前先设置 STA 可保存的 SSID 数量。 + */ + wifi_set_store_ssid_cnt(5); + + wifi_set_event_callback( + wifi_manager_sdk_event_callback + ); + + /* + * 这里只初始化 manager,不立即 wifi_on()。 + * + * 等 wifi_manager_connect() 先拿到目标凭据后再启动 Wi-Fi, + * 这样 MODULE_INIT 才能取得本次目标 STA 信息。 + */ + wifi_manager_status_data.initialized = 1; + + APP_LOG("[WIFI_MANAGER] init success\n"); + + return 0; +} + + +int wifi_manager_connect( + const char *ssid, + const char *password +) +{ + size_t ssid_len; + size_t password_len; + int ret; + + if (!wifi_manager_status_data.initialized) { + return -1; + } + + if (!ssid || !password) { + return -2; + } + + ssid_len = strlen(ssid); + password_len = strlen(password); + + if (ssid_len == 0 || ssid_len > 32) { + APP_LOG( + "[WIFI_MANAGER] connect failed: invalid ssid len=%u\n", + (unsigned int)ssid_len + ); + return -3; + } + + if (password_len > 63) { + APP_LOG( + "[WIFI_MANAGER] connect failed: invalid password len=%u\n", + (unsigned int)password_len + ); + return -4; + } + + memset( + wifi_manager_target_ssid, + 0, + sizeof(wifi_manager_target_ssid) + ); + + memset( + wifi_manager_target_password, + 0, + sizeof(wifi_manager_target_password) + ); + + memcpy( + wifi_manager_target_ssid, + ssid, + ssid_len + ); + + memcpy( + wifi_manager_target_password, + password, + password_len + ); + + wifi_manager_target_valid = 1; + + wifi_manager_status_data.connecting = 1; + wifi_manager_status_data.sta_associated = 0; + wifi_manager_status_data.network_ready = 0; + + /* + * 第一次连接: + * 先保存目标凭据,再启动 Wi-Fi。 + * + * wifi_on() 过程中会产生 MODULE_INIT, + * callback 在该阶段完成默认 STA 配置。 + */ + if (!wifi_is_on()) { + ret = wifi_on(); + + if (ret != 0) { + wifi_manager_status_data.connecting = 0; + + APP_LOG( + "[WIFI_MANAGER] wifi_on failed ret=%d\n", + ret + ); + + return ret; + } + + APP_LOG( + "[WIFI_MANAGER] wifi start/connect submitted ssid=%s\n", + wifi_manager_target_ssid + ); + + return 0; + } + + /* + * Wi-Fi 已经启动后的运行期连接/切换仍使用 wifi_sta。 + */ + ret = wifi_sta_connect( + wifi_manager_target_ssid, + wifi_manager_target_password + ); + + if (ret != 0) { + wifi_manager_status_data.connecting = 0; + + APP_LOG( + "[WIFI_MANAGER] runtime connect request failed ret=%d\n", + ret + ); + + return ret; + } + + APP_LOG( + "[WIFI_MANAGER] runtime connect request submitted ssid=%s\n", + wifi_manager_target_ssid + ); + + return 0; +} + + +int wifi_manager_get_status( + struct wifi_manager_status *out +) +{ + if (!out) { + return -1; + } + + *out = wifi_manager_status_data; + + return 0; +} + + +int wifi_manager_is_sta_associated(void) +{ + return wifi_manager_status_data.sta_associated ? 1 : 0; +} + + +int wifi_manager_is_network_ready(void) +{ + return wifi_manager_status_data.network_ready ? 1 : 0; +} \ No newline at end of file diff --git a/wifi/wifi_manager.h b/wifi/wifi_manager.h new file mode 100644 index 0000000..a33fe69 --- /dev/null +++ b/wifi/wifi_manager.h @@ -0,0 +1,80 @@ +#ifndef WIFI_MANAGER_H +#define WIFI_MANAGER_H + +#include "system/includes.h" + +/* + * wifi_manager + * + * 职责: + * 1. 注册并直接处理 AC79NN SDK Wi-Fi 事件 + * 2. 维护 Wi-Fi 业务状态 + * 3. 管理 Wi-Fi 模块启动时机 + * 4. 启动阶段配置目标 STA 默认模式 + * 5. Wi-Fi 已启动后调用 wifi_sta 切换/连接指定 STA + * + * 当前不负责: + * - SSID / password 持久化 + * - 自动重连 + * - BLE 配网 + * - MQTT + * - 雷达业务 + */ + +struct wifi_manager_status { + u8 initialized; //管理层:清零WiFi状态值、ssid和password + // 并注册回调函数 + u8 module_initialized; //驱动层 + u8 module_started; + + u8 sta_started; + u8 connecting; + u8 sta_associated; + u8 network_ready; +}; + +/* + * 初始化 manager 本身: + * - 检查 Wi-Fi 尚未被其他代码启动 + * - 注册 SDK Wi-Fi callback + * - 初始化 manager 软件状态 + * + * 注意: + * 本函数不调用 wifi_on()。 + * 第一次实际启动 Wi-Fi 由 wifi_manager_connect() 完成, + * 这样 manager 可以在 WIFI_EVENT_MODULE_INIT 阶段 + * 先把本次目标 SSID/password 配成启动默认 STA。 + */ +int wifi_manager_init(void); + +/* + * 请求连接指定 STA 网络。 + * + * 第一次调用且 Wi-Fi 还未启动: + * 保存目标凭据 -> wifi_on() + * -> MODULE_INIT 中配置强制 STA 默认模式 + * -> SDK 自动进入 STA 并连接目标网络 + * + * Wi-Fi 已经启动后再次调用: + * 通过 wifi_sta_connect() 发起运行期 STA 连接/切换。 + * + * return == 0 只表示请求已接受, + * 真正可联网必须以 network_ready == 1 为准。 + */ +int wifi_manager_connect( + const char *ssid, + const char *password +); + +/* 获取当前 Wi-Fi 状态快照。 */ +int wifi_manager_get_status( + struct wifi_manager_status *out +); + +/* 只表示 802.11 已完成 STA -> AP 关联。 */ +int wifi_manager_is_sta_associated(void); + +/* DHCP 成功后才返回 1;MQTT/TCP 应以此为准。 */ +int wifi_manager_is_network_ready(void); + +#endif \ No newline at end of file diff --git a/wifi/wifi_sta.c b/wifi/wifi_sta.c new file mode 100644 index 0000000..7e318cf --- /dev/null +++ b/wifi/wifi_sta.c @@ -0,0 +1,71 @@ +#include "wifi_sta.h" + +#include "system/includes.h" +#include "app_log.h" +#include +#include "wifi/wifi_connect.h" + +#define WIFI_STA_CONNECT_TIMEOUT_SEC 30 + +int wifi_sta_configure(void) +{ + /* 1. 设置STA连接超时 */ + wifi_set_sta_connect_timeout(WIFI_STA_CONNECT_TIMEOUT_SEC); + + /* 2.设置 STA非阻塞连接 */ + wifi_set_connect_sta_block(0); + + APP_LOG( + "[WIFI_STA] configure success timeout=%u sec block=0\n", + WIFI_STA_CONNECT_TIMEOUT_SEC + ); + + return 0; +} + + +int wifi_sta_connect(const char *ssid,const char *password) +{ + u32 ssid_len; + u32 password_len; + int ret; + + if (!ssid || !password) { + return -1; + } + + ssid_len = (u32)strlen(ssid); + password_len = (u32)strlen(password); + + + if (ssid_len == 0 || + ssid_len > 32) { + + return -2; + } + + + if (password_len > 63) { + return -3; + } + + /* + * 手动连接指定 SSID 时, + * 不启用 SDK 的“从已保存网络里选择最佳 SSID”策略。 + */ + wifi_set_sta_connect_best_ssid(0); + + /* + * wifi_enter_sta_mode() 只是提交 STA 连接请求。 + * ret == 0 也不能理解为已经联网。 + */ + ret = wifi_enter_sta_mode((char *)ssid,(char *)password); + + APP_LOG( + "[WIFI_STA] connect request ssid=%s ret=%d\n", + ssid, + ret + ); + + return ret; +} \ No newline at end of file diff --git a/wifi/wifi_sta.h b/wifi/wifi_sta.h new file mode 100644 index 0000000..9588cf2 --- /dev/null +++ b/wifi/wifi_sta.h @@ -0,0 +1,15 @@ +#ifndef WIFI_STA_H +#define WIFI_STA_H + +/* 配置 STA */ +int wifi_sta_configure(void); + + +/*ssid: 1~32 字节 password: 0~63 字节 + * return: + * 0 已成功提交连接请求,不代表已经联网成功 + * <0 参数错误或 SDK 调用失败 + */ +int wifi_sta_connect(const char *ssid, const char *password); + +#endif \ No newline at end of file

    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 Qr5Pc>Ho`n`g8*Lt2Wdsn5C8xG literal 0 HcmV?d00001 diff --git a/board/wl82/objs/apps/common/system/init.c.d b/board/wl82/objs/apps/common/system/init.c.d new file mode 100644 index 0000000..5d39998 --- /dev/null +++ b/board/wl82/objs/apps/common/system/init.c.d @@ -0,0 +1,115 @@ +objs/apps/common/system/init.c.o: ../../../../apps/common/system/init.c \ + ../../../../apps/JL-AIBT-SoundBox/app\app_config.h \ + ../../../../include_lib/driver/cpu/wl82\asm/includes.h \ + ../../../../include_lib/driver/cpu/wl82\asm/audio.h \ + ../../../../include_lib/system/generic\typedef.h \ + ../../../../include_lib/driver/cpu/wl82\asm/cpu.h \ + ../../../../include_lib/driver/cpu/wl82\asm/WL82.h \ + ../../../../include_lib/driver/cpu/wl82\asm/csfr.h \ + ../../../../include_lib/driver/cpu/wl82\asm/irq.h \ + ../../../../include_lib/driver/cpu/wl82\asm/hwi.h \ + ../../../../include_lib/system\generic/typedef.h \ + ../../../../include_lib/system\generic/printf.h \ + ../../../../include_lib\system/generic/log.h \ + ../../../../include_lib/system\generic/errno-base.h \ + ../../../../include_lib/c++/include\string.h \ + ../../../../include_lib/c++/include\__config \ + ../../../../include_lib/newlib/include\strings.h \ + ../../../../include_lib/newlib/include\sys/types.h \ + ../../../../include_lib/newlib/include\sys/_stdint.h \ + ../../../../include_lib/c++/include\stddef.h \ + ../../../../include_lib/newlib/include\machine/types.h \ + ../../../../include_lib\system/malloc.h \ + ../../../../include_lib/driver/cpu/wl82\asm/ladc.h \ + ../../../../include_lib/driver/cpu/wl82\asm/dac.h \ + ../../../../include_lib/driver/cpu/wl82\asm/iis.h \ + ../../../../include_lib/driver/cpu/wl82\asm/plnk.h \ + ../../../../include_lib/driver/cpu/wl82\asm/src.h \ + ../../../../include_lib/system\generic/circular_buf.h \ + ../../../../include_lib\system/spinlock.h \ + ../../../../include_lib/driver/cpu/wl82\asm/spdif.h \ + ../../../../include_lib/driver/cpu/wl82\asm/adc_api.h \ + ../../../../include_lib/driver/cpu/wl82\asm/cache.h \ + ../../../../include_lib/driver/cpu/wl82\asm/dma.h \ + ../../../../include_lib/driver/cpu/wl82\asm/debug.h \ + ../../../../include_lib/driver/cpu/wl82\asm/gpio.h \ + ../../../../include_lib/driver/cpu/wl82\asm/iic.h \ + ../../../../include_lib/driver/cpu/wl82\asm/lock.h \ + ../../../../include_lib/driver/cpu/wl82\asm/sdmmc.h \ + ../../../../include_lib/driver\device/device.h \ + ../../../../include_lib/system\generic/list.h \ + ../../../../include_lib/system\generic/atomic.h \ + ../../../../include_lib/system/generic/cpu.h \ + ../../../../include_lib/system/generic/irq.h \ + ../../../../include_lib/driver\device/ioctl_cmds.h \ + ../../../../include_lib/driver/device\sdio/sdmmc.h \ + ../../../../include_lib/system\generic/ioctl.h \ + ../../../../include_lib/driver/cpu/wl82\asm/spiflash.h \ + ../../../../include_lib/driver\device/spiflash.h \ + ../../../../include_lib\system/task.h \ + ../../../../include_lib/system/os/os_api.h \ + ../../../../include_lib/system\os/os_cpu.h \ + ../../../../include_lib/system\generic/jiffies.h \ + ../../../../include_lib/system\os/os_error.h \ + ../../../../include_lib/system\os/os_type.h \ + ../../../../include_lib/system/os/FreeRTOS/FreeRTOS.h \ + ../../../../include_lib/system/os/FreeRTOS/FreeRTOSConfig.h \ + ../../../../include_lib/system/os/FreeRTOS/pi32v2/portmacro.h \ + ../../../../include_lib/c++/include\stdint.h \ + ../../../../include_lib/system/os/FreeRTOS/projdefs.h \ + ../../../../include_lib/system/os/FreeRTOS/portable.h \ + ../../../../include_lib/system/os/FreeRTOS/deprecated_definitions.h \ + ../../../../include_lib/system/os/FreeRTOS/mpu_wrappers.h \ + ../../../../include_lib/system/os/FreeRTOS/semphr.h \ + ../../../../include_lib/system/os/FreeRTOS/queue.h \ + ../../../../include_lib/system/os/FreeRTOS/task.h \ + ../../../../include_lib/system/os/FreeRTOS/list.h \ + ../../../../include_lib/system/os/FreeRTOS/event_groups.h \ + ../../../../include_lib/system/os/FreeRTOS/timers.h \ + ../../../../include_lib/driver/cpu/wl82\asm/startup.h \ + ../../../../include_lib/driver/cpu/wl82\asm/uart.h \ + ../../../../include_lib/driver\device/uart.h \ + ../../../../include_lib/driver/cpu/wl82\asm/imc.h \ + ../../../../include_lib/driver/cpu/wl82\asm/isc.h \ + ../../../../include_lib/utils\fs/fs.h \ + ../../../../include_lib\system/sys_time.h \ + ../../../../include_lib/utils\fs/fs_file_name.h \ + ../../../../include_lib/utils\fs/sdfile.h \ + ../../../../include_lib/driver/cpu/wl82\asm/isp_dev.h \ + ../../../../include_lib/driver/cpu/wl82\asm/device_drive.h \ + ../../../../include_lib/driver/cpu/wl82\asm/isp_alg.h \ + ../../../../include_lib/driver/cpu/wl82\asm/rtc.h \ + ../../../../include_lib/driver/cpu/wl82\asm/clock.h \ + ../../../../include_lib/driver/cpu/wl82\asm/crc16.h \ + ../../../../include_lib/driver/cpu/wl82\asm/spi.h \ + ../../../../include_lib/driver/cpu/wl82\asm/imd.h \ + ../../../../include_lib/driver/device\video/fb.h \ + ../../../../include_lib/driver/cpu/wl82\asm/imr.h \ + ../../../../include_lib/driver/cpu/wl82\asm/port_waked_up.h \ + ../../../../include_lib/driver/cpu/wl82\asm/image_enc.h \ + ../../../../include_lib/driver/device\video/video.h \ + ../../../../include_lib/driver/device\video/video_ioctl.h \ + ../../../../include_lib/system\generic/lbuf.h \ + ../../../../include_lib/driver/cpu/wl82\asm/jpeg_codec.h \ + ../../../../include_lib/driver/cpu/wl82\asm/jpeg_encoder.h \ + ../../../../include_lib/driver/cpu/wl82\asm/jpeg_abr.h \ + ../../../../include_lib/driver/cpu/wl82\asm/imb_driver.h \ + ../../../../include_lib/driver/cpu/wl82\asm/uvc_device.h \ + ../../../../include_lib/driver/device\video/camera.h \ + ../../../../include_lib/driver/cpu/wl82\asm/bus_device.h \ + ../../../../include_lib/driver/cpu/wl82\asm/pap.h \ + ../../../../include_lib/driver/cpu/wl82\asm/emi.h \ + ../../../../include_lib/driver\device/gpio.h \ + ../../../../include_lib/driver/cpu/wl82\asm/power_interface.h \ + ../../../../include_lib/driver/cpu/wl82\asm/p33.h \ + ../../../../include_lib/driver/cpu/wl82\asm/pwm.h \ + ../../../../include_lib/driver/cpu/wl82\asm/pwm_led.h \ + ../../../../include_lib/driver/cpu/wl82\asm/wdt.h \ + ../../../../include_lib/driver/cpu/wl82\asm/jpeg_decoder.h \ + ../../../../include_lib\system/init.h \ + ../../../../include_lib/system\app_core.h \ + ../../../../include_lib\utils/event/event.h \ + ../../../../include_lib/system/generic\version.h \ + ../../../../include_lib\system/timer.h \ + ../../../../include_lib/newlib/include\unistd.h \ + ../../../../include_lib/newlib/include\sys/unistd.h diff --git a/board/wl82/objs/apps/common/system/init.c.o b/board/wl82/objs/apps/common/system/init.c.o new file mode 100644 index 0000000000000000000000000000000000000000..3aec199b14c1bb71fa05f45f5d19fce5ed7f8705 GIT binary patch literal 18932 zcmeHvdt6gjw*NjPBmqMb9@+p&I3POI`Unp(2$X~*2nrem9jtapcvw&#;UR*Zu_q)F zbg)Ki`%7PQgJoK0YG-0=9XjouNeCjf)JZMZpi zTf#_XR{O6}ctYk_HqR2guveqVH*|~|KRv*V&tl~Z5wbH8igYi&eHT826a`q@^jdaP zv-$A~#_r?nCM~^&8X2FjdVVb9fNh|6x zh@llVaM(>&b3NiT#hF{I=41*MHP>aE;X7H%ZicBywgY#*(kVhc;*UFn1{9K>PCV7f zsQ7|Ye6>?F)){opAimHkMtdygJ#lQU-n<)jVlnG0%&^JkW^<#S4fQP*#(J%}vBI1T z9rWg8t+}291afvao0GHIyQOBJ`hNQ#9u;4bi?4NxN9g@yLT2wA57(RZ`X3vvm0TDV z4R?zAJA)=+!=pe>&;TL1WE1xoByK`#)@y-eHbw6osL)gFX4sPK`^>yzko4$87lC|* zKx%DPE%TW6spanSN6@jsd!`>sGk-{+v$O2aR*hx=f5Puvk zx;jmQ))+m7H49~sO|9Fw*VHhff*O-chD^Gg6K+ zQce*mUB>h-C@Uielxh8p^izfuhcfb%Qs!o?Mpp#9aVh^(Bp9>sZV7mwIC!7BS(5_Z z=MG-AlsD?YtyGGMkvgDELCn;nuCxJVq{EnY)Ftb3rNNw5MjA|IVQ6vZTN)l3<$dX9 zT_O3SZame*1n=_^-lT?i)6M$S!Ta3JL+Sm>^rH-Ew<{HP(yx@AQo<%-!>hX)=|_!e zrxYo6Ji@P2=5lGj`-DX-l&{^ z6x?CyU$`p$-@~SeW-vva``&Xoz80ofqNSFi?5P!nLyRPSbZ?*wO zy2&LwL9^l=*tSdNcBS?!BiohfR$~gL0@gAqyWBfM(RYTzUiU?l;8YJW^g466r~sc=AG|Co^3JO8JS z&DF6tQ@#W3dIE7BM65OfyPi?;_0FK-PRWo#JYtZ5{p`nnL^ME}&~1WSwhz(2yA4$(*_xC7CQPsE-@%5LG9@l=#~H+Te_x!z(s{IOGfi4vcS#sp$_Mv8}>q95}?yN;Wiz?H-PX+mc091nMhdz?S!!i+81 z<_5jFo-`-B@rHL>J>L9YS3)~c{c^Tzrj?9|0Ng`Isa3VU#;PdTX=s% zZe!XYI7%b-RzG6CP8m|)F{Yj(z_`h*9^a%`-EB0vlx=uGN?oE^KuHQ~c_F0QN%K6o|&6MVH|0Aj!vYgbfl5L2aU;Xz?X5u%qJP&LFULJwPCR*a5K*=zd`T z*xYH%dny3-!~SVPX6>9FJ{&C?{;}a!bEAyCn~qJuCP1k2Baj}bh!%|y64=uD?=iEz z1x%mNybHnyFkfJGA^d?jsDe>#HnMQIf1++|Ol-Wb+!&yODZt^wtayR8OWjIY z_m9~kDgSdl?>Y@KzX2dR@nhJG081isFaTPozVQ7J<`&p?DensiI!OMPV3q;L0-$xX zKGE>6fT;m14QtsT*cq8^qnt8_G9BHN&H?Ixx*>e{3WH(3BLaL1Sg;|b2&vM67Klf{ zI^ECFh2Qo@b~S;zj4 zRgADC3!X$vBRf9BPi$Kdsx%UJa2W|5r-=Pt+zv_@WC}x%*$r0a2;|6eAdkhv`LR}Q zCYdW>m9%Pvp{=EvR4(U8fFU8eXfY=@AzHea`99OxvY6>MkdUFLMP7!e=2KnztZs{7tDil}(Q1pWu zOa0*_^-<~H@2*JCenZyU>PK0bas3Y}6dFHO?5_!VVT`D3erFsfk`Qv@OsA_O>o&#l zZm!h|iu?}tMpUR4C{p{Es_G={&IYDU!^%sqSf;8I`oF1mbN8(4tiE=t?S@n9=Iw!R#0LOeZ(}!*>}m_I&R1xXvuEnHyg82}Jjm?T zY3UAb)~JmQI2MLK6tT)~-mS$x3Lr!MZGRka6ny~xWJsCXtpKE!4$u;CjmZ`GZqWFs zcnAP;v>3elUO?`h;=MZ2$AC=~pBcgu%DUPGCyfDZTeBg134cve7d0;jAvw_T%L%r& zNxBaOIuN4Z*?_1aC#jUh5(vRxVXLfTVQ8N&>_tR%h9c=vKh(AnIW&PtxRyZ52az_; zA8~&TjbYP`DZ9jvBkO0@i zM>-bFm_4c;2K&Q2_`_}Khbf?0j-T4nN)VHRW)eRsCGp750R=n}6@3V1*Wj-3aah)X zlFFduSx(84(~AQ~yvyM+o=w7X@&K3sDqy)@glsTIj-T4npciza@B?o8;hiKQKL>R3 z?j#&JZ199X4h!24X%LpE&rRfBX91?>zU}XOs2c zKHc=n=f6AI%QE!59E{Kw5~ahy1c_A?9-M3G2w1$PkEvXeg$^9!1a@){Jn)3A=_A*j zsB7EOhwpYC8KsL4L-D|;P~1^~i=SM^#VOoD@*hw<_jZ!)odU*=1Y9%zC?jxFvh9%% z@W|U~P_u0(BU?<^827 z!IpOI8<&>-;fp&L(g&mS){e6GMR9j!KUIK-Da99J=kL|r27aFuBD51|PvlUd-cix^ zFe1HODKoh`G9gJ1(Xh3S3n7sw+n31A1SAVMTC`p2Pj@p$Lh2C`s1TD4GH=*Gr3VLxm8KQ?Con*UoKaM^jusg+o^kEuK z?oNck1;yhP>{U3m&t6603^xvOAR}_yAEw<+nTsJ|AOx%p_X&ojfcvhG@V>(7VMd8J z$3tg&hIJxHhtRov)-EM)2vFb} zL1=EYnZwT)@UPRsBIF$}1FWNC_e3&IJnY1Y_6rcN7$n0ZIOTthkZc#`%OGbA;qQPZ z)=LQB`et^sH9vRK!p9tt?4XlR(Ku(bmyQ(%qQw(BR^dLQ3<6ENG94H))sr@+Ol^lp zSBL94c8d_FCF&5u=T8bYs6>)YD%-i?DdDk}!}7lV{)!k4CoJJt!tm%d{g(VG|IOAf z@p&lMhlEAOu9?(aVB{2Zk=b44Tgu}1x60nX8ONWL{bkoCfjaNslJY)G$Qx9tFJ4v^ zuFMN7)D`BlT!&c)N_q|MrHlsE!AaGV0tIvV@)gs6I=#MOMQLqyb#2XxhL(oL^6G7s zHIH))(vRYj>2FHg4O#dl{}MR^-$c78j`2EvqlDD%UlX)3xi@Dp^8lm9FM7vZ=hjp|ZAy zOj<5o9#2kh9txE;rB%Di%8RQiOMLsUZCFv;P+VSLUt7PtVnadk`VGbEjT@m*xN(yj ze&C^4y;;4!u()uG##fSU9+K}uz3BZ+}vVK;dGs65U!owYi3aXCiTWG zvnI(|zgdx+qblB@DfA8~R1~Z${;49TFlYT5-yAAMp@LotDhhM*)EhS8-nc~X8Ajye zXFPKKhQeZXQBHwxI`4)QdFtZA4I7GcH%!l(m8)1&y#787o_X%mprL!uB988<+^AL* zs=YMjWo{@c&hn6-KT}ZWX$rT%7W2Jq#{2`G=Vxxpf?CbS9N@oq)1C)f7RjG4*Lc@gP#~f8I7S?pLhwrdZ-iD1pzcLdy0@r9RsdDj-=trLv@^aR1 zDpVKTTV0@5ZdkASUUgnhZf=gR?;{|JV(*lAI|Z8xXnnyn;6AhKW^Z$&x?mG*Xm&R& zLho?33dZIE-M$@a6dSQ*XIEwBuESfKT~(0t2<8K>0^+kas@27_dU?e&dw>R-@0mjb z?e|t;J-nw*p;BQTq?fvn%6PZnnad;f!s0w&a#8VypRS))U#$PLRD+h~^g)}WV6@gw zb7Rd$IEBS@9iAK?8{dhYuEgxzsKT!HyJWj+8Y&;FDK8^SD|GeV zofMbWH10}Fm~MhS?x@_py|TQasuqmy?0VI1UHx`)v&Rgp%1d@VM&{IPul3c`R@YSO zYa7dJ8tM59Dy#KX<)m_j@}Y;w!c2vtbXR>nG#0~ViYv=1%YX=7RdHo~U2$1ugRZ2i ze5Rtj20w4F(mjUSR$@R3ezH|V^>8wS0~d1k#dVO!70Wuvu$Q3L3bl1m>%RmleghT9 zq2eU2cxa%HdqW?Hc5Zu(0I1x-3@Ui2yN$p|_Dw)c(#XVK;}Ue@9pkApaF7uUu^yLvR6DI)FItvF;X>6n61KU<)FC3v|aQ(h${*O6MycwrBk|wsgJ$|GwiaQrr0_I+wg#q;}B1a(@8_ zNi~GP4|OCWdHi|A>60DWV zqlydABM&OpK!sKVUnN@jD$~Q)b_%{KEbz6%247Wn_^NThm);Fu^&{}rI00Wxh;^BZ zBqpbfVPls_&!Y*a5Z2o($JKF1p_&Zb4%L>PaHxKn!qrQ2laP?BS z=4FucYM|QP6A9I)5gV$P_u}63>hat?BB=h899PQ*ac^D|p4%mc>MInkUOk3;^Y-Am zT@t9i?!eV)lejm3FP_^K1=U}pK&XD$)C0Zw$MD>)IH>+kj;pheLNyukveXzysj}O9 zvn{F|Yj2KCwf1=LTDxjpckeofD!0Ek*R9GM>dhNbt-sp4enPe3cJBsCUDST2$fDk2 zJ+sB8e&qO>N9^jY-DkEs)Z6;cY;&t09Xj*qi27$&&-`pcU3~jYF_l%(!3+K`eQ^hB(m*xrun{OyKW2(ckcaf-b-Jb~#C*eic{i^sAD|t8iOryj%=F{h;Vb z8q7%g-AKfm)BzT#xl}2Syd^~8Za*P93uE5*tIDOSXN?)A$Gnd?u*(`C1on$+C>Z%i zOvoX^Vpv8I`rKZ$3mP1e_>0Ss4QI**q!eR$yNm0TK1vRt0Rc)3_LE8+T*LAK=~!k< zhl@+33*FB{HwYyDWiM;(3YOai`?6RH@-L1Uu60ZBmAg z_ZbD(bPo_ijGbKQ2&ECmPC+8`3n)!8c5)KAuW4b3OB)5_8-h`Wy-%M)v>Sx&LWgBmdWWA7W^-FOR;-Up*ZxL(QqR&`kjt>a2z7YjBLSYTNQO-^X zvD&r`4UJ#g*57-6Ti>;;fRX5h$;odg|DV&VUSEAW;eo`{_BY9Q|vuOdMmsr;`REoGvVF4mWI;Wn(efs0>4$Gt1d^c9yhGK$aUxyT@@*@5=z6W3YM3!pd4YqVx8>W?(%G1_Af!^R|3I>FN z4LwngcH$EgDQy0OlyfG&RGz&b8ks#Egkt^_!7U71i+FMtjGsTj76=#!P6pb_)Mj8B z@kd7@6al}XOhp>b;b7j-G_!jBFpr9HP*YRuqciA421SApFrDZIT0mO~cZ3#t+M|aK z0c{g(RLM(ZnKoaYwH`TVy_L`#)}!Ts_rpAj4xV1brg@I@wx0D>4De?Nymx$YwXU)T z%06D#k$jSb&B7I_@>V_0WCQFZ4zW`SS=>|71Gpe6)uwjuQo_EUv zSIE4_J^BV}?c=>aez&t2W4F1O1%;Yg!#3wLc8;+f5h+TE+?EJNIvc0ThKiHLHz!L<0gE$I*8zTPeP9-7UVg!ebmUaB^fC2KuW26Vn8^~ z)*6V`0ETvm61GNLr6`NbS;-$yQd3 z_Run8u>I^aqxNqwTWLN%3ctRyO7n5>ALpY8#(H$fcQNmW7B*r1wP7? zr}^k%UEK4kD+XqQso(PX>&_v*c60Cqd*{(0(ZCYFyV{^Pa*~y_8B>p+%He?(PP~9QvqKyI5>Ab!+Q#N-xdwLS7P21C%>EK{b8E- zD*Aj%p!^T&@X#~Sjpx;D0`g`OiV)uO7Z(8U7pA%4l?X;UWsr^gg*y~0D8rF1d<~gK zIaA;T#CI6NUV{t<#^sQF&zV^0lVzZatpQ_!(Y&sqp}fAaxD1B`__@Bkp}Z0L`Rv19 zun%B{5JgImJPkd|4(S)fC|_0{lV?!8rw_D@9NGkE`WwR0R%KZu7yy=dVY53n-xlRK zK&UcRswJxezhN97)?ejoA0TeCtC*lM08$pRdTE;g=Y5t0`?bhU6oO`2oxcs8=oo|(c8L^f9K@Wgm{DmVP!7rWPfL~ zS;1N#w-V_SYy3I6La=JR0mrK1nu*OU20ibD@*0=YeS-ZyDFhz$gv{>>?a07IAHdUhkfOM&K?qe4jUTD8jZRe zzfKC>-papy7P@g^H#K1kZ$=UE_#Ar9Z7bFtd~RJ>cN8ZtmA+>$`toGC_QdU>1o?$0 zpd);ABtm8I>pRC7y}5n2GhKA(^MzSmwdu#D+UXfe(q%$%uiI8*Ha zy1Zu!$v}DcMf|Xje_+=9_yWi?Khq!M3(x%Jy85aXdKK@v4SEaKu*_Yf-(U2@Yb1Hr zpzRby)Tproad(k9^bH3*(sIZ2c-QvBeK3^ptrwQVC$r%i$48S-7k&@A(47rFw4Jzt zAq4Rt$VR$x20}OhQF1xgi^t~Tqgb$Wq09oBE-a_QqjKVD)^Ggdmfq~DWzFS{8?$FZJs2)C+k#!I|6E{DsBY3T;1@PuBL_5*8*NHuZQ_V zO{sC_fF7~c#T@0G*KH2&;_MvBihq@}(X_JaCF>^UgFO*%<^ymJ(;fUUZu@-20efFX zm``GV6g)*92MwW-pCuHWvW>H|0}n4Wt<1v1AL@yCDgT7<5!HstvdzISaCW|cTeq23 zuE(t_dLmwd){?Oe-$ARDvvUx)mYG)Wz^#dR=@Y^oU4?7QHwPc(>>R?aRo;!Q>WMfF zt@Wx+h0tp8ZoAR6Qjf=`_C$0;>mKH2Ewlnr9cL3?<^0^V^4v>X;;H>72F|gFIE?*G z0f7BCsxpd<%hxVMl)~Q;<%gD*P#_O7-2oiZ1~ZE8C>9557Q=%hh6O+y4KVQ;?OWt` zV4S_PqwiS=ZI=hHFUu&poOGUvsJi{ym~WjCZ`Q$(j&-JxkN6iMT|yx3wirwQUOTJi z1uzenL!#AF#+8nj0Dc!ix&>8nhRZ@?@u7H)Xa#6c3u=e=HU?lZZ3Lzb>bKf*o;&{T zbM~C)d*5B|rwP8uX$p26u(#QNiGbmzAV$0OtgK2n-n+g}_W)t%?Bu@9(W;A#mKM^$ zjZP@rkrcR*IiyCw_nzf``rwO#reM@z?}PC_Gp%f2eXw-_(G*N|*t4K!JIweflU#Tr zdOQY2=nle+1Du_LO_Bcbe&aDzq%H_*hB!MpZ*$O^qEeU^M56jAOK}jr&5^GuS_m~D z23W}LS?CbGP!lZFbFfte3&~;Yn#=iAjQrPYhy$RD4Dn*lZVMlj@+wx!+gK@8C9Qh) z!gxiu@hK}gOsvfnT&EU6H+KkhYu_KxDjsq%J8i(x#Nb_;F38#lNjaxg0q+Gr3%-G0 zqWJ=TT<_y@B8&N`MRCB35|9B0ET3}(>>z+211zLzTCoL#YTOPmk>i-7k;D1#`*&$WXekjUelph zj#$8U)wpr{oJlKwRGQ#>J-c<*Fvj}<&X6b;v zPT^;%*JnV$uFoD_2xP;4ekHx@VKmo8ommg;D>&J0m3a9*~czI_woci{M~5qbE7AkjUb; z|Ags8fs476IG`6J%+vW@fl}|xXkI;@dBoX`XRe+-^E%sfUr%T~@xD;-hx{(i%-Dx; z{}IESvEBI=j&z+H#)8ERlxphOCmgZoy^5k(+K&~*!oG}G?e>afBujx6#c~)F#SrQL zDk#eNPfwZDJo?&8?L=zMkG zBi2O}={SJzNm+Oh*-x|V-zX%05bXC}uO1D!lVU zs7>c{wlb0WG&fiKldY`mlEcfC^M~GjCi*FD*?T0*@M2Z?fc)6uWv&Qj)9dBUjDR(# zxw{3>LC24ke3W2oox~BC2Q!AluMaaqc;>@ZY@D|!FQ6~-m5?8+tgkL;tkoAZ>Kb=7 z_&oP2z*^0r(>WXT8*GSP00_nGy)OpJrPuQ0>cHV6W(U&bGs52glo=52AcT{Iu)~-N z|HO&&3zDC7{%K~PY(V)iqyWdkk>T9kY`p)ITm4osQbF;UZUnSHKsQo)n|(hKf?t{ijD)exV~BX+Gl#{V|o zFgI>ydgA8ab{QTXKf6>(f&)|iHump!SYpo68b50%6pJt_I=;3w>f88rB-r9tH;&Wd zq7%FQ0Kc3|)DMrd;dH$fLI;-k4M$HN_kTWH+o7*7Zw+uA6^4M5qAmSInZ+R2c`~(-GyX>2g`O7Z($p_ z;BEX(J8@v9{;4Up#%TipF|55ya91%^7%bF>vhX;Zq##uA+*mLLNemAx5wNe|Ls)j5 zcIMtg=y?BDl-$1!WU%X{J8-EX5a~c@gYOGrb`_reKXUI9+cW^)bgMqxkHTTjrh*qZ zv?)Y5T-nNWz;^Sf@omd?FXp4|I2I`>Z7E-?S2tIj;( z`#ev6j{3K# zt!<8kL(3S!cC4u${v^Y%k3Y2j9=$s!seZ5ig1h$Fa5^tUze!PpU!j0`OnwV|ym$$C zAz$s~g*(d8tr|L1tUY+45)wbj%&C*n?n42YozppT&^6QNVc*W^nu6A{1@Fw(wO>Cq z?$Nd0&sE3HAa5|`j5t|P#hENs+Tm;>6@5=LJ~uCUYCVkc-qU#VlDB8_k~Coa zeqQo6zNew{lKL0By!SNS=ffx2TIZa5nzl$L{7X*=1$GVEG5}-BIor9MzvkR#0GhT! z*cC4W%=y=x?-k3W-_L5?^Yat!oG zMZ-sj3TcR!2c(Uo05quZK`8eRV=Pt?Di|Cnie zarPM}X9#d*QH)PkbtFQAz^08nK}=a|mxxsLk7cLG+bx|P{w7Yi*_ad>tR76flWojp z<;S0wFY7&&)E|r9yU8{glAik@r*0}ESbgxN1%C}Sn{rw|3~PHmm+G3zRH4w$$ceBI z@2-G<Zk_a_*X> zs>y{x2_L;Xnw@cheCp!(0Zqu_JHK3r-aDjnZ%BeU{unb%Eb~m7@d0vX9?x2?j!7%L zlZY-1IS!L*gW$-yG^6J3pJjgbsca^Ujr+4ZcfpaRPu_T7-Xig0jUazemgVN~H{A{X zx2ZFJ!X=rH2YV;1R=v3C*-5j5jo%e;<&sF#Il&_c>5-P>|54$9c}GCwzF*l)G-@vX8o+b&N-OWGG{GqZRcFKzUR3Cs@Avf zXaB$X#GB{GdCqgrdCv1a=Ugl@2hS}{LP&-Xs!=j?S8aNG{^buIxuclK#zQDwiO?qs zgyP&Zl0ZKZ{!y+u`%J^qRdP*s-s424a-K|)Vvs&o!)sSciXM+E8q#DZ85P>qvDr1< zCEg_3d{_5#C?&gStVHEam@{NCt#|c|dOmtonst|ay%wQLV4ND6fAt&q5Dbd(?Xh#z zPN%TTMz-})J2}efr`m0#Ba>>+q?%E8lap%q3JxvR!3jUKk?l^Q!%o4h187R9T_w;K za(#l+OLf@DW?sm(33fl#g2L&#(^kVVf*wxSUr5&tx%9^Z@#E>blP>)kPB-Av!z^l6 zP&<8s11WZ93hh22mxoP-rV;_3xeVn5Rx}mF#1{fOG@w5hh!2|#0|CrxWK@4Lq#qCH z#scxjT>6s%J?iiZ9hnqo7urA)uVA+cAf(eNwAd*aZ?}0IoX}zua)H1u*^{wPTJE}j!>MsWLBcl9Rk?SSL%k6^Q{(Z|i!^u(I*??|15Pt;(9tCyc z!-V0CUq9e7L*NsoBz>(>Q*KVixAdM&f zA4OkdFGJd3anE4Eu&1zh&=?^L#>}b1g9WEN1zvNW*PQA#=btv`L;FyuaL7{_F{k>- z!b7HlPI9@Q1>8r3D3MLx5!f3UEZWc$r| z;laW~MB%VGug9Dp2A;0Gpcz=@p$kCFs6RrQ%M+>wPW8D)^$D;->QB9@%dGk%THRn# zUGl0vK@m^kDRUn36dVCbJcXU+f?jiKaIoN@ryyd^8#br*k_89N1&3S(M?3|G2$(hc zNcQkx!68%rVNYK8*7A?4K8?sPYgCsRHS9hSk$<95UEx)HUME=qa-vSWUD%xejHjTN z1hH52dJ2z#E?EB5LuRmB{*5ZIYEWSUssA#f`uIEChQN%*p22)Yi?CV6DD;m}3cGX9$x`9zmSk!!Bm|$V~@L*mqxf}!l1taF=VA3$zFTa4) zpIcO4X(+T_4Z4hSs*fUgupy!vW!2-~p2aCR5zuI`z$Y^4AH)Ybt-^N8(|^XkK?TtW z^77jN2RNbaFuqD107pCpw;-1m9N?1-#cPE&uZRqOYUi+!>lFa0+F+K(G%fu?3$$&X z_HL@(AH|KEoz|^8X$8;Mod(zC4Fl==(}DP-08jud)2_<{Ao%bt#uq^=v;Z!NfB^pQ z_!iAD8U%G?>AEw(3K`C&>(9b9gnQ@Lole)EApku40MO(Z78t5sApo-F@E-wSzmMVYdNy5m_WK;eC$t!;HZl4?3?bF| zeNm4$z%>~m3=pPIe812PR8+0;ih!@0vvfxRMdl_sut7!Ewv zfZBc6M>i5emEA7@VmN#hhXX6P)1`D3I$!`@1|TfnI@85Y` zX^tWKQA>ZwCgq41;`e-kU4`V(2lBDMnUFl=nmFRk)s&%U2!vKao&~8K zN_2Arv~sA^@1wQ9=|oR5%9t#ZWq%C$fi6+96{g;o5|7T8p6s-iJR2h!Lwjk246rUc zqdSJ)(j`rtbFdR0=Q{)5q#30>J#n2wr5b-oM`$(7-TXl}Yo4hnA9J&J&sX%0J;tt% zK@VO~_%jr0(;PIk%B(%#b{<)C&h*blx1 zzM4$WT!d(ZII3A$@0B71-%H%%MEv6j@$l7$8Lw#uLK=knJ$ZX_N+7d^?@s2oUiqpi z<|(HpnQK2^B61KDYi4YlhJzi&4mbRP$OMakg5Ku|yea02_;j^Y%0q*Of5`l74B|mF z7I*d(&eC9k#E-Il35{YWJKE3fECL6Z+~_kN8KHwox#4DlV4;COK`*7`QD(FQQ#o=r zx($r@69&e5RaGxP@!pq?H#RT&@OGu}e)ajbU;lIGI~V?*_tx1*j(^eI@y0)Y_Qc0^ z*EViez5l1i4=Zat?C1t5;unJ8KL8%t2A?)1q14+GGym?RQnTbP^r&BR%+JR%el}Kf z0LAppCj6$K(yzt5DSzVLzWI^odt={R^rB^r@BP~q*N)75u6$wWK=o>2L22gex5*v= zk_F-CzfidEdF+GR<~_>(=Z6Q9uCy!~ICiP}A78D0>`m8!5C8gQ$6K3!Nj>%P$5$Mw za~Hq=UW@mL?%8+#m~Yvpx+ujq2)?h~?d8W9MK`5d;7y zM8PH{q!iH%DMwiZcNh>vSI@{qGEZulgmh#%@FE{_oswSMz*Fv!;fg=6M|Zs?Mzokj@X#~MQkZSGd4 zLI;%`J5eRnebnM_qGW3p}mOI~o_&7Ux%)%**oDR@)sr z9;~Zvsj6?g0}oW2R_!RS-cY>y4oBT~psf=}*RI7w)fHKbvKKM`4k;F=>Yma&Osk5@ z@7S=TwQ)<)4rf)(4y$8JRoixBcI|d+<5qfSouhf%jz)UPB4$w*J*^8gwl&snZ{1Q? zy?tBF;w_GCK)ATp-ntkst+F;ZOsaUJZZ=SOa-^l*UbkV>hU&5n<<)D~tz9|Q&dRQs zYHlnppK4Z^*Gx4xth;M^*i^cvdgJPQEmL!rb!Fu@43w^0dv~>^Y~_XxQzR9|#jDm; zTQ-(euUmWLSn0ZrczkNG)Kb2tOl0=&XuYx2n7zn$PiZxjt_fQsvCTDQ`x8tZpVjqGS> z+-Bd=QrFl**V?R(4ci**+v{laV)N~{)8$1b6T0vOMk9n6H{#|f*jzWV%~2$4d!+G+ z3^gu69E1QIkHbfmH5TGw%T*JAD^s4t)G~nQQU^z&G>8<+a^ymYOh)M_Xe5#Lyb?9_ z*u2IR-!5&IrIW`yC9aU32+C*a`@<(xpgA06-Sb)`H*%s%Lv{SuLS$d!5| zRN`fmw(v*{Bov5{BW+?VM6m>w4x#-^sEZODi4c=O7Q#;pl8Yp*%ufg}A(IEQ63A09 zAJoGzO3Y$&j+@@(2?JgeRGJK>DN0rgEO!A*cpnt5MO*AH!V+femCFW$b?1~J#ymph zBuMDkpfaco|HK0on5D$@OCFL6(wXZ2xMYPU-ZUq3M$e_g4Ei8bBQ zkL4Fxl`hlkS#EC(zCmOHLFF^4>`Wl&kVMJ6nCyuquVycMbG^i(&DJ7TjWzl?#E&@mjf;hsPi;^v zR@!~$wu;3t+0=TGxVJ>zB)xGca&$lij(;SGGniau?<1LMD|!RZzTuf-2^NsbJfVW z{VcS~1DuTWOBj?6oeI}_ncrQsRoQ*-;c{XamQ{8YCG)&iOf2q~(#gM4vi8{fF|u&6N4!f4@TOSJRLActt@{GLi^q9<#HToK*geL9l3rOj(?b+r#g z!$bXc>sEUXz(vdTc=3OsFhKGmTdQ#zcrX+=a;n=NYPH*UI9j5OoN9YR>vnrfgQL23 zMmY{QYKX!HjuF*0AlE;FGcF_MX29N4p>MCMobtXH^60D+hxgo-7; zd!=ths7>GnKMbf}ZKz1NT9jswyp(~26(a-IiUi)A#uH0kR15{wL0(;->@r>nY1!8v z<#pFMKPcWos8 zsZA^URS!?d&%Knv2rGP^`ig`@=CrVDnYjEiUjAu>YMWfX94{}t5;8c?&j`#a52!VF zLP}~O`rQcaQu4|wg7B_Xa<5C48`hJWF?4?A1*vgt{C&IxJ2IBIkYDXzBFsb_iDXn^#zLbF+;~vh9UK)^^xULv?BsNhR zN}jJ6xV=;(t@P2)xE7RZ&}JWvE-)r^(&|QigHpmKz_F?lrL1AT0xd7q@VkKEDiC}H z1QT$^C?}yF^@TDclCvqKB*wED-KEsf(hyQ!9{Ch1Kq@!#Ph1&(2@e4%R&@~Ctju1G zlpIzcOo1DZ`z#NACg^zwh|MA#V2@*VoVIrnx4v{XTAV^QmQa9h+Ka4A3!x4--u}| zv0zp}4KEftb{+^FD|_fD&mH(yiLatc7!PAw*Q63|)3g#LN&l5X9teD^#7I<$KS!1L zJ*>h?$gvVpp?Nh{Z+AB-3Vk1LgV4`_&%e!IaH|kbDwuJc-Zs*85e|km2)OZGx(?k~Zo9r{#tX=*bxpZq>CZSv= z4Ip`{~qI1M^eZ?uO1+L^M=8%n9Knpb5&ByQ67>YesugB^!|^hUE5-Ho5WG z?B?mqTVu`Y!rq=HnsCxV6Fi-SiP4gkeFI2+bwmjQEwM$weojz(X-S08_MxhQ&-T_& zx;i^^3zp9)!ycb@6t^ci6>Th zxSon1{6*&1Zo+nn?`s9SxbKVF#rin5OFY=+L4OyV_lUoSn!3mItnILRx4jF$`AWlR zHKp7f4|r#{(RP~9=F;vJS{|F2198S^D;9^IJ8$-+IH$Wr6yO3_97;6Pq&OL6AWn^{ zZzn#c2cqHx4uCi{Dl86z#ToZIro{=)a)=_x@LSz9(M*%JUM-4~Z#yfBV~L962XQXZ zO`W_H!gC=->Bj7)WPFZJR6}FD5uMJzLdeUoN#nutU(PD8X{O)OSIGqz# z?+$ih#nQ%c`z9x9GJ1@avW>$Y2m z-3O1UlfUN+dxw3t^kD{8^NLPt)lX(yd<5KJC*dLVttR)Mmv5 zW_6P|&6Q-nUAAc)#5tgz-45csnnDh!XS5^vgXnh(c61`HYq6FvzdR*Zi+H62vpPkC zM^B9#3fdqr9d4z&%78x`7zfx7+F6aVu+>lI!cY+&I?Yc|Rs>7d^EhxYGc{7rYCRi> zhoLe>2T=l-S=)7B7EWa+b6I}YuaqWc#{Kek#af)5M{`*ges9R#lkDOo&fW1#rODh~ zhW}Z=3-ju)d zH{|c!bpBp*eg3{BeOoktS8Vd%hk@W#1}yYoz#S^w%g9@?dHUGlaxXP+#I!AVbu3~a8cw;Uq6*E(MyZ~sGDt@ zi9Yss;MTKFj3h%`V+p`~{&S>#O({zcYc+304ofT{4@B9;Jh2cZ7efwlbs!}uVODc6 z{dOcMu?z|jxsALDrb}U(A50mVoF0il3y{Cl;π)i9}C3lNbN{r?;{oLAQ!=EP?t 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 literal 0 HcmV?d00001 diff --git a/board/wl82/objs/apps/common/update/update.c.d b/board/wl82/objs/apps/common/update/update.c.d new file mode 100644 index 0000000..0fddfa3 --- /dev/null +++ b/board/wl82/objs/apps/common/update/update.c.d @@ -0,0 +1,81 @@ +objs/apps/common/update/update.c.o: \ + ../../../../apps/common/update/update.c \ + ../../../../include_lib/update\update.h \ + ../../../../include_lib/system/generic\typedef.h \ + ../../../../include_lib/driver/cpu/wl82\asm/cpu.h \ + ../../../../include_lib/driver/cpu/wl82\asm/WL82.h \ + ../../../../include_lib/driver/cpu/wl82\asm/csfr.h \ + ../../../../include_lib/driver/cpu/wl82\asm/irq.h \ + ../../../../include_lib/driver/cpu/wl82\asm/hwi.h \ + ../../../../include_lib/system\generic/typedef.h \ + ../../../../include_lib/system\generic/printf.h \ + ../../../../include_lib\system/generic/log.h \ + ../../../../include_lib/system\generic/errno-base.h \ + ../../../../include_lib/c++/include\string.h \ + ../../../../include_lib/c++/include\__config \ + ../../../../include_lib/newlib/include\strings.h \ + ../../../../include_lib/newlib/include\sys/types.h \ + ../../../../include_lib/newlib/include\sys/_stdint.h \ + ../../../../include_lib/c++/include\stddef.h \ + ../../../../include_lib/newlib/include\machine/types.h \ + ../../../../include_lib\system/malloc.h \ + ../../../../include_lib/update\update_loader_download.h \ + ../../../../include_lib\system/task.h \ + ../../../../include_lib/system/os/os_api.h \ + ../../../../include_lib/system\os/os_cpu.h \ + ../../../../include_lib/system\generic/jiffies.h \ + ../../../../include_lib/system\os/os_error.h \ + ../../../../include_lib/system\os/os_type.h \ + ../../../../include_lib/system/os/FreeRTOS/FreeRTOS.h \ + ../../../../include_lib/system/os/FreeRTOS/FreeRTOSConfig.h \ + ../../../../include_lib/system/os/FreeRTOS/pi32v2/portmacro.h \ + ../../../../include_lib/c++/include\stdint.h \ + ../../../../include_lib/system/os/FreeRTOS/projdefs.h \ + ../../../../include_lib/system/os/FreeRTOS/portable.h \ + ../../../../include_lib/system/os/FreeRTOS/deprecated_definitions.h \ + ../../../../include_lib/system/os/FreeRTOS/mpu_wrappers.h \ + ../../../../include_lib/system/os/FreeRTOS/semphr.h \ + ../../../../include_lib/system/os/FreeRTOS/queue.h \ + ../../../../include_lib/system/os/FreeRTOS/task.h \ + ../../../../include_lib/system/os/FreeRTOS/list.h \ + ../../../../include_lib/system/os/FreeRTOS/event_groups.h \ + ../../../../include_lib/system/os/FreeRTOS/timers.h \ + ../../../../include_lib/system\generic/list.h \ + ../../../../include_lib/driver/cpu/wl82\asm/crc16.h \ + ../../../../include_lib/driver/cpu/wl82\asm/wdt.h \ + ../../../../apps/JL-AIBT-SoundBox/app\app_config.h \ + ../../../../include_lib/system/generic\cpu.h \ + ../../../../include_lib/utils/syscfg\syscfg_id.h \ + ../../../../include_lib/btctrler\btcontroller_modules.h \ + ../../../../include_lib/btctrler/hci_transport.h \ + ../../../../include_lib/btctrler/btcontroller_mode.h \ + ../../../../include_lib/btctrler/ble/hci_ll.h \ + ../../../../include_lib/c++/include\stdlib.h \ + ../../../../include_lib/btctrler/classic/hci_lmp.h \ + ../../../../include_lib\system/includes.h \ + ../../../../include_lib/system/generic/includes.h \ + ../../../../include_lib/system/generic/ascii.h \ + ../../../../include_lib/system/generic/atomic.h \ + ../../../../include_lib/system/generic/irq.h \ + ../../../../include_lib/system/generic/ioctl.h \ + ../../../../include_lib/system/generic/rect.h \ + ../../../../include_lib/system/generic/version.h \ + ../../../../include_lib/system/generic/lbuf.h \ + ../../../../include_lib\system/spinlock.h \ + ../../../../include_lib/system/generic/lbuf_lite.h \ + ../../../../include_lib/system/generic/circular_buf.h \ + ../../../../include_lib/system/generic/debug_lite.h \ + ../../../../include_lib/system/init.h \ + ../../../../include_lib/system/timer.h \ + ../../../../include_lib/system/sys_time.h \ + ../../../../include_lib/system/wait.h \ + ../../../../include_lib/system/app_core.h \ + ../../../../include_lib\utils/event/event.h \ + ../../../../include_lib/system/app_msg.h \ + ../../../../include_lib/system/bank_switch.h \ + ../../../../include_lib/update\uart_update.h \ + ../../../../include_lib/update\dual_bank_updata_api.h \ + ../../../../include_lib\btstack/avctp_user.h \ + ../../../../include_lib\btstack/btstack_typedef.h \ + ../../../../include_lib/driver/cpu/wl82\asm/power_interface.h \ + ../../../../include_lib\system/debug.h diff --git a/board/wl82/objs/apps/common/update/update.c.o b/board/wl82/objs/apps/common/update/update.c.o new file mode 100644 index 0000000000000000000000000000000000000000..8884ad0d51dc6cd38ef6e1ee1c078144ef557368 GIT binary patch literal 27620 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 literal 0 HcmV?d00001 diff --git a/board/wl82/objs/cpu/wl82/iic.c.d b/board/wl82/objs/cpu/wl82/iic.c.d new file mode 100644 index 0000000..0a9fa80 --- /dev/null +++ b/board/wl82/objs/cpu/wl82/iic.c.d @@ -0,0 +1,122 @@ +objs/cpu/wl82/iic.c.o: ../../../../cpu/wl82/iic.c \ + ../../../../include_lib/driver/cpu/wl82\asm/includes.h \ + ../../../../include_lib/driver/cpu/wl82\asm/audio.h \ + ../../../../include_lib/system/generic\typedef.h \ + ../../../../include_lib/driver/cpu/wl82\asm/cpu.h \ + ../../../../include_lib/driver/cpu/wl82\asm/WL82.h \ + ../../../../include_lib/driver/cpu/wl82\asm/csfr.h \ + ../../../../include_lib/driver/cpu/wl82\asm/irq.h \ + ../../../../include_lib/driver/cpu/wl82\asm/hwi.h \ + ../../../../include_lib/system\generic/typedef.h \ + ../../../../include_lib/system\generic/printf.h \ + ../../../../include_lib\system/generic/log.h \ + ../../../../include_lib/system\generic/errno-base.h \ + ../../../../include_lib/c++/include\string.h \ + ../../../../include_lib/c++/include\__config \ + ../../../../include_lib/newlib/include\strings.h \ + ../../../../include_lib/newlib/include\sys/types.h \ + ../../../../include_lib/newlib/include\sys/_stdint.h \ + ../../../../include_lib/c++/include\stddef.h \ + ../../../../include_lib/newlib/include\machine/types.h \ + ../../../../include_lib\system/malloc.h \ + ../../../../include_lib/driver/cpu/wl82\asm/ladc.h \ + ../../../../include_lib/driver/cpu/wl82\asm/dac.h \ + ../../../../include_lib/driver/cpu/wl82\asm/iis.h \ + ../../../../include_lib/driver/cpu/wl82\asm/plnk.h \ + ../../../../include_lib/driver/cpu/wl82\asm/src.h \ + ../../../../include_lib/system\generic/circular_buf.h \ + ../../../../include_lib\system/spinlock.h \ + ../../../../include_lib/driver/cpu/wl82\asm/spdif.h \ + ../../../../include_lib/driver/cpu/wl82\asm/adc_api.h \ + ../../../../include_lib/driver/cpu/wl82\asm/cache.h \ + ../../../../include_lib/driver/cpu/wl82\asm/dma.h \ + ../../../../include_lib/driver/cpu/wl82\asm/debug.h \ + ../../../../include_lib/driver/cpu/wl82\asm/gpio.h \ + ../../../../include_lib/driver/cpu/wl82\asm/iic.h \ + ../../../../include_lib/driver/cpu/wl82\asm/lock.h \ + ../../../../include_lib/driver/cpu/wl82\asm/sdmmc.h \ + ../../../../include_lib/driver\device/device.h \ + ../../../../include_lib/system\generic/list.h \ + ../../../../include_lib/system\generic/atomic.h \ + ../../../../include_lib/system/generic/cpu.h \ + ../../../../include_lib/system/generic/irq.h \ + ../../../../include_lib/driver\device/ioctl_cmds.h \ + ../../../../include_lib/driver/device\sdio/sdmmc.h \ + ../../../../include_lib/system\generic/ioctl.h \ + ../../../../include_lib/driver/cpu/wl82\asm/spiflash.h \ + ../../../../include_lib/driver\device/spiflash.h \ + ../../../../include_lib\system/task.h \ + ../../../../include_lib/system/os/os_api.h \ + ../../../../include_lib/system\os/os_cpu.h \ + ../../../../include_lib/system\generic/jiffies.h \ + ../../../../include_lib/system\os/os_error.h \ + ../../../../include_lib/system\os/os_type.h \ + ../../../../include_lib/system/os/FreeRTOS/FreeRTOS.h \ + ../../../../include_lib/system/os/FreeRTOS/FreeRTOSConfig.h \ + ../../../../include_lib/system/os/FreeRTOS/pi32v2/portmacro.h \ + ../../../../include_lib/c++/include\stdint.h \ + ../../../../include_lib/system/os/FreeRTOS/projdefs.h \ + ../../../../include_lib/system/os/FreeRTOS/portable.h \ + ../../../../include_lib/system/os/FreeRTOS/deprecated_definitions.h \ + ../../../../include_lib/system/os/FreeRTOS/mpu_wrappers.h \ + ../../../../include_lib/system/os/FreeRTOS/semphr.h \ + ../../../../include_lib/system/os/FreeRTOS/queue.h \ + ../../../../include_lib/system/os/FreeRTOS/task.h \ + ../../../../include_lib/system/os/FreeRTOS/list.h \ + ../../../../include_lib/system/os/FreeRTOS/event_groups.h \ + ../../../../include_lib/system/os/FreeRTOS/timers.h \ + ../../../../include_lib/driver/cpu/wl82\asm/startup.h \ + ../../../../include_lib/driver/cpu/wl82\asm/uart.h \ + ../../../../include_lib/driver\device/uart.h \ + ../../../../include_lib/driver/cpu/wl82\asm/imc.h \ + ../../../../include_lib/driver/cpu/wl82\asm/isc.h \ + ../../../../include_lib/utils\fs/fs.h \ + ../../../../include_lib\system/sys_time.h \ + ../../../../include_lib/utils\fs/fs_file_name.h \ + ../../../../include_lib/utils\fs/sdfile.h \ + ../../../../include_lib/driver/cpu/wl82\asm/isp_dev.h \ + ../../../../include_lib/driver/cpu/wl82\asm/device_drive.h \ + ../../../../include_lib/driver/cpu/wl82\asm/isp_alg.h \ + ../../../../include_lib/driver/cpu/wl82\asm/rtc.h \ + ../../../../include_lib/driver/cpu/wl82\asm/clock.h \ + ../../../../include_lib/driver/cpu/wl82\asm/crc16.h \ + ../../../../include_lib/driver/cpu/wl82\asm/spi.h \ + ../../../../include_lib/driver/cpu/wl82\asm/imd.h \ + ../../../../include_lib/driver/device\video/fb.h \ + ../../../../include_lib/driver/cpu/wl82\asm/imr.h \ + ../../../../include_lib/driver/cpu/wl82\asm/port_waked_up.h \ + ../../../../include_lib/driver/cpu/wl82\asm/image_enc.h \ + ../../../../include_lib/driver/device\video/video.h \ + ../../../../include_lib/driver/device\video/video_ioctl.h \ + ../../../../include_lib/system\generic/lbuf.h \ + ../../../../include_lib/driver/cpu/wl82\asm/jpeg_codec.h \ + ../../../../include_lib/driver/cpu/wl82\asm/jpeg_encoder.h \ + ../../../../include_lib/driver/cpu/wl82\asm/jpeg_abr.h \ + ../../../../include_lib/driver/cpu/wl82\asm/imb_driver.h \ + ../../../../include_lib/driver/cpu/wl82\asm/uvc_device.h \ + ../../../../include_lib/driver/device\video/camera.h \ + ../../../../include_lib/driver/cpu/wl82\asm/bus_device.h \ + ../../../../include_lib/driver/cpu/wl82\asm/pap.h \ + ../../../../include_lib/driver/cpu/wl82\asm/emi.h \ + ../../../../include_lib/driver\device/gpio.h \ + ../../../../include_lib/driver/cpu/wl82\asm/power_interface.h \ + ../../../../include_lib/driver/cpu/wl82\asm/p33.h \ + ../../../../include_lib/driver/cpu/wl82\asm/pwm.h \ + ../../../../include_lib/driver/cpu/wl82\asm/pwm_led.h \ + ../../../../include_lib/driver/cpu/wl82\asm/wdt.h \ + ../../../../include_lib/driver/cpu/wl82\asm/jpeg_decoder.h \ + ../../../../include_lib/driver\device/iic.h \ + ../../../../include_lib\system/includes.h \ + ../../../../include_lib/system/generic/includes.h \ + ../../../../include_lib/system/generic/ascii.h \ + ../../../../include_lib/system/generic/rect.h \ + ../../../../include_lib/system/generic/version.h \ + ../../../../include_lib/system/generic/lbuf_lite.h \ + ../../../../include_lib/system/generic/debug_lite.h \ + ../../../../include_lib/system/init.h \ + ../../../../include_lib/system/timer.h \ + ../../../../include_lib/system/wait.h \ + ../../../../include_lib/system/app_core.h \ + ../../../../include_lib\utils/event/event.h \ + ../../../../include_lib/system/app_msg.h \ + ../../../../include_lib/system/bank_switch.h diff --git a/board/wl82/objs/cpu/wl82/iic.c.o b/board/wl82/objs/cpu/wl82/iic.c.o new file mode 100644 index 0000000000000000000000000000000000000000..8f88b0d30315a9437bdffda1042411206cd5dc3b GIT binary patch literal 24156 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 P3KP*oGrF-e2S5K0o%s-D literal 0 HcmV?d00001 diff --git a/board/wl82/objs/cpu/wl82/key/adc_api.c.d b/board/wl82/objs/cpu/wl82/key/adc_api.c.d new file mode 100644 index 0000000..8669841 --- /dev/null +++ b/board/wl82/objs/cpu/wl82/key/adc_api.c.d @@ -0,0 +1,26 @@ +objs/cpu/wl82/key/adc_api.c.o: ../../../../cpu/wl82/key/adc_api.c \ + ../../../../include_lib/system\generic/typedef.h \ + ../../../../include_lib/driver/cpu/wl82\asm/cpu.h \ + ../../../../include_lib/driver/cpu/wl82\asm/WL82.h \ + ../../../../include_lib/driver/cpu/wl82\asm/csfr.h \ + ../../../../include_lib/driver/cpu/wl82\asm/irq.h \ + ../../../../include_lib/driver/cpu/wl82\asm/hwi.h \ + ../../../../include_lib/system\generic/printf.h \ + ../../../../include_lib\system/generic/log.h \ + ../../../../include_lib/system\generic/errno-base.h \ + ../../../../include_lib/c++/include\string.h \ + ../../../../include_lib/c++/include\__config \ + ../../../../include_lib/newlib/include\strings.h \ + ../../../../include_lib/newlib/include\sys/types.h \ + ../../../../include_lib/newlib/include\sys/_stdint.h \ + ../../../../include_lib/c++/include\stddef.h \ + ../../../../include_lib/newlib/include\machine/types.h \ + ../../../../include_lib\system/malloc.h \ + ../../../../include_lib/driver/cpu/wl82\asm/clock.h \ + ../../../../include_lib/driver/cpu/wl82\asm/adc_api.h \ + ../../../../include_lib\system/timer.h \ + ../../../../include_lib/system/generic/list.h \ + ../../../../include_lib\system/spinlock.h \ + ../../../../include_lib/driver/cpu/wl82\asm/efuse.h \ + ../../../../include_lib/driver/cpu/wl82\asm/p33.h \ + ../../../../include_lib/driver/cpu/wl82\asm/power_interface.h diff --git a/board/wl82/objs/cpu/wl82/key/adc_api.c.o b/board/wl82/objs/cpu/wl82/key/adc_api.c.o new file mode 100644 index 0000000000000000000000000000000000000000..2839be96bcae5f9f7bcdc40aa755f77cef0f1091 GIT binary patch literal 24916 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 MORkdG+@nAL7d3AazyJUM literal 0 HcmV?d00001 diff --git a/board/wl82/objs/cpu/wl82/key/ctmu.c.d b/board/wl82/objs/cpu/wl82/key/ctmu.c.d new file mode 100644 index 0000000..18ecd38 --- /dev/null +++ b/board/wl82/objs/cpu/wl82/key/ctmu.c.d @@ -0,0 +1,27 @@ +objs/cpu/wl82/key/ctmu.c.o: ../../../../cpu/wl82/key/ctmu.c \ + ../../../../include_lib/driver\device/gpio.h \ + ../../../../include_lib/driver/cpu/wl82\asm/gpio.h \ + ../../../../include_lib/driver/device\key/key_driver.h \ + ../../../../include_lib/system\generic/typedef.h \ + ../../../../include_lib/driver/cpu/wl82\asm/cpu.h \ + ../../../../include_lib/driver/cpu/wl82\asm/WL82.h \ + ../../../../include_lib/driver/cpu/wl82\asm/csfr.h \ + ../../../../include_lib/driver/cpu/wl82\asm/irq.h \ + ../../../../include_lib/driver/cpu/wl82\asm/hwi.h \ + ../../../../include_lib/system\generic/printf.h \ + ../../../../include_lib\system/generic/log.h \ + ../../../../include_lib/system\generic/errno-base.h \ + ../../../../include_lib/c++/include\string.h \ + ../../../../include_lib/c++/include\__config \ + ../../../../include_lib/newlib/include\strings.h \ + ../../../../include_lib/newlib/include\sys/types.h \ + ../../../../include_lib/newlib/include\sys/_stdint.h \ + ../../../../include_lib/c++/include\stddef.h \ + ../../../../include_lib/newlib/include\machine/types.h \ + ../../../../include_lib\system/malloc.h \ + ../../../../include_lib/utils\event/key_event.h \ + ../../../../include_lib/utils\event/event.h \ + ../../../../include_lib/driver/device\key/ctmu_key.h \ + ../../../../include_lib/driver/device\key/touch_key.h \ + ../../../../include_lib/driver/cpu/wl82\asm/ctmu.h \ + ../../../../apps/JL-AIBT-SoundBox/app\app_config.h diff --git a/board/wl82/objs/cpu/wl82/key/ctmu.c.o b/board/wl82/objs/cpu/wl82/key/ctmu.c.o new file mode 100644 index 0000000000000000000000000000000000000000..056df53042943ed5fa557f0a50a844fb953c2f88 GIT binary patch literal 1184 zcmb7DZ%7+w7=P2m+-cHFocWOG<+!W16Q=Qu8%=tKnOtgEWd5K9> zD2YkAbj#pc3Jr7&1KWqKtaEH12J1#O;(`rDy0OU+XV4Z|orKZC2K}&0x^C>_;O=+t z^W%5V`+J`Ec`fw4?Ke~a)Byl|aBnU8=*Z`rdU zd?T^yG!G`T<?#kDy@3OaHi2#u+7&MrB(G9;Q`81+{8HR|H`SXKQ>BV3>Vf9Rpp#=9D`0|Sc#iQv z(RL{MN1c#1mf%KUZd%Q;Ic_$W>^Q6-hdao#d&mJP_7(H!ULGygaLbFX6XxQC0VxyT}?c`&3n z1d89C$R3aE_9@CZav)TJw`;eSu@y7+kU+PR*wzlZSJwV2!h-5S!xDY!{S;Mlw*6g* zhl|Cbcy7?~lvh+cfL+Aaz34un-CovS7GYJxgtp?9x~`-Qr2@4?n}miuU+LYWsf-Yc z!7L8I+rl~dFdI&1z~KZ z%yh*j4EnB1fmyddGC8C3TTi*o^hx8u2*ZXh2K*6sFxFWmM$Gn*Yh=iJwv!D^1iaxu zjU5=MQX}WOb$T87f23Z93A^8NbeioJSLaY@W@^+Dio1OwFFWe4I`U6=r!L^p02>|; zP2sQWNL@E>jd|H1e(nWl4ftj*;P$Ct=p`f6)(VTr1*N1FPLeJaxvm62*&)zCDR+US zFwUSyE}brs>N-757Hysd*6aV`QkZC>!kXJH$NTiYYB)aMdfWe6xZ5wIZnc~q&bc-> z4}Nw(EUs_u_t!UrkA=G-6LQKL*mhy&pt)ftN1KGvS)z>_g@woHTK?$1xq2lY6WSMN IS+xNE0xX`5-~a#s literal 0 HcmV?d00001 diff --git a/board/wl82/objs/cpu/wl82/key/irflt.c.d b/board/wl82/objs/cpu/wl82/key/irflt.c.d new file mode 100644 index 0000000..17fcd8b --- /dev/null +++ b/board/wl82/objs/cpu/wl82/key/irflt.c.d @@ -0,0 +1,28 @@ +objs/cpu/wl82/key/irflt.c.o: ../../../../cpu/wl82/key/irflt.c \ + ../../../../include_lib/driver/device\key/key_driver.h \ + ../../../../include_lib/system\generic/typedef.h \ + ../../../../include_lib/driver/cpu/wl82\asm/cpu.h \ + ../../../../include_lib/driver/cpu/wl82\asm/WL82.h \ + ../../../../include_lib/driver/cpu/wl82\asm/csfr.h \ + ../../../../include_lib/driver/cpu/wl82\asm/irq.h \ + ../../../../include_lib/driver/cpu/wl82\asm/hwi.h \ + ../../../../include_lib/system\generic/printf.h \ + ../../../../include_lib\system/generic/log.h \ + ../../../../include_lib/system\generic/errno-base.h \ + ../../../../include_lib/c++/include\string.h \ + ../../../../include_lib/c++/include\__config \ + ../../../../include_lib/newlib/include\strings.h \ + ../../../../include_lib/newlib/include\sys/types.h \ + ../../../../include_lib/newlib/include\sys/_stdint.h \ + ../../../../include_lib/c++/include\stddef.h \ + ../../../../include_lib/newlib/include\machine/types.h \ + ../../../../include_lib\system/malloc.h \ + ../../../../include_lib/utils\event/key_event.h \ + ../../../../include_lib/utils\event/event.h \ + ../../../../include_lib/driver\device/gpio.h \ + ../../../../include_lib/driver/cpu/wl82\asm/gpio.h \ + ../../../../include_lib\system/timer.h \ + ../../../../include_lib/system/generic/list.h \ + ../../../../include_lib\system/spinlock.h \ + ../../../../include_lib/driver/cpu/wl82\asm/clock.h \ + ../../../../apps/JL-AIBT-SoundBox/app\app_config.h diff --git a/board/wl82/objs/cpu/wl82/key/irflt.c.o b/board/wl82/objs/cpu/wl82/key/irflt.c.o new file mode 100644 index 0000000000000000000000000000000000000000..530f895c298fd916e34c5403dae2f269cf761d77 GIT binary patch literal 1184 zcmb7DZ%7+w7=P2m+-cHFtoe}C%W+q25vK8s8%=r!OfI!?4H7XF$HL4XlWJ?td5K9> zD2YkAbjycp>9#=2FtB}S`^B++*q|F~#AOmhy0N(-V(wI zeSSRe^FDtq^upF_DgbH#0A4xS-229t=Z?R**=7~#D-Y zV%cHtPh?8Ty|*RxJ<{7a0JVZmK^4Y_Z%G=64^sl{q;kCKls%P^rL1-(EEa_%ZqOi) z**GIFp5c=xqYmW8Ix;OFP)w5$I|qeu=mw8Wyu3uZp?`Td@*i;X2H~qP*{r$r|_KTJBABSrzU%z$8{`u~E_kRd~Z;(l(6<@I|tf{y2nc8!g zRwVQzxGpDT34o8)0E`G{CmctYOK3nPGNoxlDxa~$p{W=Y%1+4lf#PQ+@+^*Y$}QN^ zqINBZ2FRMKTC%YyHWg@7MrlN~B_(RP2pQXMPQ}cQGSEC#=$gxZ^JOahsTv*M8=Qz#UfZ`Y^ zesv(bJhIcRDB;MF5Cz_%-CV?$%-B-`-ArJc+vsjd`;!O@sQV4`^o0jWs_1C`I}kS) zjX|+&zx^4nsAK@UhOK(g146sCsJ$t|Dh?CcvPbH?l{6Id)I4nx67qbhYnP_df+z-4 zH~?=7b@F01oKDL%Molw+r+cMP7&+sBRr(Lq8sbuc?{8K90)U%2F-+tXcV=iyd!w$PDF8Rhh<5%&BpAC%$ z$MIKnq^<+EMm=l*zw&~!`n{7^@!s)3@FfF46D%TUm69enK{{3BsuBQYtB@X`lsiE} zXlKwVmrfK(b&Z}T3pV#G>+yYZJw!B6Ag1e>xtwngYUXnK&z(k7vG=4s=4es&*S$(=kfS4Lu=(7vc; H#Rc#ewcwAd literal 0 HcmV?d00001 diff --git a/board/wl82/objs/cpu/wl82/key/plcnt.c.d b/board/wl82/objs/cpu/wl82/key/plcnt.c.d new file mode 100644 index 0000000..e5eb005 --- /dev/null +++ b/board/wl82/objs/cpu/wl82/key/plcnt.c.d @@ -0,0 +1,29 @@ +objs/cpu/wl82/key/plcnt.c.o: ../../../../cpu/wl82/key/plcnt.c \ + ../../../../include_lib/driver/cpu/wl82\asm/plcnt.h \ + ../../../../include_lib/system\generic/typedef.h \ + ../../../../include_lib/driver/cpu/wl82\asm/cpu.h \ + ../../../../include_lib/driver/cpu/wl82\asm/WL82.h \ + ../../../../include_lib/driver/cpu/wl82\asm/csfr.h \ + ../../../../include_lib/driver/cpu/wl82\asm/irq.h \ + ../../../../include_lib/driver/cpu/wl82\asm/hwi.h \ + ../../../../include_lib/system\generic/printf.h \ + ../../../../include_lib\system/generic/log.h \ + ../../../../include_lib/system\generic/errno-base.h \ + ../../../../include_lib/c++/include\string.h \ + ../../../../include_lib/c++/include\__config \ + ../../../../include_lib/newlib/include\strings.h \ + ../../../../include_lib/newlib/include\sys/types.h \ + ../../../../include_lib/newlib/include\sys/_stdint.h \ + ../../../../include_lib/c++/include\stddef.h \ + ../../../../include_lib/newlib/include\machine/types.h \ + ../../../../include_lib\system/malloc.h \ + ../../../../include_lib/driver\device/gpio.h \ + ../../../../include_lib/driver/cpu/wl82\asm/gpio.h \ + ../../../../include_lib/driver/device\key/key_driver.h \ + ../../../../include_lib/utils\event/key_event.h \ + ../../../../include_lib/utils\event/event.h \ + ../../../../include_lib/driver/device\key/touch_key.h \ + ../../../../include_lib\system/timer.h \ + ../../../../include_lib/system/generic/list.h \ + ../../../../include_lib\system/spinlock.h \ + ../../../../apps/JL-AIBT-SoundBox/app\app_config.h diff --git a/board/wl82/objs/cpu/wl82/key/plcnt.c.o b/board/wl82/objs/cpu/wl82/key/plcnt.c.o new file mode 100644 index 0000000000000000000000000000000000000000..04c580510585e3455d200d5bb61079b0196e691d GIT binary patch literal 1184 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