#include "kt.h" #include "avctp_user.h" #include "key_event_deal.h" #include "app_task.h" //#include "audio_eq.h" //#include "media/audio_eq_drc_apply.h" #include "audio_dec.h" typedef struct _kts_ { int timer; u32 t_cnt; // 上电标志 u8 led_flag; // u8 conn_flag; u8 volume; // 0-30 s8 treble; // -12-12 s8 bass; // -12-12 } _kts; static _kts kts_var; #define __this (&kts_var) void kt_boot_init(void) { adc_add_sample_ch(KTCFG_BASS_AD_CHANNEL); gpio_set_die(KTCFG_BASS_AD_PIN, 0); gpio_set_direction(KTCFG_BASS_AD_PIN, 1); gpio_set_pull_up(KTCFG_BASS_AD_PIN, 0); gpio_set_pull_down(KTCFG_BASS_AD_PIN, 0); adc_add_sample_ch(KTCFG_TREBLE_AD_CHANNEL); gpio_set_die(KTCFG_TREBLE_AD_PIN, 0); gpio_set_direction(KTCFG_TREBLE_AD_PIN, 1); gpio_set_pull_up(KTCFG_TREBLE_AD_PIN, 0); gpio_set_pull_down(KTCFG_TREBLE_AD_PIN, 0); adc_add_sample_ch(KTCFG_VOLUME_AD_CHANNEL); gpio_set_die(KTCFG_VOLUME_AD_PIN, 0); gpio_set_direction(KTCFG_VOLUME_AD_PIN, 1); gpio_set_pull_up(KTCFG_VOLUME_AD_PIN, 0); gpio_set_pull_down(KTCFG_VOLUME_AD_PIN, 0); gpio_set_pull_up(KTCFG_PA_MUTE_PIN, 0); gpio_set_pull_down(KTCFG_PA_MUTE_PIN, 0); gpio_set_direction(KTCFG_PA_MUTE_PIN, 0); PA_MUTE(); /* gpio_set_pull_up(KTCFG_PWR_LED_PIN, 0); gpio_set_pull_down(KTCFG_PWR_LED_PIN, 0); gpio_set_direction(KTCFG_PWR_LED_PIN, 0); gpio_set_output_value(KTCFG_PWR_LED_PIN, 1); gpio_set_pull_up(KTCFG_BAK_LED_PIN, 0); gpio_set_pull_down(KTCFG_BAK_LED_PIN, 0); gpio_set_direction(KTCFG_BAK_LED_PIN, 0); gpio_set_output_value(KTCFG_BAK_LED_PIN, 0); */ gpio_set_pull_up(KTCFG_BT_LED_PIN, 0); gpio_set_pull_down(KTCFG_BT_LED_PIN, 0); gpio_set_direction(KTCFG_BT_LED_PIN, 0); gpio_set_output_value(KTCFG_BT_LED_PIN, 0); BT_LED_OFF(); } static void led_tim_callback(void) { app_task_put_key_msg(KEY_USER_CHECK_AD, 0); if (app_get_curr_task() == APP_BT_TASK) { if (get_bt_connect_status() < BT_STATUS_CONNECTING) { __this->t_cnt++; if (__this->t_cnt >= 5) { __this->t_cnt = 0; if (__this->led_flag == 0) { __this->led_flag = 1; BT_LED_ON(); } else { __this->led_flag = 0; BT_LED_OFF(); } } } else { __this->t_cnt = 0; BT_LED_OFF(); __this->led_flag = 0; } } else { __this->t_cnt = 0; BT_LED_ON(); } if (get_bt_connect_status() < BT_STATUS_CONNECTING) { if (__this->led_flag == 0) { __this->led_flag = 1; BT_LED_ON(); } else { __this->led_flag = 0; BT_LED_OFF(); } } else { BT_LED_ON(); } } static void start_timer(void) { if (__this->timer) { sys_timer_del(__this->timer); } __this->t_cnt = 0; __this->timer = sys_timer_add(NULL, led_tim_callback, 100); } void user_eq_tre(int freq, int gain) { struct high_bass parm = {0}; parm.freq = freq; parm.gain = gain; mix_out_high_bass(AUDIO_EQ_HIGH, &parm); } void user_eq_bass(int freq, int gain) { struct high_bass parm = {0}; parm.freq = freq; parm.gain = gain; mix_out_high_bass(AUDIO_EQ_BASS, &parm); } void kt_init(void) { __this->bass = (adc_get_value(KTCFG_BASS_AD_CHANNEL) * 24 / 1023) - 12; user_eq_bass(0, __this->bass); __this->treble = (adc_get_value(KTCFG_TREBLE_AD_CHANNEL) * 24 / 1023) - 12; user_eq_tre(1, __this->treble); __this->volume = (adc_get_value(KTCFG_VOLUME_AD_CHANNEL) * 30 / 1023); app_audio_set_volume(APP_AUDIO_STATE_MUSIC, __this->volume, 1); start_timer(); } void bled_set(void) { __this->t_cnt = 10; // BAK_LED_ON(); // PWR_LED_ON(); } u8 kt_key_event_filter_after(int key_event) { u8 ret = false; switch (key_event) { case KEY_USER_CHECK_AD: //led_tim_callback(); //printf("KEY_USER_CHECK_AD\n"); { //u32 val = adc_get_value(KTCFG_VOLUME_AD_CHANNEL); // 0-1023 s8 vol = (adc_get_value(KTCFG_VOLUME_AD_CHANNEL) * 30 / 1023); if (vol != __this->volume) { printf("volume: %d\n", vol); __this->volume = vol; app_audio_set_volume(APP_AUDIO_STATE_MUSIC, __this->volume, 1); } // 读取BASS AD值并转换为-12到12的范围 s8 bass = (adc_get_value(KTCFG_BASS_AD_CHANNEL) * 24 / 1023) - 12; if (bass != __this->bass) { printf("bass: %d\n", bass); __this->bass = bass; user_eq_bass(0, __this->bass); } // 读取TREBLE AD值并转换为-12到12的范围 s8 treble = (adc_get_value(KTCFG_TREBLE_AD_CHANNEL) * 24 / 1023) - 12; if (treble != __this->treble) { printf("treble: %d\n", treble); __this->treble = treble; // 调用高音EQ调整接口 user_eq_tre(0, __this->treble); } ret = true; } //printf("bass_ad_value: %d\n", adc_get_value(KTCFG_BASS_AD_CHANNEL)); //printf("treble_ad_value: %d\n", adc_get_value(KTCFG_TREBLE_AD_CHANNEL)); //printf("volume_ad_value: %d\n", adc_get_value(KTCFG_VOLUME_AD_CHANNEL)); break; case KEY_MUSIC_PP: bled_set(); break; case KEY_MUSIC_PREV: bled_set(); break; case KEY_MUSIC_NEXT: bled_set(); break; case KEY_VOL_UP: bled_set(); break; case KEY_VOL_DOWN: bled_set(); break; default: ret = false; break; } return ret; }