##// END OF EJS Templates
Minor modifications before going back to VHDLib206
paul -
r79:1d1946bb1d17 nov2013
parent child
Show More
@@ -1,248 +1,248
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: Thu Nov 14 09:47:53 2013
3 # Generated by qmake (2.01a) (Qt 4.8.5) on: Fri Nov 15 07:19:44 2013
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
7 #############################################################################
7 #############################################################################
8
8
9 ####### Compiler, tools and options
9 ####### Compiler, tools and options
10
10
11 CC = sparc-rtems-gcc
11 CC = sparc-rtems-gcc
12 CXX = sparc-rtems-g++
12 CXX = sparc-rtems-g++
13 DEFINES = -DSW_VERSION_N1=0 -DSW_VERSION_N2=0 -DSW_VERSION_N3=0 -DSW_VERSION_N4=22 -DPRINT_MESSAGES_ON_CONSOLE -DPRINT_TASK_STATISTICS
13 DEFINES = -DSW_VERSION_N1=0 -DSW_VERSION_N2=0 -DSW_VERSION_N3=0 -DSW_VERSION_N4=22 -DPRINT_MESSAGES_ON_CONSOLE -DPRINT_TASK_STATISTICS
14 CFLAGS = -pipe -O3 -Wall $(DEFINES)
14 CFLAGS = -pipe -O3 -Wall $(DEFINES)
15 CXXFLAGS = -pipe -O3 -Wall $(DEFINES)
15 CXXFLAGS = -pipe -O3 -Wall $(DEFINES)
16 INCPATH = -I/usr/lib64/qt4/mkspecs/linux-g++ -I. -I../src -I../header
16 INCPATH = -I/usr/lib64/qt4/mkspecs/linux-g++ -I. -I../src -I../header
17 LINK = sparc-rtems-g++
17 LINK = sparc-rtems-g++
18 LFLAGS =
18 LFLAGS =
19 LIBS = $(SUBLIBS)
19 LIBS = $(SUBLIBS)
20 AR = sparc-rtems-ar rcs
20 AR = sparc-rtems-ar rcs
21 RANLIB =
21 RANLIB =
22 QMAKE = /usr/bin/qmake-qt4
22 QMAKE = /usr/bin/qmake-qt4
23 TAR = tar -cf
23 TAR = tar -cf
24 COMPRESS = gzip -9f
24 COMPRESS = gzip -9f
25 COPY = cp -f
25 COPY = cp -f
26 SED = sed
26 SED = sed
27 COPY_FILE = $(COPY)
27 COPY_FILE = $(COPY)
28 COPY_DIR = $(COPY) -r
28 COPY_DIR = $(COPY) -r
29 STRIP = sparc-rtems-strip
29 STRIP = sparc-rtems-strip
30 INSTALL_FILE = install -m 644 -p
30 INSTALL_FILE = install -m 644 -p
31 INSTALL_DIR = $(COPY_DIR)
31 INSTALL_DIR = $(COPY_DIR)
32 INSTALL_PROGRAM = install -m 755 -p
32 INSTALL_PROGRAM = install -m 755 -p
33 DEL_FILE = rm -f
33 DEL_FILE = rm -f
34 SYMLINK = ln -f -s
34 SYMLINK = ln -f -s
35 DEL_DIR = rmdir
35 DEL_DIR = rmdir
36 MOVE = mv -f
36 MOVE = mv -f
37 CHK_DIR_EXISTS= test -d
37 CHK_DIR_EXISTS= test -d
38 MKDIR = mkdir -p
38 MKDIR = mkdir -p
39
39
40 ####### Output directory
40 ####### Output directory
41
41
42 OBJECTS_DIR = obj/
42 OBJECTS_DIR = obj/
43
43
44 ####### Files
44 ####### Files
45
45
46 SOURCES = ../src/wf_handler.c \
46 SOURCES = ../src/wf_handler.c \
47 ../src/tc_handler.c \
47 ../src/tc_handler.c \
48 ../src/fsw_processing.c \
48 ../src/fsw_processing.c \
49 ../src/fsw_misc.c \
49 ../src/fsw_misc.c \
50 ../src/fsw_init.c \
50 ../src/fsw_init.c \
51 ../src/fsw_globals.c \
51 ../src/fsw_globals.c \
52 ../src/fsw_spacewire.c \
52 ../src/fsw_spacewire.c \
53 ../src/tc_load_dump_parameters.c \
53 ../src/tc_load_dump_parameters.c \
54 ../src/tm_lfr_tc_exe.c \
54 ../src/tm_lfr_tc_exe.c \
55 ../src/tc_acceptance.c
55 ../src/tc_acceptance.c
56 OBJECTS = obj/wf_handler.o \
56 OBJECTS = obj/wf_handler.o \
57 obj/tc_handler.o \
57 obj/tc_handler.o \
58 obj/fsw_processing.o \
58 obj/fsw_processing.o \
59 obj/fsw_misc.o \
59 obj/fsw_misc.o \
60 obj/fsw_init.o \
60 obj/fsw_init.o \
61 obj/fsw_globals.o \
61 obj/fsw_globals.o \
62 obj/fsw_spacewire.o \
62 obj/fsw_spacewire.o \
63 obj/tc_load_dump_parameters.o \
63 obj/tc_load_dump_parameters.o \
64 obj/tm_lfr_tc_exe.o \
64 obj/tm_lfr_tc_exe.o \
65 obj/tc_acceptance.o
65 obj/tc_acceptance.o
66 DIST = /usr/lib64/qt4/mkspecs/common/unix.conf \
66 DIST = /usr/lib64/qt4/mkspecs/common/unix.conf \
67 /usr/lib64/qt4/mkspecs/common/linux.conf \
67 /usr/lib64/qt4/mkspecs/common/linux.conf \
68 /usr/lib64/qt4/mkspecs/common/gcc-base.conf \
68 /usr/lib64/qt4/mkspecs/common/gcc-base.conf \
69 /usr/lib64/qt4/mkspecs/common/gcc-base-unix.conf \
69 /usr/lib64/qt4/mkspecs/common/gcc-base-unix.conf \
70 /usr/lib64/qt4/mkspecs/common/g++-base.conf \
70 /usr/lib64/qt4/mkspecs/common/g++-base.conf \
71 /usr/lib64/qt4/mkspecs/common/g++-unix.conf \
71 /usr/lib64/qt4/mkspecs/common/g++-unix.conf \
72 /usr/lib64/qt4/mkspecs/qconfig.pri \
72 /usr/lib64/qt4/mkspecs/qconfig.pri \
73 /usr/lib64/qt4/mkspecs/modules/qt_webkit.pri \
73 /usr/lib64/qt4/mkspecs/modules/qt_webkit.pri \
74 /usr/lib64/qt4/mkspecs/features/qt_functions.prf \
74 /usr/lib64/qt4/mkspecs/features/qt_functions.prf \
75 /usr/lib64/qt4/mkspecs/features/qt_config.prf \
75 /usr/lib64/qt4/mkspecs/features/qt_config.prf \
76 /usr/lib64/qt4/mkspecs/features/exclusive_builds.prf \
76 /usr/lib64/qt4/mkspecs/features/exclusive_builds.prf \
77 /usr/lib64/qt4/mkspecs/features/default_pre.prf \
77 /usr/lib64/qt4/mkspecs/features/default_pre.prf \
78 sparc.pri \
78 sparc.pri \
79 /usr/lib64/qt4/mkspecs/features/release.prf \
79 /usr/lib64/qt4/mkspecs/features/release.prf \
80 /usr/lib64/qt4/mkspecs/features/default_post.prf \
80 /usr/lib64/qt4/mkspecs/features/default_post.prf \
81 /usr/lib64/qt4/mkspecs/features/shared.prf \
81 /usr/lib64/qt4/mkspecs/features/shared.prf \
82 /usr/lib64/qt4/mkspecs/features/unix/gdb_dwarf_index.prf \
82 /usr/lib64/qt4/mkspecs/features/unix/gdb_dwarf_index.prf \
83 /usr/lib64/qt4/mkspecs/features/warn_on.prf \
83 /usr/lib64/qt4/mkspecs/features/warn_on.prf \
84 /usr/lib64/qt4/mkspecs/features/resources.prf \
84 /usr/lib64/qt4/mkspecs/features/resources.prf \
85 /usr/lib64/qt4/mkspecs/features/uic.prf \
85 /usr/lib64/qt4/mkspecs/features/uic.prf \
86 /usr/lib64/qt4/mkspecs/features/yacc.prf \
86 /usr/lib64/qt4/mkspecs/features/yacc.prf \
87 /usr/lib64/qt4/mkspecs/features/lex.prf \
87 /usr/lib64/qt4/mkspecs/features/lex.prf \
88 /usr/lib64/qt4/mkspecs/features/include_source_dir.prf \
88 /usr/lib64/qt4/mkspecs/features/include_source_dir.prf \
89 fsw-qt.pro
89 fsw-qt.pro
90 QMAKE_TARGET = fsw
90 QMAKE_TARGET = fsw
91 DESTDIR = bin/
91 DESTDIR = bin/
92 TARGET = bin/fsw
92 TARGET = bin/fsw
93
93
94 first: all
94 first: all
95 ####### Implicit rules
95 ####### Implicit rules
96
96
97 .SUFFIXES: .o .c .cpp .cc .cxx .C
97 .SUFFIXES: .o .c .cpp .cc .cxx .C
98
98
99 .cpp.o:
99 .cpp.o:
100 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
100 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
101
101
102 .cc.o:
102 .cc.o:
103 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
103 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
104
104
105 .cxx.o:
105 .cxx.o:
106 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
106 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
107
107
108 .C.o:
108 .C.o:
109 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
109 $(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
110
110
111 .c.o:
111 .c.o:
112 $(CC) -c $(CFLAGS) $(INCPATH) -o "$@" "$<"
112 $(CC) -c $(CFLAGS) $(INCPATH) -o "$@" "$<"
113
113
114 ####### Build rules
114 ####### Build rules
115
115
116 all: Makefile $(TARGET)
116 all: Makefile $(TARGET)
117
117
118 $(TARGET): $(OBJECTS)
118 $(TARGET): $(OBJECTS)
119 @$(CHK_DIR_EXISTS) bin/ || $(MKDIR) bin/
119 @$(CHK_DIR_EXISTS) bin/ || $(MKDIR) bin/
120 $(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJCOMP) $(LIBS)
120 $(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJCOMP) $(LIBS)
121
121
122 Makefile: fsw-qt.pro /usr/lib64/qt4/mkspecs/linux-g++/qmake.conf /usr/lib64/qt4/mkspecs/common/unix.conf \
122 Makefile: fsw-qt.pro /usr/lib64/qt4/mkspecs/linux-g++/qmake.conf /usr/lib64/qt4/mkspecs/common/unix.conf \
123 /usr/lib64/qt4/mkspecs/common/linux.conf \
123 /usr/lib64/qt4/mkspecs/common/linux.conf \
124 /usr/lib64/qt4/mkspecs/common/gcc-base.conf \
124 /usr/lib64/qt4/mkspecs/common/gcc-base.conf \
125 /usr/lib64/qt4/mkspecs/common/gcc-base-unix.conf \
125 /usr/lib64/qt4/mkspecs/common/gcc-base-unix.conf \
126 /usr/lib64/qt4/mkspecs/common/g++-base.conf \
126 /usr/lib64/qt4/mkspecs/common/g++-base.conf \
127 /usr/lib64/qt4/mkspecs/common/g++-unix.conf \
127 /usr/lib64/qt4/mkspecs/common/g++-unix.conf \
128 /usr/lib64/qt4/mkspecs/qconfig.pri \
128 /usr/lib64/qt4/mkspecs/qconfig.pri \
129 /usr/lib64/qt4/mkspecs/modules/qt_webkit.pri \
129 /usr/lib64/qt4/mkspecs/modules/qt_webkit.pri \
130 /usr/lib64/qt4/mkspecs/features/qt_functions.prf \
130 /usr/lib64/qt4/mkspecs/features/qt_functions.prf \
131 /usr/lib64/qt4/mkspecs/features/qt_config.prf \
131 /usr/lib64/qt4/mkspecs/features/qt_config.prf \
132 /usr/lib64/qt4/mkspecs/features/exclusive_builds.prf \
132 /usr/lib64/qt4/mkspecs/features/exclusive_builds.prf \
133 /usr/lib64/qt4/mkspecs/features/default_pre.prf \
133 /usr/lib64/qt4/mkspecs/features/default_pre.prf \
134 sparc.pri \
134 sparc.pri \
135 /usr/lib64/qt4/mkspecs/features/release.prf \
135 /usr/lib64/qt4/mkspecs/features/release.prf \
136 /usr/lib64/qt4/mkspecs/features/default_post.prf \
136 /usr/lib64/qt4/mkspecs/features/default_post.prf \
137 /usr/lib64/qt4/mkspecs/features/shared.prf \
137 /usr/lib64/qt4/mkspecs/features/shared.prf \
138 /usr/lib64/qt4/mkspecs/features/unix/gdb_dwarf_index.prf \
138 /usr/lib64/qt4/mkspecs/features/unix/gdb_dwarf_index.prf \
139 /usr/lib64/qt4/mkspecs/features/warn_on.prf \
139 /usr/lib64/qt4/mkspecs/features/warn_on.prf \
140 /usr/lib64/qt4/mkspecs/features/resources.prf \
140 /usr/lib64/qt4/mkspecs/features/resources.prf \
141 /usr/lib64/qt4/mkspecs/features/uic.prf \
141 /usr/lib64/qt4/mkspecs/features/uic.prf \
142 /usr/lib64/qt4/mkspecs/features/yacc.prf \
142 /usr/lib64/qt4/mkspecs/features/yacc.prf \
143 /usr/lib64/qt4/mkspecs/features/lex.prf \
143 /usr/lib64/qt4/mkspecs/features/lex.prf \
144 /usr/lib64/qt4/mkspecs/features/include_source_dir.prf
144 /usr/lib64/qt4/mkspecs/features/include_source_dir.prf
145 $(QMAKE) -spec /usr/lib64/qt4/mkspecs/linux-g++ -o Makefile fsw-qt.pro
145 $(QMAKE) -spec /usr/lib64/qt4/mkspecs/linux-g++ -o Makefile fsw-qt.pro
146 /usr/lib64/qt4/mkspecs/common/unix.conf:
146 /usr/lib64/qt4/mkspecs/common/unix.conf:
147 /usr/lib64/qt4/mkspecs/common/linux.conf:
147 /usr/lib64/qt4/mkspecs/common/linux.conf:
148 /usr/lib64/qt4/mkspecs/common/gcc-base.conf:
148 /usr/lib64/qt4/mkspecs/common/gcc-base.conf:
149 /usr/lib64/qt4/mkspecs/common/gcc-base-unix.conf:
149 /usr/lib64/qt4/mkspecs/common/gcc-base-unix.conf:
150 /usr/lib64/qt4/mkspecs/common/g++-base.conf:
150 /usr/lib64/qt4/mkspecs/common/g++-base.conf:
151 /usr/lib64/qt4/mkspecs/common/g++-unix.conf:
151 /usr/lib64/qt4/mkspecs/common/g++-unix.conf:
152 /usr/lib64/qt4/mkspecs/qconfig.pri:
152 /usr/lib64/qt4/mkspecs/qconfig.pri:
153 /usr/lib64/qt4/mkspecs/modules/qt_webkit.pri:
153 /usr/lib64/qt4/mkspecs/modules/qt_webkit.pri:
154 /usr/lib64/qt4/mkspecs/features/qt_functions.prf:
154 /usr/lib64/qt4/mkspecs/features/qt_functions.prf:
155 /usr/lib64/qt4/mkspecs/features/qt_config.prf:
155 /usr/lib64/qt4/mkspecs/features/qt_config.prf:
156 /usr/lib64/qt4/mkspecs/features/exclusive_builds.prf:
156 /usr/lib64/qt4/mkspecs/features/exclusive_builds.prf:
157 /usr/lib64/qt4/mkspecs/features/default_pre.prf:
157 /usr/lib64/qt4/mkspecs/features/default_pre.prf:
158 sparc.pri:
158 sparc.pri:
159 /usr/lib64/qt4/mkspecs/features/release.prf:
159 /usr/lib64/qt4/mkspecs/features/release.prf:
160 /usr/lib64/qt4/mkspecs/features/default_post.prf:
160 /usr/lib64/qt4/mkspecs/features/default_post.prf:
161 /usr/lib64/qt4/mkspecs/features/shared.prf:
161 /usr/lib64/qt4/mkspecs/features/shared.prf:
162 /usr/lib64/qt4/mkspecs/features/unix/gdb_dwarf_index.prf:
162 /usr/lib64/qt4/mkspecs/features/unix/gdb_dwarf_index.prf:
163 /usr/lib64/qt4/mkspecs/features/warn_on.prf:
163 /usr/lib64/qt4/mkspecs/features/warn_on.prf:
164 /usr/lib64/qt4/mkspecs/features/resources.prf:
164 /usr/lib64/qt4/mkspecs/features/resources.prf:
165 /usr/lib64/qt4/mkspecs/features/uic.prf:
165 /usr/lib64/qt4/mkspecs/features/uic.prf:
166 /usr/lib64/qt4/mkspecs/features/yacc.prf:
166 /usr/lib64/qt4/mkspecs/features/yacc.prf:
167 /usr/lib64/qt4/mkspecs/features/lex.prf:
167 /usr/lib64/qt4/mkspecs/features/lex.prf:
168 /usr/lib64/qt4/mkspecs/features/include_source_dir.prf:
168 /usr/lib64/qt4/mkspecs/features/include_source_dir.prf:
169 qmake: FORCE
169 qmake: FORCE
170 @$(QMAKE) -spec /usr/lib64/qt4/mkspecs/linux-g++ -o Makefile fsw-qt.pro
170 @$(QMAKE) -spec /usr/lib64/qt4/mkspecs/linux-g++ -o Makefile fsw-qt.pro
171
171
172 dist:
172 dist:
173 @$(CHK_DIR_EXISTS) obj/fsw1.0.0 || $(MKDIR) obj/fsw1.0.0
173 @$(CHK_DIR_EXISTS) obj/fsw1.0.0 || $(MKDIR) obj/fsw1.0.0
174 $(COPY_FILE) --parents $(SOURCES) $(DIST) obj/fsw1.0.0/ && (cd `dirname obj/fsw1.0.0` && $(TAR) fsw1.0.0.tar fsw1.0.0 && $(COMPRESS) fsw1.0.0.tar) && $(MOVE) `dirname obj/fsw1.0.0`/fsw1.0.0.tar.gz . && $(DEL_FILE) -r obj/fsw1.0.0
174 $(COPY_FILE) --parents $(SOURCES) $(DIST) obj/fsw1.0.0/ && (cd `dirname obj/fsw1.0.0` && $(TAR) fsw1.0.0.tar fsw1.0.0 && $(COMPRESS) fsw1.0.0.tar) && $(MOVE) `dirname obj/fsw1.0.0`/fsw1.0.0.tar.gz . && $(DEL_FILE) -r obj/fsw1.0.0
175
175
176
176
177 clean:compiler_clean
177 clean:compiler_clean
178 -$(DEL_FILE) $(OBJECTS)
178 -$(DEL_FILE) $(OBJECTS)
179 -$(DEL_FILE) *~ core *.core
179 -$(DEL_FILE) *~ core *.core
180
180
181
181
182 ####### Sub-libraries
182 ####### Sub-libraries
183
183
184 distclean: clean
184 distclean: clean
185 -$(DEL_FILE) $(TARGET)
185 -$(DEL_FILE) $(TARGET)
186 -$(DEL_FILE) Makefile
186 -$(DEL_FILE) Makefile
187
187
188
188
189 grmon:
189 grmon:
190 cd bin && C:/opt/grmon-eval-2.0.29b/win32/bin/grmon.exe -uart COM4 -u
190 cd bin && C:/opt/grmon-eval-2.0.29b/win32/bin/grmon.exe -uart COM4 -u
191
191
192 check: first
192 check: first
193
193
194 compiler_rcc_make_all:
194 compiler_rcc_make_all:
195 compiler_rcc_clean:
195 compiler_rcc_clean:
196 compiler_uic_make_all:
196 compiler_uic_make_all:
197 compiler_uic_clean:
197 compiler_uic_clean:
198 compiler_image_collection_make_all: qmake_image_collection.cpp
198 compiler_image_collection_make_all: qmake_image_collection.cpp
199 compiler_image_collection_clean:
199 compiler_image_collection_clean:
200 -$(DEL_FILE) qmake_image_collection.cpp
200 -$(DEL_FILE) qmake_image_collection.cpp
201 compiler_yacc_decl_make_all:
201 compiler_yacc_decl_make_all:
202 compiler_yacc_decl_clean:
202 compiler_yacc_decl_clean:
203 compiler_yacc_impl_make_all:
203 compiler_yacc_impl_make_all:
204 compiler_yacc_impl_clean:
204 compiler_yacc_impl_clean:
205 compiler_lex_make_all:
205 compiler_lex_make_all:
206 compiler_lex_clean:
206 compiler_lex_clean:
207 compiler_clean:
207 compiler_clean:
208
208
209 ####### Compile
209 ####### Compile
210
210
211 obj/wf_handler.o: ../src/wf_handler.c
211 obj/wf_handler.o: ../src/wf_handler.c
212 $(CC) -c $(CFLAGS) $(INCPATH) -o obj/wf_handler.o ../src/wf_handler.c
212 $(CC) -c $(CFLAGS) $(INCPATH) -o obj/wf_handler.o ../src/wf_handler.c
213
213
214 obj/tc_handler.o: ../src/tc_handler.c
214 obj/tc_handler.o: ../src/tc_handler.c
215 $(CC) -c $(CFLAGS) $(INCPATH) -o obj/tc_handler.o ../src/tc_handler.c
215 $(CC) -c $(CFLAGS) $(INCPATH) -o obj/tc_handler.o ../src/tc_handler.c
216
216
217 obj/fsw_processing.o: ../src/fsw_processing.c ../src/fsw_processing_globals.c
217 obj/fsw_processing.o: ../src/fsw_processing.c ../src/fsw_processing_globals.c
218 $(CC) -c $(CFLAGS) $(INCPATH) -o obj/fsw_processing.o ../src/fsw_processing.c
218 $(CC) -c $(CFLAGS) $(INCPATH) -o obj/fsw_processing.o ../src/fsw_processing.c
219
219
220 obj/fsw_misc.o: ../src/fsw_misc.c
220 obj/fsw_misc.o: ../src/fsw_misc.c
221 $(CC) -c $(CFLAGS) $(INCPATH) -o obj/fsw_misc.o ../src/fsw_misc.c
221 $(CC) -c $(CFLAGS) $(INCPATH) -o obj/fsw_misc.o ../src/fsw_misc.c
222
222
223 obj/fsw_init.o: ../src/fsw_init.c ../src/fsw_config.c
223 obj/fsw_init.o: ../src/fsw_init.c ../src/fsw_config.c
224 $(CC) -c $(CFLAGS) $(INCPATH) -o obj/fsw_init.o ../src/fsw_init.c
224 $(CC) -c $(CFLAGS) $(INCPATH) -o obj/fsw_init.o ../src/fsw_init.c
225
225
226 obj/fsw_globals.o: ../src/fsw_globals.c
226 obj/fsw_globals.o: ../src/fsw_globals.c
227 $(CC) -c $(CFLAGS) $(INCPATH) -o obj/fsw_globals.o ../src/fsw_globals.c
227 $(CC) -c $(CFLAGS) $(INCPATH) -o obj/fsw_globals.o ../src/fsw_globals.c
228
228
229 obj/fsw_spacewire.o: ../src/fsw_spacewire.c
229 obj/fsw_spacewire.o: ../src/fsw_spacewire.c
230 $(CC) -c $(CFLAGS) $(INCPATH) -o obj/fsw_spacewire.o ../src/fsw_spacewire.c
230 $(CC) -c $(CFLAGS) $(INCPATH) -o obj/fsw_spacewire.o ../src/fsw_spacewire.c
231
231
232 obj/tc_load_dump_parameters.o: ../src/tc_load_dump_parameters.c
232 obj/tc_load_dump_parameters.o: ../src/tc_load_dump_parameters.c
233 $(CC) -c $(CFLAGS) $(INCPATH) -o obj/tc_load_dump_parameters.o ../src/tc_load_dump_parameters.c
233 $(CC) -c $(CFLAGS) $(INCPATH) -o obj/tc_load_dump_parameters.o ../src/tc_load_dump_parameters.c
234
234
235 obj/tm_lfr_tc_exe.o: ../src/tm_lfr_tc_exe.c
235 obj/tm_lfr_tc_exe.o: ../src/tm_lfr_tc_exe.c
236 $(CC) -c $(CFLAGS) $(INCPATH) -o obj/tm_lfr_tc_exe.o ../src/tm_lfr_tc_exe.c
236 $(CC) -c $(CFLAGS) $(INCPATH) -o obj/tm_lfr_tc_exe.o ../src/tm_lfr_tc_exe.c
237
237
238 obj/tc_acceptance.o: ../src/tc_acceptance.c
238 obj/tc_acceptance.o: ../src/tc_acceptance.c
239 $(CC) -c $(CFLAGS) $(INCPATH) -o obj/tc_acceptance.o ../src/tc_acceptance.c
239 $(CC) -c $(CFLAGS) $(INCPATH) -o obj/tc_acceptance.o ../src/tc_acceptance.c
240
240
241 ####### Install
241 ####### Install
242
242
243 install: FORCE
243 install: FORCE
244
244
245 uninstall: FORCE
245 uninstall: FORCE
246
246
247 FORCE:
247 FORCE:
248
248
@@ -1,305 +1,305
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-14T11:56:41. -->
3 <!-- Written by QtCreator 2.8.1, 2013-11-15T16:54:28. -->
4 <qtcreator>
4 <qtcreator>
5 <data>
5 <data>
6 <variable>ProjectExplorer.Project.ActiveTarget</variable>
6 <variable>ProjectExplorer.Project.ActiveTarget</variable>
7 <value type="int">0</value>
7 <value type="int">0</value>
8 </data>
8 </data>
9 <data>
9 <data>
10 <variable>ProjectExplorer.Project.EditorSettings</variable>
10 <variable>ProjectExplorer.Project.EditorSettings</variable>
11 <valuemap type="QVariantMap">
11 <valuemap type="QVariantMap">
12 <value type="bool" key="EditorConfiguration.AutoIndent">true</value>
12 <value type="bool" key="EditorConfiguration.AutoIndent">true</value>
13 <value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
13 <value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
14 <value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
14 <value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
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="QString" 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="QString" 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>
28 <value type="QByteArray" key="EditorConfiguration.Codec">System</value>
28 <value type="QByteArray" key="EditorConfiguration.Codec">System</value>
29 <value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
29 <value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
30 <value type="int" key="EditorConfiguration.IndentSize">4</value>
30 <value type="int" key="EditorConfiguration.IndentSize">4</value>
31 <value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
31 <value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
32 <value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
32 <value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
33 <value type="int" key="EditorConfiguration.PaddingMode">1</value>
33 <value type="int" key="EditorConfiguration.PaddingMode">1</value>
34 <value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
34 <value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
35 <value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
35 <value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
36 <value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
36 <value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
37 <value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
37 <value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
38 <value type="int" key="EditorConfiguration.TabSize">8</value>
38 <value type="int" key="EditorConfiguration.TabSize">8</value>
39 <value type="bool" key="EditorConfiguration.UseGlobal">true</value>
39 <value type="bool" key="EditorConfiguration.UseGlobal">true</value>
40 <value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
40 <value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
41 <value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
41 <value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
42 <value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
42 <value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
43 <value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
43 <value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
44 <value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
44 <value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
45 </valuemap>
45 </valuemap>
46 </data>
46 </data>
47 <data>
47 <data>
48 <variable>ProjectExplorer.Project.PluginSettings</variable>
48 <variable>ProjectExplorer.Project.PluginSettings</variable>
49 <valuemap type="QVariantMap"/>
49 <valuemap type="QVariantMap"/>
50 </data>
50 </data>
51 <data>
51 <data>
52 <variable>ProjectExplorer.Project.Target.0</variable>
52 <variable>ProjectExplorer.Project.Target.0</variable>
53 <valuemap type="QVariantMap">
53 <valuemap type="QVariantMap">
54 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop-Qt 4.8.2 in PATH (System)</value>
54 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop-Qt 4.8.2 in PATH (System)</value>
55 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop-Qt 4.8.2 in PATH (System)</value>
55 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop-Qt 4.8.2 in PATH (System)</value>
56 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{5289e843-9ef2-45ce-88c6-ad27d8e08def}</value>
56 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{5289e843-9ef2-45ce-88c6-ad27d8e08def}</value>
57 <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
57 <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
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 <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
61 <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
62 <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
62 <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
63 <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
63 <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
64 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
64 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
65 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
65 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
66 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
66 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
67 <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
67 <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
68 <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibraryAuto">true</value>
68 <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibraryAuto">true</value>
69 <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
69 <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
70 <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
70 <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
71 </valuemap>
71 </valuemap>
72 <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
72 <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
73 <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
73 <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
74 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
74 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
75 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
75 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
76 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
76 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
77 <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
77 <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
78 <value type="QString">-w</value>
78 <value type="QString">-w</value>
79 <value type="QString">-r</value>
79 <value type="QString">-r</value>
80 </valuelist>
80 </valuelist>
81 <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
81 <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
82 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">-r -w -j 4</value>
82 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">-r -w -j 4</value>
83 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
83 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
84 </valuemap>
84 </valuemap>
85 <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
85 <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
86 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
86 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
87 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
87 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
88 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
88 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
89 </valuemap>
89 </valuemap>
90 <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
90 <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
91 <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
91 <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
92 <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
92 <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
93 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
93 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
94 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
94 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
95 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
95 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
96 <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
96 <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
97 <value type="QString">-w</value>
97 <value type="QString">-w</value>
98 <value type="QString">-r</value>
98 <value type="QString">-r</value>
99 </valuelist>
99 </valuelist>
100 <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
100 <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
101 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">-r -w clean</value>
101 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">-r -w clean</value>
102 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
102 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
103 </valuemap>
103 </valuemap>
104 <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
104 <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
105 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
105 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
106 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
106 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
107 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
107 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
108 </valuemap>
108 </valuemap>
109 <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
109 <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
110 <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
110 <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
111 <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
111 <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
112 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Qt 4.8.2 in PATH (System) Release</value>
112 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Qt 4.8.2 in PATH (System) Release</value>
113 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
113 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
114 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
114 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
115 <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
115 <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
116 <value type="QString" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory">/opt/DEV_PLE/FSW-qt</value>
116 <value type="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 <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
120 <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
121 <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
121 <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
122 <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
122 <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
123 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
123 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
124 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
124 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
125 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
125 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
126 <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
126 <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
127 <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibraryAuto">true</value>
127 <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibraryAuto">true</value>
128 <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
128 <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
129 <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
129 <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
130 </valuemap>
130 </valuemap>
131 <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
131 <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
132 <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
132 <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
133 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
133 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
134 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
134 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
135 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
135 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
136 <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
136 <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
137 <value type="QString">-w</value>
137 <value type="QString">-w</value>
138 <value type="QString">-r</value>
138 <value type="QString">-r</value>
139 </valuelist>
139 </valuelist>
140 <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
140 <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
141 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">-r -w </value>
141 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">-r -w </value>
142 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
142 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
143 </valuemap>
143 </valuemap>
144 <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
144 <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
145 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
145 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
146 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
146 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
147 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
147 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
148 </valuemap>
148 </valuemap>
149 <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
149 <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
150 <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
150 <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
151 <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
151 <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
152 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
152 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
153 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
153 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
154 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
154 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
155 <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
155 <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
156 <value type="QString">-w</value>
156 <value type="QString">-w</value>
157 <value type="QString">-r</value>
157 <value type="QString">-r</value>
158 </valuelist>
158 </valuelist>
159 <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
159 <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
160 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">-r -w clean</value>
160 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">-r -w clean</value>
161 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
161 <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
162 </valuemap>
162 </valuemap>
163 <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
163 <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
164 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
164 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
165 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
165 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
166 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
166 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
167 </valuemap>
167 </valuemap>
168 <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
168 <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
169 <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
169 <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
170 <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
170 <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
171 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Qt 4.8.2 in PATH (System) Debug</value>
171 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Qt 4.8.2 in PATH (System) Debug</value>
172 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
172 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
173 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
173 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
174 <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
174 <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
175 <value type="QString" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory">/opt/DEV_PLE/FSW-qt</value>
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>
179 <valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
179 <valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
180 <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
180 <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
181 <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
181 <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
182 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
182 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
183 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
183 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
184 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
184 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
185 </valuemap>
185 </valuemap>
186 <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
186 <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
187 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">No deployment</value>
187 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">No deployment</value>
188 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
188 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
189 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
189 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
190 </valuemap>
190 </valuemap>
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>
194 <value type="bool" key="Analyzer.Project.UseGlobal">true</value>
195 <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
195 <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
196 <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
196 <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
197 <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
197 <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
198 <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
198 <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
199 <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
199 <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
200 <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
200 <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
201 <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
201 <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
202 <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
202 <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
203 <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
203 <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</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="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
206 <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
207 <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
207 <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
208 <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
208 <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
209 <value type="int">0</value>
209 <value type="int">0</value>
210 <value type="int">1</value>
210 <value type="int">1</value>
211 <value type="int">2</value>
211 <value type="int">2</value>
212 <value type="int">3</value>
212 <value type="int">3</value>
213 <value type="int">4</value>
213 <value type="int">4</value>
214 <value type="int">5</value>
214 <value type="int">5</value>
215 <value type="int">6</value>
215 <value type="int">6</value>
216 <value type="int">7</value>
216 <value type="int">7</value>
217 <value type="int">8</value>
217 <value type="int">8</value>
218 <value type="int">9</value>
218 <value type="int">9</value>
219 <value type="int">10</value>
219 <value type="int">10</value>
220 <value type="int">11</value>
220 <value type="int">11</value>
221 <value type="int">12</value>
221 <value type="int">12</value>
222 <value type="int">13</value>
222 <value type="int">13</value>
223 <value type="int">14</value>
223 <value type="int">14</value>
224 </valuelist>
224 </valuelist>
225 <value type="int" key="PE.EnvironmentAspect.Base">2</value>
225 <value type="int" key="PE.EnvironmentAspect.Base">2</value>
226 <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
226 <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
227 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">fsw-qt</value>
227 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">fsw-qt</value>
228 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
228 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
229 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:/opt/DEV_PLE/FSW-qt/fsw-qt.pro</value>
229 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:/opt/DEV_PLE/FSW-qt/fsw-qt.pro</value>
230 <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments"></value>
230 <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments"></value>
231 <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">fsw-qt.pro</value>
231 <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">fsw-qt.pro</value>
232 <value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseDyldImageSuffix">false</value>
232 <value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseDyldImageSuffix">false</value>
233 <value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseTerminal">true</value>
233 <value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseTerminal">true</value>
234 <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory"></value>
234 <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory"></value>
235 <value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
235 <value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
236 <value type="bool" key="RunConfiguration.UseCppDebugger">true</value>
236 <value type="bool" key="RunConfiguration.UseCppDebugger">true</value>
237 <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">false</value>
237 <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">false</value>
238 <value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
238 <value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
239 <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
239 <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
240 <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">false</value>
240 <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">false</value>
241 </valuemap>
241 </valuemap>
242 <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.1">
242 <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.1">
243 <value type="bool" key="Analyzer.Project.UseGlobal">true</value>
243 <value type="bool" key="Analyzer.Project.UseGlobal">true</value>
244 <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
244 <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
245 <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
245 <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
246 <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
246 <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
247 <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
247 <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
248 <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
248 <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
249 <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
249 <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
250 <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
250 <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
251 <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
251 <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
252 <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
252 <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
253 <value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
253 <value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
254 <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
254 <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
255 <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
255 <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
256 <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
256 <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
257 <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
257 <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
258 <value type="int">0</value>
258 <value type="int">0</value>
259 <value type="int">1</value>
259 <value type="int">1</value>
260 <value type="int">2</value>
260 <value type="int">2</value>
261 <value type="int">3</value>
261 <value type="int">3</value>
262 <value type="int">4</value>
262 <value type="int">4</value>
263 <value type="int">5</value>
263 <value type="int">5</value>
264 <value type="int">6</value>
264 <value type="int">6</value>
265 <value type="int">7</value>
265 <value type="int">7</value>
266 <value type="int">8</value>
266 <value type="int">8</value>
267 <value type="int">9</value>
267 <value type="int">9</value>
268 <value type="int">10</value>
268 <value type="int">10</value>
269 <value type="int">11</value>
269 <value type="int">11</value>
270 <value type="int">12</value>
270 <value type="int">12</value>
271 <value type="int">13</value>
271 <value type="int">13</value>
272 <value type="int">14</value>
272 <value type="int">14</value>
273 </valuelist>
273 </valuelist>
274 <value type="int" key="PE.EnvironmentAspect.Base">2</value>
274 <value type="int" key="PE.EnvironmentAspect.Base">2</value>
275 <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
275 <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
276 <value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.Arguments"></value>
276 <value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.Arguments"></value>
277 <value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.Executable">doxygen</value>
277 <value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.Executable">doxygen</value>
278 <value type="bool" key="ProjectExplorer.CustomExecutableRunConfiguration.UseTerminal">true</value>
278 <value type="bool" key="ProjectExplorer.CustomExecutableRunConfiguration.UseTerminal">true</value>
279 <value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.WorkingDirectory">/opt/DEV_PLE/doc</value>
279 <value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.WorkingDirectory">/opt/DEV_PLE/doc</value>
280 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Run doxygen</value>
280 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Run doxygen</value>
281 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
281 <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
282 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.CustomExecutableRunConfiguration</value>
282 <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.CustomExecutableRunConfiguration</value>
283 <value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
283 <value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
284 <value type="bool" key="RunConfiguration.UseCppDebugger">true</value>
284 <value type="bool" key="RunConfiguration.UseCppDebugger">true</value>
285 <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">false</value>
285 <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">false</value>
286 <value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
286 <value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
287 <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
287 <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
288 <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
288 <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
289 </valuemap>
289 </valuemap>
290 <value type="int" key="ProjectExplorer.Target.RunConfigurationCount">2</value>
290 <value type="int" key="ProjectExplorer.Target.RunConfigurationCount">2</value>
291 </valuemap>
291 </valuemap>
292 </data>
292 </data>
293 <data>
293 <data>
294 <variable>ProjectExplorer.Project.TargetCount</variable>
294 <variable>ProjectExplorer.Project.TargetCount</variable>
295 <value type="int">1</value>
295 <value type="int">1</value>
296 </data>
296 </data>
297 <data>
297 <data>
298 <variable>ProjectExplorer.Project.Updater.EnvironmentId</variable>
298 <variable>ProjectExplorer.Project.Updater.EnvironmentId</variable>
299 <value type="QByteArray">{2e58a81f-9962-4bba-ae6b-760177f0656c}</value>
299 <value type="QByteArray">{2e58a81f-9962-4bba-ae6b-760177f0656c}</value>
300 </data>
300 </data>
301 <data>
301 <data>
302 <variable>ProjectExplorer.Project.Updater.FileVersion</variable>
302 <variable>ProjectExplorer.Project.Updater.FileVersion</variable>
303 <value type="int">14</value>
303 <value type="int">14</value>
304 </data>
304 </data>
305 </qtcreator>
305 </qtcreator>
@@ -1,1249 +1,1251
1 /** Functions and tasks related to waveform packet generation.
1 /** Functions and tasks related to waveform packet generation.
2 *
2 *
3 * @file
3 * @file
4 * @author P. LEROY
4 * @author P. LEROY
5 *
5 *
6 * A group of functions to handle waveforms, in snapshot or continuous format.\n
6 * A group of functions to handle waveforms, in snapshot or continuous format.\n
7 *
7 *
8 */
8 */
9
9
10 #include "wf_handler.h"
10 #include "wf_handler.h"
11
11
12 // SWF
12 // SWF
13 Header_TM_LFR_SCIENCE_SWF_t headerSWF_F0[7];
13 Header_TM_LFR_SCIENCE_SWF_t headerSWF_F0[7];
14 Header_TM_LFR_SCIENCE_SWF_t headerSWF_F1[7];
14 Header_TM_LFR_SCIENCE_SWF_t headerSWF_F1[7];
15 Header_TM_LFR_SCIENCE_SWF_t headerSWF_F2[7];
15 Header_TM_LFR_SCIENCE_SWF_t headerSWF_F2[7];
16 // CWF
16 // CWF
17 Header_TM_LFR_SCIENCE_CWF_t headerCWF_F1[7];
17 Header_TM_LFR_SCIENCE_CWF_t headerCWF_F1[7];
18 Header_TM_LFR_SCIENCE_CWF_t headerCWF_F2_BURST[7];
18 Header_TM_LFR_SCIENCE_CWF_t headerCWF_F2_BURST[7];
19 Header_TM_LFR_SCIENCE_CWF_t headerCWF_F2_SBM2[7];
19 Header_TM_LFR_SCIENCE_CWF_t headerCWF_F2_SBM2[7];
20 Header_TM_LFR_SCIENCE_CWF_t headerCWF_F3[7];
20 Header_TM_LFR_SCIENCE_CWF_t headerCWF_F3[7];
21 Header_TM_LFR_SCIENCE_CWF_t headerCWF_F3_light[7];
21 Header_TM_LFR_SCIENCE_CWF_t headerCWF_F3_light[7];
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 unsigned char fullRecord;
26
26
27 rtems_isr waveforms_isr( rtems_vector_number vector )
27 rtems_isr waveforms_isr( rtems_vector_number vector )
28 {
28 {
29 unsigned int statusReg;
29 unsigned int statusReg;
30
30
31 /** 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.
32 *
32 *
33 * 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:
34 * 1. the values read in the registers of the waveform picker.
34 * 1. the values read in the registers of the waveform picker.
35 * 2. the current LFR mode.
35 * 2. the current LFR mode.
36 *
36 *
37 */
37 */
38
38
39 new_waveform_picker_regs->status = new_waveform_picker_regs->status & 0xfffff00f; // clear new_err and full_err
39 new_waveform_picker_regs->status = new_waveform_picker_regs->status & 0xfffff00f; // clear new_err and full_err
40
40
41 #ifdef GSA
41 #ifdef GSA
42 #else
42 #else
43 if ( (lfrCurrentMode == LFR_MODE_NORMAL)
43 if ( (lfrCurrentMode == LFR_MODE_NORMAL)
44 || (lfrCurrentMode == LFR_MODE_SBM1) || (lfrCurrentMode == LFR_MODE_SBM2) )
44 || (lfrCurrentMode == LFR_MODE_SBM1) || (lfrCurrentMode == LFR_MODE_SBM2) )
45 { // 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
46 if ((new_waveform_picker_regs->status & 0x08) == 0x08){ // [1000] f3 is full
46 if ((new_waveform_picker_regs->status & 0x08) == 0x08){ // [1000] f3 is full
47 // (1) change the receiving buffer for the waveform picker
47 // (1) change the receiving buffer for the waveform picker
48 if (new_waveform_picker_regs->addr_data_f3 == (int) wf_cont_f3) {
48 if (new_waveform_picker_regs->addr_data_f3 == (int) wf_cont_f3) {
49 new_waveform_picker_regs->addr_data_f3 = (int) (wf_cont_f3_bis);
49 new_waveform_picker_regs->addr_data_f3 = (int) (wf_cont_f3_bis);
50 }
50 }
51 else {
51 else {
52 new_waveform_picker_regs->addr_data_f3 = (int) (wf_cont_f3);
52 new_waveform_picker_regs->addr_data_f3 = (int) (wf_cont_f3);
53 }
53 }
54 // (2) send an event for the waveforms transmission
54 // (2) send an event for the waveforms transmission
55 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) {
56 rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_2 );
56 rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_2 );
57 }
57 }
58 new_waveform_picker_regs->status = new_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]
59 }
59 }
60 }
60 }
61 #endif
61 #endif
62
62
63 switch(lfrCurrentMode)
63 switch(lfrCurrentMode)
64 {
64 {
65 //********
65 //********
66 // STANDBY
66 // STANDBY
67 case(LFR_MODE_STANDBY):
67 case(LFR_MODE_STANDBY):
68 break;
68 break;
69
69
70 //******
70 //******
71 // NORMAL
71 // NORMAL
72 case(LFR_MODE_NORMAL):
72 case(LFR_MODE_NORMAL):
73 #ifdef GSA
73 #ifdef GSA
74 PRINTF("in waveform_isr *** unexpected waveform picker interruption\n")
74 PRINTF("in waveform_isr *** unexpected waveform picker interruption\n")
75 #else
75 #else
76 statusReg = new_waveform_picker_regs->status;
76 statusReg = new_waveform_picker_regs->status;
77 fullRecord = fullRecord | ( statusReg & 0x7 );
77 fullRecord = fullRecord | ( statusReg & 0x7 );
78 // if ( (new_waveform_picker_regs->status & 0x7) == 0x7 ){ // f2 f1 and f0 are full
78 // if ( (new_waveform_picker_regs->status & 0x7) == 0x7 ){ // f2 f1 and f0 are full
79 if ( (new_waveform_picker_regs->status & 0x1) == 0x1 ){ // f2 is full
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;
84 }
85 // if ( fullRecord == 0x7 ){ // f2 f1 and f0 are full
79 // if (rtems_event_send( Task_id[TASKID_WFRM], RTEMS_EVENT_MODE_NORMAL ) != RTEMS_SUCCESSFUL) {
86 // if (rtems_event_send( Task_id[TASKID_WFRM], RTEMS_EVENT_MODE_NORMAL ) != RTEMS_SUCCESSFUL) {
80 // rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_2 );
87 // rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_2 );
81 // }
88 // }
82 // new_waveform_picker_regs->status = new_waveform_picker_regs->status & 0xfffff888;
89 // fullRecord = 0x00;
83 // }
90 // }
84 if ( fullRecord == 0x7 ){ // f2 f1 and f0 are full
91 // new_waveform_picker_regs->status = ( new_waveform_picker_regs->status & (~statusReg) )
85 if (rtems_event_send( Task_id[TASKID_WFRM], RTEMS_EVENT_MODE_NORMAL ) != RTEMS_SUCCESSFUL) {
92 // | ( new_waveform_picker_regs->status & 0xfffffff8 );
86 rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_2 );
87 }
88 fullRecord = 0x00;
89 }
90 new_waveform_picker_regs->status = ( new_waveform_picker_regs->status & (~statusReg) )
91 | ( new_waveform_picker_regs->status & 0xfffffff8 );
92 #endif
93 #endif
93 break;
94 break;
94
95
95 //******
96 //******
96 // BURST
97 // BURST
97 case(LFR_MODE_BURST):
98 case(LFR_MODE_BURST):
98 #ifdef GSA
99 #ifdef GSA
99 PRINTF("in waveform_isr *** unexpected waveform picker interruption\n")
100 PRINTF("in waveform_isr *** unexpected waveform picker interruption\n")
100 #else
101 #else
101 if ((new_waveform_picker_regs->status & 0x04) == 0x04){ // [0100] check the f2 full bit
102 if ((new_waveform_picker_regs->status & 0x04) == 0x04){ // [0100] check the f2 full bit
102 // (1) change the receiving buffer for the waveform picker
103 // (1) change the receiving buffer for the waveform picker
103 if (new_waveform_picker_regs->addr_data_f2 == (int) wf_snap_f2) {
104 if (new_waveform_picker_regs->addr_data_f2 == (int) wf_snap_f2) {
104 new_waveform_picker_regs->addr_data_f2 = (int) (wf_snap_f2_bis);
105 new_waveform_picker_regs->addr_data_f2 = (int) (wf_snap_f2_bis);
105 }
106 }
106 else {
107 else {
107 new_waveform_picker_regs->addr_data_f2 = (int) (wf_snap_f2);
108 new_waveform_picker_regs->addr_data_f2 = (int) (wf_snap_f2);
108 }
109 }
109 // (2) send an event for the waveforms transmission
110 // (2) send an event for the waveforms transmission
110 if (rtems_event_send( Task_id[TASKID_CWF2], RTEMS_EVENT_MODE_BURST ) != RTEMS_SUCCESSFUL) {
111 if (rtems_event_send( Task_id[TASKID_CWF2], RTEMS_EVENT_MODE_BURST ) != RTEMS_SUCCESSFUL) {
111 rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_2 );
112 rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_2 );
112 }
113 }
113 new_waveform_picker_regs->status = new_waveform_picker_regs->status & 0xfffffbbb; // [1111 1011 1011 1011] f2 bits = 0
114 new_waveform_picker_regs->status = new_waveform_picker_regs->status & 0xfffffbbb; // [1111 1011 1011 1011] f2 bits = 0
114 }
115 }
115 #endif
116 #endif
116 break;
117 break;
117
118
118 //*****
119 //*****
119 // SBM1
120 // SBM1
120 case(LFR_MODE_SBM1):
121 case(LFR_MODE_SBM1):
121 #ifdef GSA
122 #ifdef GSA
122 PRINTF("in waveform_isr *** unexpected waveform picker interruption\n")
123 PRINTF("in waveform_isr *** unexpected waveform picker interruption\n")
123 #else
124 #else
124 if ((new_waveform_picker_regs->status & 0x02) == 0x02){ // [0010] check the f1 full bit
125 if ((new_waveform_picker_regs->status & 0x02) == 0x02){ // [0010] check the f1 full bit
125 // (1) change the receiving buffer for the waveform picker
126 // (1) change the receiving buffer for the waveform picker
126 if ( param_local.local_sbm1_nb_cwf_sent == (param_local.local_sbm1_nb_cwf_max-1) )
127 if ( param_local.local_sbm1_nb_cwf_sent == (param_local.local_sbm1_nb_cwf_max-1) )
127 {
128 {
128 new_waveform_picker_regs->addr_data_f1 = (int) (wf_snap_f1_norm);
129 new_waveform_picker_regs->addr_data_f1 = (int) (wf_snap_f1_norm);
129 }
130 }
130 else if ( new_waveform_picker_regs->addr_data_f1 == (int) wf_snap_f1_norm )
131 else if ( new_waveform_picker_regs->addr_data_f1 == (int) wf_snap_f1_norm )
131 {
132 {
132 doubleSendCWF1 = 1;
133 doubleSendCWF1 = 1;
133 new_waveform_picker_regs->addr_data_f1 = (int) (wf_snap_f1);
134 new_waveform_picker_regs->addr_data_f1 = (int) (wf_snap_f1);
134 }
135 }
135 else if ( new_waveform_picker_regs->addr_data_f1 == (int) wf_snap_f1 ) {
136 else if ( new_waveform_picker_regs->addr_data_f1 == (int) wf_snap_f1 ) {
136 new_waveform_picker_regs->addr_data_f1 = (int) (wf_snap_f1_bis);
137 new_waveform_picker_regs->addr_data_f1 = (int) (wf_snap_f1_bis);
137 }
138 }
138 else {
139 else {
139 new_waveform_picker_regs->addr_data_f1 = (int) (wf_snap_f1);
140 new_waveform_picker_regs->addr_data_f1 = (int) (wf_snap_f1);
140 }
141 }
141 // (2) send an event for the waveforms transmission
142 // (2) send an event for the waveforms transmission
142 if (rtems_event_send( Task_id[TASKID_CWF1], RTEMS_EVENT_MODE_SBM1 ) != RTEMS_SUCCESSFUL) {
143 if (rtems_event_send( Task_id[TASKID_CWF1], RTEMS_EVENT_MODE_SBM1 ) != RTEMS_SUCCESSFUL) {
143 rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_2 );
144 rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_2 );
144 }
145 }
145 new_waveform_picker_regs->status = new_waveform_picker_regs->status & 0xfffffddd; // [1111 1101 1101 1101] f1 bit = 0
146 new_waveform_picker_regs->status = new_waveform_picker_regs->status & 0xfffffddd; // [1111 1101 1101 1101] f1 bit = 0
146 }
147 }
147 if ( ( (new_waveform_picker_regs->status & 0x05) == 0x05 ) ) { // [0101] check the f2 and f0 full bit
148 if ( ( (new_waveform_picker_regs->status & 0x05) == 0x05 ) ) { // [0101] check the f2 and f0 full bit
148 if (rtems_event_send( Task_id[TASKID_WFRM], RTEMS_EVENT_MODE_NORMAL ) != RTEMS_SUCCESSFUL) {
149 if (rtems_event_send( Task_id[TASKID_WFRM], RTEMS_EVENT_MODE_NORMAL ) != RTEMS_SUCCESSFUL) {
149 rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_2 );
150 rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_2 );
150 }
151 }
151 new_waveform_picker_regs->status = new_waveform_picker_regs->status & 0xfffffaaa; // [1111 1010 1010 1010] f2 and f0 bits = 0
152 new_waveform_picker_regs->status = new_waveform_picker_regs->status & 0xfffffaaa; // [1111 1010 1010 1010] f2 and f0 bits = 0
152 reset_local_sbm1_nb_cwf_sent();
153 reset_local_sbm1_nb_cwf_sent();
153 }
154 }
154
155
155 #endif
156 #endif
156 break;
157 break;
157
158
158 //*****
159 //*****
159 // SBM2
160 // SBM2
160 case(LFR_MODE_SBM2):
161 case(LFR_MODE_SBM2):
161 #ifdef GSA
162 #ifdef GSA
162 PRINTF("in waveform_isr *** unexpected waveform picker interruption\n")
163 PRINTF("in waveform_isr *** unexpected waveform picker interruption\n")
163 #else
164 #else
164 if ((new_waveform_picker_regs->status & 0x04) == 0x04){ // [0100] check the f2 full bit
165 if ((new_waveform_picker_regs->status & 0x04) == 0x04){ // [0100] check the f2 full bit
165 // (1) change the receiving buffer for the waveform picker
166 // (1) change the receiving buffer for the waveform picker
166 if ( param_local.local_sbm2_nb_cwf_sent == (param_local.local_sbm2_nb_cwf_max-1) )
167 if ( param_local.local_sbm2_nb_cwf_sent == (param_local.local_sbm2_nb_cwf_max-1) )
167 {
168 {
168 new_waveform_picker_regs->addr_data_f2 = (int) (wf_snap_f2_norm);
169 new_waveform_picker_regs->addr_data_f2 = (int) (wf_snap_f2_norm);
169 }
170 }
170 else if ( new_waveform_picker_regs->addr_data_f2 == (int) wf_snap_f2_norm ) {
171 else if ( new_waveform_picker_regs->addr_data_f2 == (int) wf_snap_f2_norm ) {
171 new_waveform_picker_regs->addr_data_f2 = (int) (wf_snap_f2);
172 new_waveform_picker_regs->addr_data_f2 = (int) (wf_snap_f2);
172 doubleSendCWF2 = 1;
173 doubleSendCWF2 = 1;
173 if (rtems_event_send( Task_id[TASKID_WFRM], RTEMS_EVENT_MODE_SBM2_WFRM ) != RTEMS_SUCCESSFUL) {
174 if (rtems_event_send( Task_id[TASKID_WFRM], RTEMS_EVENT_MODE_SBM2_WFRM ) != RTEMS_SUCCESSFUL) {
174 rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_2 );
175 rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_2 );
175 }
176 }
176 reset_local_sbm2_nb_cwf_sent();
177 reset_local_sbm2_nb_cwf_sent();
177 }
178 }
178 else if ( new_waveform_picker_regs->addr_data_f2 == (int) wf_snap_f2 ) {
179 else if ( new_waveform_picker_regs->addr_data_f2 == (int) wf_snap_f2 ) {
179 new_waveform_picker_regs->addr_data_f2 = (int) (wf_snap_f2_bis);
180 new_waveform_picker_regs->addr_data_f2 = (int) (wf_snap_f2_bis);
180 }
181 }
181 else {
182 else {
182 new_waveform_picker_regs->addr_data_f2 = (int) (wf_snap_f2);
183 new_waveform_picker_regs->addr_data_f2 = (int) (wf_snap_f2);
183 }
184 }
184 // (2) send an event for the waveforms transmission
185 // (2) send an event for the waveforms transmission
185 if (rtems_event_send( Task_id[TASKID_CWF2], RTEMS_EVENT_MODE_SBM2 ) != RTEMS_SUCCESSFUL) {
186 if (rtems_event_send( Task_id[TASKID_CWF2], RTEMS_EVENT_MODE_SBM2 ) != RTEMS_SUCCESSFUL) {
186 rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_2 );
187 rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_2 );
187 }
188 }
188 new_waveform_picker_regs->status = new_waveform_picker_regs->status & 0xfffffbbb; // [1111 1011 1011 1011] f2 bit = 0
189 new_waveform_picker_regs->status = new_waveform_picker_regs->status & 0xfffffbbb; // [1111 1011 1011 1011] f2 bit = 0
189 }
190 }
190 if ( ( (new_waveform_picker_regs->status & 0x03) == 0x03 ) ) { // [0011] f3 f2 f1 f0, f1 and f0 are full
191 if ( ( (new_waveform_picker_regs->status & 0x03) == 0x03 ) ) { // [0011] f3 f2 f1 f0, f1 and f0 are full
191 if (rtems_event_send( Task_id[TASKID_WFRM], RTEMS_EVENT_MODE_SBM2 ) != RTEMS_SUCCESSFUL) {
192 if (rtems_event_send( Task_id[TASKID_WFRM], RTEMS_EVENT_MODE_SBM2 ) != RTEMS_SUCCESSFUL) {
192 rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_2 );
193 rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_2 );
193 }
194 }
194 new_waveform_picker_regs->status = new_waveform_picker_regs->status & 0xfffffccc; // [1111 1100 1100 1100] f1, f0 bits = 0
195 new_waveform_picker_regs->status = new_waveform_picker_regs->status & 0xfffffccc; // [1111 1100 1100 1100] f1, f0 bits = 0
195 }
196 }
196 #endif
197 #endif
197 break;
198 break;
198
199
199 //********
200 //********
200 // DEFAULT
201 // DEFAULT
201 default:
202 default:
202 break;
203 break;
203 }
204 }
204 }
205 }
205
206
206 rtems_isr waveforms_simulator_isr( rtems_vector_number vector )
207 rtems_isr waveforms_simulator_isr( rtems_vector_number vector )
207 {
208 {
208 /** This is the interrupt sub routine called by the waveform picker simulator.
209 /** This is the interrupt sub routine called by the waveform picker simulator.
209 *
210 *
210 * This ISR is for debug purpose only.
211 * This ISR is for debug purpose only.
211 *
212 *
212 */
213 */
213
214
214 unsigned char lfrMode;
215 unsigned char lfrMode;
215 lfrMode = (housekeeping_packet.lfr_status_word[0] & 0xf0) >> 4;
216 lfrMode = (housekeeping_packet.lfr_status_word[0] & 0xf0) >> 4;
216
217
217 switch(lfrMode) {
218 switch(lfrMode) {
218 case (LFR_MODE_STANDBY):
219 case (LFR_MODE_STANDBY):
219 break;
220 break;
220 case (LFR_MODE_NORMAL):
221 case (LFR_MODE_NORMAL):
221 if (rtems_event_send( Task_id[TASKID_WFRM], RTEMS_EVENT_MODE_NORMAL ) != RTEMS_SUCCESSFUL) {
222 if (rtems_event_send( Task_id[TASKID_WFRM], RTEMS_EVENT_MODE_NORMAL ) != RTEMS_SUCCESSFUL) {
222 rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_5 );
223 rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_5 );
223 }
224 }
224 break;
225 break;
225 case (LFR_MODE_BURST):
226 case (LFR_MODE_BURST):
226 break;
227 break;
227 case (LFR_MODE_SBM1):
228 case (LFR_MODE_SBM1):
228 break;
229 break;
229 case (LFR_MODE_SBM2):
230 case (LFR_MODE_SBM2):
230 break;
231 break;
231 }
232 }
232 }
233 }
233
234
234 rtems_task wfrm_task(rtems_task_argument argument) //used with the waveform picker VHDL IP
235 rtems_task wfrm_task(rtems_task_argument argument) //used with the waveform picker VHDL IP
235 {
236 {
236 /** This RTEMS task is dedicated to the transmission of snapshots of the NORMAL mode.
237 /** This RTEMS task is dedicated to the transmission of snapshots of the NORMAL mode.
237 *
238 *
238 * @param unused is the starting argument of the RTEMS task
239 * @param unused is the starting argument of the RTEMS task
239 *
240 *
240 * The following data packets are sent by this task:
241 * The following data packets are sent by this task:
241 * - TM_LFR_SCIENCE_NORMAL_SWF_F0
242 * - TM_LFR_SCIENCE_NORMAL_SWF_F0
242 * - TM_LFR_SCIENCE_NORMAL_SWF_F1
243 * - TM_LFR_SCIENCE_NORMAL_SWF_F1
243 * - TM_LFR_SCIENCE_NORMAL_SWF_F2
244 * - TM_LFR_SCIENCE_NORMAL_SWF_F2
244 *
245 *
245 */
246 */
246
247
247 rtems_event_set event_out;
248 rtems_event_set event_out;
248 rtems_id queue_id;
249 rtems_id queue_id;
249
250
250 init_header_snapshot_wf_table( SID_NORM_SWF_F0, headerSWF_F0 );
251 init_header_snapshot_wf_table( SID_NORM_SWF_F0, headerSWF_F0 );
251 init_header_snapshot_wf_table( SID_NORM_SWF_F1, headerSWF_F1 );
252 init_header_snapshot_wf_table( SID_NORM_SWF_F1, headerSWF_F1 );
252 init_header_snapshot_wf_table( SID_NORM_SWF_F2, headerSWF_F2 );
253 init_header_snapshot_wf_table( SID_NORM_SWF_F2, headerSWF_F2 );
253
254
254 init_waveforms();
255 init_waveforms();
255
256
256 queue_id = get_pkts_queue_id();
257 queue_id = get_pkts_queue_id();
257
258
258 BOOT_PRINTF("in WFRM ***\n")
259 BOOT_PRINTF("in WFRM ***\n")
259
260
260 while(1){
261 while(1){
261 // wait for an RTEMS_EVENT
262 // wait for an RTEMS_EVENT
262 rtems_event_receive(RTEMS_EVENT_MODE_NORMAL | RTEMS_EVENT_MODE_SBM1
263 rtems_event_receive(RTEMS_EVENT_MODE_NORMAL | RTEMS_EVENT_MODE_SBM1
263 | RTEMS_EVENT_MODE_SBM2 | RTEMS_EVENT_MODE_SBM2_WFRM,
264 | RTEMS_EVENT_MODE_SBM2 | RTEMS_EVENT_MODE_SBM2_WFRM,
264 RTEMS_WAIT | RTEMS_EVENT_ANY, RTEMS_NO_TIMEOUT, &event_out);
265 RTEMS_WAIT | RTEMS_EVENT_ANY, RTEMS_NO_TIMEOUT, &event_out);
265
266
266 if (event_out == RTEMS_EVENT_MODE_NORMAL)
267 if (event_out == RTEMS_EVENT_MODE_NORMAL)
267 {
268 {
268 send_waveform_SWF(wf_snap_f0, SID_NORM_SWF_F0, headerSWF_F0, queue_id);
269 send_waveform_SWF(wf_snap_f0, SID_NORM_SWF_F0, headerSWF_F0, queue_id);
269 send_waveform_SWF(wf_snap_f1, SID_NORM_SWF_F1, headerSWF_F1, queue_id);
270 send_waveform_SWF(wf_snap_f1, SID_NORM_SWF_F1, headerSWF_F1, queue_id);
270 send_waveform_SWF(wf_snap_f2, SID_NORM_SWF_F2, headerSWF_F2, queue_id);
271 send_waveform_SWF(wf_snap_f2, SID_NORM_SWF_F2, headerSWF_F2, queue_id);
271 #ifdef GSA
272 #ifdef GSA
272 new_waveform_picker_regs->status = new_waveform_picker_regs->status & 0xf888; // [1111 1000 1000 1000] f2, f1, f0 bits =0
273 new_waveform_picker_regs->status = new_waveform_picker_regs->status & 0xf888; // [1111 1000 1000 1000] f2, f1, f0 bits =0
273 #endif
274 #endif
274 }
275 }
275 else if (event_out == RTEMS_EVENT_MODE_SBM1)
276 else if (event_out == RTEMS_EVENT_MODE_SBM1)
276 {
277 {
277 send_waveform_SWF(wf_snap_f0, SID_NORM_SWF_F0, headerSWF_F0, queue_id);
278 send_waveform_SWF(wf_snap_f0, SID_NORM_SWF_F0, headerSWF_F0, queue_id);
278 send_waveform_SWF(wf_snap_f1_norm, SID_NORM_SWF_F1, headerSWF_F1, queue_id);
279 send_waveform_SWF(wf_snap_f1_norm, SID_NORM_SWF_F1, headerSWF_F1, queue_id);
279 send_waveform_SWF(wf_snap_f2, SID_NORM_SWF_F2, headerSWF_F2, queue_id);
280 send_waveform_SWF(wf_snap_f2, SID_NORM_SWF_F2, headerSWF_F2, queue_id);
280 #ifdef GSA
281 #ifdef GSA
281 new_waveform_picker_regs->status = new_waveform_picker_regs->status & 0xfffffaaa; // [1111 1010 1010 1010] f2, f0 bits = 0
282 new_waveform_picker_regs->status = new_waveform_picker_regs->status & 0xfffffaaa; // [1111 1010 1010 1010] f2, f0 bits = 0
282 #endif
283 #endif
283 }
284 }
284 else if (event_out == RTEMS_EVENT_MODE_SBM2)
285 else if (event_out == RTEMS_EVENT_MODE_SBM2)
285 {
286 {
286 send_waveform_SWF(wf_snap_f0, SID_NORM_SWF_F0, headerSWF_F0, queue_id);
287 send_waveform_SWF(wf_snap_f0, SID_NORM_SWF_F0, headerSWF_F0, queue_id);
287 send_waveform_SWF(wf_snap_f1, SID_NORM_SWF_F1, headerSWF_F1, queue_id);
288 send_waveform_SWF(wf_snap_f1, SID_NORM_SWF_F1, headerSWF_F1, queue_id);
288 #ifdef GSA
289 #ifdef GSA
289 new_waveform_picker_regs->status = new_waveform_picker_regs->status & 0xfffffccc; // [1111 1100 1100 1100] f1, f0 bits = 0
290 new_waveform_picker_regs->status = new_waveform_picker_regs->status & 0xfffffccc; // [1111 1100 1100 1100] f1, f0 bits = 0
290 #endif
291 #endif
291 }
292 }
292 else if (event_out == RTEMS_EVENT_MODE_SBM2_WFRM)
293 else if (event_out == RTEMS_EVENT_MODE_SBM2_WFRM)
293 {
294 {
294 send_waveform_SWF(wf_snap_f2_norm, SID_NORM_SWF_F2, headerSWF_F2, queue_id);
295 send_waveform_SWF(wf_snap_f2_norm, SID_NORM_SWF_F2, headerSWF_F2, queue_id);
295 }
296 }
296 else
297 else
297 {
298 {
298 PRINTF("in WFRM *** unexpected event")
299 PRINTF("in WFRM *** unexpected event")
299 }
300 }
300
301
301
302
302 #ifdef GSA
303 #ifdef GSA
303 // irq processed, reset the related register of the timer unit
304 // irq processed, reset the related register of the timer unit
304 gptimer_regs->timer[TIMER_WF_SIMULATOR].ctrl = gptimer_regs->timer[TIMER_WF_SIMULATOR].ctrl | 0x00000010;
305 gptimer_regs->timer[TIMER_WF_SIMULATOR].ctrl = gptimer_regs->timer[TIMER_WF_SIMULATOR].ctrl | 0x00000010;
305 // clear the interruption
306 // clear the interruption
306 LEON_Unmask_interrupt( IRQ_WF );
307 LEON_Unmask_interrupt( IRQ_WF );
307 #endif
308 #endif
308 }
309 }
309 }
310 }
310
311
311 rtems_task cwf3_task(rtems_task_argument argument) //used with the waveform picker VHDL IP
312 rtems_task cwf3_task(rtems_task_argument argument) //used with the waveform picker VHDL IP
312 {
313 {
313 /** This RTEMS task is dedicated to the transmission of continuous waveforms at f3.
314 /** This RTEMS task is dedicated to the transmission of continuous waveforms at f3.
314 *
315 *
315 * @param unused is the starting argument of the RTEMS task
316 * @param unused is the starting argument of the RTEMS task
316 *
317 *
317 * The following data packet is sent by this task:
318 * The following data packet is sent by this task:
318 * - TM_LFR_SCIENCE_NORMAL_CWF_F3
319 * - TM_LFR_SCIENCE_NORMAL_CWF_F3
319 *
320 *
320 */
321 */
321
322
322 rtems_event_set event_out;
323 rtems_event_set event_out;
323 rtems_id queue_id;
324 rtems_id queue_id;
324
325
325 init_header_continuous_wf_table( SID_NORM_CWF_F3, headerCWF_F3 );
326 init_header_continuous_wf_table( SID_NORM_CWF_F3, headerCWF_F3 );
326 init_header_continuous_wf3_light_table( headerCWF_F3_light );
327 init_header_continuous_wf3_light_table( headerCWF_F3_light );
327
328
328 queue_id = get_pkts_queue_id();
329 queue_id = get_pkts_queue_id();
329
330
330 BOOT_PRINTF("in CWF3 ***\n")
331 BOOT_PRINTF("in CWF3 ***\n")
331
332
332 while(1){
333 while(1){
333 // wait for an RTEMS_EVENT
334 // wait for an RTEMS_EVENT
334 rtems_event_receive( RTEMS_EVENT_0,
335 rtems_event_receive( RTEMS_EVENT_0,
335 RTEMS_WAIT | RTEMS_EVENT_ANY, RTEMS_NO_TIMEOUT, &event_out);
336 RTEMS_WAIT | RTEMS_EVENT_ANY, RTEMS_NO_TIMEOUT, &event_out);
336 PRINTF("send CWF F3 \n")
337 PRINTF("send CWF F3 \n")
337 #ifdef GSA
338 #ifdef GSA
338 #else
339 #else
339 if (new_waveform_picker_regs->addr_data_f3 == (int) wf_cont_f3) {
340 if (new_waveform_picker_regs->addr_data_f3 == (int) wf_cont_f3) {
340 send_waveform_CWF3_light( wf_cont_f3_bis, headerCWF_F3_light, queue_id );
341 send_waveform_CWF3_light( wf_cont_f3_bis, headerCWF_F3_light, queue_id );
341 }
342 }
342 else {
343 else {
343 send_waveform_CWF3_light( wf_cont_f3, headerCWF_F3_light, queue_id );
344 send_waveform_CWF3_light( wf_cont_f3, headerCWF_F3_light, queue_id );
344 }
345 }
345 #endif
346 #endif
346 }
347 }
347 }
348 }
348
349
349 rtems_task cwf2_task(rtems_task_argument argument) // ONLY USED IN BURST AND SBM2
350 rtems_task cwf2_task(rtems_task_argument argument) // ONLY USED IN BURST AND SBM2
350 {
351 {
351 /** This RTEMS task is dedicated to the transmission of continuous waveforms at f2.
352 /** This RTEMS task is dedicated to the transmission of continuous waveforms at f2.
352 *
353 *
353 * @param unused is the starting argument of the RTEMS task
354 * @param unused is the starting argument of the RTEMS task
354 *
355 *
355 * The following data packet is sent by this function:
356 * The following data packet is sent by this function:
356 * - TM_LFR_SCIENCE_BURST_CWF_F2
357 * - TM_LFR_SCIENCE_BURST_CWF_F2
357 * - TM_LFR_SCIENCE_SBM2_CWF_F2
358 * - TM_LFR_SCIENCE_SBM2_CWF_F2
358 *
359 *
359 */
360 */
360
361
361 rtems_event_set event_out;
362 rtems_event_set event_out;
362 rtems_id queue_id;
363 rtems_id queue_id;
363
364
364 init_header_continuous_wf_table( SID_BURST_CWF_F2, headerCWF_F2_BURST );
365 init_header_continuous_wf_table( SID_BURST_CWF_F2, headerCWF_F2_BURST );
365 init_header_continuous_wf_table( SID_SBM2_CWF_F2, headerCWF_F2_SBM2 );
366 init_header_continuous_wf_table( SID_SBM2_CWF_F2, headerCWF_F2_SBM2 );
366
367
367 queue_id = get_pkts_queue_id();
368 queue_id = get_pkts_queue_id();
368
369
369 BOOT_PRINTF("in CWF2 ***\n")
370 BOOT_PRINTF("in CWF2 ***\n")
370
371
371 while(1){
372 while(1){
372 // wait for an RTEMS_EVENT
373 // wait for an RTEMS_EVENT
373 rtems_event_receive( RTEMS_EVENT_MODE_BURST | RTEMS_EVENT_MODE_SBM2,
374 rtems_event_receive( RTEMS_EVENT_MODE_BURST | RTEMS_EVENT_MODE_SBM2,
374 RTEMS_WAIT | RTEMS_EVENT_ANY, RTEMS_NO_TIMEOUT, &event_out);
375 RTEMS_WAIT | RTEMS_EVENT_ANY, RTEMS_NO_TIMEOUT, &event_out);
375
376
376 if (event_out == RTEMS_EVENT_MODE_BURST)
377 if (event_out == RTEMS_EVENT_MODE_BURST)
377 {
378 {
378 // F2
379 // F2
379 #ifdef GSA
380 #ifdef GSA
380 #else
381 #else
381 if (new_waveform_picker_regs->addr_data_f2 == (int) wf_snap_f2) {
382 if (new_waveform_picker_regs->addr_data_f2 == (int) wf_snap_f2) {
382 send_waveform_CWF( wf_snap_f2_bis, SID_BURST_CWF_F2, headerCWF_F2_BURST, queue_id );
383 send_waveform_CWF( wf_snap_f2_bis, SID_BURST_CWF_F2, headerCWF_F2_BURST, queue_id );
383 }
384 }
384 else {
385 else {
385 send_waveform_CWF( wf_snap_f2, SID_BURST_CWF_F2, headerCWF_F2_BURST, queue_id );
386 send_waveform_CWF( wf_snap_f2, SID_BURST_CWF_F2, headerCWF_F2_BURST, queue_id );
386 }
387 }
387 #endif
388 #endif
388 }
389 }
389
390
390 else if (event_out == RTEMS_EVENT_MODE_SBM2)
391 else if (event_out == RTEMS_EVENT_MODE_SBM2)
391 {
392 {
392 #ifdef GSA
393 #ifdef GSA
393 #else
394 #else
394 if (doubleSendCWF2 == 1)
395 if (doubleSendCWF2 == 1)
395 {
396 {
396 doubleSendCWF2 = 0;
397 doubleSendCWF2 = 0;
397 send_waveform_CWF( wf_snap_f2_norm, SID_SBM2_CWF_F2, headerCWF_F2_SBM2, queue_id );
398 send_waveform_CWF( wf_snap_f2_norm, SID_SBM2_CWF_F2, headerCWF_F2_SBM2, queue_id );
398 }
399 }
399 else if (new_waveform_picker_regs->addr_data_f2 == (int) wf_snap_f2) {
400 else if (new_waveform_picker_regs->addr_data_f2 == (int) wf_snap_f2) {
400 send_waveform_CWF( wf_snap_f2_bis, SID_SBM2_CWF_F2, headerCWF_F2_SBM2, queue_id );
401 send_waveform_CWF( wf_snap_f2_bis, SID_SBM2_CWF_F2, headerCWF_F2_SBM2, queue_id );
401 }
402 }
402 else {
403 else {
403 send_waveform_CWF( wf_snap_f2, SID_SBM2_CWF_F2, headerCWF_F2_SBM2, queue_id );
404 send_waveform_CWF( wf_snap_f2, SID_SBM2_CWF_F2, headerCWF_F2_SBM2, queue_id );
404 }
405 }
405 param_local.local_sbm2_nb_cwf_sent ++;
406 param_local.local_sbm2_nb_cwf_sent ++;
406 #endif
407 #endif
407 }
408 }
408 else
409 else
409 {
410 {
410 PRINTF1("in CWF2 *** ERR mode = %d\n", lfrCurrentMode)
411 PRINTF1("in CWF2 *** ERR mode = %d\n", lfrCurrentMode)
411 }
412 }
412 }
413 }
413 }
414 }
414
415
415 rtems_task cwf1_task(rtems_task_argument argument) // ONLY USED IN SBM1
416 rtems_task cwf1_task(rtems_task_argument argument) // ONLY USED IN SBM1
416 {
417 {
417 /** This RTEMS task is dedicated to the transmission of continuous waveforms at f1.
418 /** This RTEMS task is dedicated to the transmission of continuous waveforms at f1.
418 *
419 *
419 * @param unused is the starting argument of the RTEMS task
420 * @param unused is the starting argument of the RTEMS task
420 *
421 *
421 * The following data packet is sent by this function:
422 * The following data packet is sent by this function:
422 * - TM_LFR_SCIENCE_SBM1_CWF_F1
423 * - TM_LFR_SCIENCE_SBM1_CWF_F1
423 *
424 *
424 */
425 */
425
426
426 rtems_event_set event_out;
427 rtems_event_set event_out;
427 rtems_id queue_id;
428 rtems_id queue_id;
428
429
429 init_header_continuous_wf_table( SID_SBM1_CWF_F1, headerCWF_F1 );
430 init_header_continuous_wf_table( SID_SBM1_CWF_F1, headerCWF_F1 );
430
431
431 queue_id = get_pkts_queue_id();
432 queue_id = get_pkts_queue_id();
432
433
433 BOOT_PRINTF("in CWF1 ***\n")
434 BOOT_PRINTF("in CWF1 ***\n")
434
435
435 while(1){
436 while(1){
436 // wait for an RTEMS_EVENT
437 // wait for an RTEMS_EVENT
437 rtems_event_receive( RTEMS_EVENT_MODE_SBM1,
438 rtems_event_receive( RTEMS_EVENT_MODE_SBM1,
438 RTEMS_WAIT | RTEMS_EVENT_ANY, RTEMS_NO_TIMEOUT, &event_out);
439 RTEMS_WAIT | RTEMS_EVENT_ANY, RTEMS_NO_TIMEOUT, &event_out);
439 if (event_out == RTEMS_EVENT_MODE_SBM1)
440 if (event_out == RTEMS_EVENT_MODE_SBM1)
440 {
441 {
441 #ifdef GSA
442 #ifdef GSA
442 #else
443 #else
443 if (doubleSendCWF1 == 1)
444 if (doubleSendCWF1 == 1)
444 {
445 {
445 doubleSendCWF1 = 0;
446 doubleSendCWF1 = 0;
446 send_waveform_CWF( wf_snap_f1_norm, SID_SBM1_CWF_F1, headerCWF_F1, queue_id );
447 send_waveform_CWF( wf_snap_f1_norm, SID_SBM1_CWF_F1, headerCWF_F1, queue_id );
447 }
448 }
448 else if (new_waveform_picker_regs->addr_data_f1 == (int) wf_snap_f1) {
449 else if (new_waveform_picker_regs->addr_data_f1 == (int) wf_snap_f1) {
449 send_waveform_CWF( wf_snap_f1_bis, SID_SBM1_CWF_F1, headerCWF_F1, queue_id );
450 send_waveform_CWF( wf_snap_f1_bis, SID_SBM1_CWF_F1, headerCWF_F1, queue_id );
450 }
451 }
451 else {
452 else {
452 send_waveform_CWF( wf_snap_f1, SID_SBM1_CWF_F1, headerCWF_F1, queue_id );
453 send_waveform_CWF( wf_snap_f1, SID_SBM1_CWF_F1, headerCWF_F1, queue_id );
453 }
454 }
454 param_local.local_sbm1_nb_cwf_sent ++;
455 param_local.local_sbm1_nb_cwf_sent ++;
455 #endif
456 #endif
456 }
457 }
457 else
458 else
458 {
459 {
459 PRINTF1("in CWF1 *** ERR mode = %d\n", lfrCurrentMode)
460 PRINTF1("in CWF1 *** ERR mode = %d\n", lfrCurrentMode)
460 }
461 }
461 }
462 }
462 }
463 }
463
464
464 //******************
465 //******************
465 // general functions
466 // general functions
466 void init_waveforms( void )
467 void init_waveforms( void )
467 {
468 {
468 int i = 0;
469 int i = 0;
469
470
470 for (i=0; i< NB_SAMPLES_PER_SNAPSHOT; i++)
471 for (i=0; i< NB_SAMPLES_PER_SNAPSHOT; i++)
471 {
472 {
472 // //***
473 // //***
473 // // F0
474 // // F0
474 // wf_snap_f0[ (i* NB_WORDS_SWF_BLK) + 0 + TIME_OFFSET ] = 0x88887777; //
475 // wf_snap_f0[ (i* NB_WORDS_SWF_BLK) + 0 + TIME_OFFSET ] = 0x88887777; //
475 // wf_snap_f0[ (i* NB_WORDS_SWF_BLK) + 1 + TIME_OFFSET ] = 0x22221111; //
476 // wf_snap_f0[ (i* NB_WORDS_SWF_BLK) + 1 + TIME_OFFSET ] = 0x22221111; //
476 // wf_snap_f0[ (i* NB_WORDS_SWF_BLK) + 2 + TIME_OFFSET ] = 0x44443333; //
477 // wf_snap_f0[ (i* NB_WORDS_SWF_BLK) + 2 + TIME_OFFSET ] = 0x44443333; //
477
478
478 // //***
479 // //***
479 // // F1
480 // // F1
480 // wf_snap_f1[ (i* NB_WORDS_SWF_BLK) + 0 + TIME_OFFSET ] = 0x22221111;
481 // wf_snap_f1[ (i* NB_WORDS_SWF_BLK) + 0 + TIME_OFFSET ] = 0x22221111;
481 // wf_snap_f1[ (i* NB_WORDS_SWF_BLK) + 1 + TIME_OFFSET ] = 0x44443333;
482 // wf_snap_f1[ (i* NB_WORDS_SWF_BLK) + 1 + TIME_OFFSET ] = 0x44443333;
482 // wf_snap_f1[ (i* NB_WORDS_SWF_BLK) + 2 + TIME_OFFSET ] = 0xaaaa0000;
483 // wf_snap_f1[ (i* NB_WORDS_SWF_BLK) + 2 + TIME_OFFSET ] = 0xaaaa0000;
483
484
484 // //***
485 // //***
485 // // F2
486 // // F2
486 // wf_snap_f2[ (i* NB_WORDS_SWF_BLK) + 0 + TIME_OFFSET ] = 0x44443333;
487 // wf_snap_f2[ (i* NB_WORDS_SWF_BLK) + 0 + TIME_OFFSET ] = 0x44443333;
487 // wf_snap_f2[ (i* NB_WORDS_SWF_BLK) + 1 + TIME_OFFSET ] = 0x22221111;
488 // wf_snap_f2[ (i* NB_WORDS_SWF_BLK) + 1 + TIME_OFFSET ] = 0x22221111;
488 // wf_snap_f2[ (i* NB_WORDS_SWF_BLK) + 2 + TIME_OFFSET ] = 0xaaaa0000;
489 // wf_snap_f2[ (i* NB_WORDS_SWF_BLK) + 2 + TIME_OFFSET ] = 0xaaaa0000;
489
490
490 //***
491 //***
491 // F0
492 // F0
492 wf_snap_f0[ (i* NB_WORDS_SWF_BLK) + 0 + TIME_OFFSET ] = 0x0; //
493 wf_snap_f0[ (i* NB_WORDS_SWF_BLK) + 0 + TIME_OFFSET ] = 0x0; //
493 wf_snap_f0[ (i* NB_WORDS_SWF_BLK) + 1 + TIME_OFFSET ] = 0x0; //
494 wf_snap_f0[ (i* NB_WORDS_SWF_BLK) + 1 + TIME_OFFSET ] = 0x0; //
494 wf_snap_f0[ (i* NB_WORDS_SWF_BLK) + 2 + TIME_OFFSET ] = 0x0; //
495 wf_snap_f0[ (i* NB_WORDS_SWF_BLK) + 2 + TIME_OFFSET ] = 0x0; //
495
496
496 //***
497 //***
497 // F1
498 // F1
498 wf_snap_f1[ (i* NB_WORDS_SWF_BLK) + 0 + TIME_OFFSET ] = 0x0;
499 wf_snap_f1[ (i* NB_WORDS_SWF_BLK) + 0 + TIME_OFFSET ] = 0x0;
499 wf_snap_f1[ (i* NB_WORDS_SWF_BLK) + 1 + TIME_OFFSET ] = 0x0;
500 wf_snap_f1[ (i* NB_WORDS_SWF_BLK) + 1 + TIME_OFFSET ] = 0x0;
500 wf_snap_f1[ (i* NB_WORDS_SWF_BLK) + 2 + TIME_OFFSET ] = 0x0;
501 wf_snap_f1[ (i* NB_WORDS_SWF_BLK) + 2 + TIME_OFFSET ] = 0x0;
501
502
502 //***
503 //***
503 // F2
504 // F2
504 wf_snap_f2[ (i* NB_WORDS_SWF_BLK) + 0 + TIME_OFFSET ] = 0x0;
505 wf_snap_f2[ (i* NB_WORDS_SWF_BLK) + 0 + TIME_OFFSET ] = 0x0;
505 wf_snap_f2[ (i* NB_WORDS_SWF_BLK) + 1 + TIME_OFFSET ] = 0x0;
506 wf_snap_f2[ (i* NB_WORDS_SWF_BLK) + 1 + TIME_OFFSET ] = 0x0;
506 wf_snap_f2[ (i* NB_WORDS_SWF_BLK) + 2 + TIME_OFFSET ] = 0x0;
507 wf_snap_f2[ (i* NB_WORDS_SWF_BLK) + 2 + TIME_OFFSET ] = 0x0;
507
508
508 //***
509 //***
509 // F3
510 // F3
510 //wf_cont_f3[ (i* NB_WORDS_SWF_BLK) + 0 ] = val1;
511 //wf_cont_f3[ (i* NB_WORDS_SWF_BLK) + 0 ] = val1;
511 //wf_cont_f3[ (i* NB_WORDS_SWF_BLK) + 1 ] = val2;
512 //wf_cont_f3[ (i* NB_WORDS_SWF_BLK) + 1 ] = val2;
512 //wf_cont_f3[ (i* NB_WORDS_SWF_BLK) + 2 ] = 0xaaaa0000;
513 //wf_cont_f3[ (i* NB_WORDS_SWF_BLK) + 2 ] = 0xaaaa0000;
513 }
514 }
514 }
515 }
515
516
516 int init_header_snapshot_wf_table( unsigned int sid, Header_TM_LFR_SCIENCE_SWF_t *headerSWF)
517 int init_header_snapshot_wf_table( unsigned int sid, Header_TM_LFR_SCIENCE_SWF_t *headerSWF)
517 {
518 {
518 unsigned char i;
519 unsigned char i;
519
520
520 for (i=0; i<7; i++)
521 for (i=0; i<7; i++)
521 {
522 {
522 headerSWF[ i ].targetLogicalAddress = CCSDS_DESTINATION_ID;
523 headerSWF[ i ].targetLogicalAddress = CCSDS_DESTINATION_ID;
523 headerSWF[ i ].protocolIdentifier = CCSDS_PROTOCOLE_ID;
524 headerSWF[ i ].protocolIdentifier = CCSDS_PROTOCOLE_ID;
524 headerSWF[ i ].reserved = DEFAULT_RESERVED;
525 headerSWF[ i ].reserved = DEFAULT_RESERVED;
525 headerSWF[ i ].userApplication = CCSDS_USER_APP;
526 headerSWF[ i ].userApplication = CCSDS_USER_APP;
526 headerSWF[ i ].packetID[0] = (unsigned char) (TM_PACKET_ID_SCIENCE_NORMAL_BURST >> 8);
527 headerSWF[ i ].packetID[0] = (unsigned char) (TM_PACKET_ID_SCIENCE_NORMAL_BURST >> 8);
527 headerSWF[ i ].packetID[1] = (unsigned char) (TM_PACKET_ID_SCIENCE_NORMAL_BURST);
528 headerSWF[ i ].packetID[1] = (unsigned char) (TM_PACKET_ID_SCIENCE_NORMAL_BURST);
528 if (i == 0)
529 if (i == 0)
529 {
530 {
530 headerSWF[ i ].packetSequenceControl[0] = TM_PACKET_SEQ_CTRL_FIRST;
531 headerSWF[ i ].packetSequenceControl[0] = TM_PACKET_SEQ_CTRL_FIRST;
531 headerSWF[ i ].packetLength[0] = (unsigned char) (TM_LEN_SCI_SWF_340 >> 8);
532 headerSWF[ i ].packetLength[0] = (unsigned char) (TM_LEN_SCI_SWF_340 >> 8);
532 headerSWF[ i ].packetLength[1] = (unsigned char) (TM_LEN_SCI_SWF_340 );
533 headerSWF[ i ].packetLength[1] = (unsigned char) (TM_LEN_SCI_SWF_340 );
533 headerSWF[ i ].blkNr[0] = (unsigned char) (BLK_NR_340 >> 8);
534 headerSWF[ i ].blkNr[0] = (unsigned char) (BLK_NR_340 >> 8);
534 headerSWF[ i ].blkNr[1] = (unsigned char) (BLK_NR_340 );
535 headerSWF[ i ].blkNr[1] = (unsigned char) (BLK_NR_340 );
535 }
536 }
536 else if (i == 6)
537 else if (i == 6)
537 {
538 {
538 headerSWF[ i ].packetSequenceControl[0] = TM_PACKET_SEQ_CTRL_LAST;
539 headerSWF[ i ].packetSequenceControl[0] = TM_PACKET_SEQ_CTRL_LAST;
539 headerSWF[ i ].packetLength[0] = (unsigned char) (TM_LEN_SCI_SWF_8 >> 8);
540 headerSWF[ i ].packetLength[0] = (unsigned char) (TM_LEN_SCI_SWF_8 >> 8);
540 headerSWF[ i ].packetLength[1] = (unsigned char) (TM_LEN_SCI_SWF_8 );
541 headerSWF[ i ].packetLength[1] = (unsigned char) (TM_LEN_SCI_SWF_8 );
541 headerSWF[ i ].blkNr[0] = (unsigned char) (BLK_NR_8 >> 8);
542 headerSWF[ i ].blkNr[0] = (unsigned char) (BLK_NR_8 >> 8);
542 headerSWF[ i ].blkNr[1] = (unsigned char) (BLK_NR_8 );
543 headerSWF[ i ].blkNr[1] = (unsigned char) (BLK_NR_8 );
543 }
544 }
544 else
545 else
545 {
546 {
546 headerSWF[ i ].packetSequenceControl[0] = TM_PACKET_SEQ_CTRL_CONTINUATION;
547 headerSWF[ i ].packetSequenceControl[0] = TM_PACKET_SEQ_CTRL_CONTINUATION;
547 headerSWF[ i ].packetLength[0] = (unsigned char) (TM_LEN_SCI_SWF_340 >> 8);
548 headerSWF[ i ].packetLength[0] = (unsigned char) (TM_LEN_SCI_SWF_340 >> 8);
548 headerSWF[ i ].packetLength[1] = (unsigned char) (TM_LEN_SCI_SWF_340 );
549 headerSWF[ i ].packetLength[1] = (unsigned char) (TM_LEN_SCI_SWF_340 );
549 headerSWF[ i ].blkNr[0] = (unsigned char) (BLK_NR_340 >> 8);
550 headerSWF[ i ].blkNr[0] = (unsigned char) (BLK_NR_340 >> 8);
550 headerSWF[ i ].blkNr[1] = (unsigned char) (BLK_NR_340 );
551 headerSWF[ i ].blkNr[1] = (unsigned char) (BLK_NR_340 );
551 }
552 }
552 headerSWF[ i ].packetSequenceControl[1] = TM_PACKET_SEQ_CNT_DEFAULT;
553 headerSWF[ i ].packetSequenceControl[1] = TM_PACKET_SEQ_CNT_DEFAULT;
553 headerSWF[ i ].pktCnt = DEFAULT_PKTCNT; // PKT_CNT
554 headerSWF[ i ].pktCnt = DEFAULT_PKTCNT; // PKT_CNT
554 headerSWF[ i ].pktNr = i+1; // PKT_NR
555 headerSWF[ i ].pktNr = i+1; // PKT_NR
555 // DATA FIELD HEADER
556 // DATA FIELD HEADER
556 headerSWF[ i ].spare1_pusVersion_spare2 = DEFAULT_SPARE1_PUSVERSION_SPARE2;
557 headerSWF[ i ].spare1_pusVersion_spare2 = DEFAULT_SPARE1_PUSVERSION_SPARE2;
557 headerSWF[ i ].serviceType = TM_TYPE_LFR_SCIENCE; // service type
558 headerSWF[ i ].serviceType = TM_TYPE_LFR_SCIENCE; // service type
558 headerSWF[ i ].serviceSubType = TM_SUBTYPE_LFR_SCIENCE; // service subtype
559 headerSWF[ i ].serviceSubType = TM_SUBTYPE_LFR_SCIENCE; // service subtype
559 headerSWF[ i ].destinationID = TM_DESTINATION_ID_GROUND;
560 headerSWF[ i ].destinationID = TM_DESTINATION_ID_GROUND;
560 // AUXILIARY DATA HEADER
561 // AUXILIARY DATA HEADER
561 headerSWF[ i ].sid = sid;
562 headerSWF[ i ].sid = sid;
562 headerSWF[ i ].hkBIA = DEFAULT_HKBIA;
563 headerSWF[ i ].hkBIA = DEFAULT_HKBIA;
563 headerSWF[ i ].time[0] = 0x00;
564 headerSWF[ i ].time[0] = 0x00;
564 headerSWF[ i ].time[0] = 0x00;
565 headerSWF[ i ].time[0] = 0x00;
565 headerSWF[ i ].time[0] = 0x00;
566 headerSWF[ i ].time[0] = 0x00;
566 headerSWF[ i ].time[0] = 0x00;
567 headerSWF[ i ].time[0] = 0x00;
567 headerSWF[ i ].time[0] = 0x00;
568 headerSWF[ i ].time[0] = 0x00;
568 headerSWF[ i ].time[0] = 0x00;
569 headerSWF[ i ].time[0] = 0x00;
569 }
570 }
570 return LFR_SUCCESSFUL;
571 return LFR_SUCCESSFUL;
571 }
572 }
572
573
573 int init_header_continuous_wf_table( unsigned int sid, Header_TM_LFR_SCIENCE_CWF_t *headerCWF )
574 int init_header_continuous_wf_table( unsigned int sid, Header_TM_LFR_SCIENCE_CWF_t *headerCWF )
574 {
575 {
575 unsigned int i;
576 unsigned int i;
576
577
577 for (i=0; i<7; i++)
578 for (i=0; i<7; i++)
578 {
579 {
579 headerCWF[ i ].targetLogicalAddress = CCSDS_DESTINATION_ID;
580 headerCWF[ i ].targetLogicalAddress = CCSDS_DESTINATION_ID;
580 headerCWF[ i ].protocolIdentifier = CCSDS_PROTOCOLE_ID;
581 headerCWF[ i ].protocolIdentifier = CCSDS_PROTOCOLE_ID;
581 headerCWF[ i ].reserved = DEFAULT_RESERVED;
582 headerCWF[ i ].reserved = DEFAULT_RESERVED;
582 headerCWF[ i ].userApplication = CCSDS_USER_APP;
583 headerCWF[ i ].userApplication = CCSDS_USER_APP;
583 if ( (sid == SID_SBM1_CWF_F1) || (sid == SID_SBM2_CWF_F2) )
584 if ( (sid == SID_SBM1_CWF_F1) || (sid == SID_SBM2_CWF_F2) )
584 {
585 {
585 headerCWF[ i ].packetID[0] = (unsigned char) (TM_PACKET_ID_SCIENCE_SBM1_SBM2 >> 8);
586 headerCWF[ i ].packetID[0] = (unsigned char) (TM_PACKET_ID_SCIENCE_SBM1_SBM2 >> 8);
586 headerCWF[ i ].packetID[1] = (unsigned char) (TM_PACKET_ID_SCIENCE_SBM1_SBM2);
587 headerCWF[ i ].packetID[1] = (unsigned char) (TM_PACKET_ID_SCIENCE_SBM1_SBM2);
587 }
588 }
588 else
589 else
589 {
590 {
590 headerCWF[ i ].packetID[0] = (unsigned char) (TM_PACKET_ID_SCIENCE_NORMAL_BURST >> 8);
591 headerCWF[ i ].packetID[0] = (unsigned char) (TM_PACKET_ID_SCIENCE_NORMAL_BURST >> 8);
591 headerCWF[ i ].packetID[1] = (unsigned char) (TM_PACKET_ID_SCIENCE_NORMAL_BURST);
592 headerCWF[ i ].packetID[1] = (unsigned char) (TM_PACKET_ID_SCIENCE_NORMAL_BURST);
592 }
593 }
593 if (i == 0)
594 if (i == 0)
594 {
595 {
595 headerCWF[ i ].packetSequenceControl[0] = TM_PACKET_SEQ_CTRL_FIRST;
596 headerCWF[ i ].packetSequenceControl[0] = TM_PACKET_SEQ_CTRL_FIRST;
596 headerCWF[ i ].packetLength[0] = (unsigned char) (TM_LEN_SCI_CWF_340 >> 8);
597 headerCWF[ i ].packetLength[0] = (unsigned char) (TM_LEN_SCI_CWF_340 >> 8);
597 headerCWF[ i ].packetLength[1] = (unsigned char) (TM_LEN_SCI_CWF_340 );
598 headerCWF[ i ].packetLength[1] = (unsigned char) (TM_LEN_SCI_CWF_340 );
598 headerCWF[ i ].blkNr[0] = (unsigned char) (BLK_NR_340 >> 8);
599 headerCWF[ i ].blkNr[0] = (unsigned char) (BLK_NR_340 >> 8);
599 headerCWF[ i ].blkNr[1] = (unsigned char) (BLK_NR_340 );
600 headerCWF[ i ].blkNr[1] = (unsigned char) (BLK_NR_340 );
600 }
601 }
601 else if (i == 6)
602 else if (i == 6)
602 {
603 {
603 headerCWF[ i ].packetSequenceControl[0] = TM_PACKET_SEQ_CTRL_LAST;
604 headerCWF[ i ].packetSequenceControl[0] = TM_PACKET_SEQ_CTRL_LAST;
604 headerCWF[ i ].packetLength[0] = (unsigned char) (TM_LEN_SCI_CWF_8 >> 8);
605 headerCWF[ i ].packetLength[0] = (unsigned char) (TM_LEN_SCI_CWF_8 >> 8);
605 headerCWF[ i ].packetLength[1] = (unsigned char) (TM_LEN_SCI_CWF_8 );
606 headerCWF[ i ].packetLength[1] = (unsigned char) (TM_LEN_SCI_CWF_8 );
606 headerCWF[ i ].blkNr[0] = (unsigned char) (BLK_NR_8 >> 8);
607 headerCWF[ i ].blkNr[0] = (unsigned char) (BLK_NR_8 >> 8);
607 headerCWF[ i ].blkNr[1] = (unsigned char) (BLK_NR_8 );
608 headerCWF[ i ].blkNr[1] = (unsigned char) (BLK_NR_8 );
608 }
609 }
609 else
610 else
610 {
611 {
611 headerCWF[ i ].packetSequenceControl[0] = TM_PACKET_SEQ_CTRL_CONTINUATION;
612 headerCWF[ i ].packetSequenceControl[0] = TM_PACKET_SEQ_CTRL_CONTINUATION;
612 headerCWF[ i ].packetLength[0] = (unsigned char) (TM_LEN_SCI_CWF_340 >> 8);
613 headerCWF[ i ].packetLength[0] = (unsigned char) (TM_LEN_SCI_CWF_340 >> 8);
613 headerCWF[ i ].packetLength[1] = (unsigned char) (TM_LEN_SCI_CWF_340 );
614 headerCWF[ i ].packetLength[1] = (unsigned char) (TM_LEN_SCI_CWF_340 );
614 headerCWF[ i ].blkNr[0] = (unsigned char) (BLK_NR_340 >> 8);
615 headerCWF[ i ].blkNr[0] = (unsigned char) (BLK_NR_340 >> 8);
615 headerCWF[ i ].blkNr[1] = (unsigned char) (BLK_NR_340 );
616 headerCWF[ i ].blkNr[1] = (unsigned char) (BLK_NR_340 );
616 }
617 }
617 headerCWF[ i ].packetSequenceControl[1] = TM_PACKET_SEQ_CNT_DEFAULT;
618 headerCWF[ i ].packetSequenceControl[1] = TM_PACKET_SEQ_CNT_DEFAULT;
618 // PKT_CNT
619 // PKT_CNT
619 // PKT_NR
620 // PKT_NR
620 // DATA FIELD HEADER
621 // DATA FIELD HEADER
621 headerCWF[ i ].spare1_pusVersion_spare2 = DEFAULT_SPARE1_PUSVERSION_SPARE2;
622 headerCWF[ i ].spare1_pusVersion_spare2 = DEFAULT_SPARE1_PUSVERSION_SPARE2;
622 headerCWF[ i ].serviceType = TM_TYPE_LFR_SCIENCE; // service type
623 headerCWF[ i ].serviceType = TM_TYPE_LFR_SCIENCE; // service type
623 headerCWF[ i ].serviceSubType = TM_SUBTYPE_LFR_SCIENCE; // service subtype
624 headerCWF[ i ].serviceSubType = TM_SUBTYPE_LFR_SCIENCE; // service subtype
624 headerCWF[ i ].destinationID = TM_DESTINATION_ID_GROUND;
625 headerCWF[ i ].destinationID = TM_DESTINATION_ID_GROUND;
625 // AUXILIARY DATA HEADER
626 // AUXILIARY DATA HEADER
626 headerCWF[ i ].sid = sid;
627 headerCWF[ i ].sid = sid;
627 headerCWF[ i ].hkBIA = DEFAULT_HKBIA;
628 headerCWF[ i ].hkBIA = DEFAULT_HKBIA;
628 headerCWF[ i ].time[0] = 0x00;
629 headerCWF[ i ].time[0] = 0x00;
629 headerCWF[ i ].time[0] = 0x00;
630 headerCWF[ i ].time[0] = 0x00;
630 headerCWF[ i ].time[0] = 0x00;
631 headerCWF[ i ].time[0] = 0x00;
631 headerCWF[ i ].time[0] = 0x00;
632 headerCWF[ i ].time[0] = 0x00;
632 headerCWF[ i ].time[0] = 0x00;
633 headerCWF[ i ].time[0] = 0x00;
633 headerCWF[ i ].time[0] = 0x00;
634 headerCWF[ i ].time[0] = 0x00;
634 }
635 }
635 return LFR_SUCCESSFUL;
636 return LFR_SUCCESSFUL;
636 }
637 }
637
638
638 int init_header_continuous_wf3_light_table( Header_TM_LFR_SCIENCE_CWF_t *headerCWF )
639 int init_header_continuous_wf3_light_table( Header_TM_LFR_SCIENCE_CWF_t *headerCWF )
639 {
640 {
640 unsigned int i;
641 unsigned int i;
641
642
642 for (i=0; i<7; i++)
643 for (i=0; i<7; i++)
643 {
644 {
644 headerCWF[ i ].targetLogicalAddress = CCSDS_DESTINATION_ID;
645 headerCWF[ i ].targetLogicalAddress = CCSDS_DESTINATION_ID;
645 headerCWF[ i ].protocolIdentifier = CCSDS_PROTOCOLE_ID;
646 headerCWF[ i ].protocolIdentifier = CCSDS_PROTOCOLE_ID;
646 headerCWF[ i ].reserved = DEFAULT_RESERVED;
647 headerCWF[ i ].reserved = DEFAULT_RESERVED;
647 headerCWF[ i ].userApplication = CCSDS_USER_APP;
648 headerCWF[ i ].userApplication = CCSDS_USER_APP;
648
649
649 headerCWF[ i ].packetID[0] = (unsigned char) (TM_PACKET_ID_SCIENCE_NORMAL_BURST >> 8);
650 headerCWF[ i ].packetID[0] = (unsigned char) (TM_PACKET_ID_SCIENCE_NORMAL_BURST >> 8);
650 headerCWF[ i ].packetID[1] = (unsigned char) (TM_PACKET_ID_SCIENCE_NORMAL_BURST);
651 headerCWF[ i ].packetID[1] = (unsigned char) (TM_PACKET_ID_SCIENCE_NORMAL_BURST);
651 if (i == 0)
652 if (i == 0)
652 {
653 {
653 headerCWF[ i ].packetSequenceControl[0] = TM_PACKET_SEQ_CTRL_FIRST;
654 headerCWF[ i ].packetSequenceControl[0] = TM_PACKET_SEQ_CTRL_FIRST;
654 headerCWF[ i ].packetLength[0] = (unsigned char) (TM_LEN_SCI_CWF3_LIGHT_340 >> 8);
655 headerCWF[ i ].packetLength[0] = (unsigned char) (TM_LEN_SCI_CWF3_LIGHT_340 >> 8);
655 headerCWF[ i ].packetLength[1] = (unsigned char) (TM_LEN_SCI_CWF3_LIGHT_340 );
656 headerCWF[ i ].packetLength[1] = (unsigned char) (TM_LEN_SCI_CWF3_LIGHT_340 );
656 headerCWF[ i ].blkNr[0] = (unsigned char) (BLK_NR_340 >> 8);
657 headerCWF[ i ].blkNr[0] = (unsigned char) (BLK_NR_340 >> 8);
657 headerCWF[ i ].blkNr[1] = (unsigned char) (BLK_NR_340 );
658 headerCWF[ i ].blkNr[1] = (unsigned char) (BLK_NR_340 );
658 }
659 }
659 else if (i == 6)
660 else if (i == 6)
660 {
661 {
661 headerCWF[ i ].packetSequenceControl[0] = TM_PACKET_SEQ_CTRL_LAST;
662 headerCWF[ i ].packetSequenceControl[0] = TM_PACKET_SEQ_CTRL_LAST;
662 headerCWF[ i ].packetLength[0] = (unsigned char) (TM_LEN_SCI_CWF3_LIGHT_8 >> 8);
663 headerCWF[ i ].packetLength[0] = (unsigned char) (TM_LEN_SCI_CWF3_LIGHT_8 >> 8);
663 headerCWF[ i ].packetLength[1] = (unsigned char) (TM_LEN_SCI_CWF3_LIGHT_8 );
664 headerCWF[ i ].packetLength[1] = (unsigned char) (TM_LEN_SCI_CWF3_LIGHT_8 );
664 headerCWF[ i ].blkNr[0] = (unsigned char) (BLK_NR_8 >> 8);
665 headerCWF[ i ].blkNr[0] = (unsigned char) (BLK_NR_8 >> 8);
665 headerCWF[ i ].blkNr[1] = (unsigned char) (BLK_NR_8 );
666 headerCWF[ i ].blkNr[1] = (unsigned char) (BLK_NR_8 );
666 }
667 }
667 else
668 else
668 {
669 {
669 headerCWF[ i ].packetSequenceControl[0] = TM_PACKET_SEQ_CTRL_CONTINUATION;
670 headerCWF[ i ].packetSequenceControl[0] = TM_PACKET_SEQ_CTRL_CONTINUATION;
670 headerCWF[ i ].packetLength[0] = (unsigned char) (TM_LEN_SCI_CWF3_LIGHT_340 >> 8);
671 headerCWF[ i ].packetLength[0] = (unsigned char) (TM_LEN_SCI_CWF3_LIGHT_340 >> 8);
671 headerCWF[ i ].packetLength[1] = (unsigned char) (TM_LEN_SCI_CWF3_LIGHT_340 );
672 headerCWF[ i ].packetLength[1] = (unsigned char) (TM_LEN_SCI_CWF3_LIGHT_340 );
672 headerCWF[ i ].blkNr[0] = (unsigned char) (BLK_NR_340 >> 8);
673 headerCWF[ i ].blkNr[0] = (unsigned char) (BLK_NR_340 >> 8);
673 headerCWF[ i ].blkNr[1] = (unsigned char) (BLK_NR_340 );
674 headerCWF[ i ].blkNr[1] = (unsigned char) (BLK_NR_340 );
674 }
675 }
675 headerCWF[ i ].packetSequenceControl[1] = TM_PACKET_SEQ_CNT_DEFAULT;
676 headerCWF[ i ].packetSequenceControl[1] = TM_PACKET_SEQ_CNT_DEFAULT;
676 // DATA FIELD HEADER
677 // DATA FIELD HEADER
677 headerCWF[ i ].spare1_pusVersion_spare2 = DEFAULT_SPARE1_PUSVERSION_SPARE2;
678 headerCWF[ i ].spare1_pusVersion_spare2 = DEFAULT_SPARE1_PUSVERSION_SPARE2;
678 headerCWF[ i ].serviceType = TM_TYPE_LFR_SCIENCE; // service type
679 headerCWF[ i ].serviceType = TM_TYPE_LFR_SCIENCE; // service type
679 headerCWF[ i ].serviceSubType = TM_SUBTYPE_LFR_SCIENCE; // service subtype
680 headerCWF[ i ].serviceSubType = TM_SUBTYPE_LFR_SCIENCE; // service subtype
680 headerCWF[ i ].destinationID = TM_DESTINATION_ID_GROUND;
681 headerCWF[ i ].destinationID = TM_DESTINATION_ID_GROUND;
681 // AUXILIARY DATA HEADER
682 // AUXILIARY DATA HEADER
682 headerCWF[ i ].sid = SID_NORM_CWF_F3;
683 headerCWF[ i ].sid = SID_NORM_CWF_F3;
683 headerCWF[ i ].hkBIA = DEFAULT_HKBIA;
684 headerCWF[ i ].hkBIA = DEFAULT_HKBIA;
684 headerCWF[ i ].time[0] = 0x00;
685 headerCWF[ i ].time[0] = 0x00;
685 headerCWF[ i ].time[0] = 0x00;
686 headerCWF[ i ].time[0] = 0x00;
686 headerCWF[ i ].time[0] = 0x00;
687 headerCWF[ i ].time[0] = 0x00;
687 headerCWF[ i ].time[0] = 0x00;
688 headerCWF[ i ].time[0] = 0x00;
688 headerCWF[ i ].time[0] = 0x00;
689 headerCWF[ i ].time[0] = 0x00;
689 headerCWF[ i ].time[0] = 0x00;
690 headerCWF[ i ].time[0] = 0x00;
690 }
691 }
691 return LFR_SUCCESSFUL;
692 return LFR_SUCCESSFUL;
692 }
693 }
693
694
694 void reset_waveforms( void )
695 void reset_waveforms( void )
695 {
696 {
696 int i = 0;
697 int i = 0;
697
698
698 for (i=0; i< NB_SAMPLES_PER_SNAPSHOT; i++)
699 for (i=0; i< NB_SAMPLES_PER_SNAPSHOT; i++)
699 {
700 {
700 wf_snap_f0[ (i* NB_WORDS_SWF_BLK) + 0 + TIME_OFFSET] = 0x10002000;
701 wf_snap_f0[ (i* NB_WORDS_SWF_BLK) + 0 + TIME_OFFSET] = 0x10002000;
701 wf_snap_f0[ (i* NB_WORDS_SWF_BLK) + 1 + TIME_OFFSET] = 0x20001000;
702 wf_snap_f0[ (i* NB_WORDS_SWF_BLK) + 1 + TIME_OFFSET] = 0x20001000;
702 wf_snap_f0[ (i* NB_WORDS_SWF_BLK) + 2 + TIME_OFFSET] = 0x40008000;
703 wf_snap_f0[ (i* NB_WORDS_SWF_BLK) + 2 + TIME_OFFSET] = 0x40008000;
703
704
704 //***
705 //***
705 // F1
706 // F1
706 wf_snap_f1[ (i* NB_WORDS_SWF_BLK) + 0 + TIME_OFFSET] = 0x1000f000;
707 wf_snap_f1[ (i* NB_WORDS_SWF_BLK) + 0 + TIME_OFFSET] = 0x1000f000;
707 wf_snap_f1[ (i* NB_WORDS_SWF_BLK) + 1 + TIME_OFFSET] = 0xf0001000;
708 wf_snap_f1[ (i* NB_WORDS_SWF_BLK) + 1 + TIME_OFFSET] = 0xf0001000;
708 wf_snap_f1[ (i* NB_WORDS_SWF_BLK) + 2 + TIME_OFFSET] = 0x40008000;
709 wf_snap_f1[ (i* NB_WORDS_SWF_BLK) + 2 + TIME_OFFSET] = 0x40008000;
709
710
710 //***
711 //***
711 // F2
712 // F2
712 wf_snap_f2[ (i* NB_WORDS_SWF_BLK) + 0 + TIME_OFFSET] = 0x40008000;
713 wf_snap_f2[ (i* NB_WORDS_SWF_BLK) + 0 + TIME_OFFSET] = 0x40008000;
713 wf_snap_f2[ (i* NB_WORDS_SWF_BLK) + 1 + TIME_OFFSET] = 0x20001000;
714 wf_snap_f2[ (i* NB_WORDS_SWF_BLK) + 1 + TIME_OFFSET] = 0x20001000;
714 wf_snap_f2[ (i* NB_WORDS_SWF_BLK) + 2 + TIME_OFFSET] = 0x10002000;
715 wf_snap_f2[ (i* NB_WORDS_SWF_BLK) + 2 + TIME_OFFSET] = 0x10002000;
715
716
716 //***
717 //***
717 // F3
718 // F3
718 /*wf_cont_f3[ i* NB_WORDS_SWF_BLK + 0 ] = build_value( i, i ); // v and 1
719 /*wf_cont_f3[ i* NB_WORDS_SWF_BLK + 0 ] = build_value( i, i ); // v and 1
719 wf_cont_f3[ i* NB_WORDS_SWF_BLK + 1 ] = build_value( i, i ); // e2 and b1
720 wf_cont_f3[ i* NB_WORDS_SWF_BLK + 1 ] = build_value( i, i ); // e2 and b1
720 wf_cont_f3[ i* NB_WORDS_SWF_BLK + 2 ] = build_value( i, i ); // b2 and b3*/
721 wf_cont_f3[ i* NB_WORDS_SWF_BLK + 2 ] = build_value( i, i ); // b2 and b3*/
721 }
722 }
722 }
723 }
723
724
724 int send_waveform_SWF( volatile int *waveform, unsigned int sid,
725 int send_waveform_SWF( volatile int *waveform, unsigned int sid,
725 Header_TM_LFR_SCIENCE_SWF_t *headerSWF, rtems_id queue_id )
726 Header_TM_LFR_SCIENCE_SWF_t *headerSWF, rtems_id queue_id )
726 {
727 {
727 /** This function sends SWF CCSDS packets (F2, F1 or F0).
728 /** This function sends SWF CCSDS packets (F2, F1 or F0).
728 *
729 *
729 * @param waveform points to the buffer containing the data that will be send.
730 * @param waveform points to the buffer containing the data that will be send.
730 * @param sid is the source identifier of the data that will be sent.
731 * @param sid is the source identifier of the data that will be sent.
731 * @param headerSWF points to a table of headers that have been prepared for the data transmission.
732 * @param headerSWF points to a table of headers that have been prepared for the data transmission.
732 * @param queue_id is the id of the rtems queue to which spw_ioctl_pkt_send structures will be send. The structures
733 * @param queue_id is the id of the rtems queue to which spw_ioctl_pkt_send structures will be send. The structures
733 * contain information to setup the transmission of the data packets.
734 * contain information to setup the transmission of the data packets.
734 *
735 *
735 * One group of 2048 samples is sent as 7 consecutive packets, 6 packets containing 340 blocks and 8 packets containing 8 blocks.
736 * One group of 2048 samples is sent as 7 consecutive packets, 6 packets containing 340 blocks and 8 packets containing 8 blocks.
736 *
737 *
737 */
738 */
738
739
739 unsigned int i;
740 unsigned int i;
740 int ret;
741 int ret;
741 rtems_status_code status;
742 rtems_status_code status;
742 spw_ioctl_pkt_send spw_ioctl_send_SWF;
743 spw_ioctl_pkt_send spw_ioctl_send_SWF;
743
744
744 spw_ioctl_send_SWF.hlen = TM_HEADER_LEN + 4 + 12; // + 4 is for the protocole extra header, + 12 is for the auxiliary header
745 spw_ioctl_send_SWF.hlen = TM_HEADER_LEN + 4 + 12; // + 4 is for the protocole extra header, + 12 is for the auxiliary header
745 spw_ioctl_send_SWF.options = 0;
746 spw_ioctl_send_SWF.options = 0;
746
747
747 ret = LFR_DEFAULT;
748 ret = LFR_DEFAULT;
748
749
749 for (i=0; i<7; i++) // send waveform
750 for (i=0; i<7; i++) // send waveform
750 {
751 {
751 spw_ioctl_send_SWF.data = (char*) &waveform[ (i * 340 * NB_WORDS_SWF_BLK) + TIME_OFFSET ];
752 spw_ioctl_send_SWF.data = (char*) &waveform[ (i * 340 * NB_WORDS_SWF_BLK) + TIME_OFFSET ];
752 spw_ioctl_send_SWF.hdr = (char*) &headerSWF[ i ];
753 spw_ioctl_send_SWF.hdr = (char*) &headerSWF[ i ];
753 // BUILD THE DATA
754 // BUILD THE DATA
754 if (i==6) {
755 if (i==6) {
755 spw_ioctl_send_SWF.dlen = 8 * NB_BYTES_SWF_BLK;
756 spw_ioctl_send_SWF.dlen = 8 * NB_BYTES_SWF_BLK;
756 }
757 }
757 else {
758 else {
758 spw_ioctl_send_SWF.dlen = 340 * NB_BYTES_SWF_BLK;
759 spw_ioctl_send_SWF.dlen = 340 * NB_BYTES_SWF_BLK;
759 }
760 }
760 // SET PACKET SEQUENCE COUNTER
761 // SET PACKET SEQUENCE COUNTER
761 increment_seq_counter_source_id( headerSWF[ i ].packetSequenceControl, sid );
762 increment_seq_counter_source_id( headerSWF[ i ].packetSequenceControl, sid );
762 // SET PACKET TIME
763 // SET PACKET TIME
763 headerSWF[ i ].acquisitionTime[0] = (unsigned char) (time_management_regs->coarse_time>>24);
764 headerSWF[ i ].acquisitionTime[0] = (unsigned char) (time_management_regs->coarse_time>>24);
764 headerSWF[ i ].acquisitionTime[1] = (unsigned char) (time_management_regs->coarse_time>>16);
765 headerSWF[ i ].acquisitionTime[1] = (unsigned char) (time_management_regs->coarse_time>>16);
765 headerSWF[ i ].acquisitionTime[2] = (unsigned char) (time_management_regs->coarse_time>>8);
766 headerSWF[ i ].acquisitionTime[2] = (unsigned char) (time_management_regs->coarse_time>>8);
766 headerSWF[ i ].acquisitionTime[3] = (unsigned char) (time_management_regs->coarse_time);
767 headerSWF[ i ].acquisitionTime[3] = (unsigned char) (time_management_regs->coarse_time);
767 headerSWF[ i ].acquisitionTime[4] = (unsigned char) (time_management_regs->fine_time>>8);
768 headerSWF[ i ].acquisitionTime[4] = (unsigned char) (time_management_regs->fine_time>>8);
768 headerSWF[ i ].acquisitionTime[5] = (unsigned char) (time_management_regs->fine_time);
769 headerSWF[ i ].acquisitionTime[5] = (unsigned char) (time_management_regs->fine_time);
769 headerSWF[ i ].time[0] = (unsigned char) (time_management_regs->coarse_time>>24);
770 headerSWF[ i ].time[0] = (unsigned char) (time_management_regs->coarse_time>>24);
770 headerSWF[ i ].time[1] = (unsigned char) (time_management_regs->coarse_time>>16);
771 headerSWF[ i ].time[1] = (unsigned char) (time_management_regs->coarse_time>>16);
771 headerSWF[ i ].time[2] = (unsigned char) (time_management_regs->coarse_time>>8);
772 headerSWF[ i ].time[2] = (unsigned char) (time_management_regs->coarse_time>>8);
772 headerSWF[ i ].time[3] = (unsigned char) (time_management_regs->coarse_time);
773 headerSWF[ i ].time[3] = (unsigned char) (time_management_regs->coarse_time);
773 headerSWF[ i ].time[4] = (unsigned char) (time_management_regs->fine_time>>8);
774 headerSWF[ i ].time[4] = (unsigned char) (time_management_regs->fine_time>>8);
774 headerSWF[ i ].time[5] = (unsigned char) (time_management_regs->fine_time);
775 headerSWF[ i ].time[5] = (unsigned char) (time_management_regs->fine_time);
775 // SEND PACKET
776 // SEND PACKET
776 status = rtems_message_queue_send( queue_id, &spw_ioctl_send_SWF, ACTION_MSG_SPW_IOCTL_SEND_SIZE);
777 status = rtems_message_queue_send( queue_id, &spw_ioctl_send_SWF, ACTION_MSG_SPW_IOCTL_SEND_SIZE);
777 if (status != RTEMS_SUCCESSFUL) {
778 if (status != RTEMS_SUCCESSFUL) {
778 printf("%d-%d, ERR %d\n", sid, i, (int) status);
779 printf("%d-%d, ERR %d\n", sid, i, (int) status);
779 ret = LFR_DEFAULT;
780 ret = LFR_DEFAULT;
780 }
781 }
781 rtems_task_wake_after(TIME_BETWEEN_TWO_SWF_PACKETS); // 300 ms between each packet => 7 * 3 = 21 packets => 6.3 seconds
782 rtems_task_wake_after(TIME_BETWEEN_TWO_SWF_PACKETS); // 300 ms between each packet => 7 * 3 = 21 packets => 6.3 seconds
782 }
783 }
783
784
784 return ret;
785 return ret;
785 }
786 }
786
787
787 int send_waveform_CWF(volatile int *waveform, unsigned int sid,
788 int send_waveform_CWF(volatile int *waveform, unsigned int sid,
788 Header_TM_LFR_SCIENCE_CWF_t *headerCWF, rtems_id queue_id)
789 Header_TM_LFR_SCIENCE_CWF_t *headerCWF, rtems_id queue_id)
789 {
790 {
790 /** This function sends CWF CCSDS packets (F2, F1 or F0).
791 /** This function sends CWF CCSDS packets (F2, F1 or F0).
791 *
792 *
792 * @param waveform points to the buffer containing the data that will be send.
793 * @param waveform points to the buffer containing the data that will be send.
793 * @param sid is the source identifier of the data that will be sent.
794 * @param sid is the source identifier of the data that will be sent.
794 * @param headerCWF points to a table of headers that have been prepared for the data transmission.
795 * @param headerCWF points to a table of headers that have been prepared for the data transmission.
795 * @param queue_id is the id of the rtems queue to which spw_ioctl_pkt_send structures will be send. The structures
796 * @param queue_id is the id of the rtems queue to which spw_ioctl_pkt_send structures will be send. The structures
796 * contain information to setup the transmission of the data packets.
797 * contain information to setup the transmission of the data packets.
797 *
798 *
798 * One group of 2048 samples is sent as 7 consecutive packets, 6 packets containing 340 blocks and 8 packets containing 8 blocks.
799 * One group of 2048 samples is sent as 7 consecutive packets, 6 packets containing 340 blocks and 8 packets containing 8 blocks.
799 *
800 *
800 */
801 */
801
802
802 unsigned int i;
803 unsigned int i;
803 int ret;
804 int ret;
804 rtems_status_code status;
805 rtems_status_code status;
805 spw_ioctl_pkt_send spw_ioctl_send_CWF;
806 spw_ioctl_pkt_send spw_ioctl_send_CWF;
806
807
807 spw_ioctl_send_CWF.hlen = TM_HEADER_LEN + 4 + 10; // + 4 is for the protocole extra header, + 10 is for the auxiliary header
808 spw_ioctl_send_CWF.hlen = TM_HEADER_LEN + 4 + 10; // + 4 is for the protocole extra header, + 10 is for the auxiliary header
808 spw_ioctl_send_CWF.options = 0;
809 spw_ioctl_send_CWF.options = 0;
809
810
810 ret = LFR_DEFAULT;
811 ret = LFR_DEFAULT;
811
812
812 for (i=0; i<7; i++) // send waveform
813 for (i=0; i<7; i++) // send waveform
813 {
814 {
814 int coarseTime = 0x00;
815 int coarseTime = 0x00;
815 int fineTime = 0x00;
816 int fineTime = 0x00;
816 spw_ioctl_send_CWF.data = (char*) &waveform[ (i * 340 * NB_WORDS_SWF_BLK) ];
817 spw_ioctl_send_CWF.data = (char*) &waveform[ (i * 340 * NB_WORDS_SWF_BLK) ];
817 spw_ioctl_send_CWF.hdr = (char*) &headerCWF[ i ];
818 spw_ioctl_send_CWF.hdr = (char*) &headerCWF[ i ];
818 // BUILD THE DATA
819 // BUILD THE DATA
819 if (i==6) {
820 if (i==6) {
820 spw_ioctl_send_CWF.dlen = 8 * NB_BYTES_SWF_BLK;
821 spw_ioctl_send_CWF.dlen = 8 * NB_BYTES_SWF_BLK;
821 }
822 }
822 else {
823 else {
823 spw_ioctl_send_CWF.dlen = 340 * NB_BYTES_SWF_BLK;
824 spw_ioctl_send_CWF.dlen = 340 * NB_BYTES_SWF_BLK;
824 }
825 }
825 // SET PACKET SEQUENCE COUNTER
826 // SET PACKET SEQUENCE COUNTER
826 increment_seq_counter_source_id( headerCWF[ i ].packetSequenceControl, sid );
827 increment_seq_counter_source_id( headerCWF[ i ].packetSequenceControl, sid );
827 // SET PACKET TIME
828 // SET PACKET TIME
828 coarseTime = time_management_regs->coarse_time;
829 coarseTime = time_management_regs->coarse_time;
829 fineTime = time_management_regs->fine_time;
830 fineTime = time_management_regs->fine_time;
830 headerCWF[ i ].acquisitionTime[0] = (unsigned char) (coarseTime>>24);
831 headerCWF[ i ].acquisitionTime[0] = (unsigned char) (coarseTime>>24);
831 headerCWF[ i ].acquisitionTime[1] = (unsigned char) (coarseTime>>16);
832 headerCWF[ i ].acquisitionTime[1] = (unsigned char) (coarseTime>>16);
832 headerCWF[ i ].acquisitionTime[2] = (unsigned char) (coarseTime>>8);
833 headerCWF[ i ].acquisitionTime[2] = (unsigned char) (coarseTime>>8);
833 headerCWF[ i ].acquisitionTime[3] = (unsigned char) (coarseTime);
834 headerCWF[ i ].acquisitionTime[3] = (unsigned char) (coarseTime);
834 headerCWF[ i ].acquisitionTime[4] = (unsigned char) (fineTime>>8);
835 headerCWF[ i ].acquisitionTime[4] = (unsigned char) (fineTime>>8);
835 headerCWF[ i ].acquisitionTime[5] = (unsigned char) (fineTime);
836 headerCWF[ i ].acquisitionTime[5] = (unsigned char) (fineTime);
836 headerCWF[ i ].time[0] = (unsigned char) (coarseTime>>24);
837 headerCWF[ i ].time[0] = (unsigned char) (coarseTime>>24);
837 headerCWF[ i ].time[1] = (unsigned char) (coarseTime>>16);
838 headerCWF[ i ].time[1] = (unsigned char) (coarseTime>>16);
838 headerCWF[ i ].time[2] = (unsigned char) (coarseTime>>8);
839 headerCWF[ i ].time[2] = (unsigned char) (coarseTime>>8);
839 headerCWF[ i ].time[3] = (unsigned char) (coarseTime);
840 headerCWF[ i ].time[3] = (unsigned char) (coarseTime);
840 headerCWF[ i ].time[4] = (unsigned char) (fineTime>>8);
841 headerCWF[ i ].time[4] = (unsigned char) (fineTime>>8);
841 headerCWF[ i ].time[5] = (unsigned char) (fineTime);
842 headerCWF[ i ].time[5] = (unsigned char) (fineTime);
842 // SEND PACKET
843 // SEND PACKET
843 if (sid == SID_NORM_CWF_F3)
844 if (sid == SID_NORM_CWF_F3)
844 {
845 {
845 status = rtems_message_queue_send( queue_id, &spw_ioctl_send_CWF, sizeof(spw_ioctl_send_CWF));
846 status = rtems_message_queue_send( queue_id, &spw_ioctl_send_CWF, sizeof(spw_ioctl_send_CWF));
846 if (status != RTEMS_SUCCESSFUL) {
847 if (status != RTEMS_SUCCESSFUL) {
847 printf("%d-%d, ERR %d\n", sid, i, (int) status);
848 printf("%d-%d, ERR %d\n", sid, i, (int) status);
848 ret = LFR_DEFAULT;
849 ret = LFR_DEFAULT;
849 }
850 }
850 rtems_task_wake_after(TIME_BETWEEN_TWO_CWF3_PACKETS);
851 rtems_task_wake_after(TIME_BETWEEN_TWO_CWF3_PACKETS);
851 }
852 }
852 else
853 else
853 {
854 {
854 status = rtems_message_queue_send( queue_id, &spw_ioctl_send_CWF, sizeof(spw_ioctl_send_CWF));
855 status = rtems_message_queue_send( queue_id, &spw_ioctl_send_CWF, sizeof(spw_ioctl_send_CWF));
855 if (status != RTEMS_SUCCESSFUL) {
856 if (status != RTEMS_SUCCESSFUL) {
856 printf("%d-%d, ERR %d\n", sid, i, (int) status);
857 printf("%d-%d, ERR %d\n", sid, i, (int) status);
857 ret = LFR_DEFAULT;
858 ret = LFR_DEFAULT;
858 }
859 }
859 }
860 }
860 }
861 }
861
862
862 return ret;
863 return ret;
863 }
864 }
864
865
865 int send_waveform_CWF3_light(volatile int *waveform, Header_TM_LFR_SCIENCE_CWF_t *headerCWF, rtems_id queue_id)
866 int send_waveform_CWF3_light(volatile int *waveform, Header_TM_LFR_SCIENCE_CWF_t *headerCWF, rtems_id queue_id)
866 {
867 {
867 /** This function sends CWF_F3 CCSDS packets without the b1, b2 and b3 data.
868 /** This function sends CWF_F3 CCSDS packets without the b1, b2 and b3 data.
868 *
869 *
869 * @param waveform points to the buffer containing the data that will be send.
870 * @param waveform points to the buffer containing the data that will be send.
870 * @param headerCWF points to a table of headers that have been prepared for the data transmission.
871 * @param headerCWF points to a table of headers that have been prepared for the data transmission.
871 * @param queue_id is the id of the rtems queue to which spw_ioctl_pkt_send structures will be send. The structures
872 * @param queue_id is the id of the rtems queue to which spw_ioctl_pkt_send structures will be send. The structures
872 * contain information to setup the transmission of the data packets.
873 * contain information to setup the transmission of the data packets.
873 *
874 *
874 * By default, CWF_F3 packet are send without the b1, b2 and b3 data. This function rebuilds a data buffer
875 * By default, CWF_F3 packet are send without the b1, b2 and b3 data. This function rebuilds a data buffer
875 * from the incoming data and sends it in 7 packets, 6 containing 340 blocks and 1 one containing 8 blocks.
876 * from the incoming data and sends it in 7 packets, 6 containing 340 blocks and 1 one containing 8 blocks.
876 *
877 *
877 */
878 */
878
879
879 unsigned int i;
880 unsigned int i;
880 int ret;
881 int ret;
881 rtems_status_code status;
882 rtems_status_code status;
882 spw_ioctl_pkt_send spw_ioctl_send_CWF;
883 spw_ioctl_pkt_send spw_ioctl_send_CWF;
883 char *sample;
884 char *sample;
884
885
885 spw_ioctl_send_CWF.hlen = TM_HEADER_LEN + 4 + 10; // + 4 is for the protocole extra header, + 10 is for the auxiliary header
886 spw_ioctl_send_CWF.hlen = TM_HEADER_LEN + 4 + 10; // + 4 is for the protocole extra header, + 10 is for the auxiliary header
886 spw_ioctl_send_CWF.options = 0;
887 spw_ioctl_send_CWF.options = 0;
887
888
888 ret = LFR_DEFAULT;
889 ret = LFR_DEFAULT;
889
890
890 //**********************
891 //**********************
891 // BUILD CWF3_light DATA
892 // BUILD CWF3_light DATA
892 for ( i=0; i< 2048; i++)
893 for ( i=0; i< 2048; i++)
893 {
894 {
894 sample = (char*) &waveform[ i * NB_WORDS_SWF_BLK ];
895 sample = (char*) &waveform[ i * NB_WORDS_SWF_BLK ];
895 wf_cont_f3_light[ (i * NB_BYTES_CWF3_LIGHT_BLK) ] = sample[ 0 ];
896 wf_cont_f3_light[ (i * NB_BYTES_CWF3_LIGHT_BLK) ] = sample[ 0 ];
896 wf_cont_f3_light[ (i * NB_BYTES_CWF3_LIGHT_BLK) + 1 ] = sample[ 1 ];
897 wf_cont_f3_light[ (i * NB_BYTES_CWF3_LIGHT_BLK) + 1 ] = sample[ 1 ];
897 wf_cont_f3_light[ (i * NB_BYTES_CWF3_LIGHT_BLK) + 2 ] = sample[ 2 ];
898 wf_cont_f3_light[ (i * NB_BYTES_CWF3_LIGHT_BLK) + 2 ] = sample[ 2 ];
898 wf_cont_f3_light[ (i * NB_BYTES_CWF3_LIGHT_BLK) + 3 ] = sample[ 3 ];
899 wf_cont_f3_light[ (i * NB_BYTES_CWF3_LIGHT_BLK) + 3 ] = sample[ 3 ];
899 wf_cont_f3_light[ (i * NB_BYTES_CWF3_LIGHT_BLK) + 4 ] = sample[ 4 ];
900 wf_cont_f3_light[ (i * NB_BYTES_CWF3_LIGHT_BLK) + 4 ] = sample[ 4 ];
900 wf_cont_f3_light[ (i * NB_BYTES_CWF3_LIGHT_BLK) + 5 ] = sample[ 5 ];
901 wf_cont_f3_light[ (i * NB_BYTES_CWF3_LIGHT_BLK) + 5 ] = sample[ 5 ];
901 }
902 }
902
903
903 //*********************
904 //*********************
904 // SEND CWF3_light DATA
905 // SEND CWF3_light DATA
905
906
906 for (i=0; i<7; i++) // send waveform
907 for (i=0; i<7; i++) // send waveform
907 {
908 {
908 int coarseTime = 0x00;
909 int coarseTime = 0x00;
909 int fineTime = 0x00;
910 int fineTime = 0x00;
910 spw_ioctl_send_CWF.data = (char*) &wf_cont_f3_light[ (i * 340 * NB_BYTES_CWF3_LIGHT_BLK) ];
911 spw_ioctl_send_CWF.data = (char*) &wf_cont_f3_light[ (i * 340 * NB_BYTES_CWF3_LIGHT_BLK) ];
911 spw_ioctl_send_CWF.hdr = (char*) &headerCWF[ i ];
912 spw_ioctl_send_CWF.hdr = (char*) &headerCWF[ i ];
912 // BUILD THE DATA
913 // BUILD THE DATA
913 if ( i == WFRM_INDEX_OF_LAST_PACKET ) {
914 if ( i == WFRM_INDEX_OF_LAST_PACKET ) {
914 spw_ioctl_send_CWF.dlen = 8 * NB_BYTES_CWF3_LIGHT_BLK;
915 spw_ioctl_send_CWF.dlen = 8 * NB_BYTES_CWF3_LIGHT_BLK;
915 }
916 }
916 else {
917 else {
917 spw_ioctl_send_CWF.dlen = 340 * NB_BYTES_CWF3_LIGHT_BLK;
918 spw_ioctl_send_CWF.dlen = 340 * NB_BYTES_CWF3_LIGHT_BLK;
918 }
919 }
919 // SET PACKET SEQUENCE COUNTER
920 // SET PACKET SEQUENCE COUNTER
920 increment_seq_counter_source_id( headerCWF[ i ].packetSequenceControl, SID_NORM_CWF_F3 );
921 increment_seq_counter_source_id( headerCWF[ i ].packetSequenceControl, SID_NORM_CWF_F3 );
921 // SET PACKET TIME
922 // SET PACKET TIME
922 coarseTime = time_management_regs->coarse_time;
923 coarseTime = time_management_regs->coarse_time;
923 fineTime = time_management_regs->fine_time;
924 fineTime = time_management_regs->fine_time;
924 headerCWF[ i ].acquisitionTime[0] = (unsigned char) (coarseTime>>24);
925 headerCWF[ i ].acquisitionTime[0] = (unsigned char) (coarseTime>>24);
925 headerCWF[ i ].acquisitionTime[1] = (unsigned char) (coarseTime>>16);
926 headerCWF[ i ].acquisitionTime[1] = (unsigned char) (coarseTime>>16);
926 headerCWF[ i ].acquisitionTime[2] = (unsigned char) (coarseTime>>8);
927 headerCWF[ i ].acquisitionTime[2] = (unsigned char) (coarseTime>>8);
927 headerCWF[ i ].acquisitionTime[3] = (unsigned char) (coarseTime);
928 headerCWF[ i ].acquisitionTime[3] = (unsigned char) (coarseTime);
928 headerCWF[ i ].acquisitionTime[4] = (unsigned char) (fineTime>>8);
929 headerCWF[ i ].acquisitionTime[4] = (unsigned char) (fineTime>>8);
929 headerCWF[ i ].acquisitionTime[5] = (unsigned char) (fineTime);
930 headerCWF[ i ].acquisitionTime[5] = (unsigned char) (fineTime);
930 headerCWF[ i ].time[0] = (unsigned char) (coarseTime>>24);
931 headerCWF[ i ].time[0] = (unsigned char) (coarseTime>>24);
931 headerCWF[ i ].time[1] = (unsigned char) (coarseTime>>16);
932 headerCWF[ i ].time[1] = (unsigned char) (coarseTime>>16);
932 headerCWF[ i ].time[2] = (unsigned char) (coarseTime>>8);
933 headerCWF[ i ].time[2] = (unsigned char) (coarseTime>>8);
933 headerCWF[ i ].time[3] = (unsigned char) (coarseTime);
934 headerCWF[ i ].time[3] = (unsigned char) (coarseTime);
934 headerCWF[ i ].time[4] = (unsigned char) (fineTime>>8);
935 headerCWF[ i ].time[4] = (unsigned char) (fineTime>>8);
935 headerCWF[ i ].time[5] = (unsigned char) (fineTime);
936 headerCWF[ i ].time[5] = (unsigned char) (fineTime);
936 // SEND PACKET
937 // SEND PACKET
937 status = rtems_message_queue_send( queue_id, &spw_ioctl_send_CWF, sizeof(spw_ioctl_send_CWF));
938 status = rtems_message_queue_send( queue_id, &spw_ioctl_send_CWF, sizeof(spw_ioctl_send_CWF));
938 if (status != RTEMS_SUCCESSFUL) {
939 if (status != RTEMS_SUCCESSFUL) {
939 printf("%d-%d, ERR %d\n", SID_NORM_CWF_F3, i, (int) status);
940 printf("%d-%d, ERR %d\n", SID_NORM_CWF_F3, i, (int) status);
940 ret = LFR_DEFAULT;
941 ret = LFR_DEFAULT;
941 }
942 }
942 rtems_task_wake_after(TIME_BETWEEN_TWO_CWF3_PACKETS);
943 rtems_task_wake_after(TIME_BETWEEN_TWO_CWF3_PACKETS);
943 }
944 }
944
945
945 return ret;
946 return ret;
946 }
947 }
947
948
948
949
949 //**************
950 //**************
950 // wfp registers
951 // wfp registers
951 void set_wfp_data_shaping()
952 void set_wfp_data_shaping()
952 {
953 {
953 /** This function sets the data_shaping register of the waveform picker module.
954 /** This function sets the data_shaping register of the waveform picker module.
954 *
955 *
955 * The value is read from one field of the parameter_dump_packet structure:\n
956 * The value is read from one field of the parameter_dump_packet structure:\n
956 * bw_sp0_sp1_r0_r1
957 * bw_sp0_sp1_r0_r1
957 *
958 *
958 */
959 */
959
960
960 unsigned char data_shaping;
961 unsigned char data_shaping;
961
962
962 // get the parameters for the data shaping [BW SP0 SP1 R0 R1] in sy_lfr_common1 and configure the register
963 // get the parameters for the data shaping [BW SP0 SP1 R0 R1] in sy_lfr_common1 and configure the register
963 // waveform picker : [R1 R0 SP1 SP0 BW]
964 // waveform picker : [R1 R0 SP1 SP0 BW]
964
965
965 data_shaping = parameter_dump_packet.bw_sp0_sp1_r0_r1;
966 data_shaping = parameter_dump_packet.bw_sp0_sp1_r0_r1;
966
967
967 #ifdef GSA
968 #ifdef GSA
968 #else
969 #else
969 new_waveform_picker_regs->data_shaping =
970 new_waveform_picker_regs->data_shaping =
970 ( (data_shaping & 0x10) >> 4 ) // BW
971 ( (data_shaping & 0x10) >> 4 ) // BW
971 + ( (data_shaping & 0x08) >> 2 ) // SP0
972 + ( (data_shaping & 0x08) >> 2 ) // SP0
972 + ( (data_shaping & 0x04) ) // SP1
973 + ( (data_shaping & 0x04) ) // SP1
973 + ( (data_shaping & 0x02) << 2 ) // R0
974 + ( (data_shaping & 0x02) << 2 ) // R0
974 + ( (data_shaping & 0x01) << 4 ); // R1
975 + ( (data_shaping & 0x01) << 4 ); // R1
975 #endif
976 #endif
976 }
977 }
977
978
978 char set_wfp_delta_snapshot()
979 char set_wfp_delta_snapshot()
979 {
980 {
980 /** This function sets the delta_snapshot register of the waveform picker module.
981 /** This function sets the delta_snapshot register of the waveform picker module.
981 *
982 *
982 * The value is read from two (unsigned char) of the parameter_dump_packet structure:
983 * The value is read from two (unsigned char) of the parameter_dump_packet structure:
983 * - sy_lfr_n_swf_p[0]
984 * - sy_lfr_n_swf_p[0]
984 * - sy_lfr_n_swf_p[1]
985 * - sy_lfr_n_swf_p[1]
985 *
986 *
986 */
987 */
987
988
988 char ret;
989 char ret;
989 unsigned int delta_snapshot;
990 unsigned int delta_snapshot;
990 unsigned int aux;
991 unsigned int aux;
991
992
992 aux = 0;
993 aux = 0;
993 ret = LFR_DEFAULT;
994 ret = LFR_DEFAULT;
994
995
995 delta_snapshot = parameter_dump_packet.sy_lfr_n_swf_p[0]*256
996 delta_snapshot = parameter_dump_packet.sy_lfr_n_swf_p[0]*256
996 + parameter_dump_packet.sy_lfr_n_swf_p[1];
997 + parameter_dump_packet.sy_lfr_n_swf_p[1];
997
998
998 #ifdef GSA
999 #ifdef GSA
999 #else
1000 #else
1000 if ( delta_snapshot < MIN_DELTA_SNAPSHOT )
1001 if ( delta_snapshot < MIN_DELTA_SNAPSHOT )
1001 {
1002 {
1002 aux = MIN_DELTA_SNAPSHOT;
1003 aux = MIN_DELTA_SNAPSHOT;
1003 ret = LFR_DEFAULT;
1004 ret = LFR_DEFAULT;
1004 }
1005 }
1005 else
1006 else
1006 {
1007 {
1007 aux = delta_snapshot ;
1008 aux = delta_snapshot ;
1008 ret = LFR_SUCCESSFUL;
1009 ret = LFR_SUCCESSFUL;
1009 }
1010 }
1010 new_waveform_picker_regs->delta_snapshot = aux - 1; // max 2 bytes
1011 new_waveform_picker_regs->delta_snapshot = aux - 1; // max 2 bytes
1011 #endif
1012 #endif
1012
1013
1013 return ret;
1014 return ret;
1014 }
1015 }
1015
1016
1016 void set_wfp_burst_enable_register( unsigned char mode)
1017 void set_wfp_burst_enable_register( unsigned char mode)
1017 {
1018 {
1018 /** This function sets the waveform picker burst_enable register depending on the mode.
1019 /** This function sets the waveform picker burst_enable register depending on the mode.
1019 *
1020 *
1020 * @param mode is the LFR mode to launch.
1021 * @param mode is the LFR mode to launch.
1021 *
1022 *
1022 * The burst bits shall be before the enable bits.
1023 * The burst bits shall be before the enable bits.
1023 *
1024 *
1024 */
1025 */
1025
1026
1026 #ifdef GSA
1027 #ifdef GSA
1027 #else
1028 #else
1028 // [0000 0000] burst f2, f1, f0 enable f3 f2 f1 f0
1029 // [0000 0000] burst f2, f1, f0 enable f3 f2 f1 f0
1029 // the burst bits shall be set first, before the enable bits
1030 // the burst bits shall be set first, before the enable bits
1030 switch(mode) {
1031 switch(mode) {
1031 case(LFR_MODE_NORMAL):
1032 case(LFR_MODE_NORMAL):
1032 new_waveform_picker_regs->run_burst_enable = 0x00; // [0000 0000] no burst enable
1033 new_waveform_picker_regs->run_burst_enable = 0x00; // [0000 0000] no burst enable
1033 // new_waveform_picker_regs->run_burst_enable = 0x0f; // [0000 1111] enable f3 f2 f1 f0
1034 // new_waveform_picker_regs->run_burst_enable = 0x0f; // [0000 1111] enable f3 f2 f1 f0
1034 new_waveform_picker_regs->run_burst_enable = 0x07; // [0000 0111] enable f2 f1 f0
1035 // new_waveform_picker_regs->run_burst_enable = 0x07; // [0000 0111] enable f2 f1 f0
1036 new_waveform_picker_regs->run_burst_enable = 0x01; // [0000 0111] enable f0
1035 break;
1037 break;
1036 case(LFR_MODE_BURST):
1038 case(LFR_MODE_BURST):
1037 new_waveform_picker_regs->run_burst_enable = 0x40; // [0100 0000] f2 burst enabled
1039 new_waveform_picker_regs->run_burst_enable = 0x40; // [0100 0000] f2 burst enabled
1038 new_waveform_picker_regs->run_burst_enable = new_waveform_picker_regs->run_burst_enable | 0x04; // [0100] enable f2
1040 new_waveform_picker_regs->run_burst_enable = new_waveform_picker_regs->run_burst_enable | 0x04; // [0100] enable f2
1039 break;
1041 break;
1040 case(LFR_MODE_SBM1):
1042 case(LFR_MODE_SBM1):
1041 new_waveform_picker_regs->run_burst_enable = 0x20; // [0010 0000] f1 burst enabled
1043 new_waveform_picker_regs->run_burst_enable = 0x20; // [0010 0000] f1 burst enabled
1042 new_waveform_picker_regs->run_burst_enable = new_waveform_picker_regs->run_burst_enable | 0x0f; // [1111] enable f3 f2 f1 f0
1044 new_waveform_picker_regs->run_burst_enable = new_waveform_picker_regs->run_burst_enable | 0x0f; // [1111] enable f3 f2 f1 f0
1043 break;
1045 break;
1044 case(LFR_MODE_SBM2):
1046 case(LFR_MODE_SBM2):
1045 new_waveform_picker_regs->run_burst_enable = 0x40; // [0100 0000] f2 burst enabled
1047 new_waveform_picker_regs->run_burst_enable = 0x40; // [0100 0000] f2 burst enabled
1046 new_waveform_picker_regs->run_burst_enable = new_waveform_picker_regs->run_burst_enable | 0x0f; // [1111] enable f3 f2 f1 f0
1048 new_waveform_picker_regs->run_burst_enable = new_waveform_picker_regs->run_burst_enable | 0x0f; // [1111] enable f3 f2 f1 f0
1047 break;
1049 break;
1048 default:
1050 default:
1049 new_waveform_picker_regs->run_burst_enable = 0x00; // [0000 0000] no burst enabled, no waveform enabled
1051 new_waveform_picker_regs->run_burst_enable = 0x00; // [0000 0000] no burst enabled, no waveform enabled
1050 break;
1052 break;
1051 }
1053 }
1052 #endif
1054 #endif
1053 }
1055 }
1054
1056
1055 void reset_wfp_run_burst_enable()
1057 void reset_wfp_run_burst_enable()
1056 {
1058 {
1057 /** This function resets the waveform picker burst_enable register.
1059 /** This function resets the waveform picker burst_enable register.
1058 *
1060 *
1059 * The burst bits [f2 f1 f0] and the enable bits [f3 f2 f1 f0] are set to 0.
1061 * The burst bits [f2 f1 f0] and the enable bits [f3 f2 f1 f0] are set to 0.
1060 *
1062 *
1061 */
1063 */
1062
1064
1063 #ifdef GSA
1065 #ifdef GSA
1064 #else
1066 #else
1065 new_waveform_picker_regs->run_burst_enable = 0x00; // burst f2, f1, f0 enable f3, f2, f1, f0
1067 new_waveform_picker_regs->run_burst_enable = 0x00; // burst f2, f1, f0 enable f3, f2, f1, f0
1066 #endif
1068 #endif
1067 }
1069 }
1068
1070
1069 void reset_wfp_status()
1071 void reset_wfp_status()
1070 {
1072 {
1071 /** This function resets the waveform picker status register.
1073 /** This function resets the waveform picker status register.
1072 *
1074 *
1073 * All status bits are set to 0 [new_err full_err full].
1075 * All status bits are set to 0 [new_err full_err full].
1074 *
1076 *
1075 */
1077 */
1076
1078
1077 #ifdef GSA
1079 #ifdef GSA
1078 #else
1080 #else
1079 new_waveform_picker_regs->status = 0x00; // burst f2, f1, f0 enable f3, f2, f1, f0
1081 new_waveform_picker_regs->status = 0x00; // burst f2, f1, f0 enable f3, f2, f1, f0
1080 #endif
1082 #endif
1081 }
1083 }
1082
1084
1083 void reset_new_waveform_picker_regs()
1085 void reset_new_waveform_picker_regs()
1084 {
1086 {
1085 /** This function resets the waveform picker module registers.
1087 /** This function resets the waveform picker module registers.
1086 *
1088 *
1087 * The registers affected by this function are located at the following offset addresses:
1089 * The registers affected by this function are located at the following offset addresses:
1088 * - 0x00 data_shaping
1090 * - 0x00 data_shaping
1089 * - 0x04 run_burst_enable
1091 * - 0x04 run_burst_enable
1090 * - 0x08 addr_data_f0
1092 * - 0x08 addr_data_f0
1091 * - 0x0C addr_data_f1
1093 * - 0x0C addr_data_f1
1092 * - 0x10 addr_data_f2
1094 * - 0x10 addr_data_f2
1093 * - 0x14 addr_data_f3
1095 * - 0x14 addr_data_f3
1094 * - 0x18 status
1096 * - 0x18 status
1095 * - 0x1C delta_snapshot
1097 * - 0x1C delta_snapshot
1096 * - 0x20 delta_f0
1098 * - 0x20 delta_f0
1097 * - 0x24 delta_f0_2
1099 * - 0x24 delta_f0_2
1098 * - 0x28 delta_f1
1100 * - 0x28 delta_f1
1099 * - 0x2c delta_f2
1101 * - 0x2c delta_f2
1100 * - 0x30 nb_data_by_buffer
1102 * - 0x30 nb_data_by_buffer
1101 * - 0x34 nb_snapshot_param
1103 * - 0x34 nb_snapshot_param
1102 * - 0x38 start_date
1104 * - 0x38 start_date
1103 * - 0x3c nb_word_in_buffer
1105 * - 0x3c nb_word_in_buffer
1104 *
1106 *
1105 */
1107 */
1106
1108
1107 new_waveform_picker_regs->data_shaping = 0x01; // 0x00 *** R1 R0 SP1 SP0 BW
1109 new_waveform_picker_regs->data_shaping = 0x01; // 0x00 *** R1 R0 SP1 SP0 BW
1108 new_waveform_picker_regs->run_burst_enable = 0x00; // 0x04 *** [run *** burst f2, f1, f0 *** enable f3, f2, f1, f0 ]
1110 new_waveform_picker_regs->run_burst_enable = 0x00; // 0x04 *** [run *** burst f2, f1, f0 *** enable f3, f2, f1, f0 ]
1109 new_waveform_picker_regs->addr_data_f0 = (int) (wf_snap_f0); // 0x08
1111 new_waveform_picker_regs->addr_data_f0 = (int) (wf_snap_f0); // 0x08
1110 new_waveform_picker_regs->addr_data_f1 = (int) (wf_snap_f1); // 0x0c
1112 new_waveform_picker_regs->addr_data_f1 = (int) (wf_snap_f1); // 0x0c
1111 new_waveform_picker_regs->addr_data_f2 = (int) (wf_snap_f2); // 0x10
1113 new_waveform_picker_regs->addr_data_f2 = (int) (wf_snap_f2); // 0x10
1112 new_waveform_picker_regs->addr_data_f3 = (int) (wf_cont_f3); // 0x14
1114 new_waveform_picker_regs->addr_data_f3 = (int) (wf_cont_f3); // 0x14
1113 new_waveform_picker_regs->status = 0x00; // 0x18
1115 new_waveform_picker_regs->status = 0x00; // 0x18
1114 // new_waveform_picker_regs->delta_snapshot = 0x12800; // 0x1c 296 * 256 = 75776
1116 // new_waveform_picker_regs->delta_snapshot = 0x12800; // 0x1c 296 * 256 = 75776
1115 new_waveform_picker_regs->delta_snapshot = 0x1000; // 0x1c 16 * 256 = 4096
1117 new_waveform_picker_regs->delta_snapshot = 0x1000; // 0x1c 16 * 256 = 4096
1116 new_waveform_picker_regs->delta_f0 = 0x3f5; // 0x20 *** 1013
1118 new_waveform_picker_regs->delta_f0 = 0x3f5; // 0x20 *** 1013
1117 new_waveform_picker_regs->delta_f0_2 = 0x7; // 0x24 *** 7 [7 bits]
1119 new_waveform_picker_regs->delta_f0_2 = 0x7; // 0x24 *** 7 [7 bits]
1118 new_waveform_picker_regs->delta_f1 = 0x3c0; // 0x28 *** 960
1120 new_waveform_picker_regs->delta_f1 = 0x3c0; // 0x28 *** 960
1119 // new_waveform_picker_regs->delta_f2 = 0x12200; // 0x2c *** 74240
1121 // new_waveform_picker_regs->delta_f2 = 0x12200; // 0x2c *** 74240
1120 new_waveform_picker_regs->delta_f2 = 0xc00; // 0x2c *** 12 * 256 = 3072
1122 new_waveform_picker_regs->delta_f2 = 0xc00; // 0x2c *** 12 * 256 = 3072
1121 new_waveform_picker_regs->nb_data_by_buffer = 0x7ff; // 0x30 *** 2048 -1
1123 new_waveform_picker_regs->nb_data_by_buffer = 0x7ff; // 0x30 *** 2048 -1
1122 new_waveform_picker_regs->snapshot_param = 0x800; // 0x34 *** 2048
1124 new_waveform_picker_regs->snapshot_param = 0x800; // 0x34 *** 2048
1123 new_waveform_picker_regs->start_date = 0x00; // 0x38
1125 new_waveform_picker_regs->start_date = 0x00; // 0x38
1124 new_waveform_picker_regs->nb_word_in_buffer = 0x1802; // 0x3c *** 2048 * 3 + 2 = 6146
1126 new_waveform_picker_regs->nb_word_in_buffer = 0x1802; // 0x3c *** 2048 * 3 + 2 = 6146
1125 }
1127 }
1126
1128
1127 //*****************
1129 //*****************
1128 // local parameters
1130 // local parameters
1129 void set_local_sbm1_nb_cwf_max()
1131 void set_local_sbm1_nb_cwf_max()
1130 {
1132 {
1131 /** This function sets the value of the sbm1_nb_cwf_max local parameter.
1133 /** This function sets the value of the sbm1_nb_cwf_max local parameter.
1132 *
1134 *
1133 * The sbm1_nb_cwf_max parameter counts the number of CWF_F1 records that have been sent.\n
1135 * The sbm1_nb_cwf_max parameter counts the number of CWF_F1 records that have been sent.\n
1134 * This parameter is used to send CWF_F1 data as normal data when the SBM1 is active.\n\n
1136 * This parameter is used to send CWF_F1 data as normal data when the SBM1 is active.\n\n
1135 * (2 snapshots of 2048 points per seconds) * (period of the NORM snashots) - 8 s (duration of the f2 snapshot)
1137 * (2 snapshots of 2048 points per seconds) * (period of the NORM snashots) - 8 s (duration of the f2 snapshot)
1136 *
1138 *
1137 */
1139 */
1138 param_local.local_sbm1_nb_cwf_max = 2 *
1140 param_local.local_sbm1_nb_cwf_max = 2 *
1139 (parameter_dump_packet.sy_lfr_n_swf_p[0] * 256
1141 (parameter_dump_packet.sy_lfr_n_swf_p[0] * 256
1140 + parameter_dump_packet.sy_lfr_n_swf_p[1]) - 8; // 16 CWF1 parts during 1 SWF2
1142 + parameter_dump_packet.sy_lfr_n_swf_p[1]) - 8; // 16 CWF1 parts during 1 SWF2
1141 }
1143 }
1142
1144
1143 void set_local_sbm2_nb_cwf_max()
1145 void set_local_sbm2_nb_cwf_max()
1144 {
1146 {
1145 /** This function sets the value of the sbm1_nb_cwf_max local parameter.
1147 /** This function sets the value of the sbm1_nb_cwf_max local parameter.
1146 *
1148 *
1147 * The sbm1_nb_cwf_max parameter counts the number of CWF_F1 records that have been sent.\n
1149 * The sbm1_nb_cwf_max parameter counts the number of CWF_F1 records that have been sent.\n
1148 * This parameter is used to send CWF_F2 data as normal data when the SBM2 is active.\n\n
1150 * This parameter is used to send CWF_F2 data as normal data when the SBM2 is active.\n\n
1149 * (period of the NORM snashots) / (8 seconds per snapshot at f2 = 256 Hz)
1151 * (period of the NORM snashots) / (8 seconds per snapshot at f2 = 256 Hz)
1150 *
1152 *
1151 */
1153 */
1152
1154
1153 param_local.local_sbm2_nb_cwf_max = (parameter_dump_packet.sy_lfr_n_swf_p[0] * 256
1155 param_local.local_sbm2_nb_cwf_max = (parameter_dump_packet.sy_lfr_n_swf_p[0] * 256
1154 + parameter_dump_packet.sy_lfr_n_swf_p[1]) / 8;
1156 + parameter_dump_packet.sy_lfr_n_swf_p[1]) / 8;
1155 }
1157 }
1156
1158
1157 void set_local_nb_interrupt_f0_MAX()
1159 void set_local_nb_interrupt_f0_MAX()
1158 {
1160 {
1159 /** This function sets the value of the nb_interrupt_f0_MAX local parameter.
1161 /** This function sets the value of the nb_interrupt_f0_MAX local parameter.
1160 *
1162 *
1161 * This parameter is used for the SM validation only.\n
1163 * This parameter is used for the SM validation only.\n
1162 * The software waits param_local.local_nb_interrupt_f0_MAX interruptions from the spectral matrices
1164 * The software waits param_local.local_nb_interrupt_f0_MAX interruptions from the spectral matrices
1163 * module before launching a basic processing.
1165 * module before launching a basic processing.
1164 *
1166 *
1165 */
1167 */
1166
1168
1167 param_local.local_nb_interrupt_f0_MAX = ( (parameter_dump_packet.sy_lfr_n_asm_p[0]) * 256
1169 param_local.local_nb_interrupt_f0_MAX = ( (parameter_dump_packet.sy_lfr_n_asm_p[0]) * 256
1168 + parameter_dump_packet.sy_lfr_n_asm_p[1] ) * 100;
1170 + parameter_dump_packet.sy_lfr_n_asm_p[1] ) * 100;
1169 }
1171 }
1170
1172
1171 void reset_local_sbm1_nb_cwf_sent()
1173 void reset_local_sbm1_nb_cwf_sent()
1172 {
1174 {
1173 /** This function resets the value of the sbm1_nb_cwf_sent local parameter.
1175 /** This function resets the value of the sbm1_nb_cwf_sent local parameter.
1174 *
1176 *
1175 * The sbm1_nb_cwf_sent parameter counts the number of CWF_F1 records that have been sent.\n
1177 * The sbm1_nb_cwf_sent parameter counts the number of CWF_F1 records that have been sent.\n
1176 * This parameter is used to send CWF_F1 data as normal data when the SBM1 is active.
1178 * This parameter is used to send CWF_F1 data as normal data when the SBM1 is active.
1177 *
1179 *
1178 */
1180 */
1179
1181
1180 param_local.local_sbm1_nb_cwf_sent = 0;
1182 param_local.local_sbm1_nb_cwf_sent = 0;
1181 }
1183 }
1182
1184
1183 void reset_local_sbm2_nb_cwf_sent()
1185 void reset_local_sbm2_nb_cwf_sent()
1184 {
1186 {
1185 /** This function resets the value of the sbm2_nb_cwf_sent local parameter.
1187 /** This function resets the value of the sbm2_nb_cwf_sent local parameter.
1186 *
1188 *
1187 * The sbm2_nb_cwf_sent parameter counts the number of CWF_F2 records that have been sent.\n
1189 * The sbm2_nb_cwf_sent parameter counts the number of CWF_F2 records that have been sent.\n
1188 * This parameter is used to send CWF_F2 data as normal data when the SBM2 mode is active.
1190 * This parameter is used to send CWF_F2 data as normal data when the SBM2 mode is active.
1189 *
1191 *
1190 */
1192 */
1191
1193
1192 param_local.local_sbm2_nb_cwf_sent = 0;
1194 param_local.local_sbm2_nb_cwf_sent = 0;
1193 }
1195 }
1194
1196
1195 rtems_id get_pkts_queue_id( void )
1197 rtems_id get_pkts_queue_id( void )
1196 {
1198 {
1197 rtems_id queue_id;
1199 rtems_id queue_id;
1198 rtems_status_code status;
1200 rtems_status_code status;
1199 rtems_name queue_send_name;
1201 rtems_name queue_send_name;
1200
1202
1201 queue_send_name = rtems_build_name( 'Q', '_', 'S', 'D' );
1203 queue_send_name = rtems_build_name( 'Q', '_', 'S', 'D' );
1202
1204
1203 status = rtems_message_queue_ident( queue_send_name, 0, &queue_id );
1205 status = rtems_message_queue_ident( queue_send_name, 0, &queue_id );
1204 if (status != RTEMS_SUCCESSFUL)
1206 if (status != RTEMS_SUCCESSFUL)
1205 {
1207 {
1206 PRINTF1("in get_pkts_queue_id *** ERR %d\n", status)
1208 PRINTF1("in get_pkts_queue_id *** ERR %d\n", status)
1207 }
1209 }
1208 return queue_id;
1210 return queue_id;
1209 }
1211 }
1210
1212
1211 void increment_seq_counter_source_id( unsigned char *packet_sequence_control, unsigned int sid )
1213 void increment_seq_counter_source_id( unsigned char *packet_sequence_control, unsigned int sid )
1212 {
1214 {
1213 unsigned short *sequence_cnt;
1215 unsigned short *sequence_cnt;
1214 unsigned short segmentation_grouping_flag;
1216 unsigned short segmentation_grouping_flag;
1215 unsigned short new_packet_sequence_control;
1217 unsigned short new_packet_sequence_control;
1216
1218
1217 if ( (sid ==SID_NORM_SWF_F0) || (sid ==SID_NORM_SWF_F1) || (sid ==SID_NORM_SWF_F2)
1219 if ( (sid ==SID_NORM_SWF_F0) || (sid ==SID_NORM_SWF_F1) || (sid ==SID_NORM_SWF_F2)
1218 || (sid ==SID_NORM_CWF_F3) || (sid ==SID_BURST_CWF_F2) )
1220 || (sid ==SID_NORM_CWF_F3) || (sid ==SID_BURST_CWF_F2) )
1219 {
1221 {
1220 sequence_cnt = &sequenceCounters_SCIENCE_NORMAL_BURST;
1222 sequence_cnt = &sequenceCounters_SCIENCE_NORMAL_BURST;
1221 }
1223 }
1222 else if ( (sid ==SID_SBM1_CWF_F1) || (sid ==SID_SBM2_CWF_F2) )
1224 else if ( (sid ==SID_SBM1_CWF_F1) || (sid ==SID_SBM2_CWF_F2) )
1223 {
1225 {
1224 sequence_cnt = &sequenceCounters_SCIENCE_SBM1_SBM2;
1226 sequence_cnt = &sequenceCounters_SCIENCE_SBM1_SBM2;
1225 }
1227 }
1226 else
1228 else
1227 {
1229 {
1228 sequence_cnt = &sequenceCounters_TC_EXE[ UNKNOWN ];
1230 sequence_cnt = &sequenceCounters_TC_EXE[ UNKNOWN ];
1229 PRINTF1("in increment_seq_counter_source_id *** ERR apid_destid %d not known\n", sid)
1231 PRINTF1("in increment_seq_counter_source_id *** ERR apid_destid %d not known\n", sid)
1230 }
1232 }
1231
1233
1232 segmentation_grouping_flag = (packet_sequence_control[ 0 ] & 0xc0) << 8;
1234 segmentation_grouping_flag = (packet_sequence_control[ 0 ] & 0xc0) << 8;
1233 *sequence_cnt = (*sequence_cnt) & 0x3fff;
1235 *sequence_cnt = (*sequence_cnt) & 0x3fff;
1234
1236
1235 new_packet_sequence_control = segmentation_grouping_flag | *sequence_cnt ;
1237 new_packet_sequence_control = segmentation_grouping_flag | *sequence_cnt ;
1236
1238
1237 packet_sequence_control[0] = (unsigned char) (new_packet_sequence_control >> 8);
1239 packet_sequence_control[0] = (unsigned char) (new_packet_sequence_control >> 8);
1238 packet_sequence_control[1] = (unsigned char) (new_packet_sequence_control );
1240 packet_sequence_control[1] = (unsigned char) (new_packet_sequence_control );
1239
1241
1240 // increment the sequence counter for the next packet
1242 // increment the sequence counter for the next packet
1241 if ( *sequence_cnt < SEQ_CNT_MAX)
1243 if ( *sequence_cnt < SEQ_CNT_MAX)
1242 {
1244 {
1243 *sequence_cnt = *sequence_cnt + 1;
1245 *sequence_cnt = *sequence_cnt + 1;
1244 }
1246 }
1245 else
1247 else
1246 {
1248 {
1247 *sequence_cnt = 0;
1249 *sequence_cnt = 0;
1248 }
1250 }
1249 }
1251 }
General Comments 0
You need to be logged in to leave comments. Login now