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 108struct 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 121struct 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 142struct 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 153struct 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 166struct 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 172struct 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 181struct as10x_register_addr { 182 /* register addr */ 183 uint32_t addr; 184 /* register mode access */ 185 uint8_t mode; 186}; 187 188#endif 189