##// END OF EJS Templates

Compare Commits r52:e2d761f8e287...r89:4ddc79d344bf

Target:

Source:

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: Wed Nov 13 08:18:19 2013
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 2.8.1, 2013-11-13T13:39:43. -->
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="QString" key="CurrentPreferences">CppGlobal</value>
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="QString" key="CurrentPreferences">QmlJSGlobal</value>
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">14</value>
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 volatile int data_shaping; // 0x00 00 *** R1 R0 SP1 SP0 BW
49 int data_shaping; // 0x00 00 *** R1 R0 SP1 SP0 BW
50 volatile int burst_enable; // 0x04 01 *** burst f2, f1, f0 enable f3, f2, f1, f0
50 int run_burst_enable; // 0x04 01 *** [run *** burst f2, f1, f0 *** enable f3, f2, f1, f0 ]
51 volatile int addr_data_f0; // 0x08 10 ***
51 int addr_data_f0; // 0x08
52 volatile int addr_data_f1; // 0x0c 11 ***
52 int addr_data_f1; // 0x0c
53 volatile int addr_data_f2; // 0x10 100 ***
53 int addr_data_f2; // 0x10
54 volatile int addr_data_f3; // 0x14 101 ***
54 int addr_data_f3; // 0x14
55 volatile int status; // 0x18 110 ***
55 volatile int status; // 0x18
56 volatile int delta_snapshot; // 0x1c 111 ***
56 int delta_snapshot; // 0x1c
57 volatile int delta_f2_f1; // 0x20 0000 ***
57 int delta_f0; // 0x20
58 volatile int delta_f2_f0; // 0x24 0001 ***
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
@@ -52,4 +52,3 struct drvmgr_bus_res grlib_drv_resource
52 }
52 }
53 };
53 };
54
54
55
@@ -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 sequenceCounters_TC_EXE[i] = 0x00;
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 | RTEMS_NO_PREEMPT,
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[7] = {"in DUMB *** default", // RTEMS_EVENT_0
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" // RTEMS_EVENT_6
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 | RTEMS_EVENT_4 | RTEMS_EVENT_5 | RTEMS_EVENT_6,
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 ] = 0x44443333;
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 ] = 0x22221111;
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 ] = 0xaaaa0000;
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 = 0x00; // [0000 0000] no burst enable
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 * The registers affected by this function are located at the following offset addresses:
1079 * The registers affected by this function are located at the following offset addresses:
1062 * - 0x00 data_shaping
1080 * - 0x00 data_shaping
1063 * - 0x04 burst_enable
1081 * - 0x04 run_burst_enable
1064 * - 0x08 addr_data_f0
1082 * - 0x08 addr_data_f0
1065 * - 0x0C addr_data_f1
1083 * - 0x0C addr_data_f1
1066 * - 0x10 addr_data_f2
1084 * - 0x10 addr_data_f2
1067 * - 0x14 addr_data_f3
1085 * - 0x14 addr_data_f3
1068 * - 0x18 status
1086 * - 0x18 status
1069 * - 0x1C delta_snapshot
1087 * - 0x1C delta_snapshot
1070 * - 0x20 delta_f2_f1
1088 * - 0x20 delta_f0
1071 * - 0x24 delta_f2_f0
1089 * - 0x24 delta_f0_2
1072 * - 0x28 nb_burst
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_f0 = (int) (wf_snap_f0); //
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_f2_f1 = 0xffff; // 0x16800 => 92160 (max 4 bytes)
1111 new_waveform_picker_regs->delta_f1 = 0xbc0; // 0x28 *** 960
1090 waveform_picker_regs->delta_f2_f0 = 0x17c00; // 97 280 (max 5 bytes)
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_snapshot_param = 0x7ff; // max 3 octets, 2048 - 1
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) || (sid ==SID_NORM_SWF_F1) || (sid ==SID_NORM_SWF_F2)
1210 if ( (sid ==SID_NORM_SWF_F0) || (sid ==SID_NORM_SWF_F1) || (sid ==SID_NORM_SWF_F2)
1187 || (sid ==SID_NORM_CWF_F3) || (sid ==SID_BURST_CWF_F2) )
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 = (packet_sequence_control[ 0 ] & 0xc0) << 8;
1225 segmentation_grouping_flag = (packet_sequence_control[ 0 ] & 0xc0) << 8;
1202 *sequence_cnt = (*sequence_cnt) & 0x3fff;
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 seuqence counter for the next packet
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 }