##// END OF EJS Templates
hg remove src/TC_handler_TEST.c
paul@pc-solar1.lab-lpp.local -
r24:013e82343013 default
parent child
Show More
1 NO CONTENT: modified file, binary diff hidden
@@ -1,51 +1,51
1 1 TEMPLATE = app
2 2 # CONFIG += console v8 sim
3 3 # CONFIG options = verbose *** cpu_usage_report *** gsa
4 4 CONFIG += console verbose
5 5 CONFIG -= qt
6 6
7 7 include(./sparc.pri)
8 8
9 9 # flight software version
10 SWVERSION=-0-5
10 SWVERSION=-0-6
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=5
14 DEFINES += SW_VERSION_N4=6
15 15
16 16 contains( CONFIG, verbose ) {
17 17 DEFINES += PRINT_MESSAGES_ON_CONSOLE
18 18 }
19 19
20 20 contains( CONFIG, cpu_usage_report ) {
21 21 DEFINES += PRINT_TASK_STATISTICS
22 22 }
23 23
24 24 TARGET = fsw
25 25 contains( CONFIG, gsa ) {
26 26 DEFINES += GSA
27 27 TARGET = fsw-gsa
28 28 }
29 29
30 30 INCLUDEPATH += \
31 31 ../src \
32 32 ../header
33 33
34 34 SOURCES += \
35 35 ../src/wf_handler.c \
36 36 ../src/tc_handler.c \
37 37 ../src/fsw_processing.c \
38 38 ../src/fsw_misc.c \
39 39 ../src/fsw_init.c \
40 40 ../src/fsw_globals.c
41 41
42 42 HEADERS += \
43 43 ../header/wf_handler.h \
44 44 ../header/tc_handler.h \
45 45 ../header/grlib_regs.h \
46 46 ../header/fsw_processing.h \
47 47 ../header/fsw_params.h \
48 48 ../header/fsw_misc.h \
49 49 ../header/fsw_init.h \
50 50 ../header/ccsds_types.h
51 51
@@ -1,265 +1,265
1 1 <?xml version="1.0" encoding="UTF-8"?>
2 2 <!DOCTYPE QtCreatorProject>
3 <!-- Written by Qt Creator 2.4.1, 2013-06-28T14:26:12. -->
3 <!-- Written by Qt Creator 2.4.1, 2013-07-05T07:07:58. -->
4 4 <qtcreator>
5 5 <data>
6 6 <variable>ProjectExplorer.Project.ActiveTarget</variable>
7 7 <value type="int">0</value>
8 8 </data>
9 9 <data>
10 10 <variable>ProjectExplorer.Project.EditorSettings</variable>
11 11 <valuemap type="QVariantMap">
12 12 <value type="bool" key="EditorConfiguration.AutoIndent">true</value>
13 13 <value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
14 14 <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
15 15 <value type="QString" key="language">Cpp</value>
16 16 <valuemap type="QVariantMap" key="value">
17 17 <value type="QString" key="CurrentPreferences">CppGlobal</value>
18 18 </valuemap>
19 19 </valuemap>
20 20 <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
21 21 <value type="QString" key="language">QmlJS</value>
22 22 <valuemap type="QVariantMap" key="value">
23 23 <value type="QString" key="CurrentPreferences">QmlJSGlobal</value>
24 24 </valuemap>
25 25 </valuemap>
26 26 <value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
27 27 <value type="QByteArray" key="EditorConfiguration.Codec">System</value>
28 28 <value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
29 29 <value type="int" key="EditorConfiguration.IndentSize">4</value>
30 30 <value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
31 31 <value type="int" key="EditorConfiguration.PaddingMode">1</value>
32 32 <value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
33 33 <value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
34 34 <value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
35 35 <value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
36 36 <value type="int" key="EditorConfiguration.TabSize">8</value>
37 37 <value type="bool" key="EditorConfiguration.UseGlobal">true</value>
38 38 <value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
39 39 <value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
40 40 <value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
41 41 <value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
42 42 <value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
43 43 </valuemap>
44 44 </data>
45 45 <data>
46 46 <variable>ProjectExplorer.Project.PluginSettings</variable>
47 47 <valuemap type="QVariantMap"/>
48 48 </data>
49 49 <data>
50 50 <variable>ProjectExplorer.Project.Target.0</variable>
51 51 <valuemap type="QVariantMap">
52 52 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop</value>
53 53 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop</value>
54 54 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Target.DesktopTarget</value>
55 55 <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
56 56 <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
57 57 <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
58 58 <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
59 59 <value type="QString" key="ProjectExplorer.BuildCOnfiguration.ToolChain">ProjectExplorer.ToolChain.Gcc:/usr/bin/g++.x86-linux-generic-elf-64bit./usr/bin/gdb</value>
60 60 <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
61 61 <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
62 62 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
63 63 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
64 64 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
65 65 <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
66 66 <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibraryAuto">true</value>
67 67 <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
68 68 <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
69 69 </valuemap>
70 70 <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
71 71 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
72 72 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
73 73 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
74 74 <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
75 75 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
76 76 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
77 77 </valuemap>
78 78 <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
79 79 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
80 80 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
81 81 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
82 82 </valuemap>
83 83 <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
84 84 <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
85 85 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
86 86 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
87 87 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
88 88 <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
89 89 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
90 90 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
91 91 </valuemap>
92 92 <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
93 93 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
94 94 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
95 95 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
96 96 </valuemap>
97 97 <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
98 98 <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
99 99 <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
100 100 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Qt 4.8.2 in PATH (System) Release</value>
101 101 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
102 102 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
103 103 <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
104 104 <value type="QString" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory">/opt/DEV_PLE/FSW-qt</value>
105 105 <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.QtVersionId">1</value>
106 106 <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">false</value>
107 107 </valuemap>
108 108 <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
109 109 <value type="QString" key="ProjectExplorer.BuildCOnfiguration.ToolChain">ProjectExplorer.ToolChain.Gcc:/usr/bin/g++.x86-linux-generic-elf-64bit./usr/bin/gdb</value>
110 110 <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
111 111 <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
112 112 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
113 113 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
114 114 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
115 115 <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
116 116 <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibraryAuto">true</value>
117 117 <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
118 118 <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
119 119 </valuemap>
120 120 <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
121 121 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
122 122 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
123 123 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
124 124 <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
125 125 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
126 126 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
127 127 </valuemap>
128 128 <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
129 129 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
130 130 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
131 131 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
132 132 </valuemap>
133 133 <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
134 134 <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
135 135 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
136 136 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
137 137 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
138 138 <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
139 139 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
140 140 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
141 141 </valuemap>
142 142 <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
143 143 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
144 144 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
145 145 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
146 146 </valuemap>
147 147 <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
148 148 <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
149 149 <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
150 150 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Qt 4.8.2 in PATH (System) Debug</value>
151 151 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
152 152 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
153 153 <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
154 154 <value type="QString" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory">/opt/DEV_PLE/FSW-qt</value>
155 155 <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.QtVersionId">1</value>
156 156 <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">false</value>
157 157 </valuemap>
158 158 <value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">2</value>
159 159 <valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
160 160 <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
161 161 <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
162 162 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
163 163 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
164 164 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
165 165 </valuemap>
166 166 <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
167 167 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">No deployment</value>
168 168 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
169 169 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
170 170 </valuemap>
171 171 <value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
172 172 <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
173 173 <value type="bool" key="Analyzer.Project.UseGlobal">true</value>
174 174 <value type="bool" key="Analyzer.Project.UseGlobal">true</value>
175 175 <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
176 176 <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
177 177 <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
178 178 <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
179 179 <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
180 180 <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
181 181 <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
182 182 <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
183 183 <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
184 184 <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
185 185 <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
186 186 <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
187 187 <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
188 188 <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
189 189 <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
190 190 <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
191 191 <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
192 192 <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
193 193 <value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
194 194 <value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
195 195 <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
196 196 <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
197 197 <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
198 198 <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
199 199 <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
200 200 <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
201 201 <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
202 202 <value type="int">0</value>
203 203 <value type="int">1</value>
204 204 <value type="int">2</value>
205 205 <value type="int">3</value>
206 206 <value type="int">4</value>
207 207 <value type="int">5</value>
208 208 <value type="int">6</value>
209 209 <value type="int">7</value>
210 210 <value type="int">8</value>
211 211 <value type="int">9</value>
212 212 <value type="int">10</value>
213 213 <value type="int">11</value>
214 214 <value type="int">12</value>
215 215 <value type="int">13</value>
216 216 <value type="int">14</value>
217 217 </valuelist>
218 218 <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
219 219 <value type="int">0</value>
220 220 <value type="int">1</value>
221 221 <value type="int">2</value>
222 222 <value type="int">3</value>
223 223 <value type="int">4</value>
224 224 <value type="int">5</value>
225 225 <value type="int">6</value>
226 226 <value type="int">7</value>
227 227 <value type="int">8</value>
228 228 <value type="int">9</value>
229 229 <value type="int">10</value>
230 230 <value type="int">11</value>
231 231 <value type="int">12</value>
232 232 <value type="int">13</value>
233 233 <value type="int">14</value>
234 234 </valuelist>
235 235 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">fsw-qt</value>
236 236 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
237 237 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration</value>
238 238 <value type="int" key="Qt4ProjectManager.Qt4RunConfiguration.BaseEnvironmentBase">2</value>
239 239 <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments"></value>
240 240 <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">fsw-qt.pro</value>
241 241 <value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseDyldImageSuffix">false</value>
242 242 <value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseTerminal">true</value>
243 243 <valuelist type="QVariantList" key="Qt4ProjectManager.Qt4RunConfiguration.UserEnvironmentChanges"/>
244 244 <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory"></value>
245 245 <value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
246 246 <value type="bool" key="RunConfiguration.UseCppDebugger">true</value>
247 247 <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
248 248 <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">false</value>
249 249 </valuemap>
250 250 <value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
251 251 </valuemap>
252 252 </data>
253 253 <data>
254 254 <variable>ProjectExplorer.Project.TargetCount</variable>
255 255 <value type="int">1</value>
256 256 </data>
257 257 <data>
258 258 <variable>ProjectExplorer.Project.Updater.EnvironmentId</variable>
259 259 <value type="QString">{2e58a81f-9962-4bba-ae6b-760177f0656c}</value>
260 260 </data>
261 261 <data>
262 262 <variable>ProjectExplorer.Project.Updater.FileVersion</variable>
263 263 <value type="int">10</value>
264 264 </data>
265 265 </qtcreator>
@@ -1,664 +1,683
1 1 #include <wf_handler.h>
2 2
3 3 rtems_isr waveforms_isr( rtems_vector_number vector )
4 4 {
5 5 unsigned char lfrMode;
6 6 lfrMode = (housekeeping_packet.lfr_status_word[0] & 0xf0) >> 4;
7 7
8 8 switch(lfrMode)
9 9 {
10 10 //********
11 11 // STANDBY
12 12 case(LFR_MODE_STANDBY):
13 13 break;
14 14
15 15 //******
16 16 // NORMAL
17 17 case(LFR_MODE_NORMAL):
18 18 #ifdef GSA
19 19 PRINTF("in waveform_isr *** unexpected waveform picker interruption\n")
20 20 #else
21 21 if ( (waveform_picker_regs->burst_enable & 0x7) == 0x0 ){// if no channel is enable
22 22 if (rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_2 ) != RTEMS_SUCCESSFUL) {
23 23 PRINTF("in waveform_isr *** Error sending event to DUMB\n");
24 24 }
25 25 }
26 26 else {
27 27 if ( (waveform_picker_regs->status & 0x7) == 0x7 ){ // f2 f1 and f0 are full
28 28 waveform_picker_regs->burst_enable = 0x00;
29 29 if (rtems_event_send( Task_id[TASKID_WFRM], RTEMS_EVENT_MODE_NORMAL ) != RTEMS_SUCCESSFUL) {
30 30 if (rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_2 ) != RTEMS_SUCCESSFUL) {
31 31 PRINTF("in waveform_isr *** Error sending event to DUMB\n");
32 32 }
33 33 }
34 34 }
35 35 }
36 36 #endif
37 37 break;
38 38
39 39 //******
40 40 // BURST
41 41 case(LFR_MODE_BURST):
42 42 #ifdef GSA
43 43 PRINTF("in waveform_isr *** unexpected waveform picker interruption\n")
44 44 #else
45 45 if (waveform_picker_regs->burst_enable == 0x44) {
46 46 if (waveform_picker_regs->addr_data_f2 == (int) wf_snap_f2) {
47 47 waveform_picker_regs->addr_data_f2 = (int) (wf_snap_f2_bis);
48 48 }
49 49 else {
50 50 waveform_picker_regs->addr_data_f2 = (int) (wf_snap_f2);
51 51 }
52 52 if (rtems_event_send( Task_id[TASKID_WFRM], RTEMS_EVENT_MODE_BURST ) != RTEMS_SUCCESSFUL) {
53 53 PRINTF("in waveforms_isr *** Error sending event to WFRM\n")
54 54 rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_2 );
55 55 }
56 56 }
57 57 waveform_picker_regs->status = 0x00;
58 58 #endif
59 59 break;
60 60
61 61 //*****
62 62 // SBM1
63 63 case(LFR_MODE_SBM1):
64 64 #ifdef GSA
65 65 PRINTF("in waveform_isr *** unexpected waveform picker interruption\n")
66 66 #else
67 67 if ((waveform_picker_regs->status & 0x02) == 0x02){ // check the f1 full bit
68 68 // (1) change the receiving buffer for the waveform picker
69 69 if (waveform_picker_regs->addr_data_f1 == (int) wf_snap_f1) {
70 70 waveform_picker_regs->addr_data_f1 = (int) (wf_snap_f1_bis);
71 71 }
72 72 else {
73 73 waveform_picker_regs->addr_data_f1 = (int) (wf_snap_f1);
74 74 }
75 75 // (2) send an event for the waveforms transmission
76 76 if (rtems_event_send( Task_id[TASKID_WFRM], RTEMS_EVENT_MODE_SBM1 ) != RTEMS_SUCCESSFUL) {
77 77 PRINTF("in waveforms_isr *** Error sending event to WFRM\n")
78 78 rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_2 );
79 79 }
80 80 waveform_picker_regs->status = waveform_picker_regs->status & 0x000d; // reset the f1 full bit to 0
81 81 }
82 82 if ( ( (waveform_picker_regs->status & 0x05) == 0x05 ) ) { // [0101] f3 f2 f1 f0, check the f2 and f0 full bit
83 83 if (rtems_event_send( Task_id[TASKID_WFRM], RTEMS_EVENT_MODE_NORMAL ) != RTEMS_SUCCESSFUL) {
84 84 PRINTF("in waveforms_isr *** Error sending event to WFRM\n")
85 85 rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_2 );
86 86 }
87 87 waveform_picker_regs->burst_enable = waveform_picker_regs->burst_enable | 0x05; // [0101] // enable f2 and f0
88 88 waveform_picker_regs->status = waveform_picker_regs->status & 0xfffffaaa; // set to 0 the bits related to f2 and f0
89 89 }
90 90 #endif
91 91 break;
92 92
93 93 //*****
94 94 // SBM2
95 95 case(LFR_MODE_SBM2):
96 96 #ifdef GSA
97 97 PRINTF("in waveform_isr *** unexpected waveform picker interruption\n")
98 98 #else
99 99 if ((waveform_picker_regs->status & 0x04) == 0x04){ // check the f2 full bit
100 100 // (1) change the receiving buffer for the waveform picker
101 101 if (waveform_picker_regs->addr_data_f2 == (int) wf_snap_f2) {
102 102 waveform_picker_regs->addr_data_f2 = (int) (wf_snap_f2_bis);
103 103 }
104 104 else {
105 105 waveform_picker_regs->addr_data_f2 = (int) (wf_snap_f2);
106 106 }
107 107 // (2) send an event for the waveforms transmission
108 108 if (rtems_event_send( Task_id[TASKID_WFRM], RTEMS_EVENT_MODE_SBM2 ) != RTEMS_SUCCESSFUL) {
109 109 PRINTF("in waveforms_isr *** Error sending event to WFRM\n")
110 110 rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_2 );
111 111 }
112 112 waveform_picker_regs->status = waveform_picker_regs->status & 0xfffffbbb; // [1011]
113 113 }
114 114 if ( ( (waveform_picker_regs->status & 0x03) == 0x03 ) ) { // [0011] f3 f2 f1 f0, check the f2 and f0 full bit
115 115 if (rtems_event_send( Task_id[TASKID_WFRM], RTEMS_EVENT_MODE_NORMAL ) != RTEMS_SUCCESSFUL) {
116 116 PRINTF("in waveforms_isr *** Error sending event to WFRM\n")
117 117 rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_2 );
118 118 }
119 119 waveform_picker_regs->burst_enable = waveform_picker_regs->burst_enable | 0x03; // [0011] // enable f2 and f0
120 120 waveform_picker_regs->status = waveform_picker_regs->status & 0xfffffccc; // set to 0 the bits related to f1 and f0
121 121 }
122 122 #endif
123 123 break;
124 124
125 125 //********
126 126 // DEFAULT
127 127 default:
128 128 break;
129 129 }
130 130 }
131 131
132 132 rtems_isr waveforms_simulator_isr( rtems_vector_number vector )
133 133 {
134 134 unsigned char lfrMode;
135 135 lfrMode = (housekeeping_packet.lfr_status_word[0] & 0xf0) >> 4;
136 136
137 137 switch(lfrMode)
138 138 {
139 139 //********
140 140 // STANDBY
141 141 case(LFR_MODE_STANDBY):
142 142 break;
143 143
144 144 //******
145 145 // NORMAL
146 146 case(LFR_MODE_NORMAL):
147 147 if (rtems_event_send( Task_id[TASKID_WFRM], RTEMS_EVENT_MODE_NORMAL ) != RTEMS_SUCCESSFUL) {
148 148 PRINTF("ERR *** in waveforms_isr *** error sending event to WFRM\n");
149 149 }
150 150 break;
151 151
152 152 //******
153 153 // BURST
154 154 case(LFR_MODE_BURST):
155 155 break;
156 156
157 157 //*****
158 158 // SBM1
159 159 case(LFR_MODE_SBM1):
160 160 break;
161 161
162 162 //*****
163 163 // SBM2
164 164 case(LFR_MODE_SBM2):
165 165 break;
166 166
167 167 //********
168 168 // DEFAULT
169 169 default:
170 170 break;
171 171 }
172 172 }
173 173
174 174 rtems_task wfrm_task(rtems_task_argument argument) //used with the waveform picker VHDL IP
175 175 {
176 176 unsigned int i;
177 177 unsigned int intEventOut;
178 178 spw_ioctl_pkt_send spw_ioctl_send_SWF;
179 179 spw_ioctl_pkt_send spw_ioctl_send_CWF;
180 180 rtems_event_set event_out;
181 181 Header_TM_LFR_SCIENCE_SWF_t headerSWF;
182 182 Header_TM_LFR_SCIENCE_CWF_t headerCWF;
183 183
184 184 init_header_snapshot_wf( &headerSWF );
185 185 init_header_continuous_wf( &headerCWF );
186 186
187 187 // BUILD THE PACKET HEADERS
188 188 spw_ioctl_send_SWF.hlen = TM_HEADER_LEN + 4 + 12; // + 4 is for the protocole extra header, + 12 is for the auxiliary header
189 189 spw_ioctl_send_SWF.hdr = (char*) &headerSWF;
190 190 spw_ioctl_send_SWF.options = 0;
191 191
192 192 spw_ioctl_send_CWF.hlen = TM_HEADER_LEN + 4 + 10; // + 4 is for the protocole extra header, + 10 is for the auxiliary header
193 193 spw_ioctl_send_CWF.hdr = (char*) &headerCWF;
194 194 spw_ioctl_send_CWF.options = 0;
195 195
196 196 init_waveforms();
197 197
198 198 PRINTF("in WFRM ***\n")
199 199
200 200 while(1){
201 201 // wait for an RTEMS_EVENT
202 202 rtems_event_receive(RTEMS_EVENT_0 | RTEMS_EVENT_1 | RTEMS_EVENT_2 | RTEMS_EVENT_3 | RTEMS_EVENT_4,
203 203 RTEMS_WAIT | RTEMS_EVENT_ANY, RTEMS_NO_TIMEOUT, &event_out);
204 204 intEventOut = (unsigned int) event_out;
205 205 for (i = 0; i< 5; i++) {
206 206 if ( ( (intEventOut >> i) & 0x0001) != 0 ) {
207 207 switch(i) {
208 208 case(LFR_MODE_NORMAL):
209 209 send_waveform_norm( &headerSWF, &spw_ioctl_send_SWF);
210 210 break;
211 211 case(LFR_MODE_BURST):
212 212 send_waveform_burst( &headerCWF, &spw_ioctl_send_CWF);
213 213 break;
214 214 case(LFR_MODE_SBM1):
215 215 send_waveform_sbm1( &headerCWF, &spw_ioctl_send_CWF);
216 216 param_local.local_sbm1_nb_cwf_sent ++;
217 217 if ( param_local.local_sbm1_nb_cwf_sent == (param_local.local_sbm1_nb_cwf_max-1) ) {
218 218 // send the f1 buffer as a NORM snapshot
219 219 if (waveform_picker_regs->addr_data_f1 == (int) wf_snap_f1) {
220 220 send_waveform_SWF( &headerSWF, wf_snap_f1_bis, SID_NORM_SWF_F1, &spw_ioctl_send_SWF );
221 221 }
222 222 else {
223 223 send_waveform_SWF( &headerSWF, wf_snap_f1, SID_NORM_SWF_F1, &spw_ioctl_send_SWF );
224 224 }
225 225 }
226 226 break;
227 227 case(LFR_MODE_SBM2):
228 228 send_waveform_sbm2( &headerCWF, &spw_ioctl_send_CWF);
229 229 param_local.local_sbm2_nb_cwf_sent ++;
230 230 if ( param_local.local_sbm2_nb_cwf_sent == (param_local.local_sbm2_nb_cwf_max-1) ) {
231 231 // send the f2 buffer as a NORM snapshot
232 232 if (waveform_picker_regs->addr_data_f2 == (int) wf_snap_f2) {
233 233 send_waveform_SWF( &headerSWF, wf_snap_f2_bis, SID_NORM_SWF_F2, &spw_ioctl_send_SWF );
234 234 }
235 235 else {
236 236 send_waveform_SWF( &headerSWF, wf_snap_f2, SID_NORM_SWF_F2, &spw_ioctl_send_SWF );
237 237 }
238 238 }
239 239 break;
240 240 default:
241 241 break;
242 242 }
243 243 }
244 244 }
245 245 }
246 246 }
247 247
248 248 //******************
249 249 // general functions
250 250 void init_waveforms( void )
251 251 {
252 252 int i = 0;
253 253
254 254 for (i=0; i< NB_SAMPLES_PER_SNAPSHOT; i++)
255 255 {
256 256 //***
257 257 // F0
258 258 wf_snap_f0[ (i* NB_WORDS_SWF_BLK) + 0 + TIME_OFFSET ] = 0x88887777; //
259 259 wf_snap_f0[ (i* NB_WORDS_SWF_BLK) + 1 + TIME_OFFSET ] = 0x22221111; //
260 260 wf_snap_f0[ (i* NB_WORDS_SWF_BLK) + 2 + TIME_OFFSET ] = 0x44443333; //
261 261
262 262 //***
263 263 // F1
264 264 wf_snap_f1[ (i* NB_WORDS_SWF_BLK) + 0 + TIME_OFFSET ] = 0x22221111;
265 265 wf_snap_f1[ (i* NB_WORDS_SWF_BLK) + 1 + TIME_OFFSET ] = 0x44443333;
266 266 wf_snap_f1[ (i* NB_WORDS_SWF_BLK) + 2 + TIME_OFFSET ] = 0xaaaa0000;
267 267
268 268 //***
269 269 // F2
270 270 wf_snap_f2[ (i* NB_WORDS_SWF_BLK) + 0 + TIME_OFFSET ] = 0x44443333;
271 271 wf_snap_f2[ (i* NB_WORDS_SWF_BLK) + 1 + TIME_OFFSET ] = 0x22221111;
272 272 wf_snap_f2[ (i* NB_WORDS_SWF_BLK) + 2 + TIME_OFFSET ] = 0xaaaa0000;
273 273
274 274 //***
275 275 // F3
276 276 //wf_cont_f3[ (i* NB_WORDS_SWF_BLK) + 0 ] = val1;
277 277 //wf_cont_f3[ (i* NB_WORDS_SWF_BLK) + 1 ] = val2;
278 278 //wf_cont_f3[ (i* NB_WORDS_SWF_BLK) + 2 ] = 0xaaaa0000;
279 279 }
280 280 }
281 281
282 282 void init_header_snapshot_wf( Header_TM_LFR_SCIENCE_SWF_t *header)
283 283 {
284 284 header->targetLogicalAddress = CCSDS_DESTINATION_ID;
285 285 header->protocolIdentifier = CCSDS_PROTOCOLE_ID;
286 286 header->reserved = 0x00;
287 287 header->userApplication = CCSDS_USER_APP;
288 288 header->packetID[0] = (unsigned char) (TM_PACKET_ID_SCIENCE_NORMAL >> 8);
289 289 header->packetID[1] = (unsigned char) (TM_PACKET_ID_SCIENCE_NORMAL);
290 290 header->packetSequenceControl[0] = 0xc0;
291 291 header->packetSequenceControl[1] = 0x00;
292 292 header->packetLength[0] = 0x00;
293 293 header->packetLength[1] = 0x00;
294 294 // DATA FIELD HEADER
295 295 header->spare1_pusVersion_spare2 = 0x10;
296 296 header->serviceType = TM_TYPE_LFR_SCIENCE; // service type
297 297 header->serviceSubType = TM_SUBTYPE_LFR_SCIENCE; // service subtype
298 298 header->destinationID = TM_DESTINATION_ID_GROUND;
299 299 // AUXILIARY DATA HEADER
300 300 header->sid = 0x00;
301 301 header->hkBIA = 0x1f;
302 302 header->pktCnt = 0x07; // PKT_CNT
303 303 header->pktNr = 0x00; // PKT_NR
304 304 header->time[0] = 0x00;
305 305 header->time[0] = 0x00;
306 306 header->time[0] = 0x00;
307 307 header->time[0] = 0x00;
308 308 header->time[0] = 0x00;
309 309 header->time[0] = 0x00;
310 310 header->blkNr[0] = 0x00; // BLK_NR MSB
311 311 header->blkNr[1] = 0x00; // BLK_NR LSB
312 312 }
313 313
314 314 void init_header_continuous_wf( Header_TM_LFR_SCIENCE_CWF_t *header)
315 315 {
316 316 header->targetLogicalAddress = CCSDS_DESTINATION_ID;
317 317 header->protocolIdentifier = CCSDS_PROTOCOLE_ID;
318 318 header->reserved = 0x00;
319 319 header->userApplication = CCSDS_USER_APP;
320 320 header->packetID[0] = 0x00;
321 321 header->packetID[1] = 0x00;
322 322 header->packetSequenceControl[0] = 0xc0;
323 323 header->packetSequenceControl[1] = 0x00;
324 324 header->packetLength[0] = 0x00;
325 325 header->packetLength[1] = 0x00;
326 326 // DATA FIELD HEADER
327 327 header->spare1_pusVersion_spare2 = 0x10;
328 328 header->serviceType = TM_TYPE_LFR_SCIENCE; // service type
329 329 header->serviceSubType = TM_SUBTYPE_LFR_SCIENCE; // service subtype
330 330 header->destinationID = TM_DESTINATION_ID_GROUND;
331 331 // AUXILIARY DATA HEADER
332 332 header->sid = 0x00;
333 333 header->hkBIA = 0x1f;
334 334 header->time[0] = 0x00;
335 335 header->time[0] = 0x00;
336 336 header->time[0] = 0x00;
337 337 header->time[0] = 0x00;
338 338 header->time[0] = 0x00;
339 339 header->time[0] = 0x00;
340 340 header->blkNr[0] = 0x00; // BLK_NR MSB
341 341 header->blkNr[1] = 0x00; // BLK_NR LSB
342 342 }
343 343
344 344 void reset_waveforms( void )
345 345 {
346 346 int i = 0;
347 347
348 348 for (i=0; i< NB_SAMPLES_PER_SNAPSHOT; i++)
349 349 {
350 350 wf_snap_f0[ (i* NB_WORDS_SWF_BLK) + 0 + TIME_OFFSET] = 0x10002000;
351 351 wf_snap_f0[ (i* NB_WORDS_SWF_BLK) + 1 + TIME_OFFSET] = 0x20001000;
352 352 wf_snap_f0[ (i* NB_WORDS_SWF_BLK) + 2 + TIME_OFFSET] = 0x40008000;
353 353
354 354 //***
355 355 // F1
356 356 wf_snap_f1[ (i* NB_WORDS_SWF_BLK) + 0 + TIME_OFFSET] = 0x1000f000;
357 357 wf_snap_f1[ (i* NB_WORDS_SWF_BLK) + 1 + TIME_OFFSET] = 0xf0001000;
358 358 wf_snap_f1[ (i* NB_WORDS_SWF_BLK) + 2 + TIME_OFFSET] = 0x40008000;
359 359
360 360 //***
361 361 // F2
362 362 wf_snap_f2[ (i* NB_WORDS_SWF_BLK) + 0 + TIME_OFFSET] = 0x40008000;
363 363 wf_snap_f2[ (i* NB_WORDS_SWF_BLK) + 1 + TIME_OFFSET] = 0x20001000;
364 364 wf_snap_f2[ (i* NB_WORDS_SWF_BLK) + 2 + TIME_OFFSET] = 0x10002000;
365 365
366 366 //***
367 367 // F3
368 368 /*wf_cont_f3[ i* NB_WORDS_SWF_BLK + 0 ] = build_value( i, i ); // v and 1
369 369 wf_cont_f3[ i* NB_WORDS_SWF_BLK + 1 ] = build_value( i, i ); // e2 and b1
370 370 wf_cont_f3[ i* NB_WORDS_SWF_BLK + 2 ] = build_value( i, i ); // b2 and b3*/
371 371 }
372 372 }
373 373
374 374 void send_waveform_SWF( Header_TM_LFR_SCIENCE_SWF_t *header, volatile int *waveform,
375 375 unsigned int sid, spw_ioctl_pkt_send *spw_ioctl_send)
376 376 {
377 377 unsigned int i = 0;
378 378 unsigned int length = 0;
379 379 rtems_status_code status;
380 380
381 381 header->sid = (unsigned char) sid;
382 382
383 383 for (i=0; i<7; i++) // send waveform
384 384 {
385 385 header->pktNr = (unsigned char) i+1; // PKT_NR
386 386 // BUILD THE DATA
387 387 if (i==6) {
388 388 spw_ioctl_send->dlen = 8 * NB_BYTES_SWF_BLK;
389 389 length = TM_LEN_SCI_SWF_8;
390 390 header->blkNr[0] = 0x00; // BLK_NR MSB
391 391 header->blkNr[1] = 0x08; // BLK_NR LSB
392 392 }
393 393 else {
394 394 spw_ioctl_send->dlen = 340 * NB_BYTES_SWF_BLK;
395 395 length = TM_LEN_SCI_SWF_340;
396 396 header->blkNr[0] = 0x01; // BLK_NR MSB
397 397 header->blkNr[1] = 0x54; // BLK_NR LSB
398 398 }
399 399 spw_ioctl_send->data = (char*) &waveform[ (i * 340 * NB_WORDS_SWF_BLK) ];
400 400 // BUILD THE HEADER
401 401 header->packetLength[0] = (unsigned char) (length>>8);
402 402 header->packetLength[1] = (unsigned char) (length);
403 403 header->sid = (unsigned char) sid; // SID
404 404 // SET PACKET TIME
405 405 header->time[0] = (unsigned char) (time_management_regs->coarse_time>>24);
406 406 header->time[1] = (unsigned char) (time_management_regs->coarse_time>>16);
407 407 header->time[2] = (unsigned char) (time_management_regs->coarse_time>>8);
408 408 header->time[3] = (unsigned char) (time_management_regs->coarse_time);
409 409 header->time[4] = (unsigned char) (time_management_regs->fine_time>>8);
410 410 header->time[5] = (unsigned char) (time_management_regs->fine_time);
411 header->acquisitionTime[0] = (unsigned char) (time_management_regs->coarse_time>>24);
412 header->acquisitionTime[1] = (unsigned char) (time_management_regs->coarse_time>>16);
413 header->acquisitionTime[2] = (unsigned char) (time_management_regs->coarse_time>>8);
414 header->acquisitionTime[3] = (unsigned char) (time_management_regs->coarse_time);
415 header->acquisitionTime[4] = (unsigned char) (time_management_regs->fine_time>>8);
416 header->acquisitionTime[5] = (unsigned char) (time_management_regs->fine_time);
411 417 // SEND PACKET
412 418 status = write_spw(spw_ioctl_send);
413 419 if (status != RTEMS_SUCCESSFUL) {
414 420 while (true) {
415 421 if (status != RTEMS_SUCCESSFUL) {
416 422 status = write_spw(spw_ioctl_send);
417 423 //PRINTF1("%d", i)
418 424 sched_yield();
419 425 }
420 426 else {
421 427 //PRINTF("\n")
422 428 break;
423 429 }
424 430 }
425 431 }
426 432 }
427 433 }
428 434
429 435 void send_waveform_CWF( Header_TM_LFR_SCIENCE_CWF_t *header, volatile int *waveform,
430 436 unsigned int sid, spw_ioctl_pkt_send *spw_ioctl_send)
431 437 {
432 438 unsigned int i = 0;
433 439 unsigned int length = 0;
434 440 rtems_status_code status;
435 441
436 442 header->sid = (unsigned char) sid;
437 443
438 444 for (i=0; i<7; i++) // send waveform
439 445 {
440 446 // BUILD THE DATA
441 447 if (i==6) {
442 448 spw_ioctl_send->dlen = 8 * NB_BYTES_SWF_BLK;
443 449 length = TM_LEN_SCI_CWF_8;
444 450 header->blkNr[0] = 0x00; // BLK_NR MSB
445 451 header->blkNr[1] = 0x08; // BLK_NR LSB
446 452 }
447 453 else {
448 454 spw_ioctl_send->dlen = 340 * NB_BYTES_SWF_BLK;
449 455 length = TM_LEN_SCI_CWF_340;
450 456 header->blkNr[0] = 0x01; // BLK_NR MSB
451 457 header->blkNr[1] = 0x54; // BLK_NR LSB
452 458 }
453 459 spw_ioctl_send->data = (char*) &waveform[ (i * 340 * NB_WORDS_SWF_BLK) ];
454 460 // BUILD THE HEADER
455 461 header->packetLength[0] = (unsigned char) (length>>8);
456 462 header->packetLength[1] = (unsigned char) (length);
463 // SET PACKET TIME
464 header->time[0] = (unsigned char) (time_management_regs->coarse_time>>24);
465 header->time[1] = (unsigned char) (time_management_regs->coarse_time>>16);
466 header->time[2] = (unsigned char) (time_management_regs->coarse_time>>8);
467 header->time[3] = (unsigned char) (time_management_regs->coarse_time);
468 header->time[4] = (unsigned char) (time_management_regs->fine_time>>8);
469 header->time[5] = (unsigned char) (time_management_regs->fine_time);
470 header->acquisitionTime[0] = (unsigned char) (time_management_regs->coarse_time>>24);
471 header->acquisitionTime[1] = (unsigned char) (time_management_regs->coarse_time>>16);
472 header->acquisitionTime[2] = (unsigned char) (time_management_regs->coarse_time>>8);
473 header->acquisitionTime[3] = (unsigned char) (time_management_regs->coarse_time);
474 header->acquisitionTime[4] = (unsigned char) (time_management_regs->fine_time>>8);
475 header->acquisitionTime[5] = (unsigned char) (time_management_regs->fine_time);
457 476 // SEND PACKET
458 477 status = write_spw(spw_ioctl_send);
459 478 if (status != RTEMS_SUCCESSFUL) {
460 479 while (true) {
461 480 if (status != RTEMS_SUCCESSFUL) {
462 481 status = write_spw(spw_ioctl_send);
463 482 //PRINTF1("%d", i)
464 483 sched_yield();
465 484 }
466 485 else {
467 486 //PRINTF("\n")
468 487 break;
469 488 }
470 489 }
471 490 }
472 491 }
473 492 }
474 493
475 494 int build_value(int value1, int value0)
476 495 {
477 496 int aux = 0;
478 497 int aux1 = 0;
479 498 int aux0 = 0;
480 499 int value1_aux = 0;
481 500 int value0_aux = 0;
482 501
483 502 value1_aux = value1;
484 503 value0_aux = value0;
485 504
486 505 //******
487 506 // B3 B2
488 507 if (value1_aux > 8191) value1_aux = 8191;
489 508 if (value1_aux < -8192) value1_aux = -8192;
490 509 aux1 = ( (int) ( ( (unsigned char) (value1_aux / 256 ) ) << 8 ) )
491 510 + ( (int) ( (unsigned char) (value1_aux ) ) );
492 511
493 512 //******
494 513 // B1 B0
495 514 if (value0_aux > 8191) value0_aux = 8191;
496 515 if (value0_aux < -8192) value0_aux = -8192;
497 516 aux0 = ( (int) ( ( (unsigned char) (value0_aux / 256) ) << 8 ) )
498 517 + ( (int) ( (unsigned char) (value0_aux ) ) );
499 518
500 519 aux = (aux1 << 16) + aux0;
501 520
502 521 return aux;
503 522 }
504 523
505 524 void send_waveform_norm(Header_TM_LFR_SCIENCE_SWF_t *header, spw_ioctl_pkt_send *spw_ioctl_send)
506 525 {
507 526 unsigned char lfrMode;
508 527 lfrMode = (housekeeping_packet.lfr_status_word[0] & 0xf0) >> 4;
509 528
510 529 header->packetID[0] = (unsigned char) (TM_PACKET_ID_SCIENCE_NORMAL >> 8);
511 530 header->packetID[1] = (unsigned char) (TM_PACKET_ID_SCIENCE_NORMAL);
512 531 // TIME
513 532 header->time[0] = (unsigned char) (time_management_regs->coarse_time>>24);
514 533 header->time[1] = (unsigned char) (time_management_regs->coarse_time>>16);
515 534 header->time[2] = (unsigned char) (time_management_regs->coarse_time>>8);
516 535 header->time[3] = (unsigned char) (time_management_regs->coarse_time);
517 536 header->time[4] = (unsigned char) (time_management_regs->fine_time>>8);
518 537 header->time[5] = (unsigned char) (time_management_regs->fine_time);
519 538
520 539 //***************
521 540 // send snapshots
522 541 // F0
523 542 send_waveform_SWF( header, wf_snap_f0, SID_NORM_SWF_F0, spw_ioctl_send);
524 543 // F1
525 544 if (lfrMode == LFR_MODE_NORMAL) // in SBM1 mode, the snapshot is sent by the send_waveform_sbm1 function
526 545 {
527 546 send_waveform_SWF( header, wf_snap_f1, SID_NORM_SWF_F1, spw_ioctl_send);
528 547 }
529 548 // F2
530 549 send_waveform_SWF( header, wf_snap_f2, SID_NORM_SWF_F2, spw_ioctl_send);
531 550 #ifdef GSA
532 551 // irq processed, reset the related register of the timer unit
533 552 gptimer_regs->timer[2].ctrl = gptimer_regs->timer[2].ctrl | 0x00000010;
534 553 #else
535 554 // irq processed, reset the related register of the waveform picker
536 555 if (lfrMode == LFR_MODE_SBM1) {
537 556 param_local.local_sbm1_nb_cwf_sent = 0;
538 557 // after the first transmission of the swf at F1, the period is set to local_sbm1_nb_cwf_max
539 558 param_local.local_sbm1_nb_cwf_max = 2 * param_norm.sy_lfr_n_swf_p;
540 559 }
541 560 else if (lfrMode == LFR_MODE_SBM2) {
542 561 param_local.local_sbm2_nb_cwf_sent = 0;
543 562 // after the first transmission of the swf at F2, the period is set to local_sbm2_nb_cwf_max
544 563 param_local.local_sbm2_nb_cwf_max = param_norm.sy_lfr_n_swf_p / 8;
545 564 }
546 565 else {
547 566 waveform_picker_regs->status = waveform_picker_regs->status & 0x00;
548 567 waveform_picker_regs->burst_enable = 0x07; // [0111] enable f2 f1 f0
549 568 }
550 569
551 570 #endif
552 571 }
553 572
554 573 void send_waveform_burst(Header_TM_LFR_SCIENCE_CWF_t *header, spw_ioctl_pkt_send *spw_ioctl_send)
555 574 {
556 575 header->packetID[0] = (unsigned char) (TM_PACKET_ID_SCIENCE_BURST_SBM1_SBM2 >> 8);
557 576 header->packetID[1] = (unsigned char) (TM_PACKET_ID_SCIENCE_BURST_SBM1_SBM2);
558 577 // TIME
559 578 header->time[0] = (unsigned char) (time_management_regs->coarse_time>>24);
560 579 header->time[1] = (unsigned char) (time_management_regs->coarse_time>>16);
561 580 header->time[2] = (unsigned char) (time_management_regs->coarse_time>>8);
562 581 header->time[3] = (unsigned char) (time_management_regs->coarse_time);
563 582 header->time[4] = (unsigned char) (time_management_regs->fine_time>>8);
564 583 header->time[5] = (unsigned char) (time_management_regs->fine_time);
565 584 // ACQUISITION TIME
566 585
567 586 // F2
568 587 if (waveform_picker_regs->addr_data_f2 == (int) wf_snap_f2) {
569 588 send_waveform_CWF( header, wf_snap_f2_bis, SID_BURST_CWF_F2, spw_ioctl_send);
570 589 }
571 590 else {
572 591 send_waveform_CWF( header, wf_snap_f2, SID_BURST_CWF_F2, spw_ioctl_send);
573 592 }
574 593 }
575 594
576 595 void send_waveform_sbm1(Header_TM_LFR_SCIENCE_CWF_t *header, spw_ioctl_pkt_send *spw_ioctl_send)
577 596 {
578 597 header->packetID[0] = (unsigned char) (TM_PACKET_ID_SCIENCE_BURST_SBM1_SBM2 >> 8);
579 598 header->packetID[1] = (unsigned char) (TM_PACKET_ID_SCIENCE_BURST_SBM1_SBM2);
580 599 // TIME
581 600 header->time[0] = (unsigned char) (time_management_regs->coarse_time>>24);
582 601 header->time[1] = (unsigned char) (time_management_regs->coarse_time>>16);
583 602 header->time[2] = (unsigned char) (time_management_regs->coarse_time>>8);
584 603 header->time[3] = (unsigned char) (time_management_regs->coarse_time);
585 604 header->time[4] = (unsigned char) (time_management_regs->fine_time>>8);
586 605 header->time[5] = (unsigned char) (time_management_regs->fine_time);
587 606
588 607 // F1
589 608 if (waveform_picker_regs->addr_data_f1 == (int) wf_snap_f1) {
590 609 send_waveform_CWF( header, wf_snap_f1_bis, SID_SBM1_CWF_F1, spw_ioctl_send );
591 610 }
592 611 else {
593 612 send_waveform_CWF( header, wf_snap_f1, SID_SBM1_CWF_F1, spw_ioctl_send );
594 613 }
595 614 }
596 615
597 616 void send_waveform_sbm2(Header_TM_LFR_SCIENCE_CWF_t *header, spw_ioctl_pkt_send *spw_ioctl_send)
598 617 {
599 618 header->packetID[0] = (unsigned char) (TM_PACKET_ID_SCIENCE_BURST_SBM1_SBM2 >> 8);
600 619 header->packetID[1] = (unsigned char) (TM_PACKET_ID_SCIENCE_BURST_SBM1_SBM2);
601 620 // TIME
602 621 header->time[0] = (unsigned char) (time_management_regs->coarse_time>>24);
603 622 header->time[1] = (unsigned char) (time_management_regs->coarse_time>>16);
604 623 header->time[2] = (unsigned char) (time_management_regs->coarse_time>>8);
605 624 header->time[3] = (unsigned char) (time_management_regs->coarse_time);
606 625 header->time[4] = (unsigned char) (time_management_regs->fine_time>>8);
607 626 header->time[5] = (unsigned char) (time_management_regs->fine_time);
608 627
609 628 // F2
610 629 if (waveform_picker_regs->addr_data_f2 == (int) wf_snap_f2) {
611 630 send_waveform_CWF( header, wf_snap_f2_bis, SID_SBM2_CWF_F2, spw_ioctl_send);
612 631 }
613 632 else {
614 633 send_waveform_CWF( header, wf_snap_f2, SID_SBM2_CWF_F2, spw_ioctl_send);
615 634 }
616 635 }
617 636
618 637 //**************
619 638 // wfp registers
620 639 void set_wfp_data_shaping(unsigned char data_shaping)
621 640 {
622 641 // get the parameters for the data shaping [BW SP0 SP1 R0 R1] in sy_lfr_common1 and configure the register
623 642 // waveform picker : [R1 R0 SP1 SP0 BW]
624 643 waveform_picker_regs->data_shaping =
625 644 ( (data_shaping & 0x10) >> 4 ) // BW
626 645 + ( (data_shaping & 0x08) >> 2 ) // SP0
627 646 + ( (data_shaping & 0x04) ) // SP1
628 647 + ( (data_shaping & 0x02) << 2 ) // R0
629 648 + ( (data_shaping & 0x01) << 4 ); // R1
630 649 }
631 650
632 651 void set_wfp_delta_snapshot(unsigned int delta_snapshot)
633 652 {
634 653 unsigned char aux = 0;
635 654 aux = delta_snapshot / 2 ;
636 655 waveform_picker_regs->delta_snapshot = aux; // max 2 bytes
637 656 //waveform_picker_regs->delta_snapshot = 0x5; // max 2 bytes
638 657 }
639 658
640 659 void reset_wfp_burst_enable()
641 660 {
642 661 waveform_picker_regs->burst_enable = 0x00; // burst f2, f1, f0 enable f3, f2, f1, f0
643 662 }
644 663
645 664 void reset_wfp_regs()
646 665 {
647 666 set_wfp_data_shaping(param_common.sy_lfr_common1);
648 667 reset_wfp_burst_enable();
649 668 waveform_picker_regs->addr_data_f0 = (int) (wf_snap_f0); //
650 669 waveform_picker_regs->addr_data_f1 = (int) (wf_snap_f1); //
651 670 waveform_picker_regs->addr_data_f2 = (int) (wf_snap_f2); //
652 671 waveform_picker_regs->addr_data_f3 = (int) (wf_cont_f3); //
653 672 waveform_picker_regs->status = 0x00; //
654 673 set_wfp_delta_snapshot( param_norm.sy_lfr_n_swf_p ); // time in seconds between two snapshots
655 674 waveform_picker_regs->delta_f2_f1 = 0xffff; // max 4 bytes
656 675 waveform_picker_regs->delta_f2_f0 = 0x17c00; // max 5 bytes
657 676 waveform_picker_regs->nb_burst_available = 0x180; // max 3 bytes, size of the buffer in burst (1 burst = 16 x 4 octets)
658 677 waveform_picker_regs->nb_snapshot_param = 0x7ff; // max 3 octets, 2048 - 1
659 678 //waveform_picker_regs->delta_snapshot = 0x2; // max 2 bytes, = period / 2
660 679 //waveform_picker_regs->delta_f2_f1 = 0x2d00; // max 4 bytes
661 680 //waveform_picker_regs->delta_f2_f0 = 0x2f80; // max 5 bytes
662 681 //waveform_picker_regs->nb_burst_available = 0x30; // max 3 bytes, size of the buffer in burst (1 burst = 16 x 4 octets)
663 682 //waveform_picker_regs->nb_snapshot_param = 0xff; // max 3 octets, 256 - 1
664 683 }
1 NO CONTENT: file was removed
General Comments 0
You need to be logged in to leave comments. Login now