完成LED7驱动
This commit is contained in:
parent
ba9fd97c80
commit
a06450e6e4
3
.vscode/c_cpp_properties.json
vendored
3
.vscode/c_cpp_properties.json
vendored
@ -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
8
.vscode/settings.json
vendored
Normal 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"
|
||||
}
|
||||
}
|
||||
4
Makefile
4
Makefile
@ -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
83
apps/kaotings/kt.c
Normal 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
57
apps/kaotings/kt.h
Normal 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
109
apps/kaotings/kt_fan_ac.c
Normal 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
37
apps/kaotings/kt_fan_ac.h
Normal 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
424
apps/kaotings/kt_led7.c
Normal file
@ -0,0 +1,424 @@
|
||||
/*
|
||||
* kt_led7.c — 硬件扫描与段码
|
||||
*
|
||||
* 与 kt_led7.h 中 L7~L14 的对应关系:
|
||||
* L7 → 本文件 kt_led7_scan() 六相状态机(case 0~5)
|
||||
* L8 → LED_NUMBER / LED_LARGE_LETTER / LED_SMALL_LETTER
|
||||
* L9~L12 → 由 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
102
apps/kaotings/kt_led7.h
Normal file
@ -0,0 +1,102 @@
|
||||
#ifndef __KT_LED7_H__
|
||||
#define __KT_LED7_H__
|
||||
|
||||
#include "system/includes.h"
|
||||
#include "kt.h"
|
||||
|
||||
/*
|
||||
* =============================================================================
|
||||
* kt_led7 架构说明(与产品功能条目 L7~L14 对应)
|
||||
* =============================================================================
|
||||
*
|
||||
* 硬件层
|
||||
* - 3 位共阴/动态扫描 + 2 个小数点,6 根位选/公共线 + 段线,由 6 个 GPIO 分时拉低选通
|
||||
* - 段逻辑与 PCB 走线存在交叉,逻辑段 A~G/DP 经映射后写入显示缓冲(见 kt_led7.c 注释)
|
||||
*
|
||||
* 时基层
|
||||
* - 扫描回调 kt_led7_scan 由 usr_timer(sys_s_hi_timer_add,约 2ms)触发,6 相轮转完成一轮刷新
|
||||
*
|
||||
* 数据层
|
||||
* - 显示缓冲:每位 1 字节段码 + dp1/dp2;业务侧只写“逻辑段码”,扫描里做线序映射
|
||||
*
|
||||
* 策略层(kt_led7_show_* 入参)
|
||||
* - show_time:显示保持时间;urgent:高优先级插入;闪烁/抢占规则见下表 L13
|
||||
*
|
||||
* -----------------------------------------------------------------------------
|
||||
* 功能条目 L7~L14(与 kt.h 中风扇/空调/灯光/电量等业务一致)
|
||||
* -----------------------------------------------------------------------------
|
||||
* L7 动态扫描显示:分时选通,避免常亮串扰(扫描状态机在 kt_led7_scan)
|
||||
* L8 字符集:数字 0~9 + 字母(用于前缀 L / F / C 及 AC 等缩写)
|
||||
* L9 前风扇状态可视化:与「L-0~L-6」一致,对应 kt_fan_ac 前风扇档位 fan_level_0~6
|
||||
* L10 后风扇状态可视化:与「F-0~F-6」一致,对应后风扇档位
|
||||
* L11 左右风扇状态可视化:与「C-0~C-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 一致)。
|
||||
*
|
||||
* 下表为实测;「物理段A~G」与缓冲区里的 LED_A~G **不是**一一同名,同一物理段可能落在
|
||||
* b[0..2]&LED_x 的不同 x 上。B2 全段与代码分支对应已核对并写在 kt_led7.c kt_led7_scan();
|
||||
* B0/B1 各段与每个 if(b[0|1|2]&LED_*) 的逐项注释也在该函数内(与上表同一编号)。
|
||||
*
|
||||
* B2(b[2],百位)实测:
|
||||
* A:2H3L B:2H4L C:5H2L D:2H6L E:2H5L F:3H2L G:4H2L DP:2H1L
|
||||
* B1(b[1],十位)实测:
|
||||
* A:5H4L B:3H5L C:4H5L D:3H4L E:6H3L F:4H3L G:5H3L DP:3H1L
|
||||
* B0(b[0],个位)实测:
|
||||
* A:1H6L B:3H6L C:5H6L D:6H4L E:4H6L F:6H5L G:1H5L DP:NONE
|
||||
*/
|
||||
|
||||
/**
|
||||
* 动态数码管扫描模块(实现见上 L7~L14)
|
||||
* 用于显示数字和字符
|
||||
* 支持紧急插入显示(高优先级显示)
|
||||
* 支持闪烁显示
|
||||
* 支持各种显示时间设置
|
||||
* 高优先级显示打断低优先级显示后,低优先级时间不清零,继续计数
|
||||
*/
|
||||
|
||||
#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
|
||||
@ -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 唤醒 */
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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();
|
||||
|
||||
|
||||
@ -159,7 +159,7 @@ enum {
|
||||
|
||||
|
||||
KEY_TEST_DEMO_0,
|
||||
KEY_TEST_DEMO_1,
|
||||
KEY_TEST_DEMO_1,
|
||||
|
||||
KEY_IR_NUM_0, //中间不允许插入
|
||||
KEY_IR_NUM_1,
|
||||
@ -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,
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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);
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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) */
|
||||
|
||||
@ -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.
1
cpu/br23/tools/cfg_tool_state_complete.lua
Normal file
1
cpu/br23/tools/cfg_tool_state_complete.lua
Normal file
File diff suppressed because one or more lines are too long
1
cpu/br23/tools/download/standard/KTS_AC690x_5458.key
Normal file
1
cpu/br23/tools/download/standard/KTS_AC690x_5458.key
Normal file
@ -0,0 +1 @@
|
||||
44b10a8a9a97a7ea8795ce48fe8bb180954fc20c5763ded5954fc20c5763ded5399f4f1d
|
||||
Binary file not shown.
Binary file not shown.
@ -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
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
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
BIN
tone/AC0.mp3
Normal file
Binary file not shown.
BIN
tone/AC0.wtg
Normal file
BIN
tone/AC0.wtg
Normal file
Binary file not shown.
BIN
tone/AC1.mp3
Normal file
BIN
tone/AC1.mp3
Normal file
Binary file not shown.
BIN
tone/AC1.wtg
Normal file
BIN
tone/AC1.wtg
Normal file
Binary file not shown.
BIN
tone/AC2.mp3
Normal file
BIN
tone/AC2.mp3
Normal file
Binary file not shown.
BIN
tone/AC2.wtg
Normal file
BIN
tone/AC2.wtg
Normal file
Binary file not shown.
BIN
tone/BFAN0.mp3
Normal file
BIN
tone/BFAN0.mp3
Normal file
Binary file not shown.
BIN
tone/BFAN0.wtg
Normal file
BIN
tone/BFAN0.wtg
Normal file
Binary file not shown.
BIN
tone/BFAN1.mp3
Normal file
BIN
tone/BFAN1.mp3
Normal file
Binary file not shown.
BIN
tone/BFAN1.wtg
Normal file
BIN
tone/BFAN1.wtg
Normal file
Binary file not shown.
BIN
tone/BFAN2.mp3
Normal file
BIN
tone/BFAN2.mp3
Normal file
Binary file not shown.
BIN
tone/BFAN2.wtg
Normal file
BIN
tone/BFAN2.wtg
Normal file
Binary file not shown.
BIN
tone/BFAN3.mp3
Normal file
BIN
tone/BFAN3.mp3
Normal file
Binary file not shown.
BIN
tone/BFAN3.wtg
Normal file
BIN
tone/BFAN3.wtg
Normal file
Binary file not shown.
BIN
tone/BFAN4.mp3
Normal file
BIN
tone/BFAN4.mp3
Normal file
Binary file not shown.
BIN
tone/BFAN4.wtg
Normal file
BIN
tone/BFAN4.wtg
Normal file
Binary file not shown.
BIN
tone/BFAN5.mp3
Normal file
BIN
tone/BFAN5.mp3
Normal file
Binary file not shown.
BIN
tone/BFAN5.wtg
Normal file
BIN
tone/BFAN5.wtg
Normal file
Binary file not shown.
BIN
tone/BFAN6.mp3
Normal file
BIN
tone/BFAN6.mp3
Normal file
Binary file not shown.
BIN
tone/BFAN6.wtg
Normal file
BIN
tone/BFAN6.wtg
Normal file
Binary file not shown.
BIN
tone/CFAN0.mp3
Normal file
BIN
tone/CFAN0.mp3
Normal file
Binary file not shown.
BIN
tone/CFAN0.wtg
Normal file
BIN
tone/CFAN0.wtg
Normal file
Binary file not shown.
BIN
tone/CFAN1.mp3
Normal file
BIN
tone/CFAN1.mp3
Normal file
Binary file not shown.
BIN
tone/CFAN1.wtg
Normal file
BIN
tone/CFAN1.wtg
Normal file
Binary file not shown.
BIN
tone/CFAN2.mp3
Normal file
BIN
tone/CFAN2.mp3
Normal file
Binary file not shown.
BIN
tone/CFAN2.wtg
Normal file
BIN
tone/CFAN2.wtg
Normal file
Binary file not shown.
BIN
tone/CFAN3.mp3
Normal file
BIN
tone/CFAN3.mp3
Normal file
Binary file not shown.
BIN
tone/CFAN3.wtg
Normal file
BIN
tone/CFAN3.wtg
Normal file
Binary file not shown.
BIN
tone/CFAN4.mp3
Normal file
BIN
tone/CFAN4.mp3
Normal file
Binary file not shown.
BIN
tone/CFAN4.wtg
Normal file
BIN
tone/CFAN4.wtg
Normal file
Binary file not shown.
BIN
tone/CFAN5.mp3
Normal file
BIN
tone/CFAN5.mp3
Normal file
Binary file not shown.
BIN
tone/CFAN5.wtg
Normal file
BIN
tone/CFAN5.wtg
Normal file
Binary file not shown.
BIN
tone/CFAN6.mp3
Normal file
BIN
tone/CFAN6.mp3
Normal file
Binary file not shown.
BIN
tone/CFAN6.wtg
Normal file
BIN
tone/CFAN6.wtg
Normal file
Binary file not shown.
BIN
tone/FFAN0.mp3
Normal file
BIN
tone/FFAN0.mp3
Normal file
Binary file not shown.
BIN
tone/FFAN0.wtg
Normal file
BIN
tone/FFAN0.wtg
Normal file
Binary file not shown.
BIN
tone/FFAN1.mp3
Normal file
BIN
tone/FFAN1.mp3
Normal file
Binary file not shown.
BIN
tone/FFAN1.wtg
Normal file
BIN
tone/FFAN1.wtg
Normal file
Binary file not shown.
BIN
tone/FFAN2.mp3
Normal file
BIN
tone/FFAN2.mp3
Normal file
Binary file not shown.
BIN
tone/FFAN2.wtg
Normal file
BIN
tone/FFAN2.wtg
Normal file
Binary file not shown.
BIN
tone/FFAN3.mp3
Normal file
BIN
tone/FFAN3.mp3
Normal file
Binary file not shown.
BIN
tone/FFAN3.wtg
Normal file
BIN
tone/FFAN3.wtg
Normal file
Binary file not shown.
BIN
tone/FFAN4.mp3
Normal file
BIN
tone/FFAN4.mp3
Normal file
Binary file not shown.
BIN
tone/FFAN4.wtg
Normal file
BIN
tone/FFAN4.wtg
Normal file
Binary file not shown.
BIN
tone/FFAN5.mp3
Normal file
BIN
tone/FFAN5.mp3
Normal file
Binary file not shown.
BIN
tone/FFAN5.wtg
Normal file
BIN
tone/FFAN5.wtg
Normal file
Binary file not shown.
BIN
tone/FFAN6.mp3
Normal file
BIN
tone/FFAN6.mp3
Normal file
Binary file not shown.
BIN
tone/FFAN6.wtg
Normal file
BIN
tone/FFAN6.wtg
Normal file
Binary file not shown.
BIN
tone/LT0.mp3
Normal file
BIN
tone/LT0.mp3
Normal file
Binary file not shown.
BIN
tone/LT0.wtg
Normal file
BIN
tone/LT0.wtg
Normal file
Binary file not shown.
BIN
tone/LT1.mp3
Normal file
BIN
tone/LT1.mp3
Normal file
Binary file not shown.
BIN
tone/LT1.wtg
Normal file
BIN
tone/LT1.wtg
Normal file
Binary file not shown.
BIN
tone/LT2.mp3
Normal file
BIN
tone/LT2.mp3
Normal file
Binary file not shown.
BIN
tone/LT2.wtg
Normal file
BIN
tone/LT2.wtg
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user