##// END OF EJS Templates
compliance with ICD 4.3
paul -
r60:058c1234c2de R3++
parent child
Show More
@@ -1,885 +1,907
1 1 #ifndef CCSDS_TYPES_H_INCLUDED
2 2 #define CCSDS_TYPES_H_INCLUDED
3 3
4 4 #define TXBDCNT 50
5 5 #define RXBDCNT 10
6 6 #define TXDATASIZE 4096
7 7 #define TXHDRSIZE 34
8 8 #define RXPKTSIZE 200
9 9
10 10 #define SPW_RXSIZE 228
11 11 #define SPW_TXDSIZE 4096
12 12 #define SPW_TXHSIZE 64
13 13
14 14 #define BITS_PID_0 0x07
15 15 #define BITS_PID_1 0x0f
16 16 #define BITS_CAT 0x0f
17 17
18 18 #define CCSDS_PROTOCOLE_EXTRA_BYTES 4
19 19 #define CCSDS_TC_TM_PACKET_OFFSET 7
20 20 #define PROTID_RES_APP 3
21 21 #define CCSDS_TELEMETRY_HEADER_LENGTH (16+4)
22 22 #define CCSDS_TC_HEADER_LENGTH 10
23 23 #define CCSDS_TM_PKT_MAX_SIZE 4412
24 24 #define CCSDS_TELECOMMAND_HEADER_LENGTH (10+4)
25 25 #define CCSDS_TC_PKT_MAX_SIZE 232 // (228+3) with 3 for Prot ID, Reserved and User App bytes, SHALL BE A MULTIPLE OF 4
26 26 #define CCSDS_TC_PKT_MIN_SIZE 16
27 27 #define CCSDS_PROCESS_ID 76
28 28 #define CCSDS_PACKET_CATEGORY 12
29 29 #define CCSDS_NODE_ADDRESS 0xfe
30 30 #define CCSDS_USER_APP 0x00
31 31
32 32 #define DEFAULT_SPARE1_PUSVERSION_SPARE2 0x10
33 33 #define DEFAULT_RESERVED 0x00
34 34 #define DEFAULT_HKBIA 0x1e // 0001 1110
35 35
36 36 // PACKET ID
37 37 #define TM_PACKET_PID_DEFAULT 76
38 38 #define TM_PACKET_PID_BURST_SBM1_SBM2 79
39 39 #define APID_TM_TC_EXE 0x0cc1 // PID 76 CAT 1
40 40 #define APID_TM_HK 0x0cc4 // PID 76 CAT 4
41 41 #define APID_TM_SCIENCE_NORMAL_BURST 0x0ccc // PID 76 CAT 12
42 42 #define APID_TM_SCIENCE_SBM1_SBM2 0x0cfc // PID 79 CAT 12
43 43 #define APID_TM_PARAMETER_DUMP 0x0cc6 // PID 76 CAT 6
44 44 #define APID_TM_KCOEFFICIENTS_DUMP 0x0cc6 // PID 76 CAT 6
45 45
46 46 // PACKET CAT
47 47 #define TM_PACKET_CAT_TC_EXE 1
48 48 #define TM_PACKET_CAT_HK 4
49 49 #define TM_PACKET_CAT_SCIENCE 12
50 50 #define TM_PACKET_CAT_DUMP 6
51 51
52 52 // PACKET SEQUENCE CONTROL
53 53 #define TM_PACKET_SEQ_CTRL_CONTINUATION 0x00 // [0000 0000]
54 54 #define TM_PACKET_SEQ_CTRL_FIRST 0x40 // [0100 0000]
55 55 #define TM_PACKET_SEQ_CTRL_LAST 0x80 // [1000 0000]
56 56 #define TM_PACKET_SEQ_CTRL_STANDALONE 0xc0 // [1100 0000]
57 57 #define TM_PACKET_SEQ_CNT_DEFAULT 0x00 // [0000 0000]
58 58 #define TM_PACKET_SEQ_SHIFT 8
59 59 #define SEQ_CNT_MAX 16383
60 60 #define SEQ_CNT_NB_DEST_ID 12
61 61 #define SEQ_CNT_MASK 0x3fff // [0011 1111 1111 1111]
62 62
63 63 // DESTINATION ID
64 64 #define TM_DESTINATION_ID_GROUND 0
65 65 #define TM_DESTINATION_ID_MISSION_TIMELINE 110
66 66 #define TM_DESTINATION_ID_TC_SEQUENCES 111
67 67 #define TM_DESTINATION_ID_RECOVERY_ACTION_COMMAND 112
68 68 #define TM_DESTINATION_ID_BACKUP_MISSION_TIMELINE 113
69 69 #define TM_DESTINATION_ID_DIRECT_CMD 120
70 70 #define TM_DESTINATION_ID_SPARE_GRD_SRC1 121
71 71 #define TM_DESTINATION_ID_SPARE_GRD_SRC2 122
72 72 #define TM_DESTINATION_ID_OBCP 15
73 73 #define TM_DESTINATION_ID_SYSTEM_CONTROL 14
74 74 #define TM_DESTINATION_ID_AOCS 11
75 75
76 76 //*********************************************************
77 77 //*** /!\ change CCSDS_DESTINATION_ID before flight /!\ ***
78 78 //*********************************************************
79 79 #ifdef LPP_DPU_DESTID
80 80 #define CCSDS_DESTINATION_ID 32
81 81 #else
82 82 #define CCSDS_DESTINATION_ID 0x01
83 83 #endif
84 84 #define CCSDS_PROTOCOLE_ID 0x02
85 85 #define CCSDS_RESERVED 0x00
86 86 #define CCSDS_USER_APP 0x00
87 87
88 88 #define SIZE_TM_LFR_TC_EXE_NOT_IMPLEMENTED 24
89 89 #define SIZE_TM_LFR_TC_EXE_CORRUPTED 32
90 90 #define SIZE_HK_PARAMETERS 112
91 91
92 92 // TC TYPES
93 93 #define TC_TYPE_GEN 181
94 94 #define TC_TYPE_TIME 9
95 95
96 96 // TC SUBTYPES
97 97 #define TC_SUBTYPE_RESET 1
98 98 #define TC_SUBTYPE_LOAD_COMM 11
99 99 #define TC_SUBTYPE_LOAD_NORM 13
100 100 #define TC_SUBTYPE_LOAD_BURST 19
101 101 #define TC_SUBTYPE_LOAD_SBM1 25
102 102 #define TC_SUBTYPE_LOAD_SBM2 27
103 103 #define TC_SUBTYPE_DUMP 31
104 104 #define TC_SUBTYPE_ENTER 41
105 105 #define TC_SUBTYPE_UPDT_INFO 51
106 106 #define TC_SUBTYPE_EN_CAL 61
107 107 #define TC_SUBTYPE_DIS_CAL 63
108 108 #define TC_SUBTYPE_LOAD_K 93
109 109 #define TC_SUBTYPE_DUMP_K 95
110 110 #define TC_SUBTYPE_LOAD_FBINS 91
111 111 #define TC_SUBTYPE_LOAD_FILTER_PAR 97
112 112 #define TC_SUBTYPE_UPDT_TIME 129
113 113
114 114 // TC LEN
115 115 #define TC_LEN_RESET 12
116 116 #define TC_LEN_LOAD_COMM 14
117 117 #define TC_LEN_LOAD_NORM 22
118 118 #define TC_LEN_LOAD_BURST 14
119 119 #define TC_LEN_LOAD_SBM1 14
120 120 #define TC_LEN_LOAD_SBM2 14
121 121 #define TC_LEN_DUMP 12
122 122 #define TC_LEN_ENTER 20
123 123 #define TC_LEN_UPDT_INFO 110
124 124 #define TC_LEN_EN_CAL 12
125 125 #define TC_LEN_DIS_CAL 12
126 126 #define TC_LEN_LOAD_K 142
127 127 #define TC_LEN_DUMP_K 12
128 128 #define TC_LEN_LOAD_FBINS 60
129 #define TC_LEN_LOAD_FILTER_PAR 28
129 #define TC_LEN_LOAD_FILTER_PAR 92
130 130 #define TC_LEN_UPDT_TIME 18
131 131
132 132 // PACKET CODES
133 133 #define TM_CODE_K_DUMP 0xb5600b00 // 181 (0xb5) ** 96 (0x60) ** 11 (0x0b) ** 0 (0x00)
134 134
135 135 // TM TYPES
136 136 #define TM_TYPE_TC_EXE 1
137 137 #define TM_TYPE_HK 3
138 138 #define TM_TYPE_LFR_SCIENCE 21
139 139 #define TM_TYPE_PARAMETER_DUMP 181
140 140 #define TM_TYPE_K_DUMP 181
141 141
142 142 // TM SUBTYPES
143 143 #define TM_SUBTYPE_EXE_OK 7
144 144 #define TM_SUBTYPE_EXE_NOK 8
145 145 #define TM_SUBTYPE_HK 25
146 146 #define TM_SUBTYPE_LFR_SCIENCE_3 3 // TM packets with fixed size
147 147 #define TM_SUBTYPE_LFR_SCIENCE_6 6 // TM packets with variable size
148 148 #define TM_SUBTYPE_PARAMETER_DUMP 32
149 149 #define TM_SUBTYPE_K_DUMP 96
150 150
151 151 // FAILURE CODES
152 152 #define ILLEGAL_APID 0
153 153 #define WRONG_LEN_PKT 1
154 154 #define INCOR_CHECKSUM 2
155 155 #define ILL_TYPE 3
156 156 #define ILL_SUBTYPE 4
157 157 #define WRONG_APP_DATA 5 // 0x00 0x05
158 158 #define TC_NOT_EXE 42000 // 0xa4 0x10
159 159 #define WRONG_SRC_ID 42001 // 0xa4 0x11
160 160 #define FUNCT_NOT_IMPL 42002 // 0xa4 0x12
161 161 #define FAIL_DETECTED 42003 // 0xa4 0x13
162 162 #define NOT_ALLOWED 42004 // 0xa4 0x14
163 163 #define CORRUPTED 42005 // 0xa4 0x15
164 164 #define CCSDS_TM_VALID 7
165 165
166 166 // HK_LFR_LAST_ER_RID
167 167 #define RID_LE_LFR_TIME 42119
168 168 #define RID_LE_LFR_DPU_SPW 42128
169 169 #define RID_LE_LFR_TIMEC 42129
170 170 #define RID_ME_LFR_DPU_SPW 42338
171 171 // HK_LFR_LAST_ER_CODE
172 172 #define CODE_PARITY 1
173 173 #define CODE_DISCONNECT 2
174 174 #define CODE_ESCAPE 3
175 175 #define CODE_CREDIT 4
176 176 #define CODE_WRITE_SYNC 5
177 177 #define CODE_EARLY_EOP_EEP 6
178 178 #define CODE_INVALID_ADDRESS 7
179 179 #define CODE_EEP 8
180 180 #define CODE_RX_TOO_BIG 9
181 181 #define CODE_HEADER_CRC 16
182 182 #define CODE_DATA_CRC 17
183 183 #define CODE_ERRONEOUS 20
184 184 #define CODE_MISSING 21
185 185 #define CODE_INVALID 22
186 186 #define CODE_TIMECODE_IT 24
187 187 #define CODE_NOT_SYNCHRO 25
188 188 #define CODE_TIMECODE_CTR 26
189 189
190 190 // TC SID
191 191 #define SID_TC_GROUND 0
192 192 #define SID_TC_MISSION_TIMELINE 110
193 193 #define SID_TC_TC_SEQUENCES 111
194 194 #define SID_TC_RECOVERY_ACTION_CMD 112
195 195 #define SID_TC_BACKUP_MISSION_TIMELINE 113
196 196 #define SID_TC_DIRECT_CMD 120
197 197 #define SID_TC_SPARE_GRD_SRC1 121
198 198 #define SID_TC_SPARE_GRD_SRC2 122
199 199 #define SID_TC_OBCP 15
200 200 #define SID_TC_SYSTEM_CONTROL 14
201 201 #define SID_TC_AOCS 11
202 202 #define SID_TC_RPW_INTERNAL 254
203 203
204 204 enum apid_destid{
205 205 GROUND,
206 206 MISSION_TIMELINE,
207 207 TC_SEQUENCES,
208 208 RECOVERY_ACTION_CMD,
209 209 BACKUP_MISSION_TIMELINE,
210 210 DIRECT_CMD,
211 211 SPARE_GRD_SRC1,
212 212 SPARE_GRD_SRC2,
213 213 OBCP,
214 214 SYSTEM_CONTROL,
215 215 AOCS,
216 216 RPW_INTERNAL
217 217 };
218 218
219 219 // TM SID
220 220 #define SID_HK 1
221 221
222 222 #define SID_NORM_SWF_F0 3
223 223 #define SID_NORM_SWF_F1 4
224 224 #define SID_NORM_SWF_F2 5
225 225 #define SID_NORM_CWF_F3 1
226 226 #define SID_BURST_CWF_F2 2
227 227 #define SID_SBM1_CWF_F1 24
228 228 #define SID_SBM2_CWF_F2 25
229 229 #define SID_NORM_ASM_F0 11
230 230 #define SID_NORM_ASM_F1 12
231 231 #define SID_NORM_ASM_F2 13
232 232 #define SID_NORM_BP1_F0 14
233 233 #define SID_NORM_BP1_F1 15
234 234 #define SID_NORM_BP1_F2 16
235 235 #define SID_NORM_BP2_F0 19
236 236 #define SID_NORM_BP2_F1 20
237 237 #define SID_NORM_BP2_F2 21
238 238 #define SID_BURST_BP1_F0 17
239 239 #define SID_BURST_BP2_F0 22
240 240 #define SID_BURST_BP1_F1 18
241 241 #define SID_BURST_BP2_F1 23
242 242 #define SID_SBM1_BP1_F0 28
243 243 #define SID_SBM1_BP2_F0 31
244 244 #define SID_SBM2_BP1_F0 29
245 245 #define SID_SBM2_BP2_F0 32
246 246 #define SID_SBM2_BP1_F1 30
247 247 #define SID_SBM2_BP2_F1 33
248 248 #define SID_NORM_CWF_LONG_F3 34
249 249
250 250 #define SID_PARAMETER_DUMP 10
251 251 #define SID_K_DUMP 11
252 252
253 253 // HEADER_LENGTH
254 254 //#define TM_HEADER_LEN 16
255 255 #define HEADER_LENGTH_TM_LFR_SCIENCE_CWF 32
256 256 #define HEADER_LENGTH_TM_LFR_SCIENCE_SWF 34
257 257 #define HEADER_LENGTH_TM_LFR_SCIENCE_ASM 34
258 258 // PACKET_LENGTH
259 259 #define PACKET_LENGTH_TC_EXE_SUCCESS (20 - CCSDS_TC_TM_PACKET_OFFSET)
260 260 #define PACKET_LENGTH_TC_EXE_INCONSISTENT (26 - CCSDS_TC_TM_PACKET_OFFSET)
261 261 #define PACKET_LENGTH_TC_EXE_NOT_EXECUTABLE (26 - CCSDS_TC_TM_PACKET_OFFSET)
262 262 #define PACKET_LENGTH_TC_EXE_NOT_IMPLEMENTED (24 - CCSDS_TC_TM_PACKET_OFFSET)
263 263 #define PACKET_LENGTH_TC_EXE_ERROR (24 - CCSDS_TC_TM_PACKET_OFFSET)
264 264 #define PACKET_LENGTH_TC_EXE_CORRUPTED (32 - CCSDS_TC_TM_PACKET_OFFSET)
265 265 #define PACKET_LENGTH_HK (136 - CCSDS_TC_TM_PACKET_OFFSET)
266 #define PACKET_LENGTH_PARAMETER_DUMP (148 - CCSDS_TC_TM_PACKET_OFFSET)
266 #define PACKET_LENGTH_PARAMETER_DUMP (212 - CCSDS_TC_TM_PACKET_OFFSET)
267 267 #define PACKET_LENGTH_K_DUMP (3920 - CCSDS_TC_TM_PACKET_OFFSET)
268 268 // SCIENCE ASM
269 269 #define PACKET_LENGTH_TM_LFR_SCIENCE_ASM_F0_1 (3230 - CCSDS_TC_TM_PACKET_OFFSET) // 32 * 25 * 4 + 30 => 32 bins (32 + 32 + 24 ), 3 packets
270 270 #define PACKET_LENGTH_TM_LFR_SCIENCE_ASM_F0_2 (2430 - CCSDS_TC_TM_PACKET_OFFSET) // 24 * 25 * 4 + 30 => 24 bins (32 + 32 + 24 ), 3 packets
271 271 #define PACKET_LENGTH_TM_LFR_SCIENCE_ASM_F1_1 (3630 - CCSDS_TC_TM_PACKET_OFFSET) // 36 * 25 * 4 + 30 => 36 bins (36 + 36 + 32 ), 3 packets
272 272 #define PACKET_LENGTH_TM_LFR_SCIENCE_ASM_F1_2 (3230 - CCSDS_TC_TM_PACKET_OFFSET) // 32 * 25 * 4 + 30 => 32 bins (36 + 36 + 32 ), 3 packets
273 273 #define PACKET_LENGTH_TM_LFR_SCIENCE_ASM_F2 (3230 - CCSDS_TC_TM_PACKET_OFFSET) // 32 * 25 * 4 + 30 => 96 bins (32 + 32 + 32 ), 3 packets
274 274 // SCIENCE NORM
275 275 #define PACKET_LENGTH_TM_LFR_SCIENCE_NORM_BP1_F0 (150 - CCSDS_TC_TM_PACKET_OFFSET) // 11 * 11 + 29 (1 spare byte in the header)
276 276 #define PACKET_LENGTH_TM_LFR_SCIENCE_NORM_BP1_F1 (172 - CCSDS_TC_TM_PACKET_OFFSET) // 13 * 11 + 29 (1 spare byte in the header)
277 277 #define PACKET_LENGTH_TM_LFR_SCIENCE_NORM_BP1_F2 (160 - CCSDS_TC_TM_PACKET_OFFSET) // 12 * 11 + 28
278 278 #define PACKET_LENGTH_TM_LFR_SCIENCE_NORM_BP2_F0 (358 - CCSDS_TC_TM_PACKET_OFFSET) // 11 * 30 + 28
279 279 #define PACKET_LENGTH_TM_LFR_SCIENCE_NORM_BP2_F1 (418 - CCSDS_TC_TM_PACKET_OFFSET) // 13 * 30 + 28
280 280 #define PACKET_LENGTH_TM_LFR_SCIENCE_NORM_BP2_F2 (388 - CCSDS_TC_TM_PACKET_OFFSET) // 12 * 30 + 28
281 281 // SCIENCE SBM
282 282 #define PACKET_LENGTH_TM_LFR_SCIENCE_SBM_BP1_F0 (270 - CCSDS_TC_TM_PACKET_OFFSET) // 22 * 11 + 28
283 283 #define PACKET_LENGTH_TM_LFR_SCIENCE_SBM_BP2_F0 (688 - CCSDS_TC_TM_PACKET_OFFSET) // 22 * 30 + 28
284 284 #define PACKET_LENGTH_TM_LFR_SCIENCE_SBM_BP1_F1 (314 - CCSDS_TC_TM_PACKET_OFFSET) // 26 * 11 + 28
285 285 #define PACKET_LENGTH_TM_LFR_SCIENCE_SBM_BP2_F1 (808 - CCSDS_TC_TM_PACKET_OFFSET) // 26 * 30 + 28
286 286
287 287 #define PACKET_LENGTH_DELTA 11 // 7 + 4
288 288
289 289 #define SPARE1_PUSVERSION_SPARE2 0x10
290 290
291 291 // R3
292 292 // one snapshot = 2048 samples = 6 packets * 304 + 224
293 293 #define TM_LEN_SCI_SWF_304 (3678 - CCSDS_TC_TM_PACKET_OFFSET) // 304 * 12 + 30
294 294 #define TM_LEN_SCI_SWF_224 (2718 - CCSDS_TC_TM_PACKET_OFFSET) // 224 * 12 + 30
295 295 // one continuous buffer = 2688 samples = 8 packets * 336
296 296 #define TM_LEN_SCI_CWF_336 (4060 - CCSDS_TC_TM_PACKET_OFFSET) // 336 * 12 + 28
297 297 #define TM_LEN_SCI_CWF_672 (4060 - CCSDS_TC_TM_PACKET_OFFSET) // 672 * 6 + 28
298 298 //
299 299 #define PKTCNT_SWF 0x07
300 300 #define PKTCNT_ASM 3
301 301 #define BLK_NR_304 0x0130
302 302 #define BLK_NR_224 0x00e0
303 303 #define BLK_NR_CWF 0x0150 // 336
304 304 #define BLK_NR_CWF_SHORT_F3 0x02a0 // 672
305 305
306 306 enum TM_TYPE{
307 307 TM_LFR_TC_EXE_OK,
308 308 TM_LFR_TC_EXE_ERR,
309 309 TM_LFR_HK,
310 310 TM_LFR_SCI,
311 311 TM_LFR_SCI_SBM,
312 312 TM_LFR_PAR_DUMP
313 313 };
314 314
315 315 #define BYTES_PER_PACKETID 2
316 316 #define BYTES_PER_SEQ_CTRL 2
317 317 #define BYTES_PER_PKT_LEN 2
318 318 #define BYTES_PER_TIME 6
319 319 #define BYTES_PER_ERR_CODE 2
320 320 #define BYTES_PER_STA_WRD 2
321 321 #define BYTES_PER_CRC 2
322 322 #define BYTES_PER_BLKNR 2
323 323 #define BYTES_PER_SW_VER 4
324 324 #define BYTES_PER_VHD_VER 3
325 325 #define COUNTER_2_BYTES 2
326 326 #define BYTES_PER_TYPE 2
327 327 #define BYTES_PER_SUBTYPE 2
328 328 #define BYTES_PER_ADDR 4
329 329 #define BYTES_PER_TEMP 2
330 330 #define BYTES_PER_V 2
331 331 #define BYTES_PER_WORD 4
332 332 #define BYTES_PER_MASK 16
333 333 #define BYTES_PER_MASKS_SET 48 // 4 * 4 * 3
334 334
335 335 #define COUNTER_2_BYTES 2
336 336 #define PARAM_2_BYTES 2
337 337 #define PARAM_4_BYTES 4
338 338
339 339 typedef struct {
340 340 unsigned char targetLogicalAddress;
341 341 unsigned char protocolIdentifier;
342 342 unsigned char reserved;
343 343 unsigned char userApplication;
344 344 // PACKET HEADER
345 345 unsigned char packetID[BYTES_PER_PACKETID];
346 346 unsigned char packetSequenceControl[BYTES_PER_SEQ_CTRL];
347 347 unsigned char packetLength[BYTES_PER_PKT_LEN];
348 348 // DATA FIELD HEADER
349 349 unsigned char spare1_pusVersion_spare2;
350 350 unsigned char serviceType;
351 351 unsigned char serviceSubType;
352 352 unsigned char destinationID;
353 353 unsigned char time[BYTES_PER_TIME];
354 354 //
355 355 unsigned char telecommand_pkt_id[BYTES_PER_PACKETID];
356 356 unsigned char pkt_seq_control[BYTES_PER_SEQ_CTRL];
357 357 } Packet_TM_LFR_TC_EXE_SUCCESS_t;
358 358
359 359 typedef struct {
360 360 unsigned char targetLogicalAddress;
361 361 unsigned char protocolIdentifier;
362 362 unsigned char reserved;
363 363 unsigned char userApplication;
364 364 // PACKET HEADER
365 365 unsigned char packetID[BYTES_PER_PACKETID];
366 366 unsigned char packetSequenceControl[BYTES_PER_SEQ_CTRL];
367 367 unsigned char packetLength[BYTES_PER_PKT_LEN];
368 368 // DATA FIELD HEADER
369 369 unsigned char spare1_pusVersion_spare2;
370 370 unsigned char serviceType;
371 371 unsigned char serviceSubType;
372 372 unsigned char destinationID;
373 373 unsigned char time[BYTES_PER_TIME];
374 374 //
375 375 unsigned char telecommand_pkt_id[BYTES_PER_PACKETID];
376 376 unsigned char pkt_seq_control[BYTES_PER_SEQ_CTRL];
377 377 unsigned char tc_failure_code[BYTES_PER_ERR_CODE];
378 378 unsigned char tc_service;
379 379 unsigned char tc_subtype;
380 380 unsigned char byte_position;
381 381 unsigned char rcv_value;
382 382 } Packet_TM_LFR_TC_EXE_INCONSISTENT_t;
383 383
384 384 typedef struct {
385 385 unsigned char targetLogicalAddress;
386 386 unsigned char protocolIdentifier;
387 387 unsigned char reserved;
388 388 unsigned char userApplication;
389 389 // PACKET HEADER
390 390 unsigned char packetID[BYTES_PER_PACKETID];
391 391 unsigned char packetSequenceControl[BYTES_PER_SEQ_CTRL];
392 392 unsigned char packetLength[BYTES_PER_PKT_LEN];
393 393 // DATA FIELD HEADER
394 394 unsigned char spare1_pusVersion_spare2;
395 395 unsigned char serviceType;
396 396 unsigned char serviceSubType;
397 397 unsigned char destinationID;
398 398 unsigned char time[BYTES_PER_TIME];
399 399 //
400 400 unsigned char telecommand_pkt_id[BYTES_PER_PACKETID];
401 401 unsigned char pkt_seq_control[BYTES_PER_SEQ_CTRL];
402 402 unsigned char tc_failure_code[BYTES_PER_ERR_CODE];
403 403 unsigned char tc_service;
404 404 unsigned char tc_subtype;
405 405 unsigned char lfr_status_word[2];
406 406 } Packet_TM_LFR_TC_EXE_NOT_EXECUTABLE_t;
407 407
408 408 typedef struct {
409 409 unsigned char targetLogicalAddress;
410 410 unsigned char protocolIdentifier;
411 411 unsigned char reserved;
412 412 unsigned char userApplication;
413 413 // PACKET HEADER
414 414 unsigned char packetID[BYTES_PER_PACKETID];
415 415 unsigned char packetSequenceControl[BYTES_PER_SEQ_CTRL];
416 416 unsigned char packetLength[BYTES_PER_PKT_LEN];
417 417 // DATA FIELD HEADER
418 418 unsigned char spare1_pusVersion_spare2;
419 419 unsigned char serviceType;
420 420 unsigned char serviceSubType;
421 421 unsigned char destinationID;
422 422 unsigned char time[BYTES_PER_TIME];
423 423 //
424 424 unsigned char telecommand_pkt_id[BYTES_PER_PACKETID];
425 425 unsigned char pkt_seq_control[BYTES_PER_SEQ_CTRL];
426 426 unsigned char tc_failure_code[BYTES_PER_ERR_CODE];
427 427 unsigned char tc_service;
428 428 unsigned char tc_subtype;
429 429 } Packet_TM_LFR_TC_EXE_NOT_IMPLEMENTED_t;
430 430
431 431 typedef struct {
432 432 unsigned char targetLogicalAddress;
433 433 unsigned char protocolIdentifier;
434 434 unsigned char reserved;
435 435 unsigned char userApplication;
436 436 // PACKET HEADER
437 437 unsigned char packetID[BYTES_PER_PACKETID];
438 438 unsigned char packetSequenceControl[BYTES_PER_SEQ_CTRL];
439 439 unsigned char packetLength[BYTES_PER_PKT_LEN];
440 440 // DATA FIELD HEADER
441 441 unsigned char spare1_pusVersion_spare2;
442 442 unsigned char serviceType;
443 443 unsigned char serviceSubType;
444 444 unsigned char destinationID;
445 445 unsigned char time[BYTES_PER_TIME];
446 446 //
447 447 unsigned char telecommand_pkt_id[BYTES_PER_PACKETID];
448 448 unsigned char pkt_seq_control[BYTES_PER_SEQ_CTRL];
449 449 unsigned char tc_failure_code[BYTES_PER_ERR_CODE];
450 450 unsigned char tc_service;
451 451 unsigned char tc_subtype;
452 452 } Packet_TM_LFR_TC_EXE_ERROR_t;
453 453
454 454 typedef struct {
455 455 unsigned char targetLogicalAddress;
456 456 unsigned char protocolIdentifier;
457 457 unsigned char reserved;
458 458 unsigned char userApplication;
459 459 // PACKET HEADER
460 460 unsigned char packetID[BYTES_PER_PACKETID];
461 461 unsigned char packetSequenceControl[BYTES_PER_SEQ_CTRL];
462 462 unsigned char packetLength[BYTES_PER_PKT_LEN];
463 463 // DATA FIELD HEADER
464 464 unsigned char spare1_pusVersion_spare2;
465 465 unsigned char serviceType;
466 466 unsigned char serviceSubType;
467 467 unsigned char destinationID;
468 468 unsigned char time[BYTES_PER_TIME];
469 469 //
470 470 unsigned char telecommand_pkt_id[BYTES_PER_PACKETID];
471 471 unsigned char pkt_seq_control[BYTES_PER_SEQ_CTRL];
472 472 unsigned char tc_failure_code[BYTES_PER_ERR_CODE];
473 473 unsigned char tc_service;
474 474 unsigned char tc_subtype;
475 475 unsigned char pkt_len_rcv_value[BYTES_PER_PKT_LEN];
476 476 unsigned char pkt_datafieldsize_cnt[BYTES_PER_PKT_LEN];
477 477 unsigned char rcv_crc[BYTES_PER_CRC];
478 478 unsigned char computed_crc[BYTES_PER_CRC];
479 479 } Packet_TM_LFR_TC_EXE_CORRUPTED_t;
480 480
481 481 typedef struct {
482 482 unsigned char targetLogicalAddress;
483 483 unsigned char protocolIdentifier;
484 484 unsigned char reserved;
485 485 unsigned char userApplication;
486 486 unsigned char packetID[BYTES_PER_PACKETID];
487 487 unsigned char packetSequenceControl[BYTES_PER_SEQ_CTRL];
488 488 unsigned char packetLength[BYTES_PER_PKT_LEN];
489 489 // DATA FIELD HEADER
490 490 unsigned char spare1_pusVersion_spare2;
491 491 unsigned char serviceType;
492 492 unsigned char serviceSubType;
493 493 unsigned char destinationID;
494 494 unsigned char time[BYTES_PER_TIME];
495 495 // AUXILIARY HEADER
496 496 unsigned char sid;
497 497 unsigned char pa_bia_status_info;
498 498 unsigned char sy_lfr_common_parameters_spare;
499 499 unsigned char sy_lfr_common_parameters;
500 500 unsigned char pktCnt;
501 501 unsigned char pktNr;
502 502 unsigned char acquisitionTime[BYTES_PER_TIME];
503 503 unsigned char blkNr[BYTES_PER_BLKNR];
504 504 } Header_TM_LFR_SCIENCE_SWF_t;
505 505
506 506 //*******************
507 507 // TM_LFR_SCIENCE_CWF
508 508
509 509 #define CWF_BLK_SIZE 6
510 510
511 511 typedef struct {
512 512 unsigned char targetLogicalAddress;
513 513 unsigned char protocolIdentifier;
514 514 unsigned char reserved;
515 515 unsigned char userApplication;
516 516 unsigned char packetID[BYTES_PER_PACKETID];
517 517 unsigned char packetSequenceControl[BYTES_PER_SEQ_CTRL];
518 518 unsigned char packetLength[BYTES_PER_PKT_LEN];
519 519 // DATA FIELD HEADER
520 520 unsigned char spare1_pusVersion_spare2;
521 521 unsigned char serviceType;
522 522 unsigned char serviceSubType;
523 523 unsigned char destinationID;
524 524 unsigned char time[BYTES_PER_TIME];
525 525 // AUXILIARY DATA HEADER
526 526 unsigned char sid;
527 527 unsigned char pa_bia_status_info;
528 528 unsigned char sy_lfr_common_parameters_spare;
529 529 unsigned char sy_lfr_common_parameters;
530 530 unsigned char acquisitionTime[BYTES_PER_TIME];
531 531 unsigned char blkNr[BYTES_PER_BLKNR];
532 532 } Header_TM_LFR_SCIENCE_CWF_t;
533 533
534 534 typedef struct {
535 535 unsigned char targetLogicalAddress;
536 536 unsigned char protocolIdentifier;
537 537 unsigned char reserved;
538 538 unsigned char userApplication;
539 539 unsigned char packetID[BYTES_PER_PACKETID];
540 540 unsigned char packetSequenceControl[BYTES_PER_SEQ_CTRL];
541 541 unsigned char packetLength[BYTES_PER_PKT_LEN];
542 542 // DATA FIELD HEADER
543 543 unsigned char spare1_pusVersion_spare2;
544 544 unsigned char serviceType;
545 545 unsigned char serviceSubType;
546 546 unsigned char destinationID;
547 547 unsigned char time[BYTES_PER_TIME];
548 548 // AUXILIARY HEADER
549 549 unsigned char sid;
550 550 unsigned char pa_bia_status_info;
551 551 unsigned char sy_lfr_common_parameters_spare;
552 552 unsigned char sy_lfr_common_parameters;
553 553 unsigned char pa_lfr_pkt_cnt_asm;
554 554 unsigned char pa_lfr_pkt_nr_asm;
555 555 unsigned char acquisitionTime[BYTES_PER_TIME];
556 556 unsigned char pa_lfr_asm_blk_nr[BYTES_PER_BLKNR];
557 557 } Header_TM_LFR_SCIENCE_ASM_t;
558 558
559 559 typedef struct {
560 560 unsigned char targetLogicalAddress;
561 561 unsigned char protocolIdentifier;
562 562 unsigned char reserved;
563 563 unsigned char userApplication;
564 564 unsigned char packetID[BYTES_PER_PACKETID];
565 565 unsigned char packetSequenceControl[BYTES_PER_SEQ_CTRL];
566 566 unsigned char packetLength[BYTES_PER_PKT_LEN];
567 567 // DATA FIELD HEADER
568 568 unsigned char spare1_pusVersion_spare2;
569 569 unsigned char serviceType;
570 570 unsigned char serviceSubType;
571 571 unsigned char destinationID;
572 572 unsigned char time[BYTES_PER_TIME];
573 573 // AUXILIARY HEADER
574 574 unsigned char sid;
575 575 unsigned char pa_bia_status_info;
576 576 unsigned char sy_lfr_common_parameters_spare;
577 577 unsigned char sy_lfr_common_parameters;
578 578 unsigned char acquisitionTime[BYTES_PER_TIME];
579 579 unsigned char source_data_spare;
580 580 unsigned char pa_lfr_bp_blk_nr[BYTES_PER_BLKNR];
581 581 } Header_TM_LFR_SCIENCE_BP_with_spare_t;
582 582
583 583 typedef struct {
584 584 unsigned char targetLogicalAddress;
585 585 unsigned char protocolIdentifier;
586 586 unsigned char reserved;
587 587 unsigned char userApplication;
588 588 unsigned char packetID[BYTES_PER_PACKETID];
589 589 unsigned char packetSequenceControl[BYTES_PER_SEQ_CTRL];
590 590 unsigned char packetLength[BYTES_PER_PKT_LEN];
591 591 // DATA FIELD HEADER
592 592 unsigned char spare1_pusVersion_spare2;
593 593 unsigned char serviceType;
594 594 unsigned char serviceSubType;
595 595 unsigned char destinationID;
596 596 unsigned char time[BYTES_PER_TIME];
597 597 // AUXILIARY HEADER
598 598 unsigned char sid;
599 599 unsigned char pa_bia_status_info;
600 600 unsigned char sy_lfr_common_parameters_spare;
601 601 unsigned char sy_lfr_common_parameters;
602 602 unsigned char acquisitionTime[BYTES_PER_TIME];
603 603 unsigned char pa_lfr_bp_blk_nr[BYTES_PER_BLKNR];
604 604 } Header_TM_LFR_SCIENCE_BP_t;
605 605
606 606 typedef struct {
607 607 // TARGET LOGICAL ADDRESS (targetLogicalAddress) IS REMOVED BY THE GRSPW MODULE
608 608 unsigned char protocolIdentifier;
609 609 unsigned char reserved;
610 610 unsigned char userApplication;
611 611 unsigned char packetID[BYTES_PER_PACKETID];
612 612 unsigned char packetSequenceControl[BYTES_PER_SEQ_CTRL];
613 613 unsigned char packetLength[BYTES_PER_PKT_LEN];
614 614 // DATA FIELD HEADER
615 615 unsigned char headerFlag_pusVersion_Ack;
616 616 unsigned char serviceType;
617 617 unsigned char serviceSubType;
618 618 unsigned char sourceID;
619 619 unsigned char dataAndCRC[CCSDS_TC_PKT_MAX_SIZE-CCSDS_TC_HEADER_LENGTH];
620 620 } ccsdsTelecommandPacket_t;
621 621
622 622 //**********
623 623 //**********
624 624 // TM_LFR_HK
625 625
626 626 #define STATUS_WORD_SC_POTENTIAL_FLAG_BIT 0x40 // [0100 0000]
627 627 #define STATUS_WORD_SC_POTENTIAL_FLAG_MASK 0xbf // [1011 1111]
628 628 #define STATUS_WORD_PAS_FILTER_ENABLED_BIT 0x20 // [0010 0000]
629 629 #define STATUS_WORD_PAS_FILTER_ENABLED_MASK 0xdf // [1101 1111]
630 630 #define STATUS_WORD_WATCHDOG_BIT 0x10 // [0001 0000]
631 631 #define STATUS_WORD_WATCHDOG_MASK 0xef // [1110 1111]
632 632 #define STATUS_WORD_CALIB_BIT 0x08 // [0000 1000]
633 633 #define STATUS_WORD_CALIB_MASK 0xf7 // [1111 0111]
634 634 #define STATUS_WORD_RESET_CAUSE_BITS 0x07 // [0000 0111]
635 635 #define STATUS_WORD_RESET_CAUSE_MASK 0xf8 // [1111 1000]
636 636 #define STATUS_WORD_LINK_STATE_BITS 0x03 // [0000 0111]
637 637 #define STATUS_WORD_LINK_STATE_MASK 0xf8 // [1111 1000]
638 638 #define STATUS_WORD_LFR_MODE_SHIFT 4
639 639 #define STATUS_WORD_LFR_MODE_BITS 0xf0 // [1111 0000]
640 640 #define STATUS_WORD_LFR_MODE_MASK 0x0f // [0000 1111]
641 641 #define STATUS_WORD_0_DEFAULT 0x0d // [0000 1101]
642 642
643 643 typedef struct {
644 644 unsigned char targetLogicalAddress;
645 645 unsigned char protocolIdentifier;
646 646 unsigned char reserved;
647 647 unsigned char userApplication;
648 648 unsigned char packetID[BYTES_PER_PACKETID];
649 649 unsigned char packetSequenceControl[BYTES_PER_SEQ_CTRL];
650 650 unsigned char packetLength[BYTES_PER_PKT_LEN];
651 651 unsigned char spare1_pusVersion_spare2;
652 652 unsigned char serviceType;
653 653 unsigned char serviceSubType;
654 654 unsigned char destinationID;
655 655 unsigned char time[BYTES_PER_TIME];
656 656 unsigned char sid;
657 657
658 658 //**************
659 659 // HK PARAMETERS
660 660 unsigned char lfr_status_word[BYTES_PER_STA_WRD];
661 661 unsigned char lfr_sw_version[BYTES_PER_SW_VER];
662 662 unsigned char lfr_fpga_version[BYTES_PER_VHD_VER];
663 663 // ressource statistics
664 664 unsigned char hk_lfr_cpu_load;
665 665 unsigned char hk_lfr_cpu_load_max;
666 666 unsigned char hk_lfr_cpu_load_aver;
667 667 unsigned char hk_lfr_q_sd_fifo_size_max;
668 668 unsigned char hk_lfr_q_sd_fifo_size;
669 669 unsigned char hk_lfr_q_rv_fifo_size_max;
670 670 unsigned char hk_lfr_q_rv_fifo_size;
671 671 unsigned char hk_lfr_q_p0_fifo_size_max;
672 672 unsigned char hk_lfr_q_p0_fifo_size;
673 673 unsigned char hk_lfr_q_p1_fifo_size_max;
674 674 unsigned char hk_lfr_q_p1_fifo_size;
675 675 unsigned char hk_lfr_q_p2_fifo_size_max;
676 676 unsigned char hk_lfr_q_p2_fifo_size;
677 677 // tc statistics
678 678 unsigned char hk_lfr_update_info_tc_cnt[COUNTER_2_BYTES];
679 679 unsigned char hk_lfr_update_time_tc_cnt[COUNTER_2_BYTES];
680 680 unsigned char hk_lfr_exe_tc_cnt[COUNTER_2_BYTES];
681 681 unsigned char hk_lfr_rej_tc_cnt[COUNTER_2_BYTES];
682 682 unsigned char hk_lfr_last_exe_tc_id[BYTES_PER_PACKETID];
683 683 unsigned char hk_lfr_last_exe_tc_type[BYTES_PER_TYPE];
684 684 unsigned char hk_lfr_last_exe_tc_subtype[BYTES_PER_SUBTYPE];
685 685 unsigned char hk_lfr_last_exe_tc_time[BYTES_PER_TIME];
686 686 unsigned char hk_lfr_last_rej_tc_id[BYTES_PER_PACKETID];
687 687 unsigned char hk_lfr_last_rej_tc_type[BYTES_PER_TYPE];
688 688 unsigned char hk_lfr_last_rej_tc_subtype[BYTES_PER_SUBTYPE];
689 689 unsigned char hk_lfr_last_rej_tc_time[BYTES_PER_TIME];
690 690 // anomaly statistics
691 691 unsigned char hk_lfr_le_cnt[COUNTER_2_BYTES];
692 692 unsigned char hk_lfr_me_cnt[COUNTER_2_BYTES];
693 693 unsigned char hk_lfr_he_cnt[COUNTER_2_BYTES];
694 694 unsigned char hk_lfr_last_er_rid[COUNTER_2_BYTES];
695 695 unsigned char hk_lfr_last_er_code;
696 696 unsigned char hk_lfr_last_er_time[BYTES_PER_TIME];
697 697 // vhdl_blk_status
698 698 unsigned char hk_lfr_vhdl_aa_sm;
699 699 unsigned char hk_lfr_vhdl_fft_sr;
700 700 unsigned char hk_lfr_vhdl_cic_hk;
701 701 unsigned char hk_lfr_vhdl_iir_cal;
702 702 // spacewire_if_statistics
703 703 unsigned char hk_lfr_dpu_spw_pkt_rcv_cnt[COUNTER_2_BYTES];
704 704 unsigned char hk_lfr_dpu_spw_pkt_sent_cnt[COUNTER_2_BYTES];
705 705 unsigned char hk_lfr_dpu_spw_tick_out_cnt;
706 706 unsigned char hk_lfr_dpu_spw_last_timc;
707 707 // ahb error statistics
708 708 unsigned char hk_lfr_last_fail_addr[BYTES_PER_ADDR];
709 709 // temperatures
710 710 unsigned char hk_lfr_temp_scm[BYTES_PER_TEMP];
711 711 unsigned char hk_lfr_temp_pcb[BYTES_PER_TEMP];
712 712 unsigned char hk_lfr_temp_fpga[BYTES_PER_TEMP];
713 713 // spacecraft potential
714 714 unsigned char hk_lfr_sc_v_f3[BYTES_PER_V];
715 715 unsigned char hk_lfr_sc_e1_f3[BYTES_PER_V];
716 716 unsigned char hk_lfr_sc_e2_f3[BYTES_PER_V];
717 717 // lfr common parameters
718 718 unsigned char sy_lfr_common_parameters_spare;
719 719 unsigned char sy_lfr_common_parameters;
720 720 // error counters
721 721 unsigned char hk_lfr_dpu_spw_parity;
722 722 unsigned char hk_lfr_dpu_spw_disconnect;
723 723 unsigned char hk_lfr_dpu_spw_escape;
724 724 unsigned char hk_lfr_dpu_spw_credit;
725 725 unsigned char hk_lfr_dpu_spw_write_sync;
726 726 unsigned char hk_lfr_dpu_spw_rx_ahb;
727 727 unsigned char hk_lfr_dpu_spw_tx_ahb;
728 728 unsigned char hk_lfr_dpu_spw_early_eop;
729 729 unsigned char hk_lfr_dpu_spw_invalid_addr;
730 730 unsigned char hk_lfr_dpu_spw_eep;
731 731 unsigned char hk_lfr_dpu_spw_rx_too_big;
732 732 // timecode
733 733 unsigned char hk_lfr_timecode_erroneous;
734 734 unsigned char hk_lfr_timecode_missing;
735 735 unsigned char hk_lfr_timecode_invalid;
736 736 // time
737 737 unsigned char hk_lfr_time_timecode_it;
738 738 unsigned char hk_lfr_time_not_synchro;
739 739 unsigned char hk_lfr_time_timecode_ctr;
740 740 // hk_lfr_buffer_dpu_
741 741 unsigned char hk_lfr_buffer_dpu_tc_fifo;
742 742 unsigned char hk_lfr_buffer_dpu_tm_fifo;
743 743 // hk_lfr_ahb_
744 744 unsigned char hk_lfr_ahb_correctable;
745 unsigned char hk_lfr_ahb_uncorrectable;
746 745 // reaction wheel frequency
747 unsigned char hk_lfr_sc_rw_f_flags;
746 unsigned char hk_lfr_sc_rw1_rw2_f_flags;
747 unsigned char hk_lfr_sc_rw3_rw4_f_flags;
748 748 } Packet_TM_LFR_HK_t;
749 749
750 750 //***************
751 751 //***************
752 752 // PARAMETER_DUMP
753 753
754 754 #define BIT_PAS_FILTER_ENABLED 0x01
755 755 #define BIT_CWF_LONG_F3 0x01
756 756
757 757 typedef struct {
758 758 unsigned char targetLogicalAddress;
759 759 unsigned char protocolIdentifier;
760 760 unsigned char reserved;
761 761 unsigned char userApplication;
762 762 unsigned char packetID[BYTES_PER_PACKETID];
763 763 unsigned char packetSequenceControl[BYTES_PER_SEQ_CTRL];
764 764 unsigned char packetLength[BYTES_PER_PKT_LEN];
765 765 // DATA FIELD HEADER
766 766 unsigned char spare1_pusVersion_spare2;
767 767 unsigned char serviceType;
768 768 unsigned char serviceSubType;
769 769 unsigned char destinationID;
770 770 unsigned char time[BYTES_PER_TIME];
771 771 unsigned char sid;
772 772
773 773 //******************
774 774 // COMMON PARAMETERS
775 775 unsigned char sy_lfr_common_parameters_spare;
776 776 unsigned char sy_lfr_common_parameters;
777 777
778 778 //******************
779 779 // NORMAL PARAMETERS
780 780 unsigned char sy_lfr_n_swf_l[PARAM_2_BYTES];
781 781 unsigned char sy_lfr_n_swf_p[PARAM_2_BYTES];
782 782 unsigned char sy_lfr_n_asm_p[PARAM_2_BYTES];
783 783 unsigned char sy_lfr_n_bp_p0;
784 784 unsigned char sy_lfr_n_bp_p1;
785 785 unsigned char sy_lfr_n_cwf_long_f3;
786 786 unsigned char pa_rpw_spare8_1;
787 787
788 788 //*****************
789 789 // BURST PARAMETERS
790 790 unsigned char sy_lfr_b_bp_p0;
791 791 unsigned char sy_lfr_b_bp_p1;
792 792
793 793 //****************
794 794 // SBM1 PARAMETERS
795 795 unsigned char sy_lfr_s1_bp_p0;
796 796 unsigned char sy_lfr_s1_bp_p1;
797 797
798 798 //****************
799 799 // SBM2 PARAMETERS
800 800 unsigned char sy_lfr_s2_bp_p0;
801 801 unsigned char sy_lfr_s2_bp_p1;
802 802
803 803 // mask F0
804 804 unsigned char sy_lfr_fbins_f0_word1[BYTES_PER_WORD];
805 805 unsigned char sy_lfr_fbins_f0_word2[BYTES_PER_WORD];
806 806 unsigned char sy_lfr_fbins_f0_word3[BYTES_PER_WORD];
807 807 unsigned char sy_lfr_fbins_f0_word4[BYTES_PER_WORD];
808 808 // mask F1
809 809 unsigned char sy_lfr_fbins_f1_word1[BYTES_PER_WORD];
810 810 unsigned char sy_lfr_fbins_f1_word2[BYTES_PER_WORD];
811 811 unsigned char sy_lfr_fbins_f1_word3[BYTES_PER_WORD];
812 812 unsigned char sy_lfr_fbins_f1_word4[BYTES_PER_WORD];
813 813 // mask F2
814 814 unsigned char sy_lfr_fbins_f2_word1[BYTES_PER_WORD];
815 815 unsigned char sy_lfr_fbins_f2_word2[BYTES_PER_WORD];
816 816 unsigned char sy_lfr_fbins_f2_word3[BYTES_PER_WORD];
817 817 unsigned char sy_lfr_fbins_f2_word4[BYTES_PER_WORD];
818 818
819 819 // PAS FILTER PARAMETERS
820 820 unsigned char pa_rpw_spare8_2;
821 821 unsigned char spare_sy_lfr_pas_filter_enabled;
822 822 unsigned char sy_lfr_pas_filter_modulus;
823 823 unsigned char sy_lfr_pas_filter_tbad[PARAM_4_BYTES];
824 824 unsigned char sy_lfr_pas_filter_offset;
825 825 unsigned char sy_lfr_pas_filter_shift[PARAM_4_BYTES];
826 826 unsigned char sy_lfr_sc_rw_delta_f[PARAM_4_BYTES];
827 827
828 // LFR_RW_MASK
828 // SY_LFR_RWi_Kj REACTION WHEELS K COEFFICIENTS
829 // RW1_K
830 unsigned char sy_lfr_rw1_k1[4];
831 unsigned char sy_lfr_rw1_k2[4];
832 unsigned char sy_lfr_rw1_k3[4];
833 unsigned char sy_lfr_rw1_k4[4];
834 // RW2_K
835 unsigned char sy_lfr_rw2_k1[4];
836 unsigned char sy_lfr_rw2_k2[4];
837 unsigned char sy_lfr_rw2_k3[4];
838 unsigned char sy_lfr_rw2_k4[4];
839 // RW3_K
840 unsigned char sy_lfr_rw3_k1[4];
841 unsigned char sy_lfr_rw3_k2[4];
842 unsigned char sy_lfr_rw3_k3[4];
843 unsigned char sy_lfr_rw3_k4[4];
844 // RW4_K
845 unsigned char sy_lfr_rw4_k1[4];
846 unsigned char sy_lfr_rw4_k2[4];
847 unsigned char sy_lfr_rw4_k3[4];
848 unsigned char sy_lfr_rw4_k4[4];
849
850 // LFR_RW_MASK REACTION WHEELS MASKS
829 851 unsigned char sy_lfr_rw_mask_f0_word1[BYTES_PER_WORD];
830 852 unsigned char sy_lfr_rw_mask_f0_word2[BYTES_PER_WORD];
831 853 unsigned char sy_lfr_rw_mask_f0_word3[BYTES_PER_WORD];
832 854 unsigned char sy_lfr_rw_mask_f0_word4[BYTES_PER_WORD];
833 855 // mask F1
834 856 unsigned char sy_lfr_rw_mask_f1_word1[BYTES_PER_WORD];
835 857 unsigned char sy_lfr_rw_mask_f1_word2[BYTES_PER_WORD];
836 858 unsigned char sy_lfr_rw_mask_f1_word3[BYTES_PER_WORD];
837 859 unsigned char sy_lfr_rw_mask_f1_word4[BYTES_PER_WORD];
838 860 // mask F2
839 861 unsigned char sy_lfr_rw_mask_f2_word1[BYTES_PER_WORD];
840 862 unsigned char sy_lfr_rw_mask_f2_word2[BYTES_PER_WORD];
841 863 unsigned char sy_lfr_rw_mask_f2_word3[BYTES_PER_WORD];
842 864 unsigned char sy_lfr_rw_mask_f2_word4[BYTES_PER_WORD];
843 865
844 866 // SPARE
845 867 unsigned char pa_rpw_spare8_3;
846 868 } Packet_TM_LFR_PARAMETER_DUMP_t;
847 869
848 870 //**************************
849 871 //**************************
850 872 // TM_LFR_KCOEFFICIENTS_DUMP
851 873
852 874 #define KCOEFF_BLK_NR_PKT1 30
853 875 #define KCOEFF_BLK_NR_PKT2 6
854 876 #define KCOEFF_BLK_SIZE 130
855 877 #define KCOEFF_PKTCNT 2
856 878 #define PKTNR_1 1
857 879 #define PKTNR_2 2
858 880
859 881 typedef struct {
860 882 unsigned char targetLogicalAddress;
861 883 unsigned char protocolIdentifier;
862 884 unsigned char reserved;
863 885 unsigned char userApplication;
864 886 unsigned char packetID[BYTES_PER_PACKETID];
865 887 unsigned char packetSequenceControl[BYTES_PER_SEQ_CTRL];
866 888 unsigned char packetLength[BYTES_PER_PKT_LEN];
867 889 // DATA FIELD HEADER
868 890 unsigned char spare1_pusVersion_spare2;
869 891 unsigned char serviceType;
870 892 unsigned char serviceSubType;
871 893 unsigned char destinationID;
872 894 unsigned char time[BYTES_PER_TIME];
873 895 unsigned char sid;
874 896 unsigned char pkt_cnt;
875 897 unsigned char pkt_nr;
876 898 unsigned char blk_nr;
877 899
878 900 //******************
879 901 // SOURCE DATA repeated N times with N in [0 .. PA_LFR_KCOEFF_BLK_NR]
880 902 // one blk is 2 + 4 * 32 = 130 bytes, 30 blks max in one packet (30 * 130 = 3900)
881 903 unsigned char kcoeff_blks[KCOEFF_BLK_SIZE * KCOEFF_BLK_NR_PKT1];
882 904
883 905 } Packet_TM_LFR_KCOEFFICIENTS_DUMP_t;
884 906
885 907 #endif // CCSDS_TYPES_H_INCLUDED
@@ -1,374 +1,421
1 1 #ifndef FSW_PARAMS_H_INCLUDED
2 2 #define FSW_PARAMS_H_INCLUDED
3 3
4 4 #include "fsw_params_processing.h"
5 5 #include "fsw_params_nb_bytes.h"
6 6 #include "tm_byte_positions.h"
7 7 #include "ccsds_types.h"
8 8
9 9 #define GRSPW_DEVICE_NAME "/dev/grspw0"
10 10 #define UART_DEVICE_NAME "/dev/console"
11 11
12 12 //*******
13 13 // MACROS
14 14 #ifdef PRINT_MESSAGES_ON_CONSOLE
15 15 #define PRINTF(x) printf(x);
16 16 #define PRINTF1(x,y) printf(x,y);
17 17 #define PRINTF2(x,y,z) printf(x,y,z);
18 18 #else
19 19 #define PRINTF(x) ;
20 20 #define PRINTF1(x,y) ;
21 21 #define PRINTF2(x,y,z) ;
22 22 #endif
23 23
24 24 #ifdef BOOT_MESSAGES
25 25 #define BOOT_PRINTF(x) printf(x);
26 26 #define BOOT_PRINTF1(x,y) printf(x,y);
27 27 #define BOOT_PRINTF2(x,y,z) printf(x,y,z);
28 28 #else
29 29 #define BOOT_PRINTF(x) ;
30 30 #define BOOT_PRINTF1(x,y) ;
31 31 #define BOOT_PRINTF2(x,y,z) ;
32 32 #endif
33 33
34 34 #ifdef DEBUG_MESSAGES
35 35 #define DEBUG_PRINTF(x) printf(x);
36 36 #define DEBUG_PRINTF1(x,y) printf(x,y);
37 37 #define DEBUG_PRINTF2(x,y,z) printf(x,y,z);
38 38 #else
39 39 #define DEBUG_PRINTF(x) ;
40 40 #define DEBUG_PRINTF1(x,y) ;
41 41 #define DEBUG_PRINTF2(x,y,z) ;
42 42 #endif
43 43
44 44 #define CONST_65536 65536 // 2^16
45 45 #define CONST_2048 2048 // 2^11
46 46 #define CONST_512 512 // 2^9
47 47 #define CONST_256 256 // 2^8
48 48 #define CONST_128 128 // 2^7
49 49 #define UINT8_MAX 255
50 50
51 51 #define FLOAT_MSBYTE 0
52 52 #define FLOAT_LSBYTE 3
53 53 #define BITS_PER_BYTE 8
54 54 #define INIT_FLOAT 0.
55 55 #define INIT_CHAR 0x00
56 56 #define INT8_ALL_F 0xff
57 57 #define INT16_ALL_F 0xffff
58 58 #define INT32_ALL_F 0xffffffff
59 59 #define INT32_ALL_0 0x00000000
60 60 #define SHIFT_1_BYTE 8
61 61 #define SHIFT_2_BYTES 16
62 62 #define SHIFT_3_BYTES 24
63 63 #define SHIFT_4_BYTES 32
64 64 #define SHIFT_5_BYTES 40
65 65 #define SHIFT_2_BITS 2
66 66 #define SHIFT_3_BITS 3
67 67 #define SHIFT_4_BITS 4
68 68 #define SHIFT_5_BITS 5
69 69 #define SHIFT_6_BITS 6
70 70 #define SHIFT_7_BITS 7
71 71 #define BYTE_0 0
72 72 #define BYTE_1 1
73 73 #define BYTE_2 2
74 74 #define BYTE_3 3
75 75 #define BYTE_4 4
76 76 #define BYTE_5 5
77 77 #define BYTE_6 6
78 78 #define BYTE_7 7
79 79 #define BYTE0_MASK 0xff00
80 80 #define BYTE1_MASK 0x00ff
81 81
82 82 enum lfr_transition_type_t{
83 83 TRANSITION_NOT_SPECIFIC,
84 84 TRANSITION_NORM_TO_S1,
85 85 TRANSITION_NORM_TO_S2,
86 86 TRANSITION_S1_TO_NORM,
87 87 TRANSITION_S2_TO_NORM,
88 88 TRANSITION_S1_TO_S2,
89 89 TRANSITION_S2_TO_S1
90 90 };
91 91
92 92 typedef struct ring_node
93 93 {
94 94 struct ring_node *previous;
95 95 struct ring_node *next;
96 96 unsigned int sid;
97 97 unsigned int coarseTime;
98 98 unsigned int fineTime;
99 99 int buffer_address;
100 100 unsigned int status;
101 101 } ring_node;
102 102
103 103 //************************
104 104 // flight software version
105 105 // this parameters is handled by the Qt project options
106 106
107 107 #define NB_PACKETS_PER_GROUP_OF_CWF 8 // 8 packets containing 336 blk
108 108 #define NB_PACKETS_PER_GROUP_OF_CWF_LIGHT 4 // 4 packets containing 672 blk
109 109 #define NB_SAMPLES_PER_SNAPSHOT 2688 // 336 * 8 = 672 * 4 = 2688
110 110 #define TIME_OFFSET 2
111 111 #define TIME_OFFSET_IN_BYTES 8
112 112 //#define WAVEFORM_EXTENDED_HEADER_OFFSET 22
113 113 #define NB_BYTES_SWF_BLK (2 * 6)
114 114 #define NB_WORDS_SWF_BLK 3
115 115 #define NB_BYTES_CWF3_LIGHT_BLK 6
116 116 //#define WFRM_INDEX_OF_LAST_PACKET 6 // waveforms are transmitted in groups of 2048 blocks, 6 packets of 340 and 1 of 8
117 117 #define NB_RING_NODES_F0 3 // AT LEAST 3
118 118 #define NB_RING_NODES_F1 5 // AT LEAST 3
119 119 #define NB_RING_NODES_F2 5 // AT LEAST 3
120 120 #define NB_RING_NODES_F3 3 // AT LEAST 3
121 121
122 122 //**********
123 123 // LFR MODES
124 124 #define LFR_MODE_STANDBY 0
125 125 #define LFR_MODE_NORMAL 1
126 126 #define LFR_MODE_BURST 2
127 127 #define LFR_MODE_SBM1 3
128 128 #define LFR_MODE_SBM2 4
129 129
130 130 #define TDS_MODE_LFM 5
131 131 #define TDS_MODE_STANDBY 0
132 132 #define TDS_MODE_NORMAL 1
133 133 #define TDS_MODE_BURST 2
134 134 #define TDS_MODE_SBM1 3
135 135 #define TDS_MODE_SBM2 4
136 136
137 137 #define THR_MODE_STANDBY 0
138 138 #define THR_MODE_NORMAL 1
139 139 #define THR_MODE_BURST 2
140 140
141 141 #define RTEMS_EVENT_MODE_STANDBY RTEMS_EVENT_0
142 142 #define RTEMS_EVENT_MODE_NORMAL RTEMS_EVENT_1
143 143 #define RTEMS_EVENT_MODE_BURST RTEMS_EVENT_2
144 144 #define RTEMS_EVENT_MODE_SBM1 RTEMS_EVENT_3
145 145 #define RTEMS_EVENT_MODE_SBM2 RTEMS_EVENT_4
146 146 #define RTEMS_EVENT_MODE_NORM_S1_S2 RTEMS_EVENT_5
147 147 #define RTEMS_EVENT_NORM_BP1_F0 RTEMS_EVENT_6
148 148 #define RTEMS_EVENT_NORM_BP2_F0 RTEMS_EVENT_7
149 149 #define RTEMS_EVENT_NORM_ASM_F0 RTEMS_EVENT_8 // ASM only in NORM mode
150 150 #define RTEMS_EVENT_NORM_BP1_F1 RTEMS_EVENT_9
151 151 #define RTEMS_EVENT_NORM_BP2_F1 RTEMS_EVENT_10
152 152 #define RTEMS_EVENT_NORM_ASM_F1 RTEMS_EVENT_11 // ASM only in NORM mode
153 153 #define RTEMS_EVENT_NORM_BP1_F2 RTEMS_EVENT_12
154 154 #define RTEMS_EVENT_NORM_BP2_F2 RTEMS_EVENT_13
155 155 #define RTEMS_EVENT_NORM_ASM_F2 RTEMS_EVENT_14 // ASM only in NORM mode
156 156 #define RTEMS_EVENT_SBM_BP1_F0 RTEMS_EVENT_15
157 157 #define RTEMS_EVENT_SBM_BP2_F0 RTEMS_EVENT_16
158 158 #define RTEMS_EVENT_SBM_BP1_F1 RTEMS_EVENT_17
159 159 #define RTEMS_EVENT_SBM_BP2_F1 RTEMS_EVENT_18
160 160 #define RTEMS_EVENT_BURST_BP1_F0 RTEMS_EVENT_19
161 161 #define RTEMS_EVENT_BURST_BP2_F0 RTEMS_EVENT_20
162 162 #define RTEMS_EVENT_BURST_BP1_F1 RTEMS_EVENT_21
163 163 #define RTEMS_EVENT_BURST_BP2_F1 RTEMS_EVENT_22
164 164 #define RTEMS_EVENT_SWF_RESYNCH RTEMS_EVENT_23
165 165
166 166 //********************************************
167 167 //********************************************
168 168 // LFR PARAMETERS: DEFAULT, MIN AND MAX VALUES
169 169
170 170 #define DEFAULT_LAST_VALID_TRANSITION_DATE 0xffffffff
171 171
172 172 // COMMON
173 173 #define DEFAULT_SY_LFR_COMMON0 0x00
174 174 #define DEFAULT_SY_LFR_COMMON1 0x20 // default value bw sp0 sp1 r0 r1 r2 = 1 0 0 0 0 0
175 175
176 176 // NORM
177 177 #define DFLT_SY_LFR_N_SWF_L 2048 // nb sample
178 178 #define DFLT_SY_LFR_N_SWF_P 300 // sec
179 179 #define MIN_SY_LFR_N_SWF_P 22 // sec
180 180 #define DFLT_SY_LFR_N_ASM_P 3600 // sec
181 181 #define DFLT_SY_LFR_N_BP_P0 4 // sec
182 182 #define DFLT_SY_LFR_N_BP_P1 20 // sec
183 183 #define DFLT_SY_LFR_N_CWF_LONG_F3 0 // 0 => production of light continuous waveforms at f3
184 184 #define MIN_DELTA_SNAPSHOT 16 // sec
185 185
186 186 // BURST
187 187 #define DEFAULT_SY_LFR_B_BP_P0 1 // sec
188 188 #define DEFAULT_SY_LFR_B_BP_P1 5 // sec
189 189
190 190 // SBM1
191 191 #define S1_BP_P0_SCALE 0.25
192 192 #define DEFAULT_SY_LFR_S1_BP_P0 1 // 0.25 sec
193 193 #define DEFAULT_SY_LFR_S1_BP_P1 1 // sec
194 194
195 195 // SBM2
196 196 #define DEFAULT_SY_LFR_S2_BP_P0 1 // sec
197 197 #define DEFAULT_SY_LFR_S2_BP_P1 5 // sec
198 198
199 199 // ADDITIONAL PARAMETERS
200 200 #define TIME_BETWEEN_TWO_SWF_PACKETS 30 // nb x 10 ms => 300 ms
201 201 #define TIME_BETWEEN_TWO_CWF3_PACKETS 1000 // nb x 10 ms => 10 s
202 202
203 203 // STATUS WORD
204 204 #define DEFAULT_STATUS_WORD_BYTE0 0x0d // [0000] [1] [101] mode 4 bits / SPW enabled 1 bit / state is run 3 bits
205 205
206 206 #define DEFAULT_STATUS_WORD_BYTE1 0x00
207 207 // TC_LFR_LOAD_FILTER_PAR
208 208 #define MIN_PAS_FILTER_MODULUS 4
209 209 #define MAX_PAS_FILTER_MODULUS 8
210 210 #define MIN_PAS_FILTER_TBAD 0.0
211 211 #define MAX_PAS_FILTER_TBAD 4.0
212 212 #define MIN_PAS_FILTER_OFFSET 0
213 213 #define MAX_PAS_FILTER_OFFSET 7
214 214 #define MIN_PAS_FILTER_SHIFT 0.0
215 215 #define MAX_PAS_FILTER_SHIFT 1.0
216 216 //
217 217 #define SY_LFR_DPU_CONNECT_TIMEOUT 100 // 100 * 10 ms = 1 s
218 218 #define SY_LFR_DPU_CONNECT_ATTEMPT 3
219 219 //****************************
220 220
221 221 //*****************************
222 222 // APB REGISTERS BASE ADDRESSES
223 223 #define REGS_ADDR_APBUART 0x80000100
224 224 #define REGS_ADDR_GPTIMER 0x80000300
225 225 #define REGS_ADDR_GRSPW 0x80000500
226 226 #define APB_OFFSET_GRSPW_STATUS_REGISTER 0x04
227 227 #define APB_OFFSET_GRSPW_TIME_REGISTER 0x14
228 228 #define REGS_ADDR_TIME_MANAGEMENT 0x80000600
229 229 #define REGS_ADDR_GRGPIO 0x80000b00
230 230
231 231 #define REGS_ADDR_SPECTRAL_MATRIX 0x80000f00
232 232 #define REGS_ADDR_WAVEFORM_PICKER 0x80000f54 // PDB >= 0.1.28
233 233 #define APB_OFFSET_VHDL_REV 0xb0
234 234 #define REGS_ADDR_VHDL_VERSION 0x80000ff0
235 235
236 236 #define APBUART_CTRL_REG_MASK_DB 0xfffff7ff
237 237 #define APBUART_CTRL_REG_MASK_TE 0x00000002
238 238 // scaler value = system_clock_frequency / ( baud_rate * 8 ) - 1
239 239 #define APBUART_SCALER_RELOAD_VALUE 0x00000050 // 25 MHz => about 38400
240 240
241 241 //**********
242 242 // IRQ LINES
243 243 #define IRQ_GPTIMER_WATCHDOG 9
244 244 #define IRQ_SPARC_GPTIMER_WATCHDOG 0x19 // see sparcv8.pdf p.76 for interrupt levels
245 245 #define IRQ_WAVEFORM_PICKER 14
246 246 #define IRQ_SPARC_WAVEFORM_PICKER 0x1e // see sparcv8.pdf p.76 for interrupt levels
247 247 #define IRQ_SPECTRAL_MATRIX 6
248 248 #define IRQ_SPARC_SPECTRAL_MATRIX 0x16 // see sparcv8.pdf p.76 for interrupt levels
249 249
250 250 //*****
251 251 // TIME
252 252 #define CLKDIV_WATCHDOG (10000000 - 1) // 10.0s => 10 000 000
253 253 #define TIMER_WATCHDOG 1
254 254 #define WATCHDOG_PERIOD 100 // 1s
255 255 #define HK_PERIOD 100 // 100 * 10ms => 1s
256 256 #define AVGV_PERIOD 6 // 6 * 10ms => 60ms (1 / 16 = 62.5ms)
257 257 #define SY_LFR_TIME_SYN_TIMEOUT_in_ticks 200 // 200 * 10 ms = 2 s
258 258 #define HK_SYNC_WAIT 10 // 10 * 10 ms = 100 ms
259 259 #define SPW_LINK_WAIT 10 // 10 * 10 ms = 100 ms
260 260 #define TIMECODE_TIMER_TIMEOUT 120 // 120 * 10 ms = 1.2 s
261 261 #define TIMECODE_TIMER_TIMEOUT_INIT 200 // 200 * 10 ms = 2.0 s
262 262 #define TIMECODE_MASK 0x3f // 0011 1111
263 263
264 264 //**********
265 265 // LPP CODES
266 266 #define LFR_SUCCESSFUL 0
267 267 #define LFR_DEFAULT 1
268 268 #define LFR_EXE_ERROR 2
269 269
270 270 //******
271 271 // RTEMS
272 272 #define STACK_SIZE_MULT 2
273 273
274 274 #define TASKID_AVGV 0
275 275 #define TASKID_RECV 1
276 276 #define TASKID_ACTN 2
277 277 #define TASKID_SPIQ 3
278 278 #define TASKID_LOAD 4
279 279 #define TASKID_AVF0 5
280 280 #define TASKID_SWBD 6
281 281 #define TASKID_WFRM 7
282 282 #define TASKID_DUMB 8
283 283 #define TASKID_HOUS 9
284 284 #define TASKID_PRC0 10
285 285 #define TASKID_CWF3 11
286 286 #define TASKID_CWF2 12
287 287 #define TASKID_CWF1 13
288 288 #define TASKID_SEND 14
289 289 #define TASKID_LINK 15
290 290 #define TASKID_AVF1 16
291 291 #define TASKID_PRC1 17
292 292 #define TASKID_AVF2 18
293 293 #define TASKID_PRC2 19
294 294
295 295 #define TASK_PRIORITY_SPIQ 5
296 296 #define TASK_PRIORITY_LINK 20
297 297 #define TASK_PRIORITY_AVGV 25
298 298 #define TASK_PRIORITY_HOUS 30
299 299 #define TASK_PRIORITY_CWF1 35 // CWF1 and CWF2 are never running together
300 300 #define TASK_PRIORITY_CWF2 35 //
301 301 #define TASK_PRIORITY_SWBD 37 // SWBD has a lower priority than WFRM, this is to extract the snapshot before sending it
302 302 #define TASK_PRIORITY_WFRM 40
303 303 #define TASK_PRIORITY_CWF3 40 // there is a printf in this function, be careful with its priority wrt CWF1
304 304 #define TASK_PRIORITY_SEND 45
305 305 #define TASK_PRIORITY_RECV 50
306 306 #define TASK_PRIORITY_ACTN 50
307 307 #define TASK_PRIORITY_AVF0 60
308 308 #define TASK_PRIORITY_AVF1 70
309 309 #define TASK_PRIORITY_PRC0 100
310 310 #define TASK_PRIORITY_PRC1 100
311 311 #define TASK_PRIORITY_AVF2 110
312 312 #define TASK_PRIORITY_PRC2 110
313 313 #define TASK_PRIORITY_LOAD 190
314 314 #define TASK_PRIORITY_DUMB 200
315 315
316 316 #define MSG_QUEUE_COUNT_RECV 10
317 317 #define MSG_QUEUE_COUNT_SEND 50
318 318 #define MSG_QUEUE_COUNT_PRC0 10
319 319 #define MSG_QUEUE_COUNT_PRC1 10
320 320 #define MSG_QUEUE_COUNT_PRC2 5
321 321 #define MSG_QUEUE_SIZE_SEND 812 // 808 + 4 => TM_LFR_SCIENCE_BURST_BP2_F1
322 322 #define ACTION_MSG_SPW_IOCTL_SEND_SIZE 24 // hlen *hdr dlen *data sent options
323 323 #define MSG_QUEUE_SIZE_PRC0 36 // two pointers, one rtems_event + 6 integers
324 324 #define MSG_QUEUE_SIZE_PRC1 36 // two pointers, one rtems_event + 6 integers
325 325 #define MSG_QUEUE_SIZE_PRC2 36 // two pointers, one rtems_event + 6 integers
326 326
327 327 #define QUEUE_RECV 0
328 328 #define QUEUE_SEND 1
329 329 #define QUEUE_PRC0 2
330 330 #define QUEUE_PRC1 3
331 331 #define QUEUE_PRC2 4
332 332
333 333 #define CPU_USAGE_REPORT_PERIOD 6 // * 10 s = period
334 334
335 335 struct param_local_str{
336 336 unsigned int local_sbm1_nb_cwf_sent;
337 337 unsigned int local_sbm1_nb_cwf_max;
338 338 unsigned int local_sbm2_nb_cwf_sent;
339 339 unsigned int local_sbm2_nb_cwf_max;
340 340 };
341 341
342 342 //************
343 343 // FBINS MASKS
344 344
345 345 #define BYTES_PER_FBINS_MASK 16
346 346
347 347 typedef struct {
348 348 unsigned char merged_fbins_mask_f0[BYTES_PER_FBINS_MASK];
349 349 unsigned char merged_fbins_mask_f1[BYTES_PER_FBINS_MASK];
350 350 unsigned char merged_fbins_mask_f2[BYTES_PER_FBINS_MASK];
351 351 } fbins_masks_t;
352 352
353 353 #define DEFAULT_SY_LFR_PAS_FILTER_ENABLED 0
354 354 #define DEFAULT_SY_LFR_PAS_FILTER_MODULUS 4
355 355 #define DEFAULT_SY_LFR_PAS_FILTER_TBAD 1.0
356 356 #define DEFAULT_SY_LFR_PAS_FILTER_OFFSET 0
357 357 #define DEFAULT_SY_LFR_PAS_FILTER_SHIFT 0.5
358 #define DEFAULT_SY_LFR_SC_RW_DELTA_F 0.025
358 #define DEFAULT_SY_LFR_SC_RW_DELTA_F 0.045
359 #define DEFAULT_SY_LFR_RW_K1 1.
360 #define DEFAULT_SY_LFR_RW_K2 8.
361 #define DEFAULT_SY_LFR_RW_K3 24.
362 #define DEFAULT_SY_LFR_RW_K4 48.
359 363
360 364 typedef struct{
361 365 unsigned char spare_sy_lfr_pas_filter_enabled;
362 366 unsigned char sy_lfr_pas_filter_modulus;
363 367 float sy_lfr_pas_filter_tbad;
364 368 unsigned char sy_lfr_pas_filter_offset;
365 369 float sy_lfr_pas_filter_shift;
366 370 float sy_lfr_sc_rw_delta_f;
371 // rw1_k
372 float sy_lfr_rw1_k1;
373 float sy_lfr_rw1_k2;
374 float sy_lfr_rw1_k3;
375 float sy_lfr_rw1_k4;
376 // rw2_k
377 float sy_lfr_rw2_k1;
378 float sy_lfr_rw2_k2;
379 float sy_lfr_rw2_k3;
380 float sy_lfr_rw2_k4;
381 // rw3_k
382 float sy_lfr_rw3_k1;
383 float sy_lfr_rw3_k2;
384 float sy_lfr_rw3_k3;
385 float sy_lfr_rw3_k4;
386 // rw4_k
387 float sy_lfr_rw4_k1;
388 float sy_lfr_rw4_k2;
389 float sy_lfr_rw4_k3;
390 float sy_lfr_rw4_k4;
367 391 } filterPar_t;
368 392
393 typedef struct{
394 // rw1_f
395 float cp_rpw_sc_rw1_f1;
396 float cp_rpw_sc_rw1_f2;
397 float cp_rpw_sc_rw1_f3;
398 float cp_rpw_sc_rw1_f4;
399 // rw2_f
400 float cp_rpw_sc_rw2_f1;
401 float cp_rpw_sc_rw2_f2;
402 float cp_rpw_sc_rw2_f3;
403 float cp_rpw_sc_rw2_f4;
404 // rw3_f
405 float cp_rpw_sc_rw3_f1;
406 float cp_rpw_sc_rw3_f2;
407 float cp_rpw_sc_rw3_f3;
408 float cp_rpw_sc_rw3_f4;
409 // rw4_f
410 float cp_rpw_sc_rw4_f1;
411 float cp_rpw_sc_rw4_f2;
412 float cp_rpw_sc_rw4_f3;
413 float cp_rpw_sc_rw4_f4;
414 } rw_f_t;
415
369 416 #define NB_ACQUISITION_DURATION 3
370 417 #define ACQUISITION_DURATION_F0 683 // 256 / 24576 * 65536
371 418 #define ACQUISITION_DURATION_F1 4096 // 256 / 4096 * 65536
372 419 #define ACQUISITION_DURATION_F2 65536 // 256 / 256 * 65536
373 420
374 421 #endif // FSW_PARAMS_H_INCLUDED
@@ -1,77 +1,106
1 1 #ifndef FSW_PARAMS_NB_BYTES_H
2 2 #define FSW_PARAMS_NB_BYTES_H
3 3
4 4 #define PACKET_POS_SEQUENCE_CNT 6 // 4 + 2
5 5 #define PACKET_POS_PA_LFR_SID_PKT 20 // 4 + 16
6 6 #define PACKET_POS_SERVICE_TYPE 11 // 4 + 7
7 7
8 8 #define DATAFIELD_OFFSET 10
9 9
10 10 // TC_LFR_LOAD_COMMON_PAR
11 11
12 12 // TC_LFR_LOAD_NORMAL_PAR
13 13 #define DATAFIELD_POS_SY_LFR_N_SWF_L 0
14 14 #define DATAFIELD_POS_SY_LFR_N_SWF_P 2
15 15 #define DATAFIELD_POS_SY_LFR_N_ASM_P 4
16 16 #define DATAFIELD_POS_SY_LFR_N_BP_P0 6
17 17 #define DATAFIELD_POS_SY_LFR_N_BP_P1 7
18 18 #define DATAFIELD_POS_SY_LFR_N_CWF_LONG_F3 8
19 19
20 20 // TC_LFR_LOAD_BURST_PAR
21 21 #define DATAFIELD_POS_SY_LFR_B_BP_P0 0
22 22 #define DATAFIELD_POS_SY_LFR_B_BP_P1 1
23 23
24 24 // TC_LFR_LOAD_SBM1_PAR
25 25 #define DATAFIELD_POS_SY_LFR_S1_BP_P0 0
26 26 #define DATAFIELD_POS_SY_LFR_S1_BP_P1 1
27 27
28 28 // TC_LFR_LOAD_SBM2_PAR
29 29 #define DATAFIELD_POS_SY_LFR_S2_BP_P0 0
30 30 #define DATAFIELD_POS_SY_LFR_S2_BP_P1 1
31 31
32 32 // TC_LFR_UPDATE_INFO
33 33 #define BYTE_POS_UPDATE_INFO_PARAMETERS_SET1 10
34 34 #define BYTE_POS_UPDATE_INFO_PARAMETERS_SET2 11
35 35 #define BYTE_POS_UPDATE_INFO_PARAMETERS_SET5 34
36 36 #define BYTE_POS_UPDATE_INFO_PARAMETERS_SET6 35
37 // RW1
37 38 #define BYTE_POS_UPDATE_INFO_CP_RPW_SC_RW1_F1 44
38 39 #define BYTE_POS_UPDATE_INFO_CP_RPW_SC_RW1_F2 48
39 #define BYTE_POS_UPDATE_INFO_CP_RPW_SC_RW2_F1 52
40 #define BYTE_POS_UPDATE_INFO_CP_RPW_SC_RW2_F2 56
41 #define BYTE_POS_UPDATE_INFO_CP_RPW_SC_RW3_F1 60
42 #define BYTE_POS_UPDATE_INFO_CP_RPW_SC_RW3_F2 64
43 #define BYTE_POS_UPDATE_INFO_CP_RPW_SC_RW4_F1 68
44 #define BYTE_POS_UPDATE_INFO_CP_RPW_SC_RW4_F2 72
45 #define BYTE_POS_UPDATE_INFO_CP_RPW_SC_RW_F_FLAGS 77
40 #define BYTE_POS_UPDATE_INFO_CP_RPW_SC_RW1_F3 52
41 #define BYTE_POS_UPDATE_INFO_CP_RPW_SC_RW1_F4 56
42 // RW2
43 #define BYTE_POS_UPDATE_INFO_CP_RPW_SC_RW2_F1 60
44 #define BYTE_POS_UPDATE_INFO_CP_RPW_SC_RW2_F2 64
45 #define BYTE_POS_UPDATE_INFO_CP_RPW_SC_RW2_F3 68
46 #define BYTE_POS_UPDATE_INFO_CP_RPW_SC_RW2_F4 72
47 // RW3
48 #define BYTE_POS_UPDATE_INFO_CP_RPW_SC_RW3_F1 76
49 #define BYTE_POS_UPDATE_INFO_CP_RPW_SC_RW3_F2 80
50 #define BYTE_POS_UPDATE_INFO_CP_RPW_SC_RW3_F3 84
51 #define BYTE_POS_UPDATE_INFO_CP_RPW_SC_RW3_F4 88
52 // RW4
53 #define BYTE_POS_UPDATE_INFO_CP_RPW_SC_RW4_F1 92
54 #define BYTE_POS_UPDATE_INFO_CP_RPW_SC_RW4_F2 96
55 #define BYTE_POS_UPDATE_INFO_CP_RPW_SC_RW4_F3 100
56 #define BYTE_POS_UPDATE_INFO_CP_RPW_SC_RW4_F4 104
46 57
47 58 #define BITS_LFR_MODE 0x1e
48 59 #define SHIFT_LFR_MODE 1
49 60 #define BITS_TDS_MODE 0xf0
50 61 #define SHIFT_TDS_MODE 4
51 62 #define BITS_THR_MODE 0x0f
52 63 #define BITS_BIA 0xfe
53 64
54 65 // TC_LFR_ENTER_MODE
55 66 #define BYTE_POS_CP_MODE_LFR_SET 11
56 67 #define BYTE_POS_CP_LFR_ENTER_MODE_TIME 12
57 68
58 69 //TC_LFR_LOAD_FBINS_MASK
59 70
60 71 // TC_LFR_LOAD_FILTER_PAR
72 #define NB_RW_K_COEFFS 16
73 #define NB_BYTES_PER_RW_K_COEFF 4
61 74 #define DATAFIELD_POS_PA_RPW_SPARE8_2 0 // 8 bits
62 75 #define DATAFIELD_POS_SY_LFR_PAS_FILTER_ENABLED 1 // 8 bits
63 76 #define DATAFIELD_POS_SY_LFR_PAS_FILTER_MODULUS 2 // 8 bits
64 77 #define DATAFIELD_POS_SY_LFR_PAS_FILTER_TBAD 3 // 32 bits
65 78 #define DATAFIELD_POS_SY_LFR_PAS_FILTER_OFFSET 7 // 8 bits
66 79 #define DATAFIELD_POS_SY_LFR_PAS_FILTER_SHIFT 8 // 32 bits
67 80 #define DATAFIELD_POS_SY_LFR_SC_RW_DELTA_F 12 // 32 bits
81 #define DATAFIELD_POS_SY_LFR_RW1_K1 16 // 32 bits
82 #define DATAFIELD_POS_SY_LFR_RW1_K2 20 // 32 bits
83 #define DATAFIELD_POS_SY_LFR_RW1_K3 24 // 32 bits
84 #define DATAFIELD_POS_SY_LFR_RW1_K4 28 // 32 bits
85 #define DATAFIELD_POS_SY_LFR_RW2_K1 32 // 32 bits
86 #define DATAFIELD_POS_SY_LFR_RW2_K2 36 // 32 bits
87 #define DATAFIELD_POS_SY_LFR_RW2_K3 40 // 32 bits
88 #define DATAFIELD_POS_SY_LFR_RW2_K4 44 // 32 bits
89 #define DATAFIELD_POS_SY_LFR_RW3_K1 48 // 32 bits
90 #define DATAFIELD_POS_SY_LFR_RW3_K2 52 // 32 bits
91 #define DATAFIELD_POS_SY_LFR_RW3_K3 56 // 32 bits
92 #define DATAFIELD_POS_SY_LFR_RW3_K4 60 // 32 bits
93 #define DATAFIELD_POS_SY_LFR_RW4_K1 64 // 32 bits
94 #define DATAFIELD_POS_SY_LFR_RW4_K2 68 // 32 bits
95 #define DATAFIELD_POS_SY_LFR_RW4_K3 72 // 32 bits
96 #define DATAFIELD_POS_SY_LFR_RW4_K4 76 // 32 bits
68 97
69 98 // TC_LFR_LOAD_KCOEFFICIENTS
70 99 #define NB_BYTES_PER_FLOAT 4
71 100 #define DATAFIELD_POS_SY_LFR_KCOEFF_FREQUENCY 0 // 10 - 10
72 101 #define DATAFIELD_POS_SY_LFR_KCOEFF_1 2 // 12 - 10
73 102
74 103 // TM_LFR_KCOEFFICIENTS_DUMP
75 104 #define BYTE_POS_KCOEFFICIENTS_PARAMETES 20
76 105
77 106 #endif // FSW_PARAMS_NB_BYTES_H
General Comments 0
You need to be logged in to leave comments. Login now