Target:
Source:
Actions:
Compare was calculated based on this common ancestor commit:
7bc622f95e3f
Time | Author | Commit | Description | |||
---|---|---|---|---|---|---|
16 commits hidden, click expand to show them. |
@@ -1,6 +1,6 | |||||
1 | ############################################################################# |
|
1 | ############################################################################# | |
2 | # Makefile for building: bin/fsw |
|
2 | # Makefile for building: bin/fsw | |
3 |
# Generated by qmake (2.01a) (Qt 4.8.5) on: |
|
3 | # Generated by qmake (2.01a) (Qt 4.8.5) on: Tue Jan 21 13:09:44 2014 | |
4 | # Project: fsw-qt.pro |
|
4 | # Project: fsw-qt.pro | |
5 | # Template: app |
|
5 | # Template: app | |
6 | # Command: /usr/bin/qmake-qt4 -spec /usr/lib64/qt4/mkspecs/linux-g++ -o Makefile fsw-qt.pro |
|
6 | # Command: /usr/bin/qmake-qt4 -spec /usr/lib64/qt4/mkspecs/linux-g++ -o Makefile fsw-qt.pro |
@@ -1,6 +1,6 | |||||
1 | <?xml version="1.0" encoding="UTF-8"?> |
|
1 | <?xml version="1.0" encoding="UTF-8"?> | |
2 | <!DOCTYPE QtCreatorProject> |
|
2 | <!DOCTYPE QtCreatorProject> | |
3 |
<!-- Written by QtCreator |
|
3 | <!-- Written by QtCreator 3.0.0, 2014-01-21T13:08:44. --> | |
4 | <qtcreator> |
|
4 | <qtcreator> | |
5 | <data> |
|
5 | <data> | |
6 | <variable>ProjectExplorer.Project.ActiveTarget</variable> |
|
6 | <variable>ProjectExplorer.Project.ActiveTarget</variable> | |
@@ -15,13 +15,13 | |||||
15 | <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0"> |
|
15 | <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0"> | |
16 | <value type="QString" key="language">Cpp</value> |
|
16 | <value type="QString" key="language">Cpp</value> | |
17 | <valuemap type="QVariantMap" key="value"> |
|
17 | <valuemap type="QVariantMap" key="value"> | |
18 |
<value type="Q |
|
18 | <value type="QByteArray" key="CurrentPreferences">CppGlobal</value> | |
19 | </valuemap> |
|
19 | </valuemap> | |
20 | </valuemap> |
|
20 | </valuemap> | |
21 | <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1"> |
|
21 | <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1"> | |
22 | <value type="QString" key="language">QmlJS</value> |
|
22 | <value type="QString" key="language">QmlJS</value> | |
23 | <valuemap type="QVariantMap" key="value"> |
|
23 | <valuemap type="QVariantMap" key="value"> | |
24 |
<value type="Q |
|
24 | <value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value> | |
25 | </valuemap> |
|
25 | </valuemap> | |
26 | </valuemap> |
|
26 | </valuemap> | |
27 | <value type="int" key="EditorConfiguration.CodeStyle.Count">2</value> |
|
27 | <value type="int" key="EditorConfiguration.CodeStyle.Count">2</value> | |
@@ -58,6 +58,7 | |||||
58 | <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value> |
|
58 | <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value> | |
59 | <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">1</value> |
|
59 | <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">1</value> | |
60 | <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0"> |
|
60 | <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0"> | |
|
61 | <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/opt/DEV_PLE/FSW-qt</value> | |||
61 | <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0"> |
|
62 | <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0"> | |
62 | <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0"> |
|
63 | <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0"> | |
63 | <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> |
|
64 | <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> | |
@@ -113,10 +114,10 | |||||
113 | <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> |
|
114 | <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> | |
114 | <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value> |
|
115 | <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value> | |
115 | <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value> |
|
116 | <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value> | |
116 | <value type="QString" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory">/opt/DEV_PLE/FSW-qt</value> |
|
|||
117 | <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">false</value> |
|
117 | <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">false</value> | |
118 | </valuemap> |
|
118 | </valuemap> | |
119 | <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1"> |
|
119 | <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1"> | |
|
120 | <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/opt/DEV_PLE/FSW-qt</value> | |||
120 | <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0"> |
|
121 | <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0"> | |
121 | <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0"> |
|
122 | <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0"> | |
122 | <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> |
|
123 | <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> | |
@@ -172,7 +173,6 | |||||
172 | <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> |
|
173 | <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value> | |
173 | <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value> |
|
174 | <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value> | |
174 | <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value> |
|
175 | <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value> | |
175 | <value type="QString" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory">/opt/DEV_PLE/FSW-qt</value> |
|
|||
176 | <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">false</value> |
|
176 | <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">false</value> | |
177 | </valuemap> |
|
177 | </valuemap> | |
178 | <value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">2</value> |
|
178 | <value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">2</value> | |
@@ -191,7 +191,6 | |||||
191 | <value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value> |
|
191 | <value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value> | |
192 | <valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/> |
|
192 | <valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/> | |
193 | <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0"> |
|
193 | <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0"> | |
194 | <value type="bool" key="Analyzer.Project.UseGlobal">true</value> |
|
|||
195 | <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/> |
|
194 | <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/> | |
196 | <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value> |
|
195 | <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value> | |
197 | <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value> |
|
196 | <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value> | |
@@ -201,8 +200,12 | |||||
201 | <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value> |
|
200 | <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value> | |
202 | <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value> |
|
201 | <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value> | |
203 | <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value> |
|
202 | <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value> | |
|
203 | <value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value> | |||
204 | <value type="int" key="Analyzer.Valgrind.NumCallers">25</value> |
|
204 | <value type="int" key="Analyzer.Valgrind.NumCallers">25</value> | |
205 | <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/> |
|
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 | <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value> |
|
209 | <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value> | |
207 | <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value> |
|
210 | <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value> | |
208 | <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds"> |
|
211 | <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds"> | |
@@ -240,7 +243,6 | |||||
240 | <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">false</value> |
|
243 | <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">false</value> | |
241 | </valuemap> |
|
244 | </valuemap> | |
242 | <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.1"> |
|
245 | <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.1"> | |
243 | <value type="bool" key="Analyzer.Project.UseGlobal">true</value> |
|
|||
244 | <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/> |
|
246 | <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/> | |
245 | <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value> |
|
247 | <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value> | |
246 | <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value> |
|
248 | <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value> | |
@@ -250,8 +252,12 | |||||
250 | <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value> |
|
252 | <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value> | |
251 | <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value> |
|
253 | <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value> | |
252 | <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value> |
|
254 | <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value> | |
|
255 | <value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value> | |||
253 | <value type="int" key="Analyzer.Valgrind.NumCallers">25</value> |
|
256 | <value type="int" key="Analyzer.Valgrind.NumCallers">25</value> | |
254 | <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/> |
|
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> | |||
255 | <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value> |
|
261 | <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value> | |
256 | <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value> |
|
262 | <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value> | |
257 | <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds"> |
|
263 | <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds"> | |
@@ -300,6 +306,6 | |||||
300 | </data> |
|
306 | </data> | |
301 | <data> |
|
307 | <data> | |
302 | <variable>ProjectExplorer.Project.Updater.FileVersion</variable> |
|
308 | <variable>ProjectExplorer.Project.Updater.FileVersion</variable> | |
303 |
<value type="int">1 |
|
309 | <value type="int">15</value> | |
304 | </data> |
|
310 | </data> | |
305 | </qtcreator> |
|
311 | </qtcreator> |
@@ -194,6 +194,7 | |||||
194 |
|
194 | |||
195 | #define NB_SAMPLES_PER_SNAPSHOT 2048 |
|
195 | #define NB_SAMPLES_PER_SNAPSHOT 2048 | |
196 | #define TIME_OFFSET 2 |
|
196 | #define TIME_OFFSET 2 | |
|
197 | #define ALIGNEMENT_OFFSET 100 | |||
197 | #define WAVEFORM_EXTENDED_HEADER_OFFSET 22 |
|
198 | #define WAVEFORM_EXTENDED_HEADER_OFFSET 22 | |
198 | #define NB_BYTES_SWF_BLK (2 * 6) |
|
199 | #define NB_BYTES_SWF_BLK (2 * 6) | |
199 | #define NB_WORDS_SWF_BLK 3 |
|
200 | #define NB_WORDS_SWF_BLK 3 |
@@ -45,40 +45,25 struct time_management_regs_str{ | |||||
45 | }; |
|
45 | }; | |
46 | typedef struct time_management_regs_str time_management_regs_t; |
|
46 | typedef struct time_management_regs_str time_management_regs_t; | |
47 |
|
47 | |||
48 | struct waveform_picker_regs_str{ |
|
48 | struct new_waveform_picker_regs_str{ | |
49 |
|
|
49 | int data_shaping; // 0x00 00 *** R1 R0 SP1 SP0 BW | |
50 |
|
|
50 | int run_burst_enable; // 0x04 01 *** [run *** burst f2, f1, f0 *** enable f3, f2, f1, f0 ] | |
51 |
|
|
51 | int addr_data_f0; // 0x08 | |
52 |
|
|
52 | int addr_data_f1; // 0x0c | |
53 |
|
|
53 | int addr_data_f2; // 0x10 | |
54 |
|
|
54 | int addr_data_f3; // 0x14 | |
55 |
volatile int status; |
|
55 | volatile int status; // 0x18 | |
56 |
|
|
56 | int delta_snapshot; // 0x1c | |
57 |
|
|
57 | int delta_f0; // 0x20 | |
58 |
|
|
58 | int delta_f0_2; // 0x24 | |
59 | volatile int nb_burst_available;// 0x28 0010 *** |
|
59 | int delta_f1; // 0x28 | |
60 | volatile int nb_snapshot_param; // 0x2c 0011 *** |
|
60 | int delta_f2; // 0x2c | |
|
61 | int nb_data_by_buffer; // 0x30 | |||
|
62 | int snapshot_param; // 0x34 | |||
|
63 | int start_date; // 0x38 | |||
|
64 | int nb_word_in_buffer; // 0x3c | |||
61 | }; |
|
65 | }; | |
62 | typedef struct waveform_picker_regs_str waveform_picker_regs_t; |
|
66 | typedef struct new_waveform_picker_regs_str new_waveform_picker_regs_t; | |
63 |
|
||||
64 | struct waveform_picker_regs_str_alt{ |
|
|||
65 | volatile int data_shaping; // 0x00 00 *** R1 R0 SP1 SP0 BW |
|
|||
66 | volatile int run_burst_enable; // 0x04 01 *** [run *** burst f2, f1, f0 *** enable f3, f2, f1, f0 ] |
|
|||
67 | volatile int addr_data_f0; // 0x08 |
|
|||
68 | volatile int addr_data_f1; // 0x0c |
|
|||
69 | volatile int addr_data_f2; // 0x10 |
|
|||
70 | volatile int addr_data_f3; // 0x14 |
|
|||
71 | volatile int status; // 0x18 |
|
|||
72 | volatile int delta_snapshot; // 0x1c |
|
|||
73 | volatile int delta_f0; // 0x20 |
|
|||
74 | volatile int delta_f0_2; |
|
|||
75 | volatile int delta_f1; |
|
|||
76 | volatile int delta_f2; |
|
|||
77 | volatile int nb_data_by_buffer; |
|
|||
78 | volatile int snapshot_param; |
|
|||
79 | volatile int start_date; |
|
|||
80 | }; |
|
|||
81 | typedef struct waveform_picker_regs_str_alt waveform_picker_regs_t_alt; |
|
|||
82 |
|
67 | |||
83 | struct spectral_matrix_regs_str{ |
|
68 | struct spectral_matrix_regs_str{ | |
84 | volatile int config; |
|
69 | volatile int config; |
@@ -13,7 +13,7 | |||||
13 | extern struct param_sbm1_str param_sbm1; |
|
13 | extern struct param_sbm1_str param_sbm1; | |
14 | extern struct param_sbm2_str param_sbm2; |
|
14 | extern struct param_sbm2_str param_sbm2; | |
15 | extern time_management_regs_t *time_management_regs; |
|
15 | extern time_management_regs_t *time_management_regs; | |
16 | extern waveform_picker_regs_t *waveform_picker_regs; |
|
16 | extern new_waveform_picker_regs_t *new_waveform_picker_regs; | |
17 | extern gptimer_regs_t *gptimer_regs; |
|
17 | extern gptimer_regs_t *gptimer_regs; | |
18 | extern rtems_name misc_name[5]; |
|
18 | extern rtems_name misc_name[5]; | |
19 | extern rtems_id Task_id[20]; /* array of task ids */ |
|
19 | extern rtems_id Task_id[20]; /* array of task ids */ |
@@ -7,8 +7,6 | |||||
7 | #include <math.h> |
|
7 | #include <math.h> | |
8 |
|
8 | |||
9 | #include "fsw_params.h" |
|
9 | #include "fsw_params.h" | |
10 | #include "fsw_spacewire.h" |
|
|||
11 | #include "fsw_misc.h" |
|
|||
12 |
|
10 | |||
13 | #define pi 3.1415 |
|
11 | #define pi 3.1415 | |
14 |
|
12 | |||
@@ -26,8 +24,7 extern volatile int wf_snap_f2_norm[ ]; | |||||
26 | extern volatile int wf_cont_f3[ ]; |
|
24 | extern volatile int wf_cont_f3[ ]; | |
27 | extern volatile int wf_cont_f3_bis[ ]; |
|
25 | extern volatile int wf_cont_f3_bis[ ]; | |
28 | extern char wf_cont_f3_light[ ]; |
|
26 | extern char wf_cont_f3_light[ ]; | |
29 | extern waveform_picker_regs_t *waveform_picker_regs; |
|
27 | extern new_waveform_picker_regs_t *new_waveform_picker_regs; | |
30 | extern waveform_picker_regs_t_alt *waveform_picker_regs_alt; |
|
|||
31 | extern time_management_regs_t *time_management_regs; |
|
28 | extern time_management_regs_t *time_management_regs; | |
32 | extern Packet_TM_LFR_HK_t housekeeping_packet; |
|
29 | extern Packet_TM_LFR_HK_t housekeeping_packet; | |
33 | extern Packet_TM_LFR_PARAMETER_DUMP_t parameter_dump_packet; |
|
30 | extern Packet_TM_LFR_PARAMETER_DUMP_t parameter_dump_packet; | |
@@ -35,6 +32,7 extern struct param_local_str param_loca | |||||
35 |
|
32 | |||
36 | extern unsigned short sequenceCounters_SCIENCE_NORMAL_BURST; |
|
33 | extern unsigned short sequenceCounters_SCIENCE_NORMAL_BURST; | |
37 | extern unsigned short sequenceCounters_SCIENCE_SBM1_SBM2; |
|
34 | extern unsigned short sequenceCounters_SCIENCE_SBM1_SBM2; | |
|
35 | extern unsigned short sequenceCounters_TC_EXE[]; | |||
38 |
|
36 | |||
39 | extern rtems_name misc_name[5]; |
|
37 | extern rtems_name misc_name[5]; | |
40 | extern rtems_name Task_name[20]; /* array of task ids */ |
|
38 | extern rtems_name Task_name[20]; /* array of task ids */ | |
@@ -71,9 +69,9 rtems_id get_pkts_queue_id( void ); | |||||
71 | void set_wfp_data_shaping(); |
|
69 | void set_wfp_data_shaping(); | |
72 | char set_wfp_delta_snapshot(); |
|
70 | char set_wfp_delta_snapshot(); | |
73 | void set_wfp_burst_enable_register( unsigned char mode); |
|
71 | void set_wfp_burst_enable_register( unsigned char mode); | |
74 | void reset_wfp_burst_enable(); |
|
72 | void reset_wfp_run_burst_enable(); | |
75 | void reset_wfp_status(); |
|
73 | void reset_wfp_status(); | |
76 | void reset_waveform_picker_regs(); |
|
74 | void reset_new_waveform_picker_regs(); | |
77 |
|
75 | |||
78 | //***************** |
|
76 | //***************** | |
79 | // local parameters |
|
77 | // local parameters |
@@ -36,25 +36,24 time_management_regs_t *time_management_ | |||||
36 | gptimer_regs_t *gptimer_regs = (gptimer_regs_t *) REGS_ADDR_GPTIMER; |
|
36 | gptimer_regs_t *gptimer_regs = (gptimer_regs_t *) REGS_ADDR_GPTIMER; | |
37 | #ifdef GSA |
|
37 | #ifdef GSA | |
38 | #else |
|
38 | #else | |
39 | waveform_picker_regs_t *waveform_picker_regs = (waveform_picker_regs_t*) REGS_ADDR_WAVEFORM_PICKER; |
|
39 | new_waveform_picker_regs_t *new_waveform_picker_regs = (new_waveform_picker_regs_t*) REGS_ADDR_WAVEFORM_PICKER; | |
40 | waveform_picker_regs_t_alt *waveform_picker_regs_alt = (waveform_picker_regs_t_alt*) REGS_ADDR_WAVEFORM_PICKER; |
|
|||
41 | #endif |
|
40 | #endif | |
42 | spectral_matrix_regs_t *spectral_matrix_regs = (spectral_matrix_regs_t*) REGS_ADDR_SPECTRAL_MATRIX; |
|
41 | spectral_matrix_regs_t *spectral_matrix_regs = (spectral_matrix_regs_t*) REGS_ADDR_SPECTRAL_MATRIX; | |
43 |
|
42 | |||
44 | // WAVEFORMS GLOBAL VARIABLES // 2048 * 3 * 4 + 2 * 4 = 24576 + 8 bytes |
|
43 | // WAVEFORMS GLOBAL VARIABLES // 2048 * 3 * 4 + 2 * 4 = 24576 + 8 bytes | |
45 | volatile int wf_snap_f0[ NB_SAMPLES_PER_SNAPSHOT * NB_WORDS_SWF_BLK + TIME_OFFSET ]; |
|
44 | volatile int wf_snap_f0[ NB_SAMPLES_PER_SNAPSHOT * NB_WORDS_SWF_BLK + TIME_OFFSET ] __attribute__((aligned(0x100))); | |
46 | // |
|
45 | // | |
47 | volatile int wf_snap_f1[ NB_SAMPLES_PER_SNAPSHOT * NB_WORDS_SWF_BLK + TIME_OFFSET ]; |
|
46 | volatile int wf_snap_f1[ NB_SAMPLES_PER_SNAPSHOT * NB_WORDS_SWF_BLK + TIME_OFFSET ] __attribute__((aligned(0x100))); | |
48 | volatile int wf_snap_f1_bis[ 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 ] __attribute__((aligned(0x100))); | |
49 | volatile int wf_snap_f1_norm[ 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 ] __attribute__((aligned(0x100))); | |
50 | // |
|
49 | // | |
51 | volatile int wf_snap_f2[ NB_SAMPLES_PER_SNAPSHOT * NB_WORDS_SWF_BLK + TIME_OFFSET ]; |
|
50 | volatile int wf_snap_f2[ NB_SAMPLES_PER_SNAPSHOT * NB_WORDS_SWF_BLK + TIME_OFFSET ] __attribute__((aligned(0x100))); | |
52 | volatile int wf_snap_f2_bis[ 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 ] __attribute__((aligned(0x100))); | |
53 | volatile int wf_snap_f2_norm[ 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 ] __attribute__((aligned(0x100))); | |
54 | // |
|
53 | // | |
55 | volatile int wf_cont_f3[ NB_SAMPLES_PER_SNAPSHOT * NB_WORDS_SWF_BLK + TIME_OFFSET ]; |
|
54 | volatile int wf_cont_f3[ NB_SAMPLES_PER_SNAPSHOT * NB_WORDS_SWF_BLK + TIME_OFFSET ] __attribute__((aligned(0x100))); | |
56 | volatile int wf_cont_f3_bis[ NB_SAMPLES_PER_SNAPSHOT * NB_WORDS_SWF_BLK + TIME_OFFSET ]; |
|
55 | volatile int wf_cont_f3_bis[ NB_SAMPLES_PER_SNAPSHOT * NB_WORDS_SWF_BLK + TIME_OFFSET ] __attribute__((aligned(0x100))); | |
57 | char wf_cont_f3_light[ NB_SAMPLES_PER_SNAPSHOT * NB_BYTES_CWF3_LIGHT_BLK ]; |
|
56 | char wf_cont_f3_light[ NB_SAMPLES_PER_SNAPSHOT * NB_BYTES_CWF3_LIGHT_BLK ] __attribute__((aligned(0x100))); | |
58 |
|
57 | |||
59 | // SPECTRAL MATRICES GLOBAL VARIABLES |
|
58 | // SPECTRAL MATRICES GLOBAL VARIABLES | |
60 | volatile int spec_mat_f0_0[ SM_HEADER + TOTAL_SIZE_SM ]; |
|
59 | volatile int spec_mat_f0_0[ SM_HEADER + TOTAL_SIZE_SM ]; |
@@ -70,7 +70,6 rtems_task Init( rtems_task_argument ign | |||||
70 | * |
|
70 | * | |
71 | */ |
|
71 | */ | |
72 |
|
72 | |||
73 |
|
||||
74 | rtems_status_code status; |
|
73 | rtems_status_code status; | |
75 | rtems_status_code status_spw; |
|
74 | rtems_status_code status_spw; | |
76 | rtems_isr_entry old_isr_handler; |
|
75 | rtems_isr_entry old_isr_handler; | |
@@ -84,7 +83,9 rtems_task Init( rtems_task_argument ign | |||||
84 | //send_console_outputs_on_apbuart_port(); |
|
83 | //send_console_outputs_on_apbuart_port(); | |
85 | set_apbuart_scaler_reload_register(REGS_ADDR_APBUART, APBUART_SCALER_RELOAD_VALUE); |
|
84 | set_apbuart_scaler_reload_register(REGS_ADDR_APBUART, APBUART_SCALER_RELOAD_VALUE); | |
86 |
|
85 | |||
87 | reset_wfp_burst_enable(); // stop the waveform picker if it was running |
|
86 | // waveform picker registers initialization | |
|
87 | reset_wfp_run_burst_enable(); | |||
|
88 | reset_wfp_status(); | |||
88 |
|
89 | |||
89 | init_parameter_dump(); |
|
90 | init_parameter_dump(); | |
90 | init_local_mode_parameters(); |
|
91 | init_local_mode_parameters(); | |
@@ -193,28 +194,22 rtems_task Init( rtems_task_argument ign | |||||
193 | void init_local_mode_parameters( void ) |
|
194 | void init_local_mode_parameters( void ) | |
194 | { |
|
195 | { | |
195 | /** This function initialize the param_local global variable with default values. |
|
196 | /** This function initialize the param_local global variable with default values. | |
196 |
|
|
197 | * | |
197 |
|
|
198 | */ | |
198 |
|
||||
199 | unsigned int i; |
|
199 | unsigned int i; | |
200 |
|
||||
201 | // LOCAL PARAMETERS |
|
200 | // LOCAL PARAMETERS | |
202 | set_local_sbm1_nb_cwf_max(); |
|
201 | set_local_sbm1_nb_cwf_max(); | |
203 | set_local_sbm2_nb_cwf_max(); |
|
202 | set_local_sbm2_nb_cwf_max(); | |
204 | set_local_nb_interrupt_f0_MAX(); |
|
203 | set_local_nb_interrupt_f0_MAX(); | |
205 |
|
||||
206 | BOOT_PRINTF1("local_sbm1_nb_cwf_max %d \n", param_local.local_sbm1_nb_cwf_max) |
|
204 | BOOT_PRINTF1("local_sbm1_nb_cwf_max %d \n", param_local.local_sbm1_nb_cwf_max) | |
207 | BOOT_PRINTF1("local_sbm2_nb_cwf_max %d \n", param_local.local_sbm2_nb_cwf_max) |
|
205 | BOOT_PRINTF1("local_sbm2_nb_cwf_max %d \n", param_local.local_sbm2_nb_cwf_max) | |
208 | BOOT_PRINTF1("nb_interrupt_f0_MAX = %d\n", param_local.local_nb_interrupt_f0_MAX) |
|
206 | BOOT_PRINTF1("nb_interrupt_f0_MAX = %d\n", param_local.local_nb_interrupt_f0_MAX) | |
209 |
|
||||
210 | reset_local_sbm1_nb_cwf_sent(); |
|
207 | reset_local_sbm1_nb_cwf_sent(); | |
211 | reset_local_sbm2_nb_cwf_sent(); |
|
208 | reset_local_sbm2_nb_cwf_sent(); | |
212 |
|
||||
213 | // init sequence counters |
|
209 | // init sequence counters | |
214 |
|
||||
215 | for(i = 0; i<SEQ_CNT_NB_DEST_ID; i++) |
|
210 | for(i = 0; i<SEQ_CNT_NB_DEST_ID; i++) | |
216 | { |
|
211 | { | |
217 |
|
|
212 | sequenceCounters_TC_EXE[i] = 0x00; | |
218 | } |
|
213 | } | |
219 | sequenceCounters_SCIENCE_NORMAL_BURST = 0x00; |
|
214 | sequenceCounters_SCIENCE_NORMAL_BURST = 0x00; | |
220 | sequenceCounters_SCIENCE_SBM1_SBM2 = 0x00; |
|
215 | sequenceCounters_SCIENCE_SBM1_SBM2 = 0x00; | |
@@ -347,7 +342,7 int create_all_tasks( void ) // create a | |||||
347 | { |
|
342 | { | |
348 | status = rtems_task_create( |
|
343 | status = rtems_task_create( | |
349 | Task_name[TASKID_HOUS], TASK_PRIORITY_HOUS, RTEMS_MINIMUM_STACK_SIZE, |
|
344 | Task_name[TASKID_HOUS], TASK_PRIORITY_HOUS, RTEMS_MINIMUM_STACK_SIZE, | |
350 |
RTEMS_DEFAULT_MODES |
|
345 | RTEMS_DEFAULT_MODES, | |
351 | RTEMS_DEFAULT_ATTRIBUTES, &Task_id[TASKID_HOUS] |
|
346 | RTEMS_DEFAULT_ATTRIBUTES, &Task_id[TASKID_HOUS] | |
352 | ); |
|
347 | ); | |
353 | } |
|
348 | } | |
@@ -584,3 +579,4 rtems_status_code create_message_queues( | |||||
584 |
|
579 | |||
585 | return ret; |
|
580 | return ret; | |
586 | } |
|
581 | } | |
|
582 |
@@ -7,13 +7,15 | |||||
7 |
|
7 | |||
8 | #include "fsw_misc.h" |
|
8 | #include "fsw_misc.h" | |
9 |
|
9 | |||
10 |
char *DumbMessages[ |
|
10 | char *DumbMessages[9] = {"in DUMB *** default", // RTEMS_EVENT_0 | |
11 | "in DUMB *** timecode_irq_handler", // RTEMS_EVENT_1 |
|
11 | "in DUMB *** timecode_irq_handler", // RTEMS_EVENT_1 | |
12 | "in DUMB *** waveforms_isr", // RTEMS_EVENT_2 |
|
12 | "in DUMB *** waveforms_isr", // RTEMS_EVENT_2 | |
13 | "in DUMB *** in SMIQ *** Error sending event to AVF0", // RTEMS_EVENT_3 |
|
13 | "in DUMB *** in SMIQ *** Error sending event to AVF0", // RTEMS_EVENT_3 | |
14 | "in DUMB *** spectral_matrices_isr *** Error sending event to SMIQ", // RTEMS_EVENT_4 |
|
14 | "in DUMB *** spectral_matrices_isr *** Error sending event to SMIQ", // RTEMS_EVENT_4 | |
15 | "in DUMB *** waveforms_simulator_isr", // RTEMS_EVENT_5 |
|
15 | "in DUMB *** waveforms_simulator_isr", // RTEMS_EVENT_5 | |
16 |
"ERR HK" |
|
16 | "ERR HK", // RTEMS_EVENT_6 | |
|
17 | "full is 0", // RTEMS_EVENT_7 | |||
|
18 | "full is 1" // RTEMS_EVENT_8 | |||
17 | }; |
|
19 | }; | |
18 |
|
20 | |||
19 | int configure_timer(gptimer_regs_t *gptimer_regs, unsigned char timer, unsigned int clock_divider, |
|
21 | int configure_timer(gptimer_regs_t *gptimer_regs, unsigned char timer, unsigned int clock_divider, | |
@@ -251,7 +253,8 rtems_task dumb_task( rtems_task_argumen | |||||
251 |
|
253 | |||
252 | while(1){ |
|
254 | while(1){ | |
253 | rtems_event_receive(RTEMS_EVENT_0 | RTEMS_EVENT_1 | RTEMS_EVENT_2 | RTEMS_EVENT_3 |
|
255 | rtems_event_receive(RTEMS_EVENT_0 | RTEMS_EVENT_1 | RTEMS_EVENT_2 | RTEMS_EVENT_3 | |
254 |
|
|
256 | | RTEMS_EVENT_4 | RTEMS_EVENT_5 | RTEMS_EVENT_6 | |
|
257 | | RTEMS_EVENT_7 | RTEMS_EVENT_8 | RTEMS_EVENT_9 , | |||
255 | RTEMS_WAIT | RTEMS_EVENT_ANY, RTEMS_NO_TIMEOUT, &event_out); // wait for an RTEMS_EVENT |
|
258 | RTEMS_WAIT | RTEMS_EVENT_ANY, RTEMS_NO_TIMEOUT, &event_out); // wait for an RTEMS_EVENT | |
256 | intEventOut = (unsigned int) event_out; |
|
259 | intEventOut = (unsigned int) event_out; | |
257 | for ( i=0; i<32; i++) |
|
260 | for ( i=0; i<32; i++) |
@@ -388,7 +388,7 int stop_current_mode() | |||||
388 | LEON_Mask_interrupt( IRQ_WAVEFORM_PICKER ); // mask waveform picker interrupt |
|
388 | LEON_Mask_interrupt( IRQ_WAVEFORM_PICKER ); // mask waveform picker interrupt | |
389 | LEON_Mask_interrupt( IRQ_SPECTRAL_MATRIX ); // mask spectral matrix interrupt |
|
389 | LEON_Mask_interrupt( IRQ_SPECTRAL_MATRIX ); // mask spectral matrix interrupt | |
390 | // reset registers |
|
390 | // reset registers | |
391 | reset_wfp_burst_enable(); // reset burst and enable bits |
|
391 | reset_wfp_run_burst_enable(); // reset run, burst and enable bits, [r b2 b1 b0 e3 e2 e1 e0] | |
392 | reset_wfp_status(); // reset all the status bits |
|
392 | reset_wfp_status(); // reset all the status bits | |
393 | // creal interruptions |
|
393 | // creal interruptions | |
394 | LEON_Clear_interrupt( IRQ_WAVEFORM_PICKER ); // clear waveform picker interrupt |
|
394 | LEON_Clear_interrupt( IRQ_WAVEFORM_PICKER ); // clear waveform picker interrupt | |
@@ -464,6 +464,7 int enter_standby_mode() | |||||
464 | int enter_normal_mode() |
|
464 | int enter_normal_mode() | |
465 | { |
|
465 | { | |
466 | rtems_status_code status; |
|
466 | rtems_status_code status; | |
|
467 | int startDate; | |||
467 |
|
468 | |||
468 | status = restart_science_tasks(); |
|
469 | status = restart_science_tasks(); | |
469 |
|
470 | |||
@@ -479,10 +480,13 int enter_normal_mode() | |||||
479 | #else |
|
480 | #else | |
480 | //**************** |
|
481 | //**************** | |
481 | // waveform picker |
|
482 | // waveform picker | |
482 | reset_waveform_picker_regs(); |
|
483 | reset_new_waveform_picker_regs(); | |
483 | set_wfp_burst_enable_register(LFR_MODE_NORMAL); |
|
484 | set_wfp_burst_enable_register( LFR_MODE_NORMAL ); | |
484 | LEON_Clear_interrupt( IRQ_WAVEFORM_PICKER ); |
|
485 | LEON_Clear_interrupt( IRQ_WAVEFORM_PICKER ); | |
485 | LEON_Unmask_interrupt( IRQ_WAVEFORM_PICKER ); |
|
486 | LEON_Unmask_interrupt( IRQ_WAVEFORM_PICKER ); | |
|
487 | startDate = time_management_regs->coarse_time + 2; | |||
|
488 | new_waveform_picker_regs->run_burst_enable = new_waveform_picker_regs->run_burst_enable | 0x80; // [1000 0000] | |||
|
489 | new_waveform_picker_regs->start_date = startDate; | |||
486 | //**************** |
|
490 | //**************** | |
487 | // spectral matrix |
|
491 | // spectral matrix | |
488 | #endif |
|
492 | #endif | |
@@ -499,7 +503,7 int enter_burst_mode() | |||||
499 | #ifdef GSA |
|
503 | #ifdef GSA | |
500 | LEON_Unmask_interrupt( IRQ_SM ); |
|
504 | LEON_Unmask_interrupt( IRQ_SM ); | |
501 | #else |
|
505 | #else | |
502 | reset_waveform_picker_regs(); |
|
506 | reset_new_waveform_picker_regs(); | |
503 | set_wfp_burst_enable_register(LFR_MODE_BURST); |
|
507 | set_wfp_burst_enable_register(LFR_MODE_BURST); | |
504 | LEON_Clear_interrupt( IRQ_WAVEFORM_PICKER ); |
|
508 | LEON_Clear_interrupt( IRQ_WAVEFORM_PICKER ); | |
505 | LEON_Unmask_interrupt( IRQ_WAVEFORM_PICKER ); |
|
509 | LEON_Unmask_interrupt( IRQ_WAVEFORM_PICKER ); | |
@@ -511,6 +515,7 int enter_burst_mode() | |||||
511 | int enter_sbm1_mode() |
|
515 | int enter_sbm1_mode() | |
512 | { |
|
516 | { | |
513 | rtems_status_code status; |
|
517 | rtems_status_code status; | |
|
518 | int startDate; | |||
514 |
|
519 | |||
515 | status = restart_science_tasks(); |
|
520 | status = restart_science_tasks(); | |
516 |
|
521 | |||
@@ -521,14 +526,17 int enter_sbm1_mode() | |||||
521 | #ifdef GSA |
|
526 | #ifdef GSA | |
522 | LEON_Unmask_interrupt( IRQ_SM ); |
|
527 | LEON_Unmask_interrupt( IRQ_SM ); | |
523 | #else |
|
528 | #else | |
524 | reset_waveform_picker_regs(); |
|
529 | //**************** | |
525 | set_wfp_burst_enable_register(LFR_MODE_SBM1); |
|
530 | // waveform picker | |
|
531 | reset_new_waveform_picker_regs(); | |||
|
532 | set_wfp_burst_enable_register( LFR_MODE_SBM1 ); | |||
526 | LEON_Clear_interrupt( IRQ_WAVEFORM_PICKER ); |
|
533 | LEON_Clear_interrupt( IRQ_WAVEFORM_PICKER ); | |
527 | LEON_Unmask_interrupt( IRQ_WAVEFORM_PICKER ); |
|
534 | LEON_Unmask_interrupt( IRQ_WAVEFORM_PICKER ); | |
528 | // SM simulation |
|
535 | startDate = time_management_regs->coarse_time + 2; | |
529 | // timer_start( (gptimer_regs_t*) REGS_ADDR_GPTIMER, TIMER_SM_SIMULATOR ); |
|
536 | new_waveform_picker_regs->run_burst_enable = new_waveform_picker_regs->run_burst_enable | 0x80; // [1000 0000] | |
530 | // LEON_Clear_interrupt( IRQ_SM ); // the IRQ_SM seems to be incompatible with the IRQ_WF on the xilinx board |
|
537 | new_waveform_picker_regs->start_date = startDate; | |
531 | // LEON_Unmask_interrupt( IRQ_SM ); |
|
538 | //**************** | |
|
539 | // spectral matrix | |||
532 | #endif |
|
540 | #endif | |
533 |
|
541 | |||
534 | return status; |
|
542 | return status; | |
@@ -547,7 +555,7 int enter_sbm2_mode() | |||||
547 | #ifdef GSA |
|
555 | #ifdef GSA | |
548 | LEON_Unmask_interrupt( IRQ_SM ); |
|
556 | LEON_Unmask_interrupt( IRQ_SM ); | |
549 | #else |
|
557 | #else | |
550 | reset_waveform_picker_regs(); |
|
558 | reset_new_waveform_picker_regs(); | |
551 | set_wfp_burst_enable_register(LFR_MODE_SBM2); |
|
559 | set_wfp_burst_enable_register(LFR_MODE_SBM2); | |
552 | LEON_Clear_interrupt( IRQ_WAVEFORM_PICKER ); |
|
560 | LEON_Clear_interrupt( IRQ_WAVEFORM_PICKER ); | |
553 | LEON_Unmask_interrupt( IRQ_WAVEFORM_PICKER ); |
|
561 | LEON_Unmask_interrupt( IRQ_WAVEFORM_PICKER ); |
@@ -25,7 +25,7 int action_load_common_par(ccsdsTelecomm | |||||
25 |
|
25 | |||
26 | parameter_dump_packet.unused0 = TC->dataAndCRC[0]; |
|
26 | parameter_dump_packet.unused0 = TC->dataAndCRC[0]; | |
27 | parameter_dump_packet.bw_sp0_sp1_r0_r1 = TC->dataAndCRC[1]; |
|
27 | parameter_dump_packet.bw_sp0_sp1_r0_r1 = TC->dataAndCRC[1]; | |
28 | set_wfp_data_shaping(parameter_dump_packet.bw_sp0_sp1_r0_r1); |
|
28 | set_wfp_data_shaping( parameter_dump_packet.bw_sp0_sp1_r0_r1 ); | |
29 | return LFR_SUCCESSFUL; |
|
29 | return LFR_SUCCESSFUL; | |
30 | } |
|
30 | } | |
31 |
|
31 |
@@ -22,9 +22,12 Header_TM_LFR_SCIENCE_CWF_t headerCWF_F3 | |||||
22 |
|
22 | |||
23 | unsigned char doubleSendCWF1 = 0; |
|
23 | unsigned char doubleSendCWF1 = 0; | |
24 | unsigned char doubleSendCWF2 = 0; |
|
24 | unsigned char doubleSendCWF2 = 0; | |
|
25 | unsigned char fullRecord; | |||
25 |
|
26 | |||
26 | rtems_isr waveforms_isr( rtems_vector_number vector ) |
|
27 | rtems_isr waveforms_isr( rtems_vector_number vector ) | |
27 | { |
|
28 | { | |
|
29 | unsigned int statusReg; | |||
|
30 | ||||
28 | /** This is the interrupt sub routine called by the waveform picker core. |
|
31 | /** This is the interrupt sub routine called by the waveform picker core. | |
29 | * |
|
32 | * | |
30 | * This ISR launch different actions depending mainly on two pieces of information: |
|
33 | * This ISR launch different actions depending mainly on two pieces of information: | |
@@ -33,24 +36,26 rtems_isr waveforms_isr( rtems_vector_nu | |||||
33 | * |
|
36 | * | |
34 | */ |
|
37 | */ | |
35 |
|
38 | |||
|
39 | new_waveform_picker_regs->status = new_waveform_picker_regs->status & 0xfffff00f; // clear new_err and full_err | |||
|
40 | ||||
36 | #ifdef GSA |
|
41 | #ifdef GSA | |
37 | #else |
|
42 | #else | |
38 | if ( (lfrCurrentMode == LFR_MODE_NORMAL) |
|
43 | if ( (lfrCurrentMode == LFR_MODE_NORMAL) | |
39 | || (lfrCurrentMode == LFR_MODE_SBM1) || (lfrCurrentMode == LFR_MODE_SBM2) ) |
|
44 | || (lfrCurrentMode == LFR_MODE_SBM1) || (lfrCurrentMode == LFR_MODE_SBM2) ) | |
40 | { // in modes other than STANDBY and BURST, send the CWF_F3 data |
|
45 | { // in modes other than STANDBY and BURST, send the CWF_F3 data | |
41 | if ((waveform_picker_regs->status & 0x08) == 0x08){ // [1000] f3 is full |
|
46 | if ((new_waveform_picker_regs->status & 0x08) == 0x08){ // [1000] f3 is full | |
42 | // (1) change the receiving buffer for the waveform picker |
|
47 | // (1) change the receiving buffer for the waveform picker | |
43 | if (waveform_picker_regs->addr_data_f3 == (int) wf_cont_f3) { |
|
48 | if (new_waveform_picker_regs->addr_data_f3 == (int) wf_cont_f3) { | |
44 | waveform_picker_regs->addr_data_f3 = (int) (wf_cont_f3_bis); |
|
49 | new_waveform_picker_regs->addr_data_f3 = (int) (wf_cont_f3_bis); | |
45 | } |
|
50 | } | |
46 | else { |
|
51 | else { | |
47 | waveform_picker_regs->addr_data_f3 = (int) (wf_cont_f3); |
|
52 | new_waveform_picker_regs->addr_data_f3 = (int) (wf_cont_f3); | |
48 | } |
|
53 | } | |
49 | // (2) send an event for the waveforms transmission |
|
54 | // (2) send an event for the waveforms transmission | |
50 | if (rtems_event_send( Task_id[TASKID_CWF3], RTEMS_EVENT_0 ) != RTEMS_SUCCESSFUL) { |
|
55 | if (rtems_event_send( Task_id[TASKID_CWF3], RTEMS_EVENT_0 ) != RTEMS_SUCCESSFUL) { | |
51 | rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_2 ); |
|
56 | rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_2 ); | |
52 | } |
|
57 | } | |
53 | waveform_picker_regs->status = waveform_picker_regs->status & 0xfffff777; // reset f3 bits to 0, [1111 0111 0111 0111] |
|
58 | new_waveform_picker_regs->status = new_waveform_picker_regs->status & 0xfffff777; // reset f3 bits to 0, [1111 0111 0111 0111] | |
54 | } |
|
59 | } | |
55 | } |
|
60 | } | |
56 | #endif |
|
61 | #endif | |
@@ -68,20 +73,15 rtems_isr waveforms_isr( rtems_vector_nu | |||||
68 | #ifdef GSA |
|
73 | #ifdef GSA | |
69 | PRINTF("in waveform_isr *** unexpected waveform picker interruption\n") |
|
74 | PRINTF("in waveform_isr *** unexpected waveform picker interruption\n") | |
70 | #else |
|
75 | #else | |
71 | if ( (waveform_picker_regs->burst_enable & 0x7) == 0x0 ){ // if no channel is enable |
|
76 | statusReg = new_waveform_picker_regs->status; | |
72 | rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_2 ); |
|
77 | fullRecord = fullRecord | ( statusReg & 0x7 ); | |
|
78 | if ( (new_waveform_picker_regs->status & 0x7) == 0x7 ) // f2 f1 and f0 are full | |||
|
79 | { | |||
|
80 | if (rtems_event_send( Task_id[TASKID_WFRM], RTEMS_EVENT_MODE_NORMAL ) != RTEMS_SUCCESSFUL) { | |||
|
81 | rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_2 ); | |||
|
82 | } | |||
|
83 | new_waveform_picker_regs->status = new_waveform_picker_regs->status & 0xfffff888; | |||
73 | } |
|
84 | } | |
74 | else { |
|
|||
75 | if ( (waveform_picker_regs->status & 0x7) == 0x7 ){ // f2 f1 and f0 are full |
|
|||
76 | waveform_picker_regs->burst_enable = waveform_picker_regs->burst_enable & 0x08; |
|
|||
77 | if (rtems_event_send( Task_id[TASKID_WFRM], RTEMS_EVENT_MODE_NORMAL ) != RTEMS_SUCCESSFUL) { |
|
|||
78 | rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_2 ); |
|
|||
79 | } |
|
|||
80 | // waveform_picker_regs->status = waveform_picker_regs->status & 0x00; |
|
|||
81 | waveform_picker_regs->status = waveform_picker_regs->status & 0xfffff888; |
|
|||
82 | waveform_picker_regs->burst_enable = waveform_picker_regs->burst_enable | 0x07; // [0111] enable f2 f1 f0 |
|
|||
83 | } |
|
|||
84 | } |
|
|||
85 | #endif |
|
85 | #endif | |
86 | break; |
|
86 | break; | |
87 |
|
87 | |||
@@ -91,19 +91,19 rtems_isr waveforms_isr( rtems_vector_nu | |||||
91 | #ifdef GSA |
|
91 | #ifdef GSA | |
92 | PRINTF("in waveform_isr *** unexpected waveform picker interruption\n") |
|
92 | PRINTF("in waveform_isr *** unexpected waveform picker interruption\n") | |
93 | #else |
|
93 | #else | |
94 | if ((waveform_picker_regs->status & 0x04) == 0x04){ // [0100] check the f2 full bit |
|
94 | if ((new_waveform_picker_regs->status & 0x04) == 0x04){ // [0100] check the f2 full bit | |
95 | // (1) change the receiving buffer for the waveform picker |
|
95 | // (1) change the receiving buffer for the waveform picker | |
96 | if (waveform_picker_regs->addr_data_f2 == (int) wf_snap_f2) { |
|
96 | if (new_waveform_picker_regs->addr_data_f2 == (int) wf_snap_f2) { | |
97 | waveform_picker_regs->addr_data_f2 = (int) (wf_snap_f2_bis); |
|
97 | new_waveform_picker_regs->addr_data_f2 = (int) (wf_snap_f2_bis); | |
98 | } |
|
98 | } | |
99 | else { |
|
99 | else { | |
100 | waveform_picker_regs->addr_data_f2 = (int) (wf_snap_f2); |
|
100 | new_waveform_picker_regs->addr_data_f2 = (int) (wf_snap_f2); | |
101 | } |
|
101 | } | |
102 | // (2) send an event for the waveforms transmission |
|
102 | // (2) send an event for the waveforms transmission | |
103 | if (rtems_event_send( Task_id[TASKID_CWF2], RTEMS_EVENT_MODE_BURST ) != RTEMS_SUCCESSFUL) { |
|
103 | if (rtems_event_send( Task_id[TASKID_CWF2], RTEMS_EVENT_MODE_BURST ) != RTEMS_SUCCESSFUL) { | |
104 | rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_2 ); |
|
104 | rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_2 ); | |
105 | } |
|
105 | } | |
106 | waveform_picker_regs->status = waveform_picker_regs->status & 0xfffffbbb; // [1111 1011 1011 1011] f2 bits = 0 |
|
106 | new_waveform_picker_regs->status = new_waveform_picker_regs->status & 0xfffffbbb; // [1111 1011 1011 1011] f2 bits = 0 | |
107 | } |
|
107 | } | |
108 | #endif |
|
108 | #endif | |
109 | break; |
|
109 | break; | |
@@ -114,34 +114,34 rtems_isr waveforms_isr( rtems_vector_nu | |||||
114 | #ifdef GSA |
|
114 | #ifdef GSA | |
115 | PRINTF("in waveform_isr *** unexpected waveform picker interruption\n") |
|
115 | PRINTF("in waveform_isr *** unexpected waveform picker interruption\n") | |
116 | #else |
|
116 | #else | |
117 | if ((waveform_picker_regs->status & 0x02) == 0x02){ // [0010] check the f1 full bit |
|
117 | if ((new_waveform_picker_regs->status & 0x02) == 0x02){ // [0010] check the f1 full bit | |
118 | // (1) change the receiving buffer for the waveform picker |
|
118 | // (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) ) |
|
119 | if ( param_local.local_sbm1_nb_cwf_sent == (param_local.local_sbm1_nb_cwf_max-1) ) | |
120 | { |
|
120 | { | |
121 | waveform_picker_regs->addr_data_f1 = (int) (wf_snap_f1_norm); |
|
121 | new_waveform_picker_regs->addr_data_f1 = (int) (wf_snap_f1_norm); | |
122 | } |
|
122 | } | |
123 | else if ( waveform_picker_regs->addr_data_f1 == (int) wf_snap_f1_norm ) |
|
123 | else if ( new_waveform_picker_regs->addr_data_f1 == (int) wf_snap_f1_norm ) | |
124 | { |
|
124 | { | |
125 | doubleSendCWF1 = 1; |
|
125 | doubleSendCWF1 = 1; | |
126 | waveform_picker_regs->addr_data_f1 = (int) (wf_snap_f1); |
|
126 | new_waveform_picker_regs->addr_data_f1 = (int) (wf_snap_f1); | |
127 | } |
|
127 | } | |
128 | else if ( waveform_picker_regs->addr_data_f1 == (int) wf_snap_f1 ) { |
|
128 | else if ( new_waveform_picker_regs->addr_data_f1 == (int) wf_snap_f1 ) { | |
129 | waveform_picker_regs->addr_data_f1 = (int) (wf_snap_f1_bis); |
|
129 | new_waveform_picker_regs->addr_data_f1 = (int) (wf_snap_f1_bis); | |
130 | } |
|
130 | } | |
131 | else { |
|
131 | else { | |
132 | waveform_picker_regs->addr_data_f1 = (int) (wf_snap_f1); |
|
132 | new_waveform_picker_regs->addr_data_f1 = (int) (wf_snap_f1); | |
133 | } |
|
133 | } | |
134 | // (2) send an event for the waveforms transmission |
|
134 | // (2) send an event for the waveforms transmission | |
135 | if (rtems_event_send( Task_id[TASKID_CWF1], RTEMS_EVENT_MODE_SBM1 ) != RTEMS_SUCCESSFUL) { |
|
135 | if (rtems_event_send( Task_id[TASKID_CWF1], RTEMS_EVENT_MODE_SBM1 ) != RTEMS_SUCCESSFUL) { | |
136 | rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_2 ); |
|
136 | rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_2 ); | |
137 | } |
|
137 | } | |
138 | waveform_picker_regs->status = waveform_picker_regs->status & 0xfffffddd; // [1111 1101 1101 1101] f1 bit = 0 |
|
138 | new_waveform_picker_regs->status = new_waveform_picker_regs->status & 0xfffffddd; // [1111 1101 1101 1101] f1 bit = 0 | |
139 | } |
|
139 | } | |
140 | if ( ( (waveform_picker_regs->status & 0x05) == 0x05 ) ) { // [0101] check the f2 and f0 full bit |
|
140 | if ( ( (new_waveform_picker_regs->status & 0x05) == 0x05 ) ) { // [0101] check the f2 and f0 full bit | |
141 | if (rtems_event_send( Task_id[TASKID_WFRM], RTEMS_EVENT_MODE_NORMAL ) != RTEMS_SUCCESSFUL) { |
|
141 | if (rtems_event_send( Task_id[TASKID_WFRM], RTEMS_EVENT_MODE_NORMAL ) != RTEMS_SUCCESSFUL) { | |
142 | rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_2 ); |
|
142 | rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_2 ); | |
143 | } |
|
143 | } | |
144 | waveform_picker_regs->status = waveform_picker_regs->status & 0xfffffaaa; // [1111 1010 1010 1010] f2 and f0 bits = 0 |
|
144 | new_waveform_picker_regs->status = new_waveform_picker_regs->status & 0xfffffaaa; // [1111 1010 1010 1010] f2 and f0 bits = 0 | |
145 | reset_local_sbm1_nb_cwf_sent(); |
|
145 | reset_local_sbm1_nb_cwf_sent(); | |
146 | } |
|
146 | } | |
147 |
|
147 | |||
@@ -154,37 +154,37 rtems_isr waveforms_isr( rtems_vector_nu | |||||
154 | #ifdef GSA |
|
154 | #ifdef GSA | |
155 | PRINTF("in waveform_isr *** unexpected waveform picker interruption\n") |
|
155 | PRINTF("in waveform_isr *** unexpected waveform picker interruption\n") | |
156 | #else |
|
156 | #else | |
157 | if ((waveform_picker_regs->status & 0x04) == 0x04){ // [0100] check the f2 full bit |
|
157 | if ((new_waveform_picker_regs->status & 0x04) == 0x04){ // [0100] check the f2 full bit | |
158 | // (1) change the receiving buffer for the waveform picker |
|
158 | // (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) ) |
|
159 | if ( param_local.local_sbm2_nb_cwf_sent == (param_local.local_sbm2_nb_cwf_max-1) ) | |
160 | { |
|
160 | { | |
161 | waveform_picker_regs->addr_data_f2 = (int) (wf_snap_f2_norm); |
|
161 | new_waveform_picker_regs->addr_data_f2 = (int) (wf_snap_f2_norm); | |
162 | } |
|
162 | } | |
163 | else if ( waveform_picker_regs->addr_data_f2 == (int) wf_snap_f2_norm ) { |
|
163 | else if ( new_waveform_picker_regs->addr_data_f2 == (int) wf_snap_f2_norm ) { | |
164 | waveform_picker_regs->addr_data_f2 = (int) (wf_snap_f2); |
|
164 | new_waveform_picker_regs->addr_data_f2 = (int) (wf_snap_f2); | |
165 | doubleSendCWF2 = 1; |
|
165 | doubleSendCWF2 = 1; | |
166 | if (rtems_event_send( Task_id[TASKID_WFRM], RTEMS_EVENT_MODE_SBM2_WFRM ) != RTEMS_SUCCESSFUL) { |
|
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 ); |
|
167 | rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_2 ); | |
168 | } |
|
168 | } | |
169 | reset_local_sbm2_nb_cwf_sent(); |
|
169 | reset_local_sbm2_nb_cwf_sent(); | |
170 | } |
|
170 | } | |
171 | else if ( waveform_picker_regs->addr_data_f2 == (int) wf_snap_f2 ) { |
|
171 | else if ( new_waveform_picker_regs->addr_data_f2 == (int) wf_snap_f2 ) { | |
172 | waveform_picker_regs->addr_data_f2 = (int) (wf_snap_f2_bis); |
|
172 | new_waveform_picker_regs->addr_data_f2 = (int) (wf_snap_f2_bis); | |
173 | } |
|
173 | } | |
174 | else { |
|
174 | else { | |
175 | waveform_picker_regs->addr_data_f2 = (int) (wf_snap_f2); |
|
175 | new_waveform_picker_regs->addr_data_f2 = (int) (wf_snap_f2); | |
176 | } |
|
176 | } | |
177 | // (2) send an event for the waveforms transmission |
|
177 | // (2) send an event for the waveforms transmission | |
178 | if (rtems_event_send( Task_id[TASKID_CWF2], RTEMS_EVENT_MODE_SBM2 ) != RTEMS_SUCCESSFUL) { |
|
178 | if (rtems_event_send( Task_id[TASKID_CWF2], RTEMS_EVENT_MODE_SBM2 ) != RTEMS_SUCCESSFUL) { | |
179 | rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_2 ); |
|
179 | rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_2 ); | |
180 | } |
|
180 | } | |
181 | waveform_picker_regs->status = waveform_picker_regs->status & 0xfffffbbb; // [1111 1011 1011 1011] f2 bit = 0 |
|
181 | new_waveform_picker_regs->status = new_waveform_picker_regs->status & 0xfffffbbb; // [1111 1011 1011 1011] f2 bit = 0 | |
182 | } |
|
182 | } | |
183 | if ( ( (waveform_picker_regs->status & 0x03) == 0x03 ) ) { // [0011] f3 f2 f1 f0, f1 and f0 are full |
|
183 | if ( ( (new_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) { |
|
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 ); |
|
185 | rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_2 ); | |
186 | } |
|
186 | } | |
187 | waveform_picker_regs->status = waveform_picker_regs->status & 0xfffffccc; // [1111 1100 1100 1100] f1, f0 bits = 0 |
|
187 | new_waveform_picker_regs->status = new_waveform_picker_regs->status & 0xfffffccc; // [1111 1100 1100 1100] f1, f0 bits = 0 | |
188 | } |
|
188 | } | |
189 | #endif |
|
189 | #endif | |
190 | break; |
|
190 | break; | |
@@ -262,7 +262,7 rtems_task wfrm_task(rtems_task_argument | |||||
262 | send_waveform_SWF(wf_snap_f1, SID_NORM_SWF_F1, headerSWF_F1, queue_id); |
|
262 | send_waveform_SWF(wf_snap_f1, SID_NORM_SWF_F1, headerSWF_F1, queue_id); | |
263 | send_waveform_SWF(wf_snap_f2, SID_NORM_SWF_F2, headerSWF_F2, queue_id); |
|
263 | send_waveform_SWF(wf_snap_f2, SID_NORM_SWF_F2, headerSWF_F2, queue_id); | |
264 | #ifdef GSA |
|
264 | #ifdef GSA | |
265 | waveform_picker_regs->status = waveform_picker_regs->status & 0xf888; // [1111 1000 1000 1000] f2, f1, f0 bits =0 |
|
265 | new_waveform_picker_regs->status = new_waveform_picker_regs->status & 0xf888; // [1111 1000 1000 1000] f2, f1, f0 bits =0 | |
266 | #endif |
|
266 | #endif | |
267 | } |
|
267 | } | |
268 | else if (event_out == RTEMS_EVENT_MODE_SBM1) |
|
268 | else if (event_out == RTEMS_EVENT_MODE_SBM1) | |
@@ -271,7 +271,7 rtems_task wfrm_task(rtems_task_argument | |||||
271 | send_waveform_SWF(wf_snap_f1_norm, SID_NORM_SWF_F1, headerSWF_F1, queue_id); |
|
271 | send_waveform_SWF(wf_snap_f1_norm, SID_NORM_SWF_F1, headerSWF_F1, queue_id); | |
272 | send_waveform_SWF(wf_snap_f2, SID_NORM_SWF_F2, headerSWF_F2, queue_id); |
|
272 | send_waveform_SWF(wf_snap_f2, SID_NORM_SWF_F2, headerSWF_F2, queue_id); | |
273 | #ifdef GSA |
|
273 | #ifdef GSA | |
274 | waveform_picker_regs->status = waveform_picker_regs->status & 0xfffffaaa; // [1111 1010 1010 1010] f2, f0 bits = 0 |
|
274 | new_waveform_picker_regs->status = new_waveform_picker_regs->status & 0xfffffaaa; // [1111 1010 1010 1010] f2, f0 bits = 0 | |
275 | #endif |
|
275 | #endif | |
276 | } |
|
276 | } | |
277 | else if (event_out == RTEMS_EVENT_MODE_SBM2) |
|
277 | else if (event_out == RTEMS_EVENT_MODE_SBM2) | |
@@ -279,7 +279,7 rtems_task wfrm_task(rtems_task_argument | |||||
279 | send_waveform_SWF(wf_snap_f0, SID_NORM_SWF_F0, headerSWF_F0, queue_id); |
|
279 | send_waveform_SWF(wf_snap_f0, SID_NORM_SWF_F0, headerSWF_F0, queue_id); | |
280 | send_waveform_SWF(wf_snap_f1, SID_NORM_SWF_F1, headerSWF_F1, queue_id); |
|
280 | send_waveform_SWF(wf_snap_f1, SID_NORM_SWF_F1, headerSWF_F1, queue_id); | |
281 | #ifdef GSA |
|
281 | #ifdef GSA | |
282 | waveform_picker_regs->status = waveform_picker_regs->status & 0xfffffccc; // [1111 1100 1100 1100] f1, f0 bits = 0 |
|
282 | new_waveform_picker_regs->status = new_waveform_picker_regs->status & 0xfffffccc; // [1111 1100 1100 1100] f1, f0 bits = 0 | |
283 | #endif |
|
283 | #endif | |
284 | } |
|
284 | } | |
285 | else if (event_out == RTEMS_EVENT_MODE_SBM2_WFRM) |
|
285 | else if (event_out == RTEMS_EVENT_MODE_SBM2_WFRM) | |
@@ -329,7 +329,7 rtems_task cwf3_task(rtems_task_argument | |||||
329 | PRINTF("send CWF F3 \n") |
|
329 | PRINTF("send CWF F3 \n") | |
330 | #ifdef GSA |
|
330 | #ifdef GSA | |
331 | #else |
|
331 | #else | |
332 | if (waveform_picker_regs->addr_data_f3 == (int) wf_cont_f3) { |
|
332 | if (new_waveform_picker_regs->addr_data_f3 == (int) wf_cont_f3) { | |
333 | send_waveform_CWF3_light( wf_cont_f3_bis, headerCWF_F3_light, queue_id ); |
|
333 | send_waveform_CWF3_light( wf_cont_f3_bis, headerCWF_F3_light, queue_id ); | |
334 | } |
|
334 | } | |
335 | else { |
|
335 | else { | |
@@ -371,7 +371,7 rtems_task cwf2_task(rtems_task_argument | |||||
371 | // F2 |
|
371 | // F2 | |
372 | #ifdef GSA |
|
372 | #ifdef GSA | |
373 | #else |
|
373 | #else | |
374 | if (waveform_picker_regs->addr_data_f2 == (int) wf_snap_f2) { |
|
374 | if (new_waveform_picker_regs->addr_data_f2 == (int) wf_snap_f2) { | |
375 | send_waveform_CWF( wf_snap_f2_bis, SID_BURST_CWF_F2, headerCWF_F2_BURST, queue_id ); |
|
375 | send_waveform_CWF( wf_snap_f2_bis, SID_BURST_CWF_F2, headerCWF_F2_BURST, queue_id ); | |
376 | } |
|
376 | } | |
377 | else { |
|
377 | else { | |
@@ -389,7 +389,7 rtems_task cwf2_task(rtems_task_argument | |||||
389 | doubleSendCWF2 = 0; |
|
389 | doubleSendCWF2 = 0; | |
390 | send_waveform_CWF( wf_snap_f2_norm, SID_SBM2_CWF_F2, headerCWF_F2_SBM2, queue_id ); |
|
390 | send_waveform_CWF( wf_snap_f2_norm, SID_SBM2_CWF_F2, headerCWF_F2_SBM2, queue_id ); | |
391 | } |
|
391 | } | |
392 | else if (waveform_picker_regs->addr_data_f2 == (int) wf_snap_f2) { |
|
392 | else if (new_waveform_picker_regs->addr_data_f2 == (int) wf_snap_f2) { | |
393 | send_waveform_CWF( wf_snap_f2_bis, SID_SBM2_CWF_F2, headerCWF_F2_SBM2, queue_id ); |
|
393 | send_waveform_CWF( wf_snap_f2_bis, SID_SBM2_CWF_F2, headerCWF_F2_SBM2, queue_id ); | |
394 | } |
|
394 | } | |
395 | else { |
|
395 | else { | |
@@ -438,7 +438,7 rtems_task cwf1_task(rtems_task_argument | |||||
438 | doubleSendCWF1 = 0; |
|
438 | doubleSendCWF1 = 0; | |
439 | send_waveform_CWF( wf_snap_f1_norm, SID_SBM1_CWF_F1, headerCWF_F1, queue_id ); |
|
439 | send_waveform_CWF( wf_snap_f1_norm, SID_SBM1_CWF_F1, headerCWF_F1, queue_id ); | |
440 | } |
|
440 | } | |
441 | else if (waveform_picker_regs->addr_data_f1 == (int) wf_snap_f1) { |
|
441 | else if (new_waveform_picker_regs->addr_data_f1 == (int) wf_snap_f1) { | |
442 | send_waveform_CWF( wf_snap_f1_bis, SID_SBM1_CWF_F1, headerCWF_F1, queue_id ); |
|
442 | send_waveform_CWF( wf_snap_f1_bis, SID_SBM1_CWF_F1, headerCWF_F1, queue_id ); | |
443 | } |
|
443 | } | |
444 | else { |
|
444 | else { | |
@@ -462,8 +462,8 void init_waveforms( void ) | |||||
462 |
|
462 | |||
463 | for (i=0; i< NB_SAMPLES_PER_SNAPSHOT; i++) |
|
463 | for (i=0; i< NB_SAMPLES_PER_SNAPSHOT; i++) | |
464 | { |
|
464 | { | |
465 | //*** |
|
465 | // //*** | |
466 | // F0 |
|
466 | // // F0 | |
467 | wf_snap_f0[ (i* NB_WORDS_SWF_BLK) + 0 + TIME_OFFSET ] = 0x88887777; // |
|
467 | wf_snap_f0[ (i* NB_WORDS_SWF_BLK) + 0 + TIME_OFFSET ] = 0x88887777; // | |
468 | wf_snap_f0[ (i* NB_WORDS_SWF_BLK) + 1 + TIME_OFFSET ] = 0x22221111; // |
|
468 | wf_snap_f0[ (i* NB_WORDS_SWF_BLK) + 1 + TIME_OFFSET ] = 0x22221111; // | |
469 | wf_snap_f0[ (i* NB_WORDS_SWF_BLK) + 2 + TIME_OFFSET ] = 0x44443333; // |
|
469 | wf_snap_f0[ (i* NB_WORDS_SWF_BLK) + 2 + TIME_OFFSET ] = 0x44443333; // | |
@@ -476,9 +476,27 void init_waveforms( void ) | |||||
476 |
|
476 | |||
477 | //*** |
|
477 | //*** | |
478 | // F2 |
|
478 | // F2 | |
479 |
wf_snap_f2[ (i* NB_WORDS_SWF_BLK) + 0 + TIME_OFFSET ] = 0x |
|
479 | wf_snap_f2[ (i* NB_WORDS_SWF_BLK) + 0 + TIME_OFFSET ] = 0xffffffff; | |
480 |
wf_snap_f2[ (i* NB_WORDS_SWF_BLK) + 1 + TIME_OFFSET ] = 0x |
|
480 | wf_snap_f2[ (i* NB_WORDS_SWF_BLK) + 1 + TIME_OFFSET ] = 0xffffffff; | |
481 |
wf_snap_f2[ (i* NB_WORDS_SWF_BLK) + 2 + TIME_OFFSET ] = 0x |
|
481 | wf_snap_f2[ (i* NB_WORDS_SWF_BLK) + 2 + TIME_OFFSET ] = 0xffffffff; | |
|
482 | ||||
|
483 | //*** | |||
|
484 | // F0 | |||
|
485 | // wf_snap_f0[ (i* NB_WORDS_SWF_BLK) + 0 + TIME_OFFSET ] = 0x0; // | |||
|
486 | // wf_snap_f0[ (i* NB_WORDS_SWF_BLK) + 1 + TIME_OFFSET ] = 0x0; // | |||
|
487 | // wf_snap_f0[ (i* NB_WORDS_SWF_BLK) + 2 + TIME_OFFSET ] = 0x0; // | |||
|
488 | ||||
|
489 | // //*** | |||
|
490 | // // F1 | |||
|
491 | // wf_snap_f1[ (i* NB_WORDS_SWF_BLK) + 0 + TIME_OFFSET ] = 0x0; | |||
|
492 | // wf_snap_f1[ (i* NB_WORDS_SWF_BLK) + 1 + TIME_OFFSET ] = 0x0; | |||
|
493 | // wf_snap_f1[ (i* NB_WORDS_SWF_BLK) + 2 + TIME_OFFSET ] = 0x0; | |||
|
494 | ||||
|
495 | // //*** | |||
|
496 | // // F2 | |||
|
497 | // wf_snap_f2[ (i* NB_WORDS_SWF_BLK) + 0 + TIME_OFFSET ] = 0x0; | |||
|
498 | // wf_snap_f2[ (i* NB_WORDS_SWF_BLK) + 1 + TIME_OFFSET ] = 0x0; | |||
|
499 | // wf_snap_f2[ (i* NB_WORDS_SWF_BLK) + 2 + TIME_OFFSET ] = 0x0; | |||
482 |
|
500 | |||
483 | //*** |
|
501 | //*** | |
484 | // F3 |
|
502 | // F3 | |
@@ -533,14 +551,14 int init_header_snapshot_wf_table( unsig | |||||
533 | headerSWF[ i ].serviceSubType = TM_SUBTYPE_LFR_SCIENCE; // service subtype |
|
551 | headerSWF[ i ].serviceSubType = TM_SUBTYPE_LFR_SCIENCE; // service subtype | |
534 | headerSWF[ i ].destinationID = TM_DESTINATION_ID_GROUND; |
|
552 | headerSWF[ i ].destinationID = TM_DESTINATION_ID_GROUND; | |
535 | // AUXILIARY DATA HEADER |
|
553 | // AUXILIARY DATA HEADER | |
|
554 | headerSWF[ i ].sid = sid; | |||
|
555 | headerSWF[ i ].hkBIA = DEFAULT_HKBIA; | |||
536 | headerSWF[ i ].time[0] = 0x00; |
|
556 | headerSWF[ i ].time[0] = 0x00; | |
537 | headerSWF[ i ].time[0] = 0x00; |
|
557 | headerSWF[ i ].time[0] = 0x00; | |
538 | headerSWF[ i ].time[0] = 0x00; |
|
558 | headerSWF[ i ].time[0] = 0x00; | |
539 | headerSWF[ i ].time[0] = 0x00; |
|
559 | headerSWF[ i ].time[0] = 0x00; | |
540 | headerSWF[ i ].time[0] = 0x00; |
|
560 | headerSWF[ i ].time[0] = 0x00; | |
541 | headerSWF[ i ].time[0] = 0x00; |
|
561 | headerSWF[ i ].time[0] = 0x00; | |
542 | headerSWF[ i ].sid = sid; |
|
|||
543 | headerSWF[ i ].hkBIA = DEFAULT_HKBIA; |
|
|||
544 | } |
|
562 | } | |
545 | return LFR_SUCCESSFUL; |
|
563 | return LFR_SUCCESSFUL; | |
546 | } |
|
564 | } | |
@@ -723,7 +741,7 int send_waveform_SWF( volatile int *wav | |||||
723 |
|
741 | |||
724 | for (i=0; i<7; i++) // send waveform |
|
742 | for (i=0; i<7; i++) // send waveform | |
725 | { |
|
743 | { | |
726 | spw_ioctl_send_SWF.data = (char*) &waveform[ (i * 340 * NB_WORDS_SWF_BLK) ]; |
|
744 | spw_ioctl_send_SWF.data = (char*) &waveform[ (i * 340 * NB_WORDS_SWF_BLK) + TIME_OFFSET ]; | |
727 | spw_ioctl_send_SWF.hdr = (char*) &headerSWF[ i ]; |
|
745 | spw_ioctl_send_SWF.hdr = (char*) &headerSWF[ i ]; | |
728 | // BUILD THE DATA |
|
746 | // BUILD THE DATA | |
729 | if (i==6) { |
|
747 | if (i==6) { | |
@@ -941,7 +959,7 void set_wfp_data_shaping() | |||||
941 |
|
959 | |||
942 | #ifdef GSA |
|
960 | #ifdef GSA | |
943 | #else |
|
961 | #else | |
944 | waveform_picker_regs->data_shaping = |
|
962 | new_waveform_picker_regs->data_shaping = | |
945 | ( (data_shaping & 0x10) >> 4 ) // BW |
|
963 | ( (data_shaping & 0x10) >> 4 ) // BW | |
946 | + ( (data_shaping & 0x08) >> 2 ) // SP0 |
|
964 | + ( (data_shaping & 0x08) >> 2 ) // SP0 | |
947 | + ( (data_shaping & 0x04) ) // SP1 |
|
965 | + ( (data_shaping & 0x04) ) // SP1 | |
@@ -982,7 +1000,7 char set_wfp_delta_snapshot() | |||||
982 | aux = delta_snapshot ; |
|
1000 | aux = delta_snapshot ; | |
983 | ret = LFR_SUCCESSFUL; |
|
1001 | ret = LFR_SUCCESSFUL; | |
984 | } |
|
1002 | } | |
985 | waveform_picker_regs->delta_snapshot = aux - 1; // max 2 bytes |
|
1003 | new_waveform_picker_regs->delta_snapshot = aux - 1; // max 2 bytes | |
986 | #endif |
|
1004 | #endif | |
987 |
|
1005 | |||
988 | return ret; |
|
1006 | return ret; | |
@@ -1004,29 +1022,29 void set_wfp_burst_enable_register( unsi | |||||
1004 | // the burst bits shall be set first, before the enable bits |
|
1022 | // the burst bits shall be set first, before the enable bits | |
1005 | switch(mode) { |
|
1023 | switch(mode) { | |
1006 | case(LFR_MODE_NORMAL): |
|
1024 | case(LFR_MODE_NORMAL): | |
1007 |
waveform_picker_regs->burst_enable = 0x |
|
1025 | new_waveform_picker_regs->run_burst_enable = 0x80; // [1000 0000] f3 burst enable | |
1008 | waveform_picker_regs->burst_enable = 0x0f; // [0000 1111] enable f3 f2 f1 f0 |
|
1026 | new_waveform_picker_regs->run_burst_enable = 0x0f; // [0000 1111] enable f3 f2 f1 f0 | |
1009 | break; |
|
1027 | break; | |
1010 | case(LFR_MODE_BURST): |
|
1028 | case(LFR_MODE_BURST): | |
1011 | waveform_picker_regs->burst_enable = 0x40; // [0100 0000] f2 burst enabled |
|
1029 | new_waveform_picker_regs->run_burst_enable = 0x40; // [0100 0000] f2 burst enabled | |
1012 | waveform_picker_regs->burst_enable = waveform_picker_regs->burst_enable | 0x04; // [0100] enable f2 |
|
1030 | new_waveform_picker_regs->run_burst_enable = new_waveform_picker_regs->run_burst_enable | 0x04; // [0100] enable f2 | |
1013 | break; |
|
1031 | break; | |
1014 | case(LFR_MODE_SBM1): |
|
1032 | case(LFR_MODE_SBM1): | |
1015 | waveform_picker_regs->burst_enable = 0x20; // [0010 0000] f1 burst enabled |
|
1033 | new_waveform_picker_regs->run_burst_enable = 0x20; // [0010 0000] f1 burst enabled | |
1016 | waveform_picker_regs->burst_enable = waveform_picker_regs->burst_enable | 0x0f; // [1111] enable f3 f2 f1 f0 |
|
1034 | new_waveform_picker_regs->run_burst_enable = new_waveform_picker_regs->run_burst_enable | 0x0f; // [1111] enable f3 f2 f1 f0 | |
1017 | break; |
|
1035 | break; | |
1018 | case(LFR_MODE_SBM2): |
|
1036 | case(LFR_MODE_SBM2): | |
1019 | waveform_picker_regs->burst_enable = 0x40; // [0100 0000] f2 burst enabled |
|
1037 | new_waveform_picker_regs->run_burst_enable = 0x40; // [0100 0000] f2 burst enabled | |
1020 | waveform_picker_regs->burst_enable = waveform_picker_regs->burst_enable | 0x0f; // [1111] enable f3 f2 f1 f0 |
|
1038 | new_waveform_picker_regs->run_burst_enable = new_waveform_picker_regs->run_burst_enable | 0x0f; // [1111] enable f3 f2 f1 f0 | |
1021 | break; |
|
1039 | break; | |
1022 | default: |
|
1040 | default: | |
1023 | waveform_picker_regs->burst_enable = 0x00; // [0000 0000] no burst enabled, no waveform enabled |
|
1041 | new_waveform_picker_regs->run_burst_enable = 0x00; // [0000 0000] no burst enabled, no waveform enabled | |
1024 | break; |
|
1042 | break; | |
1025 | } |
|
1043 | } | |
1026 | #endif |
|
1044 | #endif | |
1027 | } |
|
1045 | } | |
1028 |
|
1046 | |||
1029 | void reset_wfp_burst_enable() |
|
1047 | void reset_wfp_run_burst_enable() | |
1030 | { |
|
1048 | { | |
1031 | /** This function resets the waveform picker burst_enable register. |
|
1049 | /** This function resets the waveform picker burst_enable register. | |
1032 | * |
|
1050 | * | |
@@ -1036,7 +1054,7 void reset_wfp_burst_enable() | |||||
1036 |
|
1054 | |||
1037 | #ifdef GSA |
|
1055 | #ifdef GSA | |
1038 | #else |
|
1056 | #else | |
1039 | waveform_picker_regs->burst_enable = 0x00; // burst f2, f1, f0 enable f3, f2, f1, f0 |
|
1057 | new_waveform_picker_regs->run_burst_enable = 0x00; // burst f2, f1, f0 enable f3, f2, f1, f0 | |
1040 | #endif |
|
1058 | #endif | |
1041 | } |
|
1059 | } | |
1042 |
|
1060 | |||
@@ -1050,47 +1068,53 void reset_wfp_status() | |||||
1050 |
|
1068 | |||
1051 | #ifdef GSA |
|
1069 | #ifdef GSA | |
1052 | #else |
|
1070 | #else | |
1053 | waveform_picker_regs->status = 0x00; // burst f2, f1, f0 enable f3, f2, f1, f0 |
|
1071 | new_waveform_picker_regs->status = 0x00; // burst f2, f1, f0 enable f3, f2, f1, f0 | |
1054 | #endif |
|
1072 | #endif | |
1055 | } |
|
1073 | } | |
1056 |
|
1074 | |||
1057 | void reset_waveform_picker_regs() |
|
1075 | void reset_new_waveform_picker_regs() | |
1058 | { |
|
1076 | { | |
1059 | /** This function resets the waveform picker module registers. |
|
1077 | /** This function resets the waveform picker module registers. | |
1060 |
|
|
1078 | * | |
1061 |
|
|
1079 | * The registers affected by this function are located at the following offset addresses: | |
1062 |
|
|
1080 | * - 0x00 data_shaping | |
1063 |
|
|
1081 | * - 0x04 run_burst_enable | |
1064 |
|
|
1082 | * - 0x08 addr_data_f0 | |
1065 |
|
|
1083 | * - 0x0C addr_data_f1 | |
1066 |
|
|
1084 | * - 0x10 addr_data_f2 | |
1067 |
|
|
1085 | * - 0x14 addr_data_f3 | |
1068 |
|
|
1086 | * - 0x18 status | |
1069 |
|
|
1087 | * - 0x1C delta_snapshot | |
1070 |
|
|
1088 | * - 0x20 delta_f0 | |
1071 |
|
|
1089 | * - 0x24 delta_f0_2 | |
1072 |
|
|
1090 | * - 0x28 delta_f1 | |
1073 | * - 0x2C nb_snapshot |
|
1091 | * - 0x2c delta_f2 | |
1074 | * |
|
1092 | * - 0x30 nb_data_by_buffer | |
1075 | */ |
|
1093 | * - 0x34 nb_snapshot_param | |
|
1094 | * - 0x38 start_date | |||
|
1095 | * - 0x3c nb_word_in_buffer | |||
|
1096 | * | |||
|
1097 | */ | |||
1076 |
|
1098 | |||
1077 | #ifdef GSA |
|
1099 | new_waveform_picker_regs->data_shaping = 0x01; // 0x00 *** R1 R0 SP1 SP0 BW | |
1078 | #else |
|
1100 | new_waveform_picker_regs->run_burst_enable = 0x00; // 0x04 *** [run *** burst f2, f1, f0 *** enable f3, f2, f1, f0 ] | |
1079 | reset_wfp_burst_enable(); |
|
1101 | new_waveform_picker_regs->addr_data_f0 = (int) (wf_snap_f0); // 0x08 | |
1080 | reset_wfp_status(); |
|
1102 | new_waveform_picker_regs->addr_data_f1 = (int) (wf_snap_f1); // 0x0c | |
1081 | // set buffer addresses |
|
1103 | new_waveform_picker_regs->addr_data_f2 = (int) (wf_snap_f2); // 0x10 | |
1082 |
waveform_picker_regs->addr_data_f |
|
1104 | new_waveform_picker_regs->addr_data_f3 = (int) (wf_cont_f3); // 0x14 | |
1083 | waveform_picker_regs->addr_data_f1 = (int) (wf_snap_f1); // |
|
1105 | new_waveform_picker_regs->status = 0x00; // 0x18 | |
1084 | waveform_picker_regs->addr_data_f2 = (int) (wf_snap_f2); // |
|
1106 | // new_waveform_picker_regs->delta_snapshot = 0x12800; // 0x1c 296 * 256 = 75776 | |
1085 | waveform_picker_regs->addr_data_f3 = (int) (wf_cont_f3); // |
|
1107 | // new_waveform_picker_regs->delta_snapshot = 0x1000; // 0x1c 16 * 256 = 4096 | |
1086 | // set other parameters |
|
1108 | new_waveform_picker_regs->delta_snapshot = 0x2000; // 0x1c 32 * 256 = 8192 | |
1087 | set_wfp_data_shaping(); |
|
1109 | new_waveform_picker_regs->delta_f0 = 0xbf5; // 0x20 *** 1013 | |
1088 | set_wfp_delta_snapshot(); // time in seconds between two snapshots |
|
1110 | new_waveform_picker_regs->delta_f0_2 = 0x7; // 0x24 *** 7 [7 bits] | |
1089 |
waveform_picker_regs->delta_f |
|
1111 | new_waveform_picker_regs->delta_f1 = 0xbc0; // 0x28 *** 960 | |
1090 |
waveform_picker_regs->delta_f2 |
|
1112 | // new_waveform_picker_regs->delta_f2 = 0x12200; // 0x2c *** 290 * 256 = 74240 | |
1091 | waveform_picker_regs->nb_burst_available = 0x180; // max 3 bytes, size of the buffer in burst (1 burst = 16 x 4 octets) |
|
1113 | new_waveform_picker_regs->delta_f2 = 0xc00; // 0x2c *** 12 * 256 = 3072 | |
1092 |
waveform_picker_regs->nb_ |
|
1114 | new_waveform_picker_regs->nb_data_by_buffer = 0x7ff; // 0x30 *** 2048 -1 => nb samples -1 | |
1093 | #endif |
|
1115 | new_waveform_picker_regs->snapshot_param = 0x800; // 0x34 *** 2048 => nb samples | |
|
1116 | new_waveform_picker_regs->start_date = 0x00; // 0x38 | |||
|
1117 | new_waveform_picker_regs->nb_word_in_buffer = 0x1802; // 0x3c *** 2048 * 3 + 2 = 6146 | |||
1094 | } |
|
1118 | } | |
1095 |
|
1119 | |||
1096 | //***************** |
|
1120 | //***************** | |
@@ -1183,8 +1207,8 void increment_seq_counter_source_id( un | |||||
1183 | unsigned short segmentation_grouping_flag; |
|
1207 | unsigned short segmentation_grouping_flag; | |
1184 | unsigned short new_packet_sequence_control; |
|
1208 | unsigned short new_packet_sequence_control; | |
1185 |
|
1209 | |||
1186 |
if ( (sid ==SID_NORM_SWF_F0) |
|
1210 | if ( (sid ==SID_NORM_SWF_F0) || (sid ==SID_NORM_SWF_F1) || (sid ==SID_NORM_SWF_F2) | |
1187 |
|
|
1211 | || (sid ==SID_NORM_CWF_F3) || (sid ==SID_BURST_CWF_F2) ) | |
1188 | { |
|
1212 | { | |
1189 | sequence_cnt = &sequenceCounters_SCIENCE_NORMAL_BURST; |
|
1213 | sequence_cnt = &sequenceCounters_SCIENCE_NORMAL_BURST; | |
1190 | } |
|
1214 | } | |
@@ -1198,15 +1222,15 void increment_seq_counter_source_id( un | |||||
1198 | PRINTF1("in increment_seq_counter_source_id *** ERR apid_destid %d not known\n", sid) |
|
1222 | PRINTF1("in increment_seq_counter_source_id *** ERR apid_destid %d not known\n", sid) | |
1199 | } |
|
1223 | } | |
1200 |
|
1224 | |||
1201 |
segmentation_grouping_flag |
|
1225 | segmentation_grouping_flag = (packet_sequence_control[ 0 ] & 0xc0) << 8; | |
1202 |
*sequence_cnt |
|
1226 | *sequence_cnt = (*sequence_cnt) & 0x3fff; | |
1203 |
|
1227 | |||
1204 | new_packet_sequence_control = segmentation_grouping_flag | *sequence_cnt ; |
|
1228 | new_packet_sequence_control = segmentation_grouping_flag | *sequence_cnt ; | |
1205 |
|
1229 | |||
1206 | packet_sequence_control[0] = (unsigned char) (new_packet_sequence_control >> 8); |
|
1230 | packet_sequence_control[0] = (unsigned char) (new_packet_sequence_control >> 8); | |
1207 |
packet_sequence_control[1] = (unsigned char) (new_packet_sequence_control |
|
1231 | packet_sequence_control[1] = (unsigned char) (new_packet_sequence_control ); | |
1208 |
|
1232 | |||
1209 |
// increment the se |
|
1233 | // increment the sequence counter for the next packet | |
1210 | if ( *sequence_cnt < SEQ_CNT_MAX) |
|
1234 | if ( *sequence_cnt < SEQ_CNT_MAX) | |
1211 | { |
|
1235 | { | |
1212 | *sequence_cnt = *sequence_cnt + 1; |
|
1236 | *sequence_cnt = *sequence_cnt + 1; | |
@@ -1215,5 +1239,4 void increment_seq_counter_source_id( un | |||||
1215 | { |
|
1239 | { | |
1216 | *sequence_cnt = 0; |
|
1240 | *sequence_cnt = 0; | |
1217 | } |
|
1241 | } | |
1218 |
|
||||
1219 | } |
|
1242 | } |