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 #ifndef _AS10X_TYPES_H_ 16 #define _AS10X_TYPES_H_ 17 18 /*********************************/ 19 /* MACRO DEFINITIONS */ 20 /*********************************/ 21 22 /* bandwidth constant values */ 23 #define BW_5_MHZ 0x00 24 #define BW_6_MHZ 0x01 25 #define BW_7_MHZ 0x02 26 #define BW_8_MHZ 0x03 27 28 /* hierarchy priority selection values */ 29 #define HIER_NO_PRIORITY 0x00 30 #define HIER_LOW_PRIORITY 0x01 31 #define HIER_HIGH_PRIORITY 0x02 32 33 /* constellation available values */ 34 #define CONST_QPSK 0x00 35 #define CONST_QAM16 0x01 36 #define CONST_QAM64 0x02 37 #define CONST_UNKNOWN 0xFF 38 39 /* hierarchy available values */ 40 #define HIER_NONE 0x00 41 #define HIER_ALPHA_1 0x01 42 #define HIER_ALPHA_2 0x02 43 #define HIER_ALPHA_4 0x03 44 #define HIER_UNKNOWN 0xFF 45 46 /* interleaving available values */ 47 #define INTLV_NATIVE 0x00 48 #define INTLV_IN_DEPTH 0x01 49 #define INTLV_UNKNOWN 0xFF 50 51 /* code rate available values */ 52 #define CODE_RATE_1_2 0x00 53 #define CODE_RATE_2_3 0x01 54 #define CODE_RATE_3_4 0x02 55 #define CODE_RATE_5_6 0x03 56 #define CODE_RATE_7_8 0x04 57 #define CODE_RATE_UNKNOWN 0xFF 58 59 /* guard interval available values */ 60 #define GUARD_INT_1_32 0x00 61 #define GUARD_INT_1_16 0x01 62 #define GUARD_INT_1_8 0x02 63 #define GUARD_INT_1_4 0x03 64 #define GUARD_UNKNOWN 0xFF 65 66 /* transmission mode available values */ 67 #define TRANS_MODE_2K 0x00 68 #define TRANS_MODE_8K 0x01 69 #define TRANS_MODE_4K 0x02 70 #define TRANS_MODE_UNKNOWN 0xFF 71 72 /* DVBH signalling available values */ 73 #define TIMESLICING_PRESENT 0x01 74 #define MPE_FEC_PRESENT 0x02 75 76 /* tune state available */ 77 #define TUNE_STATUS_NOT_TUNED 0x00 78 #define TUNE_STATUS_IDLE 0x01 79 #define TUNE_STATUS_LOCKING 0x02 80 #define TUNE_STATUS_SIGNAL_DVB_OK 0x03 81 #define TUNE_STATUS_STREAM_DETECTED 0x04 82 #define TUNE_STATUS_STREAM_TUNED 0x05 83 #define TUNE_STATUS_ERROR 0xFF 84 85 /* available TS FID filter types */ 86 #define TS_PID_TYPE_TS 0 87 #define TS_PID_TYPE_PSI_SI 1 88 #define TS_PID_TYPE_MPE 2 89 90 /* number of echos available */ 91 #define MAX_ECHOS 15 92 93 /* Context types */ 94 #define CONTEXT_LNA 1010 95 #define CONTEXT_ELNA_HYSTERESIS 4003 96 #define CONTEXT_ELNA_GAIN 4004 97 #define CONTEXT_MER_THRESHOLD 5005 98 #define CONTEXT_MER_OFFSET 5006 99 #define CONTEXT_IR_STATE 7000 100 #define CONTEXT_TSOUT_MSB_FIRST 7004 101 #define CONTEXT_TSOUT_FALLING_EDGE 7005 102 103 /* Configuration modes */ 104 #define CFG_MODE_ON 0 105 #define CFG_MODE_OFF 1 106 #define CFG_MODE_AUTO 2 107 108 struct as10x_tps { 109 uint8_t modulation; 110 uint8_t hierarchy; 111 uint8_t interleaving_mode; 112 uint8_t code_rate_HP; 113 uint8_t code_rate_LP; 114 uint8_t guard_interval; 115 uint8_t transmission_mode; 116 uint8_t DVBH_mask_HP; 117 uint8_t DVBH_mask_LP; 118 uint16_t cell_ID; 119 } __packed; 120 121 struct as10x_tune_args { 122 /* frequency */ 123 uint32_t freq; 124 /* bandwidth */ 125 uint8_t bandwidth; 126 /* hierarchy selection */ 127 uint8_t hier_select; 128 /* constellation */ 129 uint8_t modulation; 130 /* hierarchy */ 131 uint8_t hierarchy; 132 /* interleaving mode */ 133 uint8_t interleaving_mode; 134 /* code rate */ 135 uint8_t code_rate; 136 /* guard interval */ 137 uint8_t guard_interval; 138 /* transmission mode */ 139 uint8_t transmission_mode; 140 } __packed; 141 142 struct as10x_tune_status { 143 /* tune status */ 144 uint8_t tune_state; 145 /* signal strength */ 146 int16_t signal_strength; 147 /* packet error rate 10^-4 */ 148 uint16_t PER; 149 /* bit error rate 10^-4 */ 150 uint16_t BER; 151 } __packed; 152 153 struct as10x_demod_stats { 154 /* frame counter */ 155 uint32_t frame_count; 156 /* Bad frame counter */ 157 uint32_t bad_frame_count; 158 /* Number of wrong bytes fixed by Reed-Solomon */ 159 uint32_t bytes_fixed_by_rs; 160 /* Averaged MER */ 161 uint16_t mer; 162 /* statistics calculation state indicator (started or not) */ 163 uint8_t has_started; 164 } __packed; 165 166 struct as10x_ts_filter { 167 uint16_t pid; /* valid PID value 0x00 : 0x2000 */ 168 uint8_t type; /* Red TS_PID_TYPE_<N> values */ 169 uint8_t idx; /* index in filtering table */ 170 } __packed; 171 172 struct as10x_register_value { 173 uint8_t mode; 174 union { 175 uint8_t value8; /* 8 bit value */ 176 uint16_t value16; /* 16 bit value */ 177 uint32_t value32; /* 32 bit value */ 178 } __packed u; 179 } __packed; 180 181 struct as10x_register_addr { 182 /* register addr */ 183 uint32_t addr; 184 /* register mode access */ 185 uint8_t mode; 186 }; 187 188 #endif 189