1/* 2 * Abilis Systems Single DVB-T Receiver 3 * Copyright (C) 2008 Pierrick Hascoet <pierrick.hascoet@abilis.com> 4 * 5 * This program is free software; you can redistribute it and/or modify 6 * it under the terms of the GNU General Public License as published by 7 * the Free Software Foundation; either version 2, or (at your option) 8 * any later version. 9 * 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 * 15 * You should have received a copy of the GNU General Public License 16 * along with this program; if not, write to the Free Software 17 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 18 */ 19#ifndef _AS10X_TYPES_H_ 20#define _AS10X_TYPES_H_ 21 22#include "as10x_handle.h" 23 24/*********************************/ 25/* MACRO DEFINITIONS */ 26/*********************************/ 27 28/* bandwidth constant values */ 29#define BW_5_MHZ 0x00 30#define BW_6_MHZ 0x01 31#define BW_7_MHZ 0x02 32#define BW_8_MHZ 0x03 33 34/* hierarchy priority selection values */ 35#define HIER_NO_PRIORITY 0x00 36#define HIER_LOW_PRIORITY 0x01 37#define HIER_HIGH_PRIORITY 0x02 38 39/* constellation available values */ 40#define CONST_QPSK 0x00 41#define CONST_QAM16 0x01 42#define CONST_QAM64 0x02 43#define CONST_UNKNOWN 0xFF 44 45/* hierarchy available values */ 46#define HIER_NONE 0x00 47#define HIER_ALPHA_1 0x01 48#define HIER_ALPHA_2 0x02 49#define HIER_ALPHA_4 0x03 50#define HIER_UNKNOWN 0xFF 51 52/* interleaving available values */ 53#define INTLV_NATIVE 0x00 54#define INTLV_IN_DEPTH 0x01 55#define INTLV_UNKNOWN 0xFF 56 57/* code rate available values */ 58#define CODE_RATE_1_2 0x00 59#define CODE_RATE_2_3 0x01 60#define CODE_RATE_3_4 0x02 61#define CODE_RATE_5_6 0x03 62#define CODE_RATE_7_8 0x04 63#define CODE_RATE_UNKNOWN 0xFF 64 65/* guard interval available values */ 66#define GUARD_INT_1_32 0x00 67#define GUARD_INT_1_16 0x01 68#define GUARD_INT_1_8 0x02 69#define GUARD_INT_1_4 0x03 70#define GUARD_UNKNOWN 0xFF 71 72/* transmission mode available values */ 73#define TRANS_MODE_2K 0x00 74#define TRANS_MODE_8K 0x01 75#define TRANS_MODE_4K 0x02 76#define TRANS_MODE_UNKNOWN 0xFF 77 78/* DVBH signalling available values */ 79#define TIMESLICING_PRESENT 0x01 80#define MPE_FEC_PRESENT 0x02 81 82/* tune state available */ 83#define TUNE_STATUS_NOT_TUNED 0x00 84#define TUNE_STATUS_IDLE 0x01 85#define TUNE_STATUS_LOCKING 0x02 86#define TUNE_STATUS_SIGNAL_DVB_OK 0x03 87#define TUNE_STATUS_STREAM_DETECTED 0x04 88#define TUNE_STATUS_STREAM_TUNED 0x05 89#define TUNE_STATUS_ERROR 0xFF 90 91/* available TS FID filter types */ 92#define TS_PID_TYPE_TS 0 93#define TS_PID_TYPE_PSI_SI 1 94#define TS_PID_TYPE_MPE 2 95 96/* number of echos available */ 97#define MAX_ECHOS 15 98 99/* Context types */ 100#define CONTEXT_LNA 1010 101#define CONTEXT_ELNA_HYSTERESIS 4003 102#define CONTEXT_ELNA_GAIN 4004 103#define CONTEXT_MER_THRESHOLD 5005 104#define CONTEXT_MER_OFFSET 5006 105#define CONTEXT_IR_STATE 7000 106#define CONTEXT_TSOUT_MSB_FIRST 7004 107#define CONTEXT_TSOUT_FALLING_EDGE 7005 108 109/* Configuration modes */ 110#define CFG_MODE_ON 0 111#define CFG_MODE_OFF 1 112#define CFG_MODE_AUTO 2 113 114struct as10x_tps { 115 uint8_t modulation; 116 uint8_t hierarchy; 117 uint8_t interleaving_mode; 118 uint8_t code_rate_HP; 119 uint8_t code_rate_LP; 120 uint8_t guard_interval; 121 uint8_t transmission_mode; 122 uint8_t DVBH_mask_HP; 123 uint8_t DVBH_mask_LP; 124 uint16_t cell_ID; 125} __packed; 126 127struct as10x_tune_args { 128 /* frequency */ 129 uint32_t freq; 130 /* bandwidth */ 131 uint8_t bandwidth; 132 /* hierarchy selection */ 133 uint8_t hier_select; 134 /* constellation */ 135 uint8_t modulation; 136 /* hierarchy */ 137 uint8_t hierarchy; 138 /* interleaving mode */ 139 uint8_t interleaving_mode; 140 /* code rate */ 141 uint8_t code_rate; 142 /* guard interval */ 143 uint8_t guard_interval; 144 /* transmission mode */ 145 uint8_t transmission_mode; 146} __packed; 147 148struct as10x_tune_status { 149 /* tune status */ 150 uint8_t tune_state; 151 /* signal strength */ 152 int16_t signal_strength; 153 /* packet error rate 10^-4 */ 154 uint16_t PER; 155 /* bit error rate 10^-4 */ 156 uint16_t BER; 157} __packed; 158 159struct as10x_demod_stats { 160 /* frame counter */ 161 uint32_t frame_count; 162 /* Bad frame counter */ 163 uint32_t bad_frame_count; 164 /* Number of wrong bytes fixed by Reed-Solomon */ 165 uint32_t bytes_fixed_by_rs; 166 /* Averaged MER */ 167 uint16_t mer; 168 /* statistics calculation state indicator (started or not) */ 169 uint8_t has_started; 170} __packed; 171 172struct as10x_ts_filter { 173 uint16_t pid; /* valid PID value 0x00 : 0x2000 */ 174 uint8_t type; /* Red TS_PID_TYPE_<N> values */ 175 uint8_t idx; /* index in filtering table */ 176} __packed; 177 178struct as10x_register_value { 179 uint8_t mode; 180 union { 181 uint8_t value8; /* 8 bit value */ 182 uint16_t value16; /* 16 bit value */ 183 uint32_t value32; /* 32 bit value */ 184 } __packed u; 185} __packed; 186 187struct as10x_register_addr { 188 /* register addr */ 189 uint32_t addr; 190 /* register mode access */ 191 uint8_t mode; 192}; 193 194#endif 195