完成LED7驱动

This commit is contained in:
FlyM 2026-04-20 14:50:04 +08:00
parent ba9fd97c80
commit a06450e6e4
92 changed files with 57529 additions and 87013 deletions

View File

@ -128,7 +128,8 @@
"${workspaceFolder}/apps/soundbox/smartbox/file_transfer",
"${workspaceFolder}/apps/soundbox/smartbox/tuya",
"${workspaceFolder}/apps/soundbox/include/ui/color_led",
"C:/JL/pi32/pi32v2-include"
"C:/JL/pi32/pi32v2-include",
"${workspaceFolder}/apps/kaotings"
],
"intelliSenseMode": "clang-x86",
"name": "AC695N_soundbox"

8
.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,8 @@
{
"files.associations": {
"tuya_le_multi_common.h": "c",
"mcpwm.h": "c",
"kt_fan_ac.h": "c",
"kt_led7.h": "c"
}
}

View File

@ -206,6 +206,7 @@ INCLUDES := \
-Iapps/soundbox/smartbox/file_transfer \
-Iapps/soundbox/smartbox/tuya \
-Iapps/soundbox/include/ui/color_led \
-Iapps/kaotings \
-I$(SYS_INC_DIR) \
@ -376,6 +377,9 @@ c_SRC_FILES := \
apps/common/usb/usb_host_config.c \
apps/soundbox/aec/br23/audio_aec.c \
apps/soundbox/aec/br23/audio_aec_demo.c \
apps/kaotings/kt.c \
apps/kaotings/kt_led7.c \
apps/kaotings/kt_fan_ac.c \
apps/soundbox/app_main.c \
apps/soundbox/board/br23/board_ac6083a/board_ac6083a.c \
apps/soundbox/board/br23/board_ac6083a/key_table/adkey_table.c \

83
apps/kaotings/kt.c Normal file
View File

@ -0,0 +1,83 @@
#include "kt.h"
#include "key_event_deal.h"
#include "asm/mcpwm.h"
#include "kt_fan_ac.h"
#include "kt_led7.h"
void kt_boot_init(void)
{
printf("kt_boot_init\n");
// 初始化GPIO PA Mute
gpio_set_pull_down(KT_CFG_PA_MUTE_PIN, 0);
gpio_set_pull_up(KT_CFG_PA_MUTE_PIN, 0);
gpio_set_direction(KT_CFG_PA_MUTE_PIN, 0);
PA_MUTE();
// 初始化GPIO USB Plug Detect
gpio_set_pull_down(KT_CFG_USB_PLUG_DET_PIN, 0);
gpio_set_pull_up(KT_CFG_USB_PLUG_DET_PIN, 0);
gpio_set_die(KT_CFG_USB_PLUG_DET_PIN, 1);
gpio_set_direction(KT_CFG_USB_PLUG_DET_PIN, 1);
// 初始化GPIO Vibration Switch
gpio_set_pull_down(KT_CFG_VIBRATION_SW_PIN, 0);
gpio_set_pull_up(KT_CFG_VIBRATION_SW_PIN, 0);
gpio_set_die(KT_CFG_VIBRATION_SW_PIN, 1);
gpio_set_direction(KT_CFG_VIBRATION_SW_PIN, 1);
// 初始化GPIO Front Fan
gpio_set_pull_down(KT_CFG_FRONT_FAN_PIN, 0);
gpio_set_pull_up(KT_CFG_FRONT_FAN_PIN, 0);
gpio_set_direction(KT_CFG_FRONT_FAN_PIN, 0);
gpio_set_output_value(KT_CFG_FRONT_FAN_PIN, 0);
// 初始化GPIO Rear Fan
gpio_set_pull_down(KT_CFG_REAR_FAN_PIN, 0);
gpio_set_pull_up(KT_CFG_REAR_FAN_PIN, 0);
gpio_set_direction(KT_CFG_REAR_FAN_PIN, 0);
gpio_set_output_value(KT_CFG_REAR_FAN_PIN, 0);
// 初始化GPIO LR Fan
gpio_set_pull_down(KT_CFG_LR_FAN_PIN, 0);
gpio_set_pull_up(KT_CFG_LR_FAN_PIN, 0);
gpio_set_die(KT_CFG_LR_FAN_PIN, 1);
gpio_set_direction(KT_CFG_LR_FAN_PIN, 0);
gpio_set_output_value(KT_CFG_LR_FAN_PIN, 0);
}
void kt_init(void)
{
printf("kt_init\n");
kt_led7_init();
}
u8 kt_key_event_filter_after(int key_event, int key_value)
{
u8 ret = true;
switch (key_event)
{
case KEY_KT_FRONT_FAN:
printf("KEY_KT_FRONT_FAN = %d\n", key_value);
kt_fan_level_change(fan_type_front);
break;
case KEY_KT_REAR_FAN:
printf("KEY_KT_REAR_FAN = %d\n", key_value);
kt_fan_level_change(fan_type_rear);
break;
case KEY_KT_LR_FAN:
printf("KEY_KT_LR_FAN = %d\n", key_value);
kt_fan_level_change(fan_type_lr);
break;
case KEY_KT_AIR_COND:
printf("KEY_KT_AIR_COND = %d\n", key_value);
kt_fan_level_change(fan_type_ac);
break;
default:
printf("KEY_KT_DEFAULT = %d\n", key_value);
ret = false;
break;
}
return ret;
// return false;
}

57
apps/kaotings/kt.h Normal file
View File

@ -0,0 +1,57 @@
#ifndef __KT_H__
#define __KT_H__
#include "system/includes.h"
#define KT_CFG_USB_PLUG_DET_PIN IO_PORTB_03 //USB插拔检测引脚 检测到插入后,闪烁显示电量
#define KT_CFG_VIBRATION_SW_PIN IO_PORTB_04 //振动开关反馈引脚,一直摇动这里会有反应
#define KT_CFG_PA_MUTE_PIN IO_PORTB_00 //PA静音引脚,低开高关,默认硬件上拉
#define PA_MUTE() gpio_set_output_value(KT_CFG_PA_MUTE_PIN, 1)
#define PA_UNMUTE() gpio_set_output_value(KT_CFG_PA_MUTE_PIN, 0)
#define KT_CFG_VBAT_DET_PIN IO_PORTA_12 //电池电压ADC检测引脚
/* 前风扇 档位循环以及数码管显示
L-0 L-1 L-2 L-3 L-4 L-5 L-6
1 2 3 4 5 6
*/
#define KT_CFG_FRONT_FAN_PIN IO_PORTB_05 //前风扇控制引脚
/* 后风扇 档位循环以及数码管显示
F-0 F-1 F-2 F-3 F-4 F-5 F-6
1 2 3 4 5 6
*/
#define KT_CFG_REAR_FAN_PIN IO_PORTB_06 //后风扇控制引脚
/* 左右风扇 档位循环以及数码管显示
C-0 C-1 C-2 C-3 C-4 C-5 C-6
1 2 3 4 5 6
*/
#define KT_CFG_LR_FAN_PIN IO_PORTA_10 //左右风扇控制引脚
/* 空调 档位循环以及数码管显示
AC0 AC1 AC2
(AC1)->(AC2)->(AC0)
*/
#define KT_CFG_AIR_COND_PIN IO_PORTA_11 //空调控制
/* LED 语音 数码管不显示,但是激活电量显示
->->
*/
#define KT_CFG_LED_PIN IO_PORTB_02 //LED控制引脚
void kt_boot_init(void);
void kt_init(void);
u8 kt_key_event_filter_after(int key_event,int key_value);
#endif

