KT24-1110_65E-HA-651B/apps/common/device/fm/fm_inside/fm_inside.c
2024-11-10 18:44:17 +08:00

111 lines
2.4 KiB
C

#include "app_config.h"
#include "system/includes.h"
#include "fm/fm_manage.h"
#include "asm/fm_inside_api.h"
#include "asm/dac.h"
#include "audio_config.h"
#include "media/audio_base.h"
#include "overlay_code.h"
#include "clock_cfg.h"
#include "fm_inside.h"
#if TCFG_APP_FM_EN
#if(TCFG_FM_INSIDE_ENABLE == ENABLE)
int fm_dec_open(u8 source, u32 sample_rate);
void fm_dec_close(void);
void fm_dig_mute(u8 mute);
///--------------------------FM_INSIDE_API------------------------
void fm_inside_init(void *priv)
{
puts("fm_insice_init\n");
overlay_load_code(OVERLAY_FM);
clock_add_set(FM_INSIDE_CLK);
/* fm_dec_open(0xff, 37500); */
/* fm_inside_default_config(); */
/* #if CONFIG_CLOCK_BY_TYPE
u32 fm_clk = matching_code_type(AUDIO_ANOTHER_CLK_TYPE_FM, 1);
fm_inside_io_ctrl(SET_FM_INSIDE_SYS_CLK, fm_clk / 1000000L);
#else
fm_inside_io_ctrl(SET_FM_INSIDE_SYS_CLK, FM_CLOCK / 1000000L);
#endif */
fm_inside_mem_init();
fm_inside_io_ctrl(SET_FM_INSIDE_AGC_PARAM, FMSCAN_AGC, FMSCAN_ADD_DIFFER, FMSCAN_P_DIFFER, FMSCAN_N_DIFFER);
fm_inside_io_ctrl(SET_FM_INSIDE_COUNTRY_PARAM, REAL_FREQ_MIN, REAL_FREQ_MAX, FREQ_STEP);
fm_inside_io_ctrl(SET_FM_INSIDE_SCAN_ARG1, FMSCAN_SEEK_CNT_MIN, FMSCAN_SEEK_CNT_MAX, FMSCAN_CNR, FM_IF);
fm_inside_io_ctrl(SET_FM_INSIDE_SCAN_ARG2, FMSCAN_960_CNR, FMSCAN_1080_CNR);
fm_inside_on(); //fm analog init
fm_inside_set_stereo(0); //set[0,128], 0 mono, 1~128 stereo.
}
bool fm_inside_set_fre(void *priv, u16 fre)
{
u8 ret;
u32 freq ;
//fm_printf("[%d]", fre);
freq = fre * 10;
ret = fm_inside_freq_set(freq);
return ret;
}
bool fm_inside_read_id(void *priv)
{
return (bool)fm_inside_id_read();
}
void fm_inside_powerdown(void *priv)
{
fm_inside_off();
/* dac_channel_off(FM_INSI_CHANNEL, FADE_ON); */
fm_dec_close();
clock_remove_set(FM_INSIDE_CLK);
}
void fm_inside_mute(void *priv, u8 flag)
{
if (!flag) {
/* fm_dec_open(0xff, 37500); */
}
if (flag) {
fm_dig_mute(flag);
}
//fm_inside_int_set(!flag);
if (!flag) {
/* os_time_dly(3); */
fm_dig_mute(flag);
}
if (flag) {
/* fm_dec_close(); */
}
}
REGISTER_FM(fm_inside) = {
.logo = "fm_inside",
.init = fm_inside_init,
.close = fm_inside_powerdown,
.set_fre = fm_inside_set_fre,
.mute = fm_inside_mute,
.read_id = fm_inside_read_id,
};
#endif // FM_INSIDE
#endif