##// END OF EJS Templates
sequence_cnt field set for BP and ASM packets
paul -
r133:0209817182bd VHDLib206
parent child
Show More
@@ -1,6 +1,6
1 #############################################################################
1 #############################################################################
2 # Makefile for building: bin/fsw
2 # Makefile for building: bin/fsw
3 # Generated by qmake (2.01a) (Qt 4.8.6) on: Tue May 13 15:18:10 2014
3 # Generated by qmake (2.01a) (Qt 4.8.6) on: Thu May 15 08:30:40 2014
4 # Project: fsw-qt.pro
4 # Project: fsw-qt.pro
5 # Template: app
5 # Template: app
6 # Command: /usr/bin/qmake-qt4 -spec /usr/lib64/qt4/mkspecs/linux-g++ -o Makefile fsw-qt.pro
6 # Command: /usr/bin/qmake-qt4 -spec /usr/lib64/qt4/mkspecs/linux-g++ -o Makefile fsw-qt.pro
@@ -1,6 +1,6
1 <?xml version="1.0" encoding="UTF-8"?>
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE QtCreatorProject>
2 <!DOCTYPE QtCreatorProject>
3 <!-- Written by QtCreator 3.0.1, 2014-05-13T15:58:32. -->
3 <!-- Written by QtCreator 3.0.1, 2014-05-15T06:56:44. -->
4 <qtcreator>
4 <qtcreator>
5 <data>
5 <data>
6 <variable>ProjectExplorer.Project.ActiveTarget</variable>
6 <variable>ProjectExplorer.Project.ActiveTarget</variable>
@@ -245,7 +245,6 struct param_local_str{
245 unsigned int local_sbm1_nb_cwf_max;
245 unsigned int local_sbm1_nb_cwf_max;
246 unsigned int local_sbm2_nb_cwf_sent;
246 unsigned int local_sbm2_nb_cwf_sent;
247 unsigned int local_sbm2_nb_cwf_max;
247 unsigned int local_sbm2_nb_cwf_max;
248 unsigned int local_nb_interrupt_f0_MAX;
249 };
248 };
250
249
251 #endif // FSW_PARAMS_H_INCLUDED
250 #endif // FSW_PARAMS_H_INCLUDED
@@ -1,6 +1,9
1 #ifndef TM_BYTE_POSITIONS_H
1 #ifndef TM_BYTE_POSITIONS_H
2 #define TM_BYTE_POSITIONS_H
2 #define TM_BYTE_POSITIONS_H
3
3
4 // SEQUENCE_CNT
5 #define PACKET_POS_SEQUENCE_CNT 6 // 4 + 2
6
4 // TC_LFR_LOAD_COMMON_PAR
7 // TC_LFR_LOAD_COMMON_PAR
5
8
6 // TC_LFR_LOAD_NORMAL_PAR
9 // TC_LFR_LOAD_NORMAL_PAR
@@ -3,7 +3,7
3
3
4 #define NB_BINS_PER_SM 128
4 #define NB_BINS_PER_SM 128
5 #define NB_VALUES_PER_SM 25
5 #define NB_VALUES_PER_SM 25
6 #define TOTAL_SIZE_SM 3200 // 25 * 128
6 #define TOTAL_SIZE_SM 3200 // 25 * 128 = 0xC80
7 #define TOTAL_SIZE_NORM_BP1_F0 99 // 11 * 9 = 99
7 #define TOTAL_SIZE_NORM_BP1_F0 99 // 11 * 9 = 99
8 #define TOTAL_SIZE_NORM_BP1_F1 117 // 13 * 9 = 117
8 #define TOTAL_SIZE_NORM_BP1_F1 117 // 13 * 9 = 117
9 #define TOTAL_SIZE_NORM_BP1_F2 108 // 12 * 9 = 108
9 #define TOTAL_SIZE_NORM_BP1_F2 108 // 12 * 9 = 108
@@ -19,23 +19,23
19 #define NB_RING_NODES_ASM_BURST_SBM_F2 3 // AT LEAST 3
19 #define NB_RING_NODES_ASM_BURST_SBM_F2 3 // AT LEAST 3
20 #define NB_RING_NODES_ASM_NORM_F2 3 // AT LEAST 3
20 #define NB_RING_NODES_ASM_NORM_F2 3 // AT LEAST 3
21 //
21 //
22 #define NB_BINS_PER_ASM_F0 88
22 #define NB_BINS_PER_ASM_F0 88
23 #define NB_BINS_PER_PKT_ASM_F0 44
23 #define NB_BINS_PER_PKT_ASM_F0 44
24 #define TOTAL_SIZE_ASM_F0_IN_BYTES 4400 // 25 * 88 * 2
24 #define TOTAL_SIZE_ASM_F0_IN_BYTES 4400 // 25 * 88 * 2
25 #define ASM_F0_INDICE_START 17 // 88 bins
25 #define ASM_F0_INDICE_START 17 // 88 bins
26 #define ASM_F0_INDICE_STOP 104 // 2 packets of 44 bins
26 #define ASM_F0_INDICE_STOP 104 // 2 packets of 44 bins
27 //
27 //
28 #define NB_BINS_PER_ASM_F1 104
28 #define NB_BINS_PER_ASM_F1 104
29 #define NB_BINS_PER_PKT_ASM_F1 52
29 #define NB_BINS_PER_PKT_ASM_F1 52
30 #define TOTAL_SIZE_ASM_F1_IN_BYTES 5200 // 25 * 104 * 2
30 #define TOTAL_SIZE_ASM_F1_IN_BYTES 5200 // 25 * 104 * 2
31 #define ASM_F1_INDICE_START 6 // 104 bins
31 #define ASM_F1_INDICE_START 6 // 104 bins
32 #define ASM_F1_INDICE_STOP 109 // 2 packets of 52 bins
32 #define ASM_F1_INDICE_STOP 109 // 2 packets of 52 bins
33 //
33 //
34 #define NB_BINS_PER_ASM_F2 96
34 #define NB_BINS_PER_ASM_F2 96
35 #define NB_BINS_PER_PKT_ASM_F2 48
35 #define NB_BINS_PER_PKT_ASM_F2 48
36 #define TOTAL_SIZE_ASM_F2_IN_BYTES 4800 // 25 * 96 * 2
36 #define TOTAL_SIZE_ASM_F2_IN_BYTES 4800 // 25 * 96 * 2
37 #define ASM_F2_INDICE_START 7 // 96 bins
37 #define ASM_F2_INDICE_START 7 // 96 bins
38 #define ASM_F2_INDICE_STOP 102 // 2 packets of 48 bins
38 #define ASM_F2_INDICE_STOP 102 // 2 packets of 48 bins
39 //
39 //
40 #define NB_BINS_COMPRESSED_SM_F0 11
40 #define NB_BINS_COMPRESSED_SM_F0 11
41 #define NB_BINS_COMPRESSED_SM_F1 13
41 #define NB_BINS_COMPRESSED_SM_F1 13
@@ -28,19 +28,19 typedef struct ring_node_asm
28 unsigned int status;
28 unsigned int status;
29 } ring_node_asm;
29 } ring_node_asm;
30
30
31 typedef struct bp_packet
31 typedef struct
32 {
32 {
33 Header_TM_LFR_SCIENCE_BP_t header;
33 Header_TM_LFR_SCIENCE_BP_t header;
34 unsigned char data[ 30 * 22 ]; // MAX size is 22 * 30 [TM_LFR_SCIENCE_BURST_BP2_F1]
34 unsigned char data[ 30 * 22 ]; // MAX size is 22 * 30 [TM_LFR_SCIENCE_BURST_BP2_F1]
35 } bp_packet;
35 } bp_packet;
36
36
37 typedef struct bp_packet_with_spare
37 typedef struct
38 {
38 {
39 Header_TM_LFR_SCIENCE_BP_with_spare_t header;
39 Header_TM_LFR_SCIENCE_BP_with_spare_t header;
40 unsigned char data[ 9 * 13 ]; // only for TM_LFR_SCIENCE_NORMAL_BP1_F0 and F1
40 unsigned char data[ 9 * 13 ]; // only for TM_LFR_SCIENCE_NORMAL_BP1_F0 and F1
41 } bp_packet_with_spare;
41 } bp_packet_with_spare;
42
42
43 typedef struct asm_msg
43 typedef struct
44 {
44 {
45 ring_node_asm *norm;
45 ring_node_asm *norm;
46 ring_node_asm *burst_sbm;
46 ring_node_asm *burst_sbm;
@@ -83,15 +83,15 void ASM_send(Header_TM_LFR_SCIENCE_ASM_
83 // Basic Parameters
83 // Basic Parameters
84
84
85 void BP_reset_current_ring_nodes( void );
85 void BP_reset_current_ring_nodes( void );
86 void BP_init_header(Header_TM_LFR_SCIENCE_BP_t *header,
86 void BP_init_header( Header_TM_LFR_SCIENCE_BP_t *header,
87 unsigned int apid, unsigned char sid,
87 unsigned int apid, unsigned char sid,
88 unsigned int packetLength , unsigned char blkNr);
88 unsigned int packetLength , unsigned char blkNr);
89 void BP_init_header_with_spare(Header_TM_LFR_SCIENCE_BP_with_spare_t *header,
89 void BP_init_header_with_spare( Header_TM_LFR_SCIENCE_BP_with_spare_t *header,
90 unsigned int apid, unsigned char sid,
90 unsigned int apid, unsigned char sid,
91 unsigned int packetLength, unsigned char blkNr );
91 unsigned int packetLength, unsigned char blkNr );
92 void BP_send(char *data,
92 void BP_send( char *data,
93 rtems_id queue_id ,
93 rtems_id queue_id ,
94 unsigned int nbBytesToSend );
94 unsigned int nbBytesToSend , unsigned int sid );
95
95
96 //******************
96 //******************
97 // general functions
97 // general functions
@@ -87,8 +87,6 void set_wfp_delta_f2( void );
87
87
88 //*****************
88 //*****************
89 // local parameters
89 // local parameters
90 void set_local_nb_interrupt_f0_MAX( void );
91
92 void increment_seq_counter_source_id( unsigned char *packet_sequence_control, unsigned int sid );
90 void increment_seq_counter_source_id( unsigned char *packet_sequence_control, unsigned int sid );
93
91
94 #endif // WF_HANDLER_H_INCLUDED
92 #endif // WF_HANDLER_H_INCLUDED
@@ -214,7 +214,6 void init_local_mode_parameters( void )
214 unsigned int i;
214 unsigned int i;
215
215
216 // LOCAL PARAMETERS
216 // LOCAL PARAMETERS
217 set_local_nb_interrupt_f0_MAX();
218
217
219 BOOT_PRINTF1("local_sbm1_nb_cwf_max %d \n", param_local.local_sbm1_nb_cwf_max)
218 BOOT_PRINTF1("local_sbm1_nb_cwf_max %d \n", param_local.local_sbm1_nb_cwf_max)
220 BOOT_PRINTF1("local_sbm2_nb_cwf_max %d \n", param_local.local_sbm2_nb_cwf_max)
219 BOOT_PRINTF1("local_sbm2_nb_cwf_max %d \n", param_local.local_sbm2_nb_cwf_max)
@@ -485,8 +485,6 void get_v_e1_e2_f3( unsigned char *v, u
485 PRINTF1("ERR *** in get_v_e1_e2_f3 *** trying to read out of the buffer, counter = %d\n", offset_in_samples)
485 PRINTF1("ERR *** in get_v_e1_e2_f3 *** trying to read out of the buffer, counter = %d\n", offset_in_samples)
486 offset_in_samples = NB_SAMPLES_PER_SNAPSHOT -1;
486 offset_in_samples = NB_SAMPLES_PER_SNAPSHOT -1;
487 }
487 }
488 PRINTF1("f3 data @ %x *** ", waveform_picker_regs->addr_data_f3 )
489 PRINTF2("deltaT = %d, offset_in_samples = %d\n", deltaT, offset_in_samples )
490 offset_in_bytes = TIME_OFFSET_IN_BYTES + offset_in_samples * NB_WORDS_SWF_BLK * 4;
488 offset_in_bytes = TIME_OFFSET_IN_BYTES + offset_in_samples * NB_WORDS_SWF_BLK * 4;
491 v[0] = bufferPtr[ offset_in_bytes + 0];
489 v[0] = bufferPtr[ offset_in_bytes + 0];
492 v[1] = bufferPtr[ offset_in_bytes + 1];
490 v[1] = bufferPtr[ offset_in_bytes + 1];
@@ -265,8 +265,9 rtems_task prc0_task( rtems_task_argumen
265 // 3) send the BP1 set
265 // 3) send the BP1 set
266 set_time( packet_sbm_bp1_f0.header.time, (unsigned char *) &incomingMsg->coarseTime );
266 set_time( packet_sbm_bp1_f0.header.time, (unsigned char *) &incomingMsg->coarseTime );
267 set_time( packet_sbm_bp1_f0.header.acquisitionTime, (unsigned char *) &incomingMsg->fineTime );
267 set_time( packet_sbm_bp1_f0.header.acquisitionTime, (unsigned char *) &incomingMsg->fineTime );
268 BP_send( (char *) &packet_sbm_bp1_f0.header, queue_id,
268 BP_send( (char *) &packet_sbm_bp1_f0, queue_id,
269 PACKET_LENGTH_TM_LFR_SCIENCE_SBM_BP1_F0 + PACKET_LENGTH_DELTA);
269 PACKET_LENGTH_TM_LFR_SCIENCE_SBM_BP1_F0 + PACKET_LENGTH_DELTA,
270 SID_SBM1_BP1_F0);
270 // 4) compute the BP2 set if needed
271 // 4) compute the BP2 set if needed
271 if ( incomingMsg->event & RTEMS_EVENT_BURST_SBM_BP2_F0 )
272 if ( incomingMsg->event & RTEMS_EVENT_BURST_SBM_BP2_F0 )
272 {
273 {
@@ -275,8 +276,9 rtems_task prc0_task( rtems_task_argumen
275 // 2) send the BP2 set
276 // 2) send the BP2 set
276 set_time( packet_sbm_bp2_f0.header.time, (unsigned char *) &incomingMsg->coarseTime );
277 set_time( packet_sbm_bp2_f0.header.time, (unsigned char *) &incomingMsg->coarseTime );
277 set_time( packet_sbm_bp2_f0.header.acquisitionTime, (unsigned char *) &incomingMsg->fineTime );
278 set_time( packet_sbm_bp2_f0.header.acquisitionTime, (unsigned char *) &incomingMsg->fineTime );
278 BP_send( (char *) &packet_sbm_bp2_f0.header, queue_id,
279 BP_send( (char *) &packet_sbm_bp2_f0, queue_id,
279 PACKET_LENGTH_TM_LFR_SCIENCE_SBM_BP2_F0 + PACKET_LENGTH_DELTA);
280 PACKET_LENGTH_TM_LFR_SCIENCE_SBM_BP2_F0 + PACKET_LENGTH_DELTA,
281 SID_SBM1_BP2_F0);
280 }
282 }
281 }
283 }
282
284
@@ -297,8 +299,9 rtems_task prc0_task( rtems_task_argumen
297 // 3) send the BP1 set
299 // 3) send the BP1 set
298 set_time( packet_norm_bp1_f0.header.time, (unsigned char *) &incomingMsg->coarseTime );
300 set_time( packet_norm_bp1_f0.header.time, (unsigned char *) &incomingMsg->coarseTime );
299 set_time( packet_norm_bp1_f0.header.acquisitionTime, (unsigned char *) &incomingMsg->fineTime );
301 set_time( packet_norm_bp1_f0.header.acquisitionTime, (unsigned char *) &incomingMsg->fineTime );
300 BP_send( (char *) &packet_norm_bp1_f0.header, queue_id,
302 BP_send( (char *) &packet_norm_bp1_f0, queue_id,
301 PACKET_LENGTH_TM_LFR_SCIENCE_NORM_BP1_F0 + PACKET_LENGTH_DELTA);
303 PACKET_LENGTH_TM_LFR_SCIENCE_NORM_BP1_F0 + PACKET_LENGTH_DELTA,
304 SID_NORM_BP1_F0 );
302 if (incomingMsg->event & RTEMS_EVENT_NORM_BP2_F0)
305 if (incomingMsg->event & RTEMS_EVENT_NORM_BP2_F0)
303 {
306 {
304 // 1) compute the BP2 set using the same ASM as the one used for BP1
307 // 1) compute the BP2 set using the same ASM as the one used for BP1
@@ -306,8 +309,9 rtems_task prc0_task( rtems_task_argumen
306 // 2) send the BP2 set
309 // 2) send the BP2 set
307 set_time( packet_norm_bp2_f0.header.time, (unsigned char *) &incomingMsg->coarseTime );
310 set_time( packet_norm_bp2_f0.header.time, (unsigned char *) &incomingMsg->coarseTime );
308 set_time( packet_norm_bp2_f0.header.acquisitionTime, (unsigned char *) &incomingMsg->fineTime );
311 set_time( packet_norm_bp2_f0.header.acquisitionTime, (unsigned char *) &incomingMsg->fineTime );
309 BP_send( (char *) &packet_norm_bp2_f0.header, queue_id,
312 BP_send( (char *) &packet_norm_bp2_f0, queue_id,
310 PACKET_LENGTH_TM_LFR_SCIENCE_NORM_BP2_F0 + PACKET_LENGTH_DELTA);
313 PACKET_LENGTH_TM_LFR_SCIENCE_NORM_BP2_F0 + PACKET_LENGTH_DELTA,
314 SID_NORM_BP2_F0);
311 }
315 }
312 }
316 }
313
317
@@ -250,8 +250,9 rtems_task prc1_task( rtems_task_argumen
250 // 3) send the BP1 set
250 // 3) send the BP1 set
251 set_time( packet_sbm_bp1.header.time, (unsigned char *) &incomingMsg->coarseTime );
251 set_time( packet_sbm_bp1.header.time, (unsigned char *) &incomingMsg->coarseTime );
252 set_time( packet_sbm_bp1.header.acquisitionTime, (unsigned char *) &incomingMsg->fineTime );
252 set_time( packet_sbm_bp1.header.acquisitionTime, (unsigned char *) &incomingMsg->fineTime );
253 BP_send( (char *) &packet_sbm_bp1.header, queue_id_send,
253 BP_send( (char *) &packet_sbm_bp1, queue_id_send,
254 PACKET_LENGTH_TM_LFR_SCIENCE_SBM_BP1_F1 + PACKET_LENGTH_DELTA);
254 PACKET_LENGTH_TM_LFR_SCIENCE_SBM_BP1_F1 + PACKET_LENGTH_DELTA,
255 SID_SBM2_BP1_F1 );
255 // 4) compute the BP2 set if needed
256 // 4) compute the BP2 set if needed
256 if ( incomingMsg->event & RTEMS_EVENT_BURST_SBM_BP2_F1 )
257 if ( incomingMsg->event & RTEMS_EVENT_BURST_SBM_BP2_F1 )
257 {
258 {
@@ -260,8 +261,9 rtems_task prc1_task( rtems_task_argumen
260 // 2) send the BP2 set
261 // 2) send the BP2 set
261 set_time( packet_sbm_bp2.header.time, (unsigned char *) &incomingMsg->coarseTime );
262 set_time( packet_sbm_bp2.header.time, (unsigned char *) &incomingMsg->coarseTime );
262 set_time( packet_sbm_bp2.header.acquisitionTime, (unsigned char *) &incomingMsg->fineTime );
263 set_time( packet_sbm_bp2.header.acquisitionTime, (unsigned char *) &incomingMsg->fineTime );
263 BP_send( (char *) &packet_sbm_bp2.header, queue_id_send,
264 BP_send( (char *) &packet_sbm_bp2, queue_id_send,
264 PACKET_LENGTH_TM_LFR_SCIENCE_SBM_BP2_F1 + PACKET_LENGTH_DELTA);
265 PACKET_LENGTH_TM_LFR_SCIENCE_SBM_BP2_F1 + PACKET_LENGTH_DELTA,
266 SID_SBM2_BP2_F1 );
265 }
267 }
266 }
268 }
267
269
@@ -282,8 +284,9 rtems_task prc1_task( rtems_task_argumen
282 // 3) send the BP1 set
284 // 3) send the BP1 set
283 set_time( packet_norm_bp1.header.time, (unsigned char *) &incomingMsg->coarseTime );
285 set_time( packet_norm_bp1.header.time, (unsigned char *) &incomingMsg->coarseTime );
284 set_time( packet_norm_bp1.header.acquisitionTime, (unsigned char *) &incomingMsg->fineTime );
286 set_time( packet_norm_bp1.header.acquisitionTime, (unsigned char *) &incomingMsg->fineTime );
285 BP_send( (char *) &packet_norm_bp1.header, queue_id_send,
287 BP_send( (char *) &packet_norm_bp1, queue_id_send,
286 PACKET_LENGTH_TM_LFR_SCIENCE_NORM_BP1_F1 + PACKET_LENGTH_DELTA);
288 PACKET_LENGTH_TM_LFR_SCIENCE_NORM_BP1_F1 + PACKET_LENGTH_DELTA,
289 SID_NORM_BP1_F1 );
287 if (incomingMsg->event & RTEMS_EVENT_NORM_BP2_F1)
290 if (incomingMsg->event & RTEMS_EVENT_NORM_BP2_F1)
288 {
291 {
289 // 1) compute the BP2 set
292 // 1) compute the BP2 set
@@ -291,8 +294,9 rtems_task prc1_task( rtems_task_argumen
291 // 2) send the BP2 set
294 // 2) send the BP2 set
292 set_time( packet_norm_bp2.header.time, (unsigned char *) &incomingMsg->coarseTime );
295 set_time( packet_norm_bp2.header.time, (unsigned char *) &incomingMsg->coarseTime );
293 set_time( packet_norm_bp2.header.acquisitionTime, (unsigned char *) &incomingMsg->fineTime );
296 set_time( packet_norm_bp2.header.acquisitionTime, (unsigned char *) &incomingMsg->fineTime );
294 BP_send( (char *) &packet_norm_bp2.header, queue_id_send,
297 BP_send( (char *) &packet_norm_bp2, queue_id_send,
295 PACKET_LENGTH_TM_LFR_SCIENCE_NORM_BP2_F1 + PACKET_LENGTH_DELTA);
298 PACKET_LENGTH_TM_LFR_SCIENCE_NORM_BP2_F1 + PACKET_LENGTH_DELTA,
299 SID_NORM_BP2_F1 );
296 }
300 }
297 }
301 }
298
302
@@ -188,8 +188,9 rtems_task prc2_task( rtems_task_argumen
188 // 3) send the BP1 set
188 // 3) send the BP1 set
189 set_time( packet_norm_bp1_f2.header.time, (unsigned char *) &incomingMsg->coarseTime );
189 set_time( packet_norm_bp1_f2.header.time, (unsigned char *) &incomingMsg->coarseTime );
190 set_time( packet_norm_bp1_f2.header.acquisitionTime, (unsigned char *) &incomingMsg->fineTime );
190 set_time( packet_norm_bp1_f2.header.acquisitionTime, (unsigned char *) &incomingMsg->fineTime );
191 BP_send( (char *) &packet_norm_bp1_f2.header, queue_id,
191 BP_send( (char *) &packet_norm_bp1_f2, queue_id,
192 PACKET_LENGTH_TM_LFR_SCIENCE_NORM_BP1_F2 + PACKET_LENGTH_DELTA);
192 PACKET_LENGTH_TM_LFR_SCIENCE_NORM_BP1_F2 + PACKET_LENGTH_DELTA,
193 SID_NORM_BP1_F2 );
193 if (incomingMsg->event & RTEMS_EVENT_NORM_BP2_F2)
194 if (incomingMsg->event & RTEMS_EVENT_NORM_BP2_F2)
194 {
195 {
195 // 1) compute the BP2 set using the same ASM as the one used for BP1
196 // 1) compute the BP2 set using the same ASM as the one used for BP1
@@ -197,8 +198,9 rtems_task prc2_task( rtems_task_argumen
197 // 2) send the BP2 set
198 // 2) send the BP2 set
198 set_time( packet_norm_bp2_f2.header.time, (unsigned char *) &incomingMsg->coarseTime );
199 set_time( packet_norm_bp2_f2.header.time, (unsigned char *) &incomingMsg->coarseTime );
199 set_time( packet_norm_bp2_f2.header.acquisitionTime, (unsigned char *) &incomingMsg->fineTime );
200 set_time( packet_norm_bp2_f2.header.acquisitionTime, (unsigned char *) &incomingMsg->fineTime );
200 BP_send( (char *) &packet_norm_bp2_f2.header, queue_id,
201 BP_send( (char *) &packet_norm_bp2_f2, queue_id,
201 PACKET_LENGTH_TM_LFR_SCIENCE_NORM_BP2_F2 + PACKET_LENGTH_DELTA);
202 PACKET_LENGTH_TM_LFR_SCIENCE_NORM_BP2_F2 + PACKET_LENGTH_DELTA,
203 SID_NORM_BP2_F2 );
202 }
204 }
203 }
205 }
204
206
@@ -302,6 +302,7 void ASM_send(Header_TM_LFR_SCIENCE_ASM_
302 spw_ioctl_send->options = 0;
302 spw_ioctl_send->options = 0;
303
303
304 // (2) BUILD THE HEADER
304 // (2) BUILD THE HEADER
305 increment_seq_counter_source_id( header->packetSequenceControl, sid );
305 header->packetLength[0] = (unsigned char) (length>>8);
306 header->packetLength[0] = (unsigned char) (length>>8);
306 header->packetLength[1] = (unsigned char) (length);
307 header->packetLength[1] = (unsigned char) (length);
307 header->sid = (unsigned char) sid; // SID
308 header->sid = (unsigned char) sid; // SID
@@ -398,10 +399,12 void BP_init_header_with_spare(Header_TM
398 header->pa_lfr_bp_blk_nr[1] = blkNr; // BLK_NR LSB
399 header->pa_lfr_bp_blk_nr[1] = blkNr; // BLK_NR LSB
399 }
400 }
400
401
401 void BP_send(char *data, rtems_id queue_id, unsigned int nbBytesToSend )
402 void BP_send(char *data, rtems_id queue_id, unsigned int nbBytesToSend, unsigned int sid )
402 {
403 {
403 rtems_status_code status;
404 rtems_status_code status;
404
405
406 // SET THE SEQUENCE_CNT PARAMETER
407 increment_seq_counter_source_id( (unsigned char*) &data[ PACKET_POS_SEQUENCE_CNT ], sid );
405 // SEND PACKET
408 // SEND PACKET
406 status = rtems_message_queue_send( queue_id, data, nbBytesToSend);
409 status = rtems_message_queue_send( queue_id, data, nbBytesToSend);
407 if (status != RTEMS_SUCCESSFUL)
410 if (status != RTEMS_SUCCESSFUL)
@@ -793,7 +793,6 void launch_spectral_matrix_simu( void )
793 timer_start( (gptimer_regs_t*) REGS_ADDR_GPTIMER, TIMER_SM_SIMULATOR );
793 timer_start( (gptimer_regs_t*) REGS_ADDR_GPTIMER, TIMER_SM_SIMULATOR );
794 LEON_Clear_interrupt( IRQ_SM_SIMULATOR );
794 LEON_Clear_interrupt( IRQ_SM_SIMULATOR );
795 LEON_Unmask_interrupt( IRQ_SM_SIMULATOR );
795 LEON_Unmask_interrupt( IRQ_SM_SIMULATOR );
796 set_local_nb_interrupt_f0_MAX();
797 }
796 }
798
797
799 void set_irq_on_new_ready_matrix( unsigned char value )
798 void set_irq_on_new_ready_matrix( unsigned char value )
@@ -1225,32 +1225,49 void set_wfp_delta_f2()
1225
1225
1226 //*****************
1226 //*****************
1227 // local parameters
1227 // local parameters
1228 void set_local_nb_interrupt_f0_MAX( void )
1228
1229 void increment_seq_counter_source_id( unsigned char *packet_sequence_control, unsigned int sid )
1229 {
1230 {
1230 /** This function sets the value of the nb_interrupt_f0_MAX local parameter.
1231 /** This function increments the parameter "sequence_cnt" depending on the sid passed in argument.
1231 *
1232 *
1232 * This parameter is used for the SM validation only.\n
1233 * @param packet_sequence_control is a pointer toward the parameter sequence_cnt to update.
1233 * The software waits param_local.local_nb_interrupt_f0_MAX interruptions from the spectral matrices
1234 * @param sid is the source identifier of the packet being updated.
1234 * module before launching a basic processing.
1235 *
1236 * REQ-LFR-SRS-5240 / SSS-CP-FS-590
1237 * The sequence counters shall wrap around from 2^14 to zero.
1238 * The sequence counter shall start at zero at startup.
1239 *
1240 * REQ-LFR-SRS-5239 / SSS-CP-FS-580
1241 * All TM_LFR_SCIENCE_ packets are sent to ground, i.e. destination id = 0
1235 *
1242 *
1236 */
1243 */
1237
1244
1238 param_local.local_nb_interrupt_f0_MAX = ( (parameter_dump_packet.sy_lfr_n_asm_p[0]) * 256
1239 + parameter_dump_packet.sy_lfr_n_asm_p[1] ) * 100;
1240 }
1241
1242 void increment_seq_counter_source_id( unsigned char *packet_sequence_control, unsigned int sid )
1243 {
1244 unsigned short *sequence_cnt;
1245 unsigned short *sequence_cnt;
1245 unsigned short segmentation_grouping_flag;
1246 unsigned short segmentation_grouping_flag;
1246 unsigned short new_packet_sequence_control;
1247 unsigned short new_packet_sequence_control;
1248 rtems_mode initial_mode_set;
1249 rtems_mode current_mode_set;
1250 rtems_status_code status;
1247
1251
1248 if ( (sid ==SID_NORM_SWF_F0) || (sid ==SID_NORM_SWF_F1) || (sid ==SID_NORM_SWF_F2)
1252 //******************************************
1249 || (sid ==SID_NORM_CWF_F3) || (sid==SID_NORM_CWF_LONG_F3) || (sid ==SID_BURST_CWF_F2) )
1253 // CHANGE THE MODE OF THE CALLING RTEMS TASK
1254 status = rtems_task_mode( RTEMS_NO_PREEMPT, RTEMS_PREEMPT_MASK, &initial_mode_set );
1255
1256 if ( (sid == SID_NORM_SWF_F0) || (sid == SID_NORM_SWF_F1) || (sid == SID_NORM_SWF_F2)
1257 || (sid == SID_NORM_CWF_F3) || (sid == SID_NORM_CWF_LONG_F3)
1258 || (sid == SID_BURST_CWF_F2)
1259 || (sid == SID_NORM_ASM_F0) || (sid == SID_NORM_ASM_F1) || (sid == SID_NORM_ASM_F2)
1260 || (sid == SID_NORM_BP1_F0) || (sid == SID_NORM_BP1_F1) || (sid == SID_NORM_BP1_F2)
1261 || (sid == SID_NORM_BP2_F0) || (sid == SID_NORM_BP2_F1) || (sid == SID_NORM_BP2_F2)
1262 || (sid == SID_BURST_BP1_F0) || (sid == SID_BURST_BP2_F0)
1263 || (sid == SID_BURST_BP1_F1) || (sid == SID_BURST_BP2_F1) )
1250 {
1264 {
1251 sequence_cnt = (unsigned short *) &sequenceCounters_SCIENCE_NORMAL_BURST;
1265 sequence_cnt = (unsigned short *) &sequenceCounters_SCIENCE_NORMAL_BURST;
1252 }
1266 }
1253 else if ( (sid ==SID_SBM1_CWF_F1) || (sid ==SID_SBM2_CWF_F2) )
1267 else if ( (sid ==SID_SBM1_CWF_F1) || (sid ==SID_SBM2_CWF_F2)
1268 || (sid == SID_SBM1_BP1_F0) || (sid == SID_SBM1_BP2_F0)
1269 || (sid == SID_SBM2_BP1_F0) || (sid == SID_SBM2_BP2_F0)
1270 || (sid == SID_SBM2_BP1_F1) || (sid == SID_SBM2_BP2_F1) )
1254 {
1271 {
1255 sequence_cnt = (unsigned short *) &sequenceCounters_SCIENCE_SBM1_SBM2;
1272 sequence_cnt = (unsigned short *) &sequenceCounters_SCIENCE_SBM1_SBM2;
1256 }
1273 }
@@ -1279,4 +1296,8 void increment_seq_counter_source_id( un
1279 packet_sequence_control[0] = (unsigned char) (new_packet_sequence_control >> 8);
1296 packet_sequence_control[0] = (unsigned char) (new_packet_sequence_control >> 8);
1280 packet_sequence_control[1] = (unsigned char) (new_packet_sequence_control );
1297 packet_sequence_control[1] = (unsigned char) (new_packet_sequence_control );
1281 }
1298 }
1299
1300 //***********************************
1301 // RESET THE MODE OF THE CALLING TASK
1302 status = rtems_task_mode( initial_mode_set, RTEMS_PREEMPT_MASK, &current_mode_set );
1282 }
1303 }
General Comments 0
You need to be logged in to leave comments. Login now