commit c0ace98dffb25982d1aa54b64e50239ebf610ecb
Author: OutBlue <1824835816@qq.com>
Date: Sun Aug 30 14:13:24 2026 +0800
除了显示驱动,其余全部测试通过
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 0000000..2e55d58
Binary files /dev/null and b/board/wl82/objs/apps/JL-AIBT-SoundBox/app/app_main.c.o differ
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 0000000..5b576aa
Binary files /dev/null and b/board/wl82/objs/apps/JL-AIBT-SoundBox/app/irq_task_config.c.o differ
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 0000000..7547c69
Binary files /dev/null and b/board/wl82/objs/apps/JL-AIBT-SoundBox/audio/audio_test.c.o differ
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 0000000..513ec4d
Binary files /dev/null and b/board/wl82/objs/apps/JL-AIBT-SoundBox/board/wl82/board.c.o differ
diff --git a/board/wl82/objs/apps/JL-AIBT-SoundBox/led/led.c.d b/board/wl82/objs/apps/JL-AIBT-SoundBox/led/led.c.d
new file mode 100644
index 0000000..03555aa
--- /dev/null
+++ b/board/wl82/objs/apps/JL-AIBT-SoundBox/led/led.c.d
@@ -0,0 +1,109 @@
+objs/apps/JL-AIBT-SoundBox/led/led.c.o: \
+ ../../../../apps/JL-AIBT-SoundBox/led/led.c \
+ ../../../../apps/JL-AIBT-SoundBox/led/led.h \
+ ../../../../include_lib/driver\device/gpio.h \
+ ../../../../include_lib/driver/cpu/wl82\asm/gpio.h \
+ ../../../../include_lib/driver/cpu/wl82\asm/pwm.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/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/cpu/wl82\asm/power_interface.h \
+ ../../../../include_lib/driver/cpu/wl82\asm/p33.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/led/led.c.o b/board/wl82/objs/apps/JL-AIBT-SoundBox/led/led.c.o
new file mode 100644
index 0000000..042de6a
Binary files /dev/null and b/board/wl82/objs/apps/JL-AIBT-SoundBox/led/led.c.o differ
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 0000000..6f72881
Binary files /dev/null and b/board/wl82/objs/apps/JL-AIBT-SoundBox/mqtt/mqtt_config.c.o differ
diff --git a/board/wl82/objs/apps/JL-AIBT-SoundBox/mqtt/mqtt_manager.c.d b/board/wl82/objs/apps/JL-AIBT-SoundBox/mqtt/mqtt_manager.c.d
new file mode 100644
index 0000000..d71fb4c
--- /dev/null
+++ b/board/wl82/objs/apps/JL-AIBT-SoundBox/mqtt/mqtt_manager.c.d
@@ -0,0 +1,113 @@
+objs/apps/JL-AIBT-SoundBox/mqtt/mqtt_manager.c.o: \
+ ../../../../apps/JL-AIBT-SoundBox/mqtt/mqtt_manager.c \
+ ../../../../apps/JL-AIBT-SoundBox/mqtt/mqtt_manager.h \
+ ../../../../include_lib/c++/include\stdint.h \
+ ../../../../include_lib/c++/include\__config \
+ ../../../../apps/JL-AIBT-SoundBox/mqtt/mqtt_config.h \
+ ../../../../apps/JL-AIBT-SoundBox/mqtt/mqtt_protocol.h \
+ ../../../../include_lib/c++/include\stddef.h \
+ ../../../../apps/JL-AIBT-SoundBox/wifi\wifi_manager.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/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 \
+ ../../../../apps/JL-AIBT-SoundBox/app\app_log.h \
+ ../../../../apps/JL-AIBT-SoundBox/app/app_config.h \
+ ../../../../include_lib/net\mqtt/MQTTClient.h \
+ ../../../../include_lib/net\mqtt/MQTTPacket.h \
+ ../../../../include_lib/net\mqtt/MQTTConnect.h \
+ ../../../../include_lib/net\mqtt/MQTTPublish.h \
+ ../../../../include_lib/net\mqtt/MQTTSubscribe.h \
+ ../../../../include_lib/net\mqtt/MQTTUnsubscribe.h \
+ ../../../../include_lib/net\mqtt/MQTTFormat.h \
+ ../../../../include_lib/net\mqtt/StackTrace.h \
+ ../../../../include_lib/net\mqtt/MQTTLinux.h \
+ ../../../../include_lib/net/lwip_2_2_0/lwip/app\sock_api/sock_api.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\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/c++/include\stdio.h
diff --git a/board/wl82/objs/apps/JL-AIBT-SoundBox/mqtt/mqtt_manager.c.o b/board/wl82/objs/apps/JL-AIBT-SoundBox/mqtt/mqtt_manager.c.o
new file mode 100644
index 0000000..d889efb
Binary files /dev/null and b/board/wl82/objs/apps/JL-AIBT-SoundBox/mqtt/mqtt_manager.c.o differ
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 0000000..4673177
Binary files /dev/null and b/board/wl82/objs/apps/JL-AIBT-SoundBox/mqtt/mqtt_protocol.c.o differ
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 0000000..50fb587
Binary files /dev/null and b/board/wl82/objs/apps/JL-AIBT-SoundBox/radar/r60abd1.c.o differ
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 0000000..3e26568
Binary files /dev/null and b/board/wl82/objs/apps/JL-AIBT-SoundBox/radar/radar_command_service.c.o differ
diff --git a/board/wl82/objs/apps/JL-AIBT-SoundBox/radar/radar_data_service.c.d b/board/wl82/objs/apps/JL-AIBT-SoundBox/radar/radar_data_service.c.d
new file mode 100644
index 0000000..2b8a5bc
--- /dev/null
+++ b/board/wl82/objs/apps/JL-AIBT-SoundBox/radar/radar_data_service.c.d
@@ -0,0 +1,68 @@
+objs/apps/JL-AIBT-SoundBox/radar/radar_data_service.c.o: \
+ ../../../../apps/JL-AIBT-SoundBox/radar/radar_data_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_data_service.h \
+ ../../../../apps/JL-AIBT-SoundBox/radar/r60abd1.h \
+ ../../../../apps/JL-AIBT-SoundBox/radar/radar_manager.h
diff --git a/board/wl82/objs/apps/JL-AIBT-SoundBox/radar/radar_data_service.c.o b/board/wl82/objs/apps/JL-AIBT-SoundBox/radar/radar_data_service.c.o
new file mode 100644
index 0000000..77f505b
Binary files /dev/null and b/board/wl82/objs/apps/JL-AIBT-SoundBox/radar/radar_data_service.c.o differ
diff --git a/board/wl82/objs/apps/JL-AIBT-SoundBox/radar/radar_manager.c.d b/board/wl82/objs/apps/JL-AIBT-SoundBox/radar/radar_manager.c.d
new file mode 100644
index 0000000..efbb7df
--- /dev/null
+++ b/board/wl82/objs/apps/JL-AIBT-SoundBox/radar/radar_manager.c.d
@@ -0,0 +1,66 @@
+objs/apps/JL-AIBT-SoundBox/radar/radar_manager.c.o: \
+ ../../../../apps/JL-AIBT-SoundBox/radar/radar_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/radar/radar_manager.h \
+ ../../../../apps/JL-AIBT-SoundBox/app\app_log.h \
+ ../../../../apps/JL-AIBT-SoundBox/app/app_config.h
diff --git a/board/wl82/objs/apps/JL-AIBT-SoundBox/radar/radar_manager.c.o b/board/wl82/objs/apps/JL-AIBT-SoundBox/radar/radar_manager.c.o
new file mode 100644
index 0000000..a62a1fd
Binary files /dev/null and b/board/wl82/objs/apps/JL-AIBT-SoundBox/radar/radar_manager.c.o differ
diff --git a/board/wl82/objs/apps/JL-AIBT-SoundBox/radar/radar_report_service.c.d b/board/wl82/objs/apps/JL-AIBT-SoundBox/radar/radar_report_service.c.d
new file mode 100644
index 0000000..5c1afd8
--- /dev/null
+++ b/board/wl82/objs/apps/JL-AIBT-SoundBox/radar/radar_report_service.c.d
@@ -0,0 +1,67 @@
+objs/apps/JL-AIBT-SoundBox/radar/radar_report_service.c.o: \
+ ../../../../apps/JL-AIBT-SoundBox/radar/radar_report_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_report_service.h \
+ ../../../../apps/JL-AIBT-SoundBox/radar/radar_manager.h
diff --git a/board/wl82/objs/apps/JL-AIBT-SoundBox/radar/radar_report_service.c.o b/board/wl82/objs/apps/JL-AIBT-SoundBox/radar/radar_report_service.c.o
new file mode 100644
index 0000000..b161964
Binary files /dev/null and b/board/wl82/objs/apps/JL-AIBT-SoundBox/radar/radar_report_service.c.o differ
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 0000000..d0e4293
Binary files /dev/null and b/board/wl82/objs/apps/JL-AIBT-SoundBox/radar/radar_uart.c.o differ
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 0000000..d0d1490
Binary files /dev/null and b/board/wl82/objs/apps/JL-AIBT-SoundBox/wifi/wifi_manager.c.o differ
diff --git a/board/wl82/objs/apps/JL-AIBT-SoundBox/wifi/wifi_sta.c.d b/board/wl82/objs/apps/JL-AIBT-SoundBox/wifi/wifi_sta.c.d
new file mode 100644
index 0000000..9868399
--- /dev/null
+++ b/board/wl82/objs/apps/JL-AIBT-SoundBox/wifi/wifi_sta.c.d
@@ -0,0 +1,68 @@
+objs/apps/JL-AIBT-SoundBox/wifi/wifi_sta.c.o: \
+ ../../../../apps/JL-AIBT-SoundBox/wifi/wifi_sta.c \
+ ../../../../apps/JL-AIBT-SoundBox/wifi/wifi_sta.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/app/app_config.h \
+ ../../../../include_lib/net\wifi/wifi_connect.h \
+ ../../../../include_lib/net\wifi/wifi_def.h
diff --git a/board/wl82/objs/apps/JL-AIBT-SoundBox/wifi/wifi_sta.c.o b/board/wl82/objs/apps/JL-AIBT-SoundBox/wifi/wifi_sta.c.o
new file mode 100644
index 0000000..76a09d0
Binary files /dev/null and b/board/wl82/objs/apps/JL-AIBT-SoundBox/wifi/wifi_sta.c.o differ
diff --git a/board/wl82/objs/apps/common/audio_music/audio_config.c.d b/board/wl82/objs/apps/common/audio_music/audio_config.c.d
new file mode 100644
index 0000000..cd363a0
--- /dev/null
+++ b/board/wl82/objs/apps/common/audio_music/audio_config.c.d
@@ -0,0 +1,50 @@
+objs/apps/common/audio_music/audio_config.c.o: \
+ ../../../../apps/common/audio_music/audio_config.c \
+ ../../../../apps/JL-AIBT-SoundBox/app\app_config.h \
+ ../../../../include_lib/system\init.h \
+ ../../../../include_lib/system\os/os_api.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/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\device/uart.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\generic/ioctl.h \
+ ../../../../include_lib\system/task.h \
+ ../../../../include_lib/media\eq/eq_func_define.h
diff --git a/board/wl82/objs/apps/common/audio_music/audio_config.c.o b/board/wl82/objs/apps/common/audio_music/audio_config.c.o
new file mode 100644
index 0000000..ed4efce
Binary files /dev/null and b/board/wl82/objs/apps/common/audio_music/audio_config.c.o differ
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 0000000..f1fccf3
Binary files /dev/null and b/board/wl82/objs/apps/common/c++/cpp_run_init.c.o differ
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 0000000..dfb3317
Binary files /dev/null and b/board/wl82/objs/apps/common/c++/cxx_runtime.cpp.o differ
diff --git a/board/wl82/objs/apps/common/config/log_config/lib_driver_config.c.d b/board/wl82/objs/apps/common/config/log_config/lib_driver_config.c.d
new file mode 100644
index 0000000..841f7d8
--- /dev/null
+++ b/board/wl82/objs/apps/common/config/log_config/lib_driver_config.c.d
@@ -0,0 +1,64 @@
+objs/apps/common/config/log_config/lib_driver_config.c.o: \
+ ../../../../apps/common/config/log_config/lib_driver_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
diff --git a/board/wl82/objs/apps/common/config/log_config/lib_driver_config.c.o b/board/wl82/objs/apps/common/config/log_config/lib_driver_config.c.o
new file mode 100644
index 0000000..8e13e1e
Binary files /dev/null and b/board/wl82/objs/apps/common/config/log_config/lib_driver_config.c.o differ
diff --git a/board/wl82/objs/apps/common/config/log_config/lib_system_config.c.d b/board/wl82/objs/apps/common/config/log_config/lib_system_config.c.d
new file mode 100644
index 0000000..1f56ec2
--- /dev/null
+++ b/board/wl82/objs/apps/common/config/log_config/lib_system_config.c.d
@@ -0,0 +1,64 @@
+objs/apps/common/config/log_config/lib_system_config.c.o: \
+ ../../../../apps/common/config/log_config/lib_system_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
diff --git a/board/wl82/objs/apps/common/config/log_config/lib_system_config.c.o b/board/wl82/objs/apps/common/config/log_config/lib_system_config.c.o
new file mode 100644
index 0000000..61ec52b
Binary files /dev/null and b/board/wl82/objs/apps/common/config/log_config/lib_system_config.c.o differ
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 0000000..d852a71
Binary files /dev/null and b/board/wl82/objs/apps/common/config/log_config/lib_update_config.c.o differ
diff --git a/board/wl82/objs/apps/common/config/user_cfg.c.d b/board/wl82/objs/apps/common/config/user_cfg.c.d
new file mode 100644
index 0000000..0758fad
--- /dev/null
+++ b/board/wl82/objs/apps/common/config/user_cfg.c.d
@@ -0,0 +1,75 @@
+objs/apps/common/config/user_cfg.c.o: \
+ ../../../../apps/common/config/user_cfg.c \
+ ../../../../apps/JL-AIBT-SoundBox/app\app_config.h \
+ ../../../../include_lib/utils\fs/fs.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/system\generic/list.h \
+ ../../../../include_lib/system\generic/ioctl.h \
+ ../../../../include_lib/system\generic/atomic.h \
+ ../../../../include_lib/system/generic/cpu.h \
+ ../../../../include_lib/system/generic/irq.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/sys_time.h \
+ ../../../../include_lib/utils\fs/fs_file_name.h \
+ ../../../../include_lib/utils\fs/sdfile.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.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/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/utils\syscfg/syscfg_id.h \
+ ../../../../include_lib/driver/cpu/wl82\asm/crc16.h \
+ ../../../../include_lib/driver/cpu/wl82\asm/sfc_norflash_api.h \
+ ../../../../include_lib/driver\device/device.h \
+ ../../../../include_lib/driver\device/ioctl_cmds.h \
+ ../../../../include_lib\server/audio_dev.h \
+ ../../../../include_lib/net\wifi/wifi_connect.h \
+ ../../../../include_lib/net\wifi/wifi_def.h \
+ ../../../../include_lib/system\debug.h
diff --git a/board/wl82/objs/apps/common/config/user_cfg.c.o b/board/wl82/objs/apps/common/config/user_cfg.c.o
new file mode 100644
index 0000000..837f09c
Binary files /dev/null and b/board/wl82/objs/apps/common/config/user_cfg.c.o differ
diff --git a/board/wl82/objs/apps/common/debug/debug.c.d b/board/wl82/objs/apps/common/debug/debug.c.d
new file mode 100644
index 0000000..14be041
--- /dev/null
+++ b/board/wl82/objs/apps/common/debug/debug.c.d
@@ -0,0 +1,20 @@
+objs/apps/common/debug/debug.c.o: ../../../../apps/common/debug/debug.c \
+ ../../../../apps/JL-AIBT-SoundBox/app\app_config.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
diff --git a/board/wl82/objs/apps/common/debug/debug.c.o b/board/wl82/objs/apps/common/debug/debug.c.o
new file mode 100644
index 0000000..0d80b1f
Binary files /dev/null and b/board/wl82/objs/apps/common/debug/debug.c.o differ
diff --git a/board/wl82/objs/apps/common/debug/debug_user.c.d b/board/wl82/objs/apps/common/debug/debug_user.c.d
new file mode 100644
index 0000000..f9142fb
--- /dev/null
+++ b/board/wl82/objs/apps/common/debug/debug_user.c.d
@@ -0,0 +1,22 @@
+objs/apps/common/debug/debug_user.c.o: \
+ ../../../../apps/common/debug/debug_user.c \
+ ../../../../apps/JL-AIBT-SoundBox/app\app_config.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/utils\syscfg/syscfg_id.h
diff --git a/board/wl82/objs/apps/common/debug/debug_user.c.o b/board/wl82/objs/apps/common/debug/debug_user.c.o
new file mode 100644
index 0000000..99fee76
Binary files /dev/null and b/board/wl82/objs/apps/common/debug/debug_user.c.o differ
diff --git a/board/wl82/objs/apps/common/net/assign_macaddr.c.d b/board/wl82/objs/apps/common/net/assign_macaddr.c.d
new file mode 100644
index 0000000..2c1639b
--- /dev/null
+++ b/board/wl82/objs/apps/common/net/assign_macaddr.c.d
@@ -0,0 +1,101 @@
+objs/apps/common/net/assign_macaddr.c.o: \
+ ../../../../apps/common/net/assign_macaddr.c \
+ ../../../../include_lib/system\os/os_api.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/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\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/net\wifi/wifi_connect.h \
+ ../../../../include_lib/net\wifi/wifi_def.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/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\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 \
+ ../../../../include_lib/net\http/http_cli.h \
+ ../../../../apps/JL-AIBT-SoundBox/app\app_config.h \
+ ../../../../include_lib\system/database.h \
+ ../../../../include_lib\system/init.h \
+ ../../../../include_lib/system\boot.h \
+ ../../../../include_lib/driver/cpu/wl82\asm/sfc_norflash_api.h \
+ ../../../../include_lib/driver/cpu/wl82\asm/crc16.h \
+ ../../../../include_lib/utils\syscfg/syscfg_id.h
diff --git a/board/wl82/objs/apps/common/net/assign_macaddr.c.o b/board/wl82/objs/apps/common/net/assign_macaddr.c.o
new file mode 100644
index 0000000..c3f303c
Binary files /dev/null and b/board/wl82/objs/apps/common/net/assign_macaddr.c.o differ
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 0000000..3e6cd90
Binary files /dev/null and b/board/wl82/objs/apps/common/net/config_network.c.o differ
diff --git a/board/wl82/objs/apps/common/net/platform_cfg.c.d b/board/wl82/objs/apps/common/net/platform_cfg.c.d
new file mode 100644
index 0000000..a0e65f0
--- /dev/null
+++ b/board/wl82/objs/apps/common/net/platform_cfg.c.d
@@ -0,0 +1,22 @@
+objs/apps/common/net/platform_cfg.c.o: \
+ ../../../../apps/common/net/platform_cfg.c \
+ ../../../../apps/JL-AIBT-SoundBox/app\app_config.h \
+ ../../../../include_lib\system/init.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\syscfg/syscfg_id.h
diff --git a/board/wl82/objs/apps/common/net/platform_cfg.c.o b/board/wl82/objs/apps/common/net/platform_cfg.c.o
new file mode 100644
index 0000000..550296b
Binary files /dev/null and b/board/wl82/objs/apps/common/net/platform_cfg.c.o differ
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 0000000..45234f6
Binary files /dev/null and b/board/wl82/objs/apps/common/net/wifi_conf.c.o differ
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 0000000..3aec199
Binary files /dev/null and b/board/wl82/objs/apps/common/system/init.c.o differ
diff --git a/board/wl82/objs/apps/common/system/system_reset_reason.c.d b/board/wl82/objs/apps/common/system/system_reset_reason.c.d
new file mode 100644
index 0000000..96e2672
--- /dev/null
+++ b/board/wl82/objs/apps/common/system/system_reset_reason.c.d
@@ -0,0 +1,23 @@
+objs/apps/common/system/system_reset_reason.c.o: \
+ ../../../../apps/common/system/system_reset_reason.c \
+ ../../../../include_lib/system\init.h \
+ ../../../../include_lib/driver/cpu/wl82\asm/p33.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/system_reset_reason.h
diff --git a/board/wl82/objs/apps/common/system/system_reset_reason.c.o b/board/wl82/objs/apps/common/system/system_reset_reason.c.o
new file mode 100644
index 0000000..4824a07
Binary files /dev/null and b/board/wl82/objs/apps/common/system/system_reset_reason.c.o differ
diff --git a/board/wl82/objs/apps/common/system/version.c.d b/board/wl82/objs/apps/common/system/version.c.d
new file mode 100644
index 0000000..423b4ed
--- /dev/null
+++ b/board/wl82/objs/apps/common/system/version.c.d
@@ -0,0 +1,64 @@
+objs/apps/common/system/version.c.o: \
+ ../../../../apps/common/system/version.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_config.h
diff --git a/board/wl82/objs/apps/common/system/version.c.o b/board/wl82/objs/apps/common/system/version.c.o
new file mode 100644
index 0000000..b9caa1e
Binary files /dev/null and b/board/wl82/objs/apps/common/system/version.c.o differ
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 0000000..8884ad0
Binary files /dev/null and b/board/wl82/objs/apps/common/update/update.c.o differ
diff --git a/board/wl82/objs/cpu/wl82/debug.c.d b/board/wl82/objs/cpu/wl82/debug.c.d
new file mode 100644
index 0000000..ccb2983
--- /dev/null
+++ b/board/wl82/objs/cpu/wl82/debug.c.d
@@ -0,0 +1,76 @@
+objs/cpu/wl82/debug.c.o: ../../../../cpu/wl82/debug.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 \
+ ../../../../include_lib/driver/cpu/wl82\asm/debug.h \
+ ../../../../include_lib/driver/cpu/wl82\asm/p33.h \
+ ../../../../include_lib/driver/cpu/wl82\asm/clock.h \
+ ../../../../include_lib/driver/cpu/wl82\asm/crc16.h \
+ ../../../../include_lib/driver/cpu/wl82\asm/power_interface.h \
+ ../../../../include_lib/driver/cpu/wl82\asm/sfc_norflash_api.h \
+ ../../../../include_lib/driver\device/device.h \
+ ../../../../include_lib/driver\device/ioctl_cmds.h \
+ ../../../../include_lib/driver/cpu/wl82\asm/system_reset_reason.h \
+ ../../../../include_lib\system/boot.h \
+ ../../../../apps/JL-AIBT-SoundBox/app\app_config.h \
+ ../../../../include_lib/utils\fs/fs.h \
+ ../../../../include_lib/utils\fs/fs_file_name.h \
+ ../../../../include_lib/utils\fs/sdfile.h
diff --git a/board/wl82/objs/cpu/wl82/debug.c.o b/board/wl82/objs/cpu/wl82/debug.c.o
new file mode 100644
index 0000000..b52a17f
Binary files /dev/null and b/board/wl82/objs/cpu/wl82/debug.c.o differ
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 0000000..8f88b0d
Binary files /dev/null and b/board/wl82/objs/cpu/wl82/iic.c.o differ
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 0000000..2839be9
Binary files /dev/null and b/board/wl82/objs/cpu/wl82/key/adc_api.c.o differ
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 0000000..056df53
Binary files /dev/null and b/board/wl82/objs/cpu/wl82/key/ctmu.c.o differ
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 0000000..530f895
Binary files /dev/null and b/board/wl82/objs/cpu/wl82/key/irflt.c.o differ
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 0000000..04c5805
Binary files /dev/null and b/board/wl82/objs/cpu/wl82/key/plcnt.c.o differ
diff --git a/board/wl82/objs/cpu/wl82/key/rdec.c.d b/board/wl82/objs/cpu/wl82/key/rdec.c.d
new file mode 100644
index 0000000..25503b0
--- /dev/null
+++ b/board/wl82/objs/cpu/wl82/key/rdec.c.d
@@ -0,0 +1,25 @@
+objs/cpu/wl82/key/rdec.c.o: ../../../../cpu/wl82/key/rdec.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/driver/cpu/wl82\asm/rdec.h \
+ ../../../../apps/JL-AIBT-SoundBox/app\app_config.h
diff --git a/board/wl82/objs/cpu/wl82/key/rdec.c.o b/board/wl82/objs/cpu/wl82/key/rdec.c.o
new file mode 100644
index 0000000..44d90a9
Binary files /dev/null and b/board/wl82/objs/cpu/wl82/key/rdec.c.o differ
diff --git a/board/wl82/objs/cpu/wl82/port_waked_up.c.d b/board/wl82/objs/cpu/wl82/port_waked_up.c.d
new file mode 100644
index 0000000..0944b67
--- /dev/null
+++ b/board/wl82/objs/cpu/wl82/port_waked_up.c.d
@@ -0,0 +1,121 @@
+objs/cpu/wl82/port_waked_up.c.o: ../../../../cpu/wl82/port_waked_up.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\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/port_waked_up.c.o b/board/wl82/objs/cpu/wl82/port_waked_up.c.o
new file mode 100644
index 0000000..7545a8f
Binary files /dev/null and b/board/wl82/objs/cpu/wl82/port_waked_up.c.o differ
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 0000000..c8af07d
Binary files /dev/null and b/board/wl82/objs/cpu/wl82/setup.c.o differ
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 0000000..74f4703
Binary files /dev/null and b/board/wl82/objs/include_lib/btctrler/version.z.S.o differ
diff --git a/board/wl82/objs/include_lib/btstack/version.z.S.d b/board/wl82/objs/include_lib/btstack/version.z.S.d
new file mode 100644
index 0000000..a9c0c25
--- /dev/null
+++ b/board/wl82/objs/include_lib/btstack/version.z.S.d
@@ -0,0 +1,2 @@
+objs/include_lib/btstack/version.z.S.o: \
+ ../../../../include_lib/btstack/version.z.S
diff --git a/board/wl82/objs/include_lib/btstack/version.z.S.o b/board/wl82/objs/include_lib/btstack/version.z.S.o
new file mode 100644
index 0000000..35cb5e6
Binary files /dev/null and b/board/wl82/objs/include_lib/btstack/version.z.S.o differ
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 0000000..080b249
Binary files /dev/null and b/board/wl82/objs/include_lib/driver/version.z.S.o differ
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 0000000..d9fec9f
Binary files /dev/null and b/board/wl82/objs/include_lib/media/version.z.S.o differ
diff --git a/board/wl82/objs/include_lib/net/version.z.S.d b/board/wl82/objs/include_lib/net/version.z.S.d
new file mode 100644
index 0000000..4407f2f
--- /dev/null
+++ b/board/wl82/objs/include_lib/net/version.z.S.d
@@ -0,0 +1,2 @@
+objs/include_lib/net/version.z.S.o: \
+ ../../../../include_lib/net/version.z.S
diff --git a/board/wl82/objs/include_lib/net/version.z.S.o b/board/wl82/objs/include_lib/net/version.z.S.o
new file mode 100644
index 0000000..baff8e1
Binary files /dev/null and b/board/wl82/objs/include_lib/net/version.z.S.o differ
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 0000000..a38857c
Binary files /dev/null and b/board/wl82/objs/include_lib/server/version.z.S.o differ
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 0000000..f98f15b
Binary files /dev/null and b/board/wl82/objs/include_lib/system/version.z.S.o differ
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 0000000..067d02f
Binary files /dev/null and b/board/wl82/objs/include_lib/update/version.z.S.o differ
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 0000000..585cd2a
Binary files /dev/null and b/board/wl82/objs/include_lib/utils/version.z.S.o differ
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 0000000..c3b99f4
Binary files /dev/null and b/board/wl82/objs/lib/net/version.z.S.o differ
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 0000000..9cc4808
Binary files /dev/null and b/board/wl82/objs/lib/server/version.z.S.o differ
diff --git a/board/wl82/objs/lib/utils/version.z.S.d b/board/wl82/objs/lib/utils/version.z.S.d
new file mode 100644
index 0000000..09401e5
--- /dev/null
+++ b/board/wl82/objs/lib/utils/version.z.S.d
@@ -0,0 +1 @@
+objs/lib/utils/version.z.S.o: ../../../../lib/utils/version.z.S
diff --git a/board/wl82/objs/lib/utils/version.z.S.o b/board/wl82/objs/lib/utils/version.z.S.o
new file mode 100644
index 0000000..e89cace
Binary files /dev/null and b/board/wl82/objs/lib/utils/version.z.S.o differ
diff --git a/display/st7789v2.c b/display/st7789v2.c
new file mode 100644
index 0000000..a62e116
--- /dev/null
+++ b/display/st7789v2.c
@@ -0,0 +1,473 @@
+#include "st7789v2.h"
+#include "app_config.h"
+#include "asm/gpio.h"
+#include "device/device.h"
+#include "system/init.h"
+#include "app_log.h"
+
+#define LCD_SPI_NAME "spi2"
+
+#define LCD_RES_PIN IO_PORTA_01
+#define LCD_CS_PIN IO_PORTA_02
+#define LCD_DC_PIN IO_PORTA_05
+#define LCD_BL_PIN IO_PORTA_07
+
+/* PA6 是 TE 引脚,但当前版本暂未启用 TE 同步 */
+
+#define LCD_WIDTH 240
+#define LCD_HEIGHT 320
+#define LCD_PIXEL_BYTES 3
+#define LCD_LINE_BYTES (LCD_WIDTH * LCD_PIXEL_BYTES)
+
+#define LCD_CMD_SWRESET 0x01
+#define LCD_CMD_SLPIN 0x10
+#define LCD_CMD_SLPOUT 0x11
+#define LCD_CMD_INVON 0x21
+#define LCD_CMD_DISPOFF 0x28
+#define LCD_CMD_DISPON 0x29
+#define LCD_CMD_CASET 0x2A
+#define LCD_CMD_RASET 0x2B
+#define LCD_CMD_RAMWR 0x2C
+
+static void *lcd_spi_hdl;
+static u8 lcd_line_buf[LCD_LINE_BYTES];
+static OS_MUTEX lcd_mutex;
+
+struct lcd_init_entry {
+ u8 cmd;
+ u8 len;
+ u8 data[14];
+};
+
+/*
+ * B7、BB、C0、C3、C4、E0、E1 与具体玻璃面板有关。
+ * 这里保留原工程参数,量产前必须与模组厂初始化表核对。
+ *
+ * D6/A1 未列入公开 ST7789V2 命令表,因此不放入该序列。
+ */
+static const struct lcd_init_entry lcd_init_seq[] = {
+ {0x36, 1, {0x00}},
+ {0x3A, 1, {0x06}}, /* RGB666 */
+
+ {0xB2, 5, {0x0C, 0x0C, 0x00, 0x33, 0x33}},
+ {0xB7, 1, {0x46}},
+ {0xBB, 1, {0x1B}},
+ {0xC0, 1, {0x2C}},
+ {0xC2, 1, {0x01}},
+ {0xC3, 1, {0x0F}},
+ {0xC4, 1, {0x20}},
+ {0xC6, 1, {0x0F}},
+ {0xD0, 2, {0xA4, 0xA1}},
+
+ {0xE0, 14, {
+ 0xD0, 0x06, 0x0B, 0x09, 0x08, 0x30, 0x30,
+ 0x5B, 0x4B, 0x18, 0x14, 0x14, 0x2B, 0x31
+ }},
+
+ {0xE1, 14, {
+ 0xD0, 0x05, 0x0A, 0x0A, 0x07, 0x28, 0x32,
+ 0x2C, 0x49, 0x18, 0x13, 0x13, 0x2C, 0x33
+ }},
+
+ /*
+ * Display inversion:面板行列驱动反相。
+ * 它不是简单的软件颜色取反。
+ */
+ {LCD_CMD_INVON, 0, {0x00}},
+};
+
+static int st7789v2_mutex_init(void)
+{
+ return os_mutex_create(&lcd_mutex);
+}
+early_initcall(st7789v2_mutex_init);
+
+static int lcd_lock(void)
+{
+ if (!os_mutex_valid(&lcd_mutex)) {
+ return -EIO;
+ }
+
+ return os_mutex_pend(&lcd_mutex, 0);
+}
+
+static void lcd_unlock(void)
+{
+ os_mutex_post(&lcd_mutex);
+}
+
+static void lcd_delay_ms(u32 ms)
+{
+ u32 ticks;
+
+ ticks = (ms * OS_TICKS_PER_SEC + 999U) / 1000U;
+ if (ticks == 0) {
+ ticks = 1;
+ }
+
+ os_time_dly(ticks);
+}
+
+static void lcd_gpio_output(u32 pin, int value)
+{
+ gpio_direction_output(pin, value);
+}
+
+static void lcd_cs(int value)
+{
+ lcd_gpio_output(LCD_CS_PIN, value);
+}
+
+static void lcd_dc(int value)
+{
+ lcd_gpio_output(LCD_DC_PIN, value);
+}
+
+static void lcd_reset(int value)
+{
+ lcd_gpio_output(LCD_RES_PIN, value);
+}
+
+static void lcd_backlight_on(void)
+{
+ lcd_gpio_output(LCD_BL_PIN, 1);
+}
+
+static void lcd_backlight_off(void)
+{
+ lcd_gpio_output(LCD_BL_PIN, 0);
+}
+
+static int lcd_spi_write_locked(const void *buf, u32 len)
+{
+ int ret;
+
+ if (!lcd_spi_hdl) {
+ return -ENODEV;
+ }
+
+ if (len == 0) {
+ return 0;
+ }
+
+ if (!buf) {
+ return -EINVAL;
+ }
+
+ /*
+ * 本 SDK 的 SPI dev_write() 使用 0 表示成功,
+ * 非 0 表示失败。
+ */
+ ret = dev_write(lcd_spi_hdl, (void *)buf, len);
+ return ret;
+}
+
+static int lcd_write_cmd_raw_locked(u8 cmd)
+{
+ lcd_dc(0);
+ return lcd_spi_write_locked(&cmd, 1);
+}
+
+static int lcd_write_data_raw_locked(const void *data, u32 len)
+{
+ lcd_dc(1);
+ return lcd_spi_write_locked(data, len);
+}
+
+/*
+ * 一个完整命令事务:
+ * CS 低 -> 命令 -> 可选参数 -> 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