##// END OF EJS Templates
First version of the rings for the waveform picker.
paul -
r87:aa2133db3e0a VHDLib206
parent child
Show More
@@ -1,21 +1,21
1 1 #############################################################################
2 2 # Makefile for building: bin/fsw
3 # Generated by qmake (2.01a) (Qt 4.8.5) on: Thu Nov 21 17:20:36 2013
3 # Generated by qmake (2.01a) (Qt 4.8.5) on: Mon Jan 20 12:52:59 2014
4 4 # Project: fsw-qt.pro
5 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++ CONFIG+=debug -o Makefile fsw-qt.pro
7 7 #############################################################################
8 8
9 9 ####### Compiler, tools and options
10 10
11 11 CC = sparc-rtems-gcc
12 12 CXX = sparc-rtems-g++
13 DEFINES = -DSW_VERSION_N1=1 -DSW_VERSION_N2=0 -DSW_VERSION_N3=0 -DSW_VERSION_N4=1 -DPRINT_MESSAGES_ON_CONSOLE
14 CFLAGS = -pipe -O3 -Wall $(DEFINES)
13 DEFINES = -DSW_VERSION_N1=1 -DSW_VERSION_N2=0 -DSW_VERSION_N3=0 -DSW_VERSION_N4=1 -DPRINT_MESSAGES_ON_CONSOLE -DDEBUG_MESSAGES
14 CFLAGS = -pipe -g -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
17 17 LINK = sparc-rtems-g++
18 LFLAGS =
18 LFLAGS = -g
19 19 LIBS = $(SUBLIBS)
20 20 AR = sparc-rtems-ar rcs
21 21 RANLIB =
@@ -76,7 +76,7 DIST = /usr/lib64/qt4/mkspecs/c
76 76 /usr/lib64/qt4/mkspecs/features/exclusive_builds.prf \
77 77 /usr/lib64/qt4/mkspecs/features/default_pre.prf \
78 78 sparc.pri \
79 /usr/lib64/qt4/mkspecs/features/release.prf \
79 /usr/lib64/qt4/mkspecs/features/debug.prf \
80 80 /usr/lib64/qt4/mkspecs/features/default_post.prf \
81 81 /usr/lib64/qt4/mkspecs/features/shared.prf \
82 82 /usr/lib64/qt4/mkspecs/features/unix/gdb_dwarf_index.prf \
@@ -118,6 +118,7 all: Makefile $(TARGET)
118 118 $(TARGET): $(OBJECTS)
119 119 @$(CHK_DIR_EXISTS) bin/ || $(MKDIR) bin/
120 120 $(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJCOMP) $(LIBS)
121 { test -n "$(DESTDIR)" && DESTDIR="$(DESTDIR)" || DESTDIR=.; } && test $$(gdb --version | sed -e 's,[^0-9]\+\([0-9]\)\.\([0-9]\).*,\1\2,;q') -gt 72 && gdb --nx --batch --quiet -ex 'set confirm off' -ex "save gdb-index $$DESTDIR" -ex quit '$(TARGET)' && test -f $(TARGET).gdb-index && sparc-rtems-objcopy --add-section '.gdb_index=$(TARGET).gdb-index' --set-section-flags '.gdb_index=readonly' '$(TARGET)' '$(TARGET)' && rm -f $(TARGET).gdb-index || true
121 122
122 123 Makefile: fsw-qt.pro /usr/lib64/qt4/mkspecs/linux-g++/qmake.conf /usr/lib64/qt4/mkspecs/common/unix.conf \
123 124 /usr/lib64/qt4/mkspecs/common/linux.conf \
@@ -132,7 +133,7 Makefile: fsw-qt.pro /usr/lib64/qt4/mks
132 133 /usr/lib64/qt4/mkspecs/features/exclusive_builds.prf \
133 134 /usr/lib64/qt4/mkspecs/features/default_pre.prf \
134 135 sparc.pri \
135 /usr/lib64/qt4/mkspecs/features/release.prf \
136 /usr/lib64/qt4/mkspecs/features/debug.prf \
136 137 /usr/lib64/qt4/mkspecs/features/default_post.prf \
137 138 /usr/lib64/qt4/mkspecs/features/shared.prf \
138 139 /usr/lib64/qt4/mkspecs/features/unix/gdb_dwarf_index.prf \
@@ -142,7 +143,7 Makefile: fsw-qt.pro /usr/lib64/qt4/mks
142 143 /usr/lib64/qt4/mkspecs/features/yacc.prf \
143 144 /usr/lib64/qt4/mkspecs/features/lex.prf \
144 145 /usr/lib64/qt4/mkspecs/features/include_source_dir.prf
145 $(QMAKE) -spec /usr/lib64/qt4/mkspecs/linux-g++ -o Makefile fsw-qt.pro
146 $(QMAKE) -spec /usr/lib64/qt4/mkspecs/linux-g++ CONFIG+=debug -o Makefile fsw-qt.pro
146 147 /usr/lib64/qt4/mkspecs/common/unix.conf:
147 148 /usr/lib64/qt4/mkspecs/common/linux.conf:
148 149 /usr/lib64/qt4/mkspecs/common/gcc-base.conf:
@@ -156,7 +157,7 Makefile: fsw-qt.pro /usr/lib64/qt4/mks
156 157 /usr/lib64/qt4/mkspecs/features/exclusive_builds.prf:
157 158 /usr/lib64/qt4/mkspecs/features/default_pre.prf:
158 159 sparc.pri:
159 /usr/lib64/qt4/mkspecs/features/release.prf:
160 /usr/lib64/qt4/mkspecs/features/debug.prf:
160 161 /usr/lib64/qt4/mkspecs/features/default_post.prf:
161 162 /usr/lib64/qt4/mkspecs/features/shared.prf:
162 163 /usr/lib64/qt4/mkspecs/features/unix/gdb_dwarf_index.prf:
@@ -167,7 +168,7 sparc.pri:
167 168 /usr/lib64/qt4/mkspecs/features/lex.prf:
168 169 /usr/lib64/qt4/mkspecs/features/include_source_dir.prf:
169 170 qmake: FORCE
170 @$(QMAKE) -spec /usr/lib64/qt4/mkspecs/linux-g++ -o Makefile fsw-qt.pro
171 @$(QMAKE) -spec /usr/lib64/qt4/mkspecs/linux-g++ CONFIG+=debug -o Makefile fsw-qt.pro
171 172
172 173 dist:
173 174 @$(CHK_DIR_EXISTS) obj/fsw1.0.0 || $(MKDIR) obj/fsw1.0.0
@@ -1,7 +1,7
1 1 TEMPLATE = app
2 2 # CONFIG += console v8 sim
3 3 # CONFIG options = verbose *** boot_messages *** debug_messages *** cpu_usage_report *** stack_report *** gsa
4 CONFIG += console verbose
4 CONFIG += console verbose debug_messages
5 5 CONFIG -= qt
6 6
7 7 include(./sparc.pri)
@@ -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-21T16:58:13. -->
3 <!-- Written by QtCreator 3.0.0, 2014-01-21T06:52:06. -->
4 4 <qtcreator>
5 5 <data>
6 6 <variable>ProjectExplorer.Project.ActiveTarget</variable>
@@ -15,13 +15,13
15 15 <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
16 16 <value type="QString" key="language">Cpp</value>
17 17 <valuemap type="QVariantMap" key="value">
18 <value type="QString" key="CurrentPreferences">CppGlobal</value>
18 <value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
19 19 </valuemap>
20 20 </valuemap>
21 21 <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
22 22 <value type="QString" key="language">QmlJS</value>
23 23 <valuemap type="QVariantMap" key="value">
24 <value type="QString" key="CurrentPreferences">QmlJSGlobal</value>
24 <value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
25 25 </valuemap>
26 26 </valuemap>
27 27 <value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
@@ -58,6 +58,7
58 58 <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
59 59 <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
60 60 <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
61 <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/opt/DEV_PLE/FSW-qt</value>
61 62 <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
62 63 <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
63 64 <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
@@ -112,11 +113,11
112 113 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Release</value>
113 114 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
114 115 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
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="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
117 117 <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">false</value>
118 118 </valuemap>
119 119 <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
120 <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/opt/DEV_PLE/FSW-qt</value>
120 121 <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
121 122 <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
122 123 <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
@@ -172,7 +173,6
172 173 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
173 174 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
174 175 <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
175 <value type="QString" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory">/opt/DEV_PLE/FSW-qt</value>
176 176 <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">false</value>
177 177 </valuemap>
178 178 <value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">2</value>
@@ -191,7 +191,6
191 191 <value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
192 192 <valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
193 193 <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
194 <value type="bool" key="Analyzer.Project.UseGlobal">true</value>
195 194 <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
196 195 <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
197 196 <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
@@ -201,8 +200,12
201 200 <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
202 201 <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
203 202 <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
203 <value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
204 204 <value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
205 205 <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
206 <value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
207 <value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
208 <value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
206 209 <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
207 210 <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
208 211 <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
@@ -239,141 +242,7
239 242 <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
240 243 <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
241 244 </valuemap>
242 <value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
243 </valuemap>
244 </data>
245 <data>
246 <variable>ProjectExplorer.Project.Target.1</variable>
247 <valuemap type="QVariantMap">
248 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop2</value>
249 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop2</value>
250 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{e96c4de1-323d-4095-8746-d006ca3bd573}</value>
251 <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
252 <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
253 <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
254 <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
255 <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
256 <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
257 <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
258 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
259 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
260 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
261 <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
262 <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibraryAuto">false</value>
263 <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
264 <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
265 </valuemap>
266 <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
267 <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
268 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
269 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
270 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
271 <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
272 <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
273 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
274 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
275 </valuemap>
276 <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
277 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
278 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
279 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
280 </valuemap>
281 <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
282 <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
283 <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
284 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
285 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
286 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
287 <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
288 <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
289 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
290 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
291 </valuemap>
292 <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
293 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
294 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
295 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
296 </valuemap>
297 <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
298 <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
299 <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
300 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Release</value>
301 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
302 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
303 <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
304 <value type="QString" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory">/opt/DEV_PLE/FSW-qt</value>
305 <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">false</value>
306 </valuemap>
307 <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
308 <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
309 <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
310 <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
311 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
312 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
313 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
314 <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
315 <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibraryAuto">false</value>
316 <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
317 <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
318 </valuemap>
319 <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
320 <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
321 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
322 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
323 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
324 <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
325 <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
326 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
327 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
328 </valuemap>
329 <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
330 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
331 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
332 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
333 </valuemap>
334 <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
335 <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
336 <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
337 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
338 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
339 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
340 <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
341 <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
342 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
343 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
344 </valuemap>
345 <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
346 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
347 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
348 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
349 </valuemap>
350 <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
351 <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
352 <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
353 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Release2</value>
354 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
355 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
356 <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
357 <value type="QString" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory">/opt/DEV_PLE/FSW-qt</value>
358 <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">false</value>
359 </valuemap>
360 <value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">2</value>
361 <valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
362 <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
363 <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
364 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
365 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
366 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
367 </valuemap>
368 <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
369 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy locally</value>
370 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
371 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
372 </valuemap>
373 <value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
374 <valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
375 <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
376 <value type="bool" key="Analyzer.Project.UseGlobal">true</value>
245 <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.1">
377 246 <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
378 247 <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
379 248 <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
@@ -383,8 +252,12
383 252 <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
384 253 <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
385 254 <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
255 <value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
386 256 <value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
387 257 <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
258 <value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
259 <value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
260 <value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
388 261 <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
389 262 <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
390 263 <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
@@ -404,16 +277,15
404 277 <value type="int">13</value>
405 278 <value type="int">14</value>
406 279 </valuelist>
407 <value type="int" key="PE.EnvironmentAspect.Base">2</value>
280 <value type="int" key="PE.EnvironmentAspect.Base">-1</value>
408 281 <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
409 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">fsw-qt</value>
282 <value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.Arguments"></value>
283 <value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.Executable">grmon</value>
284 <value type="bool" key="ProjectExplorer.CustomExecutableRunConfiguration.UseTerminal">false</value>
285 <value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.WorkingDirectory">%{buildDir}</value>
286 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Run grmon</value>
410 287 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
411 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:/opt/DEV_PLE/FSW-qt/fsw-qt.pro</value>
412 <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments"></value>
413 <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">fsw-qt.pro</value>
414 <value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseDyldImageSuffix">false</value>
415 <value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseTerminal">true</value>
416 <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory"></value>
288 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.CustomExecutableRunConfiguration</value>
417 289 <value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
418 290 <value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
419 291 <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
@@ -421,12 +293,12
421 293 <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
422 294 <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
423 295 </valuemap>
424 <value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
296 <value type="int" key="ProjectExplorer.Target.RunConfigurationCount">2</value>
425 297 </valuemap>
426 298 </data>
427 299 <data>
428 300 <variable>ProjectExplorer.Project.TargetCount</variable>
429 <value type="int">2</value>
301 <value type="int">1</value>
430 302 </data>
431 303 <data>
432 304 <variable>ProjectExplorer.Project.Updater.EnvironmentId</variable>
@@ -434,6 +306,6
434 306 </data>
435 307 <data>
436 308 <variable>ProjectExplorer.Project.Updater.FileVersion</variable>
437 <value type="int">14</value>
309 <value type="int">15</value>
438 310 </data>
439 311 </qtcreator>
@@ -13,6 +13,16
13 13 // flight software version
14 14 // this parameters is handled by the Qt project options
15 15
16 #define NB_SAMPLES_PER_SNAPSHOT 2048
17 #define TIME_OFFSET 2
18 #define WAVEFORM_EXTENDED_HEADER_OFFSET 22
19 #define NB_BYTES_SWF_BLK (2 * 6)
20 #define NB_WORDS_SWF_BLK 3
21 #define NB_BYTES_CWF3_LIGHT_BLK 6
22 #define WFRM_INDEX_OF_LAST_PACKET 6 // waveforms are transmitted in groups of 2048 blocks, 6 packets of 340 and 1 of 8
23 #define NB_RING_NODES_F1 5 // AT LEAST 3
24 #define NB_RING_NODES_F2 5 // AT LEAST 3
25
16 26 //**********
17 27 // LFR MODES
18 28 #define LFR_MODE_STANDBY 0
@@ -36,7 +46,7
36 46 #define DEFAULT_SY_LFR_COMMON1 0x10 // default value 0 0 0 1 0 0 0 0
37 47 // NORM
38 48 #define SY_LFR_N_SWF_L 2048 // nb sample
39 #define SY_LFR_N_SWF_P 296 // sec
49 #define SY_LFR_N_SWF_P 20 // sec
40 50 #define SY_LFR_N_ASM_P 3600 // sec
41 51 #define SY_LFR_N_BP_P0 4 // sec
42 52 #define SY_LFR_N_BP_P1 20 // sec
@@ -126,30 +136,21
126 136
127 137 #define TASK_PRIORITY_SPIQ 5
128 138 #define TASK_PRIORITY_SMIQ 10
129 //
130 139 #define TASK_PRIORITY_WTDG 20
131 //
132 140 #define TASK_PRIORITY_HOUS 30
133 //
134 141 #define TASK_PRIORITY_CWF1 35 // CWF1 and CWF2 are never running together
135 142 #define TASK_PRIORITY_CWF2 35 //
136 //
137 143 #define TASK_PRIORITY_WFRM 40
138 144 #define TASK_PRIORITY_CWF3 40 // there is a printf in this function, be careful with its priority wrt CWF1
139 //
140 145 #define TASK_PRIORITY_SEND 45
141 //
142 146 #define TASK_PRIORITY_RECV 50
143 147 #define TASK_PRIORITY_ACTN 50
144 //
145 148 #define TASK_PRIORITY_AVF0 60
146 149 #define TASK_PRIORITY_BPF0 60
147 150 #define TASK_PRIORITY_MATR 100
148 151 #define TASK_PRIORITY_STAT 200
149 152 #define TASK_PRIORITY_DUMB 200
150 153
151 #define SEMQ_PRIORITY_CEILING 30
152
153 154 #define ACTION_MSG_QUEUE_COUNT 10
154 155 #define ACTION_MSG_PKTS_COUNT 50
155 156 #define ACTION_MSG_PKTS_MAX_SIZE (PACKET_LENGTH_HK + CCSDS_TC_TM_PACKET_OFFSET + CCSDS_PROTOCOLE_EXTRA_BYTES)
@@ -192,14 +193,6
192 193
193 194 #define CPU_USAGE_REPORT_PERIOD 6 // * 10 s = period
194 195
195 #define NB_SAMPLES_PER_SNAPSHOT 2048
196 #define TIME_OFFSET 2
197 #define WAVEFORM_EXTENDED_HEADER_OFFSET 22
198 #define NB_BYTES_SWF_BLK (2 * 6)
199 #define NB_WORDS_SWF_BLK 3
200 #define NB_BYTES_CWF3_LIGHT_BLK 6
201 #define WFRM_INDEX_OF_LAST_PACKET 6 // waveforms are transmitted in groups of 2048 blocks, 6 packets of 340 and 1 of 8
202
203 196 struct param_local_str{
204 197 unsigned int local_sbm1_nb_cwf_sent;
205 198 unsigned int local_sbm1_nb_cwf_max;
@@ -12,20 +12,29
12 12
13 13 #define pi 3.1415
14 14
15 typedef struct ring_node
16 {
17 struct ring_node *previous;
18 int buffer_address;
19 struct ring_node *next;
20 unsigned int status;
21 } ring_node;
22
15 23 extern int fdSPW;
24
25 //*****************
26 // waveform buffers
27 // F0
16 28 extern volatile int wf_snap_f0[ ];
17 //
18 extern volatile int wf_snap_f1[ ];
19 extern volatile int wf_snap_f1_bis[ ];
20 extern volatile int wf_snap_f1_norm[ ];
21 //
22 extern volatile int wf_snap_f2[ ];
23 extern volatile int wf_snap_f2_bis[ ];
24 extern volatile int wf_snap_f2_norm[ ];
25 //
29 // F1
30 extern volatile int wf_snap_f1[ ][ NB_SAMPLES_PER_SNAPSHOT * NB_WORDS_SWF_BLK + TIME_OFFSET ];
31 // F2
32 extern volatile int wf_snap_f2[ ][ NB_SAMPLES_PER_SNAPSHOT * NB_WORDS_SWF_BLK + TIME_OFFSET ];
33 // F3
26 34 extern volatile int wf_cont_f3[ ];
27 35 extern volatile int wf_cont_f3_bis[ ];
28 36 extern char wf_cont_f3_light[ ];
37
29 38 extern waveform_picker_regs_t *waveform_picker_regs;
30 39 extern time_management_regs_t *time_management_regs;
31 40 extern Packet_TM_LFR_HK_t housekeeping_packet;
@@ -40,7 +49,6 extern rtems_id Task_id[20];
40 49 extern unsigned char lfrCurrentMode;
41 50
42 51 rtems_isr waveforms_isr( rtems_vector_number vector );
43 rtems_isr waveforms_simulator_isr( rtems_vector_number vector );
44 52 rtems_task wfrm_task( rtems_task_argument argument );
45 53 rtems_task cwf3_task( rtems_task_argument argument );
46 54 rtems_task cwf2_task( rtems_task_argument argument );
@@ -49,13 +57,13 rtems_task cwf1_task( rtems_task_argumen
49 57 //******************
50 58 // general functions
51 59 void init_waveforms( void );
60 void init_waveform_rings( void );
61 void reset_current_ring_nodes( void );
52 62 //
53 63 int init_header_snapshot_wf_table( unsigned int sid, Header_TM_LFR_SCIENCE_SWF_t *headerSWF );
54 64 int init_header_continuous_wf_table( unsigned int sid, Header_TM_LFR_SCIENCE_CWF_t *headerCWF );
55 65 int init_header_continuous_wf3_light_table( Header_TM_LFR_SCIENCE_CWF_t *headerCWF );
56 66 //
57 void reset_waveforms( void );
58 //
59 67 int send_waveform_SWF( volatile int *waveform, unsigned int sid, Header_TM_LFR_SCIENCE_SWF_t *headerSWF, rtems_id queue_id );
60 68 int send_waveform_CWF( volatile int *waveform, unsigned int sid, Header_TM_LFR_SCIENCE_CWF_t *headerCWF, rtems_id queue_id );
61 69 int send_waveform_CWF3( volatile int *waveform, unsigned int sid, Header_TM_LFR_SCIENCE_CWF_t *headerCWF, rtems_id queue_id );
@@ -31,25 +31,12 int fdSPW = 0;
31 31 int fdUART = 0;
32 32 unsigned char lfrCurrentMode;
33 33
34 // APB CONFIGURATION REGISTERS
35 time_management_regs_t *time_management_regs = (time_management_regs_t*) REGS_ADDR_TIME_MANAGEMENT;
36 gptimer_regs_t *gptimer_regs = (gptimer_regs_t *) REGS_ADDR_GPTIMER;
37 #ifdef GSA
38 #else
39 waveform_picker_regs_t *waveform_picker_regs = (waveform_picker_regs_t*) REGS_ADDR_WAVEFORM_PICKER;
40 #endif
41 spectral_matrix_regs_t *spectral_matrix_regs = (spectral_matrix_regs_t*) REGS_ADDR_SPECTRAL_MATRIX;
42
43 34 // WAVEFORMS GLOBAL VARIABLES // 2048 * 3 * 4 + 2 * 4 = 24576 + 8 bytes
44 35 volatile int wf_snap_f0[ NB_SAMPLES_PER_SNAPSHOT * NB_WORDS_SWF_BLK + TIME_OFFSET ];
45 36 //
46 volatile int wf_snap_f1[ NB_SAMPLES_PER_SNAPSHOT * NB_WORDS_SWF_BLK + TIME_OFFSET ];
47 volatile int wf_snap_f1_bis[ NB_SAMPLES_PER_SNAPSHOT * NB_WORDS_SWF_BLK + TIME_OFFSET ];
48 volatile int wf_snap_f1_norm[ NB_SAMPLES_PER_SNAPSHOT * NB_WORDS_SWF_BLK + TIME_OFFSET ];
37 volatile int wf_snap_f1[NB_RING_NODES_F1][ NB_SAMPLES_PER_SNAPSHOT * NB_WORDS_SWF_BLK + TIME_OFFSET ];
49 38 //
50 volatile int wf_snap_f2[ NB_SAMPLES_PER_SNAPSHOT * NB_WORDS_SWF_BLK + TIME_OFFSET ];
51 volatile int wf_snap_f2_bis[ NB_SAMPLES_PER_SNAPSHOT * NB_WORDS_SWF_BLK + TIME_OFFSET ];
52 volatile int wf_snap_f2_norm[ NB_SAMPLES_PER_SNAPSHOT * NB_WORDS_SWF_BLK + TIME_OFFSET ];
39 volatile int wf_snap_f2[NB_RING_NODES_F2][ NB_SAMPLES_PER_SNAPSHOT * NB_WORDS_SWF_BLK + TIME_OFFSET ];
53 40 //
54 41 volatile int wf_cont_f3[ NB_SAMPLES_PER_SNAPSHOT * NB_WORDS_SWF_BLK + TIME_OFFSET ];
55 42 volatile int wf_cont_f3_bis[ NB_SAMPLES_PER_SNAPSHOT * NB_WORDS_SWF_BLK + TIME_OFFSET ];
@@ -75,6 +62,15 volatile int spec_mat_f1_bis[ SM_HEADER
75 62 volatile int spec_mat_f2[ SM_HEADER + TOTAL_SIZE_SM ];
76 63 volatile int spec_mat_f2_bis[ SM_HEADER + TOTAL_SIZE_SM ];
77 64
65 // APB CONFIGURATION REGISTERS
66 time_management_regs_t *time_management_regs = (time_management_regs_t*) REGS_ADDR_TIME_MANAGEMENT;
67 gptimer_regs_t *gptimer_regs = (gptimer_regs_t *) REGS_ADDR_GPTIMER;
68 #ifdef GSA
69 #else
70 waveform_picker_regs_t *waveform_picker_regs = (waveform_picker_regs_t*) REGS_ADDR_WAVEFORM_PICKER;
71 #endif
72 spectral_matrix_regs_t *spectral_matrix_regs = (spectral_matrix_regs_t*) REGS_ADDR_SPECTRAL_MATRIX;
73
78 74 // MODE PARAMETERS
79 75 Packet_TM_LFR_PARAMETER_DUMP_t parameter_dump_packet;
80 76 struct param_local_str param_local;
@@ -85,6 +85,7 rtems_task Init( rtems_task_argument ign
85 85 set_apbuart_scaler_reload_register(REGS_ADDR_APBUART, APBUART_SCALER_RELOAD_VALUE);
86 86
87 87 reset_wfp_burst_enable(); // stop the waveform picker if it was running
88 init_waveform_rings(); // initialize the waveform rings
88 89
89 90 init_parameter_dump();
90 91 init_local_mode_parameters();
@@ -573,6 +573,9 int enter_sbm1_mode()
573 573 #ifdef GSA
574 574 LEON_Unmask_interrupt( IRQ_SM );
575 575 #else
576 //****************
577 // waveform picker
578 reset_current_ring_nodes();
576 579 reset_waveform_picker_regs();
577 580 set_wfp_burst_enable_register(LFR_MODE_SBM1);
578 581 LEON_Clear_interrupt( IRQ_WAVEFORM_PICKER );
@@ -605,6 +608,9 int enter_sbm2_mode()
605 608 #ifdef GSA
606 609 LEON_Unmask_interrupt( IRQ_SM );
607 610 #else
611 //****************
612 // waveform picker
613 reset_current_ring_nodes();
608 614 reset_waveform_picker_regs();
609 615 set_wfp_burst_enable_register(LFR_MODE_SBM2);
610 616 LEON_Clear_interrupt( IRQ_WAVEFORM_PICKER );
@@ -9,6 +9,8
9 9
10 10 #include "wf_handler.h"
11 11
12 //*****************
13 // waveform headers
12 14 // SWF
13 15 Header_TM_LFR_SCIENCE_SWF_t headerSWF_F0[7];
14 16 Header_TM_LFR_SCIENCE_SWF_t headerSWF_F1[7];
@@ -20,7 +22,17 Header_TM_LFR_SCIENCE_CWF_t headerCWF_F2
20 22 Header_TM_LFR_SCIENCE_CWF_t headerCWF_F3[7];
21 23 Header_TM_LFR_SCIENCE_CWF_t headerCWF_F3_light[7];
22 24
23 unsigned char doubleSendCWF1 = 0;
25 //**************
26 // waveform ring
27 ring_node waveform_ring_f1[NB_RING_NODES_F1];
28 ring_node waveform_ring_f2[NB_RING_NODES_F2];
29 ring_node *current_ring_node_f1;
30 ring_node *ring_node_to_send_swf_f1;
31 ring_node *ring_node_to_send_cwf_f1;
32 ring_node *current_ring_node_f2;
33 ring_node *ring_node_to_send_swf_f2;
34 ring_node *ring_node_to_send_cwf_f2;
35
24 36 unsigned char doubleSendCWF2 = 0;
25 37
26 38 rtems_isr waveforms_isr( rtems_vector_number vector )
@@ -74,11 +86,20 rtems_isr waveforms_isr( rtems_vector_nu
74 86 else {
75 87 if ( (waveform_picker_regs->status & 0x7) == 0x7 ){ // f2 f1 and f0 are full
76 88 waveform_picker_regs->burst_enable = waveform_picker_regs->burst_enable & 0x08;
89
90 ring_node_to_send_swf_f1 = current_ring_node_f1;
91 current_ring_node_f1 = current_ring_node_f1->next;
92 waveform_picker_regs->addr_data_f1 = current_ring_node_f1->buffer_address;
93
94 ring_node_to_send_swf_f2 = current_ring_node_f2;
95 current_ring_node_f2 = current_ring_node_f2->next;
96 waveform_picker_regs->addr_data_f2 = current_ring_node_f2->buffer_address;
97
77 98 if (rtems_event_send( Task_id[TASKID_WFRM], RTEMS_EVENT_MODE_NORMAL ) != RTEMS_SUCCESSFUL) {
78 99 rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_2 );
79 100 }
80 // waveform_picker_regs->status = waveform_picker_regs->status & 0x00;
81 waveform_picker_regs->status = waveform_picker_regs->status & 0xfffff888;
101
102 waveform_picker_regs->status = waveform_picker_regs->status & 0xfffff888; // [1000 1000 1000]
82 103 waveform_picker_regs->burst_enable = waveform_picker_regs->burst_enable | 0x07; // [0111] enable f2 f1 f0
83 104 }
84 105 }
@@ -91,19 +112,16 rtems_isr waveforms_isr( rtems_vector_nu
91 112 #ifdef GSA
92 113 PRINTF("in waveform_isr *** unexpected waveform picker interruption\n")
93 114 #else
94 if ((waveform_picker_regs->status & 0x04) == 0x04){ // [0100] check the f2 full bit
115 if ( (waveform_picker_regs->status & 0x04) == 0x04 ){ // [0100] check the f2 full bit
95 116 // (1) change the receiving buffer for the waveform picker
96 if (waveform_picker_regs->addr_data_f2 == (int) wf_snap_f2) {
97 waveform_picker_regs->addr_data_f2 = (int) (wf_snap_f2_bis);
98 }
99 else {
100 waveform_picker_regs->addr_data_f2 = (int) (wf_snap_f2);
101 }
117 ring_node_to_send_cwf_f2 = current_ring_node_f2;
118 current_ring_node_f2 = current_ring_node_f2->next;
119 waveform_picker_regs->addr_data_f2 = current_ring_node_f2->buffer_address;
102 120 // (2) send an event for the waveforms transmission
103 if (rtems_event_send( Task_id[TASKID_CWF2], RTEMS_EVENT_MODE_BURST ) != RTEMS_SUCCESSFUL) {
121 if (rtems_event_send( Task_id[TASKID_CWF1], RTEMS_EVENT_MODE_SBM2 ) != RTEMS_SUCCESSFUL) {
104 122 rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_2 );
105 123 }
106 waveform_picker_regs->status = waveform_picker_regs->status & 0xfffffbbb; // [1111 1011 1011 1011] f2 bits = 0
124 waveform_picker_regs->status = waveform_picker_regs->status & 0xfffffbbb; // [1111 1011 1011 1011] f2 bit = 0
107 125 }
108 126 #endif
109 127 break;
@@ -114,35 +132,25 rtems_isr waveforms_isr( rtems_vector_nu
114 132 #ifdef GSA
115 133 PRINTF("in waveform_isr *** unexpected waveform picker interruption\n")
116 134 #else
117 if ((waveform_picker_regs->status & 0x02) == 0x02){ // [0010] check the f1 full bit
135 if ( (waveform_picker_regs->status & 0x02) == 0x02 ) { // [0010] check the f1 full bit
118 136 // (1) change the receiving buffer for the waveform picker
119 if ( param_local.local_sbm1_nb_cwf_sent == (param_local.local_sbm1_nb_cwf_max-1) )
120 {
121 waveform_picker_regs->addr_data_f1 = (int) (wf_snap_f1_norm);
122 }
123 else if ( waveform_picker_regs->addr_data_f1 == (int) wf_snap_f1_norm )
124 {
125 doubleSendCWF1 = 1;
126 waveform_picker_regs->addr_data_f1 = (int) (wf_snap_f1);
127 }
128 else if ( waveform_picker_regs->addr_data_f1 == (int) wf_snap_f1 ) {
129 waveform_picker_regs->addr_data_f1 = (int) (wf_snap_f1_bis);
130 }
131 else {
132 waveform_picker_regs->addr_data_f1 = (int) (wf_snap_f1);
133 }
137 ring_node_to_send_cwf_f1 = current_ring_node_f1;
138 current_ring_node_f1 = current_ring_node_f1->next;
139 waveform_picker_regs->addr_data_f1 = current_ring_node_f1->buffer_address;
134 140 // (2) send an event for the waveforms transmission
135 141 if (rtems_event_send( Task_id[TASKID_CWF1], RTEMS_EVENT_MODE_SBM1 ) != RTEMS_SUCCESSFUL) {
136 142 rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_2 );
137 143 }
138 144 waveform_picker_regs->status = waveform_picker_regs->status & 0xfffffddd; // [1111 1101 1101 1101] f1 bit = 0
139 145 }
140 if ( ( (waveform_picker_regs->status & 0x05) == 0x05 ) ) { // [0101] check the f2 and f0 full bit
146 if ( (waveform_picker_regs->status & 0x01) == 0x01 ) { // [0001] check the f0 full bit
147 ring_node_to_send_swf_f1 = current_ring_node_f1->previous;
148 }
149 if ( (waveform_picker_regs->status & 0x04) == 0x04 ) { // [0100] check the f2 full bit
141 150 if (rtems_event_send( Task_id[TASKID_WFRM], RTEMS_EVENT_MODE_NORMAL ) != RTEMS_SUCCESSFUL) {
142 151 rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_2 );
143 152 }
144 153 waveform_picker_regs->status = waveform_picker_regs->status & 0xfffffaaa; // [1111 1010 1010 1010] f2 and f0 bits = 0
145 reset_local_sbm1_nb_cwf_sent();
146 154 }
147 155
148 156 #endif
@@ -154,38 +162,23 rtems_isr waveforms_isr( rtems_vector_nu
154 162 #ifdef GSA
155 163 PRINTF("in waveform_isr *** unexpected waveform picker interruption\n")
156 164 #else
157 if ((waveform_picker_regs->status & 0x04) == 0x04){ // [0100] check the f2 full bit
165 if ( (waveform_picker_regs->status & 0x04) == 0x04 ){ // [0100] check the f2 full bit
158 166 // (1) change the receiving buffer for the waveform picker
159 if ( param_local.local_sbm2_nb_cwf_sent == (param_local.local_sbm2_nb_cwf_max-1) )
160 {
161 waveform_picker_regs->addr_data_f2 = (int) (wf_snap_f2_norm);
162 }
163 else if ( waveform_picker_regs->addr_data_f2 == (int) wf_snap_f2_norm ) {
164 waveform_picker_regs->addr_data_f2 = (int) (wf_snap_f2);
165 doubleSendCWF2 = 1;
166 if (rtems_event_send( Task_id[TASKID_WFRM], RTEMS_EVENT_MODE_SBM2_WFRM ) != RTEMS_SUCCESSFUL) {
167 rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_2 );
168 }
169 reset_local_sbm2_nb_cwf_sent();
170 }
171 else if ( waveform_picker_regs->addr_data_f2 == (int) wf_snap_f2 ) {
172 waveform_picker_regs->addr_data_f2 = (int) (wf_snap_f2_bis);
173 }
174 else {
175 waveform_picker_regs->addr_data_f2 = (int) (wf_snap_f2);
176 }
167 ring_node_to_send_cwf_f2 = current_ring_node_f2;
168 current_ring_node_f2 = current_ring_node_f2->next;
169 waveform_picker_regs->addr_data_f2 = current_ring_node_f2->buffer_address;
177 170 // (2) send an event for the waveforms transmission
178 171 if (rtems_event_send( Task_id[TASKID_CWF2], RTEMS_EVENT_MODE_SBM2 ) != RTEMS_SUCCESSFUL) {
179 172 rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_2 );
180 173 }
181 174 waveform_picker_regs->status = waveform_picker_regs->status & 0xfffffbbb; // [1111 1011 1011 1011] f2 bit = 0
182 175 }
183 if ( ( (waveform_picker_regs->status & 0x03) == 0x03 ) ) { // [0011] f3 f2 f1 f0, f1 and f0 are full
184 if (rtems_event_send( Task_id[TASKID_WFRM], RTEMS_EVENT_MODE_SBM2 ) != RTEMS_SUCCESSFUL) {
185 rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_2 );
186 }
187 waveform_picker_regs->status = waveform_picker_regs->status & 0xfffffccc; // [1111 1100 1100 1100] f1, f0 bits = 0
188 }
176 // if ( (waveform_picker_regs->status & 0x03) == 0x03 ) { // [0011] f3 f2 f1 f0, f1 and f0 are full
177 // if (rtems_event_send( Task_id[TASKID_WFRM], RTEMS_EVENT_MODE_SBM2 ) != RTEMS_SUCCESSFUL) {
178 // rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_2 );
179 // }
180 // waveform_picker_regs->status = waveform_picker_regs->status & 0xfffffccc; // [1111 1100 1100 1100] f1, f0 bits = 0
181 // }
189 182 #endif
190 183 break;
191 184
@@ -196,34 +189,6 rtems_isr waveforms_isr( rtems_vector_nu
196 189 }
197 190 }
198 191
199 rtems_isr waveforms_simulator_isr( rtems_vector_number vector )
200 {
201 /** This is the interrupt sub routine called by the waveform picker simulator.
202 *
203 * This ISR is for debug purpose only.
204 *
205 */
206
207 unsigned char lfrMode;
208 lfrMode = (housekeeping_packet.lfr_status_word[0] & 0xf0) >> 4;
209
210 switch(lfrMode) {
211 case (LFR_MODE_STANDBY):
212 break;
213 case (LFR_MODE_NORMAL):
214 if (rtems_event_send( Task_id[TASKID_WFRM], RTEMS_EVENT_MODE_NORMAL ) != RTEMS_SUCCESSFUL) {
215 rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_5 );
216 }
217 break;
218 case (LFR_MODE_BURST):
219 break;
220 case (LFR_MODE_SBM1):
221 break;
222 case (LFR_MODE_SBM2):
223 break;
224 }
225 }
226
227 192 rtems_task wfrm_task(rtems_task_argument argument) //used with the waveform picker VHDL IP
228 193 {
229 194 /** This RTEMS task is dedicated to the transmission of snapshots of the NORMAL mode.
@@ -260,49 +225,17 rtems_task wfrm_task(rtems_task_argument
260 225 rtems_event_receive(RTEMS_EVENT_MODE_NORMAL | RTEMS_EVENT_MODE_SBM1
261 226 | RTEMS_EVENT_MODE_SBM2 | RTEMS_EVENT_MODE_SBM2_WFRM,
262 227 RTEMS_WAIT | RTEMS_EVENT_ANY, RTEMS_NO_TIMEOUT, &event_out);
263
228 DEBUG_PRINTF("in WFRM *** 2\n")
264 229 if (event_out == RTEMS_EVENT_MODE_NORMAL)
265 230 {
266 231 send_waveform_SWF(wf_snap_f0, SID_NORM_SWF_F0, headerSWF_F0, queue_id);
267 send_waveform_SWF(wf_snap_f1, SID_NORM_SWF_F1, headerSWF_F1, queue_id);
268 send_waveform_SWF(wf_snap_f2, SID_NORM_SWF_F2, headerSWF_F2, queue_id);
269 #ifdef GSA
270 waveform_picker_regs->status = waveform_picker_regs->status & 0xf888; // [1111 1000 1000 1000] f2, f1, f0 bits =0
271 #endif
272 }
273 else if (event_out == RTEMS_EVENT_MODE_SBM1)
274 {
275 send_waveform_SWF(wf_snap_f0, SID_NORM_SWF_F0, headerSWF_F0, queue_id);
276 send_waveform_SWF(wf_snap_f1_norm, SID_NORM_SWF_F1, headerSWF_F1, queue_id);
277 send_waveform_SWF(wf_snap_f2, SID_NORM_SWF_F2, headerSWF_F2, queue_id);
278 #ifdef GSA
279 waveform_picker_regs->status = waveform_picker_regs->status & 0xfffffaaa; // [1111 1010 1010 1010] f2, f0 bits = 0
280 #endif
281 }
282 else if (event_out == RTEMS_EVENT_MODE_SBM2)
283 {
284 send_waveform_SWF(wf_snap_f0, SID_NORM_SWF_F0, headerSWF_F0, queue_id);
285 send_waveform_SWF(wf_snap_f1, SID_NORM_SWF_F1, headerSWF_F1, queue_id);
286 #ifdef GSA
287 waveform_picker_regs->status = waveform_picker_regs->status & 0xfffffccc; // [1111 1100 1100 1100] f1, f0 bits = 0
288 #endif
289 }
290 else if (event_out == RTEMS_EVENT_MODE_SBM2_WFRM)
291 {
292 send_waveform_SWF(wf_snap_f2_norm, SID_NORM_SWF_F2, headerSWF_F2, queue_id);
232 send_waveform_SWF((volatile int*) ring_node_to_send_swf_f1->buffer_address, SID_NORM_SWF_F1, headerSWF_F1, queue_id);
233 send_waveform_SWF((volatile int*) ring_node_to_send_swf_f2->buffer_address, SID_NORM_SWF_F2, headerSWF_F2, queue_id);
293 234 }
294 235 else
295 236 {
296 237 PRINTF("in WFRM *** unexpected event")
297 238 }
298
299
300 #ifdef GSA
301 // irq processed, reset the related register of the timer unit
302 gptimer_regs->timer[TIMER_WF_SIMULATOR].ctrl = gptimer_regs->timer[TIMER_WF_SIMULATOR].ctrl | 0x00000010;
303 // clear the interruption
304 LEON_Unmask_interrupt( IRQ_WF );
305 #endif
306 239 }
307 240 }
308 241
@@ -383,39 +316,11 rtems_task cwf2_task(rtems_task_argument
383 316
384 317 if (event_out == RTEMS_EVENT_MODE_BURST)
385 318 {
386 // F2
387 #ifdef GSA
388 #else
389 if (waveform_picker_regs->addr_data_f2 == (int) wf_snap_f2) {
390 send_waveform_CWF( wf_snap_f2_bis, SID_BURST_CWF_F2, headerCWF_F2_BURST, queue_id );
391 }
392 else {
393 send_waveform_CWF( wf_snap_f2, SID_BURST_CWF_F2, headerCWF_F2_BURST, queue_id );
394 }
395 #endif
319 send_waveform_CWF( (volatile int *) ring_node_to_send_cwf_f2, SID_BURST_CWF_F2, headerCWF_F2_BURST, queue_id );
396 320 }
397
398 else if (event_out == RTEMS_EVENT_MODE_SBM2)
321 if (event_out == RTEMS_EVENT_MODE_SBM2)
399 322 {
400 #ifdef GSA
401 #else
402 if (doubleSendCWF2 == 1)
403 {
404 doubleSendCWF2 = 0;
405 send_waveform_CWF( wf_snap_f2_norm, SID_SBM2_CWF_F2, headerCWF_F2_SBM2, queue_id );
406 }
407 else if (waveform_picker_regs->addr_data_f2 == (int) wf_snap_f2) {
408 send_waveform_CWF( wf_snap_f2_bis, SID_SBM2_CWF_F2, headerCWF_F2_SBM2, queue_id );
409 }
410 else {
411 send_waveform_CWF( wf_snap_f2, SID_SBM2_CWF_F2, headerCWF_F2_SBM2, queue_id );
412 }
413 param_local.local_sbm2_nb_cwf_sent ++;
414 #endif
415 }
416 else
417 {
418 PRINTF1("in CWF2 *** ERR mode = %d\n", lfrCurrentMode)
323 send_waveform_CWF( (volatile int *) ring_node_to_send_cwf_f2, SID_BURST_CWF_F2, headerCWF_F2_BURST, queue_id );
419 324 }
420 325 }
421 326 }
@@ -449,28 +354,7 rtems_task cwf1_task(rtems_task_argument
449 354 // wait for an RTEMS_EVENT
450 355 rtems_event_receive( RTEMS_EVENT_MODE_SBM1,
451 356 RTEMS_WAIT | RTEMS_EVENT_ANY, RTEMS_NO_TIMEOUT, &event_out);
452 if (event_out == RTEMS_EVENT_MODE_SBM1)
453 {
454 #ifdef GSA
455 #else
456 if (doubleSendCWF1 == 1)
457 {
458 doubleSendCWF1 = 0;
459 send_waveform_CWF( wf_snap_f1_norm, SID_SBM1_CWF_F1, headerCWF_F1, queue_id );
460 }
461 else if (waveform_picker_regs->addr_data_f1 == (int) wf_snap_f1) {
462 send_waveform_CWF( wf_snap_f1_bis, SID_SBM1_CWF_F1, headerCWF_F1, queue_id );
463 }
464 else {
465 send_waveform_CWF( wf_snap_f1, SID_SBM1_CWF_F1, headerCWF_F1, queue_id );
466 }
467 param_local.local_sbm1_nb_cwf_sent ++;
468 #endif
469 }
470 else
471 {
472 PRINTF1("in CWF1 *** ERR mode = %d\n", lfrCurrentMode)
473 }
357 send_waveform_CWF((volatile int*) ring_node_to_send_cwf_f1->buffer_address, SID_SBM1_CWF_F1, headerCWF_F1, queue_id );
474 358 }
475 359 }
476 360
@@ -490,22 +374,74 void init_waveforms( void )
490 374
491 375 //***
492 376 // F1
493 wf_snap_f1[ (i* NB_WORDS_SWF_BLK) + 0 + TIME_OFFSET ] = 0x22221111;
494 wf_snap_f1[ (i* NB_WORDS_SWF_BLK) + 1 + TIME_OFFSET ] = 0x44443333;
495 wf_snap_f1[ (i* NB_WORDS_SWF_BLK) + 2 + TIME_OFFSET ] = 0xaaaa0000;
377 // wf_snap_f1[ (i* NB_WORDS_SWF_BLK) + 0 + TIME_OFFSET ] = 0x22221111;
378 // wf_snap_f1[ (i* NB_WORDS_SWF_BLK) + 1 + TIME_OFFSET ] = 0x44443333;
379 // wf_snap_f1[ (i* NB_WORDS_SWF_BLK) + 2 + TIME_OFFSET ] = 0xaaaa0000;
496 380
497 381 //***
498 382 // F2
499 wf_snap_f2[ (i* NB_WORDS_SWF_BLK) + 0 + TIME_OFFSET ] = 0x44443333;
500 wf_snap_f2[ (i* NB_WORDS_SWF_BLK) + 1 + TIME_OFFSET ] = 0x22221111;
501 wf_snap_f2[ (i* NB_WORDS_SWF_BLK) + 2 + TIME_OFFSET ] = 0xaaaa0000;
383 // wf_snap_f2[ (i* NB_WORDS_SWF_BLK) + 0 + TIME_OFFSET ] = 0x44443333;
384 // wf_snap_f2[ (i* NB_WORDS_SWF_BLK) + 1 + TIME_OFFSET ] = 0x22221111;
385 // wf_snap_f2[ (i* NB_WORDS_SWF_BLK) + 2 + TIME_OFFSET ] = 0xaaaa0000;
502 386
503 387 //***
504 388 // F3
505 //wf_cont_f3[ (i* NB_WORDS_SWF_BLK) + 0 ] = val1;
506 //wf_cont_f3[ (i* NB_WORDS_SWF_BLK) + 1 ] = val2;
507 //wf_cont_f3[ (i* NB_WORDS_SWF_BLK) + 2 ] = 0xaaaa0000;
389 // wf_cont_f3[ (i* NB_WORDS_SWF_BLK) + 0 ] = val1;
390 // wf_cont_f3[ (i* NB_WORDS_SWF_BLK) + 1 ] = val2;
391 // wf_cont_f3[ (i* NB_WORDS_SWF_BLK) + 2 ] = 0xaaaa0000;
392 }
393 }
394
395 void init_waveform_rings( void )
396 {
397 unsigned char i;
398
399 // F1 RING
400 waveform_ring_f1[0].next = (ring_node*) &waveform_ring_f1[1];
401 waveform_ring_f1[0].previous = (ring_node*) &waveform_ring_f1[NB_RING_NODES_F1-1];
402 waveform_ring_f1[0].buffer_address = (int) &wf_snap_f1[0][0];
403
404 waveform_ring_f1[NB_RING_NODES_F1-1].next = (ring_node*) &waveform_ring_f1[0];
405 waveform_ring_f1[NB_RING_NODES_F1-1].previous = (ring_node*) &waveform_ring_f1[NB_RING_NODES_F1-2];
406 waveform_ring_f1[NB_RING_NODES_F1-1].buffer_address = (int) &wf_snap_f1[NB_RING_NODES_F1-1][0];
407
408 for(i=1; i<NB_RING_NODES_F1-1; i++)
409 {
410 waveform_ring_f1[i].next = (ring_node*) &waveform_ring_f1[i+1];
411 waveform_ring_f1[i].previous = (ring_node*) &waveform_ring_f1[i-1];
412 waveform_ring_f1[i].buffer_address = (int) &wf_snap_f1[i][0];
508 413 }
414
415 // F2 RING
416 waveform_ring_f2[0].next = (ring_node*) &waveform_ring_f2[1];
417 waveform_ring_f2[0].previous = (ring_node*) &waveform_ring_f2[NB_RING_NODES_F2-1];
418 waveform_ring_f2[0].buffer_address = (int) &wf_snap_f2[0][0];
419
420 waveform_ring_f2[NB_RING_NODES_F2-1].next = (ring_node*) &waveform_ring_f2[0];
421 waveform_ring_f2[NB_RING_NODES_F2-1].previous = (ring_node*) &waveform_ring_f2[NB_RING_NODES_F2-2];
422 waveform_ring_f2[NB_RING_NODES_F2-1].buffer_address = (int) &wf_snap_f2[NB_RING_NODES_F2-1][0];
423
424 for(i=1; i<NB_RING_NODES_F2-1; i++)
425 {
426 waveform_ring_f2[i].next = (ring_node*) &waveform_ring_f2[i+1];
427 waveform_ring_f2[i].previous = (ring_node*) &waveform_ring_f2[i-1];
428 waveform_ring_f2[i].buffer_address = (int) &wf_snap_f2[i][0];
429 }
430
431 DEBUG_PRINTF1("waveform_ring_f1 @%x\n", (unsigned int) waveform_ring_f1)
432 DEBUG_PRINTF1("waveform_ring_f2 @%x\n", (unsigned int) waveform_ring_f2)
433
434 }
435
436 void reset_current_ring_nodes( void )
437 {
438 current_ring_node_f1 = waveform_ring_f1;
439 ring_node_to_send_cwf_f1 = waveform_ring_f1;
440 ring_node_to_send_swf_f1 = waveform_ring_f1;
441
442 current_ring_node_f2 = waveform_ring_f2;
443 ring_node_to_send_cwf_f2 = waveform_ring_f2;
444 ring_node_to_send_swf_f2 = waveform_ring_f2;
509 445 }
510 446
511 447 int init_header_snapshot_wf_table( unsigned int sid, Header_TM_LFR_SCIENCE_SWF_t *headerSWF)
@@ -686,36 +622,6 int init_header_continuous_wf3_light_tab
686 622 return LFR_SUCCESSFUL;
687 623 }
688 624
689 void reset_waveforms( void )
690