@@ -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: Tue Apr 1 12:03:12 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 | |
@@ -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=1 -DSW_VERSION_N2=0 -DSW_VERSION_N3=0 -DSW_VERSION_N4=5 -D |
|
13 | DEFINES = -DSW_VERSION_N1=1 -DSW_VERSION_N2=0 -DSW_VERSION_N3=0 -DSW_VERSION_N4=5 -DPRINT_MESSAGES_ON_CONSOLE -DPRINT_TASK_STATISTICS | |
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 -I../../LFR_basic-parameters |
|
16 | INCPATH = -I/usr/lib64/qt4/mkspecs/linux-g++ -I. -I../src -I../header -I../../LFR_basic-parameters |
@@ -1,7 +1,7 | |||||
1 | TEMPLATE = app |
|
1 | TEMPLATE = app | |
2 | # CONFIG += console v8 sim |
|
2 | # CONFIG += console v8 sim | |
3 | # CONFIG options = verbose *** boot_messages *** debug_messages *** cpu_usage_report *** stack_report *** vhdl_dev *** debug_tch |
|
3 | # CONFIG options = verbose *** boot_messages *** debug_messages *** cpu_usage_report *** stack_report *** vhdl_dev *** debug_tch | |
4 |
CONFIG += console verbose |
|
4 | CONFIG += console verbose cpu_usage_report | |
5 | CONFIG -= qt |
|
5 | CONFIG -= qt | |
6 |
|
6 | |||
7 | include(./sparc.pri) |
|
7 | include(./sparc.pri) |
@@ -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-0 |
|
3 | <!-- Written by QtCreator 3.0.1, 2014-04-01T07:09:49. --> | |
4 | <qtcreator> |
|
4 | <qtcreator> | |
5 | <data> |
|
5 | <data> | |
6 | <variable>ProjectExplorer.Project.ActiveTarget</variable> |
|
6 | <variable>ProjectExplorer.Project.ActiveTarget</variable> |
@@ -447,6 +447,28 typedef struct { | |||||
447 | } Header_TM_LFR_SCIENCE_ASM_t; |
|
447 | } Header_TM_LFR_SCIENCE_ASM_t; | |
448 |
|
448 | |||
449 | typedef struct { |
|
449 | typedef struct { | |
|
450 | unsigned char targetLogicalAddress; | |||
|
451 | unsigned char protocolIdentifier; | |||
|
452 | unsigned char reserved; | |||
|
453 | unsigned char userApplication; | |||
|
454 | unsigned char packetID[2]; | |||
|
455 | unsigned char packetSequenceControl[2]; | |||
|
456 | unsigned char packetLength[2]; | |||
|
457 | // DATA FIELD HEADER | |||
|
458 | unsigned char spare1_pusVersion_spare2; | |||
|
459 | unsigned char serviceType; | |||
|
460 | unsigned char serviceSubType; | |||
|
461 | unsigned char destinationID; | |||
|
462 | unsigned char time[6]; | |||
|
463 | // AUXILIARY HEADER | |||
|
464 | unsigned char sid; | |||
|
465 | unsigned char biaStatusInfo; | |||
|
466 | unsigned char acquisitionTime[6]; | |||
|
467 | unsigned char spare_source_data; | |||
|
468 | unsigned char pa_lfr_bp_blk_nr[2]; | |||
|
469 | } Header_TM_LFR_SCIENCE_BP_t; | |||
|
470 | ||||
|
471 | typedef struct { | |||
450 | //targetLogicalAddress is removed by the grspw module |
|
472 | //targetLogicalAddress is removed by the grspw module | |
451 | unsigned char protocolIdentifier; |
|
473 | unsigned char protocolIdentifier; | |
452 | unsigned char reserved; |
|
474 | unsigned char reserved; |
@@ -18,6 +18,16 typedef struct ring_node | |||||
18 | unsigned int status; |
|
18 | unsigned int status; | |
19 | } ring_node; |
|
19 | } ring_node; | |
20 |
|
20 | |||
|
21 | typedef struct ring_node_sm | |||
|
22 | { | |||
|
23 | struct ring_node_sm *previous; | |||
|
24 | int buffer_address; | |||
|
25 | struct ring_node_sm *next; | |||
|
26 | unsigned int status; | |||
|
27 | unsigned int coarseTime; | |||
|
28 | unsigned int fineTime; | |||
|
29 | } ring_node_sm; | |||
|
30 | ||||
21 | //************************ |
|
31 | //************************ | |
22 | // flight software version |
|
32 | // flight software version | |
23 | // this parameters is handled by the Qt project options |
|
33 | // this parameters is handled by the Qt project options |
@@ -4,12 +4,12 | |||||
4 | // TC_LFR_LOAD_COMMON_PAR |
|
4 | // TC_LFR_LOAD_COMMON_PAR | |
5 |
|
5 | |||
6 | // TC_LFR_LOAD_NORMAL_PAR |
|
6 | // TC_LFR_LOAD_NORMAL_PAR | |
7 |
#define |
|
7 | #define DATAFIELD_POS_SY_LFR_N_SWF_L 0 | |
8 |
#define |
|
8 | #define DATAFIELD_POS_SY_LFR_N_SWF_P 2 | |
9 |
#define |
|
9 | #define DATAFIELD_POS_SY_LFR_N_ASM_P 4 | |
10 |
#define |
|
10 | #define DATAFIELD_POS_SY_LFR_N_BP_P0 6 | |
11 |
#define |
|
11 | #define DATAFIELD_POS_SY_LFR_N_BP_P1 7 | |
12 |
#define |
|
12 | #define DATAFIELD_POS_SY_LFR_N_CWF_LONG_F3 8 | |
13 |
|
13 | |||
14 | // TC_LFR_LOAD_BURST_PAR |
|
14 | // TC_LFR_LOAD_BURST_PAR | |
15 |
|
15 |
@@ -38,10 +38,12 | |||||
38 | #define NB_BINS_TO_AVERAGE_ASM_F1 8 |
|
38 | #define NB_BINS_TO_AVERAGE_ASM_F1 8 | |
39 | #define NB_BINS_TO_AVERAGE_ASM_F2 8 |
|
39 | #define NB_BINS_TO_AVERAGE_ASM_F2 8 | |
40 | // |
|
40 | // | |
41 | #define TOTAL_SIZE_COMPRESSED_ASM_F0 275 // 11 * 25 |
|
41 | #define TOTAL_SIZE_COMPRESSED_ASM_F0 275 // 11 * 25 WORDS | |
42 | #define TOTAL_SIZE_COMPRESSED_ASM_F1 325 // 13 * 25 |
|
42 | #define TOTAL_SIZE_COMPRESSED_ASM_F1 325 // 13 * 25 WORDS | |
43 | #define TOTAL_SIZE_COMPRESSED_ASM_F2 300 // 12 * 25 |
|
43 | #define TOTAL_SIZE_COMPRESSED_ASM_F2 300 // 12 * 25 WORDS | |
44 | #define NB_AVERAGE_NORMAL_f0 96*4 |
|
44 | #define TOTAL_SIZE_COMPRESSED_ASM_SBM1 550 // 22 * 25 WORDS | |
|
45 | #define NB_AVERAGE_NORMAL_f0 384 // 96 * 4 | |||
|
46 | #define NB_AVERAGE_SBM1_f0 24 // 24 matrices at f0 = 0.25 second | |||
45 | #define NB_SM_TO_RECEIVE_BEFORE_AVF0 8 |
|
47 | #define NB_SM_TO_RECEIVE_BEFORE_AVF0 8 | |
46 |
|
48 | |||
47 | typedef struct { |
|
49 | typedef struct { |
@@ -38,11 +38,14 rtems_task avf0_task(rtems_task_argument | |||||
38 | rtems_task smiq_task(rtems_task_argument argument); // added to test the spectral matrix simulator |
|
38 | rtems_task smiq_task(rtems_task_argument argument); // added to test the spectral matrix simulator | |
39 | rtems_task matr_task(rtems_task_argument argument); |
|
39 | rtems_task matr_task(rtems_task_argument argument); | |
40 |
|
40 | |||
41 | void matrix_reset(volatile float *averaged_spec_mat); |
|
|||
42 | void BP1_set_old(float * compressed_spec_mat, unsigned char nb_bins_compressed_spec_mat, unsigned char * LFR_BP1); |
|
41 | void BP1_set_old(float * compressed_spec_mat, unsigned char nb_bins_compressed_spec_mat, unsigned char * LFR_BP1); | |
43 | void BP2_set_old(float * compressed_spec_mat, unsigned char nb_bins_compressed_spec_mat); |
|
42 | void BP2_set_old(float * compressed_spec_mat, unsigned char nb_bins_compressed_spec_mat); | |
44 | // |
|
43 | // | |
45 | void init_header_asm( Header_TM_LFR_SCIENCE_ASM_t *header); |
|
44 | void init_header_asm( Header_TM_LFR_SCIENCE_ASM_t *header); | |
|
45 | void matrix_reset(volatile float *averaged_spec_mat); | |||
|
46 | void ASM_average(float *averaged_spec_mat_f0, float *averaged_spec_mat_f1, | |||
|
47 | ring_node_sm *ring_node_tab[], | |||
|
48 | unsigned int firstTimeF0, unsigned int firstTimeF1 ); | |||
46 | void ASM_reorganize( float *averaged_spec_mat, float *averaged_spec_mat_reorganized ); |
|
49 | void ASM_reorganize( float *averaged_spec_mat, float *averaged_spec_mat_reorganized ); | |
47 | void ASM_compress( float *averaged_spec_mat, unsigned char fChannel, float *compressed_spec_mat ); |
|
50 | void ASM_compress( float *averaged_spec_mat, unsigned char fChannel, float *compressed_spec_mat ); | |
48 | void ASM_convert(volatile float *input_matrix, char *output_matrix); |
|
51 | void ASM_convert(volatile float *input_matrix, char *output_matrix); |
@@ -232,7 +232,7 void init_local_mode_parameters( void ) | |||||
232 |
|
232 | |||
233 | void reset_local_time( void ) |
|
233 | void reset_local_time( void ) | |
234 | { |
|
234 | { | |
235 |
time_management_regs->c |
|
235 | time_management_regs->ctrl = 0x02; // software reset, coarse time = 0x80000000 | |
236 | } |
|
236 | } | |
237 |
|
237 | |||
238 | void create_names( void ) // create all names for tasks and queues |
|
238 | void create_names( void ) // create all names for tasks and queues |
@@ -384,6 +384,12 void send_dumb_hk( void ) | |||||
384 | dummy_hk_packet.serviceType = TM_TYPE_HK; |
|
384 | dummy_hk_packet.serviceType = TM_TYPE_HK; | |
385 | dummy_hk_packet.serviceSubType = TM_SUBTYPE_HK; |
|
385 | dummy_hk_packet.serviceSubType = TM_SUBTYPE_HK; | |
386 | dummy_hk_packet.destinationID = TM_DESTINATION_ID_GROUND; |
|
386 | dummy_hk_packet.destinationID = TM_DESTINATION_ID_GROUND; | |
|
387 | dummy_hk_packet.time[0] = (unsigned char) (time_management_regs->coarse_time>>24); | |||
|
388 | dummy_hk_packet.time[1] = (unsigned char) (time_management_regs->coarse_time>>16); | |||
|
389 | dummy_hk_packet.time[2] = (unsigned char) (time_management_regs->coarse_time>>8); | |||
|
390 | dummy_hk_packet.time[3] = (unsigned char) (time_management_regs->coarse_time); | |||
|
391 | dummy_hk_packet.time[4] = (unsigned char) (time_management_regs->fine_time>>8); | |||
|
392 | dummy_hk_packet.time[5] = (unsigned char) (time_management_regs->fine_time); | |||
387 | dummy_hk_packet.sid = SID_HK; |
|
393 | dummy_hk_packet.sid = SID_HK; | |
388 |
|
394 | |||
389 | // init status word |
|
395 | // init status word |
@@ -13,20 +13,29 | |||||
13 |
|
13 | |||
14 | //************************ |
|
14 | //************************ | |
15 | // spectral matrices rings |
|
15 | // spectral matrices rings | |
16 | ring_node sm_ring_f0[NB_RING_NODES_ASM_F0]; |
|
16 | ring_node_sm sm_ring_f0[NB_RING_NODES_ASM_F0]; | |
17 | ring_node sm_ring_f1[NB_RING_NODES_ASM_F1]; |
|
17 | ring_node_sm sm_ring_f1[NB_RING_NODES_ASM_F1]; | |
18 | ring_node sm_ring_f2[NB_RING_NODES_ASM_F2]; |
|
18 | ring_node_sm sm_ring_f2[NB_RING_NODES_ASM_F2]; | |
19 | ring_node *current_ring_node_sm_f0; |
|
19 | ring_node_sm *current_ring_node_sm_f0; | |
20 | ring_node *ring_node_for_averaging_sm_f0; |
|
20 | ring_node_sm *ring_node_for_averaging_sm_f0; | |
21 | ring_node *current_ring_node_sm_f1; |
|
21 | ring_node_sm *current_ring_node_sm_f1; | |
22 | ring_node *current_ring_node_sm_f2; |
|
22 | ring_node_sm *current_ring_node_sm_f2; | |
23 |
|
23 | |||
24 | BP1_t data_BP1[ NB_BINS_COMPRESSED_SM_F0 ]; |
|
24 | BP1_t data_BP1[ NB_BINS_COMPRESSED_SM_F0 ]; | |
|
25 | ||||
|
26 | //***** | |||
|
27 | // NORM | |||
|
28 | // F0 | |||
25 | float averaged_sm_f0 [ TIME_OFFSET + TOTAL_SIZE_SM ]; |
|
29 | float averaged_sm_f0 [ TIME_OFFSET + TOTAL_SIZE_SM ]; | |
26 | float averaged_sm_f0_reorganized[ TIME_OFFSET + TOTAL_SIZE_SM ]; |
|
30 | float averaged_sm_f0_reorganized[ TIME_OFFSET + TOTAL_SIZE_SM ]; | |
27 | char averaged_sm_f0_char [ TIME_OFFSET_IN_BYTES + TOTAL_SIZE_SM ]; |
|
31 | char averaged_sm_f0_char [ TIME_OFFSET_IN_BYTES + (TOTAL_SIZE_SM * 2) ]; | |
28 | float compressed_sm_f0 [ TOTAL_SIZE_COMPRESSED_ASM_F0 ]; |
|
32 | float compressed_sm_f0 [ TOTAL_SIZE_COMPRESSED_ASM_F0 ]; | |
29 |
|
33 | |||
|
34 | //***** | |||
|
35 | // SBM1 | |||
|
36 | float averaged_sm_sbm1 [ TIME_OFFSET + TOTAL_SIZE_SM ]; | |||
|
37 | float compressed_sm_sbm1 [ TOTAL_SIZE_COMPRESSED_ASM_SBM1 ]; | |||
|
38 | ||||
30 | unsigned char LFR_BP1_F0[ TIME_OFFSET_IN_BYTES + TOTAL_SIZE_BP1_F0 * 2 ]; |
|
39 | unsigned char LFR_BP1_F0[ TIME_OFFSET_IN_BYTES + TOTAL_SIZE_BP1_F0 * 2 ]; | |
31 | unsigned char LFR_BP1_F1[ TIME_OFFSET_IN_BYTES + TOTAL_SIZE_BP1_F1 ]; |
|
40 | unsigned char LFR_BP1_F1[ TIME_OFFSET_IN_BYTES + TOTAL_SIZE_BP1_F1 ]; | |
32 | unsigned char LFR_BP1_F2[ TIME_OFFSET_IN_BYTES + TOTAL_SIZE_BP1_F2 ]; |
|
41 | unsigned char LFR_BP1_F2[ TIME_OFFSET_IN_BYTES + TOTAL_SIZE_BP1_F2 ]; | |
@@ -38,58 +47,58 void init_sm_rings( void ) | |||||
38 | unsigned char i; |
|
47 | unsigned char i; | |
39 |
|
48 | |||
40 | // F0 RING |
|
49 | // F0 RING | |
41 | sm_ring_f0[0].next = (ring_node*) &sm_ring_f0[1]; |
|
50 | sm_ring_f0[0].next = (ring_node_sm*) &sm_ring_f0[1]; | |
42 | sm_ring_f0[0].previous = (ring_node*) &sm_ring_f0[NB_RING_NODES_ASM_F0-1]; |
|
51 | sm_ring_f0[0].previous = (ring_node_sm*) &sm_ring_f0[NB_RING_NODES_ASM_F0-1]; | |
43 | sm_ring_f0[0].buffer_address = |
|
52 | sm_ring_f0[0].buffer_address = | |
44 | (int) &sm_f0[ 0 ]; |
|
53 | (int) &sm_f0[ 0 ]; | |
45 |
|
54 | |||
46 | sm_ring_f0[NB_RING_NODES_ASM_F0-1].next = (ring_node*) &sm_ring_f0[0]; |
|
55 | sm_ring_f0[NB_RING_NODES_ASM_F0-1].next = (ring_node_sm*) &sm_ring_f0[0]; | |
47 | sm_ring_f0[NB_RING_NODES_ASM_F0-1].previous = (ring_node*) &sm_ring_f0[NB_RING_NODES_ASM_F0-2]; |
|
56 | sm_ring_f0[NB_RING_NODES_ASM_F0-1].previous = (ring_node_sm*) &sm_ring_f0[NB_RING_NODES_ASM_F0-2]; | |
48 | sm_ring_f0[NB_RING_NODES_ASM_F0-1].buffer_address = |
|
57 | sm_ring_f0[NB_RING_NODES_ASM_F0-1].buffer_address = | |
49 | (int) &sm_f0[ (NB_RING_NODES_ASM_F0-1) * TOTAL_SIZE_SM ]; |
|
58 | (int) &sm_f0[ (NB_RING_NODES_ASM_F0-1) * TOTAL_SIZE_SM ]; | |
50 |
|
59 | |||
51 | for(i=1; i<NB_RING_NODES_ASM_F0-1; i++) |
|
60 | for(i=1; i<NB_RING_NODES_ASM_F0-1; i++) | |
52 | { |
|
61 | { | |
53 | sm_ring_f0[i].next = (ring_node*) &sm_ring_f0[i+1]; |
|
62 | sm_ring_f0[i].next = (ring_node_sm*) &sm_ring_f0[i+1]; | |
54 | sm_ring_f0[i].previous = (ring_node*) &sm_ring_f0[i-1]; |
|
63 | sm_ring_f0[i].previous = (ring_node_sm*) &sm_ring_f0[i-1]; | |
55 | sm_ring_f0[i].buffer_address = |
|
64 | sm_ring_f0[i].buffer_address = | |
56 | (int) &sm_f0[ i * TOTAL_SIZE_SM ]; |
|
65 | (int) &sm_f0[ i * TOTAL_SIZE_SM ]; | |
57 | } |
|
66 | } | |
58 |
|
67 | |||
59 | // F1 RING |
|
68 | // F1 RING | |
60 | sm_ring_f1[0].next = (ring_node*) &sm_ring_f1[1]; |
|
69 | sm_ring_f1[0].next = (ring_node_sm*) &sm_ring_f1[1]; | |
61 | sm_ring_f1[0].previous = (ring_node*) &sm_ring_f1[NB_RING_NODES_ASM_F1-1]; |
|
70 | sm_ring_f1[0].previous = (ring_node_sm*) &sm_ring_f1[NB_RING_NODES_ASM_F1-1]; | |
62 | sm_ring_f1[0].buffer_address = |
|
71 | sm_ring_f1[0].buffer_address = | |
63 | (int) &sm_f1[ 0 ]; |
|
72 | (int) &sm_f1[ 0 ]; | |
64 |
|
73 | |||
65 | sm_ring_f1[NB_RING_NODES_ASM_F1-1].next = (ring_node*) &sm_ring_f1[0]; |
|
74 | sm_ring_f1[NB_RING_NODES_ASM_F1-1].next = (ring_node_sm*) &sm_ring_f1[0]; | |
66 | sm_ring_f1[NB_RING_NODES_ASM_F1-1].previous = (ring_node*) &sm_ring_f1[NB_RING_NODES_ASM_F1-2]; |
|
75 | sm_ring_f1[NB_RING_NODES_ASM_F1-1].previous = (ring_node_sm*) &sm_ring_f1[NB_RING_NODES_ASM_F1-2]; | |
67 | sm_ring_f1[NB_RING_NODES_ASM_F1-1].buffer_address = |
|
76 | sm_ring_f1[NB_RING_NODES_ASM_F1-1].buffer_address = | |
68 | (int) &sm_f1[ (NB_RING_NODES_ASM_F1-1) * TOTAL_SIZE_SM ]; |
|
77 | (int) &sm_f1[ (NB_RING_NODES_ASM_F1-1) * TOTAL_SIZE_SM ]; | |
69 |
|
78 | |||
70 | for(i=1; i<NB_RING_NODES_ASM_F1-1; i++) |
|
79 | for(i=1; i<NB_RING_NODES_ASM_F1-1; i++) | |
71 | { |
|
80 | { | |
72 | sm_ring_f1[i].next = (ring_node*) &sm_ring_f1[i+1]; |
|
81 | sm_ring_f1[i].next = (ring_node_sm*) &sm_ring_f1[i+1]; | |
73 | sm_ring_f1[i].previous = (ring_node*) &sm_ring_f1[i-1]; |
|
82 | sm_ring_f1[i].previous = (ring_node_sm*) &sm_ring_f1[i-1]; | |
74 | sm_ring_f1[i].buffer_address = |
|
83 | sm_ring_f1[i].buffer_address = | |
75 | (int) &sm_f1[ i * TOTAL_SIZE_SM ]; |
|
84 | (int) &sm_f1[ i * TOTAL_SIZE_SM ]; | |
76 | } |
|
85 | } | |
77 |
|
86 | |||
78 | // F2 RING |
|
87 | // F2 RING | |
79 | sm_ring_f2[0].next = (ring_node*) &sm_ring_f2[1]; |
|
88 | sm_ring_f2[0].next = (ring_node_sm*) &sm_ring_f2[1]; | |
80 | sm_ring_f2[0].previous = (ring_node*) &sm_ring_f2[NB_RING_NODES_ASM_F2-1]; |
|
89 | sm_ring_f2[0].previous = (ring_node_sm*) &sm_ring_f2[NB_RING_NODES_ASM_F2-1]; | |
81 | sm_ring_f2[0].buffer_address = |
|
90 | sm_ring_f2[0].buffer_address = | |
82 | (int) &sm_f2[ 0 ]; |
|
91 | (int) &sm_f2[ 0 ]; | |
83 |
|
92 | |||
84 | sm_ring_f2[NB_RING_NODES_ASM_F2-1].next = (ring_node*) &sm_ring_f2[0]; |
|
93 | sm_ring_f2[NB_RING_NODES_ASM_F2-1].next = (ring_node_sm*) &sm_ring_f2[0]; | |
85 | sm_ring_f2[NB_RING_NODES_ASM_F2-1].previous = (ring_node*) &sm_ring_f2[NB_RING_NODES_ASM_F2-2]; |
|
94 | sm_ring_f2[NB_RING_NODES_ASM_F2-1].previous = (ring_node_sm*) &sm_ring_f2[NB_RING_NODES_ASM_F2-2]; | |
86 | sm_ring_f2[NB_RING_NODES_ASM_F2-1].buffer_address = |
|
95 | sm_ring_f2[NB_RING_NODES_ASM_F2-1].buffer_address = | |
87 | (int) &sm_f2[ (NB_RING_NODES_ASM_F2-1) * TOTAL_SIZE_SM ]; |
|
96 | (int) &sm_f2[ (NB_RING_NODES_ASM_F2-1) * TOTAL_SIZE_SM ]; | |
88 |
|
97 | |||
89 | for(i=1; i<NB_RING_NODES_ASM_F2-1; i++) |
|
98 | for(i=1; i<NB_RING_NODES_ASM_F2-1; i++) | |
90 | { |
|
99 | { | |
91 | sm_ring_f2[i].next = (ring_node*) &sm_ring_f2[i+1]; |
|
100 | sm_ring_f2[i].next = (ring_node_sm*) &sm_ring_f2[i+1]; | |
92 | sm_ring_f2[i].previous = (ring_node*) &sm_ring_f2[i-1]; |
|
101 | sm_ring_f2[i].previous = (ring_node_sm*) &sm_ring_f2[i-1]; | |
93 | sm_ring_f2[i].buffer_address = |
|
102 | sm_ring_f2[i].buffer_address = | |
94 | (int) &sm_f2[ i * TOTAL_SIZE_SM ]; |
|
103 | (int) &sm_f2[ i * TOTAL_SIZE_SM ]; | |
95 | } |
|
104 | } | |
@@ -194,47 +203,64 rtems_task smiq_task(rtems_task_argument | |||||
194 | rtems_task avf0_task(rtems_task_argument argument) |
|
203 | rtems_task avf0_task(rtems_task_argument argument) | |
195 | { |
|
204 | { | |
196 | int i; |
|
205 | int i; | |
197 | static int nb_average; |
|
206 | static unsigned int nb_average_norm; | |
|
207 | static unsigned int nb_average_sbm1; | |||
198 | rtems_event_set event_out; |
|
208 | rtems_event_set event_out; | |
199 | rtems_status_code status; |
|
209 | rtems_status_code status; | |
200 | ring_node *ring_node_tab[8]; |
|
210 | ring_node_sm *ring_node_tab[8]; | |
201 |
|
211 | |||
202 | nb_average = 0; |
|
212 | nb_average_norm = 0; | |
|
213 | nb_average_sbm1 = 0; | |||
203 |
|
214 | |||
204 | BOOT_PRINTF("in AVFO *** \n") |
|
215 | BOOT_PRINTF("in AVFO *** \n") | |
205 |
|
216 | |||
206 | while(1){ |
|
217 | while(1){ | |
207 | rtems_event_receive(RTEMS_EVENT_0, RTEMS_WAIT, RTEMS_NO_TIMEOUT, &event_out); // wait for an RTEMS_EVENT0 |
|
218 | rtems_event_receive(RTEMS_EVENT_0, RTEMS_WAIT, RTEMS_NO_TIMEOUT, &event_out); // wait for an RTEMS_EVENT0 | |
208 | ring_node_tab[NB_SM_TO_RECEIVE_BEFORE_AVF0-1] = ring_node_for_averaging_sm_f0; |
|
219 | ring_node_tab[NB_SM_TO_RECEIVE_BEFORE_AVF0-1] = ring_node_for_averaging_sm_f0; | |
209 | for (i=2; i<NB_SM_TO_RECEIVE_BEFORE_AVF0+1; i++) |
|
220 | for ( i = 2; i < (NB_SM_TO_RECEIVE_BEFORE_AVF0+1); i++ ) | |
210 | { |
|
221 | { | |
211 | ring_node_for_averaging_sm_f0 = ring_node_for_averaging_sm_f0->previous; |
|
222 | ring_node_for_averaging_sm_f0 = ring_node_for_averaging_sm_f0->previous; | |
212 | ring_node_tab[NB_SM_TO_RECEIVE_BEFORE_AVF0-i] = ring_node_for_averaging_sm_f0; |
|
223 | ring_node_tab[NB_SM_TO_RECEIVE_BEFORE_AVF0-i] = ring_node_for_averaging_sm_f0; | |
213 | } |
|
224 | } | |
214 |
|
225 | |||
215 | averaged_sm_f0[0] = ( (int *) (ring_node_tab[7]->buffer_address) ) [0]; |
|
226 | // copy time information in the averaged_sm_f0 buffer | |
216 |
averaged_sm_f0[ |
|
227 | averaged_sm_f0[0] = ring_node_tab[7]->coarseTime; | |
217 | for(i=0; i<TOTAL_SIZE_SM; i++) |
|
228 | averaged_sm_f0[1] = ring_node_tab[7]->fineTime; | |
|
229 | averaged_sm_f1[0] = ring_node_tab[7]->coarseTime; | |||
|
230 | averaged_sm_f1[1] = ring_node_tab[7]->fineTime; | |||
|
231 | ||||
|
232 | // compute the average and store it in the averaged_sm_f1 buffer | |||
|
233 | ASM_average( averaged_sm_f0, averaged_sm_f1, | |||
|
234 | ring_node_tab, | |||
|
235 | nb_average_norm, nb_average_sbm1 ); | |||
|
236 | ||||
|
237 | ||||
|
238 | // update nb_average | |||
|
239 | nb_average_norm = nb_average_norm + NB_SM_TO_RECEIVE_BEFORE_AVF0; | |||
|
240 | nb_average_sbm1 = nb_average_sbm1 + NB_SM_TO_RECEIVE_BEFORE_AVF0; | |||
|
241 | ||||
|
242 | // launch actions depending on the current mode | |||
|
243 | if (lfrCurrentMode == LFR_MODE_SBM1) | |||
218 | { |
|
244 | { | |
219 | averaged_sm_f0[i] = ( (int *) (ring_node_tab[0]->buffer_address) ) [i + TIME_OFFSET] |
|
245 | if (nb_average_sbm1 == NB_AVERAGE_SBM1_f0) { | |
220 | + ( (int *) (ring_node_tab[1]->buffer_address) ) [i + TIME_OFFSET] |
|
246 | nb_average_sbm1 = 0; | |
221 | + ( (int *) (ring_node_tab[2]->buffer_address) ) [i + TIME_OFFSET] |
|
247 | status = rtems_event_send( Task_id[TASKID_MATR], RTEMS_EVENT_MODE_SBM1 ); // sending an event to the task 7, BPF0 | |
222 | + ( (int *) (ring_node_tab[3]->buffer_address) ) [i + TIME_OFFSET] |
|
|||
223 | + ( (int *) (ring_node_tab[4]->buffer_address) ) [i + TIME_OFFSET] |
|
|||
224 | + ( (int *) (ring_node_tab[5]->buffer_address) ) [i + TIME_OFFSET] |
|
|||
225 | + ( (int *) (ring_node_tab[6]->buffer_address) ) [i + TIME_OFFSET] |
|
|||
226 | + ( (int *) (ring_node_tab[7]->buffer_address) ) [i + TIME_OFFSET]; |
|
|||
227 | } |
|
|||
228 |
|
||||
229 | nb_average = nb_average + NB_SM_TO_RECEIVE_BEFORE_AVF0; |
|
|||
230 | if (nb_average == NB_AVERAGE_NORMAL_f0) { |
|
|||
231 | nb_average = 0; |
|
|||
232 | status = rtems_event_send( Task_id[TASKID_MATR], RTEMS_EVENT_0 ); // sending an event to the task 7, BPF0 |
|
|||
233 | if (status != RTEMS_SUCCESSFUL) { |
|
248 | if (status != RTEMS_SUCCESSFUL) { | |
234 | printf("in AVF0 *** Error sending RTEMS_EVENT_0, code %d\n", status); |
|
249 | printf("in AVF0 *** Error sending RTEMS_EVENT_0, code %d\n", status); | |
235 | } |
|
250 | } | |
236 | } |
|
251 | } | |
237 | } |
|
252 | } | |
|
253 | if (lfrCurrentMode == LFR_MODE_NORMAL) | |||
|
254 | { | |||
|
255 | if (nb_average_norm == NB_AVERAGE_NORMAL_f0) { | |||
|
256 | nb_average_norm = 0; | |||
|
257 | status = rtems_event_send( Task_id[TASKID_MATR], RTEMS_EVENT_MODE_NORMAL ); // sending an event to the task 7, BPF0 | |||
|
258 | if (status != RTEMS_SUCCESSFUL) { | |||
|
259 | printf("in AVF0 *** Error sending RTEMS_EVENT_0, code %d\n", status); | |||
|
260 | } | |||
|
261 | } | |||
|
262 | } | |||
|
263 | } | |||
238 | } |
|
264 | } | |
239 |
|
265 | |||
240 | rtems_task matr_task(rtems_task_argument argument) |
|
266 | rtems_task matr_task(rtems_task_argument argument) | |
@@ -258,17 +284,34 rtems_task matr_task(rtems_task_argument | |||||
258 | fill_averaged_spectral_matrix( ); |
|
284 | fill_averaged_spectral_matrix( ); | |
259 |
|
285 | |||
260 | while(1){ |
|
286 | while(1){ | |
261 |
rtems_event_receive(RTEMS_EVENT_ |
|
287 | rtems_event_receive( RTEMS_EVENT_MODE_NORMAL | RTEMS_EVENT_MODE_SBM1, | |
|
288 | RTEMS_WAIT | RTEMS_EVENT_ANY, RTEMS_NO_TIMEOUT, &event_out); | |||
|
289 | if (event_out==RTEMS_EVENT_MODE_NORMAL) | |||
|
290 | { | |||
262 | // 1) compress the matrix for Basic Parameters calculation |
|
291 | // 1) compress the matrix for Basic Parameters calculation | |
263 | ASM_compress( averaged_sm_f0, 0, compressed_sm_f0 ); |
|
292 | ASM_compress( averaged_sm_f0, 0, compressed_sm_f0 ); | |
264 | // 2) |
|
293 | // 2) compute the BP1 set | |
265 | // BP1_set( (float *) &compressed_sm_f0[TIME_OFFSET], NB_BINS_COMPRESSED_SM_F0, (unsigned char *) &LFR_BP1_F0[TIME_OFFSET_IN_BYTES] ); |
|
294 | ||
266 | // 3) convert the float array in a char array |
|
295 | // 3) convert the float array in a char array | |
267 | ASM_reorganize( averaged_sm_f0, averaged_sm_f0_reorganized ); |
|
296 | ASM_reorganize( averaged_sm_f0, averaged_sm_f0_reorganized ); | |
268 | ASM_convert( averaged_sm_f0_reorganized, averaged_sm_f0_char); |
|
297 | ASM_convert( averaged_sm_f0_reorganized, averaged_sm_f0_char); | |
269 | // 4) send the spectral matrix packets |
|
298 | // 4) send the spectral matrix packets | |
270 | ASM_send( &headerASM, averaged_sm_f0_char, SID_NORM_ASM_F0, &spw_ioctl_send_ASM, queue_id); |
|
299 | ASM_send( &headerASM, averaged_sm_f0_char, SID_NORM_ASM_F0, &spw_ioctl_send_ASM, queue_id); | |
271 | } |
|
300 | } | |
|
301 | else if (event_out==RTEMS_EVENT_MODE_SBM1) | |||
|
302 | { | |||
|
303 | // 1) compress the matrix for Basic Parameters calculation | |||
|
304 | ASM_compress( averaged_sm_f1, 0, compressed_sm_f1 ); | |||
|
305 | // 2) compute the BP1 set | |||
|
306 | ||||
|
307 | // 4) send the basic parameters set 1 packet | |||
|
308 | BP1_send( ); | |||
|
309 | } | |||
|
310 | else | |||
|
311 | { | |||
|
312 | PRINTF1("ERR *** in MATR *** unexect event = %x\n", (unsigned int) event_out) | |||
|
313 | } | |||
|
314 | } | |||
272 | } |
|
315 | } | |
273 |
|
316 | |||
274 | //***************************** |
|
317 | //***************************** | |
@@ -282,6 +325,47 void matrix_reset(volatile float *averag | |||||
282 | } |
|
325 | } | |
283 | } |
|
326 | } | |
284 |
|
327 | |||
|
328 | void ASM_average( float *averaged_spec_mat_f0, float *averaged_spec_mat_f1, | |||
|
329 | ring_node_sm *ring_node_tab[], | |||
|
330 | unsigned int firstTimeF0, unsigned int firstTimeF1 ) | |||
|
331 | { | |||
|
332 | float sum; | |||
|
333 | unsigned int i; | |||
|
334 | ||||
|
335 | for(i=0; i<TOTAL_SIZE_SM; i++) | |||
|
336 | { | |||
|
337 | sum = ( (int *) (ring_node_tab[0]->buffer_address) ) [ i ] | |||
|
338 | + ( (int *) (ring_node_tab[1]->buffer_address) ) [ i ] | |||
|
339 | + ( (int *) (ring_node_tab[2]->buffer_address) ) [ i ] | |||
|
340 | + ( (int *) (ring_node_tab[3]->buffer_address) ) [ i ] | |||
|
341 | + ( (int *) (ring_node_tab[4]->buffer_address) ) [ i ] | |||
|
342 | + ( (int *) (ring_node_tab[5]->buffer_address) ) [ i ] | |||
|
343 | + ( (int *) (ring_node_tab[6]->buffer_address) ) [ i ] | |||
|
344 | + ( (int *) (ring_node_tab[7]->buffer_address) ) [ i ]; | |||
|
345 | ||||
|
346 | if ( (firstTimeF0 == 0) && (firstTimeF1 == 0) ) | |||
|
347 | { | |||
|
348 | averaged_spec_mat_f0[ i ] = averaged_spec_mat_f0[ i ] + sum; | |||
|
349 | averaged_spec_mat_f1[ i ] = averaged_spec_mat_f1[ i ] + sum; | |||
|
350 | } | |||
|
351 | else if ( (firstTimeF0 == 0) && (firstTimeF1 != 0) ) | |||
|
352 | { | |||
|
353 | averaged_spec_mat_f0[ i ] = averaged_spec_mat_f0[ i ] + sum; | |||
|
354 | averaged_spec_mat_f1[ i ] = sum; | |||
|
355 | } | |||
|
356 | else if ( (firstTimeF0 != 0) && (firstTimeF1 == 0) ) | |||
|
357 | { | |||
|
358 | averaged_spec_mat_f0[ i ] = sum; | |||
|
359 | averaged_spec_mat_f1[ i ] = averaged_spec_mat_f1[ i ] + sum; | |||
|
360 | } | |||
|
361 | else | |||
|
362 | { | |||
|
363 | averaged_spec_mat_f0[ i ] = sum; | |||
|
364 | averaged_spec_mat_f1[ i ] = sum; | |||
|
365 | } | |||
|
366 | } | |||
|
367 | } | |||
|
368 | ||||
285 | void ASM_reorganize( float *averaged_spec_mat, float *averaged_spec_mat_reorganized ) |
|
369 | void ASM_reorganize( float *averaged_spec_mat, float *averaged_spec_mat_reorganized ) | |
286 | { |
|
370 | { | |
287 | int frequencyBin; |
|
371 | int frequencyBin; | |
@@ -440,6 +524,11 void ASM_send(Header_TM_LFR_SCIENCE_ASM_ | |||||
440 | } |
|
524 | } | |
441 | } |
|
525 | } | |
442 |
|
526 | |||
|
527 | void BP1_send() | |||
|
528 | { | |||
|
529 | ||||
|
530 | } | |||
|
531 | ||||
443 | void BP1_set_old(float * compressed_spec_mat, unsigned char nb_bins_compressed_spec_mat, unsigned char * LFR_BP1){ |
|
532 | void BP1_set_old(float * compressed_spec_mat, unsigned char nb_bins_compressed_spec_mat, unsigned char * LFR_BP1){ | |
444 | int i; |
|
533 | int i; | |
445 | int j; |
|
534 | int j; | |
@@ -655,6 +744,36 void init_header_asm( Header_TM_LFR_SCIE | |||||
655 | header->pa_lfr_asm_blk_nr[1] = 0x00; // BLK_NR LSB |
|
744 | header->pa_lfr_asm_blk_nr[1] = 0x00; // BLK_NR LSB | |
656 | } |
|
745 | } | |
657 |
|
746 | |||
|
747 | void init_header_bp( Header_TM_LFR_SCIENCE_BP_t *header) | |||
|
748 | { | |||
|
749 | header->targetLogicalAddress = CCSDS_DESTINATION_ID; | |||
|
750 | header->protocolIdentifier = CCSDS_PROTOCOLE_ID; | |||
|
751 | header->reserved = 0x00; | |||
|
752 | header->userApplication = CCSDS_USER_APP; | |||
|
753 | // header->packetID[0] = (unsigned char) (TM_PACKET_ID_SCIENCE_NORMAL_BURST >> 8); | |||
|
754 | // header->packetID[1] = (unsigned char) (TM_PACKET_ID_SCIENCE_NORMAL_BURST); | |||
|
755 | header->packetSequenceControl[0] = 0xc0; | |||
|
756 | header->packetSequenceControl[1] = 0x00; | |||
|
757 | header->packetLength[0] = 0x00; | |||
|
758 | header->packetLength[1] = 0x00; | |||
|
759 | // DATA FIELD HEADER | |||
|
760 | header->spare1_pusVersion_spare2 = 0x10; | |||
|
761 | header->serviceType = TM_TYPE_LFR_SCIENCE; // service type | |||
|
762 | header->serviceSubType = TM_SUBTYPE_LFR_SCIENCE; // service subtype | |||
|
763 | header->destinationID = TM_DESTINATION_ID_GROUND; | |||
|
764 | // AUXILIARY DATA HEADER | |||
|
765 | header->sid = 0x00; | |||
|
766 | header->biaStatusInfo = 0x00; | |||
|
767 | header->time[0] = 0x00; | |||
|
768 | header->time[0] = 0x00; | |||
|
769 | header->time[0] = 0x00; | |||
|
770 | header->time[0] = 0x00; | |||
|
771 | header->time[0] = 0x00; | |||
|
772 | header->time[0] = 0x00; | |||
|
773 | header->pa_lfr_bp_blk_nr[0] = 0x00; // BLK_NR MSB | |||
|
774 | header->pa_lfr_bp_blk_nr[1] = 0x00; // BLK_NR LSB | |||
|
775 | } | |||
|
776 | ||||
658 | void fill_averaged_spectral_matrix(void) |
|
777 | void fill_averaged_spectral_matrix(void) | |
659 | { |
|
778 | { | |
660 | /** This function fills spectral matrices related buffers with arbitrary data. |
|
779 | /** This function fills spectral matrices related buffers with arbitrary data. |
@@ -532,7 +532,7 int enter_mode( unsigned char mode, unsi | |||||
532 | #endif |
|
532 | #endif | |
533 | status = restart_science_tasks(); |
|
533 | status = restart_science_tasks(); | |
534 | launch_waveform_picker( mode, transitionCoarseTime ); |
|
534 | launch_waveform_picker( mode, transitionCoarseTime ); | |
535 |
|
|
535 | launch_spectral_matrix_simu( mode ); | |
536 | } |
|
536 | } | |
537 | else if ( mode == LFR_MODE_STANDBY ) |
|
537 | else if ( mode == LFR_MODE_STANDBY ) | |
538 | { |
|
538 | { | |
@@ -701,7 +701,6 void launch_spectral_matrix( unsigned ch | |||||
701 | reset_current_sm_ring_nodes(); |
|
701 | reset_current_sm_ring_nodes(); | |
702 | reset_spectral_matrix_regs(); |
|
702 | reset_spectral_matrix_regs(); | |
703 |
|
703 | |||
704 | #ifdef VHDL_DEV |
|
|||
705 | struct grgpio_regs_str *grgpio_regs = (struct grgpio_regs_str *) REGS_ADDR_GRGPIO; |
|
704 | struct grgpio_regs_str *grgpio_regs = (struct grgpio_regs_str *) REGS_ADDR_GRGPIO; | |
706 | grgpio_regs->io_port_direction_register = |
|
705 | grgpio_regs->io_port_direction_register = | |
707 | grgpio_regs->io_port_direction_register | 0x01; // [0001 1000], 0 = output disabled, 1 = output enabled |
|
706 | grgpio_regs->io_port_direction_register | 0x01; // [0001 1000], 0 = output disabled, 1 = output enabled | |
@@ -710,12 +709,7 void launch_spectral_matrix( unsigned ch | |||||
710 | LEON_Clear_interrupt( IRQ_SPECTRAL_MATRIX ); |
|
709 | LEON_Clear_interrupt( IRQ_SPECTRAL_MATRIX ); | |
711 | LEON_Unmask_interrupt( IRQ_SPECTRAL_MATRIX ); |
|
710 | LEON_Unmask_interrupt( IRQ_SPECTRAL_MATRIX ); | |
712 | set_run_matrix_spectral( 1 ); |
|
711 | set_run_matrix_spectral( 1 ); | |
713 | #else |
|
712 | ||
714 | // Spectral Matrices simulator |
|
|||
715 | timer_start( (gptimer_regs_t*) REGS_ADDR_GPTIMER, TIMER_SM_SIMULATOR ); |
|
|||
716 | LEON_Clear_interrupt( IRQ_SM_SIMULATOR ); |
|
|||
717 | LEON_Unmask_interrupt( IRQ_SM_SIMULATOR ); |
|
|||
718 | #endif |
|
|||
719 | } |
|
713 | } | |
720 |
|
714 | |||
721 | void set_irq_on_new_ready_matrix( unsigned char value ) |
|
715 | void set_irq_on_new_ready_matrix( unsigned char value ) |
@@ -262,8 +262,8 int set_sy_lfr_n_swf_l( ccsdsTelecommand | |||||
262 | unsigned char lsb; |
|
262 | unsigned char lsb; | |
263 | rtems_status_code status; |
|
263 | rtems_status_code status; | |
264 |
|
264 | |||
265 |
msb = TC->dataAndCRC[ |
|
265 | msb = TC->dataAndCRC[ DATAFIELD_POS_SY_LFR_N_SWF_L ]; | |
266 |
lsb = TC->dataAndCRC[ |
|
266 | lsb = TC->dataAndCRC[ DATAFIELD_POS_SY_LFR_N_SWF_L+1 ]; | |
267 |
|
267 | |||
268 | tmp = ( unsigned int ) floor( |
|
268 | tmp = ( unsigned int ) floor( | |
269 | ( ( msb*256 ) + lsb ) / 16 |
|
269 | ( ( msb*256 ) + lsb ) / 16 | |
@@ -271,7 +271,7 int set_sy_lfr_n_swf_l( ccsdsTelecommand | |||||
271 |
|
271 | |||
272 | if ( (tmp < 16) || (tmp > 2048) ) // the snapshot period is a multiple of 16 |
|
272 | if ( (tmp < 16) || (tmp > 2048) ) // the snapshot period is a multiple of 16 | |
273 | { // 2048 is the maximum limit due to the size of the buffers |
|
273 | { // 2048 is the maximum limit due to the size of the buffers | |
274 |
status = send_tm_lfr_tc_exe_inconsistent( TC, queue_id, |
|
274 | status = send_tm_lfr_tc_exe_inconsistent( TC, queue_id, DATAFIELD_POS_SY_LFR_N_SWF_L+10, lsb ); | |
275 | result = WRONG_APP_DATA; |
|
275 | result = WRONG_APP_DATA; | |
276 | } |
|
276 | } | |
277 | else if (tmp != 2048) |
|
277 | else if (tmp != 2048) | |
@@ -304,14 +304,14 int set_sy_lfr_n_swf_p(ccsdsTelecommandP | |||||
304 | unsigned char lsb; |
|
304 | unsigned char lsb; | |
305 | rtems_status_code status; |
|
305 | rtems_status_code status; | |
306 |
|
306 | |||
307 |
msb = TC->dataAndCRC[ |
|
307 | msb = TC->dataAndCRC[ DATAFIELD_POS_SY_LFR_N_SWF_P ]; | |
308 |
lsb = TC->dataAndCRC[ |
|
308 | lsb = TC->dataAndCRC[ DATAFIELD_POS_SY_LFR_N_SWF_P+1 ]; | |
309 |
|
309 | |||
310 | tmp = msb * 256 + lsb; |
|
310 | tmp = msb * 256 + lsb; | |
311 |
|
311 | |||
312 | if ( tmp < 16 ) |
|
312 | if ( tmp < 16 ) | |
313 | { |
|
313 | { | |
314 |
status = send_tm_lfr_tc_exe_inconsistent( TC, queue_id, |
|
314 | status = send_tm_lfr_tc_exe_inconsistent( TC, queue_id, DATAFIELD_POS_SY_LFR_N_SWF_P+10, lsb ); | |
315 | result = WRONG_APP_DATA; |
|
315 | result = WRONG_APP_DATA; | |
316 | } |
|
316 | } | |
317 | else |
|
317 | else | |
@@ -337,8 +337,8 int set_sy_lfr_n_asm_p( ccsdsTelecommand | |||||
337 | unsigned char msb; |
|
337 | unsigned char msb; | |
338 | unsigned char lsb; |
|
338 | unsigned char lsb; | |
339 |
|
339 | |||
340 |
msb = TC->dataAndCRC[ |
|
340 | msb = TC->dataAndCRC[ DATAFIELD_POS_SY_LFR_N_ASM_P ]; | |
341 |
lsb = TC->dataAndCRC[ |
|
341 | lsb = TC->dataAndCRC[ DATAFIELD_POS_SY_LFR_N_ASM_P+1 ]; | |
342 |
|
342 | |||
343 | parameter_dump_packet.sy_lfr_n_asm_p[0] = msb; |
|
343 | parameter_dump_packet.sy_lfr_n_asm_p[0] = msb; | |
344 | parameter_dump_packet.sy_lfr_n_asm_p[1] = lsb; |
|
344 | parameter_dump_packet.sy_lfr_n_asm_p[1] = lsb; | |
@@ -360,7 +360,7 int set_sy_lfr_n_bp_p0( ccsdsTelecommand | |||||
360 |
|
360 | |||
361 | status = LFR_SUCCESSFUL; |
|
361 | status = LFR_SUCCESSFUL; | |
362 |
|
362 | |||
363 |
parameter_dump_packet.sy_lfr_n_bp_p0 = TC->dataAndCRC[ |
|
363 | parameter_dump_packet.sy_lfr_n_bp_p0 = TC->dataAndCRC[ DATAFIELD_POS_SY_LFR_N_BP_P0 ]; | |
364 |
|
364 | |||
365 | return status; |
|
365 | return status; | |
366 | } |
|
366 | } | |
@@ -378,7 +378,7 int set_sy_lfr_n_bp_p1(ccsdsTelecommandP | |||||
378 |
|
378 | |||
379 | status = LFR_SUCCESSFUL; |
|
379 | status = LFR_SUCCESSFUL; | |
380 |
|
380 | |||
381 |
parameter_dump_packet.sy_lfr_n_bp_p1 = TC->dataAndCRC[ |
|
381 | parameter_dump_packet.sy_lfr_n_bp_p1 = TC->dataAndCRC[ DATAFIELD_POS_SY_LFR_N_BP_P1 ]; | |
382 |
|
382 | |||
383 | return status; |
|
383 | return status; | |
384 | } |
|
384 | } | |
@@ -396,7 +396,7 int set_sy_lfr_n_cwf_long_f3(ccsdsTeleco | |||||
396 |
|
396 | |||
397 | status = LFR_SUCCESSFUL; |
|
397 | status = LFR_SUCCESSFUL; | |
398 |
|
398 | |||
399 |
parameter_dump_packet.sy_lfr_n_cwf_long_f3 = TC->dataAndCRC[ |
|
399 | parameter_dump_packet.sy_lfr_n_cwf_long_f3 = TC->dataAndCRC[ DATAFIELD_POS_SY_LFR_N_CWF_LONG_F3 ]; | |
400 |
|
400 | |||
401 | return status; |
|
401 | return status; | |
402 | } |
|
402 | } |
@@ -748,12 +748,12 int send_waveform_SWF( volatile int *wav | |||||
748 | // SET PACKET TIME |
|
748 | // SET PACKET TIME | |
749 | compute_acquisition_time( coarseTime, fineTime, sid, i, headerSWF[ i ].acquisitionTime ); |
|
749 | compute_acquisition_time( coarseTime, fineTime, sid, i, headerSWF[ i ].acquisitionTime ); | |
750 | // |
|
750 | // | |
751 | headerSWF[ i ].time[0] = (unsigned char) (time_management_regs->coarse_time>>24); |
|
751 | headerSWF[ i ].time[0] = headerSWF[ i ].acquisitionTime[0]; | |
752 | headerSWF[ i ].time[1] = (unsigned char) (time_management_regs->coarse_time>>16); |
|
752 | headerSWF[ i ].time[1] = headerSWF[ i ].acquisitionTime[1]; | |
753 | headerSWF[ i ].time[2] = (unsigned char) (time_management_regs->coarse_time>>8); |
|
753 | headerSWF[ i ].time[2] = headerSWF[ i ].acquisitionTime[2]; | |
754 | headerSWF[ i ].time[3] = (unsigned char) (time_management_regs->coarse_time); |
|
754 | headerSWF[ i ].time[3] = headerSWF[ i ].acquisitionTime[3]; | |
755 | headerSWF[ i ].time[4] = (unsigned char) (time_management_regs->fine_time>>8); |
|
755 | headerSWF[ i ].time[4] = headerSWF[ i ].acquisitionTime[4]; | |
756 | headerSWF[ i ].time[5] = (unsigned char) (time_management_regs->fine_time); |
|
756 | headerSWF[ i ].time[5] = headerSWF[ i ].acquisitionTime[5]; | |
757 | // SEND PACKET |
|
757 | // SEND PACKET | |
758 | status = rtems_message_queue_send( queue_id, &spw_ioctl_send_SWF, ACTION_MSG_SPW_IOCTL_SEND_SIZE); |
|
758 | status = rtems_message_queue_send( queue_id, &spw_ioctl_send_SWF, ACTION_MSG_SPW_IOCTL_SEND_SIZE); | |
759 | if (status != RTEMS_SUCCESSFUL) { |
|
759 | if (status != RTEMS_SUCCESSFUL) { | |
@@ -807,12 +807,12 int send_waveform_CWF(volatile int *wave | |||||
807 | // SET PACKET TIME |
|
807 | // SET PACKET TIME | |
808 | compute_acquisition_time( coarseTime, fineTime, sid, i, headerCWF[ i ].acquisitionTime); |
|
808 | compute_acquisition_time( coarseTime, fineTime, sid, i, headerCWF[ i ].acquisitionTime); | |
809 | // |
|
809 | // | |
810 | headerCWF[ i ].time[0] = (unsigned char) (time_management_regs->coarse_time>>24); |
|
810 | headerCWF[ i ].time[0] = headerCWF[ i ].acquisitionTime[0]; | |
811 | headerCWF[ i ].time[1] = (unsigned char) (time_management_regs->coarse_time>>16); |
|
811 | headerCWF[ i ].time[1] = headerCWF[ i ].acquisitionTime[1]; | |
812 | headerCWF[ i ].time[2] = (unsigned char) (time_management_regs->coarse_time>>8); |
|
812 | headerCWF[ i ].time[2] = headerCWF[ i ].acquisitionTime[2]; | |
813 | headerCWF[ i ].time[3] = (unsigned char) (time_management_regs->coarse_time); |
|
813 | headerCWF[ i ].time[3] = headerCWF[ i ].acquisitionTime[3]; | |
814 | headerCWF[ i ].time[4] = (unsigned char) (time_management_regs->fine_time>>8); |
|
814 | headerCWF[ i ].time[4] = headerCWF[ i ].acquisitionTime[4]; | |
815 | headerCWF[ i ].time[5] = (unsigned char) (time_management_regs->fine_time); |
|
815 | headerCWF[ i ].time[5] = headerCWF[ i ].acquisitionTime[5]; | |
816 | // SEND PACKET |
|
816 | // SEND PACKET | |
817 | if (sid == SID_NORM_CWF_LONG_F3) |
|
817 | if (sid == SID_NORM_CWF_LONG_F3) | |
818 | { |
|
818 | { | |
@@ -892,12 +892,12 int send_waveform_CWF3_light(volatile in | |||||
892 | // SET PACKET TIME |
|
892 | // SET PACKET TIME | |
893 | compute_acquisition_time( coarseTime, fineTime, SID_NORM_CWF_F3, i, headerCWF[ i ].acquisitionTime ); |
|
893 | compute_acquisition_time( coarseTime, fineTime, SID_NORM_CWF_F3, i, headerCWF[ i ].acquisitionTime ); | |
894 | // |
|
894 | // | |
895 | headerCWF[ i ].time[0] = (unsigned char) (time_management_regs->coarse_time>>24); |
|
895 | headerCWF[ i ].time[0] = headerCWF[ i ].acquisitionTime[0]; | |
896 | headerCWF[ i ].time[1] = (unsigned char) (time_management_regs->coarse_time>>16); |
|
896 | headerCWF[ i ].time[1] = headerCWF[ i ].acquisitionTime[1]; | |
897 | headerCWF[ i ].time[2] = (unsigned char) (time_management_regs->coarse_time>>8); |
|
897 | headerCWF[ i ].time[2] = headerCWF[ i ].acquisitionTime[2]; | |
898 | headerCWF[ i ].time[3] = (unsigned char) (time_management_regs->coarse_time); |
|
898 | headerCWF[ i ].time[3] = headerCWF[ i ].acquisitionTime[3]; | |
899 | headerCWF[ i ].time[4] = (unsigned char) (time_management_regs->fine_time>>8); |
|
899 | headerCWF[ i ].time[4] = headerCWF[ i ].acquisitionTime[4]; | |
900 | headerCWF[ i ].time[5] = (unsigned char) (time_management_regs->fine_time); |
|
900 | headerCWF[ i ].time[5] = headerCWF[ i ].acquisitionTime[5]; | |
901 | // SEND PACKET |
|
901 | // SEND PACKET | |
902 | status = rtems_message_queue_send( queue_id, &spw_ioctl_send_CWF, sizeof(spw_ioctl_send_CWF)); |
|
902 | status = rtems_message_queue_send( queue_id, &spw_ioctl_send_CWF, sizeof(spw_ioctl_send_CWF)); | |
903 | if (status != RTEMS_SUCCESSFUL) { |
|
903 | if (status != RTEMS_SUCCESSFUL) { |
General Comments 0
You need to be logged in to leave comments.
Login now