109
apps/kaotings/kt_fan_ac.c Normal file
View File

@ -0,0 +1,109 @@
#include "kt_fan_ac.h"
#include "asm/mcpwm.h"
#include "tone_player.h"
typedef struct _kt_fan_ac_var_ {
kt_fan_level_type front_fan_level; //前风扇档位
kt_fan_level_type rear_fan_level; //后风扇档位
kt_fan_level_type lr_fan_level; //左右风扇档位
kt_ac_level_type ac_level; //空调档位
} _kt_fan_ac_var;
static _kt_fan_ac_var kt_fan_ac_var;
#define __this (&kt_fan_ac_var)
const u32 fan_level_duty[7] = {0, 1500, 4000, 6000, 7000, 8000, 10000};
const u32 ac_level_duty[3] = {0, 1500, 8000};
const char *front_fan_level_tone[7] = {TONE_FFAN_L0, TONE_FFAN_L1, TONE_FFAN_L2, TONE_FFAN_L3, TONE_FFAN_L4, TONE_FFAN_L5, TONE_FFAN_L6};
const char *rear_fan_level_tone[7] = {TONE_BFAN_L0, TONE_BFAN_L1, TONE_BFAN_L2, TONE_BFAN_L3, TONE_BFAN_L4, TONE_BFAN_L5, TONE_BFAN_L6};
const char *lr_fan_level_tone[7] = {TONE_CFAN_L0, TONE_CFAN_L1, TONE_CFAN_L2, TONE_CFAN_L3, TONE_CFAN_L4, TONE_CFAN_L5, TONE_CFAN_L6};
const char *ac_level_tone[3] = {TONE_AC_L0, TONE_AC_L1, TONE_AC_L2};
void kt_fan_ac_init(void)
{
//50KHz
//前风扇 PB5 TIMER3 硬件引脚
//后风扇 PB6
//左右风扇 PA10
//空调 PA11
__this->front_fan_level = fan_level_0;
__this->rear_fan_level = fan_level_0;
__this->lr_fan_level = fan_level_0;
__this->ac_level = ac_level_0;
timer_pwm_init(JL_TIMER3, 50000, 0, IO_PORTB_05, 0); //前风扇
timer_pwm_init(JL_TIMER2, 50000, 0, IO_PORTB_06, 1); //后风扇
timer_pwm_init(JL_TIMER1, 50000, 0, IO_PORTA_10, 2); //左右风扇
timer_pwm_init(JL_TIMER0, 50000, 0, IO_PORTA_11, 3); //空调
}
void kt_fan_level_tone_play(kt_fan_type fan)
{
if (fan == fan_type_front)
{
tone_play(front_fan_level_tone[__this->front_fan_level], 0);
}
else if (fan == fan_type_rear)
{
tone_play(rear_fan_level_tone[__this->rear_fan_level], 0);
}
else if (fan == fan_type_lr)
{
tone_play(lr_fan_level_tone[__this->lr_fan_level], 0);
}
else
{
tone_play(ac_level_tone[__this->ac_level], 0);
}
}
void kt_fan_level_change(kt_fan_type fan)
{
if (fan == fan_type_front)
{
__this->front_fan_level++;
if (__this->front_fan_level > fan_level_6)
{
__this->front_fan_level = fan_level_0;
}
kt_fan_level_tone_play(fan_type_front);
set_timer_pwm_duty(JL_TIMER3, __this->front_fan_level * 1000);
}
else if (fan == fan_type_rear)
{
__this->rear_fan_level++;
if (__this->rear_fan_level > fan_level_6)
{
__this->rear_fan_level = fan_level_0;
}
kt_fan_level_tone_play(fan_type_rear);
set_timer_pwm_duty(JL_TIMER2, __this->rear_fan_level * 1000);
}
else if (fan == fan_type_lr)
{
__this->lr_fan_level++;
if (__this->lr_fan_level > fan_level_6)
{
__this->lr_fan_level = fan_level_0;
}
kt_fan_level_tone_play(fan_type_lr);
set_timer_pwm_duty(JL_TIMER1, __this->lr_fan_level * 1000);
}
else
{
__this->ac_level++;
if (__this->ac_level > ac_level_2)
{
__this->ac_level = ac_level_0;
}
kt_fan_level_tone_play(fan_type_ac);
set_timer_pwm_duty(JL_TIMER0, __this->ac_level * 1000);
}
}

37
apps/kaotings/kt_fan_ac.h Normal file
View File

@ -0,0 +1,37 @@
#ifndef __KT_FAN_AC_H__
#define __KT_FAN_AC_H__
#include "system/includes.h"
#include "kt.h"
typedef enum {
ac_level_0 = 0, //空调已关闭(AC0)
ac_level_1 = 1, //空调已打开断续模式(AC1)
ac_level_2 = 2, //空调已打开连续模式(AC2)
} kt_ac_level_type;
typedef enum {
fan_level_0 = 0, //风扇关闭 0%占空比,低电平
fan_level_1 = 1, //风扇1档 15%占空比
fan_level_2 = 2, //风扇2档 40%占空比
fan_level_3 = 3, //风扇3档 60%占空比
fan_level_4 = 4, //风扇4档 70%占空比
fan_level_5 = 5, //风扇5档 80%占空比
fan_level_6 = 6, //风扇6档 100%占空比
} kt_fan_level_type;
typedef enum {
fan_type_front = 0, //前风扇
fan_type_rear = 1, //后风扇
fan_type_lr = 2, //左右风扇
fan_type_ac = 3, //空调
} kt_fan_type;
void kt_fan_ac_init(void);
void kt_fan_level_change(kt_fan_type fan);
#endif

424
apps/kaotings/kt_led7.c Normal file
View File

