/* * Abilis Systems Single DVB-T Receiver * Copyright (C) 2008 Pierrick Hascoet * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _AS10X_TYPES_H_ #define _AS10X_TYPES_H_ #include "as10x_handle.h" /*********************************/ /* MACRO DEFINITIONS */ /*********************************/ /* bandwidth constant values */ #define BW_5_MHZ 0x00 #define BW_6_MHZ 0x01 #define BW_7_MHZ 0x02 #define BW_8_MHZ 0x03 /* hierarchy priority selection values */ #define HIER_NO_PRIORITY 0x00 #define HIER_LOW_PRIORITY 0x01 #define HIER_HIGH_PRIORITY 0x02 /* constellation available values */ #define CONST_QPSK 0x00 #define CONST_QAM16 0x01 #define CONST_QAM64 0x02 #define CONST_UNKNOWN 0xFF /* hierarchy available values */ #define HIER_NONE 0x00 #define HIER_ALPHA_1 0x01 #define HIER_ALPHA_2 0x02 #define HIER_ALPHA_4 0x03 #define HIER_UNKNOWN 0xFF /* interleaving available values */ #define INTLV_NATIVE 0x00 #define INTLV_IN_DEPTH 0x01 #define INTLV_UNKNOWN 0xFF /* code rate available values */ #define CODE_RATE_1_2 0x00 #define CODE_RATE_2_3 0x01 #define CODE_RATE_3_4 0x02 #define CODE_RATE_5_6 0x03 #define CODE_RATE_7_8 0x04 #define CODE_RATE_UNKNOWN 0xFF /* guard interval available values */ #define GUARD_INT_1_32 0x00 #define GUARD_INT_1_16 0x01 #define GUARD_INT_1_8 0x02 #define GUARD_INT_1_4 0x03 #define GUARD_UNKNOWN 0xFF /* transmission mode available values */ #define TRANS_MODE_2K 0x00 #define TRANS_MODE_8K 0x01 #define TRANS_MODE_4K 0x02 #define TRANS_MODE_UNKNOWN 0xFF /* DVBH signalling available values */ #define TIMESLICING_PRESENT 0x01 #define MPE_FEC_PRESENT 0x02 /* tune state available */ #define TUNE_STATUS_NOT_TUNED 0x00 #define TUNE_STATUS_IDLE 0x01 #define TUNE_STATUS_LOCKING 0x02 #define TUNE_STATUS_SIGNAL_DVB_OK 0x03 #define TUNE_STATUS_STREAM_DETECTED 0x04 #define TUNE_STATUS_STREAM_TUNED 0x05 #define TUNE_STATUS_ERROR 0xFF /* available TS FID filter types */ #define TS_PID_TYPE_TS 0 #define TS_PID_TYPE_PSI_SI 1 #define TS_PID_TYPE_MPE 2 /* number of echos available */ #define MAX_ECHOS 15 /* Context types */ #define CONTEXT_LNA 1010 #define CONTEXT_ELNA_HYSTERESIS 4003 #define CONTEXT_ELNA_GAIN 4004 #define CONTEXT_MER_THRESHOLD 5005 #define CONTEXT_MER_OFFSET 5006 #define CONTEXT_IR_STATE 7000 #define CONTEXT_TSOUT_MSB_FIRST 7004 #define CONTEXT_TSOUT_FALLING_EDGE 7005 /* Configuration modes */ #define CFG_MODE_ON 0 #define CFG_MODE_OFF 1 #define CFG_MODE_AUTO 2 #pragma pack(1) struct as10x_tps { uint8_t constellation; uint8_t hierarchy; uint8_t interleaving_mode; uint8_t code_rate_HP; uint8_t code_rate_LP; uint8_t guard_interval; uint8_t transmission_mode; uint8_t DVBH_mask_HP; uint8_t DVBH_mask_LP; uint16_t cell_ID; }; struct as10x_tune_args { /* frequency */ uint32_t freq; /* bandwidth */ uint8_t bandwidth; /* hierarchy selection */ uint8_t hier_select; /* constellation */ uint8_t constellation; /* hierarchy */ uint8_t hierarchy; /* interleaving mode */ uint8_t interleaving_mode; /* code rate */ uint8_t code_rate; /* guard interval */ uint8_t guard_interval; /* transmission mode */ uint8_t transmission_mode; }; struct as10x_tune_status { /* tune status */ uint8_t tune_state; /* signal strength */ int16_t signal_strength; /* packet error rate 10^-4 */ uint16_t PER; /* bit error rate 10^-4 */ uint16_t BER; }; struct as10x_demod_stats { /* frame counter */ uint32_t frame_count; /* Bad frame counter */ uint32_t bad_frame_count; /* Number of wrong bytes fixed by Reed-Solomon */ uint32_t bytes_fixed_by_rs; /* Averaged MER */ uint16_t mer; /* statistics calculation state indicator (started or not) */ uint8_t has_started; }; struct as10x_ts_filter { uint16_t pid; /** valid PID value 0x00 : 0x2000 */ uint8_t type; /** Red TS_PID_TYPE_ values */ uint8_t idx; /** index in filtering table */ }; struct as10x_register_value { uint8_t mode; union { uint8_t value8; /* 8 bit value */ uint16_t value16; /* 16 bit value */ uint32_t value32; /* 32 bit value */ }u; }; #pragma pack() struct as10x_register_addr { /* register addr */ uint32_t addr; /* register mode access */ uint8_t mode; }; #endif