1 | NO CONTENT: new file 100644, binary diff hidden |
|
NO CONTENT: new file 100644, binary diff hidden |
@@ -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.5) on: |
|
3 | # Generated by qmake (2.01a) (Qt 4.8.5) on: Fri Oct 11 10:41:32 2013 | |
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 | |
@@ -10,7 +10,7 | |||||
10 |
|
10 | |||
11 | CC = sparc-rtems-gcc |
|
11 | CC = sparc-rtems-gcc | |
12 | CXX = sparc-rtems-g++ |
|
12 | CXX = sparc-rtems-g++ | |
13 |
DEFINES = -DSW_VERSION_N1=0 -DSW_VERSION_N2=0 -DSW_VERSION_N3=0 -DSW_VERSION_N4=1 |
|
13 | DEFINES = -DSW_VERSION_N1=0 -DSW_VERSION_N2=0 -DSW_VERSION_N3=0 -DSW_VERSION_N4=15 -DPRINT_MESSAGES_ON_CONSOLE | |
14 | CFLAGS = -pipe -O3 -Wall $(DEFINES) |
|
14 | CFLAGS = -pipe -O3 -Wall $(DEFINES) | |
15 | CXXFLAGS = -pipe -O3 -Wall $(DEFINES) |
|
15 | CXXFLAGS = -pipe -O3 -Wall $(DEFINES) | |
16 | INCPATH = -I/usr/lib64/qt4/mkspecs/linux-g++ -I. -I../src -I../header |
|
16 | INCPATH = -I/usr/lib64/qt4/mkspecs/linux-g++ -I. -I../src -I../header |
1 | NO CONTENT: modified file, binary diff hidden |
|
NO CONTENT: modified file, binary diff hidden |
@@ -7,11 +7,11 CONFIG -= qt | |||||
7 | include(./sparc.pri) |
|
7 | include(./sparc.pri) | |
8 |
|
8 | |||
9 | # flight software version |
|
9 | # flight software version | |
10 |
SWVERSION=-0-1 |
|
10 | SWVERSION=-0-15 | |
11 | DEFINES += SW_VERSION_N1=0 |
|
11 | DEFINES += SW_VERSION_N1=0 | |
12 | DEFINES += SW_VERSION_N2=0 |
|
12 | DEFINES += SW_VERSION_N2=0 | |
13 | DEFINES += SW_VERSION_N3=0 |
|
13 | DEFINES += SW_VERSION_N3=0 | |
14 |
DEFINES += SW_VERSION_N4=1 |
|
14 | DEFINES += SW_VERSION_N4=15 | |
15 |
|
15 | |||
16 | contains( CONFIG, verbose ) { |
|
16 | contains( CONFIG, verbose ) { | |
17 | DEFINES += PRINT_MESSAGES_ON_CONSOLE |
|
17 | DEFINES += PRINT_MESSAGES_ON_CONSOLE |
@@ -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 2.8.0, 2013-10-1 |
|
3 | <!-- Written by QtCreator 2.8.0, 2013-10-11T07:07:36. --> | |
4 | <qtcreator> |
|
4 | <qtcreator> | |
5 | <data> |
|
5 | <data> | |
6 | <variable>ProjectExplorer.Project.ActiveTarget</variable> |
|
6 | <variable>ProjectExplorer.Project.ActiveTarget</variable> |
@@ -178,13 +178,15 | |||||
178 |
|
178 | |||
179 | #define SPARE1_PUSVERSION_SPARE2 0x10 |
|
179 | #define SPARE1_PUSVERSION_SPARE2 0x10 | |
180 |
|
180 | |||
181 | #define LEN_TM_LFR_HK 126 + 4 |
|
181 | #define LEN_TM_LFR_HK 130 // 126 + 4 | |
182 | #define LEN_TM_LFR_TC_EXE_NOT_IMP 24 +4 |
|
182 | #define LEN_TM_LFR_TC_EXE_NOT_IMP 28 // 24 + 4 | |
183 |
|
183 | |||
184 |
#define TM_LEN_SCI_SWF_340 |
|
184 | #define TM_LEN_SCI_SWF_340 4101 // 340 * 12 + 10 + 12 - 1 | |
185 |
#define TM_LEN_SCI_SWF_8 |
|
185 | #define TM_LEN_SCI_SWF_8 117 // 8 * 12 + 10 + 12 - 1 | |
186 |
#define TM_LEN_SCI_CWF_340 |
|
186 | #define TM_LEN_SCI_CWF_340 4099 // 340 * 12 + 10 + 10 - 1 | |
187 |
#define TM_LEN_SCI_CWF_8 |
|
187 | #define TM_LEN_SCI_CWF_8 115 // 8 * 12 + 10 + 10 - 1 | |
|
188 | #define TM_LEN_SCI_CWF3_LIGHT_340 2059 // 340 * 6 + 10 + 10 - 1 | |||
|
189 | #define TM_LEN_SCI_CWF3_LIGHT_8 67 // 8 * 6 + 10 + 10 - 1 | |||
188 | #define DEFAULT_PKTCNT 0x07 |
|
190 | #define DEFAULT_PKTCNT 0x07 | |
189 | #define BLK_NR_340 0x0154 |
|
191 | #define BLK_NR_340 0x0154 | |
190 | #define BLK_NR_8 0x0008 |
|
192 | #define BLK_NR_8 0x0008 |
@@ -183,6 +183,8 | |||||
183 | #define WAVEFORM_EXTENDED_HEADER_OFFSET 22 |
|
183 | #define WAVEFORM_EXTENDED_HEADER_OFFSET 22 | |
184 | #define NB_BYTES_SWF_BLK (2 * 6) |
|
184 | #define NB_BYTES_SWF_BLK (2 * 6) | |
185 | #define NB_WORDS_SWF_BLK 3 |
|
185 | #define NB_WORDS_SWF_BLK 3 | |
|
186 | #define NB_BYTES_CWF3_LIGHT_BLK 6 | |||
|
187 | #define WFRM_INDEX_OF_LAST_PACKET 6 // waveforms are transmitted in groups of 2048 blocks, 6 packets of 340 and 1 of 8 | |||
186 |
|
188 | |||
187 | //****************** |
|
189 | //****************** | |
188 | // SEQUENCE COUNTERS |
|
190 | // SEQUENCE COUNTERS |
@@ -29,26 +29,30 extern volatile int wf_snap_f2_norm[ ]; | |||||
29 | // |
|
29 | // | |
30 | extern volatile int wf_cont_f3[ ]; |
|
30 | extern volatile int wf_cont_f3[ ]; | |
31 | extern volatile int wf_cont_f3_bis[ ]; |
|
31 | extern volatile int wf_cont_f3_bis[ ]; | |
|
32 | extern char wf_cont_f3_light[ ]; | |||
32 | extern waveform_picker_regs_t *waveform_picker_regs; |
|
33 | extern waveform_picker_regs_t *waveform_picker_regs; | |
33 |
|
34 | |||
34 | rtems_isr waveforms_isr( rtems_vector_number vector ); |
|
35 | rtems_isr waveforms_isr( rtems_vector_number vector ); | |
35 | rtems_isr waveforms_simulator_isr( rtems_vector_number vector ); |
|
36 | rtems_isr waveforms_simulator_isr( rtems_vector_number vector ); | |
36 | rtems_task wfrm_task(rtems_task_argument argument); |
|
37 | rtems_task wfrm_task( rtems_task_argument argument ); | |
37 | rtems_task cwf3_task(rtems_task_argument argument); |
|
38 | rtems_task cwf3_task( rtems_task_argument argument ); | |
38 | rtems_task cwf2_task(rtems_task_argument argument); |
|
39 | rtems_task cwf2_task( rtems_task_argument argument ); | |
39 | rtems_task cwf1_task(rtems_task_argument argument); |
|
40 | rtems_task cwf1_task( rtems_task_argument argument ); | |
40 |
|
41 | |||
41 | //****************** |
|
42 | //****************** | |
42 | // general functions |
|
43 | // general functions | |
43 | void init_waveforms( void ); |
|
44 | void init_waveforms( void ); | |
44 | // |
|
45 | // | |
45 |
int init_header_snapshot_wf_table(unsigned int sid |
|
46 | int init_header_snapshot_wf_table( unsigned int sid, Header_TM_LFR_SCIENCE_SWF_t *headerSWF ); | |
46 |
int init_header_continuous_wf_table(unsigned int sid |
|
47 | int init_header_continuous_wf_table( unsigned int sid, Header_TM_LFR_SCIENCE_CWF_t *headerCWF ); | |
|
48 | int init_header_continuous_wf3_light_table( Header_TM_LFR_SCIENCE_CWF_t *headerCWF ); | |||
47 | // |
|
49 | // | |
48 | void reset_waveforms( void ); |
|
50 | void reset_waveforms( void ); | |
49 |
|
51 | |||
50 | int send_waveform_SWF(volatile int *waveform, unsigned int sid, Header_TM_LFR_SCIENCE_SWF_t *headerSWF, rtems_id queue_id); |
|
52 | int send_waveform_SWF( volatile int *waveform, unsigned int sid, Header_TM_LFR_SCIENCE_SWF_t *headerSWF, rtems_id queue_id ); | |
51 | int send_waveform_CWF(volatile int *waveform, unsigned int sid, Header_TM_LFR_SCIENCE_CWF_t *headerCWF, rtems_id queue_id); |
|
53 | int send_waveform_CWF( volatile int *waveform, unsigned int sid, Header_TM_LFR_SCIENCE_CWF_t *headerCWF, rtems_id queue_id ); | |
|
54 | int send_waveform_CWF3( volatile int *waveform, unsigned int sid, Header_TM_LFR_SCIENCE_CWF_t *headerCWF, rtems_id queue_id ); | |||
|
55 | int send_waveform_CWF3_light( volatile int *waveform, Header_TM_LFR_SCIENCE_CWF_t *headerCWF, rtems_id queue_id ); | |||
52 |
|
56 | |||
53 | //************** |
|
57 | //************** | |
54 | // wfp registers |
|
58 | // wfp registers |
@@ -25,18 +25,19 gptimer_regs_t *gptimer_regs | |||||
25 | spectral_matrix_regs_t *spectral_matrix_regs = (spectral_matrix_regs_t*) REGS_ADDR_SPECTRAL_MATRIX; |
|
25 | spectral_matrix_regs_t *spectral_matrix_regs = (spectral_matrix_regs_t*) REGS_ADDR_SPECTRAL_MATRIX; | |
26 |
|
26 | |||
27 | // WAVEFORMS GLOBAL VARIABLES // 2048 * 3 * 4 + 2 * 4 = 24576 + 8 bytes |
|
27 | // WAVEFORMS GLOBAL VARIABLES // 2048 * 3 * 4 + 2 * 4 = 24576 + 8 bytes | |
28 | volatile int wf_snap_f0[ NB_SAMPLES_PER_SNAPSHOT * NB_WORDS_SWF_BLK + TIME_OFFSET]; |
|
28 | volatile int wf_snap_f0[ NB_SAMPLES_PER_SNAPSHOT * NB_WORDS_SWF_BLK + TIME_OFFSET ]; | |
29 | // |
|
29 | // | |
30 | volatile int wf_snap_f1[ NB_SAMPLES_PER_SNAPSHOT * NB_WORDS_SWF_BLK + TIME_OFFSET]; |
|
30 | volatile int wf_snap_f1[ NB_SAMPLES_PER_SNAPSHOT * NB_WORDS_SWF_BLK + TIME_OFFSET ]; | |
31 | volatile int wf_snap_f1_bis[ NB_SAMPLES_PER_SNAPSHOT * NB_WORDS_SWF_BLK + TIME_OFFSET]; |
|
31 | volatile int wf_snap_f1_bis[ NB_SAMPLES_PER_SNAPSHOT * NB_WORDS_SWF_BLK + TIME_OFFSET ]; | |
32 | volatile int wf_snap_f1_norm[ NB_SAMPLES_PER_SNAPSHOT * NB_WORDS_SWF_BLK + TIME_OFFSET]; |
|
32 | volatile int wf_snap_f1_norm[ NB_SAMPLES_PER_SNAPSHOT * NB_WORDS_SWF_BLK + TIME_OFFSET ]; | |
33 | // |
|
33 | // | |
34 | volatile int wf_snap_f2[ NB_SAMPLES_PER_SNAPSHOT * NB_WORDS_SWF_BLK + TIME_OFFSET]; |
|
34 | volatile int wf_snap_f2[ NB_SAMPLES_PER_SNAPSHOT * NB_WORDS_SWF_BLK + TIME_OFFSET ]; | |
35 | volatile int wf_snap_f2_bis[ NB_SAMPLES_PER_SNAPSHOT * NB_WORDS_SWF_BLK + TIME_OFFSET]; |
|
35 | volatile int wf_snap_f2_bis[ NB_SAMPLES_PER_SNAPSHOT * NB_WORDS_SWF_BLK + TIME_OFFSET ]; | |
36 | volatile int wf_snap_f2_norm[ NB_SAMPLES_PER_SNAPSHOT * NB_WORDS_SWF_BLK + TIME_OFFSET]; |
|
36 | volatile int wf_snap_f2_norm[ NB_SAMPLES_PER_SNAPSHOT * NB_WORDS_SWF_BLK + TIME_OFFSET ]; | |
37 | // |
|
37 | // | |
38 | volatile int wf_cont_f3[ NB_SAMPLES_PER_SNAPSHOT * NB_WORDS_SWF_BLK + TIME_OFFSET]; |
|
38 | volatile int wf_cont_f3[ NB_SAMPLES_PER_SNAPSHOT * NB_WORDS_SWF_BLK + TIME_OFFSET ]; | |
39 | volatile int wf_cont_f3_bis[ NB_SAMPLES_PER_SNAPSHOT * NB_WORDS_SWF_BLK + TIME_OFFSET]; |
|
39 | volatile int wf_cont_f3_bis[ NB_SAMPLES_PER_SNAPSHOT * NB_WORDS_SWF_BLK + TIME_OFFSET ]; | |
|
40 | char wf_cont_f3_light[ NB_SAMPLES_PER_SNAPSHOT * NB_BYTES_CWF3_LIGHT_BLK ]; | |||
40 |
|
41 | |||
41 | // SPECTRAL MATRICES GLOBAL VARIABLES |
|
42 | // SPECTRAL MATRICES GLOBAL VARIABLES | |
42 | volatile int spec_mat_f0_0[ SM_HEADER + TOTAL_SIZE_SM ]; |
|
43 | volatile int spec_mat_f0_0[ SM_HEADER + TOTAL_SIZE_SM ]; |
@@ -520,12 +520,14 int action_load_normal_par(ccsdsTelecomm | |||||
520 | parameter_dump_packet.sy_lfr_n_swf_l[1] = TC->dataAndCRC[1]; |
|
520 | parameter_dump_packet.sy_lfr_n_swf_l[1] = TC->dataAndCRC[1]; | |
521 |
|
521 | |||
522 | // sy_lfr_n_swf_p |
|
522 | // sy_lfr_n_swf_p | |
523 | tmp = (unsigned int ) floor( |
|
523 | tmp = ( unsigned int ) floor( | |
524 | (TC->dataAndCRC[2] * 256 |
|
524 | (TC->dataAndCRC[2] * 256 | |
525 | + TC->dataAndCRC[3])/8 |
|
525 | + TC->dataAndCRC[3])/8 | |
526 | ) * 8; |
|
526 | ) * 8; | |
527 | if ( (tmp < 16) || (tmp>65528) ) |
|
527 | if ( (tmp < 16) || (tmp>65528) ) | |
528 | { |
|
528 | { | |
|
529 | send_tm_lfr_tc_exe_inconsistent( TC, queue_id, 12, TC->dataAndCRC[2]); | |||
|
530 | send_tm_lfr_tc_exe_inconsistent( TC, queue_id, 13, TC->dataAndCRC[3]); | |||
529 | result = LFR_DEFAULT; |
|
531 | result = LFR_DEFAULT; | |
530 | } |
|
532 | } | |
531 | else |
|
533 | else |
@@ -9,6 +9,7 Header_TM_LFR_SCIENCE_CWF_t headerCWF_F1 | |||||
9 | Header_TM_LFR_SCIENCE_CWF_t headerCWF_F2_BURST[7]; |
|
9 | Header_TM_LFR_SCIENCE_CWF_t headerCWF_F2_BURST[7]; | |
10 | Header_TM_LFR_SCIENCE_CWF_t headerCWF_F2_SBM2[7]; |
|
10 | Header_TM_LFR_SCIENCE_CWF_t headerCWF_F2_SBM2[7]; | |
11 | Header_TM_LFR_SCIENCE_CWF_t headerCWF_F3[7]; |
|
11 | Header_TM_LFR_SCIENCE_CWF_t headerCWF_F3[7]; | |
|
12 | Header_TM_LFR_SCIENCE_CWF_t headerCWF_F3_light[7]; | |||
12 |
|
13 | |||
13 | unsigned char doubleSendCWF1 = 0; |
|
14 | unsigned char doubleSendCWF1 = 0; | |
14 | unsigned char doubleSendCWF2 = 0; |
|
15 | unsigned char doubleSendCWF2 = 0; | |
@@ -277,6 +278,7 rtems_task cwf3_task(rtems_task_argument | |||||
277 | rtems_id queue_id; |
|
278 | rtems_id queue_id; | |
278 |
|
279 | |||
279 | init_header_continuous_wf_table( SID_NORM_CWF_F3, headerCWF_F3 ); |
|
280 | init_header_continuous_wf_table( SID_NORM_CWF_F3, headerCWF_F3 ); | |
|
281 | init_header_continuous_wf3_light_table( headerCWF_F3_light ); | |||
280 |
|
282 | |||
281 | queue_id = get_pkts_queue_id(); |
|
283 | queue_id = get_pkts_queue_id(); | |
282 |
|
284 | |||
@@ -290,10 +292,10 rtems_task cwf3_task(rtems_task_argument | |||||
290 | #ifdef GSA |
|
292 | #ifdef GSA | |
291 | #else |
|
293 | #else | |
292 | if (waveform_picker_regs->addr_data_f3 == (int) wf_cont_f3) { |
|
294 | if (waveform_picker_regs->addr_data_f3 == (int) wf_cont_f3) { | |
293 |
send_waveform_CWF( wf_cont_f3_bis, |
|
295 | send_waveform_CWF3_light( wf_cont_f3_bis, headerCWF_F3_light, queue_id ); | |
294 | } |
|
296 | } | |
295 | else { |
|
297 | else { | |
296 |
send_waveform_CWF( wf_cont_f3, |
|
298 | send_waveform_CWF3_light( wf_cont_f3, headerCWF_F3_light, queue_id ); | |
297 | } |
|
299 | } | |
298 | #endif |
|
300 | #endif | |
299 | } |
|
301 | } | |
@@ -551,6 +553,62 int init_header_continuous_wf_table( uns | |||||
551 | return LFR_SUCCESSFUL; |
|
553 | return LFR_SUCCESSFUL; | |
552 | } |
|
554 | } | |
553 |
|
555 | |||
|
556 | int init_header_continuous_wf3_light_table( Header_TM_LFR_SCIENCE_CWF_t *headerCWF ) | |||
|
557 | { | |||
|
558 | unsigned int i; | |||
|
559 | ||||
|
560 | for (i=0; i<7; i++) | |||
|
561 | { | |||
|
562 | headerCWF[ i ].targetLogicalAddress = CCSDS_DESTINATION_ID; | |||
|
563 | headerCWF[ i ].protocolIdentifier = CCSDS_PROTOCOLE_ID; | |||
|
564 | headerCWF[ i ].reserved = DEFAULT_RESERVED; | |||
|
565 | headerCWF[ i ].userApplication = CCSDS_USER_APP; | |||
|
566 | ||||
|
567 | headerCWF[ i ].packetID[0] = (unsigned char) (TM_PACKET_ID_SCIENCE_NORMAL_BURST >> 8); | |||
|
568 | headerCWF[ i ].packetID[1] = (unsigned char) (TM_PACKET_ID_SCIENCE_NORMAL_BURST); | |||
|
569 | if (i == 0) | |||
|
570 | { | |||
|
571 | headerCWF[ i ].packetSequenceControl[0] = TM_PACKET_SEQ_CTRL_FIRST; | |||
|
572 | headerCWF[ i ].packetLength[0] = (unsigned char) (TM_LEN_SCI_CWF3_LIGHT_340 >> 8); | |||
|
573 | headerCWF[ i ].packetLength[1] = (unsigned char) (TM_LEN_SCI_CWF3_LIGHT_340 ); | |||
|
574 | headerCWF[ i ].blkNr[0] = (unsigned char) (BLK_NR_340 >> 8); | |||
|
575 | headerCWF[ i ].blkNr[1] = (unsigned char) (BLK_NR_340 ); | |||
|
576 | } | |||
|
577 | else if (i == 6) | |||
|
578 | { | |||
|
579 | headerCWF[ i ].packetSequenceControl[0] = TM_PACKET_SEQ_CTRL_LAST; | |||
|
580 | headerCWF[ i ].packetLength[0] = (unsigned char) (TM_LEN_SCI_CWF3_LIGHT_8 >> 8); | |||
|
581 | headerCWF[ i ].packetLength[1] = (unsigned char) (TM_LEN_SCI_CWF3_LIGHT_8 ); | |||
|
582 | headerCWF[ i ].blkNr[0] = (unsigned char) (BLK_NR_8 >> 8); | |||
|
583 | headerCWF[ i ].blkNr[1] = (unsigned char) (BLK_NR_8 ); | |||
|
584 | } | |||
|
585 | else | |||
|
586 | { | |||
|
587 | headerCWF[ i ].packetSequenceControl[0] = TM_PACKET_SEQ_CTRL_CONTINUATION; | |||
|
588 | headerCWF[ i ].packetLength[0] = (unsigned char) (TM_LEN_SCI_CWF3_LIGHT_340 >> 8); | |||
|
589 | headerCWF[ i ].packetLength[1] = (unsigned char) (TM_LEN_SCI_CWF3_LIGHT_340 ); | |||
|
590 | headerCWF[ i ].blkNr[0] = (unsigned char) (BLK_NR_340 >> 8); | |||
|
591 | headerCWF[ i ].blkNr[1] = (unsigned char) (BLK_NR_340 ); | |||
|
592 | } | |||
|
593 | headerCWF[ i ].packetSequenceControl[1] = TM_PACKET_SEQ_CNT_DEFAULT; | |||
|
594 | // DATA FIELD HEADER | |||
|
595 | headerCWF[ i ].spare1_pusVersion_spare2 = DEFAULT_SPARE1_PUSVERSION_SPARE2; | |||
|
596 | headerCWF[ i ].serviceType = TM_TYPE_LFR_SCIENCE; // service type | |||
|
597 | headerCWF[ i ].serviceSubType = TM_SUBTYPE_LFR_SCIENCE; // service subtype | |||
|
598 | headerCWF[ i ].destinationID = TM_DESTINATION_ID_GROUND; | |||
|
599 | // AUXILIARY DATA HEADER | |||
|
600 | headerCWF[ i ].sid = SID_NORM_CWF_F3; | |||
|
601 | headerCWF[ i ].hkBIA = DEFAULT_HKBIA; | |||
|
602 | headerCWF[ i ].time[0] = 0x00; | |||
|
603 | headerCWF[ i ].time[0] = 0x00; | |||
|
604 | headerCWF[ i ].time[0] = 0x00; | |||
|
605 | headerCWF[ i ].time[0] = 0x00; | |||
|
606 | headerCWF[ i ].time[0] = 0x00; | |||
|
607 | headerCWF[ i ].time[0] = 0x00; | |||
|
608 | } | |||
|
609 | return LFR_SUCCESSFUL; | |||
|
610 | } | |||
|
611 | ||||
554 | void reset_waveforms( void ) |
|
612 | void reset_waveforms( void ) | |
555 | { |
|
613 | { | |
556 | int i = 0; |
|
614 | int i = 0; | |
@@ -694,6 +752,76 int send_waveform_CWF(volatile int *wave | |||||
694 | return ret; |
|
752 | return ret; | |
695 | } |
|
753 | } | |
696 |
|
754 | |||
|
755 | int send_waveform_CWF3_light(volatile int *waveform, Header_TM_LFR_SCIENCE_CWF_t *headerCWF, rtems_id queue_id) | |||
|
756 | { | |||
|
757 | unsigned int i; | |||
|
758 | int ret; | |||
|
759 | rtems_status_code status; | |||
|
760 | spw_ioctl_pkt_send spw_ioctl_send_CWF; | |||
|
761 | char *sample; | |||
|
762 | ||||
|
763 | spw_ioctl_send_CWF.hlen = TM_HEADER_LEN + 4 + 10; // + 4 is for the protocole extra header, + 10 is for the auxiliary header | |||
|
764 | spw_ioctl_send_CWF.options = 0; | |||
|
765 | ||||
|
766 | ret = LFR_DEFAULT; | |||
|
767 | ||||
|
768 | //********************** | |||
|
769 | // BUILD CWF3_light DATA | |||
|
770 | for ( i=0; i< 2048; i++) | |||
|
771 | { | |||
|
772 | sample = (char*) &waveform[ i * NB_WORDS_SWF_BLK ]; | |||
|
773 | wf_cont_f3_light[ (i * NB_BYTES_CWF3_LIGHT_BLK) ] = sample[ 0 ]; | |||
|
774 | wf_cont_f3_light[ (i * NB_BYTES_CWF3_LIGHT_BLK) + 1 ] = sample[ 1 ]; | |||
|
775 | wf_cont_f3_light[ (i * NB_BYTES_CWF3_LIGHT_BLK) + 2 ] = sample[ 2 ]; | |||
|
776 | wf_cont_f3_light[ (i * NB_BYTES_CWF3_LIGHT_BLK) + 3 ] = sample[ 3 ]; | |||
|
777 | wf_cont_f3_light[ (i * NB_BYTES_CWF3_LIGHT_BLK) + 4 ] = sample[ 4 ]; | |||
|
778 | wf_cont_f3_light[ (i * NB_BYTES_CWF3_LIGHT_BLK) + 5 ] = sample[ 5 ]; | |||
|
779 | } | |||
|
780 | ||||
|
781 | //********************* | |||
|
782 | // SEND CWF3_light DATA | |||
|
783 | ||||
|
784 | for (i=0; i<7; i++) // send waveform | |||
|
785 | { | |||
|
786 | int coarseTime = 0x00; | |||
|
787 | int fineTime = 0x00; | |||
|
788 | spw_ioctl_send_CWF.data = (char*) &wf_cont_f3_light[ (i * 340 * NB_BYTES_CWF3_LIGHT_BLK) ]; | |||
|
789 | spw_ioctl_send_CWF.hdr = (char*) &headerCWF[ i ]; | |||
|
790 | // BUILD THE DATA | |||
|
791 | if ( i == WFRM_INDEX_OF_LAST_PACKET ) { | |||
|
792 | spw_ioctl_send_CWF.dlen = 8 * NB_BYTES_CWF3_LIGHT_BLK; | |||
|
793 | } | |||
|
794 | else { | |||
|
795 | spw_ioctl_send_CWF.dlen = 340 * NB_BYTES_CWF3_LIGHT_BLK; | |||
|
796 | } | |||
|
797 | // SET PACKET TIME | |||
|
798 | coarseTime = time_management_regs->coarse_time; | |||
|
799 | fineTime = time_management_regs->fine_time; | |||
|
800 | headerCWF[ i ].time[0] = (unsigned char) (coarseTime>>24); | |||
|
801 | headerCWF[ i ].time[1] = (unsigned char) (coarseTime>>16); | |||
|
802 | headerCWF[ i ].time[2] = (unsigned char) (coarseTime>>8); | |||
|
803 | headerCWF[ i ].time[3] = (unsigned char) (coarseTime); | |||
|
804 | headerCWF[ i ].time[4] = (unsigned char) (fineTime>>8); | |||
|
805 | headerCWF[ i ].time[5] = (unsigned char) (fineTime); | |||
|
806 | headerCWF[ i ].acquisitionTime[0] = (unsigned char) (coarseTime>>24); | |||
|
807 | headerCWF[ i ].acquisitionTime[1] = (unsigned char) (coarseTime>>16); | |||
|
808 | headerCWF[ i ].acquisitionTime[2] = (unsigned char) (coarseTime>>8); | |||
|
809 | headerCWF[ i ].acquisitionTime[3] = (unsigned char) (coarseTime); | |||
|
810 | headerCWF[ i ].acquisitionTime[4] = (unsigned char) (fineTime>>8); | |||
|
811 | headerCWF[ i ].acquisitionTime[5] = (unsigned char) (fineTime); | |||
|
812 | // SEND PACKET | |||
|
813 | status = rtems_message_queue_send( queue_id, &spw_ioctl_send_CWF, sizeof(spw_ioctl_send_CWF)); | |||
|
814 | if (status != RTEMS_SUCCESSFUL) { | |||
|
815 | printf("%d-%d, ERR %d\n", SID_NORM_CWF_F3, i, (int) status); | |||
|
816 | ret = LFR_DEFAULT; | |||
|
817 | } | |||
|
818 | rtems_task_wake_after(TIME_BETWEEN_TWO_CWF3_PACKETS); | |||
|
819 | } | |||
|
820 | ||||
|
821 | return ret; | |||
|
822 | } | |||
|
823 | ||||
|
824 | ||||
697 | //************** |
|
825 | //************** | |
698 | // wfp registers |
|
826 | // wfp registers | |
699 | void set_wfp_data_shaping() |
|
827 | void set_wfp_data_shaping() | |
@@ -720,6 +848,9 char set_wfp_delta_snapshot() | |||||
720 | { |
|
848 | { | |
721 | char ret; |
|
849 | char ret; | |
722 | unsigned int delta_snapshot; |
|
850 | unsigned int delta_snapshot; | |
|
851 | unsigned int aux; | |||
|
852 | ||||
|
853 | aux = 0; | |||
723 | ret = LFR_DEFAULT; |
|
854 | ret = LFR_DEFAULT; | |
724 |
|
855 | |||
725 | delta_snapshot = parameter_dump_packet.sy_lfr_n_swf_p[0]*256 |
|
856 | delta_snapshot = parameter_dump_packet.sy_lfr_n_swf_p[0]*256 | |
@@ -727,7 +858,6 char set_wfp_delta_snapshot() | |||||
727 |
|
858 | |||
728 | #ifdef GSA |
|
859 | #ifdef GSA | |
729 | #else |
|
860 | #else | |
730 | unsigned char aux = 0; |
|
|||
731 | if ( delta_snapshot < MIN_DELTA_SNAPSHOT ) |
|
861 | if ( delta_snapshot < MIN_DELTA_SNAPSHOT ) | |
732 | { |
|
862 | { | |
733 | aux = MIN_DELTA_SNAPSHOT; |
|
863 | aux = MIN_DELTA_SNAPSHOT; |
General Comments 0
You need to be logged in to leave comments.
Login now