KT25-0812_82A-UART/apps/kaotings/kt.c

123 lines
2.5 KiB
C
Raw Normal View History

2025-08-21 08:15:01 +00:00
#include "kt.h"
#include "app_task.h"
#include "music_player.h"
2025-08-27 16:29:07 +00:00
typedef struct _kt_var_
{
int tid;
struct
{
u8 play_mode; //0:none,1:num,2:name,3:fullname
u8 play_num;
char play_name[32];
u8 cycle_mode;
}play_status;
} _kt_var;
2025-08-21 08:15:01 +00:00
2025-08-27 16:29:07 +00:00
static _kt_var kt_var;
#define __this (&kt_var)
2025-08-21 08:15:01 +00:00
void kt_busy_ctl_init(void)
{
2025-08-27 16:29:07 +00:00
/* pa ctl-mute*/
// gpio_set_direction(KT_PAMUTE_PORT, 0);
// gpio_set_pull_up(KT_PAMUTE_PORT, 0);
// gpio_set_pull_down(KT_PAMUTE_PORT, 0);
// gpio_set_hd(KT_PAMUTE_PORT, 1);
2025-08-21 08:15:01 +00:00
2025-08-27 16:29:07 +00:00
// gpio_set_output_value(KT_PAMUTE_PORT, 1);
2025-08-21 08:15:01 +00:00
gpio_set_direction(KT_BUSY_PORT, 0);
gpio_set_pull_up(KT_BUSY_PORT, 0);
gpio_set_pull_down(KT_BUSY_PORT, 0);
gpio_set_hd(KT_BUSY_PORT, 1);
gpio_set_output_value(KT_BUSY_PORT, 0);
}
void timer_cb(void *arg)
{
2025-08-27 16:29:07 +00:00
#if 0
2025-08-21 08:15:01 +00:00
if (app_get_curr_task() == APP_MUSIC_TASK)
{
if (music_player_get_play_status() == FILE_DEC_STATUS_PLAY)
{
gpio_set_output_value(KT_BUSY_PORT, 1);
}
else
{
gpio_set_output_value(KT_BUSY_PORT, 0);
2025-08-27 16:29:07 +00:00
}
2025-08-21 08:15:01 +00:00
}
else
{
gpio_set_output_value(KT_BUSY_PORT, 1);
2025-08-27 16:29:07 +00:00
}
#endif
2025-08-21 08:15:01 +00:00
}
void start_timer(void)
{
2025-08-27 16:29:07 +00:00
if (__this->tid)
{
sys_timer_del(__this->tid);
}
__this->tid = sys_timer_add(NULL, timer_cb, 50);
}
u8 kt_get_cycle(void)
{
return __this->play_status.cycle_mode;
}
void kt_change_cycle(u8 cycle)
{
__this->play_status.cycle_mode = cycle;
if (cycle != FCYCLE_ONE)
2025-08-21 08:15:01 +00:00
{
memset(__this->play_status.play_name, 0, sizeof(__this->play_status.play_name));
2025-08-21 08:15:01 +00:00
}
}
2025-08-27 16:29:07 +00:00
void kt_set_last_play(u8 mode, u8 num, char *name)
{
printf("kt_set_last_play mode = %d, num = %d, name = %s\n", mode, num, name);
__this->play_status.play_mode = mode;
if (mode == 1)
{
printf("kt_set_last_play num = %d\n", num);
__this->play_status.play_num = num;
}
else
{
printf("kt_set_last_play name = %s\n", name);
memset(__this->play_status.play_name, 0, sizeof(__this->play_status.play_name));
strcpy(__this->play_status.play_name, name);
printf("kt_set_last_play play_name = %s\n", __this->play_status.play_name);
}
}
void kt_get_last_play(u8 *mode, u8 *num, char *name)
{
*mode = __this->play_status.play_mode;
printf("kt_get_last_play mode = %d\n", *mode);
if (__this->play_status.play_mode == 1)
{
*num = __this->play_status.play_num;
printf("kt_get_last_play num = %d\n", *num);
}
else
{
strcpy(name, __this->play_status.play_name);
printf("kt_get_last_play name = %s\n", name);
}
}
2025-08-21 08:15:01 +00:00
void kt_init(void)
{
2025-08-27 16:29:07 +00:00
memset(&__this->play_status, 0, sizeof(__this->play_status));
//kt_busy_ctl_init();
2025-08-21 08:15:01 +00:00
kt_uart_init();
start_timer();
}