@ -0,0 +1,424 @@
/*
* kt_led7.c
*
* kt_led7.h L7L14
* L7 kt_led7_scan() case 05
* L8 LED_NUMBER / LED_LARGE_LETTER / LED_SMALL_LETTER
* L9L12 kt_led7_show_* stub kt_fan_ac
* L13 show_time / urgent / disp_buf
* L14 USB// show
*
* PCB case L38-L47
*/
#include "kt_led7.h"
#include "system/includes.h"
#include "system/timer.h"
#include "app_power_manage.h"
struct ui_led7_env {
u8 init;
u8 cnt;
struct {
u8 seg[3];
u8 dp1;
u8 dp2;
} disp_buf;
};
static struct ui_led7_env _led7_env = {0};
#define __this (&_led7_env)
/* 扫描里用 b[] 表示三位逻辑段码;闪烁关显时置位 */
static u8 blink_blank;
#define b (__this->disp_buf.seg)
#define KT_LED7_BAT_HOLD_SEC_DEFAULT 60u
typedef enum {
KT_LED7_MODE_OFF = 0,
KT_LED7_MODE_BATTERY,
KT_LED7_MODE_TEMP,
} kt_led7_mode_t;
static kt_led7_mode_t led7_ui_mode;
static u32 led7_bat_sec_remain;
static u32 led7_temp_sec_remain;
static u16 led7_ui_1s_timer_id;
static u8 led7_ui_1s_timer_armed;
static void kt_led7_apply_blank(void);
static void kt_led7_apply_battery_percent(void);
static void kt_led7_ui_1s_tick(void *priv);
static u8 kt_led7_seg_from_char(u8 c);
const struct led7_pin6 led7_pin = {
.pin = {IO_PORTC_00, IO_PORTC_01, IO_PORTC_02, IO_PORTC_03, IO_PORTC_04, IO_PORTC_05}};
/* 字模与 cpu/br23/ui_driver/LED_1888/LED1888.c 一致scan 里用 LED_A..G 选段 */
static const u8 LED_NUMBER[10] = {
(u8)(LED_A | LED_B | LED_C | LED_D | LED_E | LED_F), /* '0' */
(u8)(LED_B | LED_C), /* '1' */
(u8)(LED_A | LED_B | LED_D | LED_E | LED_G), /* '2' */
(u8)(LED_A | LED_B | LED_C | LED_D | LED_G), /* '3' */
(u8)(LED_B | LED_C | LED_F | LED_G), /* '4' */
(u8)(LED_A | LED_C | LED_D | LED_F | LED_G), /* '5' */
(u8)(LED_A | LED_C | LED_D | LED_E | LED_F | LED_G), /* '6' */
(u8)(LED_A | LED_B | LED_C), /* '7' */
(u8)(LED_A | LED_B | LED_C | LED_D | LED_E | LED_F | LED_G), /* '8' */
(u8)(LED_A | LED_B | LED_C | LED_D | LED_F | LED_G), /* '9' */
};
static const u8 LED_LARGE_LETTER[26] = {
0x77, 0x40, 0x39, 0x3f, 0x79, ///< ABCDE
0x71, 0x40, 0x76, 0x06, 0x40, ///< FGHIJ
0x40, 0x38, 0x40, 0x37, 0x3f, ///< KLMNO
0x73, 0x40, 0x50, 0x6d, 0x78, ///< PQRST
0x3e, 0x3e, 0x40, 0x76, 0x40, ///< UVWXY
0x40 ///< Z
};
static const u8 LED_SMALL_LETTER[26] = {
0x77, 0x7c, 0x58, 0x5e, 0x79, ///< abcde
0x71, 0x40, 0x40, 0x40, 0x40, ///< fghij
0x40, 0x38, 0x40, 0x54, 0x5c, ///< klmno
0x73, 0x67, 0x50, 0x40, 0x78, ///< pqrst
0x3e, 0x3e, 0x40, 0x40, 0x40, ///< uvwxy
0x40 ///< z
};
#define PIN1_H gpio_direction_output(led7_pin.pin[0], 1)
#define PIN1_L gpio_direction_output(led7_pin.pin[0], 0)
#define PIN2_H gpio_direction_output(led7_pin.pin[1], 1)
#define PIN2_L gpio_direction_output(led7_pin.pin[1], 0)
#define PIN3_H gpio_direction_output(led7_pin.pin[2], 1)
#define PIN3_L gpio_direction_output(led7_pin.pin[2], 0)
#define PIN4_H gpio_direction_output(led7_pin.pin[3], 1)
#define PIN4_L gpio_direction_output(led7_pin.pin[3], 0)
#define PIN5_H gpio_direction_output(led7_pin.pin[4], 1)
#define PIN5_L gpio_direction_output(led7_pin.pin[4], 0)
#define PIN6_H gpio_direction_output(led7_pin.pin[5], 1)
#define PIN6_L gpio_direction_output(led7_pin.pin[5], 0)
/* 与 LED1888_init() 相同:全部脚置为输入高阻,换相前消隐,避免输出全高仍串亮(全显) */
static void kt_led7_led_gpio_input_all(void)
{
u8 i;
for (i = 0; i < 6; i++) {
u8 port = led7_pin.pin[i];
if (port != 255) {
gpio_set_pull_down(port, 0);
gpio_set_pull_up(port, 0);
gpio_set_direction(port, 1); /* 1=输入 */
}
}
}
void hw_init(void)
{
kt_led7_led_gpio_input_all();
}
void kt_led7_scan(void *param)
{
/* LED1888_6p_scan 在 switch 前调用 LED1888_init(),此处等同 */
kt_led7_led_gpio_input_all();
switch (__this->cnt)
{
case 0:
PIN1_H;
if (b[2] & LED_A)
{
PIN6_L;
}
if (b[2] & LED_G)
{
PIN5_L;
}
break;
case 1:
PIN2_H;
if (b[0] & LED_A)
{
PIN3_L;
}
if (b[0] & LED_B)
{
PIN4_L;
}
if (b[0] & LED_D)
{
PIN6_L;
}
if (b[0] & LED_E)
{
PIN5_L;
}
if (b[0] & LED_H) //DP
{
PIN1_L;
}
break;
case 2:
PIN3_H;
if (b[0] & LED_F)
{
PIN2_L;
}
if (b[1] & LED_B)
{
PIN5_L;
}
if (b[1] & LED_D)
{
PIN4_L;
}
if (b[2] & LED_B)
{
PIN6_L;
}
if (b[1] & LED_H) //DP
{
PIN1_L;
}
break;
case 3:
PIN4_H;
if (b[0] & LED_G)
{
PIN2_L;
}
if (b[1] & LED_C)
{
PIN5_L;
}
if (b[1] & LED_F)
{
PIN3_L;
}
if (b[2] & LED_E)
{
PIN6_L;
}
break;
case 4:
PIN5_H;
if (b[0] & LED_C)
{
PIN2_L;
}
if (b[1] & LED_A)
{
PIN4_L;
}
if (b[2] & LED_C)
{
PIN6_L;
}
if (b[2] & LED_G)
{
PIN3_L;
}
break;
case 5:
PIN6_H;
if (b[1] & LED_E)
{
PIN3_L;
}
if (b[2] & LED_D)
{
PIN4_L;
}
if (b[2] & LED_F)
{
PIN5_L;
}
break;
default:
break;
}
__this->cnt++;
if (__this->cnt == 6)
{
__this->cnt = 0;
}
}
static void kt_led7_set_digits(u8 d0, u8 d1, u8 d2, u8 dp1, u8 dp2)
{
b[0] = LED_NUMBER[d0 % 10];
b[1] = LED_NUMBER[d1 % 10];
b[2] = LED_NUMBER[d2 % 10];
__this->disp_buf.dp1 = dp1;
__this->disp_buf.dp2 = dp2;
blink_blank = 0;
}
static void kt_led7_apply_blank(void)
{
b[0] = 0;
b[1] = 0;
b[2] = 0;
__this->disp_buf.dp1 = 0;
__this->disp_buf.dp2 = 0;
blink_blank = 0;
}
static void kt_led7_apply_battery_percent(void)
{
u8 p = get_vbat_percent();
if (p > 100) {
p = 100;
}
kt_led7_set_digits((u8)(p / 100), (u8)((p / 10) % 10), (u8)(p % 10), 0, 0);
}
static u8 kt_led7_seg_from_char(u8 c)
{
if (c == '-') {
return LED_G;
}
if (c >= '0' && c <= '9') {
return LED_NUMBER[c - '0'];
}
if (c >= 'A' && c <= 'Z') {
return LED_LARGE_LETTER[c - 'A'];
}
if (c >= 'a' && c <= 'z') {
return LED_SMALL_LETTER[c - 'a'];
}
return 0;
}
static void kt_led7_ui_1s_tick(void *priv)
{
(void)priv;
if (led7_ui_mode == KT_LED7_MODE_TEMP) {
if (led7_temp_sec_remain > 0) {
led7_temp_sec_remain--;
}
if (led7_temp_sec_remain == 0) {
led7_ui_mode = KT_LED7_MODE_BATTERY;
led7_bat_sec_remain = KT_LED7_BAT_HOLD_SEC_DEFAULT;
kt_led7_apply_battery_percent();
}
} else if (led7_ui_mode == KT_LED7_MODE_BATTERY) {
if (led7_bat_sec_remain > 0) {
led7_bat_sec_remain--;
kt_led7_apply_battery_percent();
}
if (led7_bat_sec_remain == 0) {
led7_ui_mode = KT_LED7_MODE_OFF;
kt_led7_apply_blank();
}
}
}
void kt_led7_battery_show_restart(void)
{
led7_ui_mode = KT_LED7_MODE_BATTERY;
led7_bat_sec_remain = KT_LED7_BAT_HOLD_SEC_DEFAULT;
kt_led7_apply_battery_percent();
}
void kt_led7_temp_show_number(u16 number, u32 sec)
{
u32 s = sec ? sec : 1;
u16 n = number % 1000;
kt_led7_set_digits((u8)(n / 100), (u8)((n / 10) % 10), (u8)(n % 10), 0, 0);
led7_ui_mode = KT_LED7_MODE_TEMP;
led7_temp_sec_remain = s;
}
void kt_led7_temp_show_string(const u8 *str, u32 sec)
{
u32 s = sec ? sec : 1;
u8 c0 = ' ', c1 = ' ', c2 = ' ';
if (str) {
if (str[0]) {
c0 = str[0];
}
if (str[1]) {
c1 = str[1];
}
if (str[2]) {
c2 = str[2];
}
}
b[0] = kt_led7_seg_from_char(c0);
b[1] = kt_led7_seg_from_char(c1);
b[2] = kt_led7_seg_from_char(c2);
__this->disp_buf.dp1 = 0;
__this->disp_buf.dp2 = 0;
blink_blank = 0;
led7_ui_mode = KT_LED7_MODE_TEMP;
led7_temp_sec_remain = s;
}
void kt_led7_show_number(u32 show_time, u8 urgent, u16 number, u8 dp1, u8 dp2)
{
(void)urgent;
u32 sec = show_time ? show_time : 1;
u16 n = number % 1000;
kt_led7_set_digits((u8)(n / 100), (u8)((n / 10) % 10), (u8)(n % 10), dp1, dp2);
led7_ui_mode = KT_LED7_MODE_TEMP;
led7_temp_sec_remain = sec;
}
void kt_led7_show_string(u32 show_time, u8 urgent, const u8 *str, u8 dp1, u8 dp2)
{
(void)urgent;
u32 sec = show_time ? show_time : 1;
u8 c0 = ' ', c1 = ' ', c2 = ' ';
if (str) {
if (str[0]) {
c0 = str[0];
}
if (str[1]) {
c1 = str[1];
}
if (str[2]) {
c2 = str[2];
}
}
b[2] = kt_led7_seg_from_char(c0);
b[1] = kt_led7_seg_from_char(c1);
b[0] = kt_led7_seg_from_char(c2);
__this->disp_buf.dp1 = dp1;
__this->disp_buf.dp2 = dp2;
blink_blank = 0;
led7_ui_mode = KT_LED7_MODE_TEMP;
led7_temp_sec_remain = sec;
}
void kt_led7_show_u_volume(u8 vol_level, u32 show_time)
{
u8 buf[4];
u8 v = vol_level > 99 ? 99 : vol_level;
buf[2] = 'U';
buf[1] = (u8)('0' + (v / 10));
buf[0] = (u8)('0' + (v % 10));
buf[3] = 0;
kt_led7_show_string(show_time ? show_time : 1, 0, buf, 0, 0);
}
void kt_led7_init(void)
{
printf("kt_led7_init\n");
hw_init();
__this->cnt = 0;
__this->init = 1;
if (!led7_ui_1s_timer_armed) {
led7_ui_1s_timer_id = sys_timer_add(NULL, kt_led7_ui_1s_tick, 1000);
if (led7_ui_1s_timer_id) {
led7_ui_1s_timer_armed = 1;
}
}
/* 欢迎画面 5s结束后由 kt_led7_ui_1s_tick 切回电量显示 */
kt_led7_temp_show_string((const u8 *)"HI", 5);
sys_s_hi_timer_add(NULL, kt_led7_scan, 2); /* 2ms */
}

