@@ -1,6 +1,6 | |||
|
1 | 1 | ############################################################################# |
|
2 | # Makefile for building: bin/fsw | |
|
3 |
# Generated by qmake (2.01a) (Qt 4.8.4) on: Fri Jul |
|
|
2 | # Makefile for building: bin/fsw-gsa | |
|
3 | # Generated by qmake (2.01a) (Qt 4.8.4) on: Fri Jul 12 07:42:51 2013 | |
|
4 | 4 | # Project: fsw-qt.pro |
|
5 | 5 | # Template: app |
|
6 | 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 | 11 | CC = sparc-rtems-gcc |
|
12 | 12 | CXX = sparc-rtems-g++ |
|
13 |
DEFINES = -DSW_VERSION_N1=0 -DSW_VERSION_N2=0 -DSW_VERSION_N3=0 -DSW_VERSION_N4= |
|
|
13 | DEFINES = -DSW_VERSION_N1=0 -DSW_VERSION_N2=0 -DSW_VERSION_N3=0 -DSW_VERSION_N4=7 -DPRINT_MESSAGES_ON_CONSOLE -DGSA | |
|
14 | 14 | CFLAGS = -pipe -O3 -Wall $(DEFINES) |
|
15 | 15 | CXXFLAGS = -pipe -O3 -Wall $(DEFINES) |
|
16 | 16 | INCPATH = -I/usr/lib64/qt4/mkspecs/linux-g++ -I. -I../src -I../header |
@@ -78,9 +78,9 DIST = /usr/lib64/qt4/mkspecs/c | |||
|
78 | 78 | /usr/lib64/qt4/mkspecs/features/lex.prf \ |
|
79 | 79 | /usr/lib64/qt4/mkspecs/features/include_source_dir.prf \ |
|
80 | 80 | fsw-qt.pro |
|
81 | QMAKE_TARGET = fsw | |
|
81 | QMAKE_TARGET = fsw-gsa | |
|
82 | 82 | DESTDIR = bin/ |
|
83 | TARGET = bin/fsw | |
|
83 | TARGET = bin/fsw-gsa | |
|
84 | 84 | |
|
85 | 85 | first: all |
|
86 | 86 | ####### Implicit rules |
@@ -159,8 +159,8 qmake: FORCE | |||
|
159 | 159 | @$(QMAKE) -spec /usr/lib64/qt4/mkspecs/linux-g++ -o Makefile fsw-qt.pro |
|
160 | 160 | |
|
161 | 161 | dist: |
|
162 | @$(CHK_DIR_EXISTS) obj/fsw1.0.0 || $(MKDIR) obj/fsw1.0.0 | |
|
163 | $(COPY_FILE) --parents $(SOURCES) $(DIST) obj/fsw1.0.0/ && (cd `dirname obj/fsw1.0.0` && $(TAR) fsw1.0.0.tar fsw1.0.0 && $(COMPRESS) fsw1.0.0.tar) && $(MOVE) `dirname obj/fsw1.0.0`/fsw1.0.0.tar.gz . && $(DEL_FILE) -r obj/fsw1.0.0 | |
|
162 | @$(CHK_DIR_EXISTS) obj/fsw-gsa1.0.0 || $(MKDIR) obj/fsw-gsa1.0.0 | |
|
163 | $(COPY_FILE) --parents $(SOURCES) $(DIST) obj/fsw-gsa1.0.0/ && (cd `dirname obj/fsw-gsa1.0.0` && $(TAR) fsw-gsa1.0.0.tar fsw-gsa1.0.0 && $(COMPRESS) fsw-gsa1.0.0.tar) && $(MOVE) `dirname obj/fsw-gsa1.0.0`/fsw-gsa1.0.0.tar.gz . && $(DEL_FILE) -r obj/fsw-gsa1.0.0 | |
|
164 | 164 | |
|
165 | 165 | |
|
166 | 166 | clean:compiler_clean |
|
1 | NO CONTENT: modified file, binary diff hidden |
|
1 | NO CONTENT: modified file, binary diff hidden |
@@ -7,11 +7,11 CONFIG -= qt | |||
|
7 | 7 | include(./sparc.pri) |
|
8 | 8 | |
|
9 | 9 | # flight software version |
|
10 |
SWVERSION=-0- |
|
|
10 | SWVERSION=-0-7 | |
|
11 | 11 | DEFINES += SW_VERSION_N1=0 |
|
12 | 12 | DEFINES += SW_VERSION_N2=0 |
|
13 | 13 | DEFINES += SW_VERSION_N3=0 |
|
14 |
DEFINES += SW_VERSION_N4= |
|
|
14 | DEFINES += SW_VERSION_N4=7 | |
|
15 | 15 | |
|
16 | 16 | contains( CONFIG, verbose ) { |
|
17 | 17 | DEFINES += PRINT_MESSAGES_ON_CONSOLE |
@@ -1,6 +1,6 | |||
|
1 | 1 | <?xml version="1.0" encoding="UTF-8"?> |
|
2 | 2 | <!DOCTYPE QtCreatorProject> |
|
3 |
<!-- Written by Qt Creator 2.4.1, 2013-07- |
|
|
3 | <!-- Written by Qt Creator 2.4.1, 2013-07-12T07:17:03. --> | |
|
4 | 4 | <qtcreator> |
|
5 | 5 | <data> |
|
6 | 6 | <variable>ProjectExplorer.Project.ActiveTarget</variable> |
@@ -56,7 +56,7 | |||
|
56 | 56 | <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value> |
|
57 | 57 | <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value> |
|
58 | 58 | <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0"> |
|
59 |
<value type="QString" key="ProjectExplorer.BuildCOnfiguration.ToolChain">ProjectExplorer.ToolChain.Gcc:/usr/ |
|
|
59 | <value type="QString" key="ProjectExplorer.BuildCOnfiguration.ToolChain">ProjectExplorer.ToolChain.Gcc:/usr/lib64/ccache/g++.x86-linux-generic-elf-64bit./usr/bin/gdb</value> | |
|
60 | 60 | <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0"> |
|
61 | 61 | <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0"> |
|
62 | 62 | <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value> |
@@ -106,7 +106,7 | |||
|
106 | 106 | <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">false</value> |
|
107 | 107 | </valuemap> |
|
108 | 108 | <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1"> |
|
109 |
<value type="QString" key="ProjectExplorer.BuildCOnfiguration.ToolChain">ProjectExplorer.ToolChain.Gcc:/usr/ |
|
|
109 | <value type="QString" key="ProjectExplorer.BuildCOnfiguration.ToolChain">ProjectExplorer.ToolChain.Gcc:/usr/lib64/ccache/g++.x86-linux-generic-elf-64bit./usr/bin/gdb</value> | |
|
110 | 110 | <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0"> |
|
111 | 111 | <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0"> |
|
112 | 112 | <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value> |
@@ -1,3 +1,4 | |||
|
1 | ||
|
1 | 2 | #ifndef CCSDS_H_INCLUDED |
|
2 | 3 | #define CCSDS_H_INCLUDED |
|
3 | 4 | |
@@ -11,19 +12,25 | |||
|
11 | 12 | #define CCSDS_PACKET_CATEGORY 12 |
|
12 | 13 | #define CCSDS_NODE_ADDRESS 0xfe |
|
13 | 14 | |
|
14 |
// PACKET ID |
|
|
15 | // PACKET ID | |
|
15 | 16 | #define TM_PACKET_ID_TC_EXE 0x0cc1 // PID 76 CAT 1 |
|
16 | 17 | #define TM_PACKET_ID_HK 0x0cc4 // PID 76 CAT 4 |
|
17 | 18 | #define TM_PACKET_ID_PARAMETER_DUMP 0x0cc9 // PID 76 CAT 9 |
|
18 | 19 | #define TM_PACKET_ID_SCIENCE_NORMAL 0x0ccc // PID 76 CAT 12 |
|
19 | 20 | #define TM_PACKET_ID_SCIENCE_BURST_SBM1_SBM2 0x0cfc // PID 79 CAT 12 |
|
20 | 21 | |
|
22 | // PACKET SEQUENCE CONTROL | |
|
23 | #define TM_PACKET_SEQ_CTRL_CONTINUATION 0 | |
|
24 | #define TM_PACKET_SEQ_CTRL_FIRST 1 | |
|
25 | #define TM_PACKET_SEQ_CTRL_LAST 2 | |
|
26 | #define TM_PACKET_SEQ_CTRL_STANDALONE 3 | |
|
27 | ||
|
21 | 28 | // FAILURE CODES |
|
22 | 29 | #define FAILURE_CODE_INCONSISTENT 5 // 0x00 0x05 |
|
23 |
#define FAILURE_CODE_NOT_EXECUTABLE 4 |
|
|
24 |
#define FAILURE_CODE_NOT_IMPLEMENTED 4 |
|
|
25 |
#define FAILURE_CODE_ERROR 4 |
|
|
26 |
#define FAILURE_CODE_CORRUPTED 4 |
|
|
30 | #define FAILURE_CODE_NOT_EXECUTABLE 42000 // 0xa4 0x10 | |
|
31 | #define FAILURE_CODE_NOT_IMPLEMENTED 42002 // 0xa4 0x12 | |
|
32 | #define FAILURE_CODE_ERROR 42003 // 0xa4 0x13 | |
|
33 | #define FAILURE_CODE_CORRUPTED 42005 // 0xa4 0x15 | |
|
27 | 34 | // |
|
28 | 35 | #define TM_DESTINATION_ID_GROUND 0 |
|
29 | 36 | #define TM_DESTINATION_ID_MISSION_TIMELINE 110 |
@@ -39,6 +46,7 | |||
|
39 | 46 | |
|
40 | 47 | #define CCSDS_DESTINATION_ID 0x01 |
|
41 | 48 | #define CCSDS_PROTOCOLE_ID 0x02 |
|
49 | #define CCSDS_RESERVED 0x00 | |
|
42 | 50 | #define CCSDS_USER_APP 0x00 |
|
43 | 51 | |
|
44 | 52 | #define SIZE_TM_LFR_TC_EXE_NOT_IMPLEMENTED 24 |
@@ -89,23 +97,26 | |||
|
89 | 97 | // TM TYPES |
|
90 | 98 | #define TM_TYPE_TC_EXE 1 |
|
91 | 99 | #define TM_TYPE_HK 3 |
|
100 | #define TM_TYPE_PARAMETER_DUMP 3 | |
|
92 | 101 | #define TM_TYPE_LFR_SCIENCE 21 |
|
93 | 102 | |
|
94 | 103 | // TM SUBTYPES |
|
95 | 104 | #define TM_SUBTYPE_EXE_OK 7 |
|
96 | 105 | #define TM_SUBTYPE_EXE_NOK 8 |
|
97 | 106 | #define TM_SUBTYPE_HK 25 |
|
107 | #define TM_SUBTYPE_PARAMETER_DUMP 25 | |
|
98 | 108 | #define TM_SUBTYPE_SCIENCE 3 |
|
99 | 109 | #define TM_SUBTYPE_LFR_SCIENCE 3 |
|
100 | 110 | |
|
101 | 111 | // TM SID |
|
102 | 112 | #define SID_DEFAULT 0 |
|
113 | #define SID_EXE_INC 5 | |
|
114 | #define SID_NOT_EXE 42000 // 0xa4 0x10 | |
|
115 | #define SID_NOT_IMP 42002 // 0xa4 0x12 | |
|
116 | #define SID_EXE_ERR 42003 // 0xa4 0x13 | |
|
117 | #define SID_EXE_CORR 42005 // 0xa4 0x15 | |
|
103 | 118 | #define SID_HK 1 |
|
104 |
#define SID_ |
|
|
105 | #define SID_NOT_EXE 40000 | |
|
106 | #define SID_NOT_IMP 40002 | |
|
107 | #define SID_EXE_ERR 40003 | |
|
108 | #define SID_EXE_CORR 40005 | |
|
119 | #define SID_PARAMETER_DUMP 10 | |
|
109 | 120 | |
|
110 | 121 | #define SID_NORM_SWF_F0 3 |
|
111 | 122 | #define SID_NORM_SWF_F1 4 |
@@ -137,17 +148,20 | |||
|
137 | 148 | // LENGTH (BYTES) |
|
138 | 149 | #define LENGTH_TM_LFR_TC_EXE_MAX 32 |
|
139 | 150 | #define LENGTH_TM_LFR_HK 126 |
|
151 | ||
|
140 | 152 | // PACKET_LENGTH |
|
141 | #define PACKET_LENGTH_TC_EXE_SUCCESS 20 - CCSDS_TC_TM_PACKET_OFFSET | |
|
142 | #define PACKET_LENGTH_TC_EXE_INCONSISTENT 26 - CCSDS_TC_TM_PACKET_OFFSET | |
|
143 | #define PACKET_LENGTH_TC_EXE_NOT_EXECUTABLE 26 - CCSDS_TC_TM_PACKET_OFFSET | |
|
144 | #define PACKET_LENGTH_TC_EXE_NOT_IMPLEMENTED 24 - CCSDS_TC_TM_PACKET_OFFSET | |
|
145 | #define PACKET_LENGTH_TC_EXE_ERROR 24 - CCSDS_TC_TM_PACKET_OFFSET | |
|
146 | #define PACKET_LENGTH_TC_EXE_CORRUPTED 32 - CCSDS_TC_TM_PACKET_OFFSET | |
|
147 | #define PACKET_LENGTH_HK 126 - CCSDS_TC_TM_PACKET_OFFSET | |
|
148 |
#define PACKET_LENGTH_PARAMETER_DUMP |
|
|
153 | #define PACKET_LENGTH_TC_EXE_SUCCESS (20 - CCSDS_TC_TM_PACKET_OFFSET) | |
|
154 | #define PACKET_LENGTH_TC_EXE_INCONSISTENT (26 - CCSDS_TC_TM_PACKET_OFFSET) | |
|
155 | #define PACKET_LENGTH_TC_EXE_NOT_EXECUTABLE (26 - CCSDS_TC_TM_PACKET_OFFSET) | |
|
156 | #define PACKET_LENGTH_TC_EXE_NOT_IMPLEMENTED (24 - CCSDS_TC_TM_PACKET_OFFSET) | |
|
157 | #define PACKET_LENGTH_TC_EXE_ERROR (24 - CCSDS_TC_TM_PACKET_OFFSET) | |
|
158 | #define PACKET_LENGTH_TC_EXE_CORRUPTED (32 - CCSDS_TC_TM_PACKET_OFFSET) | |
|
159 | #define PACKET_LENGTH_HK (126 - CCSDS_TC_TM_PACKET_OFFSET) | |
|
160 | #define PACKET_LENGTH_PARAMETER_DUMP (34 - CCSDS_TC_TM_PACKET_OFFSET) | |
|
149 | 161 | #define TM_HEADER_LEN 16 |
|
150 | 162 | |
|
163 | #define SPARE1_PUSVERSION_SPARE2 0x10 | |
|
164 | ||
|
151 | 165 | #define LEN_TM_LFR_HK 126 + 4 |
|
152 | 166 | #define LEN_TM_LFR_TC_EXE_NOT_IMP 24 +4 |
|
153 | 167 | |
@@ -366,4 +380,52 struct Packet_TM_LFR_HK_str | |||
|
366 | 380 | }; |
|
367 | 381 | typedef struct Packet_TM_LFR_HK_str Packet_TM_LFR_HK_t; |
|
368 | 382 | |
|
383 | struct Packet_TM_LFR_PARAMETER_DUMP_str | |
|
384 | { | |
|
385 | volatile unsigned char targetLogicalAddress; | |
|
386 | volatile unsigned char protocolIdentifier; | |
|
387 | volatile unsigned char reserved; | |
|
388 | volatile unsigned char userApplication; | |
|
389 | volatile unsigned char packetID[2]; | |
|
390 | volatile unsigned char packetSequenceControl[2]; | |
|
391 | volatile unsigned char packetLength[2]; | |
|
392 | // DATA FIELD HEADER | |
|
393 | volatile unsigned char spare1_pusVersion_spare2; | |
|
394 | volatile unsigned char serviceType; | |
|
395 | volatile unsigned char serviceSubType; | |
|
396 | volatile unsigned char destinationID; | |
|
397 | volatile unsigned char time[6]; | |
|
398 | volatile unsigned char sid; | |
|
399 | ||
|
400 | //****************** | |
|
401 | // COMMON PARAMETERS | |
|
402 | volatile unsigned char unused0; | |
|
403 | volatile unsigned char bw_sp0_sp1_r0_r1; | |
|
404 | ||
|
405 | //****************** | |
|
406 | // NORMAL PARAMETERS | |
|
407 | volatile unsigned char sy_lfr_n_swf_l[2]; | |
|
408 | volatile unsigned char sy_lfr_n_swf_p[2]; | |
|
409 | volatile unsigned char sy_lfr_n_asm_p[2]; | |
|
410 | volatile unsigned char sy_lfr_n_bp_p0; | |
|
411 | volatile unsigned char sy_lfr_n_bp_p1; | |
|
412 | ||
|
413 | //***************** | |
|
414 | // BURST PARAMETERS | |
|
415 | volatile unsigned char sy_lfr_b_bp_p0; | |
|
416 | volatile unsigned char sy_lfr_b_bp_p1; | |
|
417 | ||
|
418 | //**************** | |
|
419 | // SBM1 PARAMETERS | |
|
420 | volatile unsigned char sy_lfr_s1_bp_p0; | |
|
421 | volatile unsigned char sy_lfr_s1_bp_p1; | |
|
422 | ||
|
423 | //**************** | |
|
424 | // SBM2 PARAMETERS | |
|
425 | volatile unsigned char sy_lfr_s2_bp_p0; | |
|
426 | volatile unsigned char sy_lfr_s2_bp_p1; | |
|
427 | }; | |
|
428 | typedef struct Packet_TM_LFR_PARAMETER_DUMP_str Packet_TM_LFR_PARAMETER_DUMP_t; | |
|
429 | ||
|
430 | ||
|
369 | 431 | #endif // CCSDS_H_INCLUDED |
@@ -29,11 +29,7 void timecode_irq_handler(void *pDev, vo | |||
|
29 | 29 | |
|
30 | 30 | // MODE PARAMETERS |
|
31 | 31 | extern struct param_local_str param_local; |
|
32 | extern struct param_common_str param_common; | |
|
33 | extern struct param_norm_str param_norm; | |
|
34 | extern struct param_burst_str param_burst; | |
|
35 | extern struct param_sbm1_str param_sbm1; | |
|
36 | extern struct param_sbm2_str param_sbm2; | |
|
32 | extern Packet_TM_LFR_PARAMETER_DUMP_t parameter_dump_packet; | |
|
37 | 33 | extern Packet_TM_LFR_HK_t housekeeping_packet; |
|
38 | 34 | extern unsigned short sequenceCounters[SEQ_CNT_NB_PID][SEQ_CNT_NB_CAT][SEQ_CNT_NB_DEST_ID]; |
|
39 | 35 | |
@@ -49,7 +45,8 int start_all_tasks( void ); | |||
|
49 | 45 | int create_message_queue( void ); |
|
50 | 46 | |
|
51 | 47 | // OTHER functions |
|
52 |
void init_ |
|
|
48 | void init_parameter_dump( void ); | |
|
49 | void init_local_mode_parameters( void ); | |
|
53 | 50 | void init_housekeeping_parameters( void ); |
|
54 | 51 | |
|
55 | 52 | int spacewire_configure_link( void ); |
@@ -24,6 +24,9 | |||
|
24 | 24 | |
|
25 | 25 | //**************************** |
|
26 | 26 | // LFR DEFAULT MODE PARAMETERS |
|
27 | // COMMON | |
|
28 | #define DEFAULT_SY_LFR_COMMON0 0x00 | |
|
29 | #define DEFAULT_SY_LFR_COMMON1 0x10 // default value 0 0 0 1 0 0 0 0 | |
|
27 | 30 | // NORM |
|
28 | 31 | #define DEFAULT_SY_LFR_N_SWF_L 2048 // nb sample |
|
29 | 32 | #define DEFAULT_SY_LFR_N_SWF_P 16 // sec |
@@ -144,32 +147,4 struct param_local_str{ | |||
|
144 | 147 | unsigned int local_sbm2_nb_cwf_max; |
|
145 | 148 | }; |
|
146 | 149 | |
|
147 | struct param_common_str{ | |
|
148 | unsigned char sy_lfr_common0; | |
|
149 | unsigned char sy_lfr_common1; | |
|
150 | }; | |
|
151 | ||
|
152 | struct param_norm_str{ | |
|
153 | unsigned int sy_lfr_n_swf_l; // length of the snapshots | |
|
154 | unsigned int sy_lfr_n_swf_p; // time between two snapshots | |
|
155 | unsigned int sy_lfr_n_asm_p; // time between two asm | |
|
156 | unsigned char sy_lfr_n_bp_p0; // timebetween two products BP1 set | |
|
157 | unsigned char sy_lfr_n_bp_p1; // time between two products BP2 set | |
|
158 | }; | |
|
159 | ||
|
160 | struct param_burst_str{ | |
|
161 | unsigned char sy_lfr_b_bp_p0; // timebetween two products BP1 set | |
|
162 | unsigned char sy_lfr_b_bp_p1; // time between two products BP2 set | |
|
163 | }; | |
|
164 | ||
|
165 | struct param_sbm1_str{ | |
|
166 | unsigned char sy_lfr_s1_bp_p0; // timebetween two products BP1 set | |
|
167 | unsigned char sy_lfr_s1_bp_p1; // time between two products BP2 set | |
|
168 | }; | |
|
169 | ||
|
170 | struct param_sbm2_str{ | |
|
171 | unsigned char sy_lfr_s2_bp_p0; // timebetween two products BP1 set | |
|
172 | unsigned char sy_lfr_s2_bp_p1; // time between two products BP2 set | |
|
173 | }; | |
|
174 | ||
|
175 | 150 | #endif // FSW_RTEMS_CONFIG_H_INCLUDED |
@@ -15,10 +15,9 extern rtems_name misc_name[ ]; | |||
|
15 | 15 | extern rtems_name misc_id[ ]; |
|
16 | 16 | extern rtems_id Task_id[ ]; // array of task ids |
|
17 | 17 | // MODE PARAMETERS |
|
18 | extern struct param_common_str param_common; | |
|
19 | extern struct param_norm_str param_norm; | |
|
20 | 18 | extern struct param_sbm1_str param_sbm1; |
|
21 | 19 | extern struct param_sbm2_str param_sbm2; |
|
20 | extern Packet_TM_LFR_PARAMETER_DUMP_t parameter_dump_packet; | |
|
22 | 21 | extern Packet_TM_LFR_HK_t housekeeping_packet; |
|
23 | 22 | extern time_management_regs_t *time_management_regs; |
|
24 | 23 | extern waveform_picker_regs_t *waveform_picker_regs; |
@@ -73,6 +72,7 int action_load_norm(ccsdsTelecommandPac | |||
|
73 | 72 | int action_load_burst(ccsdsTelecommandPacket_t *TC); |
|
74 | 73 | int action_load_sbm1(ccsdsTelecommandPacket_t *TC); |
|
75 | 74 | int action_load_sbm2(ccsdsTelecommandPacket_t *TC); |
|
75 | int action_dump(ccsdsTelecommandPacket_t *TC); | |
|
76 | 76 | // other functions |
|
77 | 77 | void update_last_TC_exe(ccsdsTelecommandPacket_t *TC); |
|
78 | 78 | void update_last_TC_rej(ccsdsTelecommandPacket_t *TC); |
@@ -80,6 +80,7 void close_action(ccsdsTelecommandPacket | |||
|
80 | 80 | int send_tm_lfr_tc_exe_success(ccsdsTelecommandPacket_t *TC); |
|
81 | 81 | int send_tm_lfr_tc_exe_not_executable(ccsdsTelecommandPacket_t *TC); |
|
82 | 82 | int send_tm_lfr_tc_exe_not_implemented(ccsdsTelecommandPacket_t *TC); |
|
83 | int send_tm_lfr_tc_exe_error(ccsdsTelecommandPacket_t *TC); | |
|
83 | 84 | |
|
84 | 85 | #endif // TC_HANDLER_H_INCLUDED |
|
85 | 86 |
@@ -40,12 +40,8 float averaged_spec_mat_f0[ TOTAL_SIZE_S | |||
|
40 | 40 | float compressed_spec_mat_f0[ TOTAL_SIZE_COMPRESSED_MATRIX_f0 ]; |
|
41 | 41 | |
|
42 | 42 | // MODE PARAMETERS |
|
43 | Packet_TM_LFR_PARAMETER_DUMP_t parameter_dump_packet; | |
|
43 | 44 | struct param_local_str param_local; |
|
44 | struct param_common_str param_common; | |
|
45 | struct param_norm_str param_norm; | |
|
46 | struct param_burst_str param_burst; | |
|
47 | struct param_sbm1_str param_sbm1; | |
|
48 | struct param_sbm2_str param_sbm2; | |
|
49 | 45 | |
|
50 | 46 | // HK PACKETS |
|
51 | 47 | Packet_TM_LFR_HK_t housekeeping_packet; |
@@ -67,7 +67,8 rtems_task Init( rtems_task_argument ign | |||
|
67 | 67 | set_apbuart_scaler_reload_register(REGS_ADDR_APBUART, APBUART_SCALER_RELOAD_VALUE); |
|
68 | 68 | |
|
69 | 69 | initLookUpTableForCRC(); // in tc_handler.h |
|
70 |
init_ |
|
|
70 | init_parameter_dump(); | |
|
71 | init_local_mode_parameters(); | |
|
71 | 72 | init_housekeeping_parameters(); |
|
72 | 73 | create_message_queue(); |
|
73 | 74 | |
@@ -179,36 +180,76 rtems_task spiq_task(rtems_task_argument | |||
|
179 | 180 | } |
|
180 | 181 | } |
|
181 | 182 | |
|
182 |
void init_ |
|
|
183 | void init_parameter_dump(void) | |
|
183 | 184 | { |
|
184 | // COMMON PARAMETERS | |
|
185 | param_common.sy_lfr_common0 = 0x00; | |
|
186 | param_common.sy_lfr_common1 = 0x10; // default value 0 0 0 1 0 0 0 0 | |
|
185 | parameter_dump_packet.targetLogicalAddress = CCSDS_DESTINATION_ID; | |
|
186 | parameter_dump_packet.protocolIdentifier = CCSDS_PROTOCOLE_ID; | |
|
187 | parameter_dump_packet.reserved = CCSDS_RESERVED; | |
|
188 | parameter_dump_packet.userApplication = CCSDS_USER_APP; | |
|
189 | parameter_dump_packet.packetID[0] = (unsigned char) (TM_PACKET_ID_PARAMETER_DUMP >> 8); | |
|
190 | parameter_dump_packet.packetID[1] = (unsigned char) TM_PACKET_ID_PARAMETER_DUMP; | |
|
191 | parameter_dump_packet.packetSequenceControl[0] = (unsigned char) (TM_PACKET_SEQ_CTRL_STANDALONE << 6); | |
|
192 | parameter_dump_packet.packetSequenceControl[1] = 0x00; | |
|
193 | parameter_dump_packet.packetLength[0] = (unsigned char) (PACKET_LENGTH_PARAMETER_DUMP >> 8); | |
|
194 | parameter_dump_packet.packetLength[1] = (unsigned char) PACKET_LENGTH_PARAMETER_DUMP; | |
|
195 | // DATA FIELD HEADER | |
|
196 | parameter_dump_packet.spare1_pusVersion_spare2 = SPARE1_PUSVERSION_SPARE2; | |
|
197 | parameter_dump_packet.serviceType = TM_TYPE_PARAMETER_DUMP; | |
|
198 | parameter_dump_packet.serviceSubType = TM_SUBTYPE_PARAMETER_DUMP; | |
|
199 | parameter_dump_packet.destinationID = TM_DESTINATION_ID_GROUND; | |
|
200 | parameter_dump_packet.time[0] = (unsigned char) (time_management_regs->coarse_time>>24); | |
|
201 | parameter_dump_packet.time[1] = (unsigned char) (time_management_regs->coarse_time>>16); | |
|
202 | parameter_dump_packet.time[2] = (unsigned char) (time_management_regs->coarse_time>>8); | |
|
203 | parameter_dump_packet.time[3] = (unsigned char) (time_management_regs->coarse_time); | |
|
204 | parameter_dump_packet.time[4] = (unsigned char) (time_management_regs->fine_time>>8); | |
|
205 | parameter_dump_packet.time[5] = (unsigned char) (time_management_regs->fine_time); | |
|
206 | parameter_dump_packet.sid = SID_PARAMETER_DUMP; | |
|
187 | 207 | |
|
188 | // NORMAL MODE | |
|
189 | param_norm.sy_lfr_n_swf_l = DEFAULT_SY_LFR_N_SWF_L; // nb sample | |
|
190 | param_norm.sy_lfr_n_swf_p = DEFAULT_SY_LFR_N_SWF_P; // sec | |
|
191 | param_norm.sy_lfr_n_asm_p = DEFAULT_SY_LFR_N_ASM_P; // sec | |
|
192 | param_norm.sy_lfr_n_bp_p0 = DEFAULT_SY_LFR_N_BP_P0; // sec | |
|
193 | param_norm.sy_lfr_n_bp_p1 = DEFAULT_SY_LFR_N_BP_P1; // sec | |
|
208 | //****************** | |
|
209 | // COMMON PARAMETERS | |
|
210 | parameter_dump_packet.unused0 = DEFAULT_SY_LFR_COMMON0; | |
|
211 | parameter_dump_packet.bw_sp0_sp1_r0_r1 = DEFAULT_SY_LFR_COMMON1; | |
|
194 | 212 | |
|
195 | // BURST MODE | |
|
196 | param_burst.sy_lfr_b_bp_p0 = DEFAULT_SY_LFR_B_BP_P0; // sec | |
|
197 | param_burst.sy_lfr_b_bp_p1 = DEFAULT_SY_LFR_B_BP_P1; // sec | |
|
213 | //****************** | |
|
214 | // NORMAL PARAMETERS | |
|
215 | parameter_dump_packet.sy_lfr_n_swf_l[0] = (unsigned char) (DEFAULT_SY_LFR_N_SWF_L >> 8); | |
|
216 | parameter_dump_packet.sy_lfr_n_swf_l[1] = (unsigned char) DEFAULT_SY_LFR_N_SWF_L; | |
|
217 | parameter_dump_packet.sy_lfr_n_swf_p[0] = (unsigned char) (DEFAULT_SY_LFR_N_SWF_P >> 8); | |
|
218 | parameter_dump_packet.sy_lfr_n_swf_p[1] = (unsigned char) DEFAULT_SY_LFR_N_SWF_P; | |
|
219 | parameter_dump_packet.sy_lfr_n_asm_p[0] = (unsigned char) (DEFAULT_SY_LFR_N_ASM_P >> 8); | |
|
220 | parameter_dump_packet.sy_lfr_n_asm_p[1] = (unsigned char) DEFAULT_SY_LFR_N_ASM_P; | |
|
221 | parameter_dump_packet.sy_lfr_n_bp_p0 = (unsigned char) DEFAULT_SY_LFR_N_BP_P0; | |
|
222 | parameter_dump_packet.sy_lfr_n_bp_p1 = (unsigned char) DEFAULT_SY_LFR_N_BP_P1; | |
|
198 | 223 | |
|
199 | // SBM1 MODE | |
|
200 | param_sbm1.sy_lfr_s1_bp_p0 = DEFAULT_SY_LFR_S1_BP_P0; // sec | |
|
201 |
param |
|
|
224 | //***************** | |
|
225 | // BURST PARAMETERS | |
|
226 | parameter_dump_packet.sy_lfr_b_bp_p0 = (unsigned char) DEFAULT_SY_LFR_B_BP_P0; | |
|
227 | parameter_dump_packet.sy_lfr_b_bp_p1 = (unsigned char) DEFAULT_SY_LFR_B_BP_P1; | |
|
202 | 228 | |
|
203 | // SBM2 MODE | |
|
204 | param_sbm2.sy_lfr_s2_bp_p0 = DEFAULT_SY_LFR_S2_BP_P0; // sec | |
|
205 |
param |
|
|
229 | //**************** | |
|
230 | // SBM1 PARAMETERS | |
|
231 | parameter_dump_packet.sy_lfr_s1_bp_p0 = (unsigned char) DEFAULT_SY_LFR_S1_BP_P0; | |
|
232 | parameter_dump_packet.sy_lfr_s1_bp_p1 = (unsigned char) DEFAULT_SY_LFR_S1_BP_P0; | |
|
206 | 233 | |
|
234 | //**************** | |
|
235 | // SBM2 PARAMETERS | |
|
236 | parameter_dump_packet.sy_lfr_s2_bp_p0 = (unsigned char) DEFAULT_SY_LFR_S2_BP_P0; | |
|
237 | parameter_dump_packet.sy_lfr_s2_bp_p1 = (unsigned char) DEFAULT_SY_LFR_S2_BP_P0; | |
|
238 | } | |
|
239 | ||
|
240 | void init_local_mode_parameters(void) | |
|
241 | { | |
|
207 | 242 | // LOCAL PARAMETERS |
|
208 | 243 | // (2 snapshots of 2048 points per seconds) * (period of the NORM snashots) |
|
209 |
param_local.local_sbm1_nb_cwf_max = 2 * |
|
|
244 | param_local.local_sbm1_nb_cwf_max = 2 * ( | |
|
245 | parameter_dump_packet.sy_lfr_n_swf_p[0] * 256 | |
|
246 | + parameter_dump_packet.sy_lfr_n_swf_p[1] | |
|
247 | ); | |
|
210 | 248 | // (period of the NORM snashots) / (8 seconds per snapshot at f2 = 256 Hz) |
|
211 |
param_local.local_sbm2_nb_cwf_max = |
|
|
249 | param_local.local_sbm2_nb_cwf_max = ( | |
|
250 | parameter_dump_packet.sy_lfr_n_swf_p[0] * 256 | |
|
251 | + parameter_dump_packet.sy_lfr_n_swf_p[1] | |
|
252 | )/ 8; | |
|
212 | 253 | |
|
213 | 254 | PRINTF1("local_sbm1_nb_cwf_max %d \n", param_local.local_sbm1_nb_cwf_max) |
|
214 | 255 | PRINTF1("local_sbm2_nb_cwf_max %d \n", param_local.local_sbm2_nb_cwf_max) |
@@ -480,7 +480,7 rtems_task actn_task( rtems_task_argumen | |||
|
480 | 480 | break; |
|
481 | 481 | // |
|
482 | 482 | case TC_SUBTYPE_DUMP: |
|
483 |
result = action_d |
|
|
483 | result = action_dump( &TC ); | |
|
484 | 484 | close_action( &TC, result ); |
|
485 | 485 | break; |
|
486 | 486 | // |
@@ -613,10 +613,10 int action_enter(ccsdsTelecommandPacket_ | |||
|
613 | 613 | |
|
614 | 614 | int action_load_comm(ccsdsTelecommandPacket_t *TC) |
|
615 | 615 | { |
|
616 |
param |
|
|
617 | param_common.sy_lfr_common1 = TC->dataAndCRC[1]; | |
|
616 | parameter_dump_packet.unused0 = TC->dataAndCRC[0]; | |
|
617 | parameter_dump_packet.bw_sp0_sp1_r0_r1 = TC->dataAndCRC[1]; | |
|
618 | 618 | |
|
619 |
set_wfp_data_shaping(param |
|
|
619 | set_wfp_data_shaping(parameter_dump_packet.bw_sp0_sp1_r0_r1); | |
|
620 | 620 | |
|
621 | 621 | return LFR_SUCCESSFUL; |
|
622 | 622 | } |
@@ -633,11 +633,18 int action_load_norm(ccsdsTelecommandPac | |||
|
633 | 633 | result = LFR_DEFAULT; |
|
634 | 634 | } |
|
635 | 635 | else { |
|
636 |
param |
|
|
637 |
param |
|
|
638 | param_norm.sy_lfr_n_asm_p = (TC->dataAndCRC[4] * 256) + TC->dataAndCRC[5]; | |
|
639 |
param |
|
|
640 |
param |
|
|
636 | parameter_dump_packet.sy_lfr_n_swf_l[0] = TC->dataAndCRC[0]; | |
|
637 | parameter_dump_packet.sy_lfr_n_swf_l[1] = TC->dataAndCRC[1]; | |
|
638 | ||
|
639 | parameter_dump_packet.sy_lfr_n_swf_p[0] = TC->dataAndCRC[2]; | |
|
640 | parameter_dump_packet.sy_lfr_n_swf_p[1] = TC->dataAndCRC[3]; | |
|
641 | ||
|
642 | parameter_dump_packet.sy_lfr_n_asm_p[0] = TC->dataAndCRC[4]; | |
|
643 | parameter_dump_packet.sy_lfr_n_asm_p[1] = TC->dataAndCRC[5]; | |
|
644 | ||
|
645 | parameter_dump_packet.sy_lfr_n_bp_p0 = TC->dataAndCRC[6]; | |
|
646 | parameter_dump_packet.sy_lfr_n_bp_p1 = TC->dataAndCRC[7]; | |
|
647 | ||
|
641 | 648 | result = LFR_SUCCESSFUL; |
|
642 | 649 | } |
|
643 | 650 | |
@@ -704,6 +711,25 int action_load_sbm2(ccsdsTelecommandPac | |||
|
704 | 711 | return result; |
|
705 | 712 | } |
|
706 | 713 | |
|
714 | int action_dump(ccsdsTelecommandPacket_t *TC) | |
|
715 | { | |
|
716 | int status; | |
|
717 | // send parameter dump packet | |
|
718 | status = write(fdSPW, (char *) ¶meter_dump_packet, | |
|
719 | PACKET_LENGTH_PARAMETER_DUMP + CCSDS_TC_TM_PACKET_OFFSET + 4); | |
|
720 | if (status == -1) | |
|
721 | { | |
|
722 | PRINTF1("in action_dump *** ERR sending packet, code %d", status) | |
|
723 | status = RTEMS_UNSATISFIED; | |
|
724 | } | |
|
725 | else | |
|
726 | { | |
|
727 | status = RTEMS_SUCCESSFUL; | |
|
728 | } | |
|
729 | ||
|
730 | return status; | |
|
731 | } | |
|
732 | ||
|
707 | 733 | int action_updt_info(ccsdsTelecommandPacket_t *TC) { |
|
708 | 734 | unsigned int val; |
|
709 | 735 | int result; |
@@ -994,7 +1020,10 int enter_sbm1_mode(ccsdsTelecommandPack | |||
|
994 | 1020 | } |
|
995 | 1021 | |
|
996 | 1022 | // at the beginning of the mode, the parameter local_sbm1_nb_cwf_max has a specific value |
|
997 |
param_local.local_sbm1_nb_cwf_max = 2 * |
|
|
1023 | param_local.local_sbm1_nb_cwf_max = 2 * ( | |
|
1024 | (parameter_dump_packet.sy_lfr_n_swf_p[0] * 256) | |
|
1025 | + parameter_dump_packet.sy_lfr_n_swf_p[1] | |
|
1026 | )/ 4; | |
|
998 | 1027 | |
|
999 | 1028 | #ifdef GSA |
|
1000 | 1029 | #else |
@@ -1024,7 +1053,10 int enter_sbm2_mode(ccsdsTelecommandPack | |||
|
1024 | 1053 | } |
|
1025 | 1054 | |
|
1026 | 1055 | // at the beginning of the mode, the parameter local_sbm2_nb_cwf_max has a specific value |
|
1027 |
param_local.local_sbm1_nb_cwf_max = |
|
|
1056 | param_local.local_sbm1_nb_cwf_max = ( | |
|
1057 | (parameter_dump_packet.sy_lfr_n_swf_p[0] * 256) | |
|
1058 | + parameter_dump_packet.sy_lfr_n_swf_p[1] | |
|
1059 | ) / 16; | |
|
1028 | 1060 | |
|
1029 | 1061 | #ifdef GSA |
|
1030 | 1062 | #else |
@@ -1141,6 +1173,39 int send_tm_lfr_tc_exe_not_implemented(c | |||
|
1141 | 1173 | return LFR_SUCCESSFUL; |
|
1142 | 1174 | } |
|
1143 | 1175 | |
|
1176 | int send_tm_lfr_tc_exe_error(ccsdsTelecommandPacket_t *TC) | |
|
1177 | { | |
|
1178 | rtems_status_code status; | |
|
1179 | TMHeader_t TM_header; | |
|
1180 | char data[8]; | |
|
1181 | spw_ioctl_pkt_send spw_ioctl_send; | |
|
1182 | ||
|
1183 | TM_build_header( TM_LFR_TC_EXE_ERR, PACKET_LENGTH_TC_EXE_ERROR, | |
|
1184 | &TM_header, | |
|
1185 | TC->sourceID); // TC source ID | |
|
1186 | ||
|
1187 | data[0] = (char) (FAILURE_CODE_ERROR >> 8); | |
|
1188 | data[1] = (char) FAILURE_CODE_ERROR; | |
|
1189 | data[2] = TC->packetID[0]; | |
|
1190 | data[3] = TC->packetID[1]; | |
|
1191 | data[4] = TC->packetSequenceControl[0]; | |
|
1192 | data[5] = TC->packetSequenceControl[1]; | |
|
1193 | data[6] = TC->serviceType; // type of the rejected TC | |
|
1194 | data[7] = TC->serviceSubType; // subtype of the rejected TC | |
|
1195 | ||
|
1196 | // filling the structure for the spacewire transmission | |
|
1197 | spw_ioctl_send.hlen = TM_HEADER_LEN + 4; // + 4 is for the protocole extra header | |
|
1198 | spw_ioctl_send.hdr = (char*) &TM_header; | |
|
1199 | spw_ioctl_send.dlen = 8; | |
|
1200 | spw_ioctl_send.data = data; | |
|
1201 | spw_ioctl_send.options = 0; | |
|
1202 | ||
|
1203 | // SEND DATA | |
|
1204 | status = ioctl( fdSPW, SPACEWIRE_IOCTRL_SEND, &spw_ioctl_send ); | |
|
1205 | ||
|
1206 | return LFR_SUCCESSFUL; | |
|
1207 | } | |
|
1208 | ||
|
1144 | 1209 | void update_last_TC_exe(ccsdsTelecommandPacket_t *TC) |
|
1145 | 1210 | { |
|
1146 | 1211 | housekeeping_packet.hk_lfr_last_exe_tc_id[0] = TC->packetID[0]; |
@@ -555,12 +555,18 void send_waveform_norm(Header_TM_LFR_SC | |||
|
555 | 555 | if (lfrMode == LFR_MODE_SBM1) { |
|
556 | 556 | param_local.local_sbm1_nb_cwf_sent = 0; |
|
557 | 557 | // after the first transmission of the swf at F1, the period is set to local_sbm1_nb_cwf_max |
|
558 |
param_local.local_sbm1_nb_cwf_max = 2 * |
|
|
558 | param_local.local_sbm1_nb_cwf_max = 2 * ( | |
|
559 | ( parameter_dump_packet.sy_lfr_n_swf_p[0] * 256 ) | |
|
560 | + parameter_dump_packet.sy_lfr_n_swf_p[1] | |
|
561 | ); | |
|
559 | 562 | } |
|
560 | 563 | else if (lfrMode == LFR_MODE_SBM2) { |
|
561 | 564 | param_local.local_sbm2_nb_cwf_sent = 0; |
|
562 | 565 | // after the first transmission of the swf at F2, the period is set to local_sbm2_nb_cwf_max |
|
563 |
param_local.local_sbm2_nb_cwf_max = |
|
|
566 | param_local.local_sbm2_nb_cwf_max = ( | |
|
567 | ( parameter_dump_packet.sy_lfr_n_swf_p[0] * 256 ) | |
|
568 | + parameter_dump_packet.sy_lfr_n_swf_p[1] | |
|
569 | )/ 8; | |
|
564 | 570 | } |
|
565 | 571 | else { |
|
566 | 572 | waveform_picker_regs->status = waveform_picker_regs->status & 0x00; |
@@ -663,14 +669,16 void reset_wfp_burst_enable() | |||
|
663 | 669 | |
|
664 | 670 | void reset_wfp_regs() |
|
665 | 671 | { |
|
666 |
set_wfp_data_shaping(param |
|
|
672 | set_wfp_data_shaping(parameter_dump_packet.bw_sp0_sp1_r0_r1); | |
|
667 | 673 | reset_wfp_burst_enable(); |
|
668 | 674 | waveform_picker_regs->addr_data_f0 = (int) (wf_snap_f0); // |
|
669 | 675 | waveform_picker_regs->addr_data_f1 = (int) (wf_snap_f1); // |
|
670 | 676 | waveform_picker_regs->addr_data_f2 = (int) (wf_snap_f2); // |
|
671 | 677 | waveform_picker_regs->addr_data_f3 = (int) (wf_cont_f3); // |
|
672 | 678 | waveform_picker_regs->status = 0x00; // |
|
673 | set_wfp_delta_snapshot( param_norm.sy_lfr_n_swf_p ); // time in seconds between two snapshots | |
|
679 | set_wfp_delta_snapshot( | |
|
680 | ( parameter_dump_packet.sy_lfr_n_swf_p[0]*256) | |
|
681 | + parameter_dump_packet.sy_lfr_n_swf_p[1] ); // time in seconds between two snapshots | |
|
674 | 682 | waveform_picker_regs->delta_f2_f1 = 0xffff; // max 4 bytes |
|
675 | 683 | waveform_picker_regs->delta_f2_f0 = 0x17c00; // max 5 bytes |
|
676 | 684 | waveform_picker_regs->nb_burst_available = 0x180; // max 3 bytes, size of the buffer in burst (1 burst = 16 x 4 octets) |
General Comments 0
You need to be logged in to leave comments.
Login now