Pierrick Hascoet | 41b44e0 | 2011-10-31 12:24:39 -0300 | [diff] [blame] | 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. |
Pierrick Hascoet | 41b44e0 | 2011-10-31 12:24:39 -0300 | [diff] [blame] | 14 | */ |
| 15 | #ifndef _AS10X_TYPES_H_ |
| 16 | #define _AS10X_TYPES_H_ |
| 17 | |
Pierrick Hascoet | 41b44e0 | 2011-10-31 12:24:39 -0300 | [diff] [blame] | 18 | /*********************************/ |
| 19 | /* MACRO DEFINITIONS */ |
| 20 | /*********************************/ |
| 21 | |
| 22 | /* bandwidth constant values */ |
Sylwester Nawrocki | 14e0e4b | 2011-11-06 16:31:44 -0300 | [diff] [blame] | 23 | #define BW_5_MHZ 0x00 |
| 24 | #define BW_6_MHZ 0x01 |
| 25 | #define BW_7_MHZ 0x02 |
| 26 | #define BW_8_MHZ 0x03 |
Pierrick Hascoet | 41b44e0 | 2011-10-31 12:24:39 -0300 | [diff] [blame] | 27 | |
| 28 | /* hierarchy priority selection values */ |
Sylwester Nawrocki | 14e0e4b | 2011-11-06 16:31:44 -0300 | [diff] [blame] | 29 | #define HIER_NO_PRIORITY 0x00 |
| 30 | #define HIER_LOW_PRIORITY 0x01 |
| 31 | #define HIER_HIGH_PRIORITY 0x02 |
Pierrick Hascoet | 41b44e0 | 2011-10-31 12:24:39 -0300 | [diff] [blame] | 32 | |
| 33 | /* constellation available values */ |
Sylwester Nawrocki | 14e0e4b | 2011-11-06 16:31:44 -0300 | [diff] [blame] | 34 | #define CONST_QPSK 0x00 |
| 35 | #define CONST_QAM16 0x01 |
| 36 | #define CONST_QAM64 0x02 |
| 37 | #define CONST_UNKNOWN 0xFF |
Pierrick Hascoet | 41b44e0 | 2011-10-31 12:24:39 -0300 | [diff] [blame] | 38 | |
| 39 | /* hierarchy available values */ |
Sylwester Nawrocki | 14e0e4b | 2011-11-06 16:31:44 -0300 | [diff] [blame] | 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 |
Pierrick Hascoet | 41b44e0 | 2011-10-31 12:24:39 -0300 | [diff] [blame] | 45 | |
| 46 | /* interleaving available values */ |
Sylwester Nawrocki | 14e0e4b | 2011-11-06 16:31:44 -0300 | [diff] [blame] | 47 | #define INTLV_NATIVE 0x00 |
| 48 | #define INTLV_IN_DEPTH 0x01 |
| 49 | #define INTLV_UNKNOWN 0xFF |
Pierrick Hascoet | 41b44e0 | 2011-10-31 12:24:39 -0300 | [diff] [blame] | 50 | |
| 51 | /* code rate available values */ |
Sylwester Nawrocki | 14e0e4b | 2011-11-06 16:31:44 -0300 | [diff] [blame] | 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 |
Pierrick Hascoet | 41b44e0 | 2011-10-31 12:24:39 -0300 | [diff] [blame] | 58 | |
| 59 | /* guard interval available values */ |
Sylwester Nawrocki | 14e0e4b | 2011-11-06 16:31:44 -0300 | [diff] [blame] | 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 |
Pierrick Hascoet | 41b44e0 | 2011-10-31 12:24:39 -0300 | [diff] [blame] | 65 | |
| 66 | /* transmission mode available values */ |
Sylwester Nawrocki | 14e0e4b | 2011-11-06 16:31:44 -0300 | [diff] [blame] | 67 | #define TRANS_MODE_2K 0x00 |
| 68 | #define TRANS_MODE_8K 0x01 |
| 69 | #define TRANS_MODE_4K 0x02 |
| 70 | #define TRANS_MODE_UNKNOWN 0xFF |
Pierrick Hascoet | 41b44e0 | 2011-10-31 12:24:39 -0300 | [diff] [blame] | 71 | |
| 72 | /* DVBH signalling available values */ |
Sylwester Nawrocki | 14e0e4b | 2011-11-06 16:31:44 -0300 | [diff] [blame] | 73 | #define TIMESLICING_PRESENT 0x01 |
| 74 | #define MPE_FEC_PRESENT 0x02 |
Pierrick Hascoet | 41b44e0 | 2011-10-31 12:24:39 -0300 | [diff] [blame] | 75 | |
| 76 | /* tune state available */ |
Sylwester Nawrocki | 14e0e4b | 2011-11-06 16:31:44 -0300 | [diff] [blame] | 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 |
Pierrick Hascoet | 41b44e0 | 2011-10-31 12:24:39 -0300 | [diff] [blame] | 84 | |
| 85 | /* available TS FID filter types */ |
Sylwester Nawrocki | 14e0e4b | 2011-11-06 16:31:44 -0300 | [diff] [blame] | 86 | #define TS_PID_TYPE_TS 0 |
| 87 | #define TS_PID_TYPE_PSI_SI 1 |
| 88 | #define TS_PID_TYPE_MPE 2 |
Pierrick Hascoet | 41b44e0 | 2011-10-31 12:24:39 -0300 | [diff] [blame] | 89 | |
| 90 | /* number of echos available */ |
Sylwester Nawrocki | 14e0e4b | 2011-11-06 16:31:44 -0300 | [diff] [blame] | 91 | #define MAX_ECHOS 15 |
Pierrick Hascoet | 41b44e0 | 2011-10-31 12:24:39 -0300 | [diff] [blame] | 92 | |
| 93 | /* Context types */ |
Sylwester Nawrocki | 14e0e4b | 2011-11-06 16:31:44 -0300 | [diff] [blame] | 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 |
Pierrick Hascoet | 41b44e0 | 2011-10-31 12:24:39 -0300 | [diff] [blame] | 102 | |
| 103 | /* Configuration modes */ |
Sylwester Nawrocki | 14e0e4b | 2011-11-06 16:31:44 -0300 | [diff] [blame] | 104 | #define CFG_MODE_ON 0 |
| 105 | #define CFG_MODE_OFF 1 |
| 106 | #define CFG_MODE_AUTO 2 |
Pierrick Hascoet | 41b44e0 | 2011-10-31 12:24:39 -0300 | [diff] [blame] | 107 | |
Pierrick Hascoet | 41b44e0 | 2011-10-31 12:24:39 -0300 | [diff] [blame] | 108 | struct as10x_tps { |
Mauro Carvalho Chehab | dfc6438 | 2011-12-26 15:20:03 -0300 | [diff] [blame] | 109 | uint8_t modulation; |
Sylwester Nawrocki | 14e0e4b | 2011-11-06 16:31:44 -0300 | [diff] [blame] | 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; |
Sylwester Nawrocki | fa1a13f | 2011-11-06 16:31:42 -0300 | [diff] [blame] | 119 | } __packed; |
Pierrick Hascoet | 41b44e0 | 2011-10-31 12:24:39 -0300 | [diff] [blame] | 120 | |
| 121 | struct as10x_tune_args { |
Sylwester Nawrocki | 14e0e4b | 2011-11-06 16:31:44 -0300 | [diff] [blame] | 122 | /* frequency */ |
| 123 | uint32_t freq; |
| 124 | /* bandwidth */ |
| 125 | uint8_t bandwidth; |
| 126 | /* hierarchy selection */ |
| 127 | uint8_t hier_select; |
| 128 | /* constellation */ |
Mauro Carvalho Chehab | dfc6438 | 2011-12-26 15:20:03 -0300 | [diff] [blame] | 129 | uint8_t modulation; |
Sylwester Nawrocki | 14e0e4b | 2011-11-06 16:31:44 -0300 | [diff] [blame] | 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; |
Sylwester Nawrocki | fa1a13f | 2011-11-06 16:31:42 -0300 | [diff] [blame] | 140 | } __packed; |
Pierrick Hascoet | 41b44e0 | 2011-10-31 12:24:39 -0300 | [diff] [blame] | 141 | |
| 142 | struct as10x_tune_status { |
Sylwester Nawrocki | 14e0e4b | 2011-11-06 16:31:44 -0300 | [diff] [blame] | 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; |
Sylwester Nawrocki | fa1a13f | 2011-11-06 16:31:42 -0300 | [diff] [blame] | 151 | } __packed; |
Pierrick Hascoet | 41b44e0 | 2011-10-31 12:24:39 -0300 | [diff] [blame] | 152 | |
| 153 | struct as10x_demod_stats { |
Sylwester Nawrocki | 14e0e4b | 2011-11-06 16:31:44 -0300 | [diff] [blame] | 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; |
Sylwester Nawrocki | fa1a13f | 2011-11-06 16:31:42 -0300 | [diff] [blame] | 164 | } __packed; |
Pierrick Hascoet | 41b44e0 | 2011-10-31 12:24:39 -0300 | [diff] [blame] | 165 | |
| 166 | struct as10x_ts_filter { |
Sylwester Nawrocki | 14e0e4b | 2011-11-06 16:31:44 -0300 | [diff] [blame] | 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 */ |
Sylwester Nawrocki | fa1a13f | 2011-11-06 16:31:42 -0300 | [diff] [blame] | 170 | } __packed; |
Pierrick Hascoet | 41b44e0 | 2011-10-31 12:24:39 -0300 | [diff] [blame] | 171 | |
| 172 | struct as10x_register_value { |
Sylwester Nawrocki | 14e0e4b | 2011-11-06 16:31:44 -0300 | [diff] [blame] | 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 */ |
Gianluca Gennari | abf9d00 | 2012-03-06 09:47:45 -0300 | [diff] [blame] | 178 | } __packed u; |
Sylwester Nawrocki | fa1a13f | 2011-11-06 16:31:42 -0300 | [diff] [blame] | 179 | } __packed; |
Pierrick Hascoet | 41b44e0 | 2011-10-31 12:24:39 -0300 | [diff] [blame] | 180 | |
| 181 | struct as10x_register_addr { |
Sylwester Nawrocki | 14e0e4b | 2011-11-06 16:31:44 -0300 | [diff] [blame] | 182 | /* register addr */ |
| 183 | uint32_t addr; |
| 184 | /* register mode access */ |
| 185 | uint8_t mode; |
Pierrick Hascoet | 41b44e0 | 2011-10-31 12:24:39 -0300 | [diff] [blame] | 186 | }; |
| 187 | |
Pierrick Hascoet | 41b44e0 | 2011-10-31 12:24:39 -0300 | [diff] [blame] | 188 | #endif |