102
apps/kaotings/kt_led7.h Normal file
View File

@ -0,0 +1,102 @@
#ifndef __KT_LED7_H__
#define __KT_LED7_H__
#include "system/includes.h"
#include "kt.h"
/*
* =============================================================================
* kt_led7 L7L14
* =============================================================================
*
*
* - 3 / + 2 6 /线 + 线 6 GPIO
* - PCB 线 AG/DP kt_led7.c
*
*
* - kt_led7_scan usr_timersys_s_hi_timer_add 2ms6
*
*
* - 1 + dp1/dp2线
*
* kt_led7_show_*
* - show_timeurgent/ L13
*
* -----------------------------------------------------------------------------
* L7L14 kt.h ///
* -----------------------------------------------------------------------------
* L7 kt_led7_scan
* L8 09 + L / F / C AC
* L9 L-0L-6 kt_fan_ac fan_level_06
* L10 F-0F-6
* L11 C-0C-6
* L12 AC0 / AC1 / AC2//
* L13 (urgent)(show_time)(dp/)
*
* L14 USB LED / L13
*
*
* - kt_fan_level_change() kt_led7_show_string / kt_led7_show_number
* - kt_boot_init / kt_init kt_led7_init()
* =============================================================================
*/
/**
* N = led7_pin[N-1] IO_PORTC_0(N-1)1=PC0 6=PC5
* XHYL= X Y kt_led7_scan PINx_L/H
*
* AG LED_AG ****
* b[0..2]&LED_x x B2 kt_led7.c kt_led7_scan()
* B0/B1 if(b[0|1|2]&LED_*)
*
* B2b[2]
* A:2H3L B:2H4L C:5H2L D:2H6L E:2H5L F:3H2L G:4H2L DP:2H1L
* B1b[1]
* A:5H4L B:3H5L C:4H5L D:3H4L E:6H3L F:4H3L G:5H3L DP:3H1L
* B0b[0]
* A:1H6L B:3H6L C:5H6L D:6H4L E:4H6L F:6H5L G:1H5L DP:NONE
*/
/**
* L7L14
*
* ()
*
*
* ,,
*/
#define LED_A BIT(0)
#define LED_B BIT(1)
#define LED_C BIT(2)
#define LED_D BIT(3)
#define LED_E BIT(4)
#define LED_F BIT(5)
#define LED_G BIT(6)
#define LED_H BIT(7)
struct led7_pin6 {
u8 pin[6];
};
void kt_led7_init(void);
/** 正常电量显示:从当前时刻起再显示 60s与临时显示结束后的行为一致 */
void kt_led7_battery_show_restart(void);
/**
* sec 0 1
*/
void kt_led7_temp_show_number(u16 number, u32 sec);
void kt_led7_temp_show_string(const u8 *str, u32 sec);
/**
* show_time urgent temp
*/
void kt_led7_show_number(u32 show_time, u8 urgent, u16 number, u8 dp1, u8 dp2);
void kt_led7_show_string(u32 show_time, u8 urgent, const u8 *str, u8 dp1, u8 dp2);
/** 音量提示:三位数码管显示 U + 两位数字(如 U15表示「U-音量」,持续 show_time 秒 */
void kt_led7_show_u_volume(u8 vol_level, u32 show_time);
#endif

