##// END OF EJS Templates
Minor modifications to meet Logiscope requirements
paul -
r77:4928e8d9328f VHDLib206
parent child
Show More
@@ -0,0 +1,22
1 #ifndef TM_BYTE_POSITIONS_H
2 #define TM_BYTE_POSITIONS_H
3
4 #define BYTE_POS_CP_LFR_MODE 11
5
6 // TC_LFR_LOAD_COMMON_PAR
7
8 // TC_LFR_LOAD_NORMAL_PAR
9 #define BYTE_POS_SY_LFR_N_SWF_L 0
10 #define BYTE_POS_SY_LFR_N_SWF_P 2
11 #define BYTE_POS_SY_LFR_N_ASM_P 4
12 #define BYTE_POS_SY_LFR_N_BP_P0 6
13 #define BYTE_POS_SY_LFR_N_BP_P1 7
14
15 // TC_LFR_LOAD_BURST_PAR
16
17 // TC_LFR_LOAD_SBM1_PAR
18
19 // TC_LFR_LOAD_SBM2_PAR
20
21
22 #endif // TM_BYTE_POSITIONS_H
@@ -1,6 +1,6
1 1 #############################################################################
2 2 # Makefile for building: bin/fsw
3 # Generated by qmake (2.01a) (Qt 4.8.5) on: Thu Nov 14 12:02:16 2013
3 # Generated by qmake (2.01a) (Qt 4.8.5) on: Fri Nov 15 07:55:16 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=23 -DPRINT_MESSAGES_ON_CONSOLE
13 DEFINES = -DSW_VERSION_N1=0 -DSW_VERSION_N2=0 -DSW_VERSION_N3=0 -DSW_VERSION_N4=24 -DPRINT_MESSAGES_ON_CONSOLE
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
@@ -7,11 +7,11 CONFIG -= qt
7 7 include(./sparc.pri)
8 8
9 9 # flight software version
10 SWVERSION=-0-23
10 SWVERSION=-0-24
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=23
14 DEFINES += SW_VERSION_N4=24
15 15
16 16 contains( CONFIG, verbose ) {
17 17 DEFINES += PRINT_MESSAGES_ON_CONSOLE
@@ -74,5 +74,6 HEADERS += \
74 74 ../header/tm_byte_positions.h \
75 75 ../header/tc_load_dump_parameters.h \
76 76 ../header/tm_lfr_tc_exe.h \
77 ../header/tc_acceptance.h
77 ../header/tc_acceptance.h \
78 ../header/fsw_params_nb_bytes.h
78 79
@@ -1,6 +1,6
1 1 <?xml version="1.0" encoding="UTF-8"?>
2 2 <!DOCTYPE QtCreatorProject>
3 <!-- Written by QtCreator 2.8.1, 2013-11-14T11:59:15. -->
3 <!-- Written by QtCreator 2.8.1, 2013-11-15T09:52:17. -->
4 4 <qtcreator>
5 5 <data>
6 6 <variable>ProjectExplorer.Project.ActiveTarget</variable>
@@ -51,12 +51,12
51 51 <data>
52 52 <variable>ProjectExplorer.Project.Target.0</variable>
53 53 <valuemap type="QVariantMap">
54 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop-Qt 4.8.2 in PATH (System)</value>
55 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop-Qt 4.8.2 in PATH (System)</value>
56 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{5289e843-9ef2-45ce-88c6-ad27d8e08def}</value>
54 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop-Qt 4.8.3 in PATH (System)</value>
55 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop-Qt 4.8.3 in PATH (System)</value>
56 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{be73cf6a-f9d8-4d5a-8adf-adc2d83e2e44}</value>
57 57 <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
58 58 <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
59 <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">1</value>
59 <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
60 60 <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
61 61 <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
62 62 <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
@@ -65,7 +65,7
65 65 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
66 66 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
67 67 <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
68 <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibraryAuto">true</value>
68 <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibraryAuto">false</value>
69 69 <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
70 70 <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
71 71 </valuemap>
@@ -79,7 +79,7
79 79 <value type="QString">-r</value>
80 80 </valuelist>
81 81 <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
82 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">-r -w -j 4</value>
82 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
83 83 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
84 84 </valuemap>
85 85 <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
@@ -98,7 +98,7
98 98 <value type="QString">-r</value>
99 99 </valuelist>
100 100 <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
101 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">-r -w clean</value>
101 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
102 102 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
103 103 </valuemap>
104 104 <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
@@ -109,73 +109,14
109 109 <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
110 110 <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
111 111 <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
112 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Qt 4.8.2 in PATH (System) Release</value>
112 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Release</value>
113 113 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
114 114 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
115 115 <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
116 <value type="QString" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory">/opt/DEV_PLE/FSW-qt</value>
116 <value type="QString" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory">/home/admin/opt/DEV_PLE/FSW-qt</value>
117 117 <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">false</value>
118 118 </valuemap>
119 <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
120 <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
121 <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
122 <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
123 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
124 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
125 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
126 <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
127 <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibraryAuto">true</value>
128 <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
129 <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
130 </valuemap>
131 <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
132 <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
133 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
134 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
135 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
136 <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
137 <value type="QString">-w</value>
138 <value type="QString">-r</value>
139 </valuelist>
140 <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
141 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">-r -w </value>
142 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
143 </valuemap>
144 <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
145 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
146 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
147 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
148 </valuemap>
149 <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
150 <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
151 <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
152 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
153 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
154 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
155 <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
156 <value type="QString">-w</value>
157 <value type="QString">-r</value>
158 </valuelist>
159 <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
160 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">-r -w clean</value>
161 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
162 </valuemap>
163 <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
164 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
165 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
166 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
167 </valuemap>
168 <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
169 <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
170 <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
171 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Qt 4.8.2 in PATH (System) Debug</value>
172 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
173 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
174 <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
175 <value type="QString" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory">/opt/DEV_PLE/FSW-qt</value>
176 <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">false</value>
177 </valuemap>
178 <value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">2</value>
119 <value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">1</value>
179 120 <valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
180 121 <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
181 122 <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
@@ -184,7 +125,7
184 125 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
185 126 </valuemap>
186 127 <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
187 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">No deployment</value>
128 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy locally</value>
188 129 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
189 130 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
190 131 </valuemap>
@@ -226,7 +167,7
226 167 <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
227 168 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">fsw-qt</value>
228 169 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
229 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:/opt/DEV_PLE/FSW-qt/fsw-qt.pro</value>
170 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:/home/admin/opt/DEV_PLE/FSW-qt/fsw-qt.pro</value>
230 171 <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments"></value>
231 172 <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">fsw-qt.pro</value>
232 173 <value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseDyldImageSuffix">false</value>
@@ -237,57 +178,9
237 178 <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">false</value>
238 179 <value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
239 180 <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
240 <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">false</value>
241 </valuemap>
242 <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.1">
243 <value type="bool" key="Analyzer.Project.UseGlobal">true</value>
244 <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
245 <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
246 <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
247 <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
248 <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
249 <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
250 <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
251 <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
252 <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
253 <value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
254 <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
255 <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
256 <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
257 <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
258 <value type="int">0</value>
259 <value type="int">1</value>
260 <value type="int">2</value>
261 <value type="int">3</value>
262 <value type="int">4</value>
263 <value type="int">5</value>
264 <value type="int">6</value>
265 <value type="int">7</value>
266 <value type="int">8</value>
267 <value type="int">9</value>
268 <value type="int">10</value>
269 <value type="int">11</value>
270 <value type="int">12</value>
271 <value type="int">13</value>
272 <value type="int">14</value>
273 </valuelist>
274 <value type="int" key="PE.EnvironmentAspect.Base">2</value>
275 <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
276 <value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.Arguments"></value>
277 <value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.Executable">doxygen</value>
278 <value type="bool" key="ProjectExplorer.CustomExecutableRunConfiguration.UseTerminal">true</value>
279 <value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.WorkingDirectory">/opt/DEV_PLE/doc</value>
280 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Run doxygen</value>
281 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
282 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.CustomExecutableRunConfiguration</value>
283 <value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
284 <value type="bool" key="RunConfiguration.UseCppDebugger">true</value>
285 <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">false</value>
286 <value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
287 <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
288 181 <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
289 182 </valuemap>
290 <value type="int" key="ProjectExplorer.Target.RunConfigurationCount">2</value>
183 <value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
291 184 </valuemap>
292 185 </data>
293 186 <data>
@@ -296,7 +189,7
296 189 </data>
297 190 <data>
298 191 <variable>ProjectExplorer.Project.Updater.EnvironmentId</variable>
299 <value type="QByteArray">{2e58a81f-9962-4bba-ae6b-760177f0656c}</value>
192 <value type="QByteArray">{cdbf9cdc-1e84-406e-889b-c4feef49e75c}</value>
300 193 </data>
301 194 <data>
302 195 <variable>ProjectExplorer.Project.Updater.FileVersion</variable>
@@ -226,45 +226,7 enum TM_TYPE{
226 226 TM_LFR_PAR_DUMP
227 227 };
228 228
229 struct TMHeader_str
230 {
231 unsigned char targetLogicalAddress;
232 unsigned char protocolIdentifier;
233 unsigned char reserved;
234 unsigned char userApplication;
235 unsigned char packetID[2];
236 unsigned char packetSequenceControl[2];
237 unsigned char packetLength[2];
238 // DATA FIELD HEADER
239 unsigned char spare1_pusVersion_spare2;
240 unsigned char serviceType;
241 unsigned char serviceSubType;
242 unsigned char destinationID;
243 unsigned char time[6];
244 };
245 typedef struct TMHeader_str TMHeader_t;
246
247 struct Packet_TM_LFR_TC_EXE_str
248 {
249 unsigned char targetLogicalAddress;
250 unsigned char protocolIdentifier;
251 unsigned char reserved;
252 unsigned char userApplication;
253 unsigned char packetID[2];
254 unsigned char packetSequenceControl[2];
255 unsigned char packetLength[2];
256 // DATA FIELD HEADER
257 unsigned char spare1_pusVersion_spare2;
258 unsigned char serviceType;
259 unsigned char serviceSubType;
260 unsigned char destinationID;
261 unsigned char time[6];
262 unsigned char data[LENGTH_TM_LFR_TC_EXE_MAX - 10 + 1];
263 };
264 typedef struct Packet_TM_LFR_TC_EXE_str Packet_TM_LFR_TC_EXE_t;
265
266 struct Packet_TM_LFR_TC_EXE_SUCCESS_str
267 {
229 typedef struct {
268 230 unsigned char targetLogicalAddress;
269 231 unsigned char protocolIdentifier;
270 232 unsigned char reserved;
@@ -282,11 +244,9 struct Packet_TM_LFR_TC_EXE_SUCCESS_str
282 244 //
283 245 unsigned char telecommand_pkt_id[2];
284 246 unsigned char pkt_seq_control[2];
285 };
286 typedef struct Packet_TM_LFR_TC_EXE_SUCCESS_str Packet_TM_LFR_TC_EXE_SUCCESS_t;
247 } Packet_TM_LFR_TC_EXE_SUCCESS_t;
287 248
288 struct Packet_TM_LFR_TC_EXE_INCONSISTENT_str
289 {
249 typedef struct {
290 250 unsigned char targetLogicalAddress;
291 251 unsigned char protocolIdentifier;
292 252 unsigned char reserved;
@@ -309,11 +269,9 struct Packet_TM_LFR_TC_EXE_INCONSISTENT
309 269 unsigned char tc_subtype;
310 270 unsigned char byte_position;
311 271 unsigned char rcv_value;
312 };
313 typedef struct Packet_TM_LFR_TC_EXE_INCONSISTENT_str Packet_TM_LFR_TC_EXE_INCONSISTENT_t;
272 } Packet_TM_LFR_TC_EXE_INCONSISTENT_t;
314 273
315 struct Packet_TM_LFR_TC_EXE_NOT_EXECUTABLE_str
316 {
274 typedef struct {
317 275 unsigned char targetLogicalAddress;
318 276 unsigned char protocolIdentifier;
319 277 unsigned char reserved;
@@ -335,11 +293,9 struct Packet_TM_LFR_TC_EXE_NOT_EXECUTAB
335 293 unsigned char tc_service;
336 294 unsigned char tc_subtype;
337 295 unsigned char lfr_status_word[2];
338 };
339 typedef struct Packet_TM_LFR_TC_EXE_NOT_EXECUTABLE_str Packet_TM_LFR_TC_EXE_NOT_EXECUTABLE_t;
296 } Packet_TM_LFR_TC_EXE_NOT_EXECUTABLE_t;
340 297
341 struct Packet_TM_LFR_TC_EXE_NOT_IMPLEMENTED_str
342 {
298 typedef struct {
343 299 unsigned char targetLogicalAddress;
344 300 unsigned char protocolIdentifier;
345 301 unsigned char reserved;
@@ -360,11 +316,9 struct Packet_TM_LFR_TC_EXE_NOT_IMPLEMEN
360 316 unsigned char pkt_seq_control[2];
361 317 unsigned char tc_service;
362 318 unsigned char tc_subtype;
363 };
364 typedef struct Packet_TM_LFR_TC_EXE_NOT_IMPLEMENTED_str Packet_TM_LFR_TC_EXE_NOT_IMPLEMENTED_t;
319 } Packet_TM_LFR_TC_EXE_NOT_IMPLEMENTED_t;
365 320
366 struct Packet_TM_LFR_TC_EXE_ERROR_str
367 {
321 typedef struct {
368 322 unsigned char targetLogicalAddress;
369 323 unsigned char protocolIdentifier;
370 324 unsigned char reserved;
@@ -385,11 +339,9 struct Packet_TM_LFR_TC_EXE_ERROR_str
385 339 unsigned char pkt_seq_control[2];
386 340 unsigned char tc_service;
387 341 unsigned char tc_subtype;
388 };
389 typedef struct Packet_TM_LFR_TC_EXE_ERROR_str Packet_TM_LFR_TC_EXE_ERROR_t;
342 } Packet_TM_LFR_TC_EXE_ERROR_t;
390 343
391 struct Packet_TM_LFR_TC_EXE_CORRUPTED_str
392 {
344 typedef struct {
393 345 unsigned char targetLogicalAddress;
394 346 unsigned char protocolIdentifier;
395 347 unsigned char reserved;
@@ -414,11 +366,9 struct Packet_TM_LFR_TC_EXE_CORRUPTED_st
414 366 unsigned char pkt_datafieldsize_cnt[2];
415 367 unsigned char rcv_crc[2];
416 368 unsigned char computed_crc[2];
417 };
418 typedef struct Packet_TM_LFR_TC_EXE_CORRUPTED_str Packet_TM_LFR_TC_EXE_CORRUPTED_t;
369 } Packet_TM_LFR_TC_EXE_CORRUPTED_t;
419 370
420 struct Header_TM_LFR_SCIENCE_SWF_str
421 {
371 typedef struct {
422 372 unsigned char targetLogicalAddress;
423 373 unsigned char protocolIdentifier;
424 374 unsigned char reserved;
@@ -439,11 +389,9 struct Header_TM_LFR_SCIENCE_SWF_str
439 389 unsigned char pktNr;
440 390 unsigned char acquisitionTime[6];
441 391 unsigned char blkNr[2];
442 };
443 typedef struct Header_TM_LFR_SCIENCE_SWF_str Header_TM_LFR_SCIENCE_SWF_t;
392 } Header_TM_LFR_SCIENCE_SWF_t;
444 393
445 struct Header_TM_LFR_SCIENCE_CWF_str
446 {
394 typedef struct {
447 395 unsigned char targetLogicalAddress;
448 396 unsigned char protocolIdentifier;
449 397 unsigned char reserved;
@@ -462,11 +410,9 struct Header_TM_LFR_SCIENCE_CWF_str
462 410 unsigned char hkBIA;
463 411 unsigned char acquisitionTime[6];
464 412 unsigned char blkNr[2];
465 };
466 typedef struct Header_TM_LFR_SCIENCE_CWF_str Header_TM_LFR_SCIENCE_CWF_t;
413 } Header_TM_LFR_SCIENCE_CWF_t;
467 414
468 struct Header_TM_LFR_SCIENCE_ASM_str
469 {
415 typedef struct {
470 416 unsigned char targetLogicalAddress;
471 417 unsigned char protocolIdentifier;
472 418 unsigned char reserved;
@@ -487,12 +433,10 struct Header_TM_LFR_SCIENCE_ASM_str
487 433 unsigned char nrASM;
488 434 unsigned char acquisitionTime[6];
489 435 unsigned char blkNr[2];
490 };
491 typedef struct Header_TM_LFR_SCIENCE_ASM_str Header_TM_LFR_SCIENCE_ASM_t;
436 } Header_TM_LFR_SCIENCE_ASM_t;
492 437
493 struct ccsdsTelecommandPacket_str
494 {
495 //unsigned char targetLogicalAddress; // removed by the grspw module
438 typedef struct {
439 //targetLogicalAddress is removed by the grspw module
496 440 unsigned char protocolIdentifier;
497 441 unsigned char reserved;
498 442 unsigned char userApplication;
@@ -505,11 +449,9 struct ccsdsTelecommandPacket_str
505 449 unsigned char serviceSubType;
506 450 unsigned char sourceID;
507 451 unsigned char dataAndCRC[CCSDS_TC_PKT_MAX_SIZE-10];
508 };
509 typedef struct ccsdsTelecommandPacket_str ccsdsTelecommandPacket_t;
452 } ccsdsTelecommandPacket_t;
510 453
511 struct Packet_TM_LFR_HK_str
512 {
454 typedef struct {
513 455 unsigned char targetLogicalAddress;
514 456 unsigned char protocolIdentifier;
515 457 unsigned char reserved;
@@ -607,11 +549,9 struct Packet_TM_LFR_HK_str
607 549 unsigned char hk_lfr_cpu_data_exception;
608 550 unsigned char hk_lfr_cpu_div_exception;
609 551 unsigned char hk_lfr_cpu_arith_overflow;
610 };
611 typedef struct Packet_TM_LFR_HK_str Packet_TM_LFR_HK_t;
552 } Packet_TM_LFR_HK_t;
612 553
613 struct Packet_TM_LFR_PARAMETER_DUMP_str
614 {
554 typedef struct {
615 555 unsigned char targetLogicalAddress;
616 556 unsigned char protocolIdentifier;
617 557 unsigned char reserved;
@@ -654,8 +594,7 struct Packet_TM_LFR_PARAMETER_DUMP_str
654 594 // SBM2 PARAMETERS
655 595 unsigned char sy_lfr_s2_bp_p0;
656 596 unsigned char sy_lfr_s2_bp_p1;
657 };
658 typedef struct Packet_TM_LFR_PARAMETER_DUMP_str Packet_TM_LFR_PARAMETER_DUMP_t;
597 } Packet_TM_LFR_PARAMETER_DUMP_t;
659 598
660 599
661 600 #endif // CCSDS_TYPES_H_INCLUDED
@@ -12,22 +12,6
12 12
13 13 #include "fsw_spacewire.h"
14 14
15 extern rtems_name misc_name[5];
16 extern rtems_id misc_id[5];
17 extern rtems_name Task_name[20]; /* array of task names */
18 extern rtems_id Task_id[20]; /* array of task ids */
19 extern unsigned int maxCount;
20 extern int fdSPW; // grspw file descriptor
21 extern int fdUART; // uart file descriptor
22 extern unsigned char lfrCurrentMode;
23
24 // MODE PARAMETERS
25 extern struct param_local_str param_local;
26 extern Packet_TM_LFR_PARAMETER_DUMP_t parameter_dump_packet;
27 extern unsigned short sequenceCounters_SCIENCE_NORMAL_BURST;
28 extern unsigned short sequenceCounters_SCIENCE_SBM1_SBM2;
29 extern unsigned short sequenceCounters_TC_EXE[SEQ_CNT_NB_DEST_ID];
30
31 15 // RTEMS TASKS
32 16 rtems_task Init( rtems_task_argument argument);
33 17
@@ -47,6 +31,5 extern int rtems_cpu_usage_reset( void )
47 31 extern void rtems_stack_checker_report_usage( void );
48 32
49 33 extern int sched_yield( void );
50 extern int errno;
51 34
52 35 #endif // FSW_INIT_H_INCLUDED
@@ -11,15 +11,15
11 11 rtems_name name_hk_rate_monotonic; // name of the HK rate monotonic
12 12 rtems_id HK_id; // id of the HK rate monotonic period
13 13
14 extern rtems_name misc_name[5];
15 time_management_regs_t *time_management_regs;
16 extern Packet_TM_LFR_HK_t housekeeping_packet;
14 //extern rtems_name misc_name[5];
15 //time_management_regs_t *time_management_regs;
16 //extern Packet_TM_LFR_HK_t housekeeping_packet;
17 17
18 int configure_timer(gptimer_regs_t *gptimer_regs, unsigned char timer, unsigned int clock_divider,
18 void configure_timer(gptimer_regs_t *gptimer_regs, unsigned char timer, unsigned int clock_divider,
19 19 unsigned char interrupt_level, rtems_isr (*timer_isr)() );
20 int timer_start( gptimer_regs_t *gptimer_regs, unsigned char timer );
21 int timer_stop( gptimer_regs_t *gptimer_regs, unsigned char timer );
22 int timer_set_clock_divider(gptimer_regs_t *gptimer_regs, unsigned char timer, unsigned int clock_divider);
20 void timer_start( gptimer_regs_t *gptimer_regs, unsigned char timer );
21 void timer_stop( gptimer_regs_t *gptimer_regs, unsigned char timer );
22 void timer_set_clock_divider(gptimer_regs_t *gptimer_regs, unsigned char timer, unsigned int clock_divider);
23 23
24 24 // SERIAL LINK
25 25 int send_console_outputs_on_apbuart_port( void );
@@ -3,8 +3,6
3 3
4 4 #define NB_BINS_PER_SM 128
5 5 #define NB_VALUES_PER_SM 25
6 //#define TOTAL_SIZE_SM (NB_BINS_PER_SM * NB_VALUES_PER_SM)
7 //#define SM_HEADER 4
8 6 #define TOTAL_SIZE_SM 0
9 7 #define SM_HEADER 0
10 8
@@ -15,7 +13,7
15 13 #define NB_AVERAGE_NORMAL_f0 96*4
16 14 #define NB_SM_TO_RECEIVE_BEFORE_AVF0 8
17 15
18 struct BP1_str{
16 typedef struct {
19 17 volatile unsigned char PE[2];
20 18 volatile unsigned char PB[2];
21 19 volatile unsigned char V0;
@@ -23,7 +21,6 struct BP1_str{
23 21 volatile unsigned char V2_ELLIP_DOP;
24 22 volatile unsigned char SZ;
25 23 volatile unsigned char VPHI;
26 };
27 typedef struct BP1_str BP1_t;
24 } BP1_t;
28 25
29 26 #endif // FSW_PARAMS_PROCESSING_H
@@ -11,7 +11,6
11 11 #include "fsw_params.h"
12 12 #include "fsw_spacewire.h"
13 13
14
15 14 extern volatile int spec_mat_f0_0[ ];
16 15 extern volatile int spec_mat_f0_1[ ];
17 16 extern volatile int spec_mat_f0_a[ ];
@@ -14,8 +14,6
14 14
15 15 extern spw_stats spacewire_stats;
16 16 extern spw_stats spacewire_stats_backup;
17 extern Packet_TM_LFR_HK_t housekeeping_packet;
18 extern rtems_id Task_id[20]; /* array of task ids */
19 17
20 18 // RTEMS TASK
21 19 rtems_task spiq_task( rtems_task_argument argument );
@@ -18,34 +18,29 struct ahbuart_regs_str{
18 18 volatile unsigned int scaler;
19 19 };
20 20
21 struct timer_regs_str
22 {
21 typedef struct {
23 22 volatile unsigned int counter;
24 23 volatile unsigned int reload;
25 24 volatile unsigned int ctrl;
26 25 volatile unsigned int unused;
27 };
28 typedef struct timer_regs_str timer_regs_t;
26 } timer_regs_t;
29 27
30 struct gptimer_regs_str
31 {
28 typedef struct {
32 29 volatile unsigned int scaler_value;
33 30 volatile unsigned int scaler_reload;
34 31 volatile unsigned int conf;
35 32 volatile unsigned int unused0;
36 33 timer_regs_t timer[NB_GPTIMER];
37 };
38 typedef struct gptimer_regs_str gptimer_regs_t;
34 } gptimer_regs_t;
39 35
40 struct time_management_regs_str{
36 typedef struct {
41 37 volatile int ctrl; // bit 0 forces the load of the coarse_time_load value and resets the fine_time
42 38 volatile int coarse_time_load;
43 39 volatile int coarse_time;
44 40 volatile int fine_time;
45 };
46 typedef struct time_management_regs_str time_management_regs_t;
41 } time_management_regs_t;
47 42
48 struct waveform_picker_regs_str{
43 typedef struct {
49 44 volatile int data_shaping; // 0x00 00 *** R1 R0 SP1 SP0 BW
50 45 volatile int burst_enable; // 0x04 01 *** burst f2, f1, f0 enable f3, f2, f1, f0
51 46 volatile int addr_data_f0; // 0x08 10 ***
@@ -58,36 +53,15 struct waveform_picker_regs_str{
58 53 volatile int delta_f2_f0; // 0x24 0001 ***
59 54 volatile int nb_burst_available;// 0x28 0010 ***
60 55 volatile int nb_snapshot_param; // 0x2c 0011 ***
61 };
62 typedef struct waveform_picker_regs_str waveform_picker_regs_t;
56 } waveform_picker_regs_t;
63 57
64 struct waveform_picker_regs_str_alt{
65 volatile int data_shaping; // 0x00 00 *** R1 R0 SP1 SP0 BW
66 volatile int run_burst_enable; // 0x04 01 *** [run *** burst f2, f1, f0 *** enable f3, f2, f1, f0 ]
67 volatile int addr_data_f0; // 0x08
68 volatile int addr_data_f1; // 0x0c
69 volatile int addr_data_f2; // 0x10
70 volatile int addr_data_f3; // 0x14
71 volatile int status; // 0x18
72 volatile int delta_snapshot; // 0x1c
73 volatile int delta_f0; // 0x20
74 volatile int delta_f0_2;
75 volatile int delta_f1;
76 volatile int delta_f2;
77 volatile int nb_data_by_buffer;
78 volatile int snapshot_param;
79 volatile int start_date;
80 };
81 typedef struct waveform_picker_regs_str_alt waveform_picker_regs_t_alt;
82
83 struct spectral_matrix_regs_str{
58 typedef struct {
84 59 volatile int config;
85 60 volatile int status;
86 61 volatile int matrixF0_Address0;
87 62 volatile int matrixFO_Address1;
88 63 volatile int matrixF1_Address;
89 64 volatile int matrixF2_Address;
90 };
91 typedef struct spectral_matrix_regs_str spectral_matrix_regs_t;
65 } spectral_matrix_regs_t;
92 66
93 67 #endif // GRLIB_REGS_H_INCLUDED
@@ -10,17 +10,8
10 10 #include "wf_handler.h"
11 11
12 12 // MODE PARAMETERS
13 extern struct param_sbm1_str param_sbm1;
14 extern struct param_sbm2_str param_sbm2;
15 extern time_management_regs_t *time_management_regs;
16 extern waveform_picker_regs_t *waveform_picker_regs;
17 extern gptimer_regs_t *gptimer_regs;
18 extern rtems_name misc_name[5];
19 extern rtems_id Task_id[20]; /* array of task ids */
20 extern unsigned char lfrCurrentMode;
21 13 extern unsigned int maxCount;
22 14
23
24 15 //****
25 16 // ISR
26 17 rtems_isr commutation_isr1( rtems_vector_number vector );
@@ -42,7 +33,7 int action_update_time(ccsdsTelecommandP
42 33 // mode transition
43 34 int transition_validation(unsigned char requestedMode);
44 35 int stop_current_mode();
45 int enter_mode(unsigned char mode, ccsdsTelecommandPacket_t *TC);
36 int enter_mode(unsigned char mode);
46 37 int enter_standby_mode();
47 38 int enter_normal_mode();
48 39 int enter_burst_mode();
@@ -9,11 +9,6
9 9 #include "tm_lfr_tc_exe.h"
10 10 #include "fsw_misc.h"
11 11
12 extern int fdSPW;
13 extern unsigned char lfrCurrentMode;
14 extern Packet_TM_LFR_PARAMETER_DUMP_t parameter_dump_packet;
15 extern Packet_TM_LFR_HK_t housekeeping_packet;
16
17 12 int action_load_common_par( ccsdsTelecommandPacket_t *TC );
18 13 int action_load_normal_par(ccsdsTelecommandPacket_t *TC, rtems_id queue_id , unsigned char *time);
19 14 int action_load_burst_par(ccsdsTelecommandPacket_t *TC, rtems_id queue_id , unsigned char *time);
@@ -7,8 +7,6
7 7 #include "fsw_params.h"
8 8 #include "fsw_spacewire.h"
9 9
10 extern time_management_regs_t *time_management_regs;
11 extern Packet_TM_LFR_HK_t housekeeping_packet;
12 10 extern unsigned short sequenceCounters_TC_EXE[];
13 11
14 12 int send_tm_lfr_tc_exe_success(ccsdsTelecommandPacket_t *TC, rtems_id queue_id, unsigned char *time);
@@ -27,7 +27,6 extern volatile int wf_cont_f3[ ];
27 27 extern volatile int wf_cont_f3_bis[ ];
28 28 extern char wf_cont_f3_light[ ];
29 29 extern waveform_picker_regs_t *waveform_picker_regs;
30 extern waveform_picker_regs_t_alt *waveform_picker_regs_alt;
31 30 extern time_management_regs_t *time_management_regs;
32 31 extern Packet_TM_LFR_HK_t housekeeping_packet;
33 32 extern Packet_TM_LFR_PARAMETER_DUMP_t parameter_dump_packet;
@@ -77,11 +76,11 void reset_waveform_picker_regs();
77 76
78 77 //*****************
79 78 // local parameters
80 void set_local_sbm1_nb_cwf_max();
81 void set_local_sbm2_nb_cwf_max();
82 void set_local_nb_interrupt_f0_MAX();
83 void reset_local_sbm1_nb_cwf_sent();
84 void reset_local_sbm2_nb_cwf_sent();
79 void set_local_sbm1_nb_cwf_max( void );
80 void set_local_sbm2_nb_cwf_max( void );
81 void set_local_nb_interrupt_f0_MAX( void );
82 void reset_local_sbm1_nb_cwf_sent( void );
83 void reset_local_sbm2_nb_cwf_sent( void );
85 84
86 85 void increment_seq_counter_source_id( unsigned char *packet_sequence_control, unsigned int sid );
87 86
@@ -37,7 +37,6 gptimer_regs_t *gptimer_regs
37 37 #ifdef GSA
38 38 #else
39 39 waveform_picker_regs_t *waveform_picker_regs = (waveform_picker_regs_t*) REGS_ADDR_WAVEFORM_PICKER;
40 waveform_picker_regs_t_alt *waveform_picker_regs_alt = (waveform_picker_regs_t_alt*) REGS_ADDR_WAVEFORM_PICKER;
41 40 #endif
42 41 spectral_matrix_regs_t *spectral_matrix_regs = (spectral_matrix_regs_t*) REGS_ADDR_SPECTRAL_MATRIX;
43 42
@@ -7,16 +7,16
7 7
8 8 #include "fsw_misc.h"
9 9
10 char *DumbMessages[7] = {"in DUMB *** default", // RTEMS_EVENT_0
11 "in DUMB *** timecode_irq_handler", // RTEMS_EVENT_1
12 "in DUMB *** waveforms_isr", // RTEMS_EVENT_2
13 "in DUMB *** in SMIQ *** Error sending event to AVF0", // RTEMS_EVENT_3
14 "in DUMB *** spectral_matrices_isr *** Error sending event to SMIQ", // RTEMS_EVENT_4
15 "in DUMB *** waveforms_simulator_isr", // RTEMS_EVENT_5
16 "ERR HK" // RTEMS_EVENT_6
17 };
10 //char *DumbMessages[7] = {"in DUMB *** default", // RTEMS_EVENT_0
11 // "in DUMB *** timecode_irq_handler", // RTEMS_EVENT_1
12 // "in DUMB *** waveforms_isr", // RTEMS_EVENT_2
13 // "in DUMB *** in SMIQ *** Error sending event to AVF0", // RTEMS_EVENT_3
14 // "in DUMB *** spectral_matrices_isr *** Error sending event to SMIQ", // RTEMS_EVENT_4
15 // "in DUMB *** waveforms_simulator_isr", // RTEMS_EVENT_5
16 // "ERR HK" // RTEMS_EVENT_6
17 //};
18 18
19 int configure_timer(gptimer_regs_t *gptimer_regs, unsigned char timer, unsigned int clock_divider,
19 void configure_timer(gptimer_regs_t *gptimer_regs, unsigned char timer, unsigned int clock_divider,
20 20 unsigned char interrupt_level, rtems_isr (*timer_isr)() )
21 21 {
22 22 /** This function configures a GPTIMER timer instantiated in the VHDL design.
@@ -27,8 +27,6 int configure_timer(gptimer_regs_t *gpti
27 27 * @param interrupt_level is the interrupt level that the timer drives.
28 28 * @param timer_isr is the interrupt subroutine that will be attached to the IRQ driven by the timer.
29 29 *
30 * @return
31 *
32 30 * Interrupt levels are described in the SPARC documentation sparcv8.pdf p.76
33 31 *
34 32 */
@@ -43,19 +41,15 int configure_timer(gptimer_regs_t *gpti
43 41 }
44 42
45 43 timer_set_clock_divider( gptimer_regs, timer, clock_divider);
46
47 return 1;
48 44 }
49 45
50 int timer_start(gptimer_regs_t *gptimer_regs, unsigned char timer)
46 void timer_start(gptimer_regs_t *gptimer_regs, unsigned char timer)
51 47 {
52 48 /** This function starts a GPTIMER timer.
53 49 *
54 50 * @param gptimer_regs points to the APB registers of the GPTIMER IP core.
55 51 * @param timer is the number of the timer in the IP core (several timers can be instantiated).
56 52 *
57 * @return 1
58 *
59 53 */
60 54
61 55 gptimer_regs->timer[timer].ctrl = gptimer_regs->timer[timer].ctrl | 0x00000010; // clear pending IRQ if any
@@ -63,29 +57,23 int timer_start(gptimer_regs_t *gptimer_
63 57 gptimer_regs->timer[timer].ctrl = gptimer_regs->timer[timer].ctrl | 0x00000001; // EN enable the timer
64 58 gptimer_regs->timer[timer].ctrl = gptimer_regs->timer[timer].ctrl | 0x00000002; // RS restart
65 59 gptimer_regs->timer[timer].ctrl = gptimer_regs->timer[timer].ctrl | 0x00000008; // IE interrupt enable
66
67 return 1;
68 60 }
69 61
70 int timer_stop(gptimer_regs_t *gptimer_regs, unsigned char timer)
62 void timer_stop(gptimer_regs_t *gptimer_regs, unsigned char timer)
71 63 {
72 64 /** This function stops a GPTIMER timer.
73 65 *
74 66 * @param gptimer_regs points to the APB registers of the GPTIMER IP core.
75 67 * @param timer is the number of the timer in the IP core (several timers can be instantiated).
76 68 *
77 * @return 1
78 *
79 69 */
80 70
81 71 gptimer_regs->timer[timer].ctrl = gptimer_regs->timer[timer].ctrl & 0xfffffffe; // EN enable the timer
82 72 gptimer_regs->timer[timer].ctrl = gptimer_regs->timer[timer].ctrl & 0xffffffef; // IE interrupt enable
83 73 gptimer_regs->timer[timer].ctrl = gptimer_regs->timer[timer].ctrl | 0x00000010; // clear pending IRQ if any
84
85 return 1;
86 74 }
87 75
88 int timer_set_clock_divider(gptimer_regs_t *gptimer_regs, unsigned char timer, unsigned int clock_divider)
76 void timer_set_clock_divider(gptimer_regs_t *gptimer_regs, unsigned char timer, unsigned int clock_divider)
89 77 {
90 78 /** This function sets the clock divider of a GPTIMER timer.
91 79 *
@@ -93,13 +81,9 int timer_set_clock_divider(gptimer_regs
93 81 * @param timer is the number of the timer in the IP core (several timers can be instantiated).
94 82 * @param clock_divider is the divider of the 1 MHz clock that will be configured.
95 83 *
96 * @return 1
97 *
98 84 */
99 85
100 86 gptimer_regs->timer[timer].reload = clock_divider; // base clock frequency is 1 MHz
101
102 return 1;
103 87 }
104 88
105 89 int send_console_outputs_on_apbuart_port( void ) // Send the console outputs on the apbuart port
@@ -247,6 +231,15 rtems_task dumb_task( rtems_task_argumen
247 231 unsigned int fine_time = 0;
248 232 rtems_event_set event_out;
249 233
234 char *DumbMessages[7] = {"in DUMB *** default", // RTEMS_EVENT_0
235 "in DUMB *** timecode_irq_handler", // RTEMS_EVENT_1
236 "in DUMB *** waveforms_isr", // RTEMS_EVENT_2
237 "in DUMB *** in SMIQ *** Error sending event to AVF0", // RTEMS_EVENT_3
238 "in DUMB *** spectral_matrices_isr *** Error sending event to SMIQ", // RTEMS_EVENT_4
239 "in DUMB *** waveforms_simulator_isr", // RTEMS_EVENT_5
240 "ERR HK" // RTEMS_EVENT_6
241 };
242
250 243 BOOT_PRINTF("in DUMB *** \n")
251 244
252 245 while(1){
@@ -296,6 +289,12 void init_housekeeping_parameters( void
296 289
297 290 void increment_seq_counter( unsigned char *packet_sequence_control)
298 291 {
292 /** This function increment the sequence counter psased in argument.
293 *
294 * The increment does not affect the grouping flag. In case of an overflow, the counter is reset to 0.
295 *
296 */
297
299 298 unsigned short sequence_cnt;
300 299 unsigned short segmentation_grouping_flag;
301 300 unsigned short new_packet_sequence_control;
@@ -323,6 +322,10 void increment_seq_counter( unsigned cha
323 322
324 323 void getTime( unsigned char *time)
325 324 {
325 /** This function write the current local time in the time buffer passed in argument.
326 *
327 */
328
326 329 time[0] = (unsigned char) (time_management_regs->coarse_time>>24);
327 330 time[1] = (unsigned char) (time_management_regs->coarse_time>>16);
328 331 time[2] = (unsigned char) (time_management_regs->coarse_time>>8);
@@ -11,7 +11,6
11 11
12 12 #include "fsw_processing_globals.c"
13 13
14 unsigned char LFR_BP1_F0[ NB_BINS_COMPRESSED_SM_F0 * 9 ];
15 14 BP1_t data_BP1[ NB_BINS_COMPRESSED_SM_F0 ];
16 15 float averaged_spec_mat_f0[ TOTAL_SIZE_SM ];
17 16 char averaged_spec_mat_f0_char[ TOTAL_SIZE_SM * 2 ];
@@ -119,26 +118,6 rtems_task smiq_task(rtems_task_argument
119 118 }
120 119 }
121 120
122 //rtems_task smiq_task(rtems_task_argument argument) // process the Spectral Matrices IRQ
123 //{
124 // rtems_event_set event_out;
125 // unsigned int nb_interrupt_f0 = 0;
126
127 // PRINTF("in SMIQ *** \n")
128
129 // while(1){
130 // rtems_event_receive(RTEMS_EVENT_0, RTEMS_WAIT, RTEMS_NO_TIMEOUT, &event_out); // wait for an RTEMS_EVENT0
131 // nb_interrupt_f0 = nb_interrupt_f0 + 1;
132 // if (nb_interrupt_f0 == param_local.local_nb_interrupt_f0_MAX ){
133 // if (rtems_event_send( Task_id[TASKID_MATR], RTEMS_EVENT_0 ) != RTEMS_SUCCESSFUL)
134 // {
135 // rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_3 );
136 // }
137 // nb_interrupt_f0 = 0;
138 // }
139 // }
140 //}
141
142 121 rtems_task spw_bppr_task(rtems_task_argument argument)
143 122 {
144 123 rtems_status_code status;
@@ -188,6 +167,7 rtems_task avf0_task(rtems_task_argument
188 167 rtems_task bpf0_task(rtems_task_argument argument)
189 168 {
190 169 rtems_event_set event_out;
170 static unsigned char LFR_BP1_F0[ NB_BINS_COMPRESSED_SM_F0 * 9 ];
191 171
192 172 BOOT_PRINTF("in BPFO *** \n")
193 173
@@ -195,7 +175,6 rtems_task bpf0_task(rtems_task_argument
195 175 rtems_event_receive(RTEMS_EVENT_0, RTEMS_WAIT, RTEMS_NO_TIMEOUT, &event_out); // wait for an RTEMS_EVENT0
196 176 matrix_compression(averaged_spec_mat_f0, 0, compressed_spec_mat_f0);
197 177 BP1_set(compressed_spec_mat_f0, NB_BINS_COMPRESSED_SM_F0, LFR_BP1_F0);
198 //PRINTF("IN TASK BPF0 *** Matrix compressed, parameters calculated\n")
199 178 }
200 179 }
201 180
@@ -237,10 +216,10 rtems_task matr_task(rtems_task_argument
237 216
238 217 void matrix_reset(volatile float *averaged_spec_mat)
239 218 {
240 // int i;
241 // for(i=0; i<TOTAL_SIZE_SM; i++){
242 // averaged_spec_mat_f0[i] = 0;
243 // }
219 int i;
220 for(i=0; i<TOTAL_SIZE_SM; i++){
221 averaged_spec_mat[i] = 0;
222 }
244 223 }
245 224
246 225 void matrix_compression(volatile float *averaged_spec_mat, unsigned char fChannel, float *compressed_spec_mat)
@@ -13,14 +13,6
13 13
14 14 #include "fsw_spacewire.h"
15 15
16 char *lstates[6] = {"Error-reset",
17 "Error-wait",
18 "Ready",
19 "Started",
20 "Connecting",
21 "Run"
22 };
23
24 16 rtems_name semq_name;
25 17 rtems_id semq_id;
26 18
@@ -45,18 +37,24 rtems_task spiq_task(rtems_task_argument
45 37 PRINTF("in SPIQ *** got SPW_LINKERR_EVENT\n")
46 38
47 39 // [0] SUSPEND RECV AND SEND TASKS
48 rtems_task_suspend( Task_id[ TASKID_RECV ] );
49 rtems_task_suspend( Task_id[ TASKID_SEND ] );
40 status = rtems_task_suspend( Task_id[ TASKID_RECV ] );
41 if ( status != RTEMS_SUCCESSFUL ) {
42 PRINTF("in SPIQ *** ERR suspending RECV Task\n")
43 }
44 status = rtems_task_suspend( Task_id[ TASKID_SEND ] );
45 if ( status != RTEMS_SUCCESSFUL ) {
46 PRINTF("in SPIQ *** ERR suspending SEND Task\n")
47 }
50 48
51 49 // [1] CHECK THE LINK
52 ioctl(fdSPW, SPACEWIRE_IOCTRL_GET_LINK_STATUS, &linkStatus); // get the link status (1)
50 status = ioctl(fdSPW, SPACEWIRE_IOCTRL_GET_LINK_STATUS, &linkStatus); // get the link status (1)
53 51 if ( linkStatus != 5) {
54 52 PRINTF1("in SPIQ *** linkStatus %d, wait...\n", linkStatus)
55 rtems_task_wake_after( SY_LFR_DPU_CONNECT_TIMEOUT ); // wait SY_LFR_DPU_CONNECT_TIMEOUT 1000 ms
53 status = rtems_task_wake_after( SY_LFR_DPU_CONNECT_TIMEOUT ); // wait SY_LFR_DPU_CONNECT_TIMEOUT 1000 ms
56 54 }
57 55
58 56 // [2] RECHECK THE LINK AFTER SY_LFR_DPU_CONNECT_TIMEOUT
59 ioctl(fdSPW, SPACEWIRE_IOCTRL_GET_LINK_STATUS, &linkStatus); // get the link status (2)
57 status = ioctl(fdSPW, SPACEWIRE_IOCTRL_GET_LINK_STATUS, &linkStatus); // get the link status (2)
60 58 if ( linkStatus != 5 ) // [2.a] not in run state, reset the link
61 59 {
62 60 spacewire_compute_stats_offsets();
@@ -95,7 +93,7 rtems_task spiq_task(rtems_task_argument
95 93 }
96 94 // wake the WTDG task up to wait for the link recovery
97 95 status = rtems_event_send ( Task_id[TASKID_WTDG], RTEMS_EVENT_0 );
98 rtems_task_suspend( RTEMS_SELF );
96 status = rtems_task_suspend( RTEMS_SELF );
99 97 }
100 98 }
101 99 }
@@ -278,11 +276,11 rtems_task wtdg_task( rtems_task_argumen
278 276 rtems_event_receive( RTEMS_EVENT_0,
279 277 RTEMS_WAIT | RTEMS_EVENT_ANY, RTEMS_NO_TIMEOUT, &event_out);
280 278 PRINTF("in WTDG *** wait for the link\n")
281 ioctl(fdSPW, SPACEWIRE_IOCTRL_GET_LINK_STATUS, &linkStatus); // get the link status
279 status = ioctl(fdSPW, SPACEWIRE_IOCTRL_GET_LINK_STATUS, &linkStatus); // get the link status
282 280 while( linkStatus != 5) // wait for the link
283 281 {
284 282 rtems_task_wake_after( 10 );
285 ioctl(fdSPW, SPACEWIRE_IOCTRL_GET_LINK_STATUS, &linkStatus); // get the link status
283 status = ioctl(fdSPW, SPACEWIRE_IOCTRL_GET_LINK_STATUS, &linkStatus); // get the link status
286 284 }
287 285
288 286 status = spacewire_stop_start_link( fdSPW );
@@ -599,7 +597,7 rtems_timer_service_routine user_routine
599 597 int linkStatus;
600 598 rtems_status_code status;
601 599
602 ioctl(fdSPW, SPACEWIRE_IOCTRL_GET_LINK_STATUS, &linkStatus); // get the link status
600 status = ioctl(fdSPW, SPACEWIRE_IOCTRL_GET_LINK_STATUS, &linkStatus); // get the link status
603 601
604 602 if ( linkStatus == 5) {
605 603 PRINTF("in spacewire_reset_link *** link is running\n")
@@ -57,7 +57,10 rtems_task actn_task( rtems_task_argumen
57 57 status = rtems_message_queue_receive( queue_rcv_id, (char*) &TC, &size,
58 58 RTEMS_WAIT, RTEMS_NO_TIMEOUT);
59 59 getTime( time ); // set time to the current time
60 if (status!=RTEMS_SUCCESSFUL) PRINTF1("ERR *** in task ACTN *** error receiving a message, code %d \n", status)
60 if (status!=RTEMS_SUCCESSFUL)
61 {
62 PRINTF1("ERR *** in task ACTN *** error receiving a message, code %d \n", status)
63 }
61 64 else
62 65 {
63 66 subtype = TC.serviceSubType;
@@ -190,7 +193,7 int action_enter_mode(ccsdsTelecommandPa
190 193 {
191 194 PRINTF("ERR *** in action_enter *** stop_current_mode\n")
192 195 }
193 status = enter_mode(requestedMode, TC);
196 status = enter_mode( requestedMode );
194 197 }
195 198 else
196 199 {
@@ -313,6 +316,16 int action_update_time(ccsdsTelecommandP
313 316
314 317 int transition_validation(unsigned char requestedMode)
315 318 {
319 /** This function checks the validity of the transition requested by the TC_LFR_ENTER_MODE.
320 *
321 * @param requestedMode is the mode requested by the TC_LFR_ENTER_MODE
322 *
323 * @return LFR directive status codes:
324 * - LFR_SUCCESSFUL - the transition is authorized
325 * - LFR_DEFAULT - the transition is not authorized
326 *
327 */
328
316 329 int status;
317 330
318 331 switch (requestedMode)
@@ -410,8 +423,18 int stop_current_mode()
410 423 return status;
411 424 }
412 425
413 int enter_mode(unsigned char mode, ccsdsTelecommandPacket_t *TC )
426 int enter_mode(unsigned char mode )
414 427 {
428 /** This function is launched after a mode transition validation.
429 *
430 * @param mode is the mode in which LFR will be put.
431 *
432 * @return RTEMS directive status codes:
433 * - RTEMS_SUCCESSFUL - the mode has been entered successfully
434 * - RTEMS_NOT_SATISFIED - the mode has not been entered successfully
435 *
436 */
437
415 438 rtems_status_code status;
416 439
417 440 status = RTEMS_UNSATISFIED;
@@ -450,6 +473,13 int enter_mode(unsigned char mode, ccsds
450 473
451 474 int enter_standby_mode()
452 475 {
476 /** This function is used to enter the STANDBY mode.
477 *
478 * @return RTEMS directive status codes:
479 * - RTEMS_SUCCESSFUL - the mode has been entered successfully
480 *
481 */
482
453 483 PRINTF1("maxCount = %d\n", maxCount)
454 484
455 485 #ifdef PRINT_TASK_STATISTICS
@@ -494,6 +524,16 int enter_normal_mode()
494 524
495 525 int enter_burst_mode()
496 526 {
527 /** This function is used to enter the STANDBY mode.
528 *
529 * @return RTEMS directive status codes:
530 * - RTEMS_SUCCESSFUL - the mode has been entered successfully
531 * - RTEMS_INVALID_ID - task id invalid
532 * - RTEMS_INCORRECT_STATE - task never started
533 * - RTEMS_ILLEGAL_ON_REMOTE_OBJECT - cannot restart remote task
534 *
535 */
536
497 537 rtems_status_code status;
498 538
499 539 status = restart_science_tasks();
@@ -512,6 +552,16 int enter_burst_mode()
512 552
513 553 int enter_sbm1_mode()
514 554 {
555 /** This function is used to enter the SBM1 mode.
556 *
557 * @return RTEMS directive status codes:
558 * - RTEMS_SUCCESSFUL - the mode has been entered successfully
559 * - RTEMS_INVALID_ID - task id invalid
560 * - RTEMS_INCORRECT_STATE - task never started
561 * - RTEMS_ILLEGAL_ON_REMOTE_OBJECT - cannot restart remote task
562 *
563 */
564
515 565 rtems_status_code status;
516 566
517 567 status = restart_science_tasks();
@@ -527,10 +577,6 int enter_sbm1_mode()
527 577 set_wfp_burst_enable_register(LFR_MODE_SBM1);
528 578 LEON_Clear_interrupt( IRQ_WAVEFORM_PICKER );
529 579 LEON_Unmask_interrupt( IRQ_WAVEFORM_PICKER );
530 // SM simulation
531 // timer_start( (gptimer_regs_t*) REGS_ADDR_GPTIMER, TIMER_SM_SIMULATOR );
532 // LEON_Clear_interrupt( IRQ_SM ); // the IRQ_SM seems to be incompatible with the IRQ_WF on the xilinx board
533 // LEON_Unmask_interrupt( IRQ_SM );
534 580 #endif
535 581
536 582 return status;
@@ -538,6 +584,16 int enter_sbm1_mode()
538 584
539 585 int enter_sbm2_mode()
540 586 {
587 /** This function is used to enter the SBM2 mode.
588 *
589 * @return RTEMS directive status codes:
590 * - RTEMS_SUCCESSFUL - the mode has been entered successfully
591 * - RTEMS_INVALID_ID - task id invalid
592 * - RTEMS_INCORRECT_STATE - task never started
593 * - RTEMS_ILLEGAL_ON_REMOTE_OBJECT - cannot restart remote task
594 *
595 */
596
541 597 rtems_status_code status;
542 598
543 599 status = restart_science_tasks();
@@ -560,6 +616,18 int enter_sbm2_mode()
560 616
561 617 int restart_science_tasks()
562 618 {
619 /** This function is used to restart all science tasks.
620 *
621 * @return RTEMS directive status codes:
622 * - RTEMS_SUCCESSFUL - task restarted successfully
623 * - RTEMS_INVALID_ID - task id invalid
624 * - RTEMS_INCORRECT_STATE - task never started
625 * - RTEMS_ILLEGAL_ON_REMOTE_OBJECT - cannot restart remote task
626 *
627 * Science tasks are AVF0, BPF0, WFRM, CWF3, CW2, CWF1
628 *
629 */
630
563 631 rtems_status_code status[6];
564 632 rtems_status_code ret;
565 633
@@ -681,6 +749,13 int suspend_science_tasks()
681 749 // CLOSING ACTIONS
682 750 void update_last_TC_exe(ccsdsTelecommandPacket_t *TC, unsigned char *time)
683 751 {
752 /** This function is used to update the HK packets statistics after a successful TC execution.
753 *
754 * @param TC points to the TC being processed
755 * @param time is the time used to date the TC execution
756 *
757 */
758
684 759 housekeeping_packet.hk_lfr_last_exe_tc_id[0] = TC->packetID[0];
685 760 housekeeping_packet.hk_lfr_last_exe_tc_id[1] = TC->packetID[1];
686 761 housekeeping_packet.hk_lfr_last_exe_tc_type[0] = 0x00;
@@ -697,6 +772,13 void update_last_TC_exe(ccsdsTelecommand
697 772
698 773 void update_last_TC_rej(ccsdsTelecommandPacket_t *TC, unsigned char *time)
699 774 {
775 /** This function is used to update the HK packets statistics after a TC rejection.
776 *
777 * @param TC points to the TC being processed
778 * @param time is the time used to date the TC rejection
779 *
780 */
781
700 782 housekeeping_packet.hk_lfr_last_rej_tc_id[0] = TC->packetID[0];
701 783 housekeeping_packet.hk_lfr_last_rej_tc_id[1] = TC->packetID[1];
702 784 housekeeping_packet.hk_lfr_last_rej_tc_type[0] = 0x00;
@@ -713,6 +795,15 void update_last_TC_rej(ccsdsTelecommand
713 795
714 796 void close_action(ccsdsTelecommandPacket_t *TC, int result, rtems_id queue_id, unsigned char *time)
715 797 {
798 /** This function is the last step of the TC execution workflow.
799 *
800 * @param TC points to the TC being processed
801 * @param result is the result of the TC execution (LFR_SUCCESSFUL / LFR_DEFAULT)
802 * @param queue_id is the id of the RTEMS message queue used to send TM packets
803 * @param time is the time used to date the TC execution
804 *
805 */
806
716 807 unsigned int val = 0;
717 808
718 809 if (result == LFR_SUCCESSFUL)
@@ -416,6 +416,15 int send_tm_lfr_tc_exe_corrupted(ccsdsTe
416 416
417 417 void increment_seq_counter_destination_id( unsigned char *packet_sequence_control, unsigned char destination_id )
418 418 {
419 /** This function increment the packet sequence control parameter of a TC, depending on its destination ID.
420 *
421 * @param packet_sequence_control points to the packet sequence control which will be incremented
422 * @param destination_id is the destination ID of the TM, there is one counter by destination ID
423 *
424 * If the destination ID is not known, a dedicated counter is incremented.
425 *
426 */
427
419 428 unsigned short sequence_cnt;
420 429 unsigned short segmentation_grouping_flag;
421 430 unsigned short new_packet_sequence_control;
@@ -1095,7 +1095,7 void reset_waveform_picker_regs()
1095 1095
1096 1096 //*****************
1097 1097 // local parameters
1098 void set_local_sbm1_nb_cwf_max()
1098 void set_local_sbm1_nb_cwf_max( void )
1099 1099 {
1100 1100 /** This function sets the value of the sbm1_nb_cwf_max local parameter.
1101 1101 *
@@ -1109,7 +1109,7 void set_local_sbm1_nb_cwf_max()
1109 1109 + parameter_dump_packet.sy_lfr_n_swf_p[1]) - 8; // 16 CWF1 parts during 1 SWF2
1110 1110 }
1111 1111
1112 void set_local_sbm2_nb_cwf_max()
1112 void set_local_sbm2_nb_cwf_max(void)
1113 1113 {
1114 1114 /** This function sets the value of the sbm1_nb_cwf_max local parameter.
1115 1115 *
@@ -1123,7 +1123,7 void set_local_sbm2_nb_cwf_max()
1123 1123 + parameter_dump_packet.sy_lfr_n_swf_p[1]) / 8;
1124 1124 }
1125 1125
1126 void set_local_nb_interrupt_f0_MAX()
1126 void set_local_nb_interrupt_f0_MAX( void )
1127 1127 {
1128 1128 /** This function sets the value of the nb_interrupt_f0_MAX local parameter.
1129 1129 *
@@ -1137,7 +1137,7 void set_local_nb_interrupt_f0_MAX()
1137 1137 + parameter_dump_packet.sy_lfr_n_asm_p[1] ) * 100;
1138 1138 }
1139 1139
1140 void reset_local_sbm1_nb_cwf_sent()
1140 void reset_local_sbm1_nb_cwf_sent( void )
1141 1141 {
1142 1142 /** This function resets the value of the sbm1_nb_cwf_sent local parameter.
1143 1143 *
@@ -1149,7 +1149,7 void reset_local_sbm1_nb_cwf_sent()
1149 1149 param_local.local_sbm1_nb_cwf_sent = 0;
1150 1150 }
1151 1151
1152 void reset_local_sbm2_nb_cwf_sent()
1152 void reset_local_sbm2_nb_cwf_sent( void )
1153 1153 {
1154 1154 /** This function resets the value of the sbm2_nb_cwf_sent local parameter.
1155 1155 *
General Comments 0
You need to be logged in to leave comments. Login now