| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179 |
- #ifndef __FM_CONFIG_H__
- #define __FM_CONFIG_H__
- #include "fm_typedef.h"
- #include "fm_rds.h"
- #include "fm_dbg.h"
- #include "fm_err.h"
- #include "fm_stdlib.h"
- #include "fm_interface.h"
- /* band */
- #define FM_BAND_UNKNOWN 0
- #define FM_BAND_UE 1 /* US/Europe band 87.5MHz ~ 108MHz (DEFAULT) */
- #define FM_BAND_JAPAN 2 /* Japan band 76MHz ~ 90MHz */
- #define FM_BAND_JAPANW 3 /* Japan wideband 76MHZ ~ 108MHz */
- #define FM_BAND_SPECIAL 4 /* special band between 76MHZ and 108MHz */
- #define FM_BAND_DEFAULT FM_BAND_UE
- #define FM_RAIDO_BAND FM_BAND_UE
- #define FM_FREQ_MIN FM_RX_BAND_FREQ_L
- #define FM_FREQ_MAX FM_RX_BAND_FREQ_H
- #define FM_UE_FREQ_MIN 8750
- #define FM_UE_FREQ_MAX 10800
- #define FM_JP_FREQ_MIN 7600
- #define FM_JP_FREQ_MAX 10800
- #define FM_RX_BAND_FREQ_L 8750 /* FM radio special band low freq(Default 87.5MHz) */
- #define FM_RX_BAND_FREQ_H 10800 /* FM radio special band high freq(Default 108.0MHz) */
- /* TX */
- #define FM_TX_SCAN_HOLE_LOW 9230 /* 92.3MHz~95.4MHz should not show to user */
- #define FM_TX_SCAN_HOLE_HIGH 9540 /* 92.3MHz~95.4MHz should not show to user */
- /* space */
- #define FM_SPACE_UNKNOWN 0
- #define FM_SPACE_100K 1
- #define FM_SPACE_200K 2
- #define FM_SPACE_50K 5
- #ifdef CONFIG_MTK_FM_50KHZ_SUPPORT
- #define FM_SPACE_DEFAULT FM_SPACE_50K
- #else
- #define FM_SPACE_DEFAULT FM_SPACE_100K
- #endif
- #define FM_TX_SCAN_UP (0)
- #define FM_TX_SCAN_DOWN (1)
- #define FM_TX_SCAN_MAX 10
- #define FM_TX_SCAN_MIN 1
- /* seek direction */
- #define FM_SEEK_UP 0
- #define FM_SEEK_DOWN 1
- #define FM_CHIP_AR1000 0x1000
- #define FM_CHIP_MT5192 0x91
- #define FM_CHIP_MT5193 0x92
- #define FM_CHIP_MT6616 0x6616
- #define FM_CHIP_MT6626 0x6626
- #define FM_CHIP_MT6628 0x6628
- #define FM_CHIP_MT6620 0x6620
- #define FM_CHIP_MT6627 0x6627
- #define FM_CHIP_MT6580 0x6580
- #define FM_CHIP_UNSUPPORTED 0xffff
- enum fm_cfg_parser_state {
- FM_CFG_STAT_NONE = 0,
- FM_CFG_STAT_GROUP,
- FM_CFG_STAT_KEY,
- FM_CFG_STAT_VALUE,
- FM_CFG_STAT_COMMENT
- };
- typedef enum fm_cfg_parser_state fm_cfg_parser_state_t;
- #define COMMENT_CHAR '#'
- #define DELIMIT_CHAR '='
- #define isspace(a) ((a) == 0x20)
- #define FAKE_CH_MAX 10
- #define FM_CUST_CFG_PATH "/etc/fm_cust.cfg"
- struct fm_rx_cust_cfg {
- fm_s32 desene_rssi_th;
- fm_s32 pamd_th;
- fm_s32 mr_th;
- fm_s32 atdc_th;
- fm_s32 prx_th;
- fm_s32 atdev_th;
- fm_s32 short_ana_rssi_th;
- fm_s32 long_ana_rssi_th;
- fm_s32 cqi_th;
- /* fm_u16 mr_th; */
- fm_s32 smg_th;
- fm_s32 scan_ch_size;
- fm_s32 seek_space;
- fm_s32 band;
- fm_s32 band_freq_l;
- fm_s32 band_freq_h;
- fm_s32 scan_sort;
- fm_s32 fake_ch[FAKE_CH_MAX];
- fm_s32 fake_ch_num;
- fm_s32 fake_ch_rssi_th;
- fm_s32 deemphasis;
- fm_s32 osc_freq;
- };
- struct fm_tx_cust_cfg {
- fm_s32 scan_hole_low;
- fm_s32 scan_hole_high;
- fm_s32 power_level;
- fm_s32 pamd_th;
- fm_s32 mr_th;
- fm_s32 smg_th;
- };
- typedef struct {
- struct fm_rx_cust_cfg rx_cfg;
- struct fm_tx_cust_cfg tx_cfg;
- fm_audio_info_t aud_cfg;
- } fm_cust_cfg;
- enum fm_cust_cfg_op {
- FM_CFG_RX_RSSI_TH_LONG = 0,
- FM_CFG_RX_RSSI_TH_SHORT,
- FM_CFG_RX_CQI_TH,
- FM_CFG_RX_MR_TH,
- FM_CFG_RX_SMG_TH,
- FM_CFG_RX_SCAN_CH_SIZE,
- FM_CFG_RX_SEEK_SPACE,
- FM_CFG_RX_BAND,
- FM_CFG_RX_BAND_FREQ_L,
- FM_CFG_RX_BAND_FREQ_H,
- FM_CFG_RX_SCAN_SORT,
- FM_CFG_RX_FAKE_CH_NUM,
- FM_CFG_RX_FAKE_CH_RSSI,
- FM_CFG_RX_FAKE_CH,
- FM_CFG_RX_DEEMPHASIS,
- FM_CFG_RX_OSC_FREQ,
- FM_CFG_TX_SCAN_HOLE_LOW,
- FM_CFG_TX_SCAN_HOLE_HIGH,
- FM_CFG_TX_PWR_LEVEL,
- FM_CFG_MAX
- };
- typedef fm_s32(*CFG_HANDLER) (fm_s8 *grp, fm_s8 *key, fm_s8 *val, fm_cust_cfg *cfg);
- extern fm_s32 to_upper_n(fm_s8 *str, fm_s32 len);
- extern fm_s32 check_hex_str(fm_s8 *str, fm_s32 len);
- extern fm_s32 check_dec_str(fm_s8 *str, fm_s32 len);
- extern fm_s32 ascii_to_hex(fm_s8 *in_ascii, fm_u16 *out_hex);
- extern fm_s32 ascii_to_dec(fm_s8 *in_ascii, fm_s32 *out_dec);
- extern fm_s32 trim_string(fm_s8 **start);
- extern fm_s32 trim_path(fm_s8 **start);
- extern fm_s32 cfg_parser(fm_s8 *buffer, CFG_HANDLER handler, fm_cust_cfg *cfg);
- extern fm_s32 cfg_item_match(fm_s8 *src_key, fm_s8 *src_val, fm_s8 *dst_key, fm_s32 *dst_val);
- extern fm_s32 fm_cust_config(const fm_s8 *filepath);
- extern fm_u16 fm_cust_config_fetch(enum fm_cust_cfg_op op_code);
- #ifdef MT6628_FM
- extern fm_s32 MT6628fm_cust_config_setup(const fm_s8 *filepath);
- extern fm_u16 MT6628fm_cust_config_fetch(enum fm_cust_cfg_op op_code);
- #endif
- #ifdef MT6620_FM
- extern fm_s32 MT6620fm_cust_config_setup(const fm_s8 *filepath);
- extern fm_u16 MT6620fm_cust_config_fetch(enum fm_cust_cfg_op op_code);
- #endif
- #ifdef MT6627_FM
- extern fm_s32 MT6627fm_cust_config_setup(const fm_s8 *filepath);
- extern fm_u16 MT6627fm_cust_config_fetch(enum fm_cust_cfg_op op_code);
- #endif
- #ifdef MT6580_FM
- extern fm_s32 MT6580fm_cust_config_setup(const fm_s8 *filepath);
- extern fm_u16 MT6580fm_cust_config_fetch(enum fm_cust_cfg_op op_code);
- #endif
- #ifdef MT6630_FM
- extern fm_s32 MT6630fm_cust_config_setup(const fm_s8 *filepath);
- extern fm_u16 MT6630fm_cust_config_fetch(enum fm_cust_cfg_op op_code);
- #endif
- #endif /* __FM_CONFIG_H__ */
|