View File

@ -501,7 +501,7 @@ LED7_PLATFORM_DATA_BEGIN(led7_data)
.pin_cfg.pin7.pin[3] = IO_PORTC_03,
.pin_cfg.pin7.pin[4] = IO_PORTC_04,
.pin_cfg.pin7.pin[5] = IO_PORTC_05,
.pin_cfg.pin7.pin[6] = IO_PORTB_02,
.pin_cfg.pin7.pin[6] = -1,
#endif
LED7_PLATFORM_DATA_END()
@ -798,7 +798,7 @@ struct port_wakeup port0 = {
.pullup_down_enable = ENABLE, //配置I/O 内部上下拉是否使能
.edge = FALLING_EDGE, //唤醒方式选择,可选:上升沿\下降沿
.attribute = BLUETOOTH_RESUME, //保留参数
.iomap = IO_PORTA_10, //唤醒口选择
.iomap = IO_PORTB_01, //唤醒口选择
};
/* RTC PR0 PR1 唤醒 */

View File

@ -375,7 +375,7 @@ DAC硬件上的连接方式,可选的配置:
DAC_OUTPUT_FRONT_LR_REAR_LR
*/
//#define TCFG_AUDIO_DAC_CONNECT_MODE DAC_OUTPUT_FRONT_LR_REAR_LR
#define TCFG_AUDIO_DAC_CONNECT_MODE DAC_OUTPUT_LR
#define TCFG_AUDIO_DAC_CONNECT_MODE DAC_OUTPUT_MONO_L
// #define TCFG_AUDIO_DAC_CONNECT_MODE DAC_OUTPUT_MONO_LR_DIFF
/*通话降噪模式配置*/
@ -394,7 +394,7 @@ DAC硬件上的连接方式,可选的配置:
#define AUDIO_OUTPUT_WAY AUDIO_OUTPUT_WAY_DAC
#define LINEIN_INPUT_WAY LINEIN_INPUT_WAY_ADC //LINEIN_INPUT_WAY_ANALOG
#define AUDIO_OUTPUT_AUTOMUTE 0//ENABLE
#define AUDIO_OUTPUT_AUTOMUTE 1//ENABLE
#define DAC_AUTO_HIGH_Z_EN DISABLE //处理直推串音问题, 隔直不要开
/*
@ -469,9 +469,9 @@ DAC硬件上的连接方式,可选的配置:
//*********************************************************************************//
// UI 配置 //
//*********************************************************************************//
#define TCFG_UI_ENABLE ENABLE_THIS_MOUDLE //UI总开关
#define CONFIG_UI_STYLE STYLE_JL_LED7
#define TCFG_UI_LED7_ENABLE ENABLE_THIS_MOUDLE //UI使用LED7显示
#define TCFG_UI_ENABLE DISABLE_THIS_MOUDLE //UI总开关
//#define CONFIG_UI_STYLE STYLE_JL_LED7
#define TCFG_UI_LED7_ENABLE DISABLE_THIS_MOUDLE //UI使用LED7显示
// #define TCFG_UI_LCD_SEG3X9_ENABLE ENABLE_THIS_MOUDLE //UI使用LCD段码屏显示
// #define TCFG_LCD_ST7735S_ENABLE ENABLE_THIS_MOUDLE
// #define TCFG_LCD_ST7789VW_ENABLE ENABLE_THIS_MOUDLE
@ -504,7 +504,7 @@ DAC硬件上的连接方式,可选的配置:
//*********************************************************************************//
// EQ配置 //
//*********************************************************************************//
#define TCFG_EQ_ENABLE 1 //支持EQ功能,EQ总使能
#define TCFG_EQ_ENABLE 0 //支持EQ功能,EQ总使能
#if TCFG_EQ_ENABLE
#define TCFG_BT_MUSIC_EQ_ENABLE 1 //支持蓝牙音乐EQ
#define TCFG_PHONE_EQ_ENABLE 1 //支持通话近端EQ
@ -521,7 +521,7 @@ DAC硬件上的连接方式,可选的配置:
#define TCFG_DYNAMIC_EQ_ENABLE 0 //动态eq使能接在eq后需输入32bit位宽数据
#endif//TCFG_EQ_ENABLE
#define TCFG_DRC_ENABLE 1 //DRC 总使能
#define TCFG_DRC_ENABLE 0 //DRC 总使能
#define TCFG_AUDIO_MDRC_ENABLE 0 //多带drc使能 0:关闭多带drc 1使能多带drc 2使能多带drc 并且 多带drc后再做一次全带的drc
#if TCFG_DRC_ENABLE
@ -676,7 +676,7 @@ DAC硬件上的连接方式,可选的配置:
#define TCFG_USER_EMITTER_ENABLE 0 //emitter功能使能
#define TCFG_BT_SNIFF_ENABLE 0 //bt sniff 功能使能
#define USER_SUPPORT_PROFILE_SPP 1
#define USER_SUPPORT_PROFILE_SPP 0
#define USER_SUPPORT_PROFILE_HFP 1
#define USER_SUPPORT_PROFILE_A2DP 1
#define USER_SUPPORT_PROFILE_AVCTP 1
@ -697,12 +697,12 @@ DAC硬件上的连接方式,可选的配置:
#endif
#define BT_INBAND_RINGTONE 0 //是否播放手机自带来电铃声
#define BT_PHONE_NUMBER 1 //是否播放来电报号
#define BT_PHONE_NUMBER 0 //是否播放来电报号
#define BT_SYNC_PHONE_RING 0 //是否TWS同步播放来电铃声
#define BT_SUPPORT_DISPLAY_BAT 1 //是否使能电量检测
#define BT_SUPPORT_MUSIC_VOL_SYNC 1 //是否使能音量同步
#define BT_SUPPORT_MUSIC_VOL_SYNC 0 //是否使能音量同步
#define TCFG_BLUETOOTH_BACK_MODE 1 //后台模式
#define TCFG_BLUETOOTH_BACK_MODE 0 //后台模式
#if (TCFG_USER_TWS_ENABLE && TCFG_BLUETOOTH_BACK_MODE) && (TCFG_BT_SNIFF_ENABLE==0) && defined(CONFIG_LOCAL_TWS_ENABLE)
#define TCFG_DEC2TWS_ENABLE 1 // 本地解码转发
@ -756,14 +756,14 @@ DAC硬件上的连接方式,可选的配置:
//*********************************************************************************//
#define TCFG_DEC_G729_ENABLE ENABLE
#define TCFG_DEC_MP3_ENABLE ENABLE
#define TCFG_DEC_WMA_ENABLE ENABLE
#define TCFG_DEC_WAV_ENABLE ENABLE
#define TCFG_DEC_FLAC_ENABLE ENABLE
#define TCFG_DEC_APE_ENABLE ENABLE
#define TCFG_DEC_M4A_ENABLE ENABLE
#define TCFG_DEC_ALAC_ENABLE ENABLE
#define TCFG_DEC_AMR_ENABLE ENABLE
#define TCFG_DEC_DTS_ENABLE ENABLE
#define TCFG_DEC_WMA_ENABLE 0
#define TCFG_DEC_WAV_ENABLE 0
#define TCFG_DEC_FLAC_ENABLE 0
#define TCFG_DEC_APE_ENABLE 0
#define TCFG_DEC_M4A_ENABLE 0
#define TCFG_DEC_ALAC_ENABLE 0
#define TCFG_DEC_AMR_ENABLE 0
#define TCFG_DEC_DTS_ENABLE 0
#define TCFG_DEC_G726_ENABLE DISABLE
#define TCFG_DEC_MIDI_ENABLE DISABLE
#define TCFG_DEC_MTY_ENABLE DISABLE
@ -867,10 +867,10 @@ DAC硬件上的连接方式,可选的配置:
//*********************************************************************************//
#define TCFG_ENC_CVSD_ENABLE ENABLE
#define TCFG_ENC_MSBC_ENABLE ENABLE
#define TCFG_ENC_G726_ENABLE ENABLE
#define TCFG_ENC_MP3_ENABLE ENABLE
#define TCFG_ENC_ADPCM_ENABLE ENABLE
#define TCFG_ENC_PCM_ENABLE ENABLE
#define TCFG_ENC_G726_ENABLE 0
#define TCFG_ENC_MP3_ENABLE 0
#define TCFG_ENC_ADPCM_ENABLE 0
#define TCFG_ENC_PCM_ENABLE 0
#define TCFG_ENC_SBC_ENABLE ENABLE
#define TCFG_ENC_OPUS_ENABLE DISABLE
#define TCFG_ENC_SPEEX_ENABLE DISABLE

