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