/* * Copyright (c) Hisilicon Technologies Co., Ltd. 2017-2021. All rights reserved. * Description: SAT IAPI interface * Author: Hisilicon * Created: 2017-06-30 */ #ifndef __IAPI_SAT_H__ #define __IAPI_SAT_H__ #include "uapi_frontend.h" #include "drv_frontend_struct.h" #include "pthread.h" #ifdef __cplusplus #if __cplusplus extern "C" { #endif #endif /* __cplusplus */ #define SAT_C_MIN (3000) #define SAT_C_MAX (4200) #define SAT_KU_MIN (10600) #define SAT_KU_MAX (12750) #define SAT_IF_MIN_KHZ (950000) #define SAT_IF_MAX_KHZ (2150000) #define SAT_C_MIN_KHZ (3000000) #define SAT_C_MAX_KHZ (4200000) #define SAT_KU_MIN_KHZ (10600000) #define SAT_KU_MAX_KHZ (12750000) #define SAT_SYMBOLRATE_MAX (72000000) #define SAT_IF_MIN (950) #define SAT_IF_MAX (2150) #define SAT_IF_C_H_MIN (1550) #define SAT_IF_C_H_MAX (2150) #define SAT_IF_C_L_MIN (950) #define SAT_IF_C_L_MAX (1550) #define SAT_IF_KU_H_MIN_1 (1100) #define SAT_IF_KU_H_MAX_1 (2150) #define SAT_IF_KU_H_MIN_2 (950) #define SAT_IF_KU_H_MAX_2 (2000) #define SAT_IF_KU_L_MIN (950) #define SAT_IF_KU_L_MAX (1950) #define SAT_LO_C_L (5150) #define SAT_LO_C_H (5750) #define SAT_LO_KU_L_1 (9750) #define SAT_LO_KU_H_1 (10600) #define SAT_LO_KU_L_2 (9750) #define SAT_LO_KU_H_2 (10750) #define MAX_BLINDSCAN_TIMES (4) #define SAT_DOWNLINK_FREQ_KU_MID (11700) #define BUF_TP_NUM 512 /* 1024 TQE check */ #define BS_ACTION_TIME_PERCENT 40 typedef struct { td_u32 port; uapi_frontend_blind_scan_para para; } blindscan_para; typedef struct { td_u32 tp_num; uapi_frontend_sat_tp_info tps[BUF_TP_NUM]; } blindscan_tp_result; typedef struct { uapi_frontend_lnb_22k lnb_22k; uapi_frontend_polarization polar; td_u16 start_freq; /* MHz */ td_u16 stop_freq; /* MHz */ } blindscan_condition_time; typedef struct { td_u32 scan_times; blindscan_condition_time scan_cond[MAX_BLINDSCAN_TIMES]; } blindscan_ctrl_time; typedef struct { uapi_frontend_lnb_config lnb_config; /* LNB configuration */ uapi_frontend_lnb_power lnb_power; /* LNB power */ uapi_frontend_polarization polar; /* LNB polarization */ uapi_frontend_lnb_22k lnb_22k; /* LNB 22K on or off */ pthread_t* blindscan_monitor; /* Blind scan thread */ td_bool blindscan_stop; /* Blind scan stop flag */ td_bool blindscan_busy; /* Blind scan stop flag */ uapi_frontend_switch_22k_sta switch_22k; uapi_frontend_switch_tone_burst_sta tone_burst; } sat_status; typedef struct { ext_drv_frontend_fec_rate fec_rate; td_float refer_snr; } sat_refer_snr; #define get_refer_snr(ref, array, code_rate) do { \ td_u32 i = 0; \ for (i = 0; i < sizeof(array) / sizeof(sat_refer_snr); i++) { \ if (((array)[i].fec_rate) == (code_rate)) { \ (ref) = ((array)[i].refer_snr); \ } \ } \ } while (0) typedef struct { td_u16 signal_level; td_s16 signal_dbuv; } tuner_signal_level_sat; sat_status *sat_get_status(td_u32 port); td_s32 sat_init(td_void); td_s32 sat_get_default_timeout(td_u32 tuner_id, const uapi_frontend_connect_para *connect_para, td_u32 *timeout_ms); td_s32 sat_connect(td_u32 tuner_id, const uapi_frontend_connect_para *connect_para, td_u32 timeout); td_s32 sat_get_real_freq_symb(td_u32 tuner_id, td_u32 *freq, td_u32 *symb); td_s32 sat_get_signal_quality(td_u32 tuner_id, td_double snr, td_u32 *signal_quality); #ifdef __cplusplus #if __cplusplus } #endif #endif /* __cplusplus */ #endif