View File

@ -12,22 +12,22 @@
const u16 bt_key_ad_table[KEY_AD_NUM_MAX][KEY_EVENT_MAX] = {
//单击 //长按 //hold //抬起 //双击 //三击
[0] = {
KEY_CHANGE_MODE, KEY_POWEROFF, KEY_POWEROFF_HOLD, KEY_NULL, KEY_NULL, KEY_NULL
KEY_MUSIC_PP, KEY_POWEROFF, KEY_POWEROFF_HOLD, KEY_NULL, KEY_CALL_LAST_NO, KEY_NULL
},
[1] = {
KEY_MUSIC_PREV, KEY_VOL_DOWN, KEY_VOL_DOWN, KEY_NULL, KEY_NULL, KEY_NULL
KEY_KT_FRONT_FAN, KEY_VOL_UP, KEY_VOL_UP, KEY_NULL, KEY_MUSIC_PREV, KEY_NULL
},
[2] = {
KEY_MUSIC_PP, KEY_CALL_HANG_UP, KEY_NULL, KEY_NULL, KEY_CALL_LAST_NO, KEY_NULL
KEY_KT_REAR_FAN, KEY_VOL_DOWN, KEY_VOL_DOWN, KEY_NULL, KEY_MUSIC_NEXT, KEY_NULL
},
[3] = {
KEY_MUSIC_NEXT, KEY_VOL_UP, KEY_VOL_UP, KEY_NULL, KEY_NULL, KEY_NULL
KEY_KT_LR_FAN, KEY_KT_AIR_COND, KEY_NULL, KEY_NULL, KEY_NULL, KEY_NULL
},
[4] = {
KEY_NULL, KEY_NULL, KEY_NULL, KEY_NULL, KEY_REVERB_OPEN, KEY_NULL
KEY_KT_LED, KEY_KT_MASSAGE_MODE, KEY_NULL, KEY_NULL, KEY_NULL, KEY_NULL
},
[5] = {
KEY_NULL, KEY_NULL, KEY_NULL, KEY_NULL, KEY_ENC_START, KEY_NULL
KEY_NULL, KEY_NULL, KEY_NULL, KEY_NULL, KEY_NULL, KEY_NULL
},
[6] = {
KEY_NULL, KEY_NULL, KEY_NULL, KEY_NULL, KEY_NULL, KEY_NULL

View File

@ -9,6 +9,8 @@
#include "chgbox_ctrl.h"
#include "update_loader_download.h"
#include "kt.h"
extern void setup_arch();
extern int audio_dec_init();
@ -102,6 +104,7 @@ static void app_init()
do_platform_initcall();
board_init();
kt_boot_init();
do_initcall();

View File

@ -172,6 +172,12 @@ enum {
KEY_IR_NUM_8,
KEY_IR_NUM_9,//中间不允许插入
//在这里增加元素
KEY_KT_FRONT_FAN,
KEY_KT_REAR_FAN,
KEY_KT_LR_FAN,
KEY_KT_LED,
KEY_KT_AIR_COND,
KEY_KT_MASSAGE_MODE,
//
KEY_HID_MODE_SWITCH,
KEY_HID_TAKE_PICTURE,

View File

@ -94,6 +94,40 @@ enum {
#define TONE_RECORD TONE_RES_ROOT_PATH"tone/record.*"
#define TONE_SPDIF TONE_RES_ROOT_PATH"tone/spdif.*"
#define TONE_FFAN_L0 TONE_RES_ROOT_PATH"tone/FFAN0.*"
#define TONE_FFAN_L1 TONE_RES_ROOT_PATH"tone/FFAN1.*"
#define TONE_FFAN_L2 TONE_RES_ROOT_PATH"tone/FFAN2.*"
#define TONE_FFAN_L3 TONE_RES_ROOT_PATH"tone/FFAN3.*"
#define TONE_FFAN_L4 TONE_RES_ROOT_PATH"tone/FFAN4.*"
#define TONE_FFAN_L5 TONE_RES_ROOT_PATH"tone/FFAN5.*"
#define TONE_FFAN_L6 TONE_RES_ROOT_PATH"tone/FFAN6.*"
#define TONE_BFAN_L0 TONE_RES_ROOT_PATH"tone/BFAN0.*"
#define TONE_BFAN_L1 TONE_RES_ROOT_PATH"tone/BFAN1.*"
#define TONE_BFAN_L2 TONE_RES_ROOT_PATH"tone/BFAN2.*"
#define TONE_BFAN_L3 TONE_RES_ROOT_PATH"tone/BFAN3.*"
#define TONE_BFAN_L4 TONE_RES_ROOT_PATH"tone/BFAN4.*"
#define TONE_BFAN_L5 TONE_RES_ROOT_PATH"tone/BFAN5.*"
#define TONE_BFAN_L6 TONE_RES_ROOT_PATH"tone/BFAN6.*"
#define TONE_CFAN_L0 TONE_RES_ROOT_PATH"tone/CFAN0.*"
#define TONE_CFAN_L1 TONE_RES_ROOT_PATH"tone/CFAN1.*"
#define TONE_CFAN_L2 TONE_RES_ROOT_PATH"tone/CFAN2.*"
#define TONE_CFAN_L3 TONE_RES_ROOT_PATH"tone/CFAN3.*"
#define TONE_CFAN_L4 TONE_RES_ROOT_PATH"tone/CFAN4.*"
#define TONE_CFAN_L5 TONE_RES_ROOT_PATH"tone/CFAN5.*"
#define TONE_CFAN_L6 TONE_RES_ROOT_PATH"tone/CFAN6.*"
#define TONE_AC_L0 TONE_RES_ROOT_PATH"tone/AC0.*"
#define TONE_AC_L1 TONE_RES_ROOT_PATH"tone/AC1.*"
#define TONE_AC_L2 TONE_RES_ROOT_PATH"tone/AC2.*"
#define TONE_LT_L0 TONE_RES_ROOT_PATH"tone/LT0.*"
#define TONE_LT_L1 TONE_RES_ROOT_PATH"tone/LT1.*"
#define TONE_LT_L2 TONE_RES_ROOT_PATH"tone/LT2.*"
#ifdef CONFIG_CPU_BR18
#undef TONE_POWER_ON
#undef TONE_POWER_OFF

View File

@ -96,6 +96,8 @@
#include "tuya_multi/tuya_le_multi_common.h"
#include "multi_demo/le_multi_common.h"
#include "kt.h"
#define LOG_TAG_CONST BT
#define LOG_TAG "[BT]"
@ -911,6 +913,10 @@ int bt_key_event_handler(struct sys_event *event)
return true;
}
if (kt_key_event_filter_after(key_event,key_value) == true) {
return true;
}
switch (key_event) {
case KEY_MUSIC_PP:

View File

@ -33,6 +33,7 @@
#include "app_chargestore.h"
#include "app_charge.h"
#include "app_main.h"
#include "kt_led7.h"
#include "app_power_manage.h"
#include "user_cfg.h"
@ -500,6 +501,7 @@ void bt_key_vol_up()
}
volume_up();
vol = app_audio_get_volume(APP_AUDIO_CURRENT_STATE);
kt_led7_show_u_volume(vol, 5);
UI_SHOW_MENU(MENU_MAIN_VOL, 1000, vol, NULL);
UI_MSG_POST("music_vol:vol=%4", vol);
}
@ -519,6 +521,7 @@ void bt_key_vol_down()
}
volume_down();
vol = app_audio_get_volume(APP_AUDIO_CURRENT_STATE);
kt_led7_show_u_volume(vol, 5);
UI_SHOW_MENU(MENU_MAIN_VOL, 1000, vol, NULL);
UI_MSG_POST("music_vol:vol=%4", vol);
}

View File

@ -11,6 +11,7 @@
#include "linein/linein_dev.h"
#include "linein/linein.h"
#include "key_event_deal.h"
#include "kt_led7.h"
#include "user_cfg.h"
#include "ui/ui_api.h"
#include "fm_emitter/fm_emitter_manage.h"
@ -359,6 +360,7 @@ void linein_key_vol_up()
}
}
vol = __this->volume;
kt_led7_show_u_volume(vol, 5);
UI_SHOW_MENU(MENU_MAIN_VOL, 1000, vol, NULL);
log_info("vol+:%d\n", __this->volume);
}
@ -376,6 +378,7 @@ void linein_key_vol_down()
linein_volume_set(__this->volume);
}
vol = __this->volume;
kt_led7_show_u_volume(vol, 5);
UI_SHOW_MENU(MENU_MAIN_VOL, 1000, vol, NULL);
log_info("vol-:%d\n", __this->volume);
}

View File

@ -12,6 +12,7 @@
#include "ui/ui_api.h"
#include "app_task.h"
#include "key_event_deal.h"
#include "kt.h"
#define LOG_TAG_CONST APP_IDLE
@ -129,6 +130,8 @@ static void tone_play_end_callback(void *priv, int flag)
void app_poweron_task()
{
int msg[32];
kt_init();
UI_SHOW_MENU(MENU_POWER_UP, 0, 0, NULL);

View File

@ -75,7 +75,7 @@
TCFG_AUDIO_DAC_CONNECT_MODE == DAC_OUTPUT_DUAL_LR_DIFF)
#define MAX_ANA_VOL (21)
#else
#define MAX_ANA_VOL (28)
#define MAX_ANA_VOL (30)
#endif/*TCFG_AUDIO_DAC_CONNECT_MODE*/
#define MAX_COM_VOL (22) // 具体数值应小于联合音量等级的数组大小 (combined_vol_list)
@ -96,8 +96,8 @@
#endif
#define SYS_DEFAULT_VOL 0//SYS_MAX_VOL //(SYS_MAX_VOL/2)
#define SYS_DEFAULT_TONE_VOL 18 //(SYS_MAX_VOL)
#define SYS_DEFAULT_VOL SYS_MAX_VOL//SYS_MAX_VOL //(SYS_MAX_VOL/2)
#define SYS_DEFAULT_TONE_VOL SYS_MAX_VOL //(SYS_MAX_VOL)
#define SYS_DEFAULT_SIN_VOL 17
#define APP_AUDIO_STATE_IDLE 0

View File

@ -1008,9 +1008,18 @@ REGISTER_LP_TARGET(audio_dec_init_lp_target) = {
#if AUDIO_OUTPUT_AUTOMUTE
#include "kt.h"
void audio_mix_out_automute_mute(u8 mute)
{
printf(">>>>>>>>>>>>>>>>>>>> %s\n", mute ? ("MUTE") : ("UNMUTE"));
//printf(">>>>>>>>>>>>>>>>>>>> %s\n", mute ? ("MUTE") : ("UNMUTE"));
if (mute)
{
PA_MUTE();
} else {
PA_UNMUTE();
}
}
/* #define AUDIO_E_DET_UNMUTE (0x00) */

View File

@ -27,69 +27,12 @@ pcm_decoder
mp3_decoder
wma_decoder
flac_decoder
ape_decoder
m4a_decoder
alac_decoder
amr_decoder
dts_decoder
g729_decoder
wav_decoder
cvsd_encoder
msbc_encoder
mp3_encoder
g726_encoder
adpcm_encoder
pcm_encoder
sbc_encoder

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
44b10a8a9a97a7ea8795ce48fe8bb180954fc20c5763ded5954fc20c5763ded5399f4f1d

View File

@ -13,13 +13,13 @@ copy ..\..\ota_all.bin .
copy ..\..\ota_nor.bin .
..\..\isd_download.exe -tonorflash -dev br23 -boot 0x12000 -div8 -wait 300 -uboot uboot.boot -app app.bin -res tone.cfg cfg_tool.bin eq_cfg_hw.bin -format all %1
..\..\isd_download.exe -tonorflash -dev br23 -boot 0x12000 -div8 -wait 300 -uboot uboot.boot -app app.bin -res tone.cfg cfg_tool.bin eq_cfg_hw.bin -format all %1 -key KTS_AC690x_5458.key
:: -format all
::-reboot 2500
@rem 删除临时文件-format all
@rem ɾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>ļ<EFBFBD>-format all
if exist *.mp3 del *.mp3
if exist *.PIX del *.PIX
if exist *.TAB del *.TAB
@ -28,13 +28,13 @@ if exist *.sty del *.sty
@rem 生成固件升级文件
@rem <EFBFBD><EFBFBD><EFBFBD>ɹ̼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
copy ota_all.bin ota.bin
..\..\fw_add.exe -noenc -fw jl_isd.fw -add ota.bin -type 100 -out jl_isd_all.fw
copy ota_nor.bin ota.bin
..\..\fw_add.exe -noenc -fw jl_isd.fw -add ota.bin -type 100 -out jl_isd_nor.fw
@rem 添加配置脚本的版本信息到 FW 文件中
@rem <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ýű<EFBFBD><EFBFBD>İ汾<EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD> FW <20>ļ<EFBFBD><C4BC><EFBFBD>
..\..\fw_add.exe -noenc -fw jl_isd_all.fw -add script.ver -out jl_isd_all.fw
..\..\fw_add.exe -noenc -fw jl_isd_nor.fw -add script.ver -out jl_isd_nor.fw
@ -48,16 +48,16 @@ copy jl_isd_all.fw jl_isd.fw
del jl_isd_all.ufw jl_isd_nor.ufw jl_isd_all.fw jl_isd_nor.fw
@REM 生成配置文件升级文件
@REM <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
::ufw_maker.exe -chip AC800X %ADD_KEY% -output config.ufw -res bt_cfg.cfg
::IF EXIST jl_696x.bin del jl_696x.bin
@rem 常用命令说明
@rem -format vm //擦除VM 区域
@rem -format cfg //擦除BT CFG 区域
@rem -format 0x3f0-2 //表示从第 0x3f0 个 sector 开始连续擦除 2 个 sector(第一个参数为16进制或10进制都可第二个参数必须是10进制)
@rem <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD>
@rem -format vm //<EFBFBD><EFBFBD><EFBFBD><EFBFBD>VM <20><><EFBFBD><EFBFBD>
@rem -format cfg //<EFBFBD><EFBFBD><EFBFBD><EFBFBD>BT CFG <20><><EFBFBD><EFBFBD>
@rem -format 0x3f0-2 //<EFBFBD><EFBFBD>ʾ<EFBFBD>ӵ<EFBFBD> 0x3f0 <20><> sector <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2 <20><> sector(<28><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ16<31><36><EFBFBD>ƻ<EFBFBD>10<31><30><EFBFBD>ƶ<EFBFBD><C6B6>ɣ<EFBFBD><C9A3>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>10<31><30><EFBFBD><EFBFBD>)
ping /n 2 127.1>null
IF EXIST null del null

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

BIN
tone/AC0.mp3 Normal file

Binary file not shown.

BIN
tone/AC0.wtg Normal file

Binary file not shown.

BIN
tone/AC1.mp3 Normal file

Binary file not shown.

BIN
tone/AC1.wtg Normal file

Binary file not shown.

BIN
tone/AC2.mp3 Normal file

Binary file not shown.

BIN
tone/AC2.wtg Normal file

Binary file not shown.

BIN
tone/BFAN0.mp3 Normal file

Binary file not shown.

BIN
tone/BFAN0.wtg Normal file

Binary file not shown.

BIN
tone/BFAN1.mp3 Normal file

Binary file not shown.

BIN
tone/BFAN1.wtg Normal file

Binary file not shown.

BIN
tone/BFAN2.mp3 Normal file

Binary file not shown.

BIN
tone/BFAN2.wtg Normal file

Binary file not shown.

BIN
tone/BFAN3.mp3 Normal file

Binary file not shown.

BIN
tone/BFAN3.wtg Normal file

Binary file not shown.

BIN
tone/BFAN4.mp3 Normal file

Binary file not shown.

BIN
tone/BFAN4.wtg Normal file

Binary file not shown.

BIN
tone/BFAN5.mp3 Normal file

Binary file not shown.

BIN
tone/BFAN5.wtg Normal file

Binary file not shown.

BIN
tone/BFAN6.mp3 Normal file

Binary file not shown.

BIN
tone/BFAN6.wtg Normal file

Binary file not shown.

BIN
tone/CFAN0.mp3 Normal file

Binary file not shown.

BIN
tone/CFAN0.wtg Normal file

Binary file not shown.

BIN
tone/CFAN1.mp3 Normal file

Binary file not shown.

BIN
tone/CFAN1.wtg Normal file

Binary file not shown.

BIN
tone/CFAN2.mp3 Normal file

Binary file not shown.

BIN
tone/CFAN2.wtg Normal file

Binary file not shown.

BIN
tone/CFAN3.mp3 Normal file

Binary file not shown.

BIN
tone/CFAN3.wtg Normal file

Binary file not shown.

BIN
tone/CFAN4.mp3 Normal file

Binary file not shown.

BIN
tone/CFAN4.wtg Normal file

Binary file not shown.

BIN
tone/CFAN5.mp3 Normal file

Binary file not shown.

BIN
tone/CFAN5.wtg Normal file

Binary file not shown.

BIN
tone/CFAN6.mp3 Normal file

Binary file not shown.

BIN
tone/CFAN6.wtg Normal file

Binary file not shown.

BIN
tone/FFAN0.mp3 Normal file

Binary file not shown.

BIN
tone/FFAN0.wtg Normal file

Binary file not shown.

BIN
tone/FFAN1.mp3 Normal file

Binary file not shown.

BIN
tone/FFAN1.wtg Normal file

Binary file not shown.

BIN
tone/FFAN2.mp3 Normal file

Binary file not shown.

BIN
tone/FFAN2.wtg Normal file

Binary file not shown.

BIN
tone/FFAN3.mp3 Normal file

Binary file not shown.

BIN
tone/FFAN3.wtg Normal file

Binary file not shown.

BIN
tone/FFAN4.mp3 Normal file

Binary file not shown.

BIN
tone/FFAN4.wtg Normal file

Binary file not shown.

BIN
tone/FFAN5.mp3 Normal file

Binary file not shown.

BIN
tone/FFAN5.wtg Normal file

Binary file not shown.

BIN
tone/FFAN6.mp3 Normal file

Binary file not shown.

BIN
tone/FFAN6.wtg Normal file

Binary file not shown.

BIN
tone/LT0.mp3 Normal file

Binary file not shown.

BIN
tone/LT0.wtg Normal file

Binary file not shown.

BIN
tone/LT1.mp3 Normal file

Binary file not shown.

BIN
tone/LT1.wtg Normal file

Binary file not shown.

BIN
tone/LT2.mp3 Normal file

Binary file not shown.

BIN
tone/LT2.wtg Normal file

Binary file not shown.