Merge remote-tracking branch 'origin/develop' into mueller/acs-ss-init
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
This commit is contained in:
commit
dd67191044
3
.gitmodules
vendored
3
.gitmodules
vendored
@ -19,3 +19,6 @@
|
|||||||
[submodule "thirdparty/json"]
|
[submodule "thirdparty/json"]
|
||||||
path = thirdparty/json
|
path = thirdparty/json
|
||||||
url = https://github.com/nlohmann/json.git
|
url = https://github.com/nlohmann/json.git
|
||||||
|
[submodule "thirdparty/rapidcsv"]
|
||||||
|
path = thirdparty/rapidcsv
|
||||||
|
url = https://github.com/d99kris/rapidcsv.git
|
||||||
|
17
CHANGELOG.md
17
CHANGELOG.md
@ -12,11 +12,28 @@ list yields a list of all related PRs for each release.
|
|||||||
|
|
||||||
# [v1.12.0]
|
# [v1.12.0]
|
||||||
|
|
||||||
|
## Added
|
||||||
|
|
||||||
|
- `RwAssembly` added to system components. Assembly works in principle,
|
||||||
|
issues making 4 consecutives RWs communicate at once..
|
||||||
|
PR: https://egit.irs.uni-stuttgart.de/eive/eive-obsw/pulls/224
|
||||||
|
- Adds a yocto helper script which is able to install the release build binaries
|
||||||
|
(OBSW and Watchdog) into the `q7s-yocto` repository as long as the `q7s-package`
|
||||||
|
or `q7s-yocto` repo was cloned in the same directory the EIVE OBSW repo.
|
||||||
|
This makes updating the root filesystem a lot easier. It also creates and installs a
|
||||||
|
version file.
|
||||||
|
PR: https://egit.irs.uni-stuttgart.de/eive/eive-obsw/pulls/248
|
||||||
|
- Create the generic image by default for the Q7S build. The unique binary with the
|
||||||
|
username appended at the end is created as a side-product now
|
||||||
|
PR: https://egit.irs.uni-stuttgart.de/eive/eive-obsw/pulls/248
|
||||||
|
|
||||||
## Changed
|
## Changed
|
||||||
|
|
||||||
- Build unittest as default side product of hosted builds
|
- Build unittest as default side product of hosted builds
|
||||||
PR: https://egit.irs.uni-stuttgart.de/eive/eive-obsw/pulls/244
|
PR: https://egit.irs.uni-stuttgart.de/eive/eive-obsw/pulls/244
|
||||||
- Let CI/CD build host build and run unittest side product in same step
|
- Let CI/CD build host build and run unittest side product in same step
|
||||||
|
- Catch2 pre-installed in CI/CD docker container, Xiphos SDK installed in CI/CD docker
|
||||||
|
PR: https://egit.irs.uni-stuttgart.de/eive/eive-obsw/pulls/247
|
||||||
- Sun Sensors have names denoting their location and poiting in the satellite now
|
- Sun Sensors have names denoting their location and poiting in the satellite now
|
||||||
PR: https://egit.irs.uni-stuttgart.de/eive/eive-obsw/pulls/245
|
PR: https://egit.irs.uni-stuttgart.de/eive/eive-obsw/pulls/245
|
||||||
- Better RTD names denoting their purpose (and location consequently)
|
- Better RTD names denoting their purpose (and location consequently)
|
||||||
|
@ -275,11 +275,8 @@ add_library(${LIB_EIVE_MISSION})
|
|||||||
|
|
||||||
# Add main executable
|
# Add main executable
|
||||||
add_executable(${OBSW_NAME})
|
add_executable(${OBSW_NAME})
|
||||||
if(EIVE_CREATE_UNIQUE_OBSW_BIN)
|
set(OBSW_BIN_NAME ${CMAKE_PROJECT_NAME})
|
||||||
set(OBSW_BIN_NAME ${CMAKE_PROJECT_NAME}-$ENV{USERNAME})
|
|
||||||
else()
|
|
||||||
set(OBSW_BIN_NAME ${CMAKE_PROJECT_NAME})
|
|
||||||
endif()
|
|
||||||
set_target_properties(${OBSW_NAME} PROPERTIES OUTPUT_NAME ${OBSW_BIN_NAME})
|
set_target_properties(${OBSW_NAME} PROPERTIES OUTPUT_NAME ${OBSW_BIN_NAME})
|
||||||
|
|
||||||
# Watchdog
|
# Watchdog
|
||||||
@ -311,6 +308,8 @@ if(EIVE_ADD_JSON_LIB)
|
|||||||
add_subdirectory(${LIB_JSON_PATH})
|
add_subdirectory(${LIB_JSON_PATH})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
add_subdirectory(thirdparty/rapidcsv)
|
||||||
|
|
||||||
if(EIVE_ADD_LINUX_FILES)
|
if(EIVE_ADD_LINUX_FILES)
|
||||||
add_subdirectory(${LIB_ARCSEC_PATH})
|
add_subdirectory(${LIB_ARCSEC_PATH})
|
||||||
add_subdirectory(${LINUX_PATH})
|
add_subdirectory(${LINUX_PATH})
|
||||||
@ -409,6 +408,7 @@ endif()
|
|||||||
target_link_libraries(${UNITTEST_NAME} PRIVATE
|
target_link_libraries(${UNITTEST_NAME} PRIVATE
|
||||||
Catch2
|
Catch2
|
||||||
${LIB_EIVE_MISSION}
|
${LIB_EIVE_MISSION}
|
||||||
|
rapidcsv
|
||||||
)
|
)
|
||||||
|
|
||||||
if(TGT_BSP MATCHES "arm/egse")
|
if(TGT_BSP MATCHES "arm/egse")
|
||||||
|
127
README.md
127
README.md
@ -70,8 +70,9 @@ prerequisites.
|
|||||||
## Building the OBSW and flashing it on the Q7S
|
## Building the OBSW and flashing it on the Q7S
|
||||||
|
|
||||||
1. ARM cross-compiler installed, either as part of [Vivado 2018.2 installation](#vivado) or
|
1. ARM cross-compiler installed, either as part of [Vivado 2018.2 installation](#vivado) or
|
||||||
as a [separate download](#arm-toolchain)
|
as a [separate download](#arm-toolchain). The Xiphos SDK also installs a cross-compiler,
|
||||||
2. [Q7S sysroot](#sysroot) on local development machine
|
but its version is currently too old to compile the OBSW (7.3.0).
|
||||||
|
2. [Q7S sysroot](#sysroot) on local development machine. It is installed by the Xiphos SDK
|
||||||
3. Recommended: Eclipse or [Vivado 2018.2 SDK](#vivado) for OBSW development
|
3. Recommended: Eclipse or [Vivado 2018.2 SDK](#vivado) for OBSW development
|
||||||
3. [TCF agent](https://wiki.eclipse.org/TCF) running on Q7S
|
3. [TCF agent](https://wiki.eclipse.org/TCF) running on Q7S
|
||||||
|
|
||||||
@ -88,7 +89,7 @@ When using Windows, run theses steps in MSYS2.
|
|||||||
1. Clone the repository with
|
1. Clone the repository with
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
git clone https://egit.irs.uni-stuttgart.de/eive/eive_obsw.git
|
git clone https://egit.irs.uni-stuttgart.de/eive/eive-obsw.git
|
||||||
```
|
```
|
||||||
|
|
||||||
2. Update all the submodules
|
2. Update all the submodules
|
||||||
@ -151,6 +152,53 @@ When using Windows, run theses steps in MSYS2.
|
|||||||
cmake --build . -j
|
cmake --build . -j
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Build for the Q7S target root filesystem with `yocto`
|
||||||
|
|
||||||
|
The EIVE root filesystem will contain the EIVE OBSW and the Watchdog component.
|
||||||
|
It is currently generated with `yocto`, but the tool can not compile the primary
|
||||||
|
OBSW due to toolchain version incompatibility. Therefore, the OBSW components
|
||||||
|
are currently compiled using the toolchain specified in this README (e.g. installed by Vivado).
|
||||||
|
|
||||||
|
However, it is still possible to install the two components using yocto. A few helper files were
|
||||||
|
provided to make this process easier. The following steps can be used to install the OBSW
|
||||||
|
components and a version file to the yocto sources for the generation of the complete EIVE root
|
||||||
|
file system image. The steps here are shown for Ubuntu, you can use the according Windows
|
||||||
|
helper scripts as well.
|
||||||
|
|
||||||
|
1. Copy the `q7s-env.sh` script to the same layer as the `eive-obsw`.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
cp scripts/q7s-env.sh ..
|
||||||
|
cd ..
|
||||||
|
./q7s-env.sh
|
||||||
|
q7s-make-release.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Compile the OBSW components in release mode
|
||||||
|
|
||||||
|
```sh
|
||||||
|
cd cmake-build-release-q7s
|
||||||
|
cmake --build . -j
|
||||||
|
```
|
||||||
|
|
||||||
|
3. Make sure the [`q7s-yocto`](https://egit.irs.uni-stuttgart.de/eive/q7s-yocto)
|
||||||
|
repository or the [`q7s-package`](https://egit.irs.uni-stuttgart.de/eive/q7s-package.git)
|
||||||
|
repository and its `q7s-yocto` submodule were cloned in the same directory layer as
|
||||||
|
the `eive-obsw`.
|
||||||
|
|
||||||
|
4. Run the install script to install the files into `q7s-yocto`.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
install-obsw-yocto.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
5. Navigate into the `q7s-yocto` repo and review the changes. You can then add and push those
|
||||||
|
changes.
|
||||||
|
|
||||||
|
6. You can now rebuild the root filesystem with the updated OBSW using `yocto`. This probably needs
|
||||||
|
to be done on another machine or in a VM. The [`q7s-yocto`](https://egit.irs.uni-stuttgart.de/eive/q7s-yocto)
|
||||||
|
repository contains details on how to best do this.
|
||||||
|
|
||||||
## Building in Xilinx SDK 2018.2
|
## Building in Xilinx SDK 2018.2
|
||||||
|
|
||||||
1. Open Xilinx SDK 2018.2
|
1. Open Xilinx SDK 2018.2
|
||||||
@ -326,7 +374,7 @@ If you are comiling for the Raspberry Pi, you have to set the `LINUX_ROOTFS` env
|
|||||||
variable instead. You can find a base root filesystem for the Raspberry Pi
|
variable instead. You can find a base root filesystem for the Raspberry Pi
|
||||||
[here](https://eive-cloud.irs.uni-stuttgart.de/index.php/apps/files/?dir=/EIVE_IRS/Software/rootfs).
|
[here](https://eive-cloud.irs.uni-stuttgart.de/index.php/apps/files/?dir=/EIVE_IRS/Software/rootfs).
|
||||||
|
|
||||||
## <a id="vivado"></a> Installing Vivado the the Xilinx development tools
|
## <a id="vivado"></a> Installing Vivado and the Xilinx development tools
|
||||||
|
|
||||||
It's also possible to perform debugging with a normal Eclipse installation by installing
|
It's also possible to perform debugging with a normal Eclipse installation by installing
|
||||||
the TCF plugin and downloading the cross-compiler as specified in the section below. However,
|
the TCF plugin and downloading the cross-compiler as specified in the section below. However,
|
||||||
@ -342,9 +390,9 @@ installed Vivado with the SDK core tools.
|
|||||||
|
|
||||||
<img src="https://egit.irs.uni-stuttgart.de/eive/eive-obsw/raw/branch/develop/doc/img/vivado-edition.png" width="50%"> <br>
|
<img src="https://egit.irs.uni-stuttgart.de/eive/eive-obsw/raw/branch/develop/doc/img/vivado-edition.png" width="50%"> <br>
|
||||||
|
|
||||||
<img src="https://egit.irs.uni-stuttgart.de/eive/eive-obsw/raw/branch/mueller/master/doc/img/vivado-hl-design.png" width="50%"> <br>
|
<img src="https://egit.irs.uni-stuttgart.de/eive/eive-obsw/raw/branch/develop/doc/img/vivado-hl-design.png" width="50%"> <br>
|
||||||
|
|
||||||
<img src="https://egit.irs.uni-stuttgart.de/eive/eive-obsw/raw/branch/mueller/master/doc/img/xilinx-install.PNG" width="50%"> <br>
|
<img src="https://egit.irs.uni-stuttgart.de/eive/eive-obsw/raw/branch/develop/doc/img/xilinx-install.PNG" width="50%"> <br>
|
||||||
|
|
||||||
* For supported OS refer to https://www.xilinx.com/support/documentation/sw_manuals/xilinx2018_2/ug973-vivado-release-notes-install-license.pdf .
|
* For supported OS refer to https://www.xilinx.com/support/documentation/sw_manuals/xilinx2018_2/ug973-vivado-release-notes-install-license.pdf .
|
||||||
Installation was tested on Windows and Ubuntu 21.04.
|
Installation was tested on Windows and Ubuntu 21.04.
|
||||||
@ -661,35 +709,7 @@ Thus the replies are received with a larger delay compared to a direct TCP conne
|
|||||||
3. Make sure the netmask of the ehternet interface of the workstation matches the netmask of the Q7S
|
3. Make sure the netmask of the ehternet interface of the workstation matches the netmask of the Q7S
|
||||||
* When IP address is set to 192.168.133.10 and the netmask is 255.255.255.0, an example IP address for the workstation
|
* When IP address is set to 192.168.133.10 and the netmask is 255.255.255.0, an example IP address for the workstation
|
||||||
is 192.168.133.2
|
is 192.168.133.2
|
||||||
|
4. Make sure th `tcf-agent` is running by checking `systemctl status tcf-agent`
|
||||||
4. Run tcf-agent on Q7S
|
|
||||||
|
|
||||||
* Tcf-agent is not yet integrated in the rootfs of the Q7S. Therefore build tcf-agent manually
|
|
||||||
|
|
||||||
```sh
|
|
||||||
git clone git://git.eclipse.org/gitroot/tcf/org.eclipse.tcf.agent.git
|
|
||||||
cd org.eclipse.tcf.agent/agent
|
|
||||||
make CC=arm-linux-gnueabihf-gcc LD=arm-linux-gnueabihf-ld MACHINE=arm NO_SSL=1 NO_UUID=1
|
|
||||||
```
|
|
||||||
|
|
||||||
* Transfer executable agent from org.eclipse.tcf.agent/agent/obj/GNU/Linux/arm/Debug to /tmp of Q7S
|
|
||||||
|
|
||||||
```sh
|
|
||||||
cd obj/GNU/Linux/arm/Debug
|
|
||||||
scp agent root@192.168.133.10:/tmp
|
|
||||||
```
|
|
||||||
|
|
||||||
* On Q7S
|
|
||||||
```sh
|
|
||||||
cd /tmp
|
|
||||||
chmod +x agent
|
|
||||||
```
|
|
||||||
|
|
||||||
* Run agent
|
|
||||||
```sh
|
|
||||||
./agent
|
|
||||||
```
|
|
||||||
|
|
||||||
5. In Xilinx SDK 2018.2 right click on project → Debug As → Debug Configurations
|
5. In Xilinx SDK 2018.2 right click on project → Debug As → Debug Configurations
|
||||||
6. Right click Xilinx C/C++ applicaton (System Debugger) → New →
|
6. Right click Xilinx C/C++ applicaton (System Debugger) → New →
|
||||||
7. Set Debug Type to Linux Application Debug and Connectin to Linux Agent
|
7. Set Debug Type to Linux Application Debug and Connectin to Linux Agent
|
||||||
@ -699,8 +719,8 @@ Thus the replies are received with a larger delay compared to a direct TCP conne
|
|||||||
11. Test connection (This ensures the TCF Agent is running on the Q7S)
|
11. Test connection (This ensures the TCF Agent is running on the Q7S)
|
||||||
12. Select Application tab
|
12. Select Application tab
|
||||||
* Project Name: eive_obsw
|
* Project Name: eive_obsw
|
||||||
* Local File Path: Path to eiveobsw-linux.elf (in `_bin\linux\devel`)
|
* Local File Path: Path to OBSW application image with debug symbols (non-stripped)
|
||||||
* Remote File Path: `/tmp/eive_obsw.elf`
|
* Remote File Path: `/tmp/<OBSW NAME>`
|
||||||
|
|
||||||
# <a id="file-transfer"></a> Transfering Files to the Q7S
|
# <a id="file-transfer"></a> Transfering Files to the Q7S
|
||||||
|
|
||||||
@ -726,7 +746,8 @@ From a windows machine files can be copied with putty tools (note: use IPv4 addr
|
|||||||
pscp -scp -P 22 eive@192.168.199.227:</directory-to-example-file/>/example-file </windows-machine-path/>
|
pscp -scp -P 22 eive@192.168.199.227:</directory-to-example-file/>/example-file </windows-machine-path/>
|
||||||
````
|
````
|
||||||
|
|
||||||
More detailed information about the used q7s commands can be found in the Q7S user manual.
|
A helper script named `q7s-cp.py` can be used together with the `q7s-port.sh`
|
||||||
|
script to make this process easier.
|
||||||
|
|
||||||
# <a id="q7s"></a> Q7S OBC
|
# <a id="q7s"></a> Q7S OBC
|
||||||
|
|
||||||
@ -1106,16 +1127,28 @@ Eclipse indexer.
|
|||||||
|
|
||||||
The [TCF agent](https://wiki.eclipse.org/TCF) can be used to perform remote debugging on the Q7S.
|
The [TCF agent](https://wiki.eclipse.org/TCF) can be used to perform remote debugging on the Q7S.
|
||||||
|
|
||||||
1. Install the TCF agent plugin in Eclipse from
|
1. Copy the `.cproject` file and the `.project` file inside the `misc/eclipse` folder into the
|
||||||
|
repo root
|
||||||
|
|
||||||
|
```sh
|
||||||
|
cd eive-obsw
|
||||||
|
cp misc/eclipse/.cproject .
|
||||||
|
cp misc/eclipse/.project .
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Open the repo in Eclipse as a folder.
|
||||||
|
|
||||||
|
3. Install the TCF agent plugin in Eclipse from
|
||||||
the [releases](https://www.eclipse.org/tcf/downloads.php). Go to
|
the [releases](https://www.eclipse.org/tcf/downloads.php). Go to
|
||||||
Help → Install New Software and use the download page, for
|
Help → Install New Software and use the download page, for
|
||||||
example https://download.eclipse.org/tools/tcf/releases/1.7/1.7.0/ to search for the plugin and install it. You can find the newest version [here](https://www.eclipse.org/tcf/downloads.php)
|
example https://download.eclipse.org/tools/tcf/releases/1.7/1.7.0/ to search for the plugin and
|
||||||
|
install it. You can find the newest version [here](https://www.eclipse.org/tcf/downloads.php)
|
||||||
|
|
||||||
2. Go to Window → Perspective → Open Perspective and open the **Target Explorer Perspective**.
|
4. Go to Window → Perspective → Open Perspective and open the **Target Explorer Perspective**.
|
||||||
Here, the Q7S should show up if the local port forwarding was set up as explained previously.
|
Here, the Q7S should show up if the local port forwarding was set up as explained previously.
|
||||||
Please note that you have to connect to `localhost` and port `1534` with port forwaring set up.
|
Please note that you have to connect to `localhost` and port `1534` with port forwaring set up.
|
||||||
|
|
||||||
3. A launch configuration was provided, but it might be necessary to adapt it for your own needs.
|
5. A launch configuration was provided, but it might be necessary to adapt it for your own needs.
|
||||||
Alternatively:
|
Alternatively:
|
||||||
|
|
||||||
- Create a new **TCF Remote Application** by pressing the cogs button at the top or going to
|
- Create a new **TCF Remote Application** by pressing the cogs button at the top or going to
|
||||||
@ -1204,7 +1237,7 @@ in the same way.
|
|||||||
|
|
||||||
* the formatting is based on the clang-format tools
|
* the formatting is based on the clang-format tools
|
||||||
|
|
||||||
## Setting up eclipse auto-fromatter with clang-format
|
## Setting up auto-formatter with clang-format in Xilinx SDK
|
||||||
|
|
||||||
1. Help → Install New Software → Add
|
1. Help → Install New Software → Add
|
||||||
2. In location insert the link http://www.cppstyle.com/luna
|
2. In location insert the link http://www.cppstyle.com/luna
|
||||||
@ -1214,3 +1247,11 @@ in the same way.
|
|||||||
6. Insert the path to the clang-format executable
|
6. Insert the path to the clang-format executable
|
||||||
7. Under C/C++ → Code Style → Formatter, change the formatter to CppStyle (clang-format)
|
7. Under C/C++ → Code Style → Formatter, change the formatter to CppStyle (clang-format)
|
||||||
8. Code can now be formatted with the clang tool by using the key combination Ctrl + Shift + f
|
8. Code can now be formatted with the clang tool by using the key combination Ctrl + Shift + f
|
||||||
|
|
||||||
|
## Setting up auto-fromatter with clang-format in eclipse
|
||||||
|
1. Help → Eclipse market place → Search for "Cppstyle" and install
|
||||||
|
2. On windows download the clang-formatting tools from https://llvm.org/builds/. On linux clang-format can be installed with the package manager.
|
||||||
|
3. Navigate to Preferences → C/C++ → CppStyle
|
||||||
|
4. Insert the path to the clang-format executable
|
||||||
|
5. Under C/C++ → Code Style → Formatter, change the formatter to CppStyle (clang-format)
|
||||||
|
6. Code can now be formatted with the clang tool by using the key combination Ctrl + Shift + f
|
||||||
|
@ -4,17 +4,24 @@ RUN apt-get update
|
|||||||
RUN apt-get --yes upgrade
|
RUN apt-get --yes upgrade
|
||||||
#tzdata is a dependency, won't install otherwise
|
#tzdata is a dependency, won't install otherwise
|
||||||
ARG DEBIAN_FRONTEND=noninteractive
|
ARG DEBIAN_FRONTEND=noninteractive
|
||||||
RUN apt-get --yes install cmake libgpiod-dev xz-utils nano curl git gcc g++ lcov valgrind libgps-dev
|
RUN apt-get --yes install cmake libgpiod-dev xz-utils nano curl git gcc g++ lcov valgrind libgps-dev python3
|
||||||
|
|
||||||
# Q7S root filesystem, required for cross-compilation.
|
ARG XIPHOS_SDK_NAME=sdk-xiphos-eive-v0.2.0
|
||||||
RUN mkdir -p /usr/rootfs; \
|
# Install Xiphos ARK SDK, which also installs Q7S root filesystem, required for cross-compilation.
|
||||||
curl https://buggy.irs.uni-stuttgart.de/eive/tools/eive-compile-rootfs-v0.1.0-7-gae69838.tar.xz \
|
RUN curl https://buggy.irs.uni-stuttgart.de/eive/tools/${XIPHOS_SDK_NAME}.tar | tar -x && \
|
||||||
| tar -xJ -C /usr/rootfs
|
cd ${XIPHOS_SDK_NAME} && \
|
||||||
|
./ark-glibc-x86_64-eive-image-cortexa9hf-neon-toolchain-nodistro.0.sh -y
|
||||||
|
|
||||||
# Cross compiler
|
# Cross compiler
|
||||||
RUN mkdir -p /usr/tools; \
|
RUN mkdir -p /usr/tools; \
|
||||||
curl https://buggy.irs.uni-stuttgart.de/eive/tools/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf.tar.gz \
|
curl https://buggy.irs.uni-stuttgart.de/eive/tools/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf.tar.gz \
|
||||||
| tar -xz -C /usr/tools
|
| tar -xz -C /usr/tools
|
||||||
|
|
||||||
ENV ZYNQ_7020_SYSROOT="/usr/rootfs/eive-compile-rootfs"
|
RUN git clone https://github.com/catchorg/Catch2.git && \
|
||||||
|
cd Catch2 && \
|
||||||
|
git checkout v3.0.0-preview5 && \
|
||||||
|
cmake -Bbuild -H. -DBUILD_TESTING=OFF && \
|
||||||
|
cmake --build build/ --target install
|
||||||
|
|
||||||
|
ENV ZYNQ_7020_SYSROOT="/opt/xiphos/sdk/ark/sysroots/cortexa9hf-neon-xiphos-linux-gnueabi"
|
||||||
ENV PATH=$PATH:"/usr/tools/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin"
|
ENV PATH=$PATH:"/usr/tools/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin"
|
||||||
|
2
automation/Jenkinsfile
vendored
2
automation/Jenkinsfile
vendored
@ -5,7 +5,7 @@ pipeline {
|
|||||||
}
|
}
|
||||||
agent {
|
agent {
|
||||||
docker {
|
docker {
|
||||||
image 'eive-obsw-ci:d4'
|
image 'eive-obsw-ci:d5'
|
||||||
args '--sysctl fs.mqueue.msg_max=100'
|
args '--sysctl fs.mqueue.msg_max=100'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -131,6 +131,7 @@ void initmission::initTasks() {
|
|||||||
|
|
||||||
PeriodicTaskIF* testTask = factory->createPeriodicTask(
|
PeriodicTaskIF* testTask = factory->createPeriodicTask(
|
||||||
"TEST_TASK", 40, PeriodicTaskIF::MINIMUM_STACK_SIZE, 2.0, missedDeadlineFunc);
|
"TEST_TASK", 40, PeriodicTaskIF::MINIMUM_STACK_SIZE, 2.0, missedDeadlineFunc);
|
||||||
|
static_cast<void>(testTask);
|
||||||
#if OBSW_ADD_TEST_CODE == 1
|
#if OBSW_ADD_TEST_CODE == 1
|
||||||
result = testTask->addComponent(objects::TEST_TASK);
|
result = testTask->addComponent(objects::TEST_TASK);
|
||||||
if (result != HasReturnvaluesIF::RETURN_OK) {
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
|
@ -25,7 +25,9 @@ add_subdirectory(core)
|
|||||||
if(EIVE_Q7S_EM)
|
if(EIVE_Q7S_EM)
|
||||||
add_subdirectory(em)
|
add_subdirectory(em)
|
||||||
else()
|
else()
|
||||||
add_subdirectory(fm)
|
target_sources(${OBSW_NAME} PUBLIC
|
||||||
|
fmObjectFactory.cpp
|
||||||
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
add_subdirectory(memory)
|
add_subdirectory(memory)
|
||||||
|
@ -25,8 +25,8 @@
|
|||||||
#define OBSW_ADD_MGT @OBSW_ADD_MGT@
|
#define OBSW_ADD_MGT @OBSW_ADD_MGT@
|
||||||
#define OBSW_ADD_BPX_BATTERY_HANDLER @OBSW_ADD_BPX_BATTERY_HANDLER@
|
#define OBSW_ADD_BPX_BATTERY_HANDLER @OBSW_ADD_BPX_BATTERY_HANDLER@
|
||||||
#define OBSW_ADD_STAR_TRACKER @OBSW_ADD_STAR_TRACKER@
|
#define OBSW_ADD_STAR_TRACKER @OBSW_ADD_STAR_TRACKER@
|
||||||
#define OBSW_ADD_PLOC_SUPERVISOR 0
|
#define OBSW_ADD_PLOC_SUPERVISOR 1
|
||||||
#define OBSW_ADD_PLOC_MPSOC 0
|
#define OBSW_ADD_PLOC_MPSOC 1
|
||||||
#define OBSW_ADD_SUN_SENSORS @OBSW_ADD_SUN_SENSORS@
|
#define OBSW_ADD_SUN_SENSORS @OBSW_ADD_SUN_SENSORS@
|
||||||
#define OBSW_ADD_SUS_BOARD_ASS @OBSW_ADD_SUS_BOARD_ASS@
|
#define OBSW_ADD_SUS_BOARD_ASS @OBSW_ADD_SUS_BOARD_ASS@
|
||||||
#define OBSW_ADD_ACS_BOARD @OBSW_ADD_ACS_BOARD@
|
#define OBSW_ADD_ACS_BOARD @OBSW_ADD_ACS_BOARD@
|
||||||
@ -38,6 +38,7 @@
|
|||||||
#define OBSW_ADD_PL_PCDU @OBSW_ADD_PL_PCDU@
|
#define OBSW_ADD_PL_PCDU @OBSW_ADD_PL_PCDU@
|
||||||
#define OBSW_ADD_SYRLINKS @OBSW_ADD_SYRLINKS@
|
#define OBSW_ADD_SYRLINKS @OBSW_ADD_SYRLINKS@
|
||||||
#define OBSW_ENABLE_SYRLINKS_TRANSMIT_TIMEOUT 0
|
#define OBSW_ENABLE_SYRLINKS_TRANSMIT_TIMEOUT 0
|
||||||
|
#define OBSW_MPSOC_JTAG_BOOT 0
|
||||||
|
|
||||||
// This is a really tricky switch.. It initializes the PCDU switches to their default states
|
// This is a really tricky switch.. It initializes the PCDU switches to their default states
|
||||||
// at powerup. I think it would be better
|
// at powerup. I think it would be better
|
||||||
|
@ -34,5 +34,6 @@ SOFTWARE.
|
|||||||
|
|
||||||
#define ETL_CPP11_SUPPORTED 1
|
#define ETL_CPP11_SUPPORTED 1
|
||||||
#define ETL_NO_NULLPTR_SUPPORT 0
|
#define ETL_NO_NULLPTR_SUPPORT 0
|
||||||
|
#define ETL_HAS_ERROR_ON_STRING_TRUNCATION 1
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -48,7 +48,7 @@ void q7s::gpioCallbacks::initSpiCsDecoder(GpioIF* gpioComIF) {
|
|||||||
|
|
||||||
result = gpioComIF->addGpios(spiMuxGpios);
|
result = gpioComIF->addGpios(spiMuxGpios);
|
||||||
if (result != HasReturnvaluesIF::RETURN_OK) {
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
sif::error << "initSpiCsDecoder: Failed to add mux bit gpios to gpioComIF" << std::endl;
|
sif::error << "initSpiCsDecoder: Failed to add SPI MUX bit GPIOs" << std::endl;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
#include "rwSpiCallback.h"
|
#include "rwSpiCallback.h"
|
||||||
|
|
||||||
|
#include <fsfw/timemanager/Stopwatch.h>
|
||||||
|
|
||||||
#include "devices/gpioIds.h"
|
#include "devices/gpioIds.h"
|
||||||
#include "fsfw/serviceinterface/ServiceInterface.h"
|
#include "fsfw/serviceinterface/ServiceInterface.h"
|
||||||
#include "fsfw_hal/linux/UnixFileGuard.h"
|
#include "fsfw_hal/linux/UnixFileGuard.h"
|
||||||
@ -8,8 +10,25 @@
|
|||||||
|
|
||||||
namespace rwSpiCallback {
|
namespace rwSpiCallback {
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
static bool MODE_SET = false;
|
||||||
|
|
||||||
|
ReturnValue_t openSpi(const std::string& devname, int flags, GpioIF* gpioIF, gpioId_t gpioId,
|
||||||
|
MutexIF* mutex, MutexIF::TimeoutType timeoutType, uint32_t timeoutMs,
|
||||||
|
int& fd);
|
||||||
|
/**
|
||||||
|
* @brief This function closes a spi session. Pulls the chip select to high an releases the
|
||||||
|
* mutex.
|
||||||
|
* @param gpioId Gpio ID of chip select
|
||||||
|
* @param gpioIF Pointer to gpio interface to drive the chip select
|
||||||
|
* @param mutex The spi mutex
|
||||||
|
*/
|
||||||
|
void closeSpi(int fd, gpioId_t gpioId, GpioIF* gpioIF, MutexIF* mutex);
|
||||||
|
} // namespace
|
||||||
|
|
||||||
ReturnValue_t spiCallback(SpiComIF* comIf, SpiCookie* cookie, const uint8_t* sendData,
|
ReturnValue_t spiCallback(SpiComIF* comIf, SpiCookie* cookie, const uint8_t* sendData,
|
||||||
size_t sendLen, void* args) {
|
size_t sendLen, void* args) {
|
||||||
|
// Stopwatch watch;
|
||||||
ReturnValue_t result = HasReturnvaluesIF::RETURN_OK;
|
ReturnValue_t result = HasReturnvaluesIF::RETURN_OK;
|
||||||
|
|
||||||
RwHandler* handler = reinterpret_cast<RwHandler*>(args);
|
RwHandler* handler = reinterpret_cast<RwHandler*>(args);
|
||||||
@ -18,7 +37,7 @@ ReturnValue_t spiCallback(SpiComIF* comIf, SpiCookie* cookie, const uint8_t* sen
|
|||||||
return HasReturnvaluesIF::RETURN_FAILED;
|
return HasReturnvaluesIF::RETURN_FAILED;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t writeBuffer[2];
|
uint8_t writeBuffer[2] = {};
|
||||||
uint8_t writeSize = 0;
|
uint8_t writeSize = 0;
|
||||||
|
|
||||||
gpioId_t gpioId = cookie->getChipSelectPin();
|
gpioId_t gpioId = cookie->getChipSelectPin();
|
||||||
@ -32,37 +51,30 @@ ReturnValue_t spiCallback(SpiComIF* comIf, SpiCookie* cookie, const uint8_t* sen
|
|||||||
}
|
}
|
||||||
|
|
||||||
int fileDescriptor = 0;
|
int fileDescriptor = 0;
|
||||||
std::string device = cookie->getSpiDevice();
|
const std::string& dev = comIf->getSpiDev();
|
||||||
UnixFileGuard fileHelper(device, &fileDescriptor, O_RDWR, "rwSpiCallback::spiCallback");
|
result = openSpi(dev, O_RDWR, gpioIF, gpioId, mutex, timeoutType, timeoutMs, fileDescriptor);
|
||||||
if (fileHelper.getOpenResult() != HasReturnvaluesIF::RETURN_OK) {
|
|
||||||
sif::error << "rwSpiCallback::spiCallback: Failed to open device file" << std::endl;
|
|
||||||
return SpiComIF::OPENING_FILE_FAILED;
|
|
||||||
}
|
|
||||||
spi::SpiModes spiMode = spi::SpiModes::MODE_0;
|
|
||||||
uint32_t spiSpeed = 0;
|
|
||||||
cookie->getSpiParameters(spiMode, spiSpeed, nullptr);
|
|
||||||
comIf->setSpiSpeedAndMode(fileDescriptor, spiMode, spiSpeed);
|
|
||||||
|
|
||||||
result = mutex->lockMutex(timeoutType, timeoutMs);
|
|
||||||
if (result != HasReturnvaluesIF::RETURN_OK) {
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
sif::debug << "rwSpiCallback::spiCallback: Failed to lock mutex" << std::endl;
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Sending frame start sign */
|
spi::SpiModes spiMode = spi::SpiModes::MODE_0;
|
||||||
writeBuffer[0] = 0x7E;
|
uint32_t spiSpeed = 0;
|
||||||
writeSize = 1;
|
cookie->getSpiParameters(spiMode, spiSpeed, nullptr);
|
||||||
|
// We are in protected section, so we can use the static variable here without issues.
|
||||||
// Pull SPI CS low. For now, no support for active high given
|
// We don't need to set the speed because a SPI core is used, but the mode has to be set once
|
||||||
if (gpioId != gpio::NO_GPIO) {
|
// correctly for all RWs
|
||||||
if (gpioIF->pullLow(gpioId) != HasReturnvaluesIF::RETURN_OK) {
|
if (not MODE_SET) {
|
||||||
sif::error << "rwSpiCallback::spiCallback: Failed to pull chip select low" << std::endl;
|
comIf->setSpiSpeedAndMode(fileDescriptor, spiMode, spiSpeed);
|
||||||
}
|
MODE_SET = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Sending frame start sign */
|
||||||
|
writeBuffer[0] = FLAG_BYTE;
|
||||||
|
writeSize = 1;
|
||||||
|
|
||||||
if (write(fileDescriptor, writeBuffer, writeSize) != static_cast<ssize_t>(writeSize)) {
|
if (write(fileDescriptor, writeBuffer, writeSize) != static_cast<ssize_t>(writeSize)) {
|
||||||
sif::error << "rwSpiCallback::spiCallback: Write failed!" << std::endl;
|
sif::error << "rwSpiCallback::spiCallback: Write failed!" << std::endl;
|
||||||
closeSpi(gpioId, gpioIF, mutex);
|
closeSpi(fileDescriptor, gpioId, gpioIF, mutex);
|
||||||
return RwHandler::SPI_WRITE_FAILURE;
|
return RwHandler::SPI_WRITE_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -87,33 +99,39 @@ ReturnValue_t spiCallback(SpiComIF* comIf, SpiCookie* cookie, const uint8_t* sen
|
|||||||
}
|
}
|
||||||
if (write(fileDescriptor, writeBuffer, writeSize) != static_cast<ssize_t>(writeSize)) {
|
if (write(fileDescriptor, writeBuffer, writeSize) != static_cast<ssize_t>(writeSize)) {
|
||||||
sif::error << "rwSpiCallback::spiCallback: Write failed!" << std::endl;
|
sif::error << "rwSpiCallback::spiCallback: Write failed!" << std::endl;
|
||||||
closeSpi(gpioId, gpioIF, mutex);
|
closeSpi(fileDescriptor, gpioId, gpioIF, mutex);
|
||||||
return RwHandler::SPI_WRITE_FAILURE;
|
return RwHandler::SPI_WRITE_FAILURE;
|
||||||
}
|
}
|
||||||
idx++;
|
idx++;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Sending frame end sign */
|
/** Sending frame end sign */
|
||||||
writeBuffer[0] = 0x7E;
|
writeBuffer[0] = FLAG_BYTE;
|
||||||
writeSize = 1;
|
writeSize = 1;
|
||||||
|
|
||||||
if (write(fileDescriptor, writeBuffer, writeSize) != static_cast<ssize_t>(writeSize)) {
|
if (write(fileDescriptor, writeBuffer, writeSize) != static_cast<ssize_t>(writeSize)) {
|
||||||
sif::error << "rwSpiCallback::spiCallback: Write failed!" << std::endl;
|
sif::error << "rwSpiCallback::spiCallback: Write failed!" << std::endl;
|
||||||
closeSpi(gpioId, gpioIF, mutex);
|
closeSpi(fileDescriptor, gpioId, gpioIF, mutex);
|
||||||
return RwHandler::SPI_WRITE_FAILURE;
|
return RwHandler::SPI_WRITE_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t* rxBuf = nullptr;
|
uint8_t* rxBuf = nullptr;
|
||||||
result = comIf->getReadBuffer(cookie->getSpiAddress(), &rxBuf);
|
result = comIf->getReadBuffer(cookie->getSpiAddress(), &rxBuf);
|
||||||
if (result != HasReturnvaluesIF::RETURN_OK) {
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
closeSpi(gpioId, gpioIF, mutex);
|
closeSpi(fileDescriptor, gpioId, gpioIF, mutex);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t replyBufferSize = cookie->getMaxBufferSize();
|
size_t replyBufferSize = cookie->getMaxBufferSize();
|
||||||
|
|
||||||
/** There must be a delay of at least 20 ms after sending the command */
|
// There must be a delay of at least 20 ms after sending the command.
|
||||||
|
// Delay for 70 ms here and release the SPI bus for that duration.
|
||||||
|
closeSpi(fileDescriptor, gpioId, gpioIF, mutex);
|
||||||
usleep(RwDefinitions::SPI_REPLY_DELAY);
|
usleep(RwDefinitions::SPI_REPLY_DELAY);
|
||||||
|
result = openSpi(dev, O_RDWR, gpioIF, gpioId, mutex, timeoutType, timeoutMs, fileDescriptor);
|
||||||
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The reaction wheel responds with empty frames while preparing the reply data.
|
* The reaction wheel responds with empty frames while preparing the reply data.
|
||||||
@ -123,13 +141,13 @@ ReturnValue_t spiCallback(SpiComIF* comIf, SpiCookie* cookie, const uint8_t* sen
|
|||||||
for (int idx = 0; idx < 10; idx++) {
|
for (int idx = 0; idx < 10; idx++) {
|
||||||
if (read(fileDescriptor, &byteRead, 1) != 1) {
|
if (read(fileDescriptor, &byteRead, 1) != 1) {
|
||||||
sif::error << "rwSpiCallback::spiCallback: Read failed" << std::endl;
|
sif::error << "rwSpiCallback::spiCallback: Read failed" << std::endl;
|
||||||
closeSpi(gpioId, gpioIF, mutex);
|
closeSpi(fileDescriptor, gpioId, gpioIF, mutex);
|
||||||
return RwHandler::SPI_READ_FAILURE;
|
return RwHandler::SPI_READ_FAILURE;
|
||||||
}
|
}
|
||||||
if (idx == 0) {
|
if (idx == 0) {
|
||||||
if (byteRead != FLAG_BYTE) {
|
if (byteRead != FLAG_BYTE) {
|
||||||
sif::error << "Invalid data, expected start marker" << std::endl;
|
sif::error << "Invalid data, expected start marker" << std::endl;
|
||||||
closeSpi(gpioId, gpioIF, mutex);
|
closeSpi(fileDescriptor, gpioId, gpioIF, mutex);
|
||||||
return RwHandler::NO_START_MARKER;
|
return RwHandler::NO_START_MARKER;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -140,7 +158,7 @@ ReturnValue_t spiCallback(SpiComIF* comIf, SpiCookie* cookie, const uint8_t* sen
|
|||||||
|
|
||||||
if (idx == 9) {
|
if (idx == 9) {
|
||||||
sif::error << "rwSpiCallback::spiCallback: Empty frame timeout" << std::endl;
|
sif::error << "rwSpiCallback::spiCallback: Empty frame timeout" << std::endl;
|
||||||
closeSpi(gpioId, gpioIF, mutex);
|
closeSpi(fileDescriptor, gpioId, gpioIF, mutex);
|
||||||
return RwHandler::NO_REPLY;
|
return RwHandler::NO_REPLY;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -180,7 +198,7 @@ ReturnValue_t spiCallback(SpiComIF* comIf, SpiCookie* cookie, const uint8_t* sen
|
|||||||
continue;
|
continue;
|
||||||
} else {
|
} else {
|
||||||
sif::error << "rwSpiCallback::spiCallback: Invalid substitute" << std::endl;
|
sif::error << "rwSpiCallback::spiCallback: Invalid substitute" << std::endl;
|
||||||
closeSpi(gpioId, gpioIF, mutex);
|
closeSpi(fileDescriptor, gpioId, gpioIF, mutex);
|
||||||
result = RwHandler::INVALID_SUBSTITUTE;
|
result = RwHandler::INVALID_SUBSTITUTE;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -201,8 +219,9 @@ ReturnValue_t spiCallback(SpiComIF* comIf, SpiCookie* cookie, const uint8_t* sen
|
|||||||
result = RwHandler::SPI_READ_FAILURE;
|
result = RwHandler::SPI_READ_FAILURE;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (byteRead != 0x7E) {
|
if (byteRead != FLAG_BYTE) {
|
||||||
sif::error << "rwSpiCallback::spiCallback: Missing end sign 0x7E" << std::endl;
|
sif::error << "rwSpiCallback::spiCallback: Missing end sign " << static_cast<int>(FLAG_BYTE)
|
||||||
|
<< std::endl;
|
||||||
decodedFrameLen--;
|
decodedFrameLen--;
|
||||||
result = RwHandler::MISSING_END_SIGN;
|
result = RwHandler::MISSING_END_SIGN;
|
||||||
break;
|
break;
|
||||||
@ -213,12 +232,40 @@ ReturnValue_t spiCallback(SpiComIF* comIf, SpiCookie* cookie, const uint8_t* sen
|
|||||||
|
|
||||||
cookie->setTransferSize(decodedFrameLen);
|
cookie->setTransferSize(decodedFrameLen);
|
||||||
|
|
||||||
closeSpi(gpioId, gpioIF, mutex);
|
closeSpi(fileDescriptor, gpioId, gpioIF, mutex);
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
void closeSpi(gpioId_t gpioId, GpioIF* gpioIF, MutexIF* mutex) {
|
namespace {
|
||||||
|
|
||||||
|
ReturnValue_t openSpi(const std::string& devname, int flags, GpioIF* gpioIF, gpioId_t gpioId,
|
||||||
|
MutexIF* mutex, MutexIF::TimeoutType timeoutType, uint32_t timeoutMs,
|
||||||
|
int& fd) {
|
||||||
|
ReturnValue_t result = mutex->lockMutex(timeoutType, timeoutMs);
|
||||||
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
|
sif::debug << "rwSpiCallback::spiCallback: Failed to lock mutex" << std::endl;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
fd = open(devname.c_str(), flags);
|
||||||
|
if (fd < 0) {
|
||||||
|
sif::error << "rwSpiCallback::spiCallback: Failed to open device file" << std::endl;
|
||||||
|
return SpiComIF::OPENING_FILE_FAILED;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Pull SPI CS low. For now, no support for active high given
|
||||||
|
if (gpioId != gpio::NO_GPIO) {
|
||||||
|
result = gpioIF->pullLow(gpioId);
|
||||||
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
|
sif::error << "rwSpiCallback::spiCallback: Failed to pull chip select low" << std::endl;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return HasReturnvaluesIF::RETURN_OK;
|
||||||
|
}
|
||||||
|
void closeSpi(int fd, gpioId_t gpioId, GpioIF* gpioIF, MutexIF* mutex) {
|
||||||
|
close(fd);
|
||||||
if (gpioId != gpio::NO_GPIO) {
|
if (gpioId != gpio::NO_GPIO) {
|
||||||
if (gpioIF->pullHigh(gpioId) != HasReturnvaluesIF::RETURN_OK) {
|
if (gpioIF->pullHigh(gpioId) != HasReturnvaluesIF::RETURN_OK) {
|
||||||
sif::error << "closeSpi: Failed to pull chip select high" << std::endl;
|
sif::error << "closeSpi: Failed to pull chip select high" << std::endl;
|
||||||
@ -229,4 +276,7 @@ void closeSpi(gpioId_t gpioId, GpioIF* gpioIF, MutexIF* mutex) {
|
|||||||
;
|
;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} // namespace
|
||||||
|
|
||||||
} // namespace rwSpiCallback
|
} // namespace rwSpiCallback
|
||||||
|
@ -33,14 +33,5 @@ static constexpr uint8_t FLAG_BYTE = 0x7E;
|
|||||||
ReturnValue_t spiCallback(SpiComIF* comIf, SpiCookie* cookie, const uint8_t* sendData,
|
ReturnValue_t spiCallback(SpiComIF* comIf, SpiCookie* cookie, const uint8_t* sendData,
|
||||||
size_t sendLen, void* args);
|
size_t sendLen, void* args);
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief This function closes a spi session. Pulls the chip select to high an releases the
|
|
||||||
* mutex.
|
|
||||||
* @param gpioId Gpio ID of chip select
|
|
||||||
* @param gpioIF Pointer to gpio interface to drive the chip select
|
|
||||||
* @param mutex The spi mutex
|
|
||||||
*/
|
|
||||||
void closeSpi(gpioId_t gpioId, GpioIF* gpioIF, MutexIF* mutex);
|
|
||||||
|
|
||||||
} // namespace rwSpiCallback
|
} // namespace rwSpiCallback
|
||||||
#endif /* BSP_Q7S_RW_SPI_CALLBACK_H_ */
|
#endif /* BSP_Q7S_RW_SPI_CALLBACK_H_ */
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
target_sources(${OBSW_NAME} PRIVATE
|
target_sources(${OBSW_NAME} PRIVATE
|
||||||
CoreController.cpp
|
CoreController.cpp
|
||||||
InitMission.cpp
|
InitMission.cpp
|
||||||
|
ObjectFactory.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
target_sources(${SIMPLE_OBSW_NAME} PRIVATE
|
target_sources(${SIMPLE_OBSW_NAME} PRIVATE
|
||||||
|
@ -73,7 +73,7 @@ class CoreController : public ExtendedControllerBase {
|
|||||||
static constexpr uint8_t SUBSYSTEM_ID = SUBSYSTEM_ID::CORE;
|
static constexpr uint8_t SUBSYSTEM_ID = SUBSYSTEM_ID::CORE;
|
||||||
|
|
||||||
static constexpr Event ALLOC_FAILURE = event::makeEvent(SUBSYSTEM_ID, 0, severity::MEDIUM);
|
static constexpr Event ALLOC_FAILURE = event::makeEvent(SUBSYSTEM_ID, 0, severity::MEDIUM);
|
||||||
//! [EXPORT] : [COMMENT] Software reboot occured. Can also be a systemd reboot.
|
//! [EXPORT] : [COMMENT] Software reboot occurred. Can also be a systemd reboot.
|
||||||
//! P1: Current Chip, P2: Current Copy
|
//! P1: Current Chip, P2: Current Copy
|
||||||
static constexpr Event REBOOT_SW = event::makeEvent(SUBSYSTEM_ID, 1, severity::MEDIUM);
|
static constexpr Event REBOOT_SW = event::makeEvent(SUBSYSTEM_ID, 1, severity::MEDIUM);
|
||||||
//! [EXPORT] : [COMMENT] The reboot mechanism was triggered.
|
//! [EXPORT] : [COMMENT] The reboot mechanism was triggered.
|
||||||
|
@ -120,21 +120,30 @@ void initmission::initTasks() {
|
|||||||
if (result != HasReturnvaluesIF::RETURN_OK) {
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
initmission::printAddObjectError("GPS_CTRL", objects::GPS_CONTROLLER);
|
initmission::printAddObjectError("GPS_CTRL", objects::GPS_CONTROLLER);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* OBSW_ADD_ACS_HANDLERS */
|
#endif /* OBSW_ADD_ACS_HANDLERS */
|
||||||
|
|
||||||
PeriodicTaskIF* sysTask = factory->createPeriodicTask(
|
PeriodicTaskIF* sysTask = factory->createPeriodicTask(
|
||||||
"SYS_TASK", 45, PeriodicTaskIF::MINIMUM_STACK_SIZE * 2, 0.4, missedDeadlineFunc);
|
"SYS_TASK", 45, PeriodicTaskIF::MINIMUM_STACK_SIZE * 2, 0.4, missedDeadlineFunc);
|
||||||
|
#if OBSW_ADD_ACS_HANDLERS == 1
|
||||||
result = sysTask->addComponent(objects::ACS_BOARD_ASS);
|
result = sysTask->addComponent(objects::ACS_BOARD_ASS);
|
||||||
if (result != HasReturnvaluesIF::RETURN_OK) {
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
initmission::printAddObjectError("ACS_BOARD_ASS", objects::ACS_BOARD_ASS);
|
initmission::printAddObjectError("ACS_BOARD_ASS", objects::ACS_BOARD_ASS);
|
||||||
}
|
}
|
||||||
|
#endif /* OBSW_ADD_ACS_HANDLERS */
|
||||||
|
#if OBSW_ADD_RW == 1
|
||||||
|
result = sysTask->addComponent(objects::RW_ASS);
|
||||||
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
|
initmission::printAddObjectError("RW_ASS", objects::RW_ASS);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#if OBSW_ADD_SUS_BOARD_ASS == 1
|
#if OBSW_ADD_SUS_BOARD_ASS == 1
|
||||||
result = sysTask->addComponent(objects::SUS_BOARD_ASS);
|
result = sysTask->addComponent(objects::SUS_BOARD_ASS);
|
||||||
if (result != HasReturnvaluesIF::RETURN_OK) {
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
initmission::printAddObjectError("SUS_BOARD_ASS", objects::SUS_BOARD_ASS);
|
initmission::printAddObjectError("SUS_BOARD_ASS", objects::SUS_BOARD_ASS);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
#if OBSW_ADD_RTD_DEVICES == 1
|
||||||
result = sysTask->addComponent(objects::TCS_BOARD_ASS);
|
result = sysTask->addComponent(objects::TCS_BOARD_ASS);
|
||||||
if (result != HasReturnvaluesIF::RETURN_OK) {
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
initmission::printAddObjectError("TCS_BOARD_ASS", objects::TCS_BOARD_ASS);
|
initmission::printAddObjectError("TCS_BOARD_ASS", objects::TCS_BOARD_ASS);
|
||||||
@ -143,6 +152,7 @@ void initmission::initTasks() {
|
|||||||
if (result != HasReturnvaluesIF::RETURN_OK) {
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
initmission::printAddObjectError("ACS_SUBSYSTEM", objects::ACS_SUBSYSTEM);
|
initmission::printAddObjectError("ACS_SUBSYSTEM", objects::ACS_SUBSYSTEM);
|
||||||
}
|
}
|
||||||
|
#endif /* OBSW_ADD_RTD_DEVICES == 1 */
|
||||||
|
|
||||||
// FS task, task interval does not matter because it runs in permanent loop, priority low
|
// FS task, task interval does not matter because it runs in permanent loop, priority low
|
||||||
// because it is a non-essential background task
|
// because it is a non-essential background task
|
||||||
@ -171,6 +181,15 @@ void initmission::initTasks() {
|
|||||||
}
|
}
|
||||||
#endif /* OBSW_ADD_PLOC_MPSOC */
|
#endif /* OBSW_ADD_PLOC_MPSOC */
|
||||||
|
|
||||||
|
#if OBSW_ADD_PLOC_SUPERVISOR == 1
|
||||||
|
PeriodicTaskIF* supvHelperTask = factory->createPeriodicTask(
|
||||||
|
"PLOC_SUPV_HELPER", 10, PeriodicTaskIF::MINIMUM_STACK_SIZE, 1.0, missedDeadlineFunc);
|
||||||
|
result = supvHelperTask->addComponent(objects::PLOC_SUPERVISOR_HELPER);
|
||||||
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
|
initmission::printAddObjectError("PLOC_SUPV_HELPER", objects::PLOC_SUPERVISOR_HELPER);
|
||||||
|
}
|
||||||
|
#endif /* OBSW_ADD_PLOC_SUPERVISOR */
|
||||||
|
|
||||||
#if OBSW_TEST_CCSDS_BRIDGE == 1
|
#if OBSW_TEST_CCSDS_BRIDGE == 1
|
||||||
PeriodicTaskIF* ptmeTestTask = factory->createPeriodicTask(
|
PeriodicTaskIF* ptmeTestTask = factory->createPeriodicTask(
|
||||||
"PTME_TEST", 80, PeriodicTaskIF::MINIMUM_STACK_SIZE, 2.0, missedDeadlineFunc);
|
"PTME_TEST", 80, PeriodicTaskIF::MINIMUM_STACK_SIZE, 2.0, missedDeadlineFunc);
|
||||||
@ -233,8 +252,12 @@ void initmission::initTasks() {
|
|||||||
#if OBSW_ADD_ACS_HANDLERS == 1
|
#if OBSW_ADD_ACS_HANDLERS == 1
|
||||||
gpsTask->startTask();
|
gpsTask->startTask();
|
||||||
#endif
|
#endif
|
||||||
|
#if OBSW_ADD_RTD_DEVICES == 1
|
||||||
sysTask->startTask();
|
sysTask->startTask();
|
||||||
|
#endif
|
||||||
|
#if OBSW_ADD_PLOC_SUPERVISOR == 1
|
||||||
|
supvHelperTask->startTask();
|
||||||
|
#endif /* OBSW_ADD_PLOC_SUPERVISOR == 1 */
|
||||||
sif::info << "Tasks started.." << std::endl;
|
sif::info << "Tasks started.." << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -245,7 +268,7 @@ void initmission::createPstTasks(TaskFactory& factory,
|
|||||||
/* Polling Sequence Table Default */
|
/* Polling Sequence Table Default */
|
||||||
#if OBSW_ADD_SPI_TEST_CODE == 0
|
#if OBSW_ADD_SPI_TEST_CODE == 0
|
||||||
FixedTimeslotTaskIF* spiPst = factory.createFixedTimeslotTask(
|
FixedTimeslotTaskIF* spiPst = factory.createFixedTimeslotTask(
|
||||||
"PST_TASK_DEFAULT", 70, PeriodicTaskIF::MINIMUM_STACK_SIZE * 4, 0.5, missedDeadlineFunc);
|
"MAIN_SPI", 75, PeriodicTaskIF::MINIMUM_STACK_SIZE * 4, 0.5, missedDeadlineFunc);
|
||||||
result = pst::pstSpi(spiPst);
|
result = pst::pstSpi(spiPst);
|
||||||
if (result != HasReturnvaluesIF::RETURN_OK) {
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
if (result == FixedTimeslotTaskIF::SLOT_LIST_EMPTY) {
|
if (result == FixedTimeslotTaskIF::SLOT_LIST_EMPTY) {
|
||||||
@ -258,8 +281,23 @@ void initmission::createPstTasks(TaskFactory& factory,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if OBSW_ADD_RW == 1
|
||||||
|
FixedTimeslotTaskIF* rwPstTask = factory.createFixedTimeslotTask(
|
||||||
|
"RW_SPI", 65, PeriodicTaskIF::MINIMUM_STACK_SIZE * 2, 1.0, missedDeadlineFunc);
|
||||||
|
result = pst::pstSpiRw(rwPstTask);
|
||||||
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
|
if (result == FixedTimeslotTaskIF::SLOT_LIST_EMPTY) {
|
||||||
|
sif::warning << "InitMission::initTasks: SPI PST is empty" << std::endl;
|
||||||
|
} else {
|
||||||
|
sif::error << "InitMission::initTasks: Creating SPI PST failed!" << std::endl;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
taskVec.push_back(rwPstTask);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
FixedTimeslotTaskIF* uartPst = factory.createFixedTimeslotTask(
|
FixedTimeslotTaskIF* uartPst = factory.createFixedTimeslotTask(
|
||||||
"UART_PST", 70, PeriodicTaskIF::MINIMUM_STACK_SIZE * 4, 0.2, missedDeadlineFunc);
|
"UART_PST", 65, PeriodicTaskIF::MINIMUM_STACK_SIZE * 4, 0.2, missedDeadlineFunc);
|
||||||
result = pst::pstUart(uartPst);
|
result = pst::pstUart(uartPst);
|
||||||
if (result != HasReturnvaluesIF::RETURN_OK) {
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
if (result == FixedTimeslotTaskIF::SLOT_LIST_EMPTY) {
|
if (result == FixedTimeslotTaskIF::SLOT_LIST_EMPTY) {
|
||||||
@ -272,7 +310,7 @@ void initmission::createPstTasks(TaskFactory& factory,
|
|||||||
}
|
}
|
||||||
|
|
||||||
FixedTimeslotTaskIF* gpioPst = factory.createFixedTimeslotTask(
|
FixedTimeslotTaskIF* gpioPst = factory.createFixedTimeslotTask(
|
||||||
"GPIO_PST", 70, PeriodicTaskIF::MINIMUM_STACK_SIZE * 4, 0.2, missedDeadlineFunc);
|
"GPIO_PST", 70, PeriodicTaskIF::MINIMUM_STACK_SIZE * 2, 0.2, missedDeadlineFunc);
|
||||||
result = pst::pstGpio(gpioPst);
|
result = pst::pstGpio(gpioPst);
|
||||||
if (result != HasReturnvaluesIF::RETURN_OK) {
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
if (result == FixedTimeslotTaskIF::SLOT_LIST_EMPTY) {
|
if (result == FixedTimeslotTaskIF::SLOT_LIST_EMPTY) {
|
||||||
@ -285,7 +323,7 @@ void initmission::createPstTasks(TaskFactory& factory,
|
|||||||
}
|
}
|
||||||
#if OBSW_ADD_I2C_TEST_CODE == 0
|
#if OBSW_ADD_I2C_TEST_CODE == 0
|
||||||
FixedTimeslotTaskIF* i2cPst = factory.createFixedTimeslotTask(
|
FixedTimeslotTaskIF* i2cPst = factory.createFixedTimeslotTask(
|
||||||
"I2C_PST", 70, PeriodicTaskIF::MINIMUM_STACK_SIZE * 4, 0.2, missedDeadlineFunc);
|
"I2C_PST", 65, PeriodicTaskIF::MINIMUM_STACK_SIZE * 4, 0.2, missedDeadlineFunc);
|
||||||
result = pst::pstI2c(i2cPst);
|
result = pst::pstI2c(i2cPst);
|
||||||
if (result != HasReturnvaluesIF::RETURN_OK) {
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
if (result == FixedTimeslotTaskIF::SLOT_LIST_EMPTY) {
|
if (result == FixedTimeslotTaskIF::SLOT_LIST_EMPTY) {
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
#include <mission/system/fdir/GomspacePowerFdir.h>
|
#include "ObjectFactory.h"
|
||||||
#include <mission/system/fdir/SyrlinksFdir.h>
|
|
||||||
|
|
||||||
#include "OBSWConfig.h"
|
#include "OBSWConfig.h"
|
||||||
#include "bsp_q7s/boardtest/Q7STestTask.h"
|
#include "bsp_q7s/boardtest/Q7STestTask.h"
|
||||||
@ -8,7 +7,6 @@
|
|||||||
#include "bsp_q7s/callbacks/q7sGpioCallbacks.h"
|
#include "bsp_q7s/callbacks/q7sGpioCallbacks.h"
|
||||||
#include "bsp_q7s/callbacks/rwSpiCallback.h"
|
#include "bsp_q7s/callbacks/rwSpiCallback.h"
|
||||||
#include "bsp_q7s/core/CoreController.h"
|
#include "bsp_q7s/core/CoreController.h"
|
||||||
#include "bsp_q7s/core/ObjectFactory.h"
|
|
||||||
#include "bsp_q7s/memory/FileSystemHandler.h"
|
#include "bsp_q7s/memory/FileSystemHandler.h"
|
||||||
#include "busConf.h"
|
#include "busConf.h"
|
||||||
#include "ccsdsConfig.h"
|
#include "ccsdsConfig.h"
|
||||||
@ -31,7 +29,6 @@
|
|||||||
#include "linux/devices/ploc/PlocMPSoCHelper.h"
|
#include "linux/devices/ploc/PlocMPSoCHelper.h"
|
||||||
#include "linux/devices/ploc/PlocMemoryDumper.h"
|
#include "linux/devices/ploc/PlocMemoryDumper.h"
|
||||||
#include "linux/devices/ploc/PlocSupervisorHandler.h"
|
#include "linux/devices/ploc/PlocSupervisorHandler.h"
|
||||||
#include "linux/devices/ploc/PlocUpdater.h"
|
|
||||||
#include "linux/devices/startracker/StarTrackerHandler.h"
|
#include "linux/devices/startracker/StarTrackerHandler.h"
|
||||||
#include "linux/devices/startracker/StrHelper.h"
|
#include "linux/devices/startracker/StrHelper.h"
|
||||||
#include "linux/obc/AxiPtmeConfig.h"
|
#include "linux/obc/AxiPtmeConfig.h"
|
||||||
@ -40,12 +37,14 @@
|
|||||||
#include "linux/obc/Ptme.h"
|
#include "linux/obc/Ptme.h"
|
||||||
#include "linux/obc/PtmeConfig.h"
|
#include "linux/obc/PtmeConfig.h"
|
||||||
#include "mission/system/fdir/AcsBoardFdir.h"
|
#include "mission/system/fdir/AcsBoardFdir.h"
|
||||||
|
#include "mission/system/fdir/GomspacePowerFdir.h"
|
||||||
#include "mission/system/fdir/RtdFdir.h"
|
#include "mission/system/fdir/RtdFdir.h"
|
||||||
#include "mission/system/fdir/SusFdir.h"
|
#include "mission/system/fdir/SusFdir.h"
|
||||||
|
#include "mission/system/fdir/SyrlinksFdir.h"
|
||||||
|
#include "mission/system/objects/RwAssembly.h"
|
||||||
#include "mission/system/objects/SusAssembly.h"
|
#include "mission/system/objects/SusAssembly.h"
|
||||||
#include "mission/system/objects/TcsBoardAssembly.h"
|
#include "mission/system/objects/TcsBoardAssembly.h"
|
||||||
#include "mission/system/tree/acsModeTree.h"
|
#include "mission/system/tree/acsModeTree.h"
|
||||||
#include "tmtc/apid.h"
|
|
||||||
#include "tmtc/pusIds.h"
|
#include "tmtc/pusIds.h"
|
||||||
#if OBSW_TEST_LIBGPIOD == 1
|
#if OBSW_TEST_LIBGPIOD == 1
|
||||||
#include "linux/boardtest/LibgpiodTest.h"
|
#include "linux/boardtest/LibgpiodTest.h"
|
||||||
@ -83,14 +82,12 @@
|
|||||||
#include "mission/devices/RadiationSensorHandler.h"
|
#include "mission/devices/RadiationSensorHandler.h"
|
||||||
#include "mission/devices/RwHandler.h"
|
#include "mission/devices/RwHandler.h"
|
||||||
#include "mission/devices/SolarArrayDeploymentHandler.h"
|
#include "mission/devices/SolarArrayDeploymentHandler.h"
|
||||||
#include "mission/devices/SusHandler.h"
|
|
||||||
#include "mission/devices/SyrlinksHkHandler.h"
|
#include "mission/devices/SyrlinksHkHandler.h"
|
||||||
#include "mission/devices/Tmp1075Handler.h"
|
#include "mission/devices/Tmp1075Handler.h"
|
||||||
#include "mission/devices/devicedefinitions/GomspaceDefinitions.h"
|
#include "mission/devices/devicedefinitions/GomspaceDefinitions.h"
|
||||||
#include "mission/devices/devicedefinitions/Max31865Definitions.h"
|
#include "mission/devices/devicedefinitions/Max31865Definitions.h"
|
||||||
#include "mission/devices/devicedefinitions/RadSensorDefinitions.h"
|
#include "mission/devices/devicedefinitions/RadSensorDefinitions.h"
|
||||||
#include "mission/devices/devicedefinitions/RwDefinitions.h"
|
#include "mission/devices/devicedefinitions/RwDefinitions.h"
|
||||||
#include "mission/devices/devicedefinitions/SusDefinitions.h"
|
|
||||||
#include "mission/devices/devicedefinitions/SyrlinksDefinitions.h"
|
#include "mission/devices/devicedefinitions/SyrlinksDefinitions.h"
|
||||||
#include "mission/devices/devicedefinitions/payloadPcduDefinitions.h"
|
#include "mission/devices/devicedefinitions/payloadPcduDefinitions.h"
|
||||||
#include "mission/system/objects/AcsBoardAssembly.h"
|
#include "mission/system/objects/AcsBoardAssembly.h"
|
||||||
@ -101,8 +98,6 @@
|
|||||||
ResetArgs RESET_ARGS_GNSS_0;
|
ResetArgs RESET_ARGS_GNSS_0;
|
||||||
ResetArgs RESET_ARGS_GNSS_1;
|
ResetArgs RESET_ARGS_GNSS_1;
|
||||||
|
|
||||||
void ObjectFactory::setStatics() { Factory::setStaticFrameworkObjectIds(); }
|
|
||||||
|
|
||||||
void Factory::setStaticFrameworkObjectIds() {
|
void Factory::setStaticFrameworkObjectIds() {
|
||||||
PusServiceBase::packetSource = objects::PUS_PACKET_DISTRIBUTOR;
|
PusServiceBase::packetSource = objects::PUS_PACKET_DISTRIBUTOR;
|
||||||
PusServiceBase::packetDestination = objects::TM_FUNNEL;
|
PusServiceBase::packetDestination = objects::TM_FUNNEL;
|
||||||
@ -126,90 +121,7 @@ void Factory::setStaticFrameworkObjectIds() {
|
|||||||
TmPacketBase::timeStamperId = objects::TIME_STAMPER;
|
TmPacketBase::timeStamperId = objects::TIME_STAMPER;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ObjectFactory::produce(void* args) {
|
void ObjectFactory::setStatics() { Factory::setStaticFrameworkObjectIds(); }
|
||||||
ObjectFactory::setStatics();
|
|
||||||
ObjectFactory::produceGenericObjects();
|
|
||||||
|
|
||||||
LinuxLibgpioIF* gpioComIF = nullptr;
|
|
||||||
UartComIF* uartComIF = nullptr;
|
|
||||||
SpiComIF* spiComIF = nullptr;
|
|
||||||
I2cComIF* i2cComIF = nullptr;
|
|
||||||
PowerSwitchIF* pwrSwitcher = nullptr;
|
|
||||||
|
|
||||||
createCommunicationInterfaces(&gpioComIF, &uartComIF, &spiComIF, &i2cComIF);
|
|
||||||
createTmpComponents();
|
|
||||||
new CoreController(objects::CORE_CONTROLLER);
|
|
||||||
|
|
||||||
gpioCallbacks::disableAllDecoder(gpioComIF);
|
|
||||||
createPcduComponents(gpioComIF, &pwrSwitcher);
|
|
||||||
createRadSensorComponent(gpioComIF);
|
|
||||||
createSunSensorComponents(gpioComIF, spiComIF, pwrSwitcher, q7s::SPI_DEFAULT_DEV);
|
|
||||||
|
|
||||||
#if OBSW_ADD_ACS_BOARD == 1
|
|
||||||
createAcsBoardComponents(gpioComIF, uartComIF, pwrSwitcher);
|
|
||||||
#endif
|
|
||||||
createHeaterComponents();
|
|
||||||
createSolarArrayDeploymentComponents();
|
|
||||||
createPlPcduComponents(gpioComIF, spiComIF, pwrSwitcher);
|
|
||||||
#if OBSW_ADD_SYRLINKS == 1
|
|
||||||
createSyrlinksComponents(pwrSwitcher);
|
|
||||||
#endif /* OBSW_ADD_SYRLINKS == 1 */
|
|
||||||
createRtdComponents(q7s::SPI_DEFAULT_DEV, gpioComIF, pwrSwitcher);
|
|
||||||
createPayloadComponents(gpioComIF);
|
|
||||||
|
|
||||||
#if OBSW_ADD_MGT == 1
|
|
||||||
I2cCookie* imtqI2cCookie =
|
|
||||||
new I2cCookie(addresses::IMTQ, IMTQ::MAX_REPLY_SIZE, q7s::I2C_DEFAULT_DEV);
|
|
||||||
auto imtqHandler = new IMTQHandler(objects::IMTQ_HANDLER, objects::I2C_COM_IF, imtqI2cCookie,
|
|
||||||
pcdu::Switches::PDU1_CH3_MGT_5V);
|
|
||||||
imtqHandler->setPowerSwitcher(pwrSwitcher);
|
|
||||||
static_cast<void>(imtqHandler);
|
|
||||||
#if OBSW_TEST_IMTQ == 1
|
|
||||||
imtqHandler->setStartUpImmediately();
|
|
||||||
imtqHandler->setToGoToNormal(true);
|
|
||||||
#endif
|
|
||||||
#if OBSW_DEBUG_IMTQ == 1
|
|
||||||
imtqHandler->setDebugMode(true);
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
createReactionWheelComponents(gpioComIF);
|
|
||||||
|
|
||||||
#if OBSW_ADD_BPX_BATTERY_HANDLER == 1
|
|
||||||
I2cCookie* bpxI2cCookie = new I2cCookie(addresses::BPX_BATTERY, 100, q7s::I2C_DEFAULT_DEV);
|
|
||||||
BpxBatteryHandler* bpxHandler =
|
|
||||||
new BpxBatteryHandler(objects::BPX_BATT_HANDLER, objects::I2C_COM_IF, bpxI2cCookie);
|
|
||||||
bpxHandler->setStartUpImmediately();
|
|
||||||
bpxHandler->setToGoToNormalMode(true);
|
|
||||||
#if OBSW_DEBUG_BPX_BATT == 1
|
|
||||||
bpxHandler->setDebugMode(true);
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
new FileSystemHandler(objects::FILE_SYSTEM_HANDLER);
|
|
||||||
|
|
||||||
#if OBSW_ADD_STAR_TRACKER == 1
|
|
||||||
UartCookie* starTrackerCookie =
|
|
||||||
new UartCookie(objects::STAR_TRACKER, q7s::UART_STAR_TRACKER_DEV, uart::STAR_TRACKER_BAUD,
|
|
||||||
startracker::MAX_FRAME_SIZE * 2 + 2, UartModes::NON_CANONICAL);
|
|
||||||
starTrackerCookie->setNoFixedSizeReply();
|
|
||||||
StrHelper* strHelper = new StrHelper(objects::STR_HELPER);
|
|
||||||
auto starTracker =
|
|
||||||
new StarTrackerHandler(objects::STAR_TRACKER, objects::UART_COM_IF, starTrackerCookie,
|
|
||||||
strHelper, pcdu::PDU1_CH2_STAR_TRACKER_5V);
|
|
||||||
starTracker->setPowerSwitcher(pwrSwitcher);
|
|
||||||
|
|
||||||
#endif /* OBSW_ADD_STAR_TRACKER == 1 */
|
|
||||||
#if OBSW_USE_CCSDS_IP_CORE == 1
|
|
||||||
createCcsdsComponents(gpioComIF);
|
|
||||||
#endif /* OBSW_USE_CCSDS_IP_CORE == 1 */
|
|
||||||
/* Test Task */
|
|
||||||
#if OBSW_ADD_TEST_CODE == 1
|
|
||||||
createTestComponents(gpioComIF);
|
|
||||||
#endif /* OBSW_ADD_TEST_CODE == 1 */
|
|
||||||
new PlocUpdater(objects::PLOC_UPDATER);
|
|
||||||
new PlocMemoryDumper(objects::PLOC_MEMORY_DUMPER);
|
|
||||||
|
|
||||||
satsystem::initAcsSubsystem();
|
|
||||||
}
|
|
||||||
|
|
||||||
void ObjectFactory::createTmpComponents() {
|
void ObjectFactory::createTmpComponents() {
|
||||||
I2cCookie* i2cCookieTmp1075tcs1 =
|
I2cCookie* i2cCookieTmp1075tcs1 =
|
||||||
@ -227,8 +139,10 @@ void ObjectFactory::createTmpComponents() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void ObjectFactory::createCommunicationInterfaces(LinuxLibgpioIF** gpioComIF, UartComIF** uartComIF,
|
void ObjectFactory::createCommunicationInterfaces(LinuxLibgpioIF** gpioComIF, UartComIF** uartComIF,
|
||||||
SpiComIF** spiComIF, I2cComIF** i2cComIF) {
|
SpiComIF** spiMainComIF, I2cComIF** i2cComIF,
|
||||||
if (gpioComIF == nullptr or uartComIF == nullptr or spiComIF == nullptr) {
|
SpiComIF** spiRWComIF) {
|
||||||
|
if (gpioComIF == nullptr or uartComIF == nullptr or spiMainComIF == nullptr or
|
||||||
|
spiRWComIF == nullptr) {
|
||||||
sif::error << "ObjectFactory::createCommunicationInterfaces: Invalid passed ComIF pointer"
|
sif::error << "ObjectFactory::createCommunicationInterfaces: Invalid passed ComIF pointer"
|
||||||
<< std::endl;
|
<< std::endl;
|
||||||
}
|
}
|
||||||
@ -238,8 +152,8 @@ void ObjectFactory::createCommunicationInterfaces(LinuxLibgpioIF** gpioComIF, Ua
|
|||||||
new CspComIF(objects::CSP_COM_IF);
|
new CspComIF(objects::CSP_COM_IF);
|
||||||
*i2cComIF = new I2cComIF(objects::I2C_COM_IF);
|
*i2cComIF = new I2cComIF(objects::I2C_COM_IF);
|
||||||
*uartComIF = new UartComIF(objects::UART_COM_IF);
|
*uartComIF = new UartComIF(objects::UART_COM_IF);
|
||||||
*spiComIF = new SpiComIF(objects::SPI_COM_IF, *gpioComIF);
|
*spiMainComIF = new SpiComIF(objects::SPI_MAIN_COM_IF, q7s::SPI_DEFAULT_DEV, *gpioComIF);
|
||||||
|
*spiRWComIF = new SpiComIF(objects::SPI_RW_COM_IF, q7s::SPI_RW_DEV, *gpioComIF);
|
||||||
/* Adding gpios for chip select decoding to the gpioComIf */
|
/* Adding gpios for chip select decoding to the gpioComIf */
|
||||||
q7s::gpioCallbacks::initSpiCsDecoder(*gpioComIF);
|
q7s::gpioCallbacks::initSpiCsDecoder(*gpioComIF);
|
||||||
}
|
}
|
||||||
@ -297,12 +211,12 @@ void ObjectFactory::createRadSensorComponent(LinuxLibgpioIF* gpioComIF) {
|
|||||||
gpio = new GpiodRegularByLineName(q7s::gpioNames::ENABLE_RADFET, consumer.str(), Direction::OUT,
|
gpio = new GpiodRegularByLineName(q7s::gpioNames::ENABLE_RADFET, consumer.str(), Direction::OUT,
|
||||||
Levels::LOW);
|
Levels::LOW);
|
||||||
gpioCookieRadSensor->addGpio(gpioIds::ENABLE_RADFET, gpio);
|
gpioCookieRadSensor->addGpio(gpioIds::ENABLE_RADFET, gpio);
|
||||||
gpioComIF->addGpios(gpioCookieRadSensor);
|
gpioChecker(gpioComIF->addGpios(gpioCookieRadSensor), "RAD sensor");
|
||||||
|
|
||||||
SpiCookie* spiCookieRadSensor = new SpiCookie(
|
SpiCookie* spiCookieRadSensor =
|
||||||
addresses::RAD_SENSOR, gpioIds::CS_RAD_SENSOR, std::string(q7s::SPI_DEFAULT_DEV),
|
new SpiCookie(addresses::RAD_SENSOR, gpioIds::CS_RAD_SENSOR, RAD_SENSOR::READ_SIZE,
|
||||||
RAD_SENSOR::READ_SIZE, spi::DEFAULT_MAX_1227_MODE, spi::DEFAULT_MAX_1227_SPEED);
|
spi::DEFAULT_MAX_1227_MODE, spi::DEFAULT_MAX_1227_SPEED);
|
||||||
auto radSensor = new RadiationSensorHandler(objects::RAD_SENSOR, objects::SPI_COM_IF,
|
auto radSensor = new RadiationSensorHandler(objects::RAD_SENSOR, objects::SPI_MAIN_COM_IF,
|
||||||
spiCookieRadSensor, gpioComIF);
|
spiCookieRadSensor, gpioComIF);
|
||||||
static_cast<void>(radSensor);
|
static_cast<void>(radSensor);
|
||||||
// The radiation sensor ADC is powered by the 5V stack connector which should always be on
|
// The radiation sensor ADC is powered by the 5V stack connector which should always be on
|
||||||
@ -413,16 +327,16 @@ void ObjectFactory::createAcsBoardComponents(LinuxLibgpioIF* gpioComIF, UartComI
|
|||||||
gpio = new GpiodRegularByLineName(q7s::gpioNames::GNSS_SELECT, consumer.str(), Direction::OUT,
|
gpio = new GpiodRegularByLineName(q7s::gpioNames::GNSS_SELECT, consumer.str(), Direction::OUT,
|
||||||
Levels::LOW);
|
Levels::LOW);
|
||||||
gpioCookieAcsBoard->addGpio(gpioIds::GNSS_SELECT, gpio);
|
gpioCookieAcsBoard->addGpio(gpioIds::GNSS_SELECT, gpio);
|
||||||
gpioComIF->addGpios(gpioCookieAcsBoard);
|
gpioChecker(gpioComIF->addGpios(gpioCookieAcsBoard), "ACS Board");
|
||||||
AcsBoardFdir* fdir = nullptr;
|
AcsBoardFdir* fdir = nullptr;
|
||||||
static_cast<void>(fdir);
|
static_cast<void>(fdir);
|
||||||
|
|
||||||
#if OBSW_ADD_ACS_HANDLERS == 1
|
#if OBSW_ADD_ACS_HANDLERS == 1
|
||||||
std::string spiDev = q7s::SPI_DEFAULT_DEV;
|
std::string spiDev = q7s::SPI_DEFAULT_DEV;
|
||||||
SpiCookie* spiCookie =
|
SpiCookie* spiCookie =
|
||||||
new SpiCookie(addresses::MGM_0_LIS3, gpioIds::MGM_0_LIS3_CS, spiDev,
|
new SpiCookie(addresses::MGM_0_LIS3, gpioIds::MGM_0_LIS3_CS, MGMLIS3MDL::MAX_BUFFER_SIZE,
|
||||||
MGMLIS3MDL::MAX_BUFFER_SIZE, spi::DEFAULT_LIS3_MODE, spi::DEFAULT_LIS3_SPEED);
|
spi::DEFAULT_LIS3_MODE, spi::DEFAULT_LIS3_SPEED);
|
||||||
auto mgmLis3Handler = new MgmLIS3MDLHandler(objects::MGM_0_LIS3_HANDLER, objects::SPI_COM_IF,
|
auto mgmLis3Handler = new MgmLIS3MDLHandler(objects::MGM_0_LIS3_HANDLER, objects::SPI_MAIN_COM_IF,
|
||||||
spiCookie, spi::LIS3_TRANSITION_DELAY);
|
spiCookie, spi::LIS3_TRANSITION_DELAY);
|
||||||
fdir = new AcsBoardFdir(objects::MGM_0_LIS3_HANDLER);
|
fdir = new AcsBoardFdir(objects::MGM_0_LIS3_HANDLER);
|
||||||
mgmLis3Handler->setCustomFdir(fdir);
|
mgmLis3Handler->setCustomFdir(fdir);
|
||||||
@ -435,10 +349,11 @@ void ObjectFactory::createAcsBoardComponents(LinuxLibgpioIF* gpioComIF, UartComI
|
|||||||
mgmLis3Handler->enablePeriodicPrintouts(true, 10);
|
mgmLis3Handler->enablePeriodicPrintouts(true, 10);
|
||||||
#endif
|
#endif
|
||||||
spiCookie =
|
spiCookie =
|
||||||
new SpiCookie(addresses::MGM_1_RM3100, gpioIds::MGM_1_RM3100_CS, spiDev,
|
new SpiCookie(addresses::MGM_1_RM3100, gpioIds::MGM_1_RM3100_CS, RM3100::MAX_BUFFER_SIZE,
|
||||||
RM3100::MAX_BUFFER_SIZE, spi::DEFAULT_RM3100_MODE, spi::DEFAULT_RM3100_SPEED);
|
spi::DEFAULT_RM3100_MODE, spi::DEFAULT_RM3100_SPEED);
|
||||||
auto mgmRm3100Handler = new MgmRM3100Handler(objects::MGM_1_RM3100_HANDLER, objects::SPI_COM_IF,
|
auto mgmRm3100Handler =
|
||||||
spiCookie, spi::RM3100_TRANSITION_DELAY);
|
new MgmRM3100Handler(objects::MGM_1_RM3100_HANDLER, objects::SPI_MAIN_COM_IF, spiCookie,
|
||||||
|
spi::RM3100_TRANSITION_DELAY);
|
||||||
fdir = new AcsBoardFdir(objects::MGM_1_RM3100_HANDLER);
|
fdir = new AcsBoardFdir(objects::MGM_1_RM3100_HANDLER);
|
||||||
mgmRm3100Handler->setCustomFdir(fdir);
|
mgmRm3100Handler->setCustomFdir(fdir);
|
||||||
mgmRm3100Handler->setParent(objects::ACS_BOARD_ASS);
|
mgmRm3100Handler->setParent(objects::ACS_BOARD_ASS);
|
||||||
@ -451,9 +366,9 @@ void ObjectFactory::createAcsBoardComponents(LinuxLibgpioIF* gpioComIF, UartComI
|
|||||||
mgmRm3100Handler->enablePeriodicPrintouts(true, 10);
|
mgmRm3100Handler->enablePeriodicPrintouts(true, 10);
|
||||||
#endif
|
#endif
|
||||||
spiCookie =
|
spiCookie =
|
||||||
new SpiCookie(addresses::MGM_2_LIS3, gpioIds::MGM_2_LIS3_CS, spiDev,
|
new SpiCookie(addresses::MGM_2_LIS3, gpioIds::MGM_2_LIS3_CS, MGMLIS3MDL::MAX_BUFFER_SIZE,
|
||||||
MGMLIS3MDL::MAX_BUFFER_SIZE, spi::DEFAULT_LIS3_MODE, spi::DEFAULT_LIS3_SPEED);
|
spi::DEFAULT_LIS3_MODE, spi::DEFAULT_LIS3_SPEED);
|
||||||
mgmLis3Handler = new MgmLIS3MDLHandler(objects::MGM_2_LIS3_HANDLER, objects::SPI_COM_IF,
|
mgmLis3Handler = new MgmLIS3MDLHandler(objects::MGM_2_LIS3_HANDLER, objects::SPI_MAIN_COM_IF,
|
||||||
spiCookie, spi::LIS3_TRANSITION_DELAY);
|
spiCookie, spi::LIS3_TRANSITION_DELAY);
|
||||||
fdir = new AcsBoardFdir(objects::MGM_2_LIS3_HANDLER);
|
fdir = new AcsBoardFdir(objects::MGM_2_LIS3_HANDLER);
|
||||||
mgmLis3Handler->setCustomFdir(fdir);
|
mgmLis3Handler->setCustomFdir(fdir);
|
||||||
@ -467,9 +382,9 @@ void ObjectFactory::createAcsBoardComponents(LinuxLibgpioIF* gpioComIF, UartComI
|
|||||||
mgmLis3Handler->enablePeriodicPrintouts(true, 10);
|
mgmLis3Handler->enablePeriodicPrintouts(true, 10);
|
||||||
#endif
|
#endif
|
||||||
spiCookie =
|
spiCookie =
|
||||||
new SpiCookie(addresses::MGM_3_RM3100, gpioIds::MGM_3_RM3100_CS, spiDev,
|
new SpiCookie(addresses::MGM_3_RM3100, gpioIds::MGM_3_RM3100_CS, RM3100::MAX_BUFFER_SIZE,
|
||||||
RM3100::MAX_BUFFER_SIZE, spi::DEFAULT_RM3100_MODE, spi::DEFAULT_RM3100_SPEED);
|
spi::DEFAULT_RM3100_MODE, spi::DEFAULT_RM3100_SPEED);
|
||||||
mgmRm3100Handler = new MgmRM3100Handler(objects::MGM_3_RM3100_HANDLER, objects::SPI_COM_IF,
|
mgmRm3100Handler = new MgmRM3100Handler(objects::MGM_3_RM3100_HANDLER, objects::SPI_MAIN_COM_IF,
|
||||||
spiCookie, spi::RM3100_TRANSITION_DELAY);
|
spiCookie, spi::RM3100_TRANSITION_DELAY);
|
||||||
fdir = new AcsBoardFdir(objects::MGM_3_RM3100_HANDLER);
|
fdir = new AcsBoardFdir(objects::MGM_3_RM3100_HANDLER);
|
||||||
mgmRm3100Handler->setCustomFdir(fdir);
|
mgmRm3100Handler->setCustomFdir(fdir);
|
||||||
@ -483,11 +398,12 @@ void ObjectFactory::createAcsBoardComponents(LinuxLibgpioIF* gpioComIF, UartComI
|
|||||||
#endif
|
#endif
|
||||||
// Commented until ACS board V2 in in clean room again
|
// Commented until ACS board V2 in in clean room again
|
||||||
// Gyro 0 Side A
|
// Gyro 0 Side A
|
||||||
spiCookie = new SpiCookie(addresses::GYRO_0_ADIS, gpioIds::GYRO_0_ADIS_CS, spiDev,
|
spiCookie =
|
||||||
ADIS1650X::MAXIMUM_REPLY_SIZE, spi::DEFAULT_ADIS16507_MODE,
|
new SpiCookie(addresses::GYRO_0_ADIS, gpioIds::GYRO_0_ADIS_CS, ADIS1650X::MAXIMUM_REPLY_SIZE,
|
||||||
spi::DEFAULT_ADIS16507_SPEED);
|
spi::DEFAULT_ADIS16507_MODE, spi::DEFAULT_ADIS16507_SPEED);
|
||||||
auto adisHandler = new GyroADIS1650XHandler(objects::GYRO_0_ADIS_HANDLER, objects::SPI_COM_IF,
|
auto adisHandler =
|
||||||
spiCookie, ADIS1650X::Type::ADIS16505);
|
new GyroADIS1650XHandler(objects::GYRO_0_ADIS_HANDLER, objects::SPI_MAIN_COM_IF, spiCookie,
|
||||||
|
ADIS1650X::Type::ADIS16505);
|
||||||
fdir = new AcsBoardFdir(objects::GYRO_0_ADIS_HANDLER);
|
fdir = new AcsBoardFdir(objects::GYRO_0_ADIS_HANDLER);
|
||||||
adisHandler->setCustomFdir(fdir);
|
adisHandler->setCustomFdir(fdir);
|
||||||
adisHandler->setParent(objects::ACS_BOARD_ASS);
|
adisHandler->setParent(objects::ACS_BOARD_ASS);
|
||||||
@ -500,11 +416,10 @@ void ObjectFactory::createAcsBoardComponents(LinuxLibgpioIF* gpioComIF, UartComI
|
|||||||
adisHandler->enablePeriodicPrintouts(true, 10);
|
adisHandler->enablePeriodicPrintouts(true, 10);
|
||||||
#endif
|
#endif
|
||||||
// Gyro 1 Side A
|
// Gyro 1 Side A
|
||||||
spiCookie =
|
spiCookie = new SpiCookie(addresses::GYRO_1_L3G, gpioIds::GYRO_1_L3G_CS, L3GD20H::MAX_BUFFER_SIZE,
|
||||||
new SpiCookie(addresses::GYRO_1_L3G, gpioIds::GYRO_1_L3G_CS, spiDev, L3GD20H::MAX_BUFFER_SIZE,
|
spi::DEFAULT_L3G_MODE, spi::DEFAULT_L3G_SPEED);
|
||||||
spi::DEFAULT_L3G_MODE, spi::DEFAULT_L3G_SPEED);
|
auto gyroL3gHandler = new GyroHandlerL3GD20H(
|
||||||
auto gyroL3gHandler = new GyroHandlerL3GD20H(objects::GYRO_1_L3G_HANDLER, objects::SPI_COM_IF,
|
objects::GYRO_1_L3G_HANDLER, objects::SPI_MAIN_COM_IF, spiCookie, spi::L3G_TRANSITION_DELAY);
|
||||||
spiCookie, spi::L3G_TRANSITION_DELAY);
|
|
||||||
fdir = new AcsBoardFdir(objects::GYRO_1_L3G_HANDLER);
|
fdir = new AcsBoardFdir(objects::GYRO_1_L3G_HANDLER);
|
||||||
gyroL3gHandler->setCustomFdir(fdir);
|
gyroL3gHandler->setCustomFdir(fdir);
|
||||||
gyroL3gHandler->setParent(objects::ACS_BOARD_ASS);
|
gyroL3gHandler->setParent(objects::ACS_BOARD_ASS);
|
||||||
@ -517,10 +432,10 @@ void ObjectFactory::createAcsBoardComponents(LinuxLibgpioIF* gpioComIF, UartComI
|
|||||||
gyroL3gHandler->enablePeriodicPrintouts(true, 10);
|
gyroL3gHandler->enablePeriodicPrintouts(true, 10);
|
||||||
#endif
|
#endif
|
||||||
// Gyro 2 Side B
|
// Gyro 2 Side B
|
||||||
spiCookie = new SpiCookie(addresses::GYRO_2_ADIS, gpioIds::GYRO_2_ADIS_CS, spiDev,
|
spiCookie =
|
||||||
ADIS1650X::MAXIMUM_REPLY_SIZE, spi::DEFAULT_ADIS16507_MODE,
|
new SpiCookie(addresses::GYRO_2_ADIS, gpioIds::GYRO_2_ADIS_CS, ADIS1650X::MAXIMUM_REPLY_SIZE,
|
||||||
spi::DEFAULT_ADIS16507_SPEED);
|
spi::DEFAULT_ADIS16507_MODE, spi::DEFAULT_ADIS16507_SPEED);
|
||||||
adisHandler = new GyroADIS1650XHandler(objects::GYRO_2_ADIS_HANDLER, objects::SPI_COM_IF,
|
adisHandler = new GyroADIS1650XHandler(objects::GYRO_2_ADIS_HANDLER, objects::SPI_MAIN_COM_IF,
|
||||||
spiCookie, ADIS1650X::Type::ADIS16505);
|
spiCookie, ADIS1650X::Type::ADIS16505);
|
||||||
fdir = new AcsBoardFdir(objects::GYRO_2_ADIS_HANDLER);
|
fdir = new AcsBoardFdir(objects::GYRO_2_ADIS_HANDLER);
|
||||||
adisHandler->setCustomFdir(fdir);
|
adisHandler->setCustomFdir(fdir);
|
||||||
@ -530,10 +445,9 @@ void ObjectFactory::createAcsBoardComponents(LinuxLibgpioIF* gpioComIF, UartComI
|
|||||||
adisHandler->setToGoToNormalModeImmediately();
|
adisHandler->setToGoToNormalModeImmediately();
|
||||||
#endif
|
#endif
|
||||||
// Gyro 3 Side B
|
// Gyro 3 Side B
|
||||||
spiCookie =
|
spiCookie = new SpiCookie(addresses::GYRO_3_L3G, gpioIds::GYRO_3_L3G_CS, L3GD20H::MAX_BUFFER_SIZE,
|
||||||
new SpiCookie(addresses::GYRO_3_L3G, gpioIds::GYRO_3_L3G_CS, spiDev, L3GD20H::MAX_BUFFER_SIZE,
|
spi::DEFAULT_L3G_MODE, spi::DEFAULT_L3G_SPEED);
|
||||||
spi::DEFAULT_L3G_MODE, spi::DEFAULT_L3G_SPEED);
|
gyroL3gHandler = new GyroHandlerL3GD20H(objects::GYRO_3_L3G_HANDLER, objects::SPI_MAIN_COM_IF,
|
||||||
gyroL3gHandler = new GyroHandlerL3GD20H(objects::GYRO_3_L3G_HANDLER, objects::SPI_COM_IF,
|
|
||||||
spiCookie, spi::L3G_TRANSITION_DELAY);
|
spiCookie, spi::L3G_TRANSITION_DELAY);
|
||||||
fdir = new AcsBoardFdir(objects::GYRO_3_L3G_HANDLER);
|
fdir = new AcsBoardFdir(objects::GYRO_3_L3G_HANDLER);
|
||||||
gyroL3gHandler->setCustomFdir(fdir);
|
gyroL3gHandler->setCustomFdir(fdir);
|
||||||
@ -660,7 +574,7 @@ void ObjectFactory::createPayloadComponents(LinuxLibgpioIF* gpioComIF) {
|
|||||||
consumer.str(), Direction::OUT, Levels::HIGH);
|
consumer.str(), Direction::OUT, Levels::HIGH);
|
||||||
auto mpsocGpioCookie = new GpioCookie;
|
auto mpsocGpioCookie = new GpioCookie;
|
||||||
mpsocGpioCookie->addGpio(gpioIds::ENABLE_MPSOC_UART, gpioConfigMPSoC);
|
mpsocGpioCookie->addGpio(gpioIds::ENABLE_MPSOC_UART, gpioConfigMPSoC);
|
||||||
gpioComIF->addGpios(mpsocGpioCookie);
|
gpioChecker(gpioComIF->addGpios(mpsocGpioCookie), "PLOC MPSoC");
|
||||||
auto mpsocCookie =
|
auto mpsocCookie =
|
||||||
new UartCookie(objects::PLOC_MPSOC_HANDLER, q7s::UART_PLOC_MPSOC_DEV, uart::PLOC_MPSOC_BAUD,
|
new UartCookie(objects::PLOC_MPSOC_HANDLER, q7s::UART_PLOC_MPSOC_DEV, uart::PLOC_MPSOC_BAUD,
|
||||||
mpsoc::MAX_REPLY_SIZE, UartModes::NON_CANONICAL);
|
mpsoc::MAX_REPLY_SIZE, UartModes::NON_CANONICAL);
|
||||||
@ -673,22 +587,24 @@ void ObjectFactory::createPayloadComponents(LinuxLibgpioIF* gpioComIF) {
|
|||||||
#if OBSW_ADD_PLOC_SUPERVISOR == 1
|
#if OBSW_ADD_PLOC_SUPERVISOR == 1
|
||||||
consumer << "0x" << std::hex << objects::PLOC_SUPERVISOR_HANDLER;
|
consumer << "0x" << std::hex << objects::PLOC_SUPERVISOR_HANDLER;
|
||||||
auto gpioConfigSupv = new GpiodRegularByLineName(q7s::gpioNames::ENABLE_SUPV_UART, consumer.str(),
|
auto gpioConfigSupv = new GpiodRegularByLineName(q7s::gpioNames::ENABLE_SUPV_UART, consumer.str(),
|
||||||
Direction::OUT, Levels::HIGH);
|
Direction::OUT, Levels::LOW);
|
||||||
auto supvGpioCookie = new GpioCookie;
|
auto supvGpioCookie = new GpioCookie;
|
||||||
supvGpioCookie->addGpio(gpioIds::ENABLE_SUPV_UART, gpioConfigSupv);
|
supvGpioCookie->addGpio(gpioIds::ENABLE_SUPV_UART, gpioConfigSupv);
|
||||||
gpioComIF->addGpios(supvGpioCookie);
|
gpioComIF->addGpios(supvGpioCookie);
|
||||||
auto supervisorCookie = new UartCookie(objects::PLOC_SUPERVISOR_HANDLER,
|
auto supervisorCookie =
|
||||||
q7s::UART_PLOC_SUPERVSIOR_DEV, uart::PLOC_SUPERVISOR_BAUD,
|
new UartCookie(objects::PLOC_SUPERVISOR_HANDLER, q7s::UART_PLOC_SUPERVSIOR_DEV,
|
||||||
supv::MAX_PACKET_SIZE * 20, UartModes::NON_CANONICAL);
|
uart::PLOC_SUPV_BAUD, supv::MAX_PACKET_SIZE * 20, UartModes::NON_CANONICAL);
|
||||||
supervisorCookie->setNoFixedSizeReply();
|
supervisorCookie->setNoFixedSizeReply();
|
||||||
|
auto supvHelper = new PlocSupvHelper(objects::PLOC_SUPERVISOR_HELPER);
|
||||||
new PlocSupervisorHandler(objects::PLOC_SUPERVISOR_HANDLER, objects::UART_COM_IF,
|
new PlocSupervisorHandler(objects::PLOC_SUPERVISOR_HANDLER, objects::UART_COM_IF,
|
||||||
supervisorCookie, Gpio(gpioIds::ENABLE_SUPV_UART, gpioComIF),
|
supervisorCookie, Gpio(gpioIds::ENABLE_SUPV_UART, gpioComIF),
|
||||||
pcdu::PDU1_CH6_PLOC_12V);
|
pcdu::PDU1_CH6_PLOC_12V, supvHelper);
|
||||||
#endif /* OBSW_ADD_PLOC_SUPERVISOR == 1 */
|
#endif /* OBSW_ADD_PLOC_SUPERVISOR == 1 */
|
||||||
static_cast<void>(consumer);
|
static_cast<void>(consumer);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ObjectFactory::createReactionWheelComponents(LinuxLibgpioIF* gpioComIF) {
|
void ObjectFactory::createReactionWheelComponents(LinuxLibgpioIF* gpioComIF,
|
||||||
|
PowerSwitchIF* pwrSwitcher) {
|
||||||
using namespace gpio;
|
using namespace gpio;
|
||||||
GpioCookie* gpioCookieRw = new GpioCookie;
|
GpioCookie* gpioCookieRw = new GpioCookie;
|
||||||
GpioCallback* csRw1 =
|
GpioCallback* csRw1 =
|
||||||
@ -730,50 +646,38 @@ void ObjectFactory::createReactionWheelComponents(LinuxLibgpioIF* gpioComIF) {
|
|||||||
Levels::LOW);
|
Levels::LOW);
|
||||||
gpioCookieRw->addGpio(gpioIds::EN_RW4, gpio);
|
gpioCookieRw->addGpio(gpioIds::EN_RW4, gpio);
|
||||||
|
|
||||||
gpioComIF->addGpios(gpioCookieRw);
|
gpioChecker(gpioComIF->addGpios(gpioCookieRw), "RWs");
|
||||||
|
|
||||||
#if OBSW_ADD_RW == 1
|
#if OBSW_ADD_RW == 1
|
||||||
auto rw1SpiCookie =
|
std::array<std::pair<address_t, gpioId_t>, 4> rwCookieParams = {
|
||||||
new SpiCookie(addresses::RW1, gpioIds::CS_RW1, q7s::SPI_RW_DEV, RwDefinitions::MAX_REPLY_SIZE,
|
{{addresses::RW1, gpioIds::CS_RW1},
|
||||||
spi::RW_MODE, spi::RW_SPEED, &rwSpiCallback::spiCallback, nullptr);
|
{addresses::RW2, gpioIds::CS_RW2},
|
||||||
auto rw2SpiCookie =
|
{addresses::RW3, gpioIds::CS_RW3},
|
||||||
new SpiCookie(addresses::RW2, gpioIds::CS_RW2, q7s::SPI_RW_DEV, RwDefinitions::MAX_REPLY_SIZE,
|
{addresses::RW4, gpioIds::CS_RW4}}};
|
||||||
spi::RW_MODE, spi::RW_SPEED, &rwSpiCallback::spiCallback, nullptr);
|
std::array<SpiCookie*, 4> rwCookies = {};
|
||||||
auto rw3SpiCookie =
|
std::array<object_id_t, 4> rwIds = {objects::RW1, objects::RW2, objects::RW3, objects::RW4};
|
||||||
new SpiCookie(addresses::RW3, gpioIds::CS_RW3, q7s::SPI_RW_DEV, RwDefinitions::MAX_REPLY_SIZE,
|
std::array<gpioId_t, 4> rwGpioIds = {gpioIds::EN_RW1, gpioIds::EN_RW2, gpioIds::EN_RW3,
|
||||||
spi::RW_MODE, spi::RW_SPEED, &rwSpiCallback::spiCallback, nullptr);
|
gpioIds::EN_RW4};
|
||||||
auto rw4SpiCookie =
|
std::array<RwHandler*, 4> rws = {};
|
||||||
new SpiCookie(addresses::RW4, gpioIds::CS_RW4, q7s::SPI_RW_DEV, RwDefinitions::MAX_REPLY_SIZE,
|
for (uint8_t idx = 0; idx < rwCookies.size(); idx++) {
|
||||||
spi::RW_MODE, spi::RW_SPEED, &rwSpiCallback::spiCallback, nullptr);
|
rwCookies[idx] = new SpiCookie(rwCookieParams[idx].first, rwCookieParams[idx].second,
|
||||||
|
RwDefinitions::MAX_REPLY_SIZE, spi::RW_MODE, spi::RW_SPEED,
|
||||||
|
&rwSpiCallback::spiCallback, nullptr);
|
||||||
|
rws[idx] = new RwHandler(rwIds[idx], objects::SPI_RW_COM_IF, rwCookies[idx], gpioComIF,
|
||||||
|
rwGpioIds[idx]);
|
||||||
|
rwCookies[idx]->setCallbackArgs(rws[idx]);
|
||||||
|
#if OBSW_TEST_RW == 1
|
||||||
|
rws[idx]->setStartUpImmediately();
|
||||||
|
#endif
|
||||||
|
#if OBSW_DEBUG_RW == 1
|
||||||
|
rws[idx]->setDebugMode(true);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
auto rwHandler1 =
|
RwHelper rwHelper(rwIds);
|
||||||
new RwHandler(objects::RW1, objects::SPI_COM_IF, rw1SpiCookie, gpioComIF, gpioIds::EN_RW1);
|
auto* rwAss = new RwAssembly(objects::RW_ASS, objects::NO_OBJECT, pwrSwitcher,
|
||||||
rw1SpiCookie->setCallbackArgs(rwHandler1);
|
pcdu::Switches::PDU2_CH2_RW_5V, rwHelper);
|
||||||
#if OBSW_DEBUG_RW == 1
|
static_cast<void>(rwAss);
|
||||||
rwHandler1->setStartUpImmediately();
|
|
||||||
rwHandler1->setDebugMode(true);
|
|
||||||
#endif
|
|
||||||
auto rwHandler2 =
|
|
||||||
new RwHandler(objects::RW2, objects::SPI_COM_IF, rw2SpiCookie, gpioComIF, gpioIds::EN_RW2);
|
|
||||||
rw2SpiCookie->setCallbackArgs(rwHandler2);
|
|
||||||
#if OBSW_DEBUG_RW == 1
|
|
||||||
rwHandler2->setStartUpImmediately();
|
|
||||||
rwHandler2->setDebugMode(true);
|
|
||||||
#endif
|
|
||||||
auto rwHandler3 =
|
|
||||||
new RwHandler(objects::RW3, objects::SPI_COM_IF, rw3SpiCookie, gpioComIF, gpioIds::EN_RW3);
|
|
||||||
rw3SpiCookie->setCallbackArgs(rwHandler3);
|
|
||||||
#if OBSW_DEBUG_RW == 1
|
|
||||||
rwHandler3->setStartUpImmediately();
|
|
||||||
rwHandler3->setDebugMode(true);
|
|
||||||
#endif
|
|
||||||
auto rwHandler4 =
|
|
||||||
new RwHandler(objects::RW4, objects::SPI_COM_IF, rw4SpiCookie, gpioComIF, gpioIds::EN_RW4);
|
|
||||||
rw4SpiCookie->setCallbackArgs(rwHandler4);
|
|
||||||
#if OBSW_DEBUG_RW == 1
|
|
||||||
rwHandler4->setStartUpImmediately();
|
|
||||||
rwHandler4->setDebugMode(true);
|
|
||||||
#endif
|
|
||||||
#endif /* OBSW_ADD_RW == 1 */
|
#endif /* OBSW_ADD_RW == 1 */
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -812,7 +716,7 @@ void ObjectFactory::createCcsdsComponents(LinuxLibgpioIF* gpioComIF) {
|
|||||||
gpio = new GpiodRegularByLineName(q7s::gpioNames::PAPB_EMPTY_SIGNAL_VC3, consumer.str());
|
gpio = new GpiodRegularByLineName(q7s::gpioNames::PAPB_EMPTY_SIGNAL_VC3, consumer.str());
|
||||||
gpioCookiePtmeIp->addGpio(gpioIds::VC3_PAPB_EMPTY, gpio);
|
gpioCookiePtmeIp->addGpio(gpioIds::VC3_PAPB_EMPTY, gpio);
|
||||||
|
|
||||||
gpioComIF->addGpios(gpioCookiePtmeIp);
|
gpioChecker(gpioComIF->addGpios(gpioCookiePtmeIp), "PTME PAPB VCs");
|
||||||
|
|
||||||
// Creating virtual channel interfaces
|
// Creating virtual channel interfaces
|
||||||
VcInterfaceIF* vc0 =
|
VcInterfaceIF* vc0 =
|
||||||
@ -866,7 +770,7 @@ void ObjectFactory::createCcsdsComponents(LinuxLibgpioIF* gpioComIF) {
|
|||||||
Levels::LOW);
|
Levels::LOW);
|
||||||
gpioCookiePdec->addGpio(gpioIds::PDEC_RESET, gpio);
|
gpioCookiePdec->addGpio(gpioIds::PDEC_RESET, gpio);
|
||||||
|
|
||||||
gpioComIF->addGpios(gpioCookiePdec);
|
gpioChecker(gpioComIF->addGpios(gpioCookiePdec), "PDEC");
|
||||||
|
|
||||||
new PdecHandler(objects::PDEC_HANDLER, objects::CCSDS_HANDLER, gpioComIF, gpioIds::PDEC_RESET,
|
new PdecHandler(objects::PDEC_HANDLER, objects::CCSDS_HANDLER, gpioComIF, gpioIds::PDEC_RESET,
|
||||||
q7s::UIO_PDEC_CONFIG_MEMORY, q7s::UIO_PDEC_RAM, q7s::UIO_PDEC_REGISTERS);
|
q7s::UIO_PDEC_CONFIG_MEMORY, q7s::UIO_PDEC_RAM, q7s::UIO_PDEC_REGISTERS);
|
||||||
@ -887,7 +791,7 @@ void ObjectFactory::createCcsdsComponents(LinuxLibgpioIF* gpioComIF) {
|
|||||||
Direction::OUT, Levels::LOW);
|
Direction::OUT, Levels::LOW);
|
||||||
gpioRS485Chip->addGpio(gpioIds::RS485_EN_RX_DATA, gpio);
|
gpioRS485Chip->addGpio(gpioIds::RS485_EN_RX_DATA, gpio);
|
||||||
|
|
||||||
gpioComIF->addGpios(gpioRS485Chip);
|
gpioChecker(gpioComIF->addGpios(gpioRS485Chip), "RS485 Transceiver");
|
||||||
}
|
}
|
||||||
|
|
||||||
void ObjectFactory::createPlPcduComponents(LinuxLibgpioIF* gpioComIF, SpiComIF* spiComIF,
|
void ObjectFactory::createPlPcduComponents(LinuxLibgpioIF* gpioComIF, SpiComIF* spiComIF,
|
||||||
@ -932,14 +836,14 @@ void ObjectFactory::createPlPcduComponents(LinuxLibgpioIF* gpioComIF, SpiComIF*
|
|||||||
gpio = new GpiodRegularByLineName(q7s::gpioNames::PL_PCDU_ADC_CS, consumer, Direction::OUT,
|
gpio = new GpiodRegularByLineName(q7s::gpioNames::PL_PCDU_ADC_CS, consumer, Direction::OUT,
|
||||||
gpio::Levels::HIGH);
|
gpio::Levels::HIGH);
|
||||||
plPcduGpios->addGpio(gpioIds::PLPCDU_ADC_CS, gpio);
|
plPcduGpios->addGpio(gpioIds::PLPCDU_ADC_CS, gpio);
|
||||||
gpioComIF->addGpios(plPcduGpios);
|
gpioChecker(gpioComIF->addGpios(plPcduGpios), "PL PCDU");
|
||||||
SpiCookie* spiCookie = new SpiCookie(addresses::PLPCDU_ADC, gpioIds::PLPCDU_ADC_CS,
|
SpiCookie* spiCookie =
|
||||||
q7s::SPI_DEFAULT_DEV, plpcdu::MAX_ADC_REPLY_SIZE,
|
new SpiCookie(addresses::PLPCDU_ADC, gpioIds::PLPCDU_ADC_CS, plpcdu::MAX_ADC_REPLY_SIZE,
|
||||||
spi::DEFAULT_MAX_1227_MODE, spi::PL_PCDU_MAX_1227_SPEED);
|
spi::DEFAULT_MAX_1227_MODE, spi::PL_PCDU_MAX_1227_SPEED);
|
||||||
// Create device handler components
|
// Create device handler components
|
||||||
auto plPcduHandler = new PayloadPcduHandler(
|
auto plPcduHandler = new PayloadPcduHandler(
|
||||||
objects::PLPCDU_HANDLER, objects::SPI_COM_IF, spiCookie, gpioComIF, SdCardManager::instance(),
|
objects::PLPCDU_HANDLER, objects::SPI_MAIN_COM_IF, spiCookie, gpioComIF,
|
||||||
pwrSwitcher, pcdu::Switches::PDU2_CH1_PL_PCDU_BATT_0_14V8,
|
SdCardManager::instance(), pwrSwitcher, pcdu::Switches::PDU2_CH1_PL_PCDU_BATT_0_14V8,
|
||||||
pcdu::Switches::PDU2_CH6_PL_PCDU_BATT_1_14V8, false);
|
pcdu::Switches::PDU2_CH6_PL_PCDU_BATT_1_14V8, false);
|
||||||
spiCookie->setCallbackMode(PayloadPcduHandler::extConvAsTwoCallback, plPcduHandler);
|
spiCookie->setCallbackMode(PayloadPcduHandler::extConvAsTwoCallback, plPcduHandler);
|
||||||
// plPcduHandler->enablePeriodicPrintout(true, 5);
|
// plPcduHandler->enablePeriodicPrintout(true, 5);
|
||||||
@ -966,6 +870,50 @@ void ObjectFactory::createTestComponents(LinuxLibgpioIF* gpioComIF) {
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ObjectFactory::createStrComponents(PowerSwitchIF* pwrSwitcher) {
|
||||||
|
UartCookie* starTrackerCookie =
|
||||||
|
new UartCookie(objects::STAR_TRACKER, q7s::UART_STAR_TRACKER_DEV, uart::STAR_TRACKER_BAUD,
|
||||||
|
startracker::MAX_FRAME_SIZE * 2 + 2, UartModes::NON_CANONICAL);
|
||||||
|
starTrackerCookie->setNoFixedSizeReply();
|
||||||
|
StrHelper* strHelper = new StrHelper(objects::STR_HELPER);
|
||||||
|
auto starTracker =
|
||||||
|
new StarTrackerHandler(objects::STAR_TRACKER, objects::UART_COM_IF, starTrackerCookie,
|
||||||
|
strHelper, pcdu::PDU1_CH2_STAR_TRACKER_5V);
|
||||||
|
starTracker->setPowerSwitcher(pwrSwitcher);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ObjectFactory::createImtqComponents(PowerSwitchIF* pwrSwitcher) {
|
||||||
|
I2cCookie* imtqI2cCookie =
|
||||||
|
new I2cCookie(addresses::IMTQ, IMTQ::MAX_REPLY_SIZE, q7s::I2C_DEFAULT_DEV);
|
||||||
|
auto imtqHandler = new IMTQHandler(objects::IMTQ_HANDLER, objects::I2C_COM_IF, imtqI2cCookie,
|
||||||
|
pcdu::Switches::PDU1_CH3_MGT_5V);
|
||||||
|
imtqHandler->setPowerSwitcher(pwrSwitcher);
|
||||||
|
static_cast<void>(imtqHandler);
|
||||||
|
#if OBSW_TEST_IMTQ == 1
|
||||||
|
imtqHandler->setStartUpImmediately();
|
||||||
|
imtqHandler->setToGoToNormal(true);
|
||||||
|
#endif
|
||||||
|
#if OBSW_DEBUG_IMTQ == 1
|
||||||
|
imtqHandler->setDebugMode(true);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void ObjectFactory::createBpxBatteryComponent() {
|
||||||
|
I2cCookie* bpxI2cCookie = new I2cCookie(addresses::BPX_BATTERY, 100, q7s::I2C_DEFAULT_DEV);
|
||||||
|
BpxBatteryHandler* bpxHandler =
|
||||||
|
new BpxBatteryHandler(objects::BPX_BATT_HANDLER, objects::I2C_COM_IF, bpxI2cCookie);
|
||||||
|
bpxHandler->setStartUpImmediately();
|
||||||
|
bpxHandler->setToGoToNormalMode(true);
|
||||||
|
#if OBSW_DEBUG_BPX_BATT == 1
|
||||||
|
bpxHandler->setDebugMode(true);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void ObjectFactory::createMiscComponents() {
|
||||||
|
new FileSystemHandler(objects::FILE_SYSTEM_HANDLER);
|
||||||
|
new PlocMemoryDumper(objects::PLOC_MEMORY_DUMPER);
|
||||||
|
}
|
||||||
|
|
||||||
void ObjectFactory::testAcsBrdAss(AcsBoardAssembly* acsAss) {
|
void ObjectFactory::testAcsBrdAss(AcsBoardAssembly* acsAss) {
|
||||||
CommandMessage msg;
|
CommandMessage msg;
|
||||||
ModeMessage::setModeMessage(&msg, ModeMessage::CMD_MODE_COMMAND, DeviceHandlerIF::MODE_NORMAL,
|
ModeMessage::setModeMessage(&msg, ModeMessage::CMD_MODE_COMMAND, DeviceHandlerIF::MODE_NORMAL,
|
@ -1,6 +1,10 @@
|
|||||||
#ifndef BSP_Q7S_OBJECTFACTORY_H_
|
#ifndef BSP_Q7S_OBJECTFACTORY_H_
|
||||||
#define BSP_Q7S_OBJECTFACTORY_H_
|
#define BSP_Q7S_OBJECTFACTORY_H_
|
||||||
|
|
||||||
|
#include <fsfw/returnvalues/HasReturnvaluesIF.h>
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
class LinuxLibgpioIF;
|
class LinuxLibgpioIF;
|
||||||
class UartComIF;
|
class UartComIF;
|
||||||
class SpiComIF;
|
class SpiComIF;
|
||||||
@ -14,7 +18,8 @@ void setStatics();
|
|||||||
void produce(void* args);
|
void produce(void* args);
|
||||||
|
|
||||||
void createCommunicationInterfaces(LinuxLibgpioIF** gpioComIF, UartComIF** uartComIF,
|
void createCommunicationInterfaces(LinuxLibgpioIF** gpioComIF, UartComIF** uartComIF,
|
||||||
SpiComIF** spiComIF, I2cComIF** i2cComIF);
|
SpiComIF** spiMainComIF, I2cComIF** i2cComIF,
|
||||||
|
SpiComIF** spiRwComIF);
|
||||||
void createPcduComponents(LinuxLibgpioIF* gpioComIF, PowerSwitchIF** pwrSwitcher);
|
void createPcduComponents(LinuxLibgpioIF* gpioComIF, PowerSwitchIF** pwrSwitcher);
|
||||||
void createPlPcduComponents(LinuxLibgpioIF* gpioComIF, SpiComIF* spiComIF,
|
void createPlPcduComponents(LinuxLibgpioIF* gpioComIF, SpiComIF* spiComIF,
|
||||||
PowerSwitchIF* pwrSwitcher);
|
PowerSwitchIF* pwrSwitcher);
|
||||||
@ -23,11 +28,16 @@ void createRadSensorComponent(LinuxLibgpioIF* gpioComIF);
|
|||||||
void createAcsBoardComponents(LinuxLibgpioIF* gpioComIF, UartComIF* uartComIF,
|
void createAcsBoardComponents(LinuxLibgpioIF* gpioComIF, UartComIF* uartComIF,
|
||||||
PowerSwitchIF* pwrSwitcher);
|
PowerSwitchIF* pwrSwitcher);
|
||||||
void createHeaterComponents();
|
void createHeaterComponents();
|
||||||
|
void createImtqComponents(PowerSwitchIF* pwrSwitcher);
|
||||||
|
void createBpxBatteryComponent();
|
||||||
|
void createStrComponents(PowerSwitchIF* pwrSwitcher);
|
||||||
void createSolarArrayDeploymentComponents();
|
void createSolarArrayDeploymentComponents();
|
||||||
void createSyrlinksComponents(PowerSwitchIF* pwrSwitcher);
|
void createSyrlinksComponents(PowerSwitchIF* pwrSwitcher);
|
||||||
void createPayloadComponents(LinuxLibgpioIF* gpioComIF);
|
void createPayloadComponents(LinuxLibgpioIF* gpioComIF);
|
||||||
void createReactionWheelComponents(LinuxLibgpioIF* gpioComIF);
|
void createReactionWheelComponents(LinuxLibgpioIF* gpioComIF, PowerSwitchIF* pwrSwitcher);
|
||||||
void createCcsdsComponents(LinuxLibgpioIF* gpioComIF);
|
void createCcsdsComponents(LinuxLibgpioIF* gpioComIF);
|
||||||
|
void createMiscComponents();
|
||||||
|
|
||||||
void createTestComponents(LinuxLibgpioIF* gpioComIF);
|
void createTestComponents(LinuxLibgpioIF* gpioComIF);
|
||||||
|
|
||||||
void testAcsBrdAss(AcsBoardAssembly* assAss);
|
void testAcsBrdAss(AcsBoardAssembly* assAss);
|
||||||
|
@ -1,128 +1,13 @@
|
|||||||
#include <mission/system/fdir/GomspacePowerFdir.h>
|
|
||||||
#include <mission/system/fdir/SyrlinksFdir.h>
|
|
||||||
|
|
||||||
#include "OBSWConfig.h"
|
#include "OBSWConfig.h"
|
||||||
#include "bsp_q7s/boardtest/Q7STestTask.h"
|
|
||||||
#include "bsp_q7s/callbacks/gnssCallback.h"
|
|
||||||
#include "bsp_q7s/callbacks/pcduSwitchCb.h"
|
|
||||||
#include "bsp_q7s/callbacks/q7sGpioCallbacks.h"
|
|
||||||
#include "bsp_q7s/callbacks/rwSpiCallback.h"
|
|
||||||
#include "bsp_q7s/core/CoreController.h"
|
#include "bsp_q7s/core/CoreController.h"
|
||||||
#include "bsp_q7s/core/ObjectFactory.h"
|
#include "bsp_q7s/core/ObjectFactory.h"
|
||||||
#include "bsp_q7s/memory/FileSystemHandler.h"
|
|
||||||
#include "busConf.h"
|
#include "busConf.h"
|
||||||
#include "ccsdsConfig.h"
|
#include "commonObjects.h"
|
||||||
#include "devConf.h"
|
#include "devConf.h"
|
||||||
#include "devices/addresses.h"
|
|
||||||
#include "devices/gpioIds.h"
|
|
||||||
#include "devices/powerSwitcherList.h"
|
|
||||||
#include "fsfw/ipc/QueueFactory.h"
|
|
||||||
#include "linux/ObjectFactory.h"
|
|
||||||
#include "linux/boardtest/I2cTestClass.h"
|
|
||||||
#include "linux/boardtest/SpiTestClass.h"
|
|
||||||
#include "linux/boardtest/UartTestClass.h"
|
|
||||||
#include "linux/callbacks/gpioCallbacks.h"
|
|
||||||
#include "linux/csp/CspComIF.h"
|
|
||||||
#include "linux/csp/CspCookie.h"
|
|
||||||
#include "linux/devices/GPSHyperionLinuxController.h"
|
|
||||||
#include "linux/devices/devicedefinitions/PlocMPSoCDefinitions.h"
|
|
||||||
#include "linux/devices/devicedefinitions/StarTrackerDefinitions.h"
|
|
||||||
#include "linux/devices/ploc/PlocMPSoCHandler.h"
|
|
||||||
#include "linux/devices/ploc/PlocMPSoCHelper.h"
|
|
||||||
#include "linux/devices/ploc/PlocMemoryDumper.h"
|
|
||||||
#include "linux/devices/ploc/PlocSupervisorHandler.h"
|
|
||||||
#include "linux/devices/ploc/PlocUpdater.h"
|
|
||||||
#include "linux/devices/startracker/StarTrackerHandler.h"
|
|
||||||
#include "linux/devices/startracker/StrHelper.h"
|
|
||||||
#include "linux/obc/AxiPtmeConfig.h"
|
|
||||||
#include "linux/obc/PapbVcInterface.h"
|
|
||||||
#include "linux/obc/PdecHandler.h"
|
|
||||||
#include "linux/obc/Ptme.h"
|
|
||||||
#include "linux/obc/PtmeConfig.h"
|
|
||||||
#include "mission/system/SusAssembly.h"
|
|
||||||
#include "mission/system/TcsBoardAssembly.h"
|
|
||||||
#include "mission/system/fdir/AcsBoardFdir.h"
|
|
||||||
#include "mission/system/fdir/RtdFdir.h"
|
|
||||||
#include "mission/system/fdir/SusFdir.h"
|
|
||||||
#include "tmtc/apid.h"
|
|
||||||
#include "tmtc/pusIds.h"
|
|
||||||
#if OBSW_TEST_LIBGPIOD == 1
|
|
||||||
#include "linux/boardtest/LibgpiodTest.h"
|
|
||||||
#endif
|
|
||||||
#include <sstream>
|
|
||||||
|
|
||||||
#include "fsfw/datapoollocal/LocalDataPoolManager.h"
|
|
||||||
#include "fsfw/tmtcpacket/pus/tm.h"
|
|
||||||
#include "fsfw/tmtcservices/CommandingServiceBase.h"
|
|
||||||
#include "fsfw/tmtcservices/PusServiceBase.h"
|
|
||||||
#include "fsfw_hal/common/gpio/GpioCookie.h"
|
|
||||||
#include "fsfw_hal/common/gpio/gpioDefinitions.h"
|
|
||||||
#include "fsfw_hal/devicehandlers/GyroL3GD20Handler.h"
|
|
||||||
#include "fsfw_hal/devicehandlers/MgmLIS3MDLHandler.h"
|
|
||||||
#include "fsfw_hal/devicehandlers/MgmRM3100Handler.h"
|
|
||||||
#include "fsfw_hal/linux/gpio/LinuxLibgpioIF.h"
|
#include "fsfw_hal/linux/gpio/LinuxLibgpioIF.h"
|
||||||
#include "fsfw_hal/linux/i2c/I2cComIF.h"
|
#include "linux/ObjectFactory.h"
|
||||||
#include "fsfw_hal/linux/i2c/I2cCookie.h"
|
#include "linux/callbacks/gpioCallbacks.h"
|
||||||
#include "fsfw_hal/linux/spi/SpiComIF.h"
|
|
||||||
#include "fsfw_hal/linux/spi/SpiCookie.h"
|
|
||||||
#include "fsfw_hal/linux/uart/UartComIF.h"
|
|
||||||
#include "fsfw_hal/linux/uart/UartCookie.h"
|
|
||||||
#include "mission/core/GenericFactory.h"
|
#include "mission/core/GenericFactory.h"
|
||||||
#include "mission/devices/ACUHandler.h"
|
|
||||||
#include "mission/devices/BpxBatteryHandler.h"
|
|
||||||
#include "mission/devices/GyroADIS1650XHandler.h"
|
|
||||||
#include "mission/devices/HeaterHandler.h"
|
|
||||||
#include "mission/devices/IMTQHandler.h"
|
|
||||||
#include "mission/devices/Max31865PT1000Handler.h"
|
|
||||||
#include "mission/devices/P60DockHandler.h"
|
|
||||||
#include "mission/devices/PCDUHandler.h"
|
|
||||||
#include "mission/devices/PDU1Handler.h"
|
|
||||||
#include "mission/devices/PDU2Handler.h"
|
|
||||||
#include "mission/devices/PayloadPcduHandler.h"
|
|
||||||
#include "mission/devices/RadiationSensorHandler.h"
|
|
||||||
#include "mission/devices/RwHandler.h"
|
|
||||||
#include "mission/devices/SolarArrayDeploymentHandler.h"
|
|
||||||
#include "mission/devices/SusHandler.h"
|
|
||||||
#include "mission/devices/SyrlinksHkHandler.h"
|
|
||||||
#include "mission/devices/Tmp1075Handler.h"
|
|
||||||
#include "mission/devices/devicedefinitions/GomspaceDefinitions.h"
|
|
||||||
#include "mission/devices/devicedefinitions/Max31865Definitions.h"
|
|
||||||
#include "mission/devices/devicedefinitions/RadSensorDefinitions.h"
|
|
||||||
#include "mission/devices/devicedefinitions/RwDefinitions.h"
|
|
||||||
#include "mission/devices/devicedefinitions/SusDefinitions.h"
|
|
||||||
#include "mission/devices/devicedefinitions/SyrlinksDefinitions.h"
|
|
||||||
#include "mission/devices/devicedefinitions/payloadPcduDefinitions.h"
|
|
||||||
#include "mission/system/AcsBoardAssembly.h"
|
|
||||||
#include "mission/tmtc/CCSDSHandler.h"
|
|
||||||
#include "mission/tmtc/VirtualChannel.h"
|
|
||||||
#include "mission/utility/TmFunnel.h"
|
|
||||||
ResetArgs resetArgsGnss0;
|
|
||||||
ResetArgs resetArgsGnss1;
|
|
||||||
|
|
||||||
void ObjectFactory::setStatics() { Factory::setStaticFrameworkObjectIds(); }
|
|
||||||
|
|
||||||
void Factory::setStaticFrameworkObjectIds() {
|
|
||||||
PusServiceBase::packetSource = objects::PUS_PACKET_DISTRIBUTOR;
|
|
||||||
PusServiceBase::packetDestination = objects::TM_FUNNEL;
|
|
||||||
|
|
||||||
CommandingServiceBase::defaultPacketSource = objects::PUS_PACKET_DISTRIBUTOR;
|
|
||||||
CommandingServiceBase::defaultPacketDestination = objects::TM_FUNNEL;
|
|
||||||
|
|
||||||
DeviceHandlerBase::powerSwitcherId = objects::PCDU_HANDLER;
|
|
||||||
// DeviceHandlerBase::powerSwitcherId = objects::NO_OBJECT;
|
|
||||||
#if OBSW_TM_TO_PTME == 1
|
|
||||||
TmFunnel::downlinkDestination = objects::CCSDS_HANDLER;
|
|
||||||
#else
|
|
||||||
TmFunnel::downlinkDestination = objects::TMTC_BRIDGE;
|
|
||||||
#endif /* OBSW_TM_TO_PTME == 1 */
|
|
||||||
// No storage object for now.
|
|
||||||
TmFunnel::storageDestination = objects::NO_OBJECT;
|
|
||||||
|
|
||||||
LocalDataPoolManager::defaultHkDestination = objects::PUS_SERVICE_3_HOUSEKEEPING;
|
|
||||||
|
|
||||||
VerificationReporter::messageReceiver = objects::PUS_SERVICE_1_VERIFICATION;
|
|
||||||
TmPacketBase::timeStamperId = objects::TIME_STAMPER;
|
|
||||||
}
|
|
||||||
|
|
||||||
void ObjectFactory::produce(void* args) {
|
void ObjectFactory::produce(void* args) {
|
||||||
ObjectFactory::setStatics();
|
ObjectFactory::setStatics();
|
||||||
@ -130,24 +15,25 @@ void ObjectFactory::produce(void* args) {
|
|||||||
|
|
||||||
LinuxLibgpioIF* gpioComIF = nullptr;
|
LinuxLibgpioIF* gpioComIF = nullptr;
|
||||||
UartComIF* uartComIF = nullptr;
|
UartComIF* uartComIF = nullptr;
|
||||||
SpiComIF* spiComIF = nullptr;
|
SpiComIF* spiMainComIF = nullptr;
|
||||||
I2cComIF* i2cComIF = nullptr;
|
I2cComIF* i2cComIF = nullptr;
|
||||||
PowerSwitchIF* pwrSwitcher = nullptr;
|
PowerSwitchIF* pwrSwitcher = nullptr;
|
||||||
createCommunicationInterfaces(&gpioComIF, &uartComIF, &spiComIF, &i2cComIF);
|
SpiComIF* spiRwComIF = nullptr;
|
||||||
|
createCommunicationInterfaces(&gpioComIF, &uartComIF, &spiMainComIF, &i2cComIF, &spiRwComIF);
|
||||||
createTmpComponents();
|
createTmpComponents();
|
||||||
new CoreController(objects::CORE_CONTROLLER);
|
new CoreController(objects::CORE_CONTROLLER);
|
||||||
|
|
||||||
gpioCallbacks::disableAllDecoder(gpioComIF);
|
gpioCallbacks::disableAllDecoder(gpioComIF);
|
||||||
createPcduComponents(gpioComIF, &pwrSwitcher);
|
createPcduComponents(gpioComIF, &pwrSwitcher);
|
||||||
createRadSensorComponent(gpioComIF);
|
createRadSensorComponent(gpioComIF);
|
||||||
createSunSensorComponents(gpioComIF, spiComIF, pwrSwitcher, q7s::SPI_DEFAULT_DEV);
|
createSunSensorComponents(gpioComIF, spiMainComIF, pwrSwitcher, q7s::SPI_DEFAULT_DEV);
|
||||||
|
|
||||||
#if OBSW_ADD_ACS_BOARD == 1
|
#if OBSW_ADD_ACS_BOARD == 1
|
||||||
createAcsBoardComponents(gpioComIF, uartComIF, pwrSwitcher);
|
createAcsBoardComponents(gpioComIF, uartComIF, pwrSwitcher);
|
||||||
#endif
|
#endif
|
||||||
createHeaterComponents();
|
createHeaterComponents();
|
||||||
createSolarArrayDeploymentComponents();
|
createSolarArrayDeploymentComponents();
|
||||||
createPlPcduComponents(gpioComIF, spiComIF, pwrSwitcher);
|
createPlPcduComponents(gpioComIF, spiMainComIF, pwrSwitcher);
|
||||||
#if OBSW_ADD_SYRLINKS == 1
|
#if OBSW_ADD_SYRLINKS == 1
|
||||||
createSyrlinksComponents(pwrSwitcher);
|
createSyrlinksComponents(pwrSwitcher);
|
||||||
#endif /* OBSW_ADD_SYRLINKS == 1 */
|
#endif /* OBSW_ADD_SYRLINKS == 1 */
|
||||||
@ -155,45 +41,16 @@ void ObjectFactory::produce(void* args) {
|
|||||||
createPayloadComponents(gpioComIF);
|
createPayloadComponents(gpioComIF);
|
||||||
|
|
||||||
#if OBSW_ADD_MGT == 1
|
#if OBSW_ADD_MGT == 1
|
||||||
I2cCookie* imtqI2cCookie =
|
createImtqComponents(pwrSwitcher);
|
||||||
new I2cCookie(addresses::IMTQ, IMTQ::MAX_REPLY_SIZE, q7s::I2C_DEFAULT_DEV);
|
|
||||||
auto imtqHandler = new IMTQHandler(objects::IMTQ_HANDLER, objects::I2C_COM_IF, imtqI2cCookie,
|
|
||||||
pcdu::Switches::PDU1_CH3_MGT_5V);
|
|
||||||
imtqHandler->setPowerSwitcher(pwrSwitcher);
|
|
||||||
static_cast<void>(imtqHandler);
|
|
||||||
#if OBSW_TEST_IMTQ == 1
|
|
||||||
imtqHandler->setStartUpImmediately();
|
|
||||||
imtqHandler->setToGoToNormal(true);
|
|
||||||
#endif
|
#endif
|
||||||
#if OBSW_DEBUG_IMTQ == 1
|
createReactionWheelComponents(gpioComIF, pwrSwitcher);
|
||||||
imtqHandler->setDebugMode(true);
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
createReactionWheelComponents(gpioComIF);
|
|
||||||
|
|
||||||
#if OBSW_ADD_BPX_BATTERY_HANDLER == 1
|
#if OBSW_ADD_BPX_BATTERY_HANDLER == 1
|
||||||
I2cCookie* bpxI2cCookie = new I2cCookie(addresses::BPX_BATTERY, 100, q7s::I2C_DEFAULT_DEV);
|
createBpxBatteryComponent();
|
||||||
BpxBatteryHandler* bpxHandler =
|
|
||||||
new BpxBatteryHandler(objects::BPX_BATT_HANDLER, objects::I2C_COM_IF, bpxI2cCookie);
|
|
||||||
bpxHandler->setStartUpImmediately();
|
|
||||||
bpxHandler->setToGoToNormalMode(true);
|
|
||||||
#if OBSW_DEBUG_BPX_BATT == 1
|
|
||||||
bpxHandler->setDebugMode(true);
|
|
||||||
#endif
|
#endif
|
||||||
#endif
|
|
||||||
new FileSystemHandler(objects::FILE_SYSTEM_HANDLER);
|
|
||||||
|
|
||||||
#if OBSW_ADD_STAR_TRACKER == 1
|
#if OBSW_ADD_STAR_TRACKER == 1
|
||||||
UartCookie* starTrackerCookie =
|
createStrComponents(pwrSwitcher);
|
||||||
new UartCookie(objects::STAR_TRACKER, q7s::UART_STAR_TRACKER_DEV, uart::STAR_TRACKER_BAUD,
|
|
||||||
startracker::MAX_FRAME_SIZE * 2 + 2, UartModes::NON_CANONICAL);
|
|
||||||
starTrackerCookie->setNoFixedSizeReply();
|
|
||||||
StrHelper* strHelper = new StrHelper(objects::STR_HELPER);
|
|
||||||
auto starTracker =
|
|
||||||
new StarTrackerHandler(objects::STAR_TRACKER, objects::UART_COM_IF, starTrackerCookie,
|
|
||||||
strHelper, pcdu::PDU1_CH2_STAR_TRACKER_5V);
|
|
||||||
starTracker->setPowerSwitcher(pwrSwitcher);
|
|
||||||
|
|
||||||
#endif /* OBSW_ADD_STAR_TRACKER == 1 */
|
#endif /* OBSW_ADD_STAR_TRACKER == 1 */
|
||||||
#if OBSW_USE_CCSDS_IP_CORE == 1
|
#if OBSW_USE_CCSDS_IP_CORE == 1
|
||||||
createCcsdsComponents(gpioComIF);
|
createCcsdsComponents(gpioComIF);
|
||||||
@ -202,771 +59,6 @@ void ObjectFactory::produce(void* args) {
|
|||||||
#if OBSW_ADD_TEST_CODE == 1
|
#if OBSW_ADD_TEST_CODE == 1
|
||||||
createTestComponents(gpioComIF);
|
createTestComponents(gpioComIF);
|
||||||
#endif /* OBSW_ADD_TEST_CODE == 1 */
|
#endif /* OBSW_ADD_TEST_CODE == 1 */
|
||||||
new PlocUpdater(objects::PLOC_UPDATER);
|
|
||||||
new PlocMemoryDumper(objects::PLOC_MEMORY_DUMPER);
|
createMiscComponents();
|
||||||
}
|
|
||||||
|
|
||||||
void ObjectFactory::createTmpComponents() {
|
|
||||||
I2cCookie* i2cCookieTmp1075tcs1 =
|
|
||||||
new I2cCookie(addresses::TMP1075_TCS_1, TMP1075::MAX_REPLY_LENGTH, q7s::I2C_DEFAULT_DEV);
|
|
||||||
I2cCookie* i2cCookieTmp1075tcs2 =
|
|
||||||
new I2cCookie(addresses::TMP1075_TCS_2, TMP1075::MAX_REPLY_LENGTH, q7s::I2C_DEFAULT_DEV);
|
|
||||||
|
|
||||||
/* Temperature sensors */
|
|
||||||
Tmp1075Handler* tmp1075Handler_1 =
|
|
||||||
new Tmp1075Handler(objects::TMP1075_HANDLER_1, objects::I2C_COM_IF, i2cCookieTmp1075tcs1);
|
|
||||||
(void)tmp1075Handler_1;
|
|
||||||
Tmp1075Handler* tmp1075Handler_2 =
|
|
||||||
new Tmp1075Handler(objects::TMP1075_HANDLER_2, objects::I2C_COM_IF, i2cCookieTmp1075tcs2);
|
|
||||||
(void)tmp1075Handler_2;
|
|
||||||
}
|
|
||||||
|
|
||||||
void ObjectFactory::createCommunicationInterfaces(LinuxLibgpioIF** gpioComIF, UartComIF** uartComIF,
|
|
||||||
SpiComIF** spiComIF, I2cComIF** i2cComIF) {
|
|
||||||
if (gpioComIF == nullptr or uartComIF == nullptr or spiComIF == nullptr) {
|
|
||||||
sif::error << "ObjectFactory::createCommunicationInterfaces: Invalid passed ComIF pointer"
|
|
||||||
<< std::endl;
|
|
||||||
}
|
|
||||||
*gpioComIF = new LinuxLibgpioIF(objects::GPIO_IF);
|
|
||||||
|
|
||||||
/* Communication interfaces */
|
|
||||||
new CspComIF(objects::CSP_COM_IF);
|
|
||||||
*i2cComIF = new I2cComIF(objects::I2C_COM_IF);
|
|
||||||
*uartComIF = new UartComIF(objects::UART_COM_IF);
|
|
||||||
*spiComIF = new SpiComIF(objects::SPI_COM_IF, *gpioComIF);
|
|
||||||
|
|
||||||
/* Adding gpios for chip select decoding to the gpioComIf */
|
|
||||||
q7s::gpioCallbacks::initSpiCsDecoder(*gpioComIF);
|
|
||||||
}
|
|
||||||
|
|
||||||
void ObjectFactory::createPcduComponents(LinuxLibgpioIF* gpioComIF, PowerSwitchIF** pwrSwitcher) {
|
|
||||||
CspCookie* p60DockCspCookie = new CspCookie(P60Dock::MAX_REPLY_LENGTH, addresses::P60DOCK);
|
|
||||||
CspCookie* pdu1CspCookie = new CspCookie(PDU::MAX_REPLY_LENGTH, addresses::PDU1);
|
|
||||||
CspCookie* pdu2CspCookie = new CspCookie(PDU::MAX_REPLY_LENGTH, addresses::PDU2);
|
|
||||||
CspCookie* acuCspCookie = new CspCookie(ACU::MAX_REPLY_LENGTH, addresses::ACU);
|
|
||||||
|
|
||||||
auto p60Fdir = new GomspacePowerFdir(objects::P60DOCK_HANDLER);
|
|
||||||
P60DockHandler* p60dockhandler =
|
|
||||||
new P60DockHandler(objects::P60DOCK_HANDLER, objects::CSP_COM_IF, p60DockCspCookie, p60Fdir);
|
|
||||||
|
|
||||||
auto pdu1Fdir = new GomspacePowerFdir(objects::PDU1_HANDLER);
|
|
||||||
PDU1Handler* pdu1handler =
|
|
||||||
new PDU1Handler(objects::PDU1_HANDLER, objects::CSP_COM_IF, pdu1CspCookie, pdu1Fdir);
|
|
||||||
|
|
||||||
auto pdu2Fdir = new GomspacePowerFdir(objects::PDU2_HANDLER);
|
|
||||||
PDU2Handler* pdu2handler =
|
|
||||||
new PDU2Handler(objects::PDU2_HANDLER, objects::CSP_COM_IF, pdu2CspCookie, pdu2Fdir);
|
|
||||||
|
|
||||||
auto acuFdir = new GomspacePowerFdir(objects::ACU_HANDLER);
|
|
||||||
ACUHandler* acuhandler =
|
|
||||||
new ACUHandler(objects::ACU_HANDLER, objects::CSP_COM_IF, acuCspCookie, acuFdir);
|
|
||||||
auto pcduHandler = new PCDUHandler(objects::PCDU_HANDLER, 50);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Setting PCDU devices to mode normal immediately after start up because PCDU is always
|
|
||||||
* running.
|
|
||||||
*/
|
|
||||||
p60dockhandler->setModeNormal();
|
|
||||||
pdu1handler->setModeNormal();
|
|
||||||
pdu2handler->setModeNormal();
|
|
||||||
acuhandler->setModeNormal();
|
|
||||||
if (pwrSwitcher != nullptr) {
|
|
||||||
*pwrSwitcher = pcduHandler;
|
|
||||||
}
|
|
||||||
#if OBSW_DEBUG_P60DOCK == 1
|
|
||||||
p60dockhandler->setDebugMode(true);
|
|
||||||
#endif
|
|
||||||
#if OBSW_DEBUG_ACU == 1
|
|
||||||
acuhandler->setDebugMode(true);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
void ObjectFactory::createRadSensorComponent(LinuxLibgpioIF* gpioComIF) {
|
|
||||||
using namespace gpio;
|
|
||||||
GpioCookie* gpioCookieRadSensor = new GpioCookie;
|
|
||||||
std::stringstream consumer;
|
|
||||||
consumer << "0x" << std::hex << objects::RAD_SENSOR;
|
|
||||||
GpiodRegularByLineName* gpio = new GpiodRegularByLineName(
|
|
||||||
q7s::gpioNames::RAD_SENSOR_CHIP_SELECT, consumer.str(), Direction::OUT, Levels::HIGH);
|
|
||||||
gpioCookieRadSensor->addGpio(gpioIds::CS_RAD_SENSOR, gpio);
|
|
||||||
gpio = new GpiodRegularByLineName(q7s::gpioNames::ENABLE_RADFET, consumer.str(), Direction::OUT,
|
|
||||||
Levels::LOW);
|
|
||||||
gpioCookieRadSensor->addGpio(gpioIds::ENABLE_RADFET, gpio);
|
|
||||||
gpioComIF->addGpios(gpioCookieRadSensor);
|
|
||||||
|
|
||||||
SpiCookie* spiCookieRadSensor = new SpiCookie(
|
|
||||||
addresses::RAD_SENSOR, gpioIds::CS_RAD_SENSOR, std::string(q7s::SPI_DEFAULT_DEV),
|
|
||||||
RAD_SENSOR::READ_SIZE, spi::DEFAULT_MAX_1227_MODE, spi::DEFAULT_MAX_1227_SPEED);
|
|
||||||
auto radSensor = new RadiationSensorHandler(objects::RAD_SENSOR, objects::SPI_COM_IF,
|
|
||||||
spiCookieRadSensor, gpioComIF);
|
|
||||||
static_cast<void>(radSensor);
|
|
||||||
// The radiation sensor ADC is powered by the 5V stack connector which should always be on
|
|
||||||
radSensor->setStartUpImmediately();
|
|
||||||
// It's a simple sensor, so just to to normal mode immediately
|
|
||||||
radSensor->setToGoToNormalModeImmediately();
|
|
||||||
#if OBSW_DEBUG_RAD_SENSOR == 1
|
|
||||||
radSensor->enablePeriodicDataPrint(true);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
void ObjectFactory::createAcsBoardComponents(LinuxLibgpioIF* gpioComIF, UartComIF* uartComIF,
|
|
||||||
PowerSwitchIF* pwrSwitcher) {
|
|
||||||
using namespace gpio;
|
|
||||||
GpioCookie* gpioCookieAcsBoard = new GpioCookie();
|
|
||||||
|
|
||||||
std::stringstream consumer;
|
|
||||||
GpiodRegularByLineName* gpio = nullptr;
|
|
||||||
consumer << "0x" << std::hex << objects::GYRO_0_ADIS_HANDLER;
|
|
||||||
gpio = new GpiodRegularByLineName(q7s::gpioNames::GYRO_0_ADIS_CS, consumer.str(), Direction::OUT,
|
|
||||||
Levels::HIGH);
|
|
||||||
gpioCookieAcsBoard->addGpio(gpioIds::GYRO_0_ADIS_CS, gpio);
|
|
||||||
|
|
||||||
consumer.str("");
|
|
||||||
consumer << "0x" << std::hex << objects::GYRO_1_L3G_HANDLER;
|
|
||||||
gpio = new GpiodRegularByLineName(q7s::gpioNames::GYRO_1_L3G_CS, consumer.str(), Direction::OUT,
|
|
||||||
Levels::HIGH);
|
|
||||||
gpioCookieAcsBoard->addGpio(gpioIds::GYRO_1_L3G_CS, gpio);
|
|
||||||
|
|
||||||
consumer.str("");
|
|
||||||
consumer << "0x" << std::hex << objects::GYRO_2_ADIS_HANDLER;
|
|
||||||
gpio = new GpiodRegularByLineName(q7s::gpioNames::GYRO_2_ADIS_CS, consumer.str(), Direction::OUT,
|
|
||||||
Levels::HIGH);
|
|
||||||
gpioCookieAcsBoard->addGpio(gpioIds::GYRO_2_ADIS_CS, gpio);
|
|
||||||
|
|
||||||
consumer.str("");
|
|
||||||
consumer << "0x" << std::hex << objects::GYRO_3_L3G_HANDLER;
|
|
||||||
gpio = new GpiodRegularByLineName(q7s::gpioNames::GYRO_3_L3G_CS, consumer.str(), Direction::OUT,
|
|
||||||
Levels::HIGH);
|
|
||||||
gpioCookieAcsBoard->addGpio(gpioIds::GYRO_3_L3G_CS, gpio);
|
|
||||||
|
|
||||||
consumer.str("");
|
|
||||||
consumer << "0x" << std::hex << objects::MGM_0_LIS3_HANDLER;
|
|
||||||
gpio = new GpiodRegularByLineName(q7s::gpioNames::MGM_0_CS, consumer.str(), Direction::OUT,
|
|
||||||
Levels::HIGH);
|
|
||||||
gpioCookieAcsBoard->addGpio(gpioIds::MGM_0_LIS3_CS, gpio);
|
|
||||||
|
|
||||||
consumer.str("");
|
|
||||||
consumer << "0x" << std::hex << objects::MGM_1_RM3100_HANDLER;
|
|
||||||
gpio = new GpiodRegularByLineName(q7s::gpioNames::MGM_1_CS, consumer.str(), Direction::OUT,
|
|
||||||
Levels::HIGH);
|
|
||||||
gpioCookieAcsBoard->addGpio(gpioIds::MGM_1_RM3100_CS, gpio);
|
|
||||||
|
|
||||||
consumer.str("");
|
|
||||||
consumer << "0x" << std::hex << objects::MGM_2_LIS3_HANDLER;
|
|
||||||
gpio = new GpiodRegularByLineName(q7s::gpioNames::MGM_2_CS, consumer.str(), Direction::OUT,
|
|
||||||
Levels::HIGH);
|
|
||||||
gpioCookieAcsBoard->addGpio(gpioIds::MGM_2_LIS3_CS, gpio);
|
|
||||||
|
|
||||||
consumer.str("");
|
|
||||||
consumer << "0x" << std::hex << objects::MGM_3_RM3100_HANDLER;
|
|
||||||
gpio = new GpiodRegularByLineName(q7s::gpioNames::MGM_3_CS, consumer.str(), Direction::OUT,
|
|
||||||
Levels::HIGH);
|
|
||||||
gpioCookieAcsBoard->addGpio(gpioIds::MGM_3_RM3100_CS, gpio);
|
|
||||||
|
|
||||||
consumer.str("");
|
|
||||||
consumer << "0x" << std::hex << objects::GPS_CONTROLLER;
|
|
||||||
// GNSS reset pins are active low
|
|
||||||
gpio = new GpiodRegularByLineName(q7s::gpioNames::RESET_GNSS_0, consumer.str(), Direction::OUT,
|
|
||||||
Levels::HIGH);
|
|
||||||
gpioCookieAcsBoard->addGpio(gpioIds::GNSS_0_NRESET, gpio);
|
|
||||||
|
|
||||||
consumer.str("");
|
|
||||||
consumer << "0x" << std::hex << objects::GPS_CONTROLLER;
|
|
||||||
gpio = new GpiodRegularByLineName(q7s::gpioNames::RESET_GNSS_1, consumer.str(), Direction::OUT,
|
|
||||||
Levels::HIGH);
|
|
||||||
gpioCookieAcsBoard->addGpio(gpioIds::GNSS_1_NRESET, gpio);
|
|
||||||
|
|
||||||
consumer.str("");
|
|
||||||
consumer << "0x" << std::hex << objects::GYRO_0_ADIS_HANDLER;
|
|
||||||
// Enable pins must be pulled low for regular operations
|
|
||||||
gpio = new GpiodRegularByLineName(q7s::gpioNames::GYRO_0_ENABLE, consumer.str(), Direction::OUT,
|
|
||||||
Levels::LOW);
|
|
||||||
gpioCookieAcsBoard->addGpio(gpioIds::GYRO_0_ENABLE, gpio);
|
|
||||||
|
|
||||||
consumer.str("");
|
|
||||||
consumer << "0x" << std::hex << objects::GYRO_2_ADIS_HANDLER;
|
|
||||||
gpio = new GpiodRegularByLineName(q7s::gpioNames::GYRO_2_ENABLE, consumer.str(), Direction::OUT,
|
|
||||||
Levels::LOW);
|
|
||||||
gpioCookieAcsBoard->addGpio(gpioIds::GYRO_2_ENABLE, gpio);
|
|
||||||
|
|
||||||
// Enable pins for GNSS
|
|
||||||
consumer.str("");
|
|
||||||
consumer << "0x" << std::hex << objects::GPS_CONTROLLER;
|
|
||||||
gpio = new GpiodRegularByLineName(q7s::gpioNames::GNSS_0_ENABLE, consumer.str(), Direction::OUT,
|
|
||||||
Levels::LOW);
|
|
||||||
gpioCookieAcsBoard->addGpio(gpioIds::GNSS_0_ENABLE, gpio);
|
|
||||||
|
|
||||||
consumer.str("");
|
|
||||||
consumer << "0x" << std::hex << objects::GPS_CONTROLLER;
|
|
||||||
gpio = new GpiodRegularByLineName(q7s::gpioNames::GNSS_1_ENABLE, consumer.str(), Direction::OUT,
|
|
||||||
Levels::LOW);
|
|
||||||
gpioCookieAcsBoard->addGpio(gpioIds::GNSS_1_ENABLE, gpio);
|
|
||||||
|
|
||||||
// Select pin. 0 for GPS side A, 1 for GPS side B
|
|
||||||
consumer.str("");
|
|
||||||
consumer << "0x" << std::hex << objects::GPS_CONTROLLER;
|
|
||||||
gpio = new GpiodRegularByLineName(q7s::gpioNames::GNSS_SELECT, consumer.str(), Direction::OUT,
|
|
||||||
Levels::LOW);
|
|
||||||
gpioCookieAcsBoard->addGpio(gpioIds::GNSS_SELECT, gpio);
|
|
||||||
gpioComIF->addGpios(gpioCookieAcsBoard);
|
|
||||||
AcsBoardFdir* fdir = nullptr;
|
|
||||||
static_cast<void>(fdir);
|
|
||||||
|
|
||||||
#if OBSW_ADD_ACS_HANDLERS == 1
|
|
||||||
std::string spiDev = q7s::SPI_DEFAULT_DEV;
|
|
||||||
SpiCookie* spiCookie =
|
|
||||||
new SpiCookie(addresses::MGM_0_LIS3, gpioIds::MGM_0_LIS3_CS, spiDev,
|
|
||||||
MGMLIS3MDL::MAX_BUFFER_SIZE, spi::DEFAULT_LIS3_MODE, spi::DEFAULT_LIS3_SPEED);
|
|
||||||
auto mgmLis3Handler = new MgmLIS3MDLHandler(objects::MGM_0_LIS3_HANDLER, objects::SPI_COM_IF,
|
|
||||||
spiCookie, spi::LIS3_TRANSITION_DELAY);
|
|
||||||
fdir = new AcsBoardFdir(objects::MGM_0_LIS3_HANDLER);
|
|
||||||
mgmLis3Handler->setCustomFdir(fdir);
|
|
||||||
static_cast<void>(mgmLis3Handler);
|
|
||||||
#if OBSW_TEST_ACS == 1
|
|
||||||
mgmLis3Handler->setStartUpImmediately();
|
|
||||||
mgmLis3Handler->setToGoToNormalMode(true);
|
|
||||||
#endif
|
|
||||||
#if OBSW_DEBUG_ACS == 1
|
|
||||||
mgmLis3Handler->enablePeriodicPrintouts(true, 10);
|
|
||||||
#endif
|
|
||||||
spiCookie =
|
|
||||||
new SpiCookie(addresses::MGM_1_RM3100, gpioIds::MGM_1_RM3100_CS, spiDev,
|
|
||||||
RM3100::MAX_BUFFER_SIZE, spi::DEFAULT_RM3100_MODE, spi::DEFAULT_RM3100_SPEED);
|
|
||||||
auto mgmRm3100Handler = new MgmRM3100Handler(objects::MGM_1_RM3100_HANDLER, objects::SPI_COM_IF,
|
|
||||||
spiCookie, spi::RM3100_TRANSITION_DELAY);
|
|
||||||
fdir = new AcsBoardFdir(objects::MGM_1_RM3100_HANDLER);
|
|
||||||
mgmRm3100Handler->setCustomFdir(fdir);
|
|
||||||
mgmRm3100Handler->setParent(objects::ACS_BOARD_ASS);
|
|
||||||
static_cast<void>(mgmRm3100Handler);
|
|
||||||
#if OBSW_TEST_ACS == 1
|
|
||||||
mgmRm3100Handler->setStartUpImmediately();
|
|
||||||
mgmRm3100Handler->setToGoToNormalMode(true);
|
|
||||||
#endif
|
|
||||||
#if OBSW_DEBUG_ACS == 1
|
|
||||||
mgmRm3100Handler->enablePeriodicPrintouts(true, 10);
|
|
||||||
#endif
|
|
||||||
spiCookie =
|
|
||||||
new SpiCookie(addresses::MGM_2_LIS3, gpioIds::MGM_2_LIS3_CS, spiDev,
|
|
||||||
MGMLIS3MDL::MAX_BUFFER_SIZE, spi::DEFAULT_LIS3_MODE, spi::DEFAULT_LIS3_SPEED);
|
|
||||||
mgmLis3Handler = new MgmLIS3MDLHandler(objects::MGM_2_LIS3_HANDLER, objects::SPI_COM_IF,
|
|
||||||
spiCookie, spi::LIS3_TRANSITION_DELAY);
|
|
||||||
fdir = new AcsBoardFdir(objects::MGM_2_LIS3_HANDLER);
|
|
||||||
mgmLis3Handler->setCustomFdir(fdir);
|
|
||||||
mgmLis3Handler->setParent(objects::ACS_BOARD_ASS);
|
|
||||||
static_cast<void>(mgmLis3Handler);
|
|
||||||
#if OBSW_TEST_ACS == 1
|
|
||||||
mgmLis3Handler->setStartUpImmediately();
|
|
||||||
mgmLis3Handler->setToGoToNormalMode(true);
|
|
||||||
#endif
|
|
||||||
#if OBSW_DEBUG_ACS == 1
|
|
||||||
mgmLis3Handler->enablePeriodicPrintouts(true, 10);
|
|
||||||
#endif
|
|
||||||
spiCookie =
|
|
||||||
new SpiCookie(addresses::MGM_3_RM3100, gpioIds::MGM_3_RM3100_CS, spiDev,
|
|
||||||
RM3100::MAX_BUFFER_SIZE, spi::DEFAULT_RM3100_MODE, spi::DEFAULT_RM3100_SPEED);
|
|
||||||
mgmRm3100Handler = new MgmRM3100Handler(objects::MGM_3_RM3100_HANDLER, objects::SPI_COM_IF,
|
|
||||||
spiCookie, spi::RM3100_TRANSITION_DELAY);
|
|
||||||
fdir = new AcsBoardFdir(objects::MGM_3_RM3100_HANDLER);
|
|
||||||
mgmRm3100Handler->setCustomFdir(fdir);
|
|
||||||
mgmRm3100Handler->setParent(objects::ACS_BOARD_ASS);
|
|
||||||
#if OBSW_TEST_ACS == 1
|
|
||||||
mgmRm3100Handler->setStartUpImmediately();
|
|
||||||
mgmRm3100Handler->setToGoToNormalMode(true);
|
|
||||||
#endif
|
|
||||||
#if OBSW_DEBUG_ACS == 1
|
|
||||||
mgmRm3100Handler->enablePeriodicPrintouts(true, 10);
|
|
||||||
#endif
|
|
||||||
// Commented until ACS board V2 in in clean room again
|
|
||||||
// Gyro 0 Side A
|
|
||||||
spiCookie = new SpiCookie(addresses::GYRO_0_ADIS, gpioIds::GYRO_0_ADIS_CS, spiDev,
|
|
||||||
ADIS1650X::MAXIMUM_REPLY_SIZE, spi::DEFAULT_ADIS16507_MODE,
|
|
||||||
spi::DEFAULT_ADIS16507_SPEED);
|
|
||||||
auto adisHandler = new GyroADIS1650XHandler(objects::GYRO_0_ADIS_HANDLER, objects::SPI_COM_IF,
|
|
||||||
spiCookie, ADIS1650X::Type::ADIS16505);
|
|
||||||
fdir = new AcsBoardFdir(objects::GYRO_0_ADIS_HANDLER);
|
|
||||||
adisHandler->setCustomFdir(fdir);
|
|
||||||
adisHandler->setParent(objects::ACS_BOARD_ASS);
|
|
||||||
static_cast<void>(adisHandler);
|
|
||||||
#if OBSW_TEST_ACS == 1
|
|
||||||
adisHandler->setStartUpImmediately();
|
|
||||||
adisHandler->setToGoToNormalModeImmediately();
|
|
||||||
#endif
|
|
||||||
#if OBSW_DEBUG_ACS == 1
|
|
||||||
adisHandler->enablePeriodicPrintouts(true, 10);
|
|
||||||
#endif
|
|
||||||
// Gyro 1 Side A
|
|
||||||
spiCookie =
|
|
||||||
new SpiCookie(addresses::GYRO_1_L3G, gpioIds::GYRO_1_L3G_CS, spiDev, L3GD20H::MAX_BUFFER_SIZE,
|
|
||||||
spi::DEFAULT_L3G_MODE, spi::DEFAULT_L3G_SPEED);
|
|
||||||
auto gyroL3gHandler = new GyroHandlerL3GD20H(objects::GYRO_1_L3G_HANDLER, objects::SPI_COM_IF,
|
|
||||||
spiCookie, spi::L3G_TRANSITION_DELAY);
|
|
||||||
fdir = new AcsBoardFdir(objects::GYRO_1_L3G_HANDLER);
|
|
||||||
gyroL3gHandler->setCustomFdir(fdir);
|
|
||||||
gyroL3gHandler->setParent(objects::ACS_BOARD_ASS);
|
|
||||||
static_cast<void>(gyroL3gHandler);
|
|
||||||
#if OBSW_TEST_ACS == 1
|
|
||||||
gyroL3gHandler->setStartUpImmediately();
|
|
||||||
gyroL3gHandler->setToGoToNormalMode(true);
|
|
||||||
#endif
|
|
||||||
#if OBSW_DEBUG_ACS == 1
|
|
||||||
gyroL3gHandler->enablePeriodicPrintouts(true, 10);
|
|
||||||
#endif
|
|
||||||
// Gyro 2 Side B
|
|
||||||
spiCookie = new SpiCookie(addresses::GYRO_2_ADIS, gpioIds::GYRO_2_ADIS_CS, spiDev,
|
|
||||||
ADIS1650X::MAXIMUM_REPLY_SIZE, spi::DEFAULT_ADIS16507_MODE,
|
|
||||||
spi::DEFAULT_ADIS16507_SPEED);
|
|
||||||
adisHandler = new GyroADIS1650XHandler(objects::GYRO_2_ADIS_HANDLER, objects::SPI_COM_IF,
|
|
||||||
spiCookie, ADIS1650X::Type::ADIS16505);
|
|
||||||
fdir = new AcsBoardFdir(objects::GYRO_2_ADIS_HANDLER);
|
|
||||||
adisHandler->setCustomFdir(fdir);
|
|
||||||
adisHandler->setParent(objects::ACS_BOARD_ASS);
|
|
||||||
#if OBSW_TEST_ACS == 1
|
|
||||||
adisHandler->setStartUpImmediately();
|
|
||||||
adisHandler->setToGoToNormalModeImmediately();
|
|
||||||
#endif
|
|
||||||
// Gyro 3 Side B
|
|
||||||
spiCookie =
|
|
||||||
new SpiCookie(addresses::GYRO_3_L3G, gpioIds::GYRO_3_L3G_CS, spiDev, L3GD20H::MAX_BUFFER_SIZE,
|
|
||||||
spi::DEFAULT_L3G_MODE, spi::DEFAULT_L3G_SPEED);
|
|
||||||
gyroL3gHandler = new GyroHandlerL3GD20H(objects::GYRO_3_L3G_HANDLER, objects::SPI_COM_IF,
|
|
||||||
spiCookie, spi::L3G_TRANSITION_DELAY);
|
|
||||||
fdir = new AcsBoardFdir(objects::GYRO_3_L3G_HANDLER);
|
|
||||||
gyroL3gHandler->setCustomFdir(fdir);
|
|
||||||
gyroL3gHandler->setParent(objects::ACS_BOARD_ASS);
|
|
||||||
#if OBSW_TEST_ACS == 1
|
|
||||||
gyroL3gHandler->setStartUpImmediately();
|
|
||||||
gyroL3gHandler->setToGoToNormalMode(true);
|
|
||||||
#endif
|
|
||||||
#if OBSW_DEBUG_ACS == 1
|
|
||||||
gyroL3gHandler->enablePeriodicPrintouts(true, 10);
|
|
||||||
#endif
|
|
||||||
bool debugGps = false;
|
|
||||||
#if OBSW_DEBUG_GPS == 1
|
|
||||||
debugGps = true;
|
|
||||||
#endif
|
|
||||||
resetArgsGnss1.gnss1 = true;
|
|
||||||
resetArgsGnss1.gpioComIF = gpioComIF;
|
|
||||||
resetArgsGnss1.waitPeriodMs = 100;
|
|
||||||
resetArgsGnss0.gnss1 = false;
|
|
||||||
resetArgsGnss0.gpioComIF = gpioComIF;
|
|
||||||
resetArgsGnss0.waitPeriodMs = 100;
|
|
||||||
auto gpsHandler0 =
|
|
||||||
new GPSHyperionLinuxController(objects::GPS_CONTROLLER, objects::NO_OBJECT, debugGps);
|
|
||||||
gpsHandler0->setResetPinTriggerFunction(gps::triggerGpioResetPin, &resetArgsGnss0);
|
|
||||||
|
|
||||||
AcsBoardHelper acsBoardHelper = AcsBoardHelper(
|
|
||||||
objects::MGM_0_LIS3_HANDLER, objects::MGM_1_RM3100_HANDLER, objects::MGM_2_LIS3_HANDLER,
|
|
||||||
objects::MGM_3_RM3100_HANDLER, objects::GYRO_0_ADIS_HANDLER, objects::GYRO_1_L3G_HANDLER,
|
|
||||||
objects::GYRO_2_ADIS_HANDLER, objects::GYRO_3_L3G_HANDLER, objects::GPS_CONTROLLER);
|
|
||||||
auto acsAss = new AcsBoardAssembly(objects::ACS_BOARD_ASS, objects::NO_OBJECT, pwrSwitcher,
|
|
||||||
acsBoardHelper, gpioComIF);
|
|
||||||
static_cast<void>(acsAss);
|
|
||||||
#endif /* OBSW_ADD_ACS_HANDLERS == 1 */
|
|
||||||
}
|
|
||||||
|
|
||||||
void ObjectFactory::createHeaterComponents() {
|
|
||||||
using namespace gpio;
|
|
||||||
GpioCookie* heaterGpiosCookie = new GpioCookie;
|
|
||||||
GpiodRegularByLineName* gpio = nullptr;
|
|
||||||
|
|
||||||
std::stringstream consumer;
|
|
||||||
consumer << "0x" << std::hex << objects::HEATER_HANDLER;
|
|
||||||
/* Pin H2-11 on stack connector */
|
|
||||||
gpio = new GpiodRegularByLineName(q7s::gpioNames::HEATER_0, consumer.str(), Direction::OUT,
|
|
||||||
Levels::LOW);
|
|
||||||
heaterGpiosCookie->addGpio(gpioIds::HEATER_0, gpio);
|
|
||||||
/* Pin H2-12 on stack connector */
|
|
||||||
gpio = new GpiodRegularByLineName(q7s::gpioNames::HEATER_1, consumer.str(), Direction::OUT,
|
|
||||||
Levels::LOW);
|
|
||||||
heaterGpiosCookie->addGpio(gpioIds::HEATER_1, gpio);
|
|
||||||
|
|
||||||
/* Pin H2-13 on stack connector */
|
|
||||||
gpio = new GpiodRegularByLineName(q7s::gpioNames::HEATER_2, consumer.str(), Direction::OUT,
|
|
||||||
Levels::LOW);
|
|
||||||
heaterGpiosCookie->addGpio(gpioIds::HEATER_2, gpio);
|
|
||||||
|
|
||||||
gpio = new GpiodRegularByLineName(q7s::gpioNames::HEATER_3, consumer.str(), Direction::OUT,
|
|
||||||
Levels::LOW);
|
|
||||||
heaterGpiosCookie->addGpio(gpioIds::HEATER_3, gpio);
|
|
||||||
|
|
||||||
gpio = new GpiodRegularByLineName(q7s::gpioNames::HEATER_4, consumer.str(), Direction::OUT,
|
|
||||||
Levels::LOW);
|
|
||||||
heaterGpiosCookie->addGpio(gpioIds::HEATER_4, gpio);
|
|
||||||
|
|
||||||
gpio = new GpiodRegularByLineName(q7s::gpioNames::HEATER_5, consumer.str(), Direction::OUT,
|
|
||||||
Levels::LOW);
|
|
||||||
heaterGpiosCookie->addGpio(gpioIds::HEATER_5, gpio);
|
|
||||||
|
|
||||||
gpio = new GpiodRegularByLineName(q7s::gpioNames::HEATER_6, consumer.str(), Direction::OUT,
|
|
||||||
Levels::LOW);
|
|
||||||
heaterGpiosCookie->addGpio(gpioIds::HEATER_6, gpio);
|
|
||||||
|
|
||||||
gpio = new GpiodRegularByLineName(q7s::gpioNames::HEATER_7, consumer.str(), Direction::OUT,
|
|
||||||
Levels::LOW);
|
|
||||||
heaterGpiosCookie->addGpio(gpioIds::HEATER_7, gpio);
|
|
||||||
|
|
||||||
new HeaterHandler(objects::HEATER_HANDLER, objects::GPIO_IF, heaterGpiosCookie,
|
|
||||||
objects::PCDU_HANDLER, pcdu::Switches::PDU2_CH3_TCS_BOARD_HEATER_IN_8V);
|
|
||||||
}
|
|
||||||
|
|
||||||
void ObjectFactory::createSolarArrayDeploymentComponents() {
|
|
||||||
using namespace gpio;
|
|
||||||
GpioCookie* solarArrayDeplCookie = new GpioCookie;
|
|
||||||
GpiodRegularByLineName* gpio = nullptr;
|
|
||||||
|
|
||||||
std::stringstream consumer;
|
|
||||||
consumer << "0x" << std::hex << objects::SOLAR_ARRAY_DEPL_HANDLER;
|
|
||||||
gpio = new GpiodRegularByLineName(q7s::gpioNames::SA_DPL_PIN_0, consumer.str(), Direction::OUT,
|
|
||||||
Levels::LOW);
|
|
||||||
solarArrayDeplCookie->addGpio(gpioIds::DEPLSA1, gpio);
|
|
||||||
gpio = new GpiodRegularByLineName(q7s::gpioNames::SA_DPL_PIN_1, consumer.str(), Direction::OUT,
|
|
||||||
Levels::LOW);
|
|
||||||
solarArrayDeplCookie->addGpio(gpioIds::DEPLSA2, gpio);
|
|
||||||
|
|
||||||
// TODO: Find out burn time. For now set to 1000 ms.
|
|
||||||
new SolarArrayDeploymentHandler(objects::SOLAR_ARRAY_DEPL_HANDLER, objects::GPIO_IF,
|
|
||||||
solarArrayDeplCookie, objects::PCDU_HANDLER,
|
|
||||||
pcdu::Switches::PDU2_CH5_DEPLOYMENT_MECHANISM_8V,
|
|
||||||
gpioIds::DEPLSA1, gpioIds::DEPLSA2, 1000);
|
|
||||||
}
|
|
||||||
|
|
||||||
void ObjectFactory::createSyrlinksComponents(PowerSwitchIF* pwrSwitcher) {
|
|
||||||
UartCookie* syrlinksUartCookie =
|
|
||||||
new UartCookie(objects::SYRLINKS_HK_HANDLER, q7s::UART_SYRLINKS_DEV, uart::SYRLINKS_BAUD,
|
|
||||||
syrlinks::MAX_REPLY_SIZE, UartModes::NON_CANONICAL);
|
|
||||||
syrlinksUartCookie->setParityEven();
|
|
||||||
|
|
||||||
auto syrlinksFdir = new SyrlinksFdir(objects::SYRLINKS_HK_HANDLER);
|
|
||||||
auto syrlinksHandler =
|
|
||||||
new SyrlinksHkHandler(objects::SYRLINKS_HK_HANDLER, objects::UART_COM_IF, syrlinksUartCookie,
|
|
||||||
pcdu::PDU1_CH1_SYRLINKS_12V, syrlinksFdir);
|
|
||||||
syrlinksHandler->setPowerSwitcher(pwrSwitcher);
|
|
||||||
#if OBSW_DEBUG_SYRLINKS == 1
|
|
||||||
syrlinksHandler->setDebugMode(true);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
void ObjectFactory::createPayloadComponents(LinuxLibgpioIF* gpioComIF) {
|
|
||||||
using namespace gpio;
|
|
||||||
std::stringstream consumer;
|
|
||||||
#if OBSW_ADD_PLOC_MPSOC == 1
|
|
||||||
consumer << "0x" << std::hex << objects::PLOC_MPSOC_HANDLER;
|
|
||||||
auto gpioConfigMPSoC = new GpiodRegularByLineName(q7s::gpioNames::ENABLE_MPSOC_UART,
|
|
||||||
consumer.str(), Direction::OUT, Levels::HIGH);
|
|
||||||
auto mpsocGpioCookie = new GpioCookie;
|
|
||||||
mpsocGpioCookie->addGpio(gpioIds::ENABLE_MPSOC_UART, gpioConfigMPSoC);
|
|
||||||
gpioComIF->addGpios(mpsocGpioCookie);
|
|
||||||
auto mpsocCookie =
|
|
||||||
new UartCookie(objects::PLOC_MPSOC_HANDLER, q7s::UART_PLOC_MPSOC_DEV, uart::PLOC_MPSOC_BAUD,
|
|
||||||
mpsoc::MAX_REPLY_SIZE, UartModes::NON_CANONICAL);
|
|
||||||
mpsocCookie->setNoFixedSizeReply();
|
|
||||||
auto plocMpsocHelper = new PlocMPSoCHelper(objects::PLOC_MPSOC_HELPER);
|
|
||||||
new PlocMPSoCHandler(objects::PLOC_MPSOC_HANDLER, objects::UART_COM_IF, mpsocCookie,
|
|
||||||
plocMpsocHelper, Gpio(gpioIds::ENABLE_MPSOC_UART, gpioComIF),
|
|
||||||
objects::PLOC_SUPERVISOR_HANDLER);
|
|
||||||
#endif /* OBSW_ADD_PLOC_MPSOC == 1 */
|
|
||||||
#if OBSW_ADD_PLOC_SUPERVISOR == 1
|
|
||||||
consumer << "0x" << std::hex << objects::PLOC_SUPERVISOR_HANDLER;
|
|
||||||
auto gpioConfigSupv = new GpiodRegularByLineName(q7s::gpioNames::ENABLE_SUPV_UART, consumer.str(),
|
|
||||||
Direction::OUT, Levels::HIGH);
|
|
||||||
auto supvGpioCookie = new GpioCookie;
|
|
||||||
supvGpioCookie->addGpio(gpioIds::ENABLE_SUPV_UART, gpioConfigSupv);
|
|
||||||
gpioComIF->addGpios(supvGpioCookie);
|
|
||||||
auto supervisorCookie = new UartCookie(objects::PLOC_SUPERVISOR_HANDLER,
|
|
||||||
q7s::UART_PLOC_SUPERVSIOR_DEV, uart::PLOC_SUPERVISOR_BAUD,
|
|
||||||
supv::MAX_PACKET_SIZE * 20, UartModes::NON_CANONICAL);
|
|
||||||
supervisorCookie->setNoFixedSizeReply();
|
|
||||||
new PlocSupervisorHandler(objects::PLOC_SUPERVISOR_HANDLER, objects::UART_COM_IF,
|
|
||||||
supervisorCookie, Gpio(gpioIds::ENABLE_SUPV_UART, gpioComIF),
|
|
||||||
pcdu::PDU1_CH6_PLOC_12V);
|
|
||||||
#endif /* OBSW_ADD_PLOC_SUPERVISOR == 1 */
|
|
||||||
static_cast<void>(consumer);
|
|
||||||
}
|
|
||||||
|
|
||||||
void ObjectFactory::createReactionWheelComponents(LinuxLibgpioIF* gpioComIF) {
|
|
||||||
using namespace gpio;
|
|
||||||
GpioCookie* gpioCookieRw = new GpioCookie;
|
|
||||||
GpioCallback* csRw1 =
|
|
||||||
new GpioCallback("Chip select reaction wheel 1", Direction::OUT, Levels::HIGH,
|
|
||||||
&gpioCallbacks::spiCsDecoderCallback, gpioComIF);
|
|
||||||
gpioCookieRw->addGpio(gpioIds::CS_RW1, csRw1);
|
|
||||||
GpioCallback* csRw2 =
|
|
||||||
new GpioCallback("Chip select reaction wheel 2", Direction::OUT, Levels::HIGH,
|
|
||||||
&gpioCallbacks::spiCsDecoderCallback, gpioComIF);
|
|
||||||
gpioCookieRw->addGpio(gpioIds::CS_RW2, csRw2);
|
|
||||||
GpioCallback* csRw3 =
|
|
||||||
new GpioCallback("Chip select reaction wheel 3", Direction::OUT, Levels::HIGH,
|
|
||||||
&gpioCallbacks::spiCsDecoderCallback, gpioComIF);
|
|
||||||
gpioCookieRw->addGpio(gpioIds::CS_RW3, csRw3);
|
|
||||||
GpioCallback* csRw4 =
|
|
||||||
new GpioCallback("Chip select reaction wheel 4", Direction::OUT, Levels::HIGH,
|
|
||||||
&gpioCallbacks::spiCsDecoderCallback, gpioComIF);
|
|
||||||
gpioCookieRw->addGpio(gpioIds::CS_RW4, csRw4);
|
|
||||||
|
|
||||||
std::stringstream consumer;
|
|
||||||
GpiodRegularByLineName* gpio = nullptr;
|
|
||||||
consumer << "0x" << std::hex << objects::RW1;
|
|
||||||
gpio = new GpiodRegularByLineName(q7s::gpioNames::EN_RW_1, consumer.str(), Direction::OUT,
|
|
||||||
Levels::LOW);
|
|
||||||
gpioCookieRw->addGpio(gpioIds::EN_RW1, gpio);
|
|
||||||
consumer.str("");
|
|
||||||
consumer << "0x" << std::hex << objects::RW2;
|
|
||||||
gpio = new GpiodRegularByLineName(q7s::gpioNames::EN_RW_2, consumer.str(), Direction::OUT,
|
|
||||||
Levels::LOW);
|
|
||||||
gpioCookieRw->addGpio(gpioIds::EN_RW2, gpio);
|
|
||||||
consumer.str("");
|
|
||||||
consumer << "0x" << std::hex << objects::RW3;
|
|
||||||
gpio = new GpiodRegularByLineName(q7s::gpioNames::EN_RW_3, consumer.str(), Direction::OUT,
|
|
||||||
Levels::LOW);
|
|
||||||
gpioCookieRw->addGpio(gpioIds::EN_RW3, gpio);
|
|
||||||
consumer.str("");
|
|
||||||
consumer << "0x" << std::hex << objects::RW4;
|
|
||||||
gpio = new GpiodRegularByLineName(q7s::gpioNames::EN_RW_4, consumer.str(), Direction::OUT,
|
|
||||||
Levels::LOW);
|
|
||||||
gpioCookieRw->addGpio(gpioIds::EN_RW4, gpio);
|
|
||||||
|
|
||||||
gpioComIF->addGpios(gpioCookieRw);
|
|
||||||
|
|
||||||
#if OBSW_ADD_RW == 1
|
|
||||||
auto rw1SpiCookie =
|
|
||||||
new SpiCookie(addresses::RW1, gpioIds::CS_RW1, q7s::SPI_RW_DEV, RwDefinitions::MAX_REPLY_SIZE,
|
|
||||||
spi::RW_MODE, spi::RW_SPEED, &rwSpiCallback::spiCallback, nullptr);
|
|
||||||
auto rw2SpiCookie =
|
|
||||||
new SpiCookie(addresses::RW2, gpioIds::CS_RW2, q7s::SPI_RW_DEV, RwDefinitions::MAX_REPLY_SIZE,
|
|
||||||
spi::RW_MODE, spi::RW_SPEED, &rwSpiCallback::spiCallback, nullptr);
|
|
||||||
auto rw3SpiCookie =
|
|
||||||
new SpiCookie(addresses::RW3, gpioIds::CS_RW3, q7s::SPI_RW_DEV, RwDefinitions::MAX_REPLY_SIZE,
|
|
||||||
spi::RW_MODE, spi::RW_SPEED, &rwSpiCallback::spiCallback, nullptr);
|
|
||||||
auto rw4SpiCookie =
|
|
||||||
new SpiCookie(addresses::RW4, gpioIds::CS_RW4, q7s::SPI_RW_DEV, RwDefinitions::MAX_REPLY_SIZE,
|
|
||||||
spi::RW_MODE, spi::RW_SPEED, &rwSpiCallback::spiCallback, nullptr);
|
|
||||||
|
|
||||||
auto rwHandler1 =
|
|
||||||
new RwHandler(objects::RW1, objects::SPI_COM_IF, rw1SpiCookie, gpioComIF, gpioIds::EN_RW1);
|
|
||||||
rw1SpiCookie->setCallbackArgs(rwHandler1);
|
|
||||||
#if OBSW_DEBUG_RW == 1
|
|
||||||
rwHandler1->setStartUpImmediately();
|
|
||||||
rwHandler1->setDebugMode(true);
|
|
||||||
#endif
|
|
||||||
auto rwHandler2 =
|
|
||||||
new RwHandler(objects::RW2, objects::SPI_COM_IF, rw2SpiCookie, gpioComIF, gpioIds::EN_RW2);
|
|
||||||
rw2SpiCookie->setCallbackArgs(rwHandler2);
|
|
||||||
#if OBSW_DEBUG_RW == 1
|
|
||||||
rwHandler2->setStartUpImmediately();
|
|
||||||
rwHandler2->setDebugMode(true);
|
|
||||||
#endif
|
|
||||||
auto rwHandler3 =
|
|
||||||
new RwHandler(objects::RW3, objects::SPI_COM_IF, rw3SpiCookie, gpioComIF, gpioIds::EN_RW3);
|
|
||||||
rw3SpiCookie->setCallbackArgs(rwHandler3);
|
|
||||||
#if OBSW_DEBUG_RW == 1
|
|
||||||
rwHandler3->setStartUpImmediately();
|
|
||||||
rwHandler3->setDebugMode(true);
|
|
||||||
#endif
|
|
||||||
auto rwHandler4 =
|
|
||||||
new RwHandler(objects::RW4, objects::SPI_COM_IF, rw4SpiCookie, gpioComIF, gpioIds::EN_RW4);
|
|
||||||
rw4SpiCookie->setCallbackArgs(rwHandler4);
|
|
||||||
#if OBSW_DEBUG_RW == 1
|
|
||||||
rwHandler4->setStartUpImmediately();
|
|
||||||
rwHandler4->setDebugMode(true);
|
|
||||||
#endif
|
|
||||||
#endif /* OBSW_ADD_RW == 1 */
|
|
||||||
}
|
|
||||||
|
|
||||||
void ObjectFactory::createCcsdsComponents(LinuxLibgpioIF* gpioComIF) {
|
|
||||||
using namespace gpio;
|
|
||||||
// GPIO definitions of signals connected to the virtual channel interfaces of the PTME IP Core
|
|
||||||
GpioCookie* gpioCookiePtmeIp = new GpioCookie;
|
|
||||||
GpiodRegularByLineName* gpio = nullptr;
|
|
||||||
std::stringstream consumer;
|
|
||||||
consumer.str("PAPB VC0");
|
|
||||||
gpio = new GpiodRegularByLineName(q7s::gpioNames::PAPB_BUSY_SIGNAL_VC0, consumer.str());
|
|
||||||
gpioCookiePtmeIp->addGpio(gpioIds::VC0_PAPB_BUSY, gpio);
|
|
||||||
consumer.str("PAPB VC0");
|
|
||||||
gpio = new GpiodRegularByLineName(q7s::gpioNames::PAPB_EMPTY_SIGNAL_VC0, consumer.str());
|
|
||||||
gpioCookiePtmeIp->addGpio(gpioIds::VC0_PAPB_EMPTY, gpio);
|
|
||||||
consumer.str("PAPB VC 1");
|
|
||||||
gpio = new GpiodRegularByLineName(q7s::gpioNames::PAPB_BUSY_SIGNAL_VC1, consumer.str());
|
|
||||||
gpioCookiePtmeIp->addGpio(gpioIds::VC1_PAPB_BUSY, gpio);
|
|
||||||
consumer.str("");
|
|
||||||
consumer.str("PAPB VC 1");
|
|
||||||
gpioCookiePtmeIp->addGpio(gpioIds::VC1_PAPB_EMPTY, gpio);
|
|
||||||
consumer.str("");
|
|
||||||
consumer.str("PAPB VC 2");
|
|
||||||
gpio = new GpiodRegularByLineName(q7s::gpioNames::PAPB_BUSY_SIGNAL_VC2, consumer.str());
|
|
||||||
gpioCookiePtmeIp->addGpio(gpioIds::VC2_PAPB_BUSY, gpio);
|
|
||||||
consumer.str("");
|
|
||||||
consumer.str("PAPB VC 2");
|
|
||||||
gpio = new GpiodRegularByLineName(q7s::gpioNames::PAPB_EMPTY_SIGNAL_VC2, consumer.str());
|
|
||||||
gpioCookiePtmeIp->addGpio(gpioIds::VC2_PAPB_EMPTY, gpio);
|
|
||||||
consumer.str("");
|
|
||||||
consumer.str("PAPB VC 3");
|
|
||||||
gpio = new GpiodRegularByLineName(q7s::gpioNames::PAPB_BUSY_SIGNAL_VC3, consumer.str());
|
|
||||||
gpioCookiePtmeIp->addGpio(gpioIds::VC3_PAPB_BUSY, gpio);
|
|
||||||
consumer.str("");
|
|
||||||
consumer.str("PAPB VC 3");
|
|
||||||
gpio = new GpiodRegularByLineName(q7s::gpioNames::PAPB_EMPTY_SIGNAL_VC3, consumer.str());
|
|
||||||
gpioCookiePtmeIp->addGpio(gpioIds::VC3_PAPB_EMPTY, gpio);
|
|
||||||
|
|
||||||
gpioComIF->addGpios(gpioCookiePtmeIp);
|
|
||||||
|
|
||||||
// Creating virtual channel interfaces
|
|
||||||
VcInterfaceIF* vc0 =
|
|
||||||
new PapbVcInterface(gpioComIF, gpioIds::VC0_PAPB_BUSY, gpioIds::VC0_PAPB_EMPTY, q7s::UIO_PTME,
|
|
||||||
q7s::uiomapids::PTME_VC0);
|
|
||||||
VcInterfaceIF* vc1 =
|
|
||||||
new PapbVcInterface(gpioComIF, gpioIds::VC1_PAPB_BUSY, gpioIds::VC1_PAPB_EMPTY, q7s::UIO_PTME,
|
|
||||||
q7s::uiomapids::PTME_VC1);
|
|
||||||
VcInterfaceIF* vc2 =
|
|
||||||
new PapbVcInterface(gpioComIF, gpioIds::VC2_PAPB_BUSY, gpioIds::VC2_PAPB_EMPTY, q7s::UIO_PTME,
|
|
||||||
q7s::uiomapids::PTME_VC2);
|
|
||||||
VcInterfaceIF* vc3 =
|
|
||||||
new PapbVcInterface(gpioComIF, gpioIds::VC3_PAPB_BUSY, gpioIds::VC3_PAPB_EMPTY, q7s::UIO_PTME,
|
|
||||||
q7s::uiomapids::PTME_VC3);
|
|
||||||
|
|
||||||
// Creating ptme object and adding virtual channel interfaces
|
|
||||||
Ptme* ptme = new Ptme(objects::PTME);
|
|
||||||
ptme->addVcInterface(ccsds::VC0, vc0);
|
|
||||||
ptme->addVcInterface(ccsds::VC1, vc1);
|
|
||||||
ptme->addVcInterface(ccsds::VC2, vc2);
|
|
||||||
ptme->addVcInterface(ccsds::VC3, vc3);
|
|
||||||
|
|
||||||
AxiPtmeConfig* axiPtmeConfig =
|
|
||||||
new AxiPtmeConfig(objects::AXI_PTME_CONFIG, q7s::UIO_PTME, q7s::uiomapids::PTME_CONFIG);
|
|
||||||
PtmeConfig* ptmeConfig = new PtmeConfig(objects::PTME_CONFIG, axiPtmeConfig);
|
|
||||||
#if OBSW_ENABLE_SYRLINKS_TRANSMIT_TIMEOUT == 1
|
|
||||||
// Set to high value when not sending via syrlinks
|
|
||||||
static const uint32_t TRANSMITTER_TIMEOUT = 86400000; // 1 day
|
|
||||||
#else
|
|
||||||
static const uint32_t TRANSMITTER_TIMEOUT = 900000; // 15 minutes
|
|
||||||
#endif
|
|
||||||
CCSDSHandler* ccsdsHandler = new CCSDSHandler(
|
|
||||||
objects::CCSDS_HANDLER, objects::PTME, objects::CCSDS_PACKET_DISTRIBUTOR, ptmeConfig,
|
|
||||||
gpioComIF, gpioIds::RS485_EN_TX_CLOCK, gpioIds::RS485_EN_TX_DATA, TRANSMITTER_TIMEOUT);
|
|
||||||
|
|
||||||
VirtualChannel* vc = nullptr;
|
|
||||||
vc = new VirtualChannel(ccsds::VC0, common::VC0_QUEUE_SIZE, objects::CCSDS_HANDLER);
|
|
||||||
ccsdsHandler->addVirtualChannel(ccsds::VC0, vc);
|
|
||||||
vc = new VirtualChannel(ccsds::VC1, common::VC1_QUEUE_SIZE, objects::CCSDS_HANDLER);
|
|
||||||
ccsdsHandler->addVirtualChannel(ccsds::VC1, vc);
|
|
||||||
vc = new VirtualChannel(ccsds::VC2, common::VC2_QUEUE_SIZE, objects::CCSDS_HANDLER);
|
|
||||||
ccsdsHandler->addVirtualChannel(ccsds::VC2, vc);
|
|
||||||
vc = new VirtualChannel(ccsds::VC3, common::VC3_QUEUE_SIZE, objects::CCSDS_HANDLER);
|
|
||||||
ccsdsHandler->addVirtualChannel(ccsds::VC3, vc);
|
|
||||||
|
|
||||||
GpioCookie* gpioCookiePdec = new GpioCookie;
|
|
||||||
consumer.str("");
|
|
||||||
consumer << "0x" << std::hex << objects::PDEC_HANDLER;
|
|
||||||
// GPIO also low after linux boot (specified by device-tree)
|
|
||||||
gpio = new GpiodRegularByLineName(q7s::gpioNames::PDEC_RESET, consumer.str(), Direction::OUT,
|
|
||||||
Levels::LOW);
|
|
||||||
gpioCookiePdec->addGpio(gpioIds::PDEC_RESET, gpio);
|
|
||||||
|
|
||||||
gpioComIF->addGpios(gpioCookiePdec);
|
|
||||||
|
|
||||||
new PdecHandler(objects::PDEC_HANDLER, objects::CCSDS_HANDLER, gpioComIF, gpioIds::PDEC_RESET,
|
|
||||||
q7s::UIO_PDEC_CONFIG_MEMORY, q7s::UIO_PDEC_RAM, q7s::UIO_PDEC_REGISTERS);
|
|
||||||
|
|
||||||
GpioCookie* gpioRS485Chip = new GpioCookie;
|
|
||||||
gpio = new GpiodRegularByLineName(q7s::gpioNames::RS485_EN_TX_CLOCK, "RS485 Transceiver",
|
|
||||||
Direction::OUT, Levels::LOW);
|
|
||||||
gpioRS485Chip->addGpio(gpioIds::RS485_EN_TX_CLOCK, gpio);
|
|
||||||
gpio = new GpiodRegularByLineName(q7s::gpioNames::RS485_EN_TX_DATA, "RS485 Transceiver",
|
|
||||||
Direction::OUT, Levels::LOW);
|
|
||||||
gpioRS485Chip->addGpio(gpioIds::RS485_EN_TX_DATA, gpio);
|
|
||||||
|
|
||||||
// Default configuration enables RX channels (RXEN = LOW)
|
|
||||||
gpio = new GpiodRegularByLineName(q7s::gpioNames::RS485_EN_RX_CLOCK, "RS485 Transceiver",
|
|
||||||
Direction::OUT, Levels::LOW);
|
|
||||||
gpioRS485Chip->addGpio(gpioIds::RS485_EN_RX_CLOCK, gpio);
|
|
||||||
gpio = new GpiodRegularByLineName(q7s::gpioNames::RS485_EN_RX_DATA, "RS485 Transceiver",
|
|
||||||
Direction::OUT, Levels::LOW);
|
|
||||||
gpioRS485Chip->addGpio(gpioIds::RS485_EN_RX_DATA, gpio);
|
|
||||||
|
|
||||||
gpioComIF->addGpios(gpioRS485Chip);
|
|
||||||
}
|
|
||||||
|
|
||||||
void ObjectFactory::createPlPcduComponents(LinuxLibgpioIF* gpioComIF, SpiComIF* spiComIF,
|
|
||||||
PowerSwitchIF* pwrSwitcher) {
|
|
||||||
using namespace gpio;
|
|
||||||
// Create all GPIO components first
|
|
||||||
GpioCookie* plPcduGpios = new GpioCookie;
|
|
||||||
GpiodRegularByLineName* gpio = nullptr;
|
|
||||||
std::string consumer;
|
|
||||||
// Switch pins are active high
|
|
||||||
consumer = "PLPCDU_ENB_VBAT_0";
|
|
||||||
gpio = new GpiodRegularByLineName(q7s::gpioNames::PL_PCDU_ENABLE_VBAT0, consumer, Direction::OUT,
|
|
||||||
gpio::Levels::LOW);
|
|
||||||
plPcduGpios->addGpio(gpioIds::PLPCDU_ENB_VBAT0, gpio);
|
|
||||||
consumer = "PLPCDU_ENB_VBAT_1";
|
|
||||||
gpio = new GpiodRegularByLineName(q7s::gpioNames::PL_PCDU_ENABLE_VBAT1, consumer, Direction::OUT,
|
|
||||||
gpio::Levels::LOW);
|
|
||||||
plPcduGpios->addGpio(gpioIds::PLPCDU_ENB_VBAT1, gpio);
|
|
||||||
consumer = "PLPCDU_ENB_DRO";
|
|
||||||
gpio = new GpiodRegularByLineName(q7s::gpioNames::PL_PCDU_ENABLE_DRO, consumer, Direction::OUT,
|
|
||||||
gpio::Levels::LOW);
|
|
||||||
plPcduGpios->addGpio(gpioIds::PLPCDU_ENB_DRO, gpio);
|
|
||||||
consumer = "PLPCDU_ENB_X8";
|
|
||||||
gpio = new GpiodRegularByLineName(q7s::gpioNames::PL_PCDU_ENABLE_X8, consumer, Direction::OUT,
|
|
||||||
gpio::Levels::LOW);
|
|
||||||
plPcduGpios->addGpio(gpioIds::PLPCDU_ENB_X8, gpio);
|
|
||||||
consumer = "PLPCDU_ENB_TX";
|
|
||||||
gpio = new GpiodRegularByLineName(q7s::gpioNames::PL_PCDU_ENABLE_TX, consumer, Direction::OUT,
|
|
||||||
gpio::Levels::LOW);
|
|
||||||
plPcduGpios->addGpio(gpioIds::PLPCDU_ENB_TX, gpio);
|
|
||||||
consumer = "PLPCDU_ENB_MPA";
|
|
||||||
gpio = new GpiodRegularByLineName(q7s::gpioNames::PL_PCDU_ENABLE_MPA, consumer, Direction::OUT,
|
|
||||||
gpio::Levels::LOW);
|
|
||||||
plPcduGpios->addGpio(gpioIds::PLPCDU_ENB_MPA, gpio);
|
|
||||||
consumer = "PLPCDU_ENB_HPA";
|
|
||||||
gpio = new GpiodRegularByLineName(q7s::gpioNames::PL_PCDU_ENABLE_HPA, consumer, Direction::OUT,
|
|
||||||
gpio::Levels::LOW);
|
|
||||||
plPcduGpios->addGpio(gpioIds::PLPCDU_ENB_HPA, gpio);
|
|
||||||
|
|
||||||
// Chip select pin is active low
|
|
||||||
consumer = "PLPCDU_ADC_CS";
|
|
||||||
gpio = new GpiodRegularByLineName(q7s::gpioNames::PL_PCDU_ADC_CS, consumer, Direction::OUT,
|
|
||||||
gpio::Levels::HIGH);
|
|
||||||
plPcduGpios->addGpio(gpioIds::PLPCDU_ADC_CS, gpio);
|
|
||||||
gpioComIF->addGpios(plPcduGpios);
|
|
||||||
SpiCookie* spiCookie = new SpiCookie(addresses::PLPCDU_ADC, gpioIds::PLPCDU_ADC_CS,
|
|
||||||
q7s::SPI_DEFAULT_DEV, plpcdu::MAX_ADC_REPLY_SIZE,
|
|
||||||
spi::DEFAULT_MAX_1227_MODE, spi::PL_PCDU_MAX_1227_SPEED);
|
|
||||||
// Create device handler components
|
|
||||||
auto plPcduHandler = new PayloadPcduHandler(
|
|
||||||
objects::PLPCDU_HANDLER, objects::SPI_COM_IF, spiCookie, gpioComIF, SdCardManager::instance(),
|
|
||||||
pwrSwitcher, pcdu::Switches::PDU2_CH1_PL_PCDU_BATT_0_14V8,
|
|
||||||
pcdu::Switches::PDU2_CH6_PL_PCDU_BATT_1_14V8, false);
|
|
||||||
spiCookie->setCallbackMode(PayloadPcduHandler::extConvAsTwoCallback, plPcduHandler);
|
|
||||||
// plPcduHandler->enablePeriodicPrintout(true, 5);
|
|
||||||
// static_cast<void>(plPcduHandler);
|
|
||||||
#if OBSW_TEST_PL_PCDU == 1
|
|
||||||
plPcduHandler->setStartUpImmediately();
|
|
||||||
#endif
|
|
||||||
#if OBSW_DEBUG_PL_PCDU == 1
|
|
||||||
plPcduHandler->setToGoToNormalModeImmediately(true);
|
|
||||||
plPcduHandler->enablePeriodicPrintout(true, 10);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
void ObjectFactory::createTestComponents(LinuxLibgpioIF* gpioComIF) {
|
|
||||||
new Q7STestTask(objects::TEST_TASK);
|
|
||||||
#if OBSW_ADD_SPI_TEST_CODE == 1
|
|
||||||
new SpiTestClass(objects::SPI_TEST, gpioComIF);
|
|
||||||
#endif
|
|
||||||
#if OBSW_ADD_I2C_TEST_CODE == 1
|
|
||||||
new I2cTestClass(objects::I2C_TEST, q7s::I2C_DEFAULT_DEV);
|
|
||||||
#endif
|
|
||||||
#if OBSW_ADD_UART_TEST_CODE == 1
|
|
||||||
new UartTestClass(objects::UART_TEST);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
void ObjectFactory::testAcsBrdAss(AcsBoardAssembly* acsAss) {
|
|
||||||
CommandMessage msg;
|
|
||||||
ModeMessage::setModeMessage(&msg, ModeMessage::CMD_MODE_COMMAND, DeviceHandlerIF::MODE_NORMAL,
|
|
||||||
duallane::A_SIDE);
|
|
||||||
ReturnValue_t result = MessageQueueSenderIF::sendMessage(acsAss->getCommandQueue(), &msg);
|
|
||||||
if (result != HasReturnvaluesIF::RETURN_OK) {
|
|
||||||
sif::warning << "Sending mode command failed" << std::endl;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,3 +0,0 @@
|
|||||||
target_sources(${OBSW_NAME} PRIVATE
|
|
||||||
fmObjectFactory.cpp
|
|
||||||
)
|
|
66
bsp_q7s/fmObjectFactory.cpp
Normal file
66
bsp_q7s/fmObjectFactory.cpp
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
#include "OBSWConfig.h"
|
||||||
|
#include "bsp_q7s/core/CoreController.h"
|
||||||
|
#include "bsp_q7s/core/ObjectFactory.h"
|
||||||
|
#include "busConf.h"
|
||||||
|
#include "commonObjects.h"
|
||||||
|
#include "devConf.h"
|
||||||
|
#include "fsfw_hal/linux/gpio/LinuxLibgpioIF.h"
|
||||||
|
#include "linux/ObjectFactory.h"
|
||||||
|
#include "linux/callbacks/gpioCallbacks.h"
|
||||||
|
#include "mission/core/GenericFactory.h"
|
||||||
|
#include "mission/system/tree/acsModeTree.h"
|
||||||
|
|
||||||
|
void ObjectFactory::produce(void* args) {
|
||||||
|
ObjectFactory::setStatics();
|
||||||
|
ObjectFactory::produceGenericObjects();
|
||||||
|
|
||||||
|
LinuxLibgpioIF* gpioComIF = nullptr;
|
||||||
|
UartComIF* uartComIF = nullptr;
|
||||||
|
SpiComIF* spiMainComIF = nullptr;
|
||||||
|
I2cComIF* i2cComIF = nullptr;
|
||||||
|
PowerSwitchIF* pwrSwitcher = nullptr;
|
||||||
|
SpiComIF* spiRwComIF = nullptr;
|
||||||
|
createCommunicationInterfaces(&gpioComIF, &uartComIF, &spiMainComIF, &i2cComIF, &spiRwComIF);
|
||||||
|
createTmpComponents();
|
||||||
|
new CoreController(objects::CORE_CONTROLLER);
|
||||||
|
|
||||||
|
gpioCallbacks::disableAllDecoder(gpioComIF);
|
||||||
|
createPcduComponents(gpioComIF, &pwrSwitcher);
|
||||||
|
createRadSensorComponent(gpioComIF);
|
||||||
|
createSunSensorComponents(gpioComIF, spiMainComIF, pwrSwitcher, q7s::SPI_DEFAULT_DEV);
|
||||||
|
|
||||||
|
#if OBSW_ADD_ACS_BOARD == 1
|
||||||
|
createAcsBoardComponents(gpioComIF, uartComIF, pwrSwitcher);
|
||||||
|
#endif
|
||||||
|
createHeaterComponents();
|
||||||
|
createSolarArrayDeploymentComponents();
|
||||||
|
createPlPcduComponents(gpioComIF, spiMainComIF, pwrSwitcher);
|
||||||
|
#if OBSW_ADD_SYRLINKS == 1
|
||||||
|
createSyrlinksComponents(pwrSwitcher);
|
||||||
|
#endif /* OBSW_ADD_SYRLINKS == 1 */
|
||||||
|
createRtdComponents(q7s::SPI_DEFAULT_DEV, gpioComIF, pwrSwitcher);
|
||||||
|
createPayloadComponents(gpioComIF);
|
||||||
|
|
||||||
|
#if OBSW_ADD_MGT == 1
|
||||||
|
createImtqComponents(pwrSwitcher);
|
||||||
|
#endif
|
||||||
|
createReactionWheelComponents(gpioComIF, pwrSwitcher);
|
||||||
|
|
||||||
|
#if OBSW_ADD_BPX_BATTERY_HANDLER == 1
|
||||||
|
createBpxBatteryComponent();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if OBSW_ADD_STAR_TRACKER == 1
|
||||||
|
createStrComponents(pwrSwitcher);
|
||||||
|
#endif /* OBSW_ADD_STAR_TRACKER == 1 */
|
||||||
|
#if OBSW_USE_CCSDS_IP_CORE == 1
|
||||||
|
createCcsdsComponents(gpioComIF);
|
||||||
|
#endif /* OBSW_USE_CCSDS_IP_CORE == 1 */
|
||||||
|
/* Test Task */
|
||||||
|
#if OBSW_ADD_TEST_CODE == 1
|
||||||
|
createTestComponents(gpioComIF);
|
||||||
|
#endif /* OBSW_ADD_TEST_CODE == 1 */
|
||||||
|
|
||||||
|
createMiscComponents();
|
||||||
|
satsystem::initAcsSubsystem();
|
||||||
|
}
|
@ -8,8 +8,6 @@
|
|||||||
|
|
||||||
FilesystemHelper::FilesystemHelper() {}
|
FilesystemHelper::FilesystemHelper() {}
|
||||||
|
|
||||||
FilesystemHelper::~FilesystemHelper() {}
|
|
||||||
|
|
||||||
ReturnValue_t FilesystemHelper::checkPath(std::string path) {
|
ReturnValue_t FilesystemHelper::checkPath(std::string path) {
|
||||||
SdCardManager* sdcMan = SdCardManager::instance();
|
SdCardManager* sdcMan = SdCardManager::instance();
|
||||||
if (sdcMan == nullptr) {
|
if (sdcMan == nullptr) {
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
#include "fsfw/returnvalues/HasReturnvaluesIF.h"
|
#include "fsfw/returnvalues/HasReturnvaluesIF.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief This class implements often used functions concerning the file system management.
|
* @brief This class implements often used functions related to the file system management.
|
||||||
*
|
*
|
||||||
* @author J. Meier
|
* @author J. Meier
|
||||||
*/
|
*/
|
||||||
@ -20,11 +20,8 @@ class FilesystemHelper : public HasReturnvaluesIF {
|
|||||||
//! [EXPORT] : [COMMENT] Specified file does not exist on filesystem
|
//! [EXPORT] : [COMMENT] Specified file does not exist on filesystem
|
||||||
static const ReturnValue_t FILE_NOT_EXISTS = MAKE_RETURN_CODE(0xA1);
|
static const ReturnValue_t FILE_NOT_EXISTS = MAKE_RETURN_CODE(0xA1);
|
||||||
|
|
||||||
FilesystemHelper();
|
|
||||||
virtual ~FilesystemHelper();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief In case the path points to a directory on the sd card the function checks if the
|
* @brief In case the path points to a directory on the sd card, the function checks if the
|
||||||
* appropriate SD card is mounted.
|
* appropriate SD card is mounted.
|
||||||
*
|
*
|
||||||
* @param path Path to check
|
* @param path Path to check
|
||||||
@ -39,11 +36,14 @@ class FilesystemHelper : public HasReturnvaluesIF {
|
|||||||
/**
|
/**
|
||||||
* @brief Checks if the file exists on the filesystem.
|
* @brief Checks if the file exists on the filesystem.
|
||||||
*
|
*
|
||||||
* param file File to check
|
* @param file File to check
|
||||||
*
|
*
|
||||||
* @return RETURN_OK if fiel exists, otherwise return error code.
|
* @return RETURN_OK if file exists, otherwise return error code.
|
||||||
*/
|
*/
|
||||||
static ReturnValue_t fileExists(std::string file);
|
static ReturnValue_t fileExists(std::string file);
|
||||||
|
|
||||||
|
private:
|
||||||
|
FilesystemHelper();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* BSP_Q7S_MEMORY_FILESYSTEMHELPER_H_ */
|
#endif /* BSP_Q7S_MEMORY_FILESYSTEMHELPER_H_ */
|
||||||
|
@ -89,13 +89,23 @@ void initmission::initTasks() {
|
|||||||
}
|
}
|
||||||
pstTasks.push_back(pst);
|
pstTasks.push_back(pst);
|
||||||
|
|
||||||
|
#if OBSW_ADD_PLOC_MPSOC == 1
|
||||||
PeriodicTaskIF* mpsocHelperTask = factory->createPeriodicTask(
|
PeriodicTaskIF* mpsocHelperTask = factory->createPeriodicTask(
|
||||||
"PLOC_MPSOC_HELPER", 20, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.2, missedDeadlineFunc);
|
"PLOC_MPSOC_HELPER", 20, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.2, missedDeadlineFunc);
|
||||||
result = mpsocHelperTask->addComponent(objects::PLOC_MPSOC_HELPER);
|
result = mpsocHelperTask->addComponent(objects::PLOC_MPSOC_HELPER);
|
||||||
if (result != HasReturnvaluesIF::RETURN_OK) {
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
initmission::printAddObjectError("PLOC_MPSOC_HELPER", objects::PLOC_MPSOC_HELPER);
|
initmission::printAddObjectError("PLOC_MPSOC_HELPER", objects::PLOC_MPSOC_HELPER);
|
||||||
}
|
}
|
||||||
pstTasks.push_back(mpsocHelperTask);
|
#endif /* OBSW_ADD_PLOC_MPSOC == 1*/
|
||||||
|
|
||||||
|
#if OBSW_ADD_PLOC_SUPERVISOR == 1
|
||||||
|
PeriodicTaskIF* supvHelperTask = factory->createPeriodicTask(
|
||||||
|
"PLOC_SUPV_HELPER", 20, PeriodicTaskIF::MINIMUM_STACK_SIZE, 0.2, missedDeadlineFunc);
|
||||||
|
result = supvHelperTask->addComponent(objects::PLOC_SUPERVISOR_HELPER);
|
||||||
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
|
initmission::printAddObjectError("PLOC_SUPV_HELPER", objects::PLOC_SUPERVISOR_HELPER);
|
||||||
|
}
|
||||||
|
#endif /* OBSW_ADD_PLOC_SUPERVISOR == 1 */
|
||||||
|
|
||||||
auto taskStarter = [](std::vector<PeriodicTaskIF*>& taskVector, std::string name) {
|
auto taskStarter = [](std::vector<PeriodicTaskIF*>& taskVector, std::string name) {
|
||||||
for (const auto& task : taskVector) {
|
for (const auto& task : taskVector) {
|
||||||
@ -111,6 +121,12 @@ void initmission::initTasks() {
|
|||||||
tmtcDistributor->startTask();
|
tmtcDistributor->startTask();
|
||||||
tmtcBridgeTask->startTask();
|
tmtcBridgeTask->startTask();
|
||||||
tmtcPollingTask->startTask();
|
tmtcPollingTask->startTask();
|
||||||
|
#if OBSW_ADD_PLOC_SUPERVISOR == 1
|
||||||
|
supvHelperTask->startTask();
|
||||||
|
#endif /* OBSW_ADD_PLOC_SUPERVISOR == 1 */
|
||||||
|
#if OBSW_ADD_PLOC_MPSOC == 1
|
||||||
|
mpsocHelperTask->startTask();
|
||||||
|
#endif /* OBSW_ADD_PLOC_MPSOC == 1 */
|
||||||
|
|
||||||
taskStarter(pstTasks, "PST Tasks");
|
taskStarter(pstTasks, "PST Tasks");
|
||||||
taskStarter(pusTasks, "PUS Tasks");
|
taskStarter(pusTasks, "PUS Tasks");
|
||||||
|
@ -1,27 +1,30 @@
|
|||||||
#include "ObjectFactory.h"
|
#include "ObjectFactory.h"
|
||||||
|
|
||||||
#include <devConf.h>
|
#include <devConf.h>
|
||||||
#include "fsfw_hal/linux/uart/UartComIF.h"
|
|
||||||
#include "fsfw_hal/linux/i2c/I2cComIF.h"
|
|
||||||
#include "fsfw_hal/linux/uart/UartCookie.h"
|
|
||||||
|
|
||||||
#include "OBSWConfig.h"
|
#include "OBSWConfig.h"
|
||||||
#include "busConf.h"
|
#include "busConf.h"
|
||||||
#include "devConf.h"
|
#include "devConf.h"
|
||||||
|
#include "devices/addresses.h"
|
||||||
|
#include "devices/gpioIds.h"
|
||||||
#include "fsfw/datapoollocal/LocalDataPoolManager.h"
|
#include "fsfw/datapoollocal/LocalDataPoolManager.h"
|
||||||
#include "fsfw/tmtcpacket/pus/tm.h"
|
#include "fsfw/tmtcpacket/pus/tm.h"
|
||||||
#include "fsfw/tmtcservices/CommandingServiceBase.h"
|
#include "fsfw/tmtcservices/CommandingServiceBase.h"
|
||||||
#include "fsfw/tmtcservices/PusServiceBase.h"
|
#include "fsfw/tmtcservices/PusServiceBase.h"
|
||||||
|
#include "fsfw_hal/linux/i2c/I2cComIF.h"
|
||||||
#include "fsfw_hal/linux/i2c/I2cCookie.h"
|
#include "fsfw_hal/linux/i2c/I2cCookie.h"
|
||||||
|
#include "fsfw_hal/linux/uart/UartComIF.h"
|
||||||
|
#include "fsfw_hal/linux/uart/UartCookie.h"
|
||||||
#include "linux/devices/ploc/PlocMPSoCHandler.h"
|
#include "linux/devices/ploc/PlocMPSoCHandler.h"
|
||||||
#include "linux/devices/ploc/PlocMPSoCHelper.h"
|
#include "linux/devices/ploc/PlocMPSoCHelper.h"
|
||||||
#include "mission/devices/Tmp1075Handler.h"
|
#include "linux/devices/ploc/PlocMemoryDumper.h"
|
||||||
|
#include "linux/devices/ploc/PlocSupervisorHandler.h"
|
||||||
|
#include "linux/devices/ploc/PlocSupvHelper.h"
|
||||||
#include "mission/core/GenericFactory.h"
|
#include "mission/core/GenericFactory.h"
|
||||||
|
#include "mission/devices/Tmp1075Handler.h"
|
||||||
#include "mission/utility/TmFunnel.h"
|
#include "mission/utility/TmFunnel.h"
|
||||||
#include "test/gpio/DummyGpioIF.h"
|
|
||||||
#include "objects/systemObjectList.h"
|
#include "objects/systemObjectList.h"
|
||||||
#include "devices/addresses.h"
|
#include "test/gpio/DummyGpioIF.h"
|
||||||
#include "devices/gpioIds.h"
|
|
||||||
#include "tmtc/apid.h"
|
#include "tmtc/apid.h"
|
||||||
#include "tmtc/pusIds.h"
|
#include "tmtc/pusIds.h"
|
||||||
|
|
||||||
@ -43,12 +46,13 @@ void ObjectFactory::produce(void* args) {
|
|||||||
Factory::setStaticFrameworkObjectIds();
|
Factory::setStaticFrameworkObjectIds();
|
||||||
ObjectFactory::produceGenericObjects();
|
ObjectFactory::produceGenericObjects();
|
||||||
|
|
||||||
|
new UartComIF(objects::UART_COM_IF);
|
||||||
|
|
||||||
#if OBSW_ADD_PLOC_MPSOC == 1
|
#if OBSW_ADD_PLOC_MPSOC == 1
|
||||||
UartCookie* mpsocUartCookie = new UartCookie(objects::PLOC_MPSOC_HANDLER, te0720_1cfa::MPSOC_UART,
|
UartCookie* mpsocUartCookie = new UartCookie(objects::PLOC_MPSOC_HANDLER, te0720_1cfa::MPSOC_UART,
|
||||||
uart::PLOC_MPSOC_BAUD, mpsoc::MAX_REPLY_SIZE);
|
uart::PLOC_MPSOC_BAUD, mpsoc::MAX_REPLY_SIZE);
|
||||||
mpsocUartCookie->setNoFixedSizeReply();
|
mpsocUartCookie->setNoFixedSizeReply();
|
||||||
PlocMPSoCHelper* plocMpsocHelper = new PlocMPSoCHelper(objects::PLOC_MPSOC_HELPER);
|
PlocMPSoCHelper* plocMpsocHelper = new PlocMPSoCHelper(objects::PLOC_MPSOC_HELPER);
|
||||||
new UartComIF(objects::UART_COM_IF);
|
|
||||||
auto dummyGpioIF = new DummyGpioIF();
|
auto dummyGpioIF = new DummyGpioIF();
|
||||||
PlocMPSoCHandler* plocMPSoCHandler = new PlocMPSoCHandler(
|
PlocMPSoCHandler* plocMPSoCHandler = new PlocMPSoCHandler(
|
||||||
objects::PLOC_MPSOC_HANDLER, objects::UART_COM_IF, mpsocUartCookie, plocMpsocHelper,
|
objects::PLOC_MPSOC_HANDLER, objects::UART_COM_IF, mpsocUartCookie, plocMpsocHelper,
|
||||||
@ -56,6 +60,20 @@ void ObjectFactory::produce(void* args) {
|
|||||||
plocMPSoCHandler->setStartUpImmediately();
|
plocMPSoCHandler->setStartUpImmediately();
|
||||||
#endif /* OBSW_ADD_PLOC_MPSOC == 1 */
|
#endif /* OBSW_ADD_PLOC_MPSOC == 1 */
|
||||||
|
|
||||||
|
#if OBSW_ADD_PLOC_SUPERVISOR == 1
|
||||||
|
UartCookie* supervisorCookie =
|
||||||
|
new UartCookie(objects::PLOC_SUPERVISOR_HANDLER, std::string("/dev/ttyPS1"),
|
||||||
|
uart::PLOC_SUPV_BAUD, supv::MAX_PACKET_SIZE * 20);
|
||||||
|
supervisorCookie->setNoFixedSizeReply();
|
||||||
|
auto supvGpioIF = new DummyGpioIF();
|
||||||
|
auto supvHelper = new PlocSupvHelper(objects::PLOC_SUPERVISOR_HELPER);
|
||||||
|
new PlocSupervisorHandler(objects::PLOC_SUPERVISOR_HANDLER, objects::UART_COM_IF,
|
||||||
|
supervisorCookie, Gpio(gpioIds::ENABLE_SUPV_UART, supvGpioIF),
|
||||||
|
pcdu::PDU1_CH6_PLOC_12V, supvHelper);
|
||||||
|
|
||||||
|
new PlocMemoryDumper(objects::PLOC_MEMORY_DUMPER);
|
||||||
|
#endif
|
||||||
|
|
||||||
#if OBSW_TEST_LIBGPIOD == 1
|
#if OBSW_TEST_LIBGPIOD == 1
|
||||||
#if OBSW_TEST_GPIO_OPEN_BYLABEL == 1
|
#if OBSW_TEST_GPIO_OPEN_BYLABEL == 1
|
||||||
/* Configure MIO0 as input */
|
/* Configure MIO0 as input */
|
||||||
@ -124,28 +142,17 @@ void ObjectFactory::produce(void* args) {
|
|||||||
GpioCookie* gpioCookie = new GpioCookie;
|
GpioCookie* gpioCookie = new GpioCookie;
|
||||||
gpioCookie->addGpio(gpioIds::HEATER_0, heaterGpio);
|
gpioCookie->addGpio(gpioIds::HEATER_0, heaterGpio);
|
||||||
new HeaterHandler(objects::HEATER_HANDLER, objects::GPIO_IF, gpioCookie, objects::PCDU_HANDLER,
|
new HeaterHandler(objects::HEATER_HANDLER, objects::GPIO_IF, gpioCookie, objects::PCDU_HANDLER,
|
||||||
pcduSwitches::TCS_BOARD_8V_HEATER_IN);
|
pcdu::TCS_BOARD_8V_HEATER_IN);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if OBSW_ADD_PLOC_SUPERVISOR == 1
|
new I2cComIF(objects::I2C_COM_IF);
|
||||||
/* Configuration for MIO0 on TE0720-03-1CFA */
|
|
||||||
UartCookie* plocSupervisorCookie =
|
|
||||||
new UartCookie(objects::PLOC_SUPERVISOR_HANDLER, std::string("/dev/ttyPS1"),
|
|
||||||
UartModes::NON_CANONICAL, 115200, PLOC_SPV::MAX_PACKET_SIZE * 20);
|
|
||||||
plocSupervisorCookie->setNoFixedSizeReply();
|
|
||||||
PlocSupervisorHandler* plocSupervisor = new PlocSupervisorHandler(
|
|
||||||
objects::PLOC_SUPERVISOR_HANDLER, objects::UART_COM_IF, plocSupervisorCookie);
|
|
||||||
plocSupervisor->setStartUpImmediately();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
new I2cComIF(objects::I2C_COM_IF);
|
I2cCookie* i2cCookieTmp1075tcs1 =
|
||||||
|
new I2cCookie(addresses::TMP1075_TCS_1, TMP1075::MAX_REPLY_LENGTH, std::string("/dev/i2c-0"));
|
||||||
|
I2cCookie* i2cCookieTmp1075tcs2 =
|
||||||
|
new I2cCookie(addresses::TMP1075_TCS_2, TMP1075::MAX_REPLY_LENGTH, std::string("/dev/i2c-0"));
|
||||||
|
|
||||||
I2cCookie* i2cCookieTmp1075tcs1 =
|
/* Temperature sensors */
|
||||||
new I2cCookie(addresses::TMP1075_TCS_1, TMP1075::MAX_REPLY_LENGTH, std::string("/dev/i2c-0"));
|
new Tmp1075Handler(objects::TMP1075_HANDLER_1, objects::I2C_COM_IF, i2cCookieTmp1075tcs1);
|
||||||
I2cCookie* i2cCookieTmp1075tcs2 =
|
new Tmp1075Handler(objects::TMP1075_HANDLER_2, objects::I2C_COM_IF, i2cCookieTmp1075tcs2);
|
||||||
new I2cCookie(addresses::TMP1075_TCS_2, TMP1075::MAX_REPLY_LENGTH, std::string("/dev/i2c-0"));
|
|
||||||
|
|
||||||
/* Temperature sensors */
|
|
||||||
new Tmp1075Handler(objects::TMP1075_HANDLER_1, objects::I2C_COM_IF, i2cCookieTmp1075tcs1);
|
|
||||||
new Tmp1075Handler(objects::TMP1075_HANDLER_2, objects::I2C_COM_IF, i2cCookieTmp1075tcs2);
|
|
||||||
}
|
}
|
||||||
|
@ -33,6 +33,10 @@ add_compile_options(
|
|||||||
set(STRIPPED_OBSW_NAME ${OBSW_BIN_NAME}-stripped)
|
set(STRIPPED_OBSW_NAME ${OBSW_BIN_NAME}-stripped)
|
||||||
set(STRIPPED_WATCHDOG_NAME eive-watchdog-stripped)
|
set(STRIPPED_WATCHDOG_NAME eive-watchdog-stripped)
|
||||||
|
|
||||||
|
if(EIVE_CREATE_UNIQUE_OBSW_BIN)
|
||||||
|
set(UNIQUE_OBSW_BIN_NAME ${OBSW_BIN_NAME}-$ENV{USERNAME})
|
||||||
|
endif()
|
||||||
|
|
||||||
add_custom_command(
|
add_custom_command(
|
||||||
TARGET ${OBSW_NAME}
|
TARGET ${OBSW_NAME}
|
||||||
POST_BUILD
|
POST_BUILD
|
||||||
@ -41,6 +45,16 @@ add_custom_command(
|
|||||||
COMMENT "Generating stripped executable ${STRIPPED_OBSW_NAME}.."
|
COMMENT "Generating stripped executable ${STRIPPED_OBSW_NAME}.."
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if(UNIQUE_OBSW_BIN_NAME)
|
||||||
|
add_custom_command(
|
||||||
|
TARGET ${OBSW_NAME}
|
||||||
|
POST_BUILD
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E copy
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/${OBSW_BIN_NAME}
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/${UNIQUE_OBSW_BIN_NAME}
|
||||||
|
COMMENT "Generating unique EIVE OBSW binary ${UNIQUE_OBSW_BIN_NAME}")
|
||||||
|
endif()
|
||||||
|
|
||||||
add_custom_command(
|
add_custom_command(
|
||||||
TARGET ${WATCHDOG_NAME}
|
TARGET ${WATCHDOG_NAME}
|
||||||
POST_BUILD
|
POST_BUILD
|
||||||
|
@ -20,7 +20,7 @@ else
|
|||||||
cfg_script_name="${EIVE_OBSW_ROOT}/cmake/scripts/${cfg_script_name}"
|
cfg_script_name="${EIVE_OBSW_ROOT}/cmake/scripts/${cfg_script_name}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ -z "${EIVE_Q7S_EM}" ]]; then
|
if [ ! -z "${EIVE_Q7S_EM}" ]; then
|
||||||
build_defs="EIVE_Q7S_EM=ON"
|
build_defs="EIVE_Q7S_EM=ON"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@ else
|
|||||||
cfg_script_name="${EIVE_OBSW_ROOT}/cmake/scripts/${cfg_script_name}"
|
cfg_script_name="${EIVE_OBSW_ROOT}/cmake/scripts/${cfg_script_name}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ -z "${EIVE_Q7S_EM}" ]]; then
|
if [ ! -z "${EIVE_Q7S_EM}" ]; then
|
||||||
build_defs="EIVE_Q7S_EM=ON"
|
build_defs="EIVE_Q7S_EM=ON"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@ else
|
|||||||
cfg_script_name="${EIVE_OBSW_ROOT}/cmake/scripts/${cfg_script_name}"
|
cfg_script_name="${EIVE_OBSW_ROOT}/cmake/scripts/${cfg_script_name}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ -z "${EIVE_Q7S_EM}" ]]; then
|
if [ ! -z "${EIVE_Q7S_EM}" ]; then
|
||||||
build_defs="EIVE_Q7S_EM=ON"
|
build_defs="EIVE_Q7S_EM=ON"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -16,6 +16,7 @@ enum commonClassIds: uint8_t {
|
|||||||
DWLPWRON_CMD, //DWLPWRON
|
DWLPWRON_CMD, //DWLPWRON
|
||||||
MPSOC_TM, //MPTM
|
MPSOC_TM, //MPTM
|
||||||
PLOC_SUPERVISOR_HANDLER, //PLSV
|
PLOC_SUPERVISOR_HANDLER, //PLSV
|
||||||
|
PLOC_SUPV_HELPER, //PLSPVhLP
|
||||||
SUS_HANDLER, //SUSS
|
SUS_HANDLER, //SUSS
|
||||||
CCSDS_IP_CORE_BRIDGE, //IPCI
|
CCSDS_IP_CORE_BRIDGE, //IPCI
|
||||||
PTME, //PTME
|
PTME, //PTME
|
||||||
@ -32,6 +33,7 @@ enum commonClassIds: uint8_t {
|
|||||||
PLOC_MPSOC_HELPER, // PLMPHLP
|
PLOC_MPSOC_HELPER, // PLMPHLP
|
||||||
SA_DEPL_HANDLER, //SADPL
|
SA_DEPL_HANDLER, //SADPL
|
||||||
MPSOC_RETURN_VALUES_IF, //MPSOCRTVIF
|
MPSOC_RETURN_VALUES_IF, //MPSOCRTVIF
|
||||||
|
SUPV_RETURN_VALUES_IF, //SPVRTVIF
|
||||||
COMMON_CLASS_ID_END // [EXPORT] : [END]
|
COMMON_CLASS_ID_END // [EXPORT] : [END]
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -98,7 +98,6 @@ enum commonObjects: uint32_t {
|
|||||||
|
|
||||||
STAR_TRACKER = 0x44130001,
|
STAR_TRACKER = 0x44130001,
|
||||||
|
|
||||||
PLOC_UPDATER = 0x44330000,
|
|
||||||
PLOC_MEMORY_DUMPER = 0x44330001,
|
PLOC_MEMORY_DUMPER = 0x44330001,
|
||||||
STR_HELPER = 0x44330002,
|
STR_HELPER = 0x44330002,
|
||||||
PLOC_MPSOC_HELPER = 0x44330003,
|
PLOC_MPSOC_HELPER = 0x44330003,
|
||||||
|
@ -30,7 +30,8 @@ enum: uint8_t {
|
|||||||
PDU1_HANDLER = 133,
|
PDU1_HANDLER = 133,
|
||||||
PDU2_HANDLER = 134,
|
PDU2_HANDLER = 134,
|
||||||
ACU_HANDLER = 135,
|
ACU_HANDLER = 135,
|
||||||
SYRLINKS = 136,
|
PLOC_SUPV_HELPER = 136,
|
||||||
|
SYRLINKS = 137,
|
||||||
COMMON_SUBSYSTEM_ID_END
|
COMMON_SUBSYSTEM_ID_END
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -53,7 +53,7 @@ static constexpr size_t HYPERION_GPS_REPLY_MAX_BUFFER = 1024;
|
|||||||
static constexpr UartBaudRate SYRLINKS_BAUD = UartBaudRate::RATE_38400;
|
static constexpr UartBaudRate SYRLINKS_BAUD = UartBaudRate::RATE_38400;
|
||||||
static constexpr UartBaudRate GNSS_BAUD = UartBaudRate::RATE_9600;
|
static constexpr UartBaudRate GNSS_BAUD = UartBaudRate::RATE_9600;
|
||||||
static constexpr UartBaudRate PLOC_MPSOC_BAUD = UartBaudRate::RATE_115200;
|
static constexpr UartBaudRate PLOC_MPSOC_BAUD = UartBaudRate::RATE_115200;
|
||||||
static constexpr UartBaudRate PLOC_SUPERVISOR_BAUD = UartBaudRate::RATE_115200;
|
static constexpr UartBaudRate PLOC_SUPV_BAUD = UartBaudRate::RATE_115200;
|
||||||
static constexpr UartBaudRate STAR_TRACKER_BAUD = UartBaudRate::RATE_921600;
|
static constexpr UartBaudRate STAR_TRACKER_BAUD = UartBaudRate::RATE_921600;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
2
fsfw
2
fsfw
@ -1 +1 @@
|
|||||||
Subproject commit 43f0841d0a29d344b4329c228452ee109ce03a1f
|
Subproject commit dafcaa60079ba8e57753d389e6a569ee3eb0b7cb
|
@ -95,7 +95,7 @@
|
|||||||
11602;0x2d52;ACK_FAILURE;LOW;PLOC receive acknowledgment failure report P1: Command Id which leads the acknowledgment failure report P2: The status field inserted by the MPSoC into the data field;linux/devices/ploc/PlocMPSoCHandler.h
|
11602;0x2d52;ACK_FAILURE;LOW;PLOC receive acknowledgment failure report P1: Command Id which leads the acknowledgment failure report P2: The status field inserted by the MPSoC into the data field;linux/devices/ploc/PlocMPSoCHandler.h
|
||||||
11603;0x2d53;EXE_FAILURE;LOW;PLOC receive execution failure report P1: Command Id which leads the execution failure report P2: The status field inserted by the MPSoC into the data field;linux/devices/ploc/PlocMPSoCHandler.h
|
11603;0x2d53;EXE_FAILURE;LOW;PLOC receive execution failure report P1: Command Id which leads the execution failure report P2: The status field inserted by the MPSoC into the data field;linux/devices/ploc/PlocMPSoCHandler.h
|
||||||
11604;0x2d54;MPSOC_HANDLER_CRC_FAILURE;LOW;PLOC reply has invalid crc;linux/devices/ploc/PlocMPSoCHandler.h
|
11604;0x2d54;MPSOC_HANDLER_CRC_FAILURE;LOW;PLOC reply has invalid crc;linux/devices/ploc/PlocMPSoCHandler.h
|
||||||
11605;0x2d55;MPSOC_HANDLER_SEQ_CNT_MISMATCH;LOW;Packet sequence count in received space packet does not match expected count P1: Expected sequence count P2: Received sequence count;linux/devices/ploc/PlocMPSoCHandler.h
|
11605;0x2d55;MPSOC_HANDLER_SEQUENCE_COUNT_MISMATCH;LOW;Packet sequence count in received space packet does not match expected count P1: Expected sequence count P2: Received sequence count;linux/devices/ploc/PlocMPSoCHandler.h
|
||||||
11606;0x2d56;MPSOC_SHUTDOWN_FAILED;HIGH;Supervisor fails to shutdown MPSoC. Requires to power off the PLOC and thus also to shutdown the supervisor.;linux/devices/ploc/PlocMPSoCHandler.h
|
11606;0x2d56;MPSOC_SHUTDOWN_FAILED;HIGH;Supervisor fails to shutdown MPSoC. Requires to power off the PLOC and thus also to shutdown the supervisor.;linux/devices/ploc/PlocMPSoCHandler.h
|
||||||
11701;0x2db5;SELF_TEST_I2C_FAILURE;LOW;Get self test result returns I2C failure P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA;mission/devices/IMTQHandler.h
|
11701;0x2db5;SELF_TEST_I2C_FAILURE;LOW;Get self test result returns I2C failure P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA;mission/devices/IMTQHandler.h
|
||||||
11702;0x2db6;SELF_TEST_SPI_FAILURE;LOW;Get self test result returns SPI failure. This concerns the MTM connectivity. P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA;mission/devices/IMTQHandler.h
|
11702;0x2db6;SELF_TEST_SPI_FAILURE;LOW;Get self test result returns SPI failure. This concerns the MTM connectivity. P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA;mission/devices/IMTQHandler.h
|
||||||
@ -105,21 +105,17 @@
|
|||||||
11706;0x2dba;SELF_TEST_MTM_RANGE_FAILURE;LOW;Get self test result returns failure that MTM values were outside of the expected range. P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA;mission/devices/IMTQHandler.h
|
11706;0x2dba;SELF_TEST_MTM_RANGE_FAILURE;LOW;Get self test result returns failure that MTM values were outside of the expected range. P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA;mission/devices/IMTQHandler.h
|
||||||
11707;0x2dbb;SELF_TEST_COIL_CURRENT_FAILURE;LOW;Get self test result returns failure indicating that the coil current was outside of the expected range P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA;mission/devices/IMTQHandler.h
|
11707;0x2dbb;SELF_TEST_COIL_CURRENT_FAILURE;LOW;Get self test result returns failure indicating that the coil current was outside of the expected range P1: Indicates on which axis the failure occurred. 0 -> INIT, 1 -> +X, 2 -> -X, 3 -> +Y, 4 -> -Y, 5 -> +Z, 6 -> -Z, 7 -> FINA;mission/devices/IMTQHandler.h
|
||||||
11708;0x2dbc;INVALID_ERROR_BYTE;LOW;Received invalid error byte. This indicates an error of the communication link between IMTQ and OBC.;mission/devices/IMTQHandler.h
|
11708;0x2dbc;INVALID_ERROR_BYTE;LOW;Received invalid error byte. This indicates an error of the communication link between IMTQ and OBC.;mission/devices/IMTQHandler.h
|
||||||
11801;0x2e19;ERROR_STATE;HIGH;Reaction wheel signals an error state;mission/devices/RwHandler.h
|
11801;0x2e19;ERROR_STATE;HIGH;Reaction wheel signals an error state;mission/devices/devicedefinitions/RwDefinitions.h
|
||||||
|
11802;0x2e1a;RESET_OCCURED;HIGH;;mission/devices/devicedefinitions/RwDefinitions.h
|
||||||
11901;0x2e7d;BOOTING_FIRMWARE_FAILED;LOW;Failed to boot firmware;linux/devices/startracker/StarTrackerHandler.h
|
11901;0x2e7d;BOOTING_FIRMWARE_FAILED;LOW;Failed to boot firmware;linux/devices/startracker/StarTrackerHandler.h
|
||||||
11902;0x2e7e;BOOTING_BOOTLOADER_FAILED;LOW;Failed to boot star tracker into bootloader mode;linux/devices/startracker/StarTrackerHandler.h
|
11902;0x2e7e;BOOTING_BOOTLOADER_FAILED;LOW;Failed to boot star tracker into bootloader mode;linux/devices/startracker/StarTrackerHandler.h
|
||||||
12001;0x2ee1;SUPV_MEMORY_READ_RPT_CRC_FAILURE;LOW;PLOC supervisor crc failure in telemetry packet;linux/devices/ploc/PlocSupervisorHandler.h
|
12001;0x2ee1;SUPV_MEMORY_READ_RPT_CRC_FAILURE;LOW;PLOC supervisor crc failure in telemetry packet;linux/devices/ploc/PlocSupervisorHandler.h
|
||||||
12002;0x2ee2;SUPV_ACK_FAILURE;LOW;PLOC supervisor received acknowledgment failure report;linux/devices/ploc/PlocSupervisorHandler.h
|
12002;0x2ee2;SUPV_ACK_FAILURE;LOW;PLOC supervisor received acknowledgment failure report;linux/devices/ploc/PlocSupervisorHandler.h
|
||||||
12003;0x2ee3;SUPV_EXE_FAILURE;LOW;PLOC received execution failure report;linux/devices/ploc/PlocSupervisorHandler.h
|
12003;0x2ee3;SUPV_EXE_FAILURE;LOW;PLOC received execution failure report P1: ID of command for which the execution failed P2: Status code sent by the supervisor handler;linux/devices/ploc/PlocSupervisorHandler.h
|
||||||
12004;0x2ee4;SUPV_CRC_FAILURE_EVENT;LOW;PLOC supervisor reply has invalid crc;linux/devices/ploc/PlocSupervisorHandler.h
|
12004;0x2ee4;SUPV_CRC_FAILURE_EVENT;LOW;PLOC supervisor reply has invalid crc;linux/devices/ploc/PlocSupervisorHandler.h
|
||||||
|
12005;0x2ee5;SUPV_MPSOC_SHUWDOWN_BUILD_FAILED;LOW;Failed to build the command to shutdown the MPSoC;linux/devices/ploc/PlocSupervisorHandler.h
|
||||||
12100;0x2f44;SANITIZATION_FAILED;LOW;;bsp_q7s/memory/SdCardManager.h
|
12100;0x2f44;SANITIZATION_FAILED;LOW;;bsp_q7s/memory/SdCardManager.h
|
||||||
12101;0x2f45;MOUNTED_SD_CARD;INFO;;bsp_q7s/memory/SdCardManager.h
|
12101;0x2f45;MOUNTED_SD_CARD;INFO;;bsp_q7s/memory/SdCardManager.h
|
||||||
12200;0x2fa8;UPDATE_FILE_NOT_EXISTS;LOW;;linux/devices/ploc/PlocUpdater.h
|
|
||||||
12201;0x2fa9;ACTION_COMMANDING_FAILED;LOW;Failed to send command to supervisor handler P1: Return value of CommandActionHelper::commandAction P2: Action ID of command to send;linux/devices/ploc/PlocUpdater.h
|
|
||||||
12202;0x2faa;UPDATE_AVAILABLE_FAILED;LOW;Supervisor handler replied action message indicating a command execution failure of the update available command;linux/devices/ploc/PlocUpdater.h
|
|
||||||
12203;0x2fab;UPDATE_TRANSFER_FAILED;LOW;Supervisor handler failed to transfer an update space packet. P1: Parameter holds the number of update packets already sent (inclusive the failed packet);linux/devices/ploc/PlocUpdater.h
|
|
||||||
12204;0x2fac;UPDATE_VERIFY_FAILED;LOW;Supervisor failed to execute the update verify command.;linux/devices/ploc/PlocUpdater.h
|
|
||||||
12205;0x2fad;UPDATE_FINISHED;INFO;MPSoC update successful completed;linux/devices/ploc/PlocUpdater.h
|
|
||||||
12300;0x300c;SEND_MRAM_DUMP_FAILED;LOW;Failed to send mram dump command to supervisor handler P1: Return value of commandAction function P2: Start address of MRAM to dump with this command;linux/devices/ploc/PlocMemoryDumper.h
|
12300;0x300c;SEND_MRAM_DUMP_FAILED;LOW;Failed to send mram dump command to supervisor handler P1: Return value of commandAction function P2: Start address of MRAM to dump with this command;linux/devices/ploc/PlocMemoryDumper.h
|
||||||
12301;0x300d;MRAM_DUMP_FAILED;LOW;Received completion failure report form PLOC supervisor handler P1: MRAM start address of failing dump command;linux/devices/ploc/PlocMemoryDumper.h
|
12301;0x300d;MRAM_DUMP_FAILED;LOW;Received completion failure report form PLOC supervisor handler P1: MRAM start address of failing dump command;linux/devices/ploc/PlocMemoryDumper.h
|
||||||
12302;0x300e;MRAM_DUMP_FINISHED;LOW;MRAM dump finished successfully;linux/devices/ploc/PlocMemoryDumper.h
|
12302;0x300e;MRAM_DUMP_FINISHED;LOW;MRAM dump finished successfully;linux/devices/ploc/PlocMemoryDumper.h
|
||||||
@ -146,15 +142,15 @@
|
|||||||
12516;0x30e4;STR_HELPER_REQUESTING_MSG_FAILED;LOW;;linux/devices/startracker/StrHelper.h
|
12516;0x30e4;STR_HELPER_REQUESTING_MSG_FAILED;LOW;;linux/devices/startracker/StrHelper.h
|
||||||
12600;0x3138;MPSOC_FLASH_WRITE_FAILED;LOW;Flash write fails;linux/devices/ploc/PlocMPSoCHelper.h
|
12600;0x3138;MPSOC_FLASH_WRITE_FAILED;LOW;Flash write fails;linux/devices/ploc/PlocMPSoCHelper.h
|
||||||
12601;0x3139;MPSOC_FLASH_WRITE_SUCCESSFUL;LOW;Flash write successful;linux/devices/ploc/PlocMPSoCHelper.h
|
12601;0x3139;MPSOC_FLASH_WRITE_SUCCESSFUL;LOW;Flash write successful;linux/devices/ploc/PlocMPSoCHelper.h
|
||||||
12602;0x313a;SENDING_COMMAND_FAILED;LOW;;linux/devices/ploc/PlocMPSoCHelper.h
|
12602;0x313a;MPSOC_SENDING_COMMAND_FAILED;LOW;;linux/devices/ploc/PlocMPSoCHelper.h
|
||||||
12603;0x313b;MPSOC_HELPER_REQUESTING_REPLY_FAILED;LOW;Request receive message of communication interface failed P1: Return value returned by the communication interface requestReceiveMessage function P2: Internal state of MPSoC helper;linux/devices/ploc/PlocMPSoCHelper.h
|
12603;0x313b;MPSOC_HELPER_REQUESTING_REPLY_FAILED;LOW;Request receive message of communication interface failed P1: Return value returned by the communication interface requestReceiveMessage function P2: Internal state of MPSoC helper;linux/devices/ploc/PlocMPSoCHelper.h
|
||||||
12604;0x313c;MPSOC_HELPER_READING_REPLY_FAILED;LOW;Reading receive message of communication interface failed P1: Return value returned by the communication interface readingReceivedMessage function P2: Internal state of MPSoC helper;linux/devices/ploc/PlocMPSoCHelper.h
|
12604;0x313c;MPSOC_HELPER_READING_REPLY_FAILED;LOW;Reading receive message of communication interface failed P1: Return value returned by the communication interface readingReceivedMessage function P2: Internal state of MPSoC helper;linux/devices/ploc/PlocMPSoCHelper.h
|
||||||
12605;0x313d;MISSING_ACK;LOW;Did not receive acknowledgement report P1: Number of bytes missing P2: Internal state of MPSoC helper;linux/devices/ploc/PlocMPSoCHelper.h
|
12605;0x313d;MPSOC_MISSING_ACK;LOW;Did not receive acknowledgment report P1: Number of bytes missing P2: Internal state of MPSoC helper;linux/devices/ploc/PlocMPSoCHelper.h
|
||||||
12606;0x313e;MISSING_EXE;LOW;Did not receive execution report P1: Number of bytes missing P2: Internal state of MPSoC helper;linux/devices/ploc/PlocMPSoCHelper.h
|
12606;0x313e;MPSOC_MISSING_EXE;LOW;Did not receive execution report P1: Number of bytes missing P2: Internal state of MPSoC helper;linux/devices/ploc/PlocMPSoCHelper.h
|
||||||
12607;0x313f;ACK_FAILURE_REPORT;LOW;Received acknowledgement failure report P1: Internal state of MPSoC;linux/devices/ploc/PlocMPSoCHelper.h
|
12607;0x313f;MPSOC_ACK_FAILURE_REPORT;LOW;Received acknowledgment failure report P1: Internal state of MPSoC;linux/devices/ploc/PlocMPSoCHelper.h
|
||||||
12608;0x3140;EXE_FAILURE_REPORT;LOW;Received execution failure report P1: Internal state of MPSoC;linux/devices/ploc/PlocMPSoCHelper.h
|
12608;0x3140;MPSOC_EXE_FAILURE_REPORT;LOW;Received execution failure report P1: Internal state of MPSoC;linux/devices/ploc/PlocMPSoCHelper.h
|
||||||
12609;0x3141;ACK_INVALID_APID;LOW;Expected acknowledgement report but received space packet with other apid P1: Apid of received space packet P2: Internal state of MPSoC;linux/devices/ploc/PlocMPSoCHelper.h
|
12609;0x3141;MPSOC_ACK_INVALID_APID;LOW;Expected acknowledgment report but received space packet with other apid P1: Apid of received space packet P2: Internal state of MPSoC;linux/devices/ploc/PlocMPSoCHelper.h
|
||||||
12610;0x3142;EXE_INVALID_APID;LOW;Expected execution report but received space packet with other apid P1: Apid of received space packet P2: Internal state of MPSoC;linux/devices/ploc/PlocMPSoCHelper.h
|
12610;0x3142;MPSOC_EXE_INVALID_APID;LOW;Expected execution report but received space packet with other apid P1: Apid of received space packet P2: Internal state of MPSoC;linux/devices/ploc/PlocMPSoCHelper.h
|
||||||
12611;0x3143;MPSOC_HELPER_SEQ_CNT_MISMATCH;LOW;Received sequence count does not match expected sequence count P1: Expected sequence count P2: Received sequence count;linux/devices/ploc/PlocMPSoCHelper.h
|
12611;0x3143;MPSOC_HELPER_SEQ_CNT_MISMATCH;LOW;Received sequence count does not match expected sequence count P1: Expected sequence count P2: Received sequence count;linux/devices/ploc/PlocMPSoCHelper.h
|
||||||
12700;0x319c;TRANSITION_BACK_TO_OFF;MEDIUM;Could not transition properly and went back to ALL OFF;mission/devices/PayloadPcduHandler.h
|
12700;0x319c;TRANSITION_BACK_TO_OFF;MEDIUM;Could not transition properly and went back to ALL OFF;mission/devices/PayloadPcduHandler.h
|
||||||
12701;0x319d;NEG_V_OUT_OF_BOUNDS;MEDIUM;P1: 0 -> too low, 1 -> too high P2: Float value;mission/devices/PayloadPcduHandler.h
|
12701;0x319d;NEG_V_OUT_OF_BOUNDS;MEDIUM;P1: 0 -> too low, 1 -> too high P2: Float value;mission/devices/PayloadPcduHandler.h
|
||||||
@ -181,7 +177,24 @@
|
|||||||
13200;0x3390;P60_BOOT_COUNT;INFO;P60 boot count is broadcasted once at SW startup. P1: Boot count;mission/devices/P60DockHandler.h
|
13200;0x3390;P60_BOOT_COUNT;INFO;P60 boot count is broadcasted once at SW startup. P1: Boot count;mission/devices/P60DockHandler.h
|
||||||
13201;0x3391;BATT_MODE;INFO;Battery mode is broadcasted at startup. P1: Mode;mission/devices/P60DockHandler.h
|
13201;0x3391;BATT_MODE;INFO;Battery mode is broadcasted at startup. P1: Mode;mission/devices/P60DockHandler.h
|
||||||
13202;0x3392;BATT_MODE_CHANGED;MEDIUM;Battery mode has changed. P1: Old mode. P2: New mode;mission/devices/P60DockHandler.h
|
13202;0x3392;BATT_MODE_CHANGED;MEDIUM;Battery mode has changed. P1: Old mode. P2: New mode;mission/devices/P60DockHandler.h
|
||||||
13600;0x3520;ALLOC_FAILURE;MEDIUM;;bsp_q7s/core/CoreController.h
|
13600;0x3520;SUPV_UPDATE_FAILED;LOW;update failed;linux/devices/ploc/PlocSupvHelper.h
|
||||||
13601;0x3521;REBOOT_SW;MEDIUM; Software reboot occured. Can also be a systemd reboot. P1: Current Chip, P2: Current Copy;bsp_q7s/core/CoreController.h
|
13601;0x3521;SUPV_UPDATE_SUCCESSFUL;LOW;update successful;linux/devices/ploc/PlocSupvHelper.h
|
||||||
13602;0x3522;REBOOT_MECHANISM_TRIGGERED;MEDIUM;The reboot mechanism was triggered. P1: First 16 bits: Last Chip, Last 16 bits: Last Copy, P2: Each byte is the respective reboot count for the slots;bsp_q7s/core/CoreController.h
|
13602;0x3522;TERMINATED_UPDATE_PROCEDURE;LOW;Terminated update procedure by command;linux/devices/ploc/PlocSupvHelper.h
|
||||||
13603;0x3523;REBOOT_HW;MEDIUM;;bsp_q7s/core/CoreController.h
|
13603;0x3523;SUPV_EVENT_BUFFER_REQUEST_SUCCESSFUL;LOW;Requesting event buffer was successful;linux/devices/ploc/PlocSupvHelper.h
|
||||||
|
13604;0x3524;SUPV_EVENT_BUFFER_REQUEST_FAILED;LOW;Requesting event buffer failed;linux/devices/ploc/PlocSupvHelper.h
|
||||||
|
13605;0x3525;SUPV_EVENT_BUFFER_REQUEST_TERMINATED;LOW;Terminated event buffer request by command P1: Number of packets read before process was terminated;linux/devices/ploc/PlocSupvHelper.h
|
||||||
|
13606;0x3526;SUPV_SENDING_COMMAND_FAILED;LOW;;linux/devices/ploc/PlocSupvHelper.h
|
||||||
|
13607;0x3527;SUPV_HELPER_REQUESTING_REPLY_FAILED;LOW;Request receive message of communication interface failed P1: Return value returned by the communication interface requestReceiveMessage function P2: Internal state of supervisor helper;linux/devices/ploc/PlocSupvHelper.h
|
||||||
|
13608;0x3528;SUPV_HELPER_READING_REPLY_FAILED;LOW;Reading receive message of communication interface failed P1: Return value returned by the communication interface readingReceivedMessage function P2: Internal state of supervisor helper;linux/devices/ploc/PlocSupvHelper.h
|
||||||
|
13609;0x3529;SUPV_MISSING_ACK;LOW;Did not receive acknowledgement report P1: Number of bytes missing P2: Internal state of MPSoC helper;linux/devices/ploc/PlocSupvHelper.h
|
||||||
|
13610;0x352a;SUPV_MISSING_EXE;LOW;Supervisor did not receive execution report P1: Number of bytes missing P2: Internal state of supervisor helper;linux/devices/ploc/PlocSupvHelper.h
|
||||||
|
13611;0x352b;SUPV_ACK_FAILURE_REPORT;LOW;Supervisor received acknowledgment failure report P1: Internal state of supervisor helper;linux/devices/ploc/PlocSupvHelper.h
|
||||||
|
13612;0x352c;SUPV_EXE_FAILURE_REPORT;LOW;Execution report failure P1:;linux/devices/ploc/PlocSupvHelper.h
|
||||||
|
13613;0x352d;SUPV_ACK_INVALID_APID;LOW;Supervisor expected acknowledgment report but received space packet with other apid P1: Apid of received space packet P2: Internal state of supervisor helper;linux/devices/ploc/PlocSupvHelper.h
|
||||||
|
13614;0x352e;SUPV_EXE_INVALID_APID;LOW;Supervisor helper expected execution report but received space packet with other apid P1: Apid of received space packet P2: Internal state of supervisor helper;linux/devices/ploc/PlocSupvHelper.h
|
||||||
|
13615;0x352f;ACK_RECEPTION_FAILURE;LOW;Failed to receive acknowledgment report P1: Return value P2: Apid of command for which the reception of the acknowledgment report failed;linux/devices/ploc/PlocSupvHelper.h
|
||||||
|
13616;0x3530;EXE_RECEPTION_FAILURE;LOW;Failed to receive execution report P1: Return value P2: Apid of command for which the reception of the execution report failed;linux/devices/ploc/PlocSupvHelper.h
|
||||||
|
13700;0x3584;ALLOC_FAILURE;MEDIUM;;bsp_q7s/core/CoreController.h
|
||||||
|
13701;0x3585;REBOOT_SW;MEDIUM; Software reboot occurred. Can also be a systemd reboot. P1: Current Chip, P2: Current Copy;bsp_q7s/core/CoreController.h
|
||||||
|
13702;0x3586;REBOOT_MECHANISM_TRIGGERED;MEDIUM;The reboot mechanism was triggered. P1: First 16 bits: Last Chip, Last 16 bits: Last Copy, P2: Each byte is the respective reboot count for the slots;bsp_q7s/core/CoreController.h
|
||||||
|
13703;0x3587;REBOOT_HW;MEDIUM;;bsp_q7s/core/CoreController.h
|
||||||
|
|
@ -4,18 +4,18 @@
|
|||||||
0x43400001;THERMAL_CONTROLLER
|
0x43400001;THERMAL_CONTROLLER
|
||||||
0x44120006;MGM_0_LIS3_HANDLER
|
0x44120006;MGM_0_LIS3_HANDLER
|
||||||
0x44120010;GYRO_0_ADIS_HANDLER
|
0x44120010;GYRO_0_ADIS_HANDLER
|
||||||
0x44120032;SUS_0
|
0x44120032;SUS_0_N_LOC_XFYFZM_PT_XF
|
||||||
0x44120033;SUS_1
|
0x44120033;SUS_1_N_LOC_XBYFZM_PT_XB
|
||||||
0x44120034;SUS_2
|
0x44120034;SUS_2_N_LOC_XFYBZB_PT_YB
|
||||||
0x44120035;SUS_3
|
0x44120035;SUS_3_N_LOC_XFYBZF_PT_YF
|
||||||
0x44120036;SUS_4
|
0x44120036;SUS_4_N_LOC_XMYFZF_PT_ZF
|
||||||
0x44120037;SUS_5
|
0x44120037;SUS_5_N_LOC_XFYMZB_PT_ZB
|
||||||
0x44120038;SUS_6
|
0x44120038;SUS_6_R_LOC_XFYBZM_PT_XF
|
||||||
0x44120039;SUS_7
|
0x44120039;SUS_7_R_LOC_XBYBZM_PT_XB
|
||||||
0x44120040;SUS_8
|
0x44120040;SUS_8_R_LOC_XBYBZB_PT_YB
|
||||||
0x44120041;SUS_9
|
0x44120041;SUS_9_R_LOC_XBYBZB_PT_YF
|
||||||
0x44120042;SUS_10
|
0x44120042;SUS_10_N_LOC_XMYBZF_PT_ZF
|
||||||
0x44120043;SUS_11
|
0x44120043;SUS_11_R_LOC_XBYMZB_PT_ZB
|
||||||
0x44120047;RW1
|
0x44120047;RW1
|
||||||
0x44120107;MGM_1_RM3100_HANDLER
|
0x44120107;MGM_1_RM3100_HANDLER
|
||||||
0x44120111;GYRO_1_L3G_HANDLER
|
0x44120111;GYRO_1_L3G_HANDLER
|
||||||
@ -37,7 +37,6 @@
|
|||||||
0x44260000;BPX_BATT_HANDLER
|
0x44260000;BPX_BATT_HANDLER
|
||||||
0x44300000;PLPCDU_HANDLER
|
0x44300000;PLPCDU_HANDLER
|
||||||
0x443200A5;RAD_SENSOR
|
0x443200A5;RAD_SENSOR
|
||||||
0x44330000;PLOC_UPDATER
|
|
||||||
0x44330001;PLOC_MEMORY_DUMPER
|
0x44330001;PLOC_MEMORY_DUMPER
|
||||||
0x44330002;STR_HELPER
|
0x44330002;STR_HELPER
|
||||||
0x44330003;PLOC_MPSOC_HELPER
|
0x44330003;PLOC_MPSOC_HELPER
|
||||||
@ -48,22 +47,22 @@
|
|||||||
0x444100A4;HEATER_HANDLER
|
0x444100A4;HEATER_HANDLER
|
||||||
0x44420004;TMP1075_HANDLER_1
|
0x44420004;TMP1075_HANDLER_1
|
||||||
0x44420005;TMP1075_HANDLER_2
|
0x44420005;TMP1075_HANDLER_2
|
||||||
0x44420016;RTD_IC_3
|
0x44420016;RTD_0_IC3_PLOC_HEATSPREADER
|
||||||
0x44420017;RTD_IC_4
|
0x44420017;RTD_1_IC4_PLOC_MISSIONBOARD
|
||||||
0x44420018;RTD_IC_5
|
0x44420018;RTD_2_IC5_4K_CAMERA
|
||||||
0x44420019;RTD_IC_6
|
0x44420019;RTD_3_IC6_DAC_HEATSPREADER
|
||||||
0x44420020;RTD_IC_7
|
0x44420020;RTD_4_IC7_STARTRACKER
|
||||||
0x44420021;RTD_IC_8
|
0x44420021;RTD_5_IC8_RW1_MX_MY
|
||||||
0x44420022;RTD_IC_9
|
0x44420022;RTD_6_IC9_DRO
|
||||||
0x44420023;RTD_IC_10
|
0x44420023;RTD_7_IC10_SCEX
|
||||||
0x44420024;RTD_IC_11
|
0x44420024;RTD_8_IC11_X8
|
||||||
0x44420025;RTD_IC_12
|
0x44420025;RTD_9_IC12_HPA
|
||||||
0x44420026;RTD_IC_13
|
0x44420026;RTD_10_IC13_PL_TX
|
||||||
0x44420027;RTD_IC_14
|
0x44420027;RTD_11_IC14_MPA
|
||||||
0x44420028;RTD_IC_15
|
0x44420028;RTD_12_IC15_ACU
|
||||||
0x44420029;RTD_IC_16
|
0x44420029;RTD_13_IC16_PLPCDU_HEATSPREADER
|
||||||
0x44420030;RTD_IC_17
|
0x44420030;RTD_14_IC17_TCS_BOARD
|
||||||
0x44420031;RTD_IC_18
|
0x44420031;RTD_15_IC18_IMTQ
|
||||||
0x445300A3;SYRLINKS_HK_HANDLER
|
0x445300A3;SYRLINKS_HK_HANDLER
|
||||||
0x49000000;ARDUINO_COM_IF
|
0x49000000;ARDUINO_COM_IF
|
||||||
0x49010005;GPIO_IF
|
0x49010005;GPIO_IF
|
||||||
@ -112,6 +111,7 @@
|
|||||||
0x73000001;ACS_BOARD_ASS
|
0x73000001;ACS_BOARD_ASS
|
||||||
0x73000002;SUS_BOARD_ASS
|
0x73000002;SUS_BOARD_ASS
|
||||||
0x73000003;TCS_BOARD_ASS
|
0x73000003;TCS_BOARD_ASS
|
||||||
|
0x73000004;RW_ASS
|
||||||
0x73000100;TM_FUNNEL
|
0x73000100;TM_FUNNEL
|
||||||
0x73500000;CCSDS_IP_CORE_BRIDGE
|
0x73500000;CCSDS_IP_CORE_BRIDGE
|
||||||
0xFFFFFFFF;NO_OBJECT
|
0xFFFFFFFF;NO_OBJECT
|
||||||
|
|
@ -1,13 +1,13 @@
|
|||||||
0x0;OK;System-wide code for ok.;RETURN_OK;HasReturnvaluesIF.h;HasReturnvaluesIF
|
0x0;OK;System-wide code for ok.;RETURN_OK;HasReturnvaluesIF.h;HasReturnvaluesIF
|
||||||
0x1;Failed;Unspecified system-wide code for failed.;RETURN_FAILED;HasReturnvaluesIF.h;HasReturnvaluesIF
|
0x1;Failed;Unspecified system-wide code for failed.;RETURN_FAILED;HasReturnvaluesIF.h;HasReturnvaluesIF
|
||||||
0x65a0;NVMB_KeyNotExists;Specified key does not exist in json file;0xA0;mission/memory/NVMParameterBase.h;NVM_PARAM_BASE
|
0x66a0;NVMB_KeyNotExists;Specified key does not exist in json file;0xA0;mission/memory/NVMParameterBase.h;NVM_PARAM_BASE
|
||||||
0x5aa0;SUSS_ErrorUnlockMutex;;0xA0;mission/devices/SusHandler.h;SUS_HANDLER
|
0x5ba0;SUSS_ErrorUnlockMutex;;0xA0;mission/devices/SusHandler.h;SUS_HANDLER
|
||||||
0x5aa1;SUSS_ErrorLockMutex;;0xA1;mission/devices/SusHandler.h;SUS_HANDLER
|
0x5ba1;SUSS_ErrorLockMutex;;0xA1;mission/devices/SusHandler.h;SUS_HANDLER
|
||||||
0x68a0;SADPL_CommandNotSupported;;0xA0;mission/devices/SolarArrayDeploymentHandler.h;SA_DEPL_HANDLER
|
0x69a0;SADPL_CommandNotSupported;;0xA0;mission/devices/SolarArrayDeploymentHandler.h;SA_DEPL_HANDLER
|
||||||
0x68a1;SADPL_DeploymentAlreadyExecuting;;0xA1;mission/devices/SolarArrayDeploymentHandler.h;SA_DEPL_HANDLER
|
0x69a1;SADPL_DeploymentAlreadyExecuting;;0xA1;mission/devices/SolarArrayDeploymentHandler.h;SA_DEPL_HANDLER
|
||||||
0x68a2;SADPL_MainSwitchTimeoutFailure;;0xA2;mission/devices/SolarArrayDeploymentHandler.h;SA_DEPL_HANDLER
|
0x69a2;SADPL_MainSwitchTimeoutFailure;;0xA2;mission/devices/SolarArrayDeploymentHandler.h;SA_DEPL_HANDLER
|
||||||
0x68a3;SADPL_SwitchingDeplSa1Failed;;0xA3;mission/devices/SolarArrayDeploymentHandler.h;SA_DEPL_HANDLER
|
0x69a3;SADPL_SwitchingDeplSa1Failed;;0xA3;mission/devices/SolarArrayDeploymentHandler.h;SA_DEPL_HANDLER
|
||||||
0x68a4;SADPL_SwitchingDeplSa2Failed;;0xA4;mission/devices/SolarArrayDeploymentHandler.h;SA_DEPL_HANDLER
|
0x69a4;SADPL_SwitchingDeplSa2Failed;;0xA4;mission/devices/SolarArrayDeploymentHandler.h;SA_DEPL_HANDLER
|
||||||
0x55b0;RWHA_SpiWriteFailure;;0xB0;mission/devices/RwHandler.h;RW_HANDLER
|
0x55b0;RWHA_SpiWriteFailure;;0xB0;mission/devices/RwHandler.h;RW_HANDLER
|
||||||
0x55b1;RWHA_SpiReadFailure;Used by the spi send function to tell a failing read call;0xB1;mission/devices/RwHandler.h;RW_HANDLER
|
0x55b1;RWHA_SpiReadFailure;Used by the spi send function to tell a failing read call;0xB1;mission/devices/RwHandler.h;RW_HANDLER
|
||||||
0x55b2;RWHA_MissingStartSign;Can be used by the HDLC decoding mechanism to inform about a missing start sign 0x7E;0xB2;mission/devices/RwHandler.h;RW_HANDLER
|
0x55b2;RWHA_MissingStartSign;Can be used by the HDLC decoding mechanism to inform about a missing start sign 0x7E;0xB2;mission/devices/RwHandler.h;RW_HANDLER
|
||||||
@ -20,12 +20,12 @@
|
|||||||
0x55a2;RWHA_SetSpeedCommandInvalidLength;Received set speed command has invalid length. Should be 6.;0xA2;mission/devices/RwHandler.h;RW_HANDLER
|
0x55a2;RWHA_SetSpeedCommandInvalidLength;Received set speed command has invalid length. Should be 6.;0xA2;mission/devices/RwHandler.h;RW_HANDLER
|
||||||
0x55a3;RWHA_ExecutionFailed;Command execution failed;0xA3;mission/devices/RwHandler.h;RW_HANDLER
|
0x55a3;RWHA_ExecutionFailed;Command execution failed;0xA3;mission/devices/RwHandler.h;RW_HANDLER
|
||||||
0x55a4;RWHA_CrcError;Reaction wheel reply has invalid crc;0xA4;mission/devices/RwHandler.h;RW_HANDLER
|
0x55a4;RWHA_CrcError;Reaction wheel reply has invalid crc;0xA4;mission/devices/RwHandler.h;RW_HANDLER
|
||||||
0x5f00;GOMS_PacketTooLong;;0;mission/devices/GomspaceDeviceHandler.h;GOM_SPACE_HANDLER
|
0x6000;GOMS_PacketTooLong;;0;mission/devices/GomspaceDeviceHandler.h;GOM_SPACE_HANDLER
|
||||||
0x5f01;GOMS_InvalidTableId;;1;mission/devices/GomspaceDeviceHandler.h;GOM_SPACE_HANDLER
|
0x6001;GOMS_InvalidTableId;;1;mission/devices/GomspaceDeviceHandler.h;GOM_SPACE_HANDLER
|
||||||
0x5f02;GOMS_InvalidAddress;;2;mission/devices/GomspaceDeviceHandler.h;GOM_SPACE_HANDLER
|
0x6002;GOMS_InvalidAddress;;2;mission/devices/GomspaceDeviceHandler.h;GOM_SPACE_HANDLER
|
||||||
0x5f03;GOMS_InvalidParamSize;;3;mission/devices/GomspaceDeviceHandler.h;GOM_SPACE_HANDLER
|
0x6003;GOMS_InvalidParamSize;;3;mission/devices/GomspaceDeviceHandler.h;GOM_SPACE_HANDLER
|
||||||
0x5f04;GOMS_InvalidPayloadSize;;4;mission/devices/GomspaceDeviceHandler.h;GOM_SPACE_HANDLER
|
0x6004;GOMS_InvalidPayloadSize;;4;mission/devices/GomspaceDeviceHandler.h;GOM_SPACE_HANDLER
|
||||||
0x5f05;GOMS_UnknownReplyId;;5;mission/devices/GomspaceDeviceHandler.h;GOM_SPACE_HANDLER
|
0x6005;GOMS_UnknownReplyId;;5;mission/devices/GomspaceDeviceHandler.h;GOM_SPACE_HANDLER
|
||||||
0x54a0;IMTQ_InvalidCommandCode;;0xA0;mission/devices/IMTQHandler.h;IMTQ_HANDLER
|
0x54a0;IMTQ_InvalidCommandCode;;0xA0;mission/devices/IMTQHandler.h;IMTQ_HANDLER
|
||||||
0x54a1;IMTQ_ParameterMissing;;0xA1;mission/devices/IMTQHandler.h;IMTQ_HANDLER
|
0x54a1;IMTQ_ParameterMissing;;0xA1;mission/devices/IMTQHandler.h;IMTQ_HANDLER
|
||||||
0x54a2;IMTQ_ParameterInvalid;;0xA2;mission/devices/IMTQHandler.h;IMTQ_HANDLER
|
0x54a2;IMTQ_ParameterInvalid;;0xA2;mission/devices/IMTQHandler.h;IMTQ_HANDLER
|
||||||
@ -48,7 +48,7 @@
|
|||||||
0x52a3;HEATER_InvalidSwitchNr;;0xA3;mission/devices/HeaterHandler.h;HEATER_HANDLER
|
0x52a3;HEATER_InvalidSwitchNr;;0xA3;mission/devices/HeaterHandler.h;HEATER_HANDLER
|
||||||
0x52a4;HEATER_MainSwitchSetTimeout;;0xA4;mission/devices/HeaterHandler.h;HEATER_HANDLER
|
0x52a4;HEATER_MainSwitchSetTimeout;;0xA4;mission/devices/HeaterHandler.h;HEATER_HANDLER
|
||||||
0x52a5;HEATER_CommandAlreadyWaiting;;0xA5;mission/devices/HeaterHandler.h;HEATER_HANDLER
|
0x52a5;HEATER_CommandAlreadyWaiting;;0xA5;mission/devices/HeaterHandler.h;HEATER_HANDLER
|
||||||
0x62a0;CCSDS_CommandNotImplemented;Received action message with unknown action id;0xA0;mission/tmtc/CCSDSHandler.h;CCSDS_HANDLER
|
0x63a0;CCSDS_CommandNotImplemented;Received action message with unknown action id;0xA0;mission/tmtc/CCSDSHandler.h;CCSDS_HANDLER
|
||||||
0x2701; SM_DataTooLarge;;1;fsfw/src/fsfw/storagemanager/StorageManagerIF.h;STORAGE_MANAGER_IF
|
0x2701; SM_DataTooLarge;;1;fsfw/src/fsfw/storagemanager/StorageManagerIF.h;STORAGE_MANAGER_IF
|
||||||
0x2702; SM_DataStorageFull;;2;fsfw/src/fsfw/storagemanager/StorageManagerIF.h;STORAGE_MANAGER_IF
|
0x2702; SM_DataStorageFull;;2;fsfw/src/fsfw/storagemanager/StorageManagerIF.h;STORAGE_MANAGER_IF
|
||||||
0x2703; SM_IllegalStorageId;;3;fsfw/src/fsfw/storagemanager/StorageManagerIF.h;STORAGE_MANAGER_IF
|
0x2703; SM_IllegalStorageId;;3;fsfw/src/fsfw/storagemanager/StorageManagerIF.h;STORAGE_MANAGER_IF
|
||||||
@ -436,6 +436,7 @@
|
|||||||
0x4604; HGIO_GpioInvalidInstance;;4;fsfw/hal/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h;HAL_GPIO
|
0x4604; HGIO_GpioInvalidInstance;;4;fsfw/hal/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h;HAL_GPIO
|
||||||
0x4605; HGIO_GpioDuplicateDetected;;5;fsfw/hal/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h;HAL_GPIO
|
0x4605; HGIO_GpioDuplicateDetected;;5;fsfw/hal/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h;HAL_GPIO
|
||||||
0x4606; HGIO_GpioInitFailed;;6;fsfw/hal/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h;HAL_GPIO
|
0x4606; HGIO_GpioInitFailed;;6;fsfw/hal/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h;HAL_GPIO
|
||||||
|
0x4607; HGIO_GpioGetValueFailed;;7;fsfw/hal/src/fsfw_hal/linux/gpio/LinuxLibgpioIF.h;HAL_GPIO
|
||||||
0x4401; HURT_UartReadFailure;;1;fsfw/hal/src/fsfw_hal/linux/uart/UartComIF.h;HAL_UART
|
0x4401; HURT_UartReadFailure;;1;fsfw/hal/src/fsfw_hal/linux/uart/UartComIF.h;HAL_UART
|
||||||
0x4402; HURT_UartReadSizeMissmatch;;2;fsfw/hal/src/fsfw_hal/linux/uart/UartComIF.h;HAL_UART
|
0x4402; HURT_UartReadSizeMissmatch;;2;fsfw/hal/src/fsfw_hal/linux/uart/UartComIF.h;HAL_UART
|
||||||
0x4403; HURT_UartRxBufferTooSmall;;3;fsfw/hal/src/fsfw_hal/linux/uart/UartComIF.h;HAL_UART
|
0x4403; HURT_UartRxBufferTooSmall;;3;fsfw/hal/src/fsfw_hal/linux/uart/UartComIF.h;HAL_UART
|
||||||
@ -445,68 +446,73 @@
|
|||||||
0x4203; UXOS_CommandError;Command execution failed;3;fsfw/hal/src/fsfw_hal/linux/CommandExecutor.h;LINUX_OSAL
|
0x4203; UXOS_CommandError;Command execution failed;3;fsfw/hal/src/fsfw_hal/linux/CommandExecutor.h;LINUX_OSAL
|
||||||
0x4204; UXOS_NoCommandLoadedOrPending;;4;fsfw/hal/src/fsfw_hal/linux/CommandExecutor.h;LINUX_OSAL
|
0x4204; UXOS_NoCommandLoadedOrPending;;4;fsfw/hal/src/fsfw_hal/linux/CommandExecutor.h;LINUX_OSAL
|
||||||
0x4206; UXOS_PcloseCallError;;6;fsfw/hal/src/fsfw_hal/linux/CommandExecutor.h;LINUX_OSAL
|
0x4206; UXOS_PcloseCallError;;6;fsfw/hal/src/fsfw_hal/linux/CommandExecutor.h;LINUX_OSAL
|
||||||
0x7100; SCBU_KeyNotFound;;0;bsp_q7s/memory/scratchApi.h;SCRATCH_BUFFER
|
0x7300; SCBU_KeyNotFound;;0;bsp_q7s/memory/scratchApi.h;SCRATCH_BUFFER
|
||||||
0x66a0;FSHLP_SdNotMounted;SD card specified with path string not mounted;0xA0;bsp_q7s/memory/FilesystemHelper.h;FILE_SYSTEM_HELPER
|
0x67a0;FSHLP_SdNotMounted;SD card specified with path string not mounted;0xA0;bsp_q7s/memory/FilesystemHelper.h;FILE_SYSTEM_HELPER
|
||||||
0x66a1;FSHLP_FileNotExists;Specified file does not exist on filesystem;0xA1;bsp_q7s/memory/FilesystemHelper.h;FILE_SYSTEM_HELPER
|
0x67a1;FSHLP_FileNotExists;Specified file does not exist on filesystem;0xA1;bsp_q7s/memory/FilesystemHelper.h;FILE_SYSTEM_HELPER
|
||||||
0x7000; SDMA_OpOngoing;;0;bsp_q7s/memory/SdCardManager.h;SD_CARD_MANAGER
|
0x7200; SDMA_OpOngoing;;0;bsp_q7s/memory/SdCardManager.h;SD_CARD_MANAGER
|
||||||
0x7001; SDMA_AlreadyOn;;1;bsp_q7s/memory/SdCardManager.h;SD_CARD_MANAGER
|
0x7201; SDMA_AlreadyOn;;1;bsp_q7s/memory/SdCardManager.h;SD_CARD_MANAGER
|
||||||
0x7002; SDMA_AlreadyMounted;;2;bsp_q7s/memory/SdCardManager.h;SD_CARD_MANAGER
|
0x7202; SDMA_AlreadyMounted;;2;bsp_q7s/memory/SdCardManager.h;SD_CARD_MANAGER
|
||||||
0x7003; SDMA_AlreadyOff;;3;bsp_q7s/memory/SdCardManager.h;SD_CARD_MANAGER
|
0x7203; SDMA_AlreadyOff;;3;bsp_q7s/memory/SdCardManager.h;SD_CARD_MANAGER
|
||||||
0x700a; SDMA_StatusFileNexists;;10;bsp_q7s/memory/SdCardManager.h;SD_CARD_MANAGER
|
0x720a; SDMA_StatusFileNexists;;10;bsp_q7s/memory/SdCardManager.h;SD_CARD_MANAGER
|
||||||
0x700b; SDMA_StatusFileFormatInvalid;;11;bsp_q7s/memory/SdCardManager.h;SD_CARD_MANAGER
|
0x720b; SDMA_StatusFileFormatInvalid;;11;bsp_q7s/memory/SdCardManager.h;SD_CARD_MANAGER
|
||||||
0x700c; SDMA_MountError;;12;bsp_q7s/memory/SdCardManager.h;SD_CARD_MANAGER
|
0x720c; SDMA_MountError;;12;bsp_q7s/memory/SdCardManager.h;SD_CARD_MANAGER
|
||||||
0x700d; SDMA_UnmountError;;13;bsp_q7s/memory/SdCardManager.h;SD_CARD_MANAGER
|
0x720d; SDMA_UnmountError;;13;bsp_q7s/memory/SdCardManager.h;SD_CARD_MANAGER
|
||||||
0x700e; SDMA_SystemCallError;;14;bsp_q7s/memory/SdCardManager.h;SD_CARD_MANAGER
|
0x720e; SDMA_SystemCallError;;14;bsp_q7s/memory/SdCardManager.h;SD_CARD_MANAGER
|
||||||
0x700f; SDMA_PopenCallError;;15;bsp_q7s/memory/SdCardManager.h;SD_CARD_MANAGER
|
0x720f; SDMA_PopenCallError;;15;bsp_q7s/memory/SdCardManager.h;SD_CARD_MANAGER
|
||||||
0x67a0; PLMPHLP_FileClosedAccidentally;File accidentally close;0xA0;linux/devices/ploc/PlocMPSoCHelper.h;PLOC_MPSOC_HELPER
|
0x68a0; PLMPHLP_FileClosedAccidentally;File accidentally close;0xA0;linux/devices/ploc/PlocMPSoCHelper.h;PLOC_MPSOC_HELPER
|
||||||
0x59a0;PLSV_CrcFailure;Space Packet received from PLOC supervisor has invalid CRC;0xA0;linux/devices/ploc/PlocSupervisorHandler.h;PLOC_SUPERVISOR_HANDLER
|
0x61a0;PLMEMDUMP_MramAddressTooHigh;The capacity of the MRAM amounts to 512 kB. Thus the maximum address must not be higher than 0x7d000.;0xA0;linux/devices/ploc/PlocMemoryDumper.h;PLOC_MEMORY_DUMPER
|
||||||
0x59a1;PLSV_ReceivedAckFailure;Received ACK failure reply from PLOC supervisor;0xA1;linux/devices/ploc/PlocSupervisorHandler.h;PLOC_SUPERVISOR_HANDLER
|
0x61a1;PLMEMDUMP_MramInvalidAddressCombination;The specified end address is lower than the start address;0xA1;linux/devices/ploc/PlocMemoryDumper.h;PLOC_MEMORY_DUMPER
|
||||||
0x59a2;PLSV_ReceivedExeFailure;Received execution failure reply from PLOC supervisor;0xA2;linux/devices/ploc/PlocSupervisorHandler.h;PLOC_SUPERVISOR_HANDLER
|
0x5aa0;PLSPVhLP_FileClosedAccidentally;File accidentally close;0xA0;linux/devices/ploc/PlocSupvHelper.h;PLOC_SUPV_HELPER
|
||||||
0x59a3;PLSV_InvalidApid;Received space packet with invalid APID from PLOC supervisor;0xA3;linux/devices/ploc/PlocSupervisorHandler.h;PLOC_SUPERVISOR_HANDLER
|
0x5aa1;PLSPVhLP_ProcessTerminated;Process has been terminated by command;0xA1;linux/devices/ploc/PlocSupvHelper.h;PLOC_SUPV_HELPER
|
||||||
0x59a4;PLSV_GetTimeFailure;Failed to read current system time;0xA4;linux/devices/ploc/PlocSupervisorHandler.h;PLOC_SUPERVISOR_HANDLER
|
0x5aa2;PLSPVhLP_PathNotExists;Received command with invalid pathname;0xA2;linux/devices/ploc/PlocSupvHelper.h;PLOC_SUPV_HELPER
|
||||||
0x59a5;PLSV_InvalidWatchdog;Received command with invalid watchdog parameter. Valid watchdogs are 0 for PS, 1 for PL and 2 for INT;0xA5;linux/devices/ploc/PlocSupervisorHandler.h;PLOC_SUPERVISOR_HANDLER
|
0x5aa3;PLSPVhLP_EventBufferReplyInvalidApid;Expected event buffer TM but received space packet with other APID;0xA3;linux/devices/ploc/PlocSupvHelper.h;PLOC_SUPV_HELPER
|
||||||
0x59a6;PLSV_InvalidWatchdogTimeout;Received watchdog timeout config command with invalid timeout. Valid timeouts must be in the range between 1000 and 360000 ms.;0xA6;linux/devices/ploc/PlocSupervisorHandler.h;PLOC_SUPERVISOR_HANDLER
|
0x6aa0;MPSOCRTVIF_CrcFailure;Space Packet received from PLOC has invalid CRC;0xA0;linux/devices/devicedefinitions/MPSoCReturnValuesIF.h;MPSOC_RETURN_VALUES_IF
|
||||||
0x59a7;PLSV_InvalidLatchupId;Received latchup config command with invalid latchup ID;0xA7;linux/devices/ploc/PlocSupervisorHandler.h;PLOC_SUPERVISOR_HANDLER
|
0x6aa1;MPSOCRTVIF_ReceivedAckFailure;Received ACK failure reply from PLOC;0xA1;linux/devices/devicedefinitions/MPSoCReturnValuesIF.h;MPSOC_RETURN_VALUES_IF
|
||||||
0x59a8;PLSV_SweepPeriodTooSmall;Received set adc sweep period command with invalid sweep period. Must be larger than 21.;0xA8;linux/devices/ploc/PlocSupervisorHandler.h;PLOC_SUPERVISOR_HANDLER
|
0x6aa2;MPSOCRTVIF_ReceivedExeFailure;Received execution failure reply from PLOC;0xA2;linux/devices/devicedefinitions/MPSoCReturnValuesIF.h;MPSOC_RETURN_VALUES_IF
|
||||||
0x59a9;PLSV_InvalidTestParam;Receive auto EM test command with invalid test param. Valid params are 1 and 2.;0xA9;linux/devices/ploc/PlocSupervisorHandler.h;PLOC_SUPERVISOR_HANDLER
|
0x6aa3;MPSOCRTVIF_InvalidApid;Received space packet with invalid APID from PLOC;0xA3;linux/devices/devicedefinitions/MPSoCReturnValuesIF.h;MPSOC_RETURN_VALUES_IF
|
||||||
0x59aa;PLSV_MramPacketParsingFailure;Returned when scanning for MRAM dump packets failed.;0xAA;linux/devices/ploc/PlocSupervisorHandler.h;PLOC_SUPERVISOR_HANDLER
|
0x6aa4;MPSOCRTVIF_InvalidLength;Received command with invalid length;0xA4;linux/devices/devicedefinitions/MPSoCReturnValuesIF.h;MPSOC_RETURN_VALUES_IF
|
||||||
0x59ab;PLSV_InvalidMramAddresses;Returned when the start and stop addresses of the MRAM dump or MRAM wipe commands are invalid (e.g. start address bigger than stop address);0xAB;linux/devices/ploc/PlocSupervisorHandler.h;PLOC_SUPERVISOR_HANDLER
|
0x6aa5;MPSOCRTVIF_FilenameTooLong;Filename of file in OBC filesystem is too long;0xA5;linux/devices/devicedefinitions/MPSoCReturnValuesIF.h;MPSOC_RETURN_VALUES_IF
|
||||||
0x59ac;PLSV_NoMramPacket;Expect reception of an MRAM dump packet but received space packet with other apid.;0xAC;linux/devices/ploc/PlocSupervisorHandler.h;PLOC_SUPERVISOR_HANDLER
|
0x6aa6;MPSOCRTVIF_MpsocHelperExecuting;MPSoC helper is currently executing a command;0xA6;linux/devices/devicedefinitions/MPSoCReturnValuesIF.h;MPSOC_RETURN_VALUES_IF
|
||||||
0x59ad;PLSV_PathDoesNotExist;Path to PLOC directory on SD card does not exist;0xAD;linux/devices/ploc/PlocSupervisorHandler.h;PLOC_SUPERVISOR_HANDLER
|
0x6aa7;MPSOCRTVIF_MpsocFilenameTooLong;Filename of MPSoC file is to long (max. 256 bytes);0xA7;linux/devices/devicedefinitions/MPSoCReturnValuesIF.h;MPSOC_RETURN_VALUES_IF
|
||||||
0x59ae;PLSV_MramFileNotExists;MRAM dump file does not exists. The file should actually already have been created with the reception of the first dump packet.;0xAE;linux/devices/ploc/PlocSupervisorHandler.h;PLOC_SUPERVISOR_HANDLER
|
0x6aa8;MPSOCRTVIF_InvalidParameter;Command has invalid parameter;0xA8;linux/devices/devicedefinitions/MPSoCReturnValuesIF.h;MPSOC_RETURN_VALUES_IF
|
||||||
0x5da0;PLUD_UpdaterBusy;Updater is already performing an update;0xA0;linux/devices/ploc/PlocUpdater.h;PLOC_UPDATER
|
0x6aa9;MPSOCRTVIF_NameTooLong;Received command has file string with invalid length;0xA9;linux/devices/devicedefinitions/MPSoCReturnValuesIF.h;MPSOC_RETURN_VALUES_IF
|
||||||
0x5da1;PLUD_NameTooLong;Received update command with invalid path string (too long).;0xA1;linux/devices/ploc/PlocUpdater.h;PLOC_UPDATER
|
0x6ba0;SPVRTVIF_CrcFailure;Space Packet received from PLOC supervisor has invalid CRC;0xA0;linux/devices/devicedefinitions/SupvReturnValuesIF.h;SUPV_RETURN_VALUES_IF
|
||||||
0x5da2;PLUD_SdNotMounted;Received command to initiate update but SD card with update image not mounted.;0xA2;linux/devices/ploc/PlocUpdater.h;PLOC_UPDATER
|
0x6ba1;SPVRTVIF_ReceivedAckFailure;Received ACK failure reply from PLOC supervisor;0xA1;linux/devices/devicedefinitions/SupvReturnValuesIF.h;SUPV_RETURN_VALUES_IF
|
||||||
0x5da3;PLUD_FileNotExists;Update file received with update command does not exist.;0xA3;linux/devices/ploc/PlocUpdater.h;PLOC_UPDATER
|
0x6ba2;SPVRTVIF_ReceivedExeFailure;Received execution failure reply from PLOC supervisor;0xA2;linux/devices/devicedefinitions/SupvReturnValuesIF.h;SUPV_RETURN_VALUES_IF
|
||||||
0x60a0;PLMEMDUMP_MramAddressTooHigh;The capacity of the MRAM amounts to 512 kB. Thus the maximum address must not be higher than 0x7d000.;0xA0;linux/devices/ploc/PlocMemoryDumper.h;PLOC_MEMORY_DUMPER
|
0x6ba3;SPVRTVIF_InvalidApid;Received space packet with invalid APID from PLOC supervisor;0xA3;linux/devices/devicedefinitions/SupvReturnValuesIF.h;SUPV_RETURN_VALUES_IF
|
||||||
0x60a1;PLMEMDUMP_MramInvalidAddressCombination;The specified end address is lower than the start address;0xA1;linux/devices/ploc/PlocMemoryDumper.h;PLOC_MEMORY_DUMPER
|
0x6ba4;SPVRTVIF_GetTimeFailure;Failed to read current system time;0xA4;linux/devices/devicedefinitions/SupvReturnValuesIF.h;SUPV_RETURN_VALUES_IF
|
||||||
0x69a0;MPSOCRTVIF_CrcFailure;Space Packet received from PLOC has invalid CRC;0xA0;linux/devices/devicedefinitions/MPSoCReturnValuesIF.h;MPSOC_RETURN_VALUES_IF
|
0x6ba5;SPVRTVIF_InvalidWatchdog;Received command with invalid watchdog parameter. Valid watchdogs are 0 for PS, 1 for PL and 2 for INT;0xA5;linux/devices/devicedefinitions/SupvReturnValuesIF.h;SUPV_RETURN_VALUES_IF
|
||||||
0x69a1;MPSOCRTVIF_ReceivedAckFailure;Received ACK failure reply from PLOC;0xA1;linux/devices/devicedefinitions/MPSoCReturnValuesIF.h;MPSOC_RETURN_VALUES_IF
|
0x6ba6;SPVRTVIF_InvalidWatchdogTimeout;Received watchdog timeout config command with invalid timeout. Valid timeouts must be in the range between 1000 and 360000 ms.;0xA6;linux/devices/devicedefinitions/SupvReturnValuesIF.h;SUPV_RETURN_VALUES_IF
|
||||||
0x69a2;MPSOCRTVIF_ReceivedExeFailure;Received execution failure reply from PLOC;0xA2;linux/devices/devicedefinitions/MPSoCReturnValuesIF.h;MPSOC_RETURN_VALUES_IF
|
0x6ba7;SPVRTVIF_InvalidLatchupId;Received latchup config command with invalid latchup ID;0xA7;linux/devices/devicedefinitions/SupvReturnValuesIF.h;SUPV_RETURN_VALUES_IF
|
||||||
0x69a3;MPSOCRTVIF_InvalidApid;Received space packet with invalid APID from PLOC;0xA3;linux/devices/devicedefinitions/MPSoCReturnValuesIF.h;MPSOC_RETURN_VALUES_IF
|
0x6ba8;SPVRTVIF_SweepPeriodTooSmall;Received set adc sweep period command with invalid sweep period. Must be larger than 21.;0xA8;linux/devices/devicedefinitions/SupvReturnValuesIF.h;SUPV_RETURN_VALUES_IF
|
||||||
0x69a4;MPSOCRTVIF_InvalidLength;Received command with invalid length;0xA4;linux/devices/devicedefinitions/MPSoCReturnValuesIF.h;MPSOC_RETURN_VALUES_IF
|
0x6ba9;SPVRTVIF_InvalidTestParam;Receive auto EM test command with invalid test param. Valid params are 1 and 2.;0xA9;linux/devices/devicedefinitions/SupvReturnValuesIF.h;SUPV_RETURN_VALUES_IF
|
||||||
0x69a5;MPSOCRTVIF_FilenameTooLong;Filename of file in OBC filesystem is too long;0xA5;linux/devices/devicedefinitions/MPSoCReturnValuesIF.h;MPSOC_RETURN_VALUES_IF
|
0x6baa;SPVRTVIF_MramPacketParsingFailure;Returned when scanning for MRAM dump packets failed.;0xAA;linux/devices/devicedefinitions/SupvReturnValuesIF.h;SUPV_RETURN_VALUES_IF
|
||||||
0x69a6;MPSOCRTVIF_MpsocHelperExecuting;MPSoC helper is currently executing a command;0xA6;linux/devices/devicedefinitions/MPSoCReturnValuesIF.h;MPSOC_RETURN_VALUES_IF
|
0x6bab;SPVRTVIF_InvalidMramAddresses;Returned when the start and stop addresses of the MRAM dump or MRAM wipe commands are invalid (e.g. start address bigger than stop address);0xAB;linux/devices/devicedefinitions/SupvReturnValuesIF.h;SUPV_RETURN_VALUES_IF
|
||||||
0x69a7;MPSOCRTVIF_MpsocFilenameTooLong;Filename of MPSoC file is to long (max. 256 bytes);0xA7;linux/devices/devicedefinitions/MPSoCReturnValuesIF.h;MPSOC_RETURN_VALUES_IF
|
0x6bac;SPVRTVIF_NoMramPacket;Expect reception of an MRAM dump packet but received space packet with other apid.;0xAC;linux/devices/devicedefinitions/SupvReturnValuesIF.h;SUPV_RETURN_VALUES_IF
|
||||||
0x69a8;MPSOCRTVIF_InvalidParameter;Command has invalid parameter;0xA8;linux/devices/devicedefinitions/MPSoCReturnValuesIF.h;MPSOC_RETURN_VALUES_IF
|
0x6bad;SPVRTVIF_PathDoesNotExist;Path to PLOC directory on SD card does not exist;0xAD;linux/devices/devicedefinitions/SupvReturnValuesIF.h;SUPV_RETURN_VALUES_IF
|
||||||
0x69a9;MPSOCRTVIF_NameTooLong;Received command has file string with invalid length;0xA9;linux/devices/devicedefinitions/MPSoCReturnValuesIF.h;MPSOC_RETURN_VALUES_IF
|
0x6bae;SPVRTVIF_MramFileNotExists;MRAM dump file does not exists. The file should actually already have been created with the reception of the first dump packet.;0xAE;linux/devices/devicedefinitions/SupvReturnValuesIF.h;SUPV_RETURN_VALUES_IF
|
||||||
|
0x6baf;SPVRTVIF_InvalidLength;Received action command has invalid length;0xAF;linux/devices/devicedefinitions/SupvReturnValuesIF.h;SUPV_RETURN_VALUES_IF
|
||||||
|
0x6bb0;SPVRTVIF_FilenameTooLong;Filename too long;0xB0;linux/devices/devicedefinitions/SupvReturnValuesIF.h;SUPV_RETURN_VALUES_IF
|
||||||
|
0x6bb1;SPVRTVIF_UpdateStatusReportInvalidLength;Received update status report with invalid packet length field;0xB1;linux/devices/devicedefinitions/SupvReturnValuesIF.h;SUPV_RETURN_VALUES_IF
|
||||||
|
0x6bb2;SPVRTVIF_UpdateCrcFailure;Update status report does not contain expected CRC. There might be a bit flip in the update memory region.;0xB2;linux/devices/devicedefinitions/SupvReturnValuesIF.h;SUPV_RETURN_VALUES_IF
|
||||||
|
0x6bb3;SPVRTVIF_SupvHelperExecuting;Supervisor helper task ist currently executing a command (wait until helper tas has finished or interrupt by sending the terminate command);0xB3;linux/devices/devicedefinitions/SupvReturnValuesIF.h;SUPV_RETURN_VALUES_IF
|
||||||
0x57e0;DWLPWRON_InvalidMode;Received command has invalid JESD mode (valid modes are 0 - 5);0xE0;linux/devices/devicedefinitions/PlocMPSoCDefinitions.h;DWLPWRON_CMD
|
0x57e0;DWLPWRON_InvalidMode;Received command has invalid JESD mode (valid modes are 0 - 5);0xE0;linux/devices/devicedefinitions/PlocMPSoCDefinitions.h;DWLPWRON_CMD
|
||||||
0x57e1;DWLPWRON_InvalidLaneRate;Received command has invalid lane rate (valid lane rate are 0 - 9);0xE1;linux/devices/devicedefinitions/PlocMPSoCDefinitions.h;DWLPWRON_CMD
|
0x57e1;DWLPWRON_InvalidLaneRate;Received command has invalid lane rate (valid lane rate are 0 - 9);0xE1;linux/devices/devicedefinitions/PlocMPSoCDefinitions.h;DWLPWRON_CMD
|
||||||
0x6401;JSONBASE_JsonFileNotExists;Specified json file does not exist;1;linux/devices/startracker/ArcsecJsonParamBase.h;ARCSEC_JSON_BASE
|
0x6501;JSONBASE_JsonFileNotExists;Specified json file does not exist;1;linux/devices/startracker/ArcsecJsonParamBase.h;ARCSEC_JSON_BASE
|
||||||
0x6402;JSONBASE_SetNotExists;Requested set does not exist in json file;2;linux/devices/startracker/ArcsecJsonParamBase.h;ARCSEC_JSON_BASE
|
0x6502;JSONBASE_SetNotExists;Requested set does not exist in json file;2;linux/devices/startracker/ArcsecJsonParamBase.h;ARCSEC_JSON_BASE
|
||||||
0x6403;JSONBASE_ParamNotExists;Requested parameter does not exist in json file;3;linux/devices/startracker/ArcsecJsonParamBase.h;ARCSEC_JSON_BASE
|
0x6503;JSONBASE_ParamNotExists;Requested parameter does not exist in json file;3;linux/devices/startracker/ArcsecJsonParamBase.h;ARCSEC_JSON_BASE
|
||||||
0x56a0;STRH_TemperatureReqFailed;Status in temperature reply signals error;0xA0;linux/devices/startracker/StarTrackerHandler.h;STR_HANDLER
|
0x56a0;STRH_TemperatureReqFailed;Status in temperature reply signals error;0xA0;linux/devices/startracker/StarTrackerHandler.h;STR_HANDLER
|
||||||
0x56a1;STRH_PingFailed;Ping command failed;0xA1;linux/devices/startracker/StarTrackerHandler.h;STR_HANDLER
|
0x56a1;STRH_PingFailed;Ping command failed;0xA1;linux/devices/startracker/StarTrackerHandler.h;STR_HANDLER
|
||||||
0x56a2;STRH_VersionReqFailed;Status in version reply signals error;0xA2;linux/devices/startracker/StarTrackerHandler.h;STR_HANDLER
|
0x56a2;STRH_VersionReqFailed;Status in version reply signals error;0xA2;linux/devices/startracker/StarTrackerHandler.h;STR_HANDLER
|
||||||
0x5ea0;STRHLP_SdNotMounted;SD card specified in path string not mounted;0xA0;linux/devices/startracker/StrHelper.h;STR_HELPER
|
0x5fa0;STRHLP_SdNotMounted;SD card specified in path string not mounted;0xA0;linux/devices/startracker/StrHelper.h;STR_HELPER
|
||||||
0x5ea1;STRHLP_FileNotExists;Specified file does not exist on filesystem;0xA1;linux/devices/startracker/StrHelper.h;STR_HELPER
|
0x5fa1;STRHLP_FileNotExists;Specified file does not exist on filesystem;0xA1;linux/devices/startracker/StrHelper.h;STR_HELPER
|
||||||
0x5ea2;STRHLP_PathNotExists;Specified path does not exist;0xA2;linux/devices/startracker/StrHelper.h;STR_HELPER
|
0x5fa2;STRHLP_PathNotExists;Specified path does not exist;0xA2;linux/devices/startracker/StrHelper.h;STR_HELPER
|
||||||
0x5ea3;STRHLP_FileCreationFailed;Failed to create download image or read flash file;0xA3;linux/devices/startracker/StrHelper.h;STR_HELPER
|
0x5fa3;STRHLP_FileCreationFailed;Failed to create download image or read flash file;0xA3;linux/devices/startracker/StrHelper.h;STR_HELPER
|
||||||
0x5ea4;STRHLP_RegionMismatch;Region in flash write/read reply does not match expected region;0xA4;linux/devices/startracker/StrHelper.h;STR_HELPER
|
0x5fa4;STRHLP_RegionMismatch;Region in flash write/read reply does not match expected region;0xA4;linux/devices/startracker/StrHelper.h;STR_HELPER
|
||||||
0x5ea5;STRHLP_AddressMismatch;Address in flash write/read reply does not match expected address;0xA5;linux/devices/startracker/StrHelper.h;STR_HELPER
|
0x5fa5;STRHLP_AddressMismatch;Address in flash write/read reply does not match expected address;0xA5;linux/devices/startracker/StrHelper.h;STR_HELPER
|
||||||
0x5ea6;STRHLP_LengthMismatch;Length in flash write/read reply does not match expected length;0xA6;linux/devices/startracker/StrHelper.h;STR_HELPER
|
0x5fa6;STRHLP_LengthMismatch;Length in flash write/read reply does not match expected length;0xA6;linux/devices/startracker/StrHelper.h;STR_HELPER
|
||||||
0x5ea7;STRHLP_StatusError;Status field in reply signals error;0xA7;linux/devices/startracker/StrHelper.h;STR_HELPER
|
0x5fa7;STRHLP_StatusError;Status field in reply signals error;0xA7;linux/devices/startracker/StrHelper.h;STR_HELPER
|
||||||
0x5ea8;STRHLP_InvalidTypeId;Reply has invalid type ID (should be of action reply type);0xA8;linux/devices/startracker/StrHelper.h;STR_HELPER
|
0x5fa8;STRHLP_InvalidTypeId;Reply has invalid type ID (should be of action reply type);0xA8;linux/devices/startracker/StrHelper.h;STR_HELPER
|
||||||
0x56a3;STRH_InterfaceReqFailed;Status in interface reply signals error;0xA3;linux/devices/startracker/StarTrackerHandler.h;STR_HANDLER
|
0x56a3;STRH_InterfaceReqFailed;Status in interface reply signals error;0xA3;linux/devices/startracker/StarTrackerHandler.h;STR_HANDLER
|
||||||
0x56a4;STRH_PowerReqFailed;Status in power reply signals error;0xA4;linux/devices/startracker/StarTrackerHandler.h;STR_HANDLER
|
0x56a4;STRH_PowerReqFailed;Status in power reply signals error;0xA4;linux/devices/startracker/StarTrackerHandler.h;STR_HANDLER
|
||||||
0x56a5;STRH_SetParamFailed;Status of reply to parameter set command signals error;0xA5;linux/devices/startracker/StarTrackerHandler.h;STR_HANDLER
|
0x56a5;STRH_SetParamFailed;Status of reply to parameter set command signals error;0xA5;linux/devices/startracker/StarTrackerHandler.h;STR_HANDLER
|
||||||
@ -529,24 +535,24 @@
|
|||||||
0x56b6;STRH_StartrackerAlreadyBooted;Star tracker is already in firmware mode;0xB6;linux/devices/startracker/StarTrackerHandler.h;STR_HANDLER
|
0x56b6;STRH_StartrackerAlreadyBooted;Star tracker is already in firmware mode;0xB6;linux/devices/startracker/StarTrackerHandler.h;STR_HANDLER
|
||||||
0x56b7;STRH_StartrackerRunningFirmware;Star tracker is in firmware mode but must be in bootloader mode to execute this command;0xB7;linux/devices/startracker/StarTrackerHandler.h;STR_HANDLER
|
0x56b7;STRH_StartrackerRunningFirmware;Star tracker is in firmware mode but must be in bootloader mode to execute this command;0xB7;linux/devices/startracker/StarTrackerHandler.h;STR_HANDLER
|
||||||
0x56b8;STRH_StartrackerRunningBootloader;Star tracker is in bootloader mode but must be in firmware mode to execute this command;0xB8;linux/devices/startracker/StarTrackerHandler.h;STR_HANDLER
|
0x56b8;STRH_StartrackerRunningBootloader;Star tracker is in bootloader mode but must be in firmware mode to execute this command;0xB8;linux/devices/startracker/StarTrackerHandler.h;STR_HANDLER
|
||||||
0x5ca0;PTME_UnknownVcId;;0xA0;linux/obc/Ptme.h;PTME
|
0x5da0;PTME_UnknownVcId;;0xA0;linux/obc/Ptme.h;PTME
|
||||||
0x61a0;PDEC_AbandonedCltu;;0xA0;linux/obc/PdecHandler.h;PDEC_HANDLER
|
0x62a0;PDEC_AbandonedCltu;;0xA0;linux/obc/PdecHandler.h;PDEC_HANDLER
|
||||||
0x61a1;PDEC_FrameDirty;;0xA1;linux/obc/PdecHandler.h;PDEC_HANDLER
|
0x62a1;PDEC_FrameDirty;;0xA1;linux/obc/PdecHandler.h;PDEC_HANDLER
|
||||||
0x61a2;PDEC_FrameIllegalMultipleReasons;;0xA2;linux/obc/PdecHandler.h;PDEC_HANDLER
|
0x62a2;PDEC_FrameIllegalMultipleReasons;;0xA2;linux/obc/PdecHandler.h;PDEC_HANDLER
|
||||||
0x61a3;PDEC_AdDiscardedLockout;;0xA3;linux/obc/PdecHandler.h;PDEC_HANDLER
|
0x62a3;PDEC_AdDiscardedLockout;;0xA3;linux/obc/PdecHandler.h;PDEC_HANDLER
|
||||||
0x61a4;PDEC_AdDiscardedWait;;0xA4;linux/obc/PdecHandler.h;PDEC_HANDLER
|
0x62a4;PDEC_AdDiscardedWait;;0xA4;linux/obc/PdecHandler.h;PDEC_HANDLER
|
||||||
0x61a5;PDEC_AdDiscardedNsVs;;0xA5;linux/obc/PdecHandler.h;PDEC_HANDLER
|
0x62a5;PDEC_AdDiscardedNsVs;;0xA5;linux/obc/PdecHandler.h;PDEC_HANDLER
|
||||||
0x61b0;PDEC_CommandNotImplemented;Received action message with unknown action id;0xB0;linux/obc/PdecHandler.h;PDEC_HANDLER
|
0x62b0;PDEC_CommandNotImplemented;Received action message with unknown action id;0xB0;linux/obc/PdecHandler.h;PDEC_HANDLER
|
||||||
0x61a6;PDEC_NoReport;;0xA6;linux/obc/PdecHandler.h;PDEC_HANDLER
|
0x62a6;PDEC_NoReport;;0xA6;linux/obc/PdecHandler.h;PDEC_HANDLER
|
||||||
0x61a7;PDEC_ErrorVersionNumber;;0xA7;linux/obc/PdecHandler.h;PDEC_HANDLER
|
0x62a7;PDEC_ErrorVersionNumber;;0xA7;linux/obc/PdecHandler.h;PDEC_HANDLER
|
||||||
0x61a8;PDEC_IllegalCombination;;0xA8;linux/obc/PdecHandler.h;PDEC_HANDLER
|
0x62a8;PDEC_IllegalCombination;;0xA8;linux/obc/PdecHandler.h;PDEC_HANDLER
|
||||||
0x61a9;PDEC_InvalidScId;;0xA9;linux/obc/PdecHandler.h;PDEC_HANDLER
|
0x62a9;PDEC_InvalidScId;;0xA9;linux/obc/PdecHandler.h;PDEC_HANDLER
|
||||||
0x61aa;PDEC_InvalidVcIdMsb;;0xAA;linux/obc/PdecHandler.h;PDEC_HANDLER
|
0x62aa;PDEC_InvalidVcIdMsb;;0xAA;linux/obc/PdecHandler.h;PDEC_HANDLER
|
||||||
0x61ab;PDEC_InvalidVcIdLsb;;0xAB;linux/obc/PdecHandler.h;PDEC_HANDLER
|
0x62ab;PDEC_InvalidVcIdLsb;;0xAB;linux/obc/PdecHandler.h;PDEC_HANDLER
|
||||||
0x61ac;PDEC_NsNotZero;;0xAC;linux/obc/PdecHandler.h;PDEC_HANDLER
|
0x62ac;PDEC_NsNotZero;;0xAC;linux/obc/PdecHandler.h;PDEC_HANDLER
|
||||||
0x61ae;PDEC_InvalidBcCc;;0xAE;linux/obc/PdecHandler.h;PDEC_HANDLER
|
0x62ae;PDEC_InvalidBcCc;;0xAE;linux/obc/PdecHandler.h;PDEC_HANDLER
|
||||||
0x63a0;RS_RateNotSupported;The commanded rate is not supported by the current FPGA design;0xA0;linux/obc/PtmeConfig.h;RATE_SETTER
|
0x64a0;RS_RateNotSupported;The commanded rate is not supported by the current FPGA design;0xA0;linux/obc/PtmeConfig.h;RATE_SETTER
|
||||||
0x63a1;RS_BadBitRate;Bad bitrate has been commanded (e.g. 0);0xA1;linux/obc/PtmeConfig.h;RATE_SETTER
|
0x64a1;RS_BadBitRate;Bad bitrate has been commanded (e.g. 0);0xA1;linux/obc/PtmeConfig.h;RATE_SETTER
|
||||||
0x63a2;RS_ClkInversionFailed;Failed to invert clock and thus change the time the data is updated with respect to the tx clock;0xA2;linux/obc/PtmeConfig.h;RATE_SETTER
|
0x64a2;RS_ClkInversionFailed;Failed to invert clock and thus change the time the data is updated with respect to the tx clock;0xA2;linux/obc/PtmeConfig.h;RATE_SETTER
|
||||||
0x63a3;RS_TxManipulatorConfigFailed;Failed to change configuration bit of tx clock manipulator;0xA3;linux/obc/PtmeConfig.h;RATE_SETTER
|
0x64a3;RS_TxManipulatorConfigFailed;Failed to change configuration bit of tx clock manipulator;0xA3;linux/obc/PtmeConfig.h;RATE_SETTER
|
||||||
0x5ba0;IPCI_PapbBusy;;0xA0;linux/obc/PapbVcInterface.h;CCSDS_IP_CORE_BRIDGE
|
0x5ca0;IPCI_PapbBusy;;0xA0;linux/obc/PapbVcInterface.h;CCSDS_IP_CORE_BRIDGE
|
||||||
|
Can't render this file because it has a wrong number of fields in line 18.
|
@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @brief Auto-generated event translation file. Contains 187 translations.
|
* @brief Auto-generated event translation file. Contains 200 translations.
|
||||||
* @details
|
* @details
|
||||||
* Generated on: 2022-05-03 16:32:00
|
* Generated on: 2022-05-08 13:11:24
|
||||||
*/
|
*/
|
||||||
#include "translateEvents.h"
|
#include "translateEvents.h"
|
||||||
|
|
||||||
@ -102,7 +102,7 @@ const char *MEMORY_READ_RPT_CRC_FAILURE_STRING = "MEMORY_READ_RPT_CRC_FAILURE";
|
|||||||
const char *ACK_FAILURE_STRING = "ACK_FAILURE";
|
const char *ACK_FAILURE_STRING = "ACK_FAILURE";
|
||||||
const char *EXE_FAILURE_STRING = "EXE_FAILURE";
|
const char *EXE_FAILURE_STRING = "EXE_FAILURE";
|
||||||
const char *MPSOC_HANDLER_CRC_FAILURE_STRING = "MPSOC_HANDLER_CRC_FAILURE";
|
const char *MPSOC_HANDLER_CRC_FAILURE_STRING = "MPSOC_HANDLER_CRC_FAILURE";
|
||||||
const char *MPSOC_HANDLER_SEQ_CNT_MISMATCH_STRING = "MPSOC_HANDLER_SEQ_CNT_MISMATCH";
|
const char *MPSOC_HANDLER_SEQUENCE_COUNT_MISMATCH_STRING = "MPSOC_HANDLER_SEQUENCE_COUNT_MISMATCH";
|
||||||
const char *MPSOC_SHUTDOWN_FAILED_STRING = "MPSOC_SHUTDOWN_FAILED";
|
const char *MPSOC_SHUTDOWN_FAILED_STRING = "MPSOC_SHUTDOWN_FAILED";
|
||||||
const char *SELF_TEST_I2C_FAILURE_STRING = "SELF_TEST_I2C_FAILURE";
|
const char *SELF_TEST_I2C_FAILURE_STRING = "SELF_TEST_I2C_FAILURE";
|
||||||
const char *SELF_TEST_SPI_FAILURE_STRING = "SELF_TEST_SPI_FAILURE";
|
const char *SELF_TEST_SPI_FAILURE_STRING = "SELF_TEST_SPI_FAILURE";
|
||||||
@ -113,20 +113,16 @@ const char *SELF_TEST_MTM_RANGE_FAILURE_STRING = "SELF_TEST_MTM_RANGE_FAILURE";
|
|||||||
const char *SELF_TEST_COIL_CURRENT_FAILURE_STRING = "SELF_TEST_COIL_CURRENT_FAILURE";
|
const char *SELF_TEST_COIL_CURRENT_FAILURE_STRING = "SELF_TEST_COIL_CURRENT_FAILURE";
|
||||||
const char *INVALID_ERROR_BYTE_STRING = "INVALID_ERROR_BYTE";
|
const char *INVALID_ERROR_BYTE_STRING = "INVALID_ERROR_BYTE";
|
||||||
const char *ERROR_STATE_STRING = "ERROR_STATE";
|
const char *ERROR_STATE_STRING = "ERROR_STATE";
|
||||||
|
const char *RESET_OCCURED_STRING = "RESET_OCCURED";
|
||||||
const char *BOOTING_FIRMWARE_FAILED_STRING = "BOOTING_FIRMWARE_FAILED";
|
const char *BOOTING_FIRMWARE_FAILED_STRING = "BOOTING_FIRMWARE_FAILED";
|
||||||
const char *BOOTING_BOOTLOADER_FAILED_STRING = "BOOTING_BOOTLOADER_FAILED";
|
const char *BOOTING_BOOTLOADER_FAILED_STRING = "BOOTING_BOOTLOADER_FAILED";
|
||||||
const char *SUPV_MEMORY_READ_RPT_CRC_FAILURE_STRING = "SUPV_MEMORY_READ_RPT_CRC_FAILURE";
|
const char *SUPV_MEMORY_READ_RPT_CRC_FAILURE_STRING = "SUPV_MEMORY_READ_RPT_CRC_FAILURE";
|
||||||
const char *SUPV_ACK_FAILURE_STRING = "SUPV_ACK_FAILURE";
|
const char *SUPV_ACK_FAILURE_STRING = "SUPV_ACK_FAILURE";
|
||||||
const char *SUPV_EXE_FAILURE_STRING = "SUPV_EXE_FAILURE";
|
const char *SUPV_EXE_FAILURE_STRING = "SUPV_EXE_FAILURE";
|
||||||
const char *SUPV_CRC_FAILURE_EVENT_STRING = "SUPV_CRC_FAILURE_EVENT";
|
const char *SUPV_CRC_FAILURE_EVENT_STRING = "SUPV_CRC_FAILURE_EVENT";
|
||||||
|
const char *SUPV_MPSOC_SHUWDOWN_BUILD_FAILED_STRING = "SUPV_MPSOC_SHUWDOWN_BUILD_FAILED";
|
||||||
const char *SANITIZATION_FAILED_STRING = "SANITIZATION_FAILED";
|
const char *SANITIZATION_FAILED_STRING = "SANITIZATION_FAILED";
|
||||||
const char *MOUNTED_SD_CARD_STRING = "MOUNTED_SD_CARD";
|
const char *MOUNTED_SD_CARD_STRING = "MOUNTED_SD_CARD";
|
||||||
const char *UPDATE_FILE_NOT_EXISTS_STRING = "UPDATE_FILE_NOT_EXISTS";
|
|
||||||
const char *ACTION_COMMANDING_FAILED_STRING = "ACTION_COMMANDING_FAILED";
|
|
||||||
const char *UPDATE_AVAILABLE_FAILED_STRING = "UPDATE_AVAILABLE_FAILED";
|
|
||||||
const char *UPDATE_TRANSFER_FAILED_STRING = "UPDATE_TRANSFER_FAILED";
|
|
||||||
const char *UPDATE_VERIFY_FAILED_STRING = "UPDATE_VERIFY_FAILED";
|
|
||||||
const char *UPDATE_FINISHED_STRING = "UPDATE_FINISHED";
|
|
||||||
const char *SEND_MRAM_DUMP_FAILED_STRING = "SEND_MRAM_DUMP_FAILED";
|
const char *SEND_MRAM_DUMP_FAILED_STRING = "SEND_MRAM_DUMP_FAILED";
|
||||||
const char *MRAM_DUMP_FAILED_STRING = "MRAM_DUMP_FAILED";
|
const char *MRAM_DUMP_FAILED_STRING = "MRAM_DUMP_FAILED";
|
||||||
const char *MRAM_DUMP_FINISHED_STRING = "MRAM_DUMP_FINISHED";
|
const char *MRAM_DUMP_FINISHED_STRING = "MRAM_DUMP_FINISHED";
|
||||||
@ -153,15 +149,15 @@ const char *STR_HELPER_SENDING_PACKET_FAILED_STRING = "STR_HELPER_SENDING_PACKET
|
|||||||
const char *STR_HELPER_REQUESTING_MSG_FAILED_STRING = "STR_HELPER_REQUESTING_MSG_FAILED";
|
const char *STR_HELPER_REQUESTING_MSG_FAILED_STRING = "STR_HELPER_REQUESTING_MSG_FAILED";
|
||||||
const char *MPSOC_FLASH_WRITE_FAILED_STRING = "MPSOC_FLASH_WRITE_FAILED";
|
const char *MPSOC_FLASH_WRITE_FAILED_STRING = "MPSOC_FLASH_WRITE_FAILED";
|
||||||
const char *MPSOC_FLASH_WRITE_SUCCESSFUL_STRING = "MPSOC_FLASH_WRITE_SUCCESSFUL";
|
const char *MPSOC_FLASH_WRITE_SUCCESSFUL_STRING = "MPSOC_FLASH_WRITE_SUCCESSFUL";
|
||||||
const char *SENDING_COMMAND_FAILED_STRING = "SENDING_COMMAND_FAILED";
|
const char *MPSOC_SENDING_COMMAND_FAILED_STRING = "MPSOC_SENDING_COMMAND_FAILED";
|
||||||
const char *MPSOC_HELPER_REQUESTING_REPLY_FAILED_STRING = "MPSOC_HELPER_REQUESTING_REPLY_FAILED";
|
const char *MPSOC_HELPER_REQUESTING_REPLY_FAILED_STRING = "MPSOC_HELPER_REQUESTING_REPLY_FAILED";
|
||||||
const char *MPSOC_HELPER_READING_REPLY_FAILED_STRING = "MPSOC_HELPER_READING_REPLY_FAILED";
|
const char *MPSOC_HELPER_READING_REPLY_FAILED_STRING = "MPSOC_HELPER_READING_REPLY_FAILED";
|
||||||
const char *MISSING_ACK_STRING = "MISSING_ACK";
|
const char *MPSOC_MISSING_ACK_STRING = "MPSOC_MISSING_ACK";
|
||||||
const char *MISSING_EXE_STRING = "MISSING_EXE";
|
const char *MPSOC_MISSING_EXE_STRING = "MPSOC_MISSING_EXE";
|
||||||
const char *ACK_FAILURE_REPORT_STRING = "ACK_FAILURE_REPORT";
|
const char *MPSOC_ACK_FAILURE_REPORT_STRING = "MPSOC_ACK_FAILURE_REPORT";
|
||||||
const char *EXE_FAILURE_REPORT_STRING = "EXE_FAILURE_REPORT";
|
const char *MPSOC_EXE_FAILURE_REPORT_STRING = "MPSOC_EXE_FAILURE_REPORT";
|
||||||
const char *ACK_INVALID_APID_STRING = "ACK_INVALID_APID";
|
const char *MPSOC_ACK_INVALID_APID_STRING = "MPSOC_ACK_INVALID_APID";
|
||||||
const char *EXE_INVALID_APID_STRING = "EXE_INVALID_APID";
|
const char *MPSOC_EXE_INVALID_APID_STRING = "MPSOC_EXE_INVALID_APID";
|
||||||
const char *MPSOC_HELPER_SEQ_CNT_MISMATCH_STRING = "MPSOC_HELPER_SEQ_CNT_MISMATCH";
|
const char *MPSOC_HELPER_SEQ_CNT_MISMATCH_STRING = "MPSOC_HELPER_SEQ_CNT_MISMATCH";
|
||||||
const char *TRANSITION_BACK_TO_OFF_STRING = "TRANSITION_BACK_TO_OFF";
|
const char *TRANSITION_BACK_TO_OFF_STRING = "TRANSITION_BACK_TO_OFF";
|
||||||
const char *NEG_V_OUT_OF_BOUNDS_STRING = "NEG_V_OUT_OF_BOUNDS";
|
const char *NEG_V_OUT_OF_BOUNDS_STRING = "NEG_V_OUT_OF_BOUNDS";
|
||||||
@ -184,6 +180,23 @@ const char *GPS_FIX_CHANGE_STRING = "GPS_FIX_CHANGE";
|
|||||||
const char *P60_BOOT_COUNT_STRING = "P60_BOOT_COUNT";
|
const char *P60_BOOT_COUNT_STRING = "P60_BOOT_COUNT";
|
||||||
const char *BATT_MODE_STRING = "BATT_MODE";
|
const char *BATT_MODE_STRING = "BATT_MODE";
|
||||||
const char *BATT_MODE_CHANGED_STRING = "BATT_MODE_CHANGED";
|
const char *BATT_MODE_CHANGED_STRING = "BATT_MODE_CHANGED";
|
||||||
|
const char *SUPV_UPDATE_FAILED_STRING = "SUPV_UPDATE_FAILED";
|
||||||
|
const char *SUPV_UPDATE_SUCCESSFUL_STRING = "SUPV_UPDATE_SUCCESSFUL";
|
||||||
|
const char *TERMINATED_UPDATE_PROCEDURE_STRING = "TERMINATED_UPDATE_PROCEDURE";
|
||||||
|
const char *SUPV_EVENT_BUFFER_REQUEST_SUCCESSFUL_STRING = "SUPV_EVENT_BUFFER_REQUEST_SUCCESSFUL";
|
||||||
|
const char *SUPV_EVENT_BUFFER_REQUEST_FAILED_STRING = "SUPV_EVENT_BUFFER_REQUEST_FAILED";
|
||||||
|
const char *SUPV_EVENT_BUFFER_REQUEST_TERMINATED_STRING = "SUPV_EVENT_BUFFER_REQUEST_TERMINATED";
|
||||||
|
const char *SUPV_SENDING_COMMAND_FAILED_STRING = "SUPV_SENDING_COMMAND_FAILED";
|
||||||
|
const char *SUPV_HELPER_REQUESTING_REPLY_FAILED_STRING = "SUPV_HELPER_REQUESTING_REPLY_FAILED";
|
||||||
|
const char *SUPV_HELPER_READING_REPLY_FAILED_STRING = "SUPV_HELPER_READING_REPLY_FAILED";
|
||||||
|
const char *SUPV_MISSING_ACK_STRING = "SUPV_MISSING_ACK";
|
||||||
|
const char *SUPV_MISSING_EXE_STRING = "SUPV_MISSING_EXE";
|
||||||
|
const char *SUPV_ACK_FAILURE_REPORT_STRING = "SUPV_ACK_FAILURE_REPORT";
|
||||||
|
const char *SUPV_EXE_FAILURE_REPORT_STRING = "SUPV_EXE_FAILURE_REPORT";
|
||||||
|
const char *SUPV_ACK_INVALID_APID_STRING = "SUPV_ACK_INVALID_APID";
|
||||||
|
const char *SUPV_EXE_INVALID_APID_STRING = "SUPV_EXE_INVALID_APID";
|
||||||
|
const char *ACK_RECEPTION_FAILURE_STRING = "ACK_RECEPTION_FAILURE";
|
||||||
|
const char *EXE_RECEPTION_FAILURE_STRING = "EXE_RECEPTION_FAILURE";
|
||||||
const char *ALLOC_FAILURE_STRING = "ALLOC_FAILURE";
|
const char *ALLOC_FAILURE_STRING = "ALLOC_FAILURE";
|
||||||
const char *REBOOT_SW_STRING = "REBOOT_SW";
|
const char *REBOOT_SW_STRING = "REBOOT_SW";
|
||||||
const char *REBOOT_MECHANISM_TRIGGERED_STRING = "REBOOT_MECHANISM_TRIGGERED";
|
const char *REBOOT_MECHANISM_TRIGGERED_STRING = "REBOOT_MECHANISM_TRIGGERED";
|
||||||
@ -386,7 +399,7 @@ const char *translateEvents(Event event) {
|
|||||||
case (11604):
|
case (11604):
|
||||||
return MPSOC_HANDLER_CRC_FAILURE_STRING;
|
return MPSOC_HANDLER_CRC_FAILURE_STRING;
|
||||||
case (11605):
|
case (11605):
|
||||||
return MPSOC_HANDLER_SEQ_CNT_MISMATCH_STRING;
|
return MPSOC_HANDLER_SEQUENCE_COUNT_MISMATCH_STRING;
|
||||||
case (11606):
|
case (11606):
|
||||||
return MPSOC_SHUTDOWN_FAILED_STRING;
|
return MPSOC_SHUTDOWN_FAILED_STRING;
|
||||||
case (11701):
|
case (11701):
|
||||||
@ -407,6 +420,8 @@ const char *translateEvents(Event event) {
|
|||||||
return INVALID_ERROR_BYTE_STRING;
|
return INVALID_ERROR_BYTE_STRING;
|
||||||
case (11801):
|
case (11801):
|
||||||
return ERROR_STATE_STRING;
|
return ERROR_STATE_STRING;
|
||||||
|
case (11802):
|
||||||
|
return RESET_OCCURED_STRING;
|
||||||
case (11901):
|
case (11901):
|
||||||
return BOOTING_FIRMWARE_FAILED_STRING;
|
return BOOTING_FIRMWARE_FAILED_STRING;
|
||||||
case (11902):
|
case (11902):
|
||||||
@ -419,22 +434,12 @@ const char *translateEvents(Event event) {
|
|||||||
return SUPV_EXE_FAILURE_STRING;
|
return SUPV_EXE_FAILURE_STRING;
|
||||||
case (12004):
|
case (12004):
|
||||||
return SUPV_CRC_FAILURE_EVENT_STRING;
|
return SUPV_CRC_FAILURE_EVENT_STRING;
|
||||||
|
case (12005):
|
||||||
|
return SUPV_MPSOC_SHUWDOWN_BUILD_FAILED_STRING;
|
||||||
case (12100):
|
case (12100):
|
||||||
return SANITIZATION_FAILED_STRING;
|
return SANITIZATION_FAILED_STRING;
|
||||||
case (12101):
|
case (12101):
|
||||||
return MOUNTED_SD_CARD_STRING;
|
return MOUNTED_SD_CARD_STRING;
|
||||||
case (12200):
|
|
||||||
return UPDATE_FILE_NOT_EXISTS_STRING;
|
|
||||||
case (12201):
|
|
||||||
return ACTION_COMMANDING_FAILED_STRING;
|
|
||||||
case (12202):
|
|
||||||
return UPDATE_AVAILABLE_FAILED_STRING;
|
|
||||||
case (12203):
|
|
||||||
return UPDATE_TRANSFER_FAILED_STRING;
|
|
||||||
case (12204):
|
|
||||||
return UPDATE_VERIFY_FAILED_STRING;
|
|
||||||
case (12205):
|
|
||||||
return UPDATE_FINISHED_STRING;
|
|
||||||
case (12300):
|
case (12300):
|
||||||
return SEND_MRAM_DUMP_FAILED_STRING;
|
return SEND_MRAM_DUMP_FAILED_STRING;
|
||||||
case (12301):
|
case (12301):
|
||||||
@ -488,23 +493,23 @@ const char *translateEvents(Event event) {
|
|||||||
case (12601):
|
case (12601):
|
||||||
return MPSOC_FLASH_WRITE_SUCCESSFUL_STRING;
|
return MPSOC_FLASH_WRITE_SUCCESSFUL_STRING;
|
||||||
case (12602):
|
case (12602):
|
||||||
return SENDING_COMMAND_FAILED_STRING;
|
return MPSOC_SENDING_COMMAND_FAILED_STRING;
|
||||||
case (12603):
|
case (12603):
|
||||||
return MPSOC_HELPER_REQUESTING_REPLY_FAILED_STRING;
|
return MPSOC_HELPER_REQUESTING_REPLY_FAILED_STRING;
|
||||||
case (12604):
|
case (12604):
|
||||||
return MPSOC_HELPER_READING_REPLY_FAILED_STRING;
|
return MPSOC_HELPER_READING_REPLY_FAILED_STRING;
|
||||||
case (12605):
|
case (12605):
|
||||||
return MISSING_ACK_STRING;
|
return MPSOC_MISSING_ACK_STRING;
|
||||||
case (12606):
|
case (12606):
|
||||||
return MISSING_EXE_STRING;
|
return MPSOC_MISSING_EXE_STRING;
|
||||||
case (12607):
|
case (12607):
|
||||||
return ACK_FAILURE_REPORT_STRING;
|
return MPSOC_ACK_FAILURE_REPORT_STRING;
|
||||||
case (12608):
|
case (12608):
|
||||||
return EXE_FAILURE_REPORT_STRING;
|
return MPSOC_EXE_FAILURE_REPORT_STRING;
|
||||||
case (12609):
|
case (12609):
|
||||||
return ACK_INVALID_APID_STRING;
|
return MPSOC_ACK_INVALID_APID_STRING;
|
||||||
case (12610):
|
case (12610):
|
||||||
return EXE_INVALID_APID_STRING;
|
return MPSOC_EXE_INVALID_APID_STRING;
|
||||||
case (12611):
|
case (12611):
|
||||||
return MPSOC_HELPER_SEQ_CNT_MISMATCH_STRING;
|
return MPSOC_HELPER_SEQ_CNT_MISMATCH_STRING;
|
||||||
case (12700):
|
case (12700):
|
||||||
@ -550,12 +555,46 @@ const char *translateEvents(Event event) {
|
|||||||
case (13202):
|
case (13202):
|
||||||
return BATT_MODE_CHANGED_STRING;
|
return BATT_MODE_CHANGED_STRING;
|
||||||
case (13600):
|
case (13600):
|
||||||
return ALLOC_FAILURE_STRING;
|
return SUPV_UPDATE_FAILED_STRING;
|
||||||
case (13601):
|
case (13601):
|
||||||
return REBOOT_SW_STRING;
|
return SUPV_UPDATE_SUCCESSFUL_STRING;
|
||||||
case (13602):
|
case (13602):
|
||||||
return REBOOT_MECHANISM_TRIGGERED_STRING;
|
return TERMINATED_UPDATE_PROCEDURE_STRING;
|
||||||
case (13603):
|
case (13603):
|
||||||
|
return SUPV_EVENT_BUFFER_REQUEST_SUCCESSFUL_STRING;
|
||||||
|
case (13604):
|
||||||
|
return SUPV_EVENT_BUFFER_REQUEST_FAILED_STRING;
|
||||||
|
case (13605):
|
||||||
|
return SUPV_EVENT_BUFFER_REQUEST_TERMINATED_STRING;
|
||||||
|
case (13606):
|
||||||
|
return SUPV_SENDING_COMMAND_FAILED_STRING;
|
||||||
|
case (13607):
|
||||||
|
return SUPV_HELPER_REQUESTING_REPLY_FAILED_STRING;
|
||||||
|
case (13608):
|
||||||
|
return SUPV_HELPER_READING_REPLY_FAILED_STRING;
|
||||||
|
case (13609):
|
||||||
|
return SUPV_MISSING_ACK_STRING;
|
||||||
|
case (13610):
|
||||||
|
return SUPV_MISSING_EXE_STRING;
|
||||||
|
case (13611):
|
||||||
|
return SUPV_ACK_FAILURE_REPORT_STRING;
|
||||||
|
case (13612):
|
||||||
|
return SUPV_EXE_FAILURE_REPORT_STRING;
|
||||||
|
case (13613):
|
||||||
|
return SUPV_ACK_INVALID_APID_STRING;
|
||||||
|
case (13614):
|
||||||
|
return SUPV_EXE_INVALID_APID_STRING;
|
||||||
|
case (13615):
|
||||||
|
return ACK_RECEPTION_FAILURE_STRING;
|
||||||
|
case (13616):
|
||||||
|
return EXE_RECEPTION_FAILURE_STRING;
|
||||||
|
case (13700):
|
||||||
|
return ALLOC_FAILURE_STRING;
|
||||||
|
case (13701):
|
||||||
|
return REBOOT_SW_STRING;
|
||||||
|
case (13702):
|
||||||
|
return REBOOT_MECHANISM_TRIGGERED_STRING;
|
||||||
|
case (13703):
|
||||||
return REBOOT_HW_STRING;
|
return REBOOT_HW_STRING;
|
||||||
default:
|
default:
|
||||||
return "UNKNOWN_EVENT";
|
return "UNKNOWN_EVENT";
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
* @brief Auto-generated object translation file.
|
* @brief Auto-generated object translation file.
|
||||||
* @details
|
* @details
|
||||||
* Contains 117 translations.
|
* Contains 117 translations.
|
||||||
* Generated on: 2022-05-03 16:32:00
|
* Generated on: 2022-05-08 13:11:24
|
||||||
*/
|
*/
|
||||||
#include "translateObjects.h"
|
#include "translateObjects.h"
|
||||||
|
|
||||||
@ -12,18 +12,18 @@ const char *ACS_CONTROLLER_STRING = "ACS_CONTROLLER";
|
|||||||
const char *THERMAL_CONTROLLER_STRING = "THERMAL_CONTROLLER";
|
const char *THERMAL_CONTROLLER_STRING = "THERMAL_CONTROLLER";
|
||||||
const char *MGM_0_LIS3_HANDLER_STRING = "MGM_0_LIS3_HANDLER";
|
const char *MGM_0_LIS3_HANDLER_STRING = "MGM_0_LIS3_HANDLER";
|
||||||
const char *GYRO_0_ADIS_HANDLER_STRING = "GYRO_0_ADIS_HANDLER";
|
const char *GYRO_0_ADIS_HANDLER_STRING = "GYRO_0_ADIS_HANDLER";
|
||||||
const char *SUS_0_STRING = "SUS_0";
|
const char *SUS_0_N_LOC_XFYFZM_PT_XF_STRING = "SUS_0_N_LOC_XFYFZM_PT_XF";
|
||||||
const char *SUS_1_STRING = "SUS_1";
|
const char *SUS_1_N_LOC_XBYFZM_PT_XB_STRING = "SUS_1_N_LOC_XBYFZM_PT_XB";
|
||||||
const char *SUS_2_STRING = "SUS_2";
|
const char *SUS_2_N_LOC_XFYBZB_PT_YB_STRING = "SUS_2_N_LOC_XFYBZB_PT_YB";
|
||||||
const char *SUS_3_STRING = "SUS_3";
|
const char *SUS_3_N_LOC_XFYBZF_PT_YF_STRING = "SUS_3_N_LOC_XFYBZF_PT_YF";
|
||||||
const char *SUS_4_STRING = "SUS_4";
|
const char *SUS_4_N_LOC_XMYFZF_PT_ZF_STRING = "SUS_4_N_LOC_XMYFZF_PT_ZF";
|
||||||
const char *SUS_5_STRING = "SUS_5";
|
const char *SUS_5_N_LOC_XFYMZB_PT_ZB_STRING = "SUS_5_N_LOC_XFYMZB_PT_ZB";
|
||||||
const char *SUS_6_STRING = "SUS_6";
|
const char *SUS_6_R_LOC_XFYBZM_PT_XF_STRING = "SUS_6_R_LOC_XFYBZM_PT_XF";
|
||||||
const char *SUS_7_STRING = "SUS_7";
|
const char *SUS_7_R_LOC_XBYBZM_PT_XB_STRING = "SUS_7_R_LOC_XBYBZM_PT_XB";
|
||||||
const char *SUS_8_STRING = "SUS_8";
|
const char *SUS_8_R_LOC_XBYBZB_PT_YB_STRING = "SUS_8_R_LOC_XBYBZB_PT_YB";
|
||||||
const char *SUS_9_STRING = "SUS_9";
|
const char *SUS_9_R_LOC_XBYBZB_PT_YF_STRING = "SUS_9_R_LOC_XBYBZB_PT_YF";
|
||||||
const char *SUS_10_STRING = "SUS_10";
|
const char *SUS_10_N_LOC_XMYBZF_PT_ZF_STRING = "SUS_10_N_LOC_XMYBZF_PT_ZF";
|
||||||
const char *SUS_11_STRING = "SUS_11";
|
const char *SUS_11_R_LOC_XBYMZB_PT_ZB_STRING = "SUS_11_R_LOC_XBYMZB_PT_ZB";
|
||||||
const char *RW1_STRING = "RW1";
|
const char *RW1_STRING = "RW1";
|
||||||
const char *MGM_1_RM3100_HANDLER_STRING = "MGM_1_RM3100_HANDLER";
|
const char *MGM_1_RM3100_HANDLER_STRING = "MGM_1_RM3100_HANDLER";
|
||||||
const char *GYRO_1_L3G_HANDLER_STRING = "GYRO_1_L3G_HANDLER";
|
const char *GYRO_1_L3G_HANDLER_STRING = "GYRO_1_L3G_HANDLER";
|
||||||
@ -45,7 +45,6 @@ const char *ACU_HANDLER_STRING = "ACU_HANDLER";
|
|||||||
const char *BPX_BATT_HANDLER_STRING = "BPX_BATT_HANDLER";
|
const char *BPX_BATT_HANDLER_STRING = "BPX_BATT_HANDLER";
|
||||||
const char *PLPCDU_HANDLER_STRING = "PLPCDU_HANDLER";
|
const char *PLPCDU_HANDLER_STRING = "PLPCDU_HANDLER";
|
||||||
const char *RAD_SENSOR_STRING = "RAD_SENSOR";
|
const char *RAD_SENSOR_STRING = "RAD_SENSOR";
|
||||||
const char *PLOC_UPDATER_STRING = "PLOC_UPDATER";
|
|
||||||
const char *PLOC_MEMORY_DUMPER_STRING = "PLOC_MEMORY_DUMPER";
|
const char *PLOC_MEMORY_DUMPER_STRING = "PLOC_MEMORY_DUMPER";
|
||||||
const char *STR_HELPER_STRING = "STR_HELPER";
|
const char *STR_HELPER_STRING = "STR_HELPER";
|
||||||
const char *PLOC_MPSOC_HELPER_STRING = "PLOC_MPSOC_HELPER";
|
const char *PLOC_MPSOC_HELPER_STRING = "PLOC_MPSOC_HELPER";
|
||||||
@ -56,22 +55,22 @@ const char *SOLAR_ARRAY_DEPL_HANDLER_STRING = "SOLAR_ARRAY_DEPL_HANDLER";
|
|||||||
const char *HEATER_HANDLER_STRING = "HEATER_HANDLER";
|
const char *HEATER_HANDLER_STRING = "HEATER_HANDLER";
|
||||||
const char *TMP1075_HANDLER_1_STRING = "TMP1075_HANDLER_1";
|
const char *TMP1075_HANDLER_1_STRING = "TMP1075_HANDLER_1";
|
||||||
const char *TMP1075_HANDLER_2_STRING = "TMP1075_HANDLER_2";
|
const char *TMP1075_HANDLER_2_STRING = "TMP1075_HANDLER_2";
|
||||||
const char *RTD_IC_3_STRING = "RTD_IC_3";
|
const char *RTD_0_IC3_PLOC_HEATSPREADER_STRING = "RTD_0_IC3_PLOC_HEATSPREADER";
|
||||||
const char *RTD_IC_4_STRING = "RTD_IC_4";
|
const char *RTD_1_IC4_PLOC_MISSIONBOARD_STRING = "RTD_1_IC4_PLOC_MISSIONBOARD";
|
||||||
const char *RTD_IC_5_STRING = "RTD_IC_5";
|
const char *RTD_2_IC5_4K_CAMERA_STRING = "RTD_2_IC5_4K_CAMERA";
|
||||||
const char *RTD_IC_6_STRING = "RTD_IC_6";
|
const char *RTD_3_IC6_DAC_HEATSPREADER_STRING = "RTD_3_IC6_DAC_HEATSPREADER";
|
||||||
const char *RTD_IC_7_STRING = "RTD_IC_7";
|
const char *RTD_4_IC7_STARTRACKER_STRING = "RTD_4_IC7_STARTRACKER";
|
||||||
const char *RTD_IC_8_STRING = "RTD_IC_8";
|
const char *RTD_5_IC8_RW1_MX_MY_STRING = "RTD_5_IC8_RW1_MX_MY";
|
||||||
const char *RTD_IC_9_STRING = "RTD_IC_9";
|
const char *RTD_6_IC9_DRO_STRING = "RTD_6_IC9_DRO";
|
||||||
const char *RTD_IC_10_STRING = "RTD_IC_10";
|
const char *RTD_7_IC10_SCEX_STRING = "RTD_7_IC10_SCEX";
|
||||||
const char *RTD_IC_11_STRING = "RTD_IC_11";
|
const char *RTD_8_IC11_X8_STRING = "RTD_8_IC11_X8";
|
||||||
const char *RTD_IC_12_STRING = "RTD_IC_12";
|
const char *RTD_9_IC12_HPA_STRING = "RTD_9_IC12_HPA";
|
||||||
const char *RTD_IC_13_STRING = "RTD_IC_13";
|
const char *RTD_10_IC13_PL_TX_STRING = "RTD_10_IC13_PL_TX";
|
||||||
const char *RTD_IC_14_STRING = "RTD_IC_14";
|
const char *RTD_11_IC14_MPA_STRING = "RTD_11_IC14_MPA";
|
||||||
const char *RTD_IC_15_STRING = "RTD_IC_15";
|
const char *RTD_12_IC15_ACU_STRING = "RTD_12_IC15_ACU";
|
||||||
const char *RTD_IC_16_STRING = "RTD_IC_16";
|
const char *RTD_13_IC16_PLPCDU_HEATSPREADER_STRING = "RTD_13_IC16_PLPCDU_HEATSPREADER";
|
||||||
const char *RTD_IC_17_STRING = "RTD_IC_17";
|
const char *RTD_14_IC17_TCS_BOARD_STRING = "RTD_14_IC17_TCS_BOARD";
|
||||||
const char *RTD_IC_18_STRING = "RTD_IC_18";
|
const char *RTD_15_IC18_IMTQ_STRING = "RTD_15_IC18_IMTQ";
|
||||||
const char *SYRLINKS_HK_HANDLER_STRING = "SYRLINKS_HK_HANDLER";
|
const char *SYRLINKS_HK_HANDLER_STRING = "SYRLINKS_HK_HANDLER";
|
||||||
const char *ARDUINO_COM_IF_STRING = "ARDUINO_COM_IF";
|
const char *ARDUINO_COM_IF_STRING = "ARDUINO_COM_IF";
|
||||||
const char *GPIO_IF_STRING = "GPIO_IF";
|
const char *GPIO_IF_STRING = "GPIO_IF";
|
||||||
@ -120,6 +119,7 @@ const char *TEST_TASK_STRING = "TEST_TASK";
|
|||||||
const char *ACS_BOARD_ASS_STRING = "ACS_BOARD_ASS";
|
const char *ACS_BOARD_ASS_STRING = "ACS_BOARD_ASS";
|
||||||
const char *SUS_BOARD_ASS_STRING = "SUS_BOARD_ASS";
|
const char *SUS_BOARD_ASS_STRING = "SUS_BOARD_ASS";
|
||||||
const char *TCS_BOARD_ASS_STRING = "TCS_BOARD_ASS";
|
const char *TCS_BOARD_ASS_STRING = "TCS_BOARD_ASS";
|
||||||
|
const char *RW_ASS_STRING = "RW_ASS";
|
||||||
const char *TM_FUNNEL_STRING = "TM_FUNNEL";
|
const char *TM_FUNNEL_STRING = "TM_FUNNEL";
|
||||||
const char *CCSDS_IP_CORE_BRIDGE_STRING = "CCSDS_IP_CORE_BRIDGE";
|
const char *CCSDS_IP_CORE_BRIDGE_STRING = "CCSDS_IP_CORE_BRIDGE";
|
||||||
const char *NO_OBJECT_STRING = "NO_OBJECT";
|
const char *NO_OBJECT_STRING = "NO_OBJECT";
|
||||||
@ -139,29 +139,29 @@ const char *translateObject(object_id_t object) {
|
|||||||
case 0x44120010:
|
case 0x44120010:
|
||||||
return GYRO_0_ADIS_HANDLER_STRING;
|
return GYRO_0_ADIS_HANDLER_STRING;
|
||||||
case 0x44120032:
|
case 0x44120032:
|
||||||
return SUS_0_STRING;
|
return SUS_0_N_LOC_XFYFZM_PT_XF_STRING;
|
||||||
case 0x44120033:
|
case 0x44120033:
|
||||||
return SUS_1_STRING;
|
return SUS_1_N_LOC_XBYFZM_PT_XB_STRING;
|
||||||
case 0x44120034:
|
case 0x44120034:
|
||||||
return SUS_2_STRING;
|
return SUS_2_N_LOC_XFYBZB_PT_YB_STRING;
|
||||||
case 0x44120035:
|
case 0x44120035:
|
||||||
return SUS_3_STRING;
|
return SUS_3_N_LOC_XFYBZF_PT_YF_STRING;
|
||||||
case 0x44120036:
|
case 0x44120036:
|
||||||
return SUS_4_STRING;
|
return SUS_4_N_LOC_XMYFZF_PT_ZF_STRING;
|
||||||
case 0x44120037:
|
case 0x44120037:
|
||||||
return SUS_5_STRING;
|
return SUS_5_N_LOC_XFYMZB_PT_ZB_STRING;
|
||||||
case 0x44120038:
|
case 0x44120038:
|
||||||
return SUS_6_STRING;
|
return SUS_6_R_LOC_XFYBZM_PT_XF_STRING;
|
||||||
case 0x44120039:
|
case 0x44120039:
|
||||||
return SUS_7_STRING;
|
return SUS_7_R_LOC_XBYBZM_PT_XB_STRING;
|
||||||
case 0x44120040:
|
case 0x44120040:
|
||||||
return SUS_8_STRING;
|
return SUS_8_R_LOC_XBYBZB_PT_YB_STRING;
|
||||||
case 0x44120041:
|
case 0x44120041:
|
||||||
return SUS_9_STRING;
|
return SUS_9_R_LOC_XBYBZB_PT_YF_STRING;
|
||||||
case 0x44120042:
|
case 0x44120042:
|
||||||
return SUS_10_STRING;
|
return SUS_10_N_LOC_XMYBZF_PT_ZF_STRING;
|
||||||
case 0x44120043:
|
case 0x44120043:
|
||||||
return SUS_11_STRING;
|
return SUS_11_R_LOC_XBYMZB_PT_ZB_STRING;
|
||||||
case 0x44120047:
|
case 0x44120047:
|
||||||
return RW1_STRING;
|
return RW1_STRING;
|
||||||
case 0x44120107:
|
case 0x44120107:
|
||||||
@ -204,8 +204,6 @@ const char *translateObject(object_id_t object) {
|
|||||||
return PLPCDU_HANDLER_STRING;
|
return PLPCDU_HANDLER_STRING;
|
||||||
case 0x443200A5:
|
case 0x443200A5:
|
||||||
return RAD_SENSOR_STRING;
|
return RAD_SENSOR_STRING;
|
||||||
case 0x44330000:
|
|
||||||
return PLOC_UPDATER_STRING;
|
|
||||||
case 0x44330001:
|
case 0x44330001:
|
||||||
return PLOC_MEMORY_DUMPER_STRING;
|
return PLOC_MEMORY_DUMPER_STRING;
|
||||||
case 0x44330002:
|
case 0x44330002:
|
||||||
@ -227,37 +225,37 @@ const char *translateObject(object_id_t object) {
|
|||||||
case 0x44420005:
|
case 0x44420005:
|
||||||
return TMP1075_HANDLER_2_STRING;
|
return TMP1075_HANDLER_2_STRING;
|
||||||
case 0x44420016:
|
case 0x44420016:
|
||||||
return RTD_IC_3_STRING;
|
return RTD_0_IC3_PLOC_HEATSPREADER_STRING;
|
||||||
case 0x44420017:
|
case 0x44420017:
|
||||||
return RTD_IC_4_STRING;
|
return RTD_1_IC4_PLOC_MISSIONBOARD_STRING;
|
||||||
case 0x44420018:
|
case 0x44420018:
|
||||||
return RTD_IC_5_STRING;
|
return RTD_2_IC5_4K_CAMERA_STRING;
|
||||||
case 0x44420019:
|
case 0x44420019:
|
||||||
return RTD_IC_6_STRING;
|
return RTD_3_IC6_DAC_HEATSPREADER_STRING;
|
||||||
case 0x44420020:
|
case 0x44420020:
|
||||||
return RTD_IC_7_STRING;
|
return RTD_4_IC7_STARTRACKER_STRING;
|
||||||
case 0x44420021:
|
case 0x44420021:
|
||||||
return RTD_IC_8_STRING;
|
return RTD_5_IC8_RW1_MX_MY_STRING;
|
||||||
case 0x44420022:
|
case 0x44420022:
|
||||||
return RTD_IC_9_STRING;
|
return RTD_6_IC9_DRO_STRING;
|
||||||
case 0x44420023:
|
case 0x44420023:
|
||||||
return RTD_IC_10_STRING;
|
return RTD_7_IC10_SCEX_STRING;
|
||||||
case 0x44420024:
|
case 0x44420024:
|
||||||
return RTD_IC_11_STRING;
|
return RTD_8_IC11_X8_STRING;
|
||||||
case 0x44420025:
|
case 0x44420025:
|
||||||
return RTD_IC_12_STRING;
|
return RTD_9_IC12_HPA_STRING;
|
||||||
case 0x44420026:
|
case 0x44420026:
|
||||||
return RTD_IC_13_STRING;
|
return RTD_10_IC13_PL_TX_STRING;
|
||||||
case 0x44420027:
|
case 0x44420027:
|
||||||
return RTD_IC_14_STRING;
|
return RTD_11_IC14_MPA_STRING;
|
||||||
case 0x44420028:
|
case 0x44420028:
|
||||||
return RTD_IC_15_STRING;
|
return RTD_12_IC15_ACU_STRING;
|
||||||
case 0x44420029:
|
case 0x44420029:
|
||||||
return RTD_IC_16_STRING;
|
return RTD_13_IC16_PLPCDU_HEATSPREADER_STRING;
|
||||||
case 0x44420030:
|
case 0x44420030:
|
||||||
return RTD_IC_17_STRING;
|
return RTD_14_IC17_TCS_BOARD_STRING;
|
||||||
case 0x44420031:
|
case 0x44420031:
|
||||||
return RTD_IC_18_STRING;
|
return RTD_15_IC18_IMTQ_STRING;
|
||||||
case 0x445300A3:
|
case 0x445300A3:
|
||||||
return SYRLINKS_HK_HANDLER_STRING;
|
return SYRLINKS_HK_HANDLER_STRING;
|
||||||
case 0x49000000:
|
case 0x49000000:
|
||||||
@ -354,6 +352,8 @@ const char *translateObject(object_id_t object) {
|
|||||||
return SUS_BOARD_ASS_STRING;
|
return SUS_BOARD_ASS_STRING;
|
||||||
case 0x73000003:
|
case 0x73000003:
|
||||||
return TCS_BOARD_ASS_STRING;
|
return TCS_BOARD_ASS_STRING;
|
||||||
|
case 0x73000004:
|
||||||
|
return RW_ASS_STRING;
|
||||||
case 0x73000100:
|
case 0x73000100:
|
||||||
return TM_FUNNEL_STRING;
|
return TM_FUNNEL_STRING;
|
||||||
case 0x73500000:
|
case 0x73500000:
|
||||||
|
@ -62,104 +62,103 @@ void ObjectFactory::createSunSensorComponents(GpioIF* gpioComIF, SpiComIF* spiCo
|
|||||||
&gpioCallbacks::spiCsDecoderCallback, gpioComIF);
|
&gpioCallbacks::spiCsDecoderCallback, gpioComIF);
|
||||||
gpioCookieSus->addGpio(gpioIds::CS_SUS_11, susgpio);
|
gpioCookieSus->addGpio(gpioIds::CS_SUS_11, susgpio);
|
||||||
|
|
||||||
gpioComIF->addGpios(gpioCookieSus);
|
gpioChecker(gpioComIF->addGpios(gpioCookieSus), "Sun Sensors");
|
||||||
|
|
||||||
#if OBSW_ADD_SUN_SENSORS == 1
|
#if OBSW_ADD_SUN_SENSORS == 1
|
||||||
SusFdir* fdir = nullptr;
|
SusFdir* fdir = nullptr;
|
||||||
std::array<SusHandler*, 12> susHandlers = {};
|
std::array<SusHandler*, 12> susHandlers = {};
|
||||||
SpiCookie* spiCookie =
|
SpiCookie* spiCookie = new SpiCookie(addresses::SUS_0, gpioIds::CS_SUS_0, SUS::MAX_CMD_SIZE,
|
||||||
new SpiCookie(addresses::SUS_0, gpioIds::CS_SUS_0, spiDev, SUS::MAX_CMD_SIZE,
|
spi::SUS_MAX_1227_MODE, spi::SUS_MAX1227_SPI_FREQ);
|
||||||
spi::SUS_MAX_1227_MODE, spi::SUS_MAX1227_SPI_FREQ);
|
|
||||||
susHandlers[0] =
|
susHandlers[0] =
|
||||||
new SusHandler(objects::SUS_0_N_LOC_XFYFZM_PT_XF, 0, objects::SPI_COM_IF, spiCookie);
|
new SusHandler(objects::SUS_0_N_LOC_XFYFZM_PT_XF, 0, objects::SPI_MAIN_COM_IF, spiCookie);
|
||||||
fdir = new SusFdir(objects::SUS_0_N_LOC_XFYFZM_PT_XF);
|
fdir = new SusFdir(objects::SUS_0_N_LOC_XFYFZM_PT_XF);
|
||||||
susHandlers[0]->setParent(objects::SUS_BOARD_ASS);
|
susHandlers[0]->setParent(objects::SUS_BOARD_ASS);
|
||||||
susHandlers[0]->setCustomFdir(fdir);
|
susHandlers[0]->setCustomFdir(fdir);
|
||||||
|
|
||||||
spiCookie = new SpiCookie(addresses::SUS_1, gpioIds::CS_SUS_1, spiDev, SUS::MAX_CMD_SIZE,
|
spiCookie = new SpiCookie(addresses::SUS_1, gpioIds::CS_SUS_1, SUS::MAX_CMD_SIZE,
|
||||||
spi::SUS_MAX_1227_MODE, spi::SUS_MAX1227_SPI_FREQ);
|
spi::SUS_MAX_1227_MODE, spi::SUS_MAX1227_SPI_FREQ);
|
||||||
susHandlers[1] =
|
susHandlers[1] =
|
||||||
new SusHandler(objects::SUS_1_N_LOC_XBYFZM_PT_XB, 1, objects::SPI_COM_IF, spiCookie);
|
new SusHandler(objects::SUS_1_N_LOC_XBYFZM_PT_XB, 1, objects::SPI_MAIN_COM_IF, spiCookie);
|
||||||
fdir = new SusFdir(objects::SUS_1_N_LOC_XBYFZM_PT_XB);
|
fdir = new SusFdir(objects::SUS_1_N_LOC_XBYFZM_PT_XB);
|
||||||
susHandlers[1]->setParent(objects::SUS_BOARD_ASS);
|
susHandlers[1]->setParent(objects::SUS_BOARD_ASS);
|
||||||
susHandlers[1]->setCustomFdir(fdir);
|
susHandlers[1]->setCustomFdir(fdir);
|
||||||
|
|
||||||
spiCookie = new SpiCookie(addresses::SUS_2, gpioIds::CS_SUS_2, spiDev, SUS::MAX_CMD_SIZE,
|
spiCookie = new SpiCookie(addresses::SUS_2, gpioIds::CS_SUS_2, SUS::MAX_CMD_SIZE,
|
||||||
spi::SUS_MAX_1227_MODE, spi::SUS_MAX1227_SPI_FREQ);
|
spi::SUS_MAX_1227_MODE, spi::SUS_MAX1227_SPI_FREQ);
|
||||||
susHandlers[2] =
|
susHandlers[2] =
|
||||||
new SusHandler(objects::SUS_2_N_LOC_XFYBZB_PT_YB, 2, objects::SPI_COM_IF, spiCookie);
|
new SusHandler(objects::SUS_2_N_LOC_XFYBZB_PT_YB, 2, objects::SPI_MAIN_COM_IF, spiCookie);
|
||||||
fdir = new SusFdir(objects::SUS_2_N_LOC_XFYBZB_PT_YB);
|
fdir = new SusFdir(objects::SUS_2_N_LOC_XFYBZB_PT_YB);
|
||||||
susHandlers[2]->setParent(objects::SUS_BOARD_ASS);
|
susHandlers[2]->setParent(objects::SUS_BOARD_ASS);
|
||||||
susHandlers[2]->setCustomFdir(fdir);
|
susHandlers[2]->setCustomFdir(fdir);
|
||||||
|
|
||||||
spiCookie = new SpiCookie(addresses::SUS_3, gpioIds::CS_SUS_3, spiDev, SUS::MAX_CMD_SIZE,
|
spiCookie = new SpiCookie(addresses::SUS_3, gpioIds::CS_SUS_3, SUS::MAX_CMD_SIZE,
|
||||||
spi::SUS_MAX_1227_MODE, spi::SUS_MAX1227_SPI_FREQ);
|
spi::SUS_MAX_1227_MODE, spi::SUS_MAX1227_SPI_FREQ);
|
||||||
susHandlers[3] =
|
susHandlers[3] =
|
||||||
new SusHandler(objects::SUS_3_N_LOC_XFYBZF_PT_YF, 3, objects::SPI_COM_IF, spiCookie);
|
new SusHandler(objects::SUS_3_N_LOC_XFYBZF_PT_YF, 3, objects::SPI_MAIN_COM_IF, spiCookie);
|
||||||
fdir = new SusFdir(objects::SUS_3_N_LOC_XFYBZF_PT_YF);
|
fdir = new SusFdir(objects::SUS_3_N_LOC_XFYBZF_PT_YF);
|
||||||
susHandlers[3]->setParent(objects::SUS_BOARD_ASS);
|
susHandlers[3]->setParent(objects::SUS_BOARD_ASS);
|
||||||
susHandlers[3]->setCustomFdir(fdir);
|
susHandlers[3]->setCustomFdir(fdir);
|
||||||
|
|
||||||
spiCookie = new SpiCookie(addresses::SUS_4, gpioIds::CS_SUS_4, spiDev, SUS::MAX_CMD_SIZE,
|
spiCookie = new SpiCookie(addresses::SUS_4, gpioIds::CS_SUS_4, SUS::MAX_CMD_SIZE,
|
||||||
spi::SUS_MAX_1227_MODE, spi::SUS_MAX1227_SPI_FREQ);
|
spi::SUS_MAX_1227_MODE, spi::SUS_MAX1227_SPI_FREQ);
|
||||||
susHandlers[4] =
|
susHandlers[4] =
|
||||||
new SusHandler(objects::SUS_4_N_LOC_XMYFZF_PT_ZF, 4, objects::SPI_COM_IF, spiCookie);
|
new SusHandler(objects::SUS_4_N_LOC_XMYFZF_PT_ZF, 4, objects::SPI_MAIN_COM_IF, spiCookie);
|
||||||
fdir = new SusFdir(objects::SUS_4_N_LOC_XMYFZF_PT_ZF);
|
fdir = new SusFdir(objects::SUS_4_N_LOC_XMYFZF_PT_ZF);
|
||||||
susHandlers[4]->setParent(objects::SUS_BOARD_ASS);
|
susHandlers[4]->setParent(objects::SUS_BOARD_ASS);
|
||||||
susHandlers[4]->setCustomFdir(fdir);
|
susHandlers[4]->setCustomFdir(fdir);
|
||||||
|
|
||||||
spiCookie = new SpiCookie(addresses::SUS_5, gpioIds::CS_SUS_5, spiDev, SUS::MAX_CMD_SIZE,
|
spiCookie = new SpiCookie(addresses::SUS_5, gpioIds::CS_SUS_5, SUS::MAX_CMD_SIZE,
|
||||||
spi::SUS_MAX_1227_MODE, spi::SUS_MAX1227_SPI_FREQ);
|
spi::SUS_MAX_1227_MODE, spi::SUS_MAX1227_SPI_FREQ);
|
||||||
susHandlers[5] =
|
susHandlers[5] =
|
||||||
new SusHandler(objects::SUS_5_N_LOC_XFYMZB_PT_ZB, 5, objects::SPI_COM_IF, spiCookie);
|
new SusHandler(objects::SUS_5_N_LOC_XFYMZB_PT_ZB, 5, objects::SPI_MAIN_COM_IF, spiCookie);
|
||||||
fdir = new SusFdir(objects::SUS_5_N_LOC_XFYMZB_PT_ZB);
|
fdir = new SusFdir(objects::SUS_5_N_LOC_XFYMZB_PT_ZB);
|
||||||
susHandlers[5]->setParent(objects::SUS_BOARD_ASS);
|
susHandlers[5]->setParent(objects::SUS_BOARD_ASS);
|
||||||
susHandlers[5]->setCustomFdir(fdir);
|
susHandlers[5]->setCustomFdir(fdir);
|
||||||
|
|
||||||
spiCookie = new SpiCookie(addresses::SUS_6, gpioIds::CS_SUS_6, spiDev, SUS::MAX_CMD_SIZE,
|
spiCookie = new SpiCookie(addresses::SUS_6, gpioIds::CS_SUS_6, SUS::MAX_CMD_SIZE,
|
||||||
spi::SUS_MAX_1227_MODE, spi::SUS_MAX1227_SPI_FREQ);
|
spi::SUS_MAX_1227_MODE, spi::SUS_MAX1227_SPI_FREQ);
|
||||||
susHandlers[6] =
|
susHandlers[6] =
|
||||||
new SusHandler(objects::SUS_6_R_LOC_XFYBZM_PT_XF, 6, objects::SPI_COM_IF, spiCookie);
|
new SusHandler(objects::SUS_6_R_LOC_XFYBZM_PT_XF, 6, objects::SPI_MAIN_COM_IF, spiCookie);
|
||||||
fdir = new SusFdir(objects::SUS_6_R_LOC_XFYBZM_PT_XF);
|
fdir = new SusFdir(objects::SUS_6_R_LOC_XFYBZM_PT_XF);
|
||||||
susHandlers[6]->setParent(objects::SUS_BOARD_ASS);
|
susHandlers[6]->setParent(objects::SUS_BOARD_ASS);
|
||||||
susHandlers[6]->setCustomFdir(fdir);
|
susHandlers[6]->setCustomFdir(fdir);
|
||||||
|
|
||||||
spiCookie = new SpiCookie(addresses::SUS_7, gpioIds::CS_SUS_7, spiDev, SUS::MAX_CMD_SIZE,
|
spiCookie = new SpiCookie(addresses::SUS_7, gpioIds::CS_SUS_7, SUS::MAX_CMD_SIZE,
|
||||||
spi::SUS_MAX_1227_MODE, spi::SUS_MAX1227_SPI_FREQ);
|
spi::SUS_MAX_1227_MODE, spi::SUS_MAX1227_SPI_FREQ);
|
||||||
susHandlers[7] =
|
susHandlers[7] =
|
||||||
new SusHandler(objects::SUS_7_R_LOC_XBYBZM_PT_XB, 7, objects::SPI_COM_IF, spiCookie);
|
new SusHandler(objects::SUS_7_R_LOC_XBYBZM_PT_XB, 7, objects::SPI_MAIN_COM_IF, spiCookie);
|
||||||
fdir = new SusFdir(objects::SUS_7_R_LOC_XBYBZM_PT_XB);
|
fdir = new SusFdir(objects::SUS_7_R_LOC_XBYBZM_PT_XB);
|
||||||
susHandlers[7]->setParent(objects::SUS_BOARD_ASS);
|
susHandlers[7]->setParent(objects::SUS_BOARD_ASS);
|
||||||
susHandlers[7]->setCustomFdir(fdir);
|
susHandlers[7]->setCustomFdir(fdir);
|
||||||
|
|
||||||
spiCookie = new SpiCookie(addresses::SUS_8, gpioIds::CS_SUS_8, spiDev, SUS::MAX_CMD_SIZE,
|
spiCookie = new SpiCookie(addresses::SUS_8, gpioIds::CS_SUS_8, SUS::MAX_CMD_SIZE,
|
||||||
spi::SUS_MAX_1227_MODE, spi::SUS_MAX1227_SPI_FREQ);
|
spi::SUS_MAX_1227_MODE, spi::SUS_MAX1227_SPI_FREQ);
|
||||||
susHandlers[8] =
|
susHandlers[8] =
|
||||||
new SusHandler(objects::SUS_8_R_LOC_XBYBZB_PT_YB, 8, objects::SPI_COM_IF, spiCookie);
|
new SusHandler(objects::SUS_8_R_LOC_XBYBZB_PT_YB, 8, objects::SPI_MAIN_COM_IF, spiCookie);
|
||||||
fdir = new SusFdir(objects::SUS_8_R_LOC_XBYBZB_PT_YB);
|
fdir = new SusFdir(objects::SUS_8_R_LOC_XBYBZB_PT_YB);
|
||||||
susHandlers[8]->setParent(objects::SUS_BOARD_ASS);
|
susHandlers[8]->setParent(objects::SUS_BOARD_ASS);
|
||||||
susHandlers[8]->setCustomFdir(fdir);
|
susHandlers[8]->setCustomFdir(fdir);
|
||||||
|
|
||||||
spiCookie = new SpiCookie(addresses::SUS_9, gpioIds::CS_SUS_9, spiDev, SUS::MAX_CMD_SIZE,
|
spiCookie = new SpiCookie(addresses::SUS_9, gpioIds::CS_SUS_9, SUS::MAX_CMD_SIZE,
|
||||||
spi::SUS_MAX_1227_MODE, spi::SUS_MAX1227_SPI_FREQ);
|
spi::SUS_MAX_1227_MODE, spi::SUS_MAX1227_SPI_FREQ);
|
||||||
susHandlers[9] =
|
susHandlers[9] =
|
||||||
new SusHandler(objects::SUS_9_R_LOC_XBYBZB_PT_YF, 9, objects::SPI_COM_IF, spiCookie);
|
new SusHandler(objects::SUS_9_R_LOC_XBYBZB_PT_YF, 9, objects::SPI_MAIN_COM_IF, spiCookie);
|
||||||
fdir = new SusFdir(objects::SUS_9_R_LOC_XBYBZB_PT_YF);
|
fdir = new SusFdir(objects::SUS_9_R_LOC_XBYBZB_PT_YF);
|
||||||
susHandlers[9]->setParent(objects::SUS_BOARD_ASS);
|
susHandlers[9]->setParent(objects::SUS_BOARD_ASS);
|
||||||
susHandlers[9]->setCustomFdir(fdir);
|
susHandlers[9]->setCustomFdir(fdir);
|
||||||
|
|
||||||
spiCookie = new SpiCookie(addresses::SUS_10, gpioIds::CS_SUS_10, spiDev, SUS::MAX_CMD_SIZE,
|
spiCookie = new SpiCookie(addresses::SUS_10, gpioIds::CS_SUS_10, SUS::MAX_CMD_SIZE,
|
||||||
spi::SUS_MAX_1227_MODE, spi::SUS_MAX1227_SPI_FREQ);
|
spi::SUS_MAX_1227_MODE, spi::SUS_MAX1227_SPI_FREQ);
|
||||||
susHandlers[10] =
|
susHandlers[10] =
|
||||||
new SusHandler(objects::SUS_10_N_LOC_XMYBZF_PT_ZF, 10, objects::SPI_COM_IF, spiCookie);
|
new SusHandler(objects::SUS_10_N_LOC_XMYBZF_PT_ZF, 10, objects::SPI_MAIN_COM_IF, spiCookie);
|
||||||
fdir = new SusFdir(objects::SUS_10_N_LOC_XMYBZF_PT_ZF);
|
fdir = new SusFdir(objects::SUS_10_N_LOC_XMYBZF_PT_ZF);
|
||||||
susHandlers[10]->setParent(objects::SUS_BOARD_ASS);
|
susHandlers[10]->setParent(objects::SUS_BOARD_ASS);
|
||||||
susHandlers[10]->setCustomFdir(fdir);
|
susHandlers[10]->setCustomFdir(fdir);
|
||||||
|
|
||||||
spiCookie = new SpiCookie(addresses::SUS_11, gpioIds::CS_SUS_11, spiDev, SUS::MAX_CMD_SIZE,
|
spiCookie = new SpiCookie(addresses::SUS_11, gpioIds::CS_SUS_11, SUS::MAX_CMD_SIZE,
|
||||||
spi::SUS_MAX_1227_MODE, spi::SUS_MAX1227_SPI_FREQ);
|
spi::SUS_MAX_1227_MODE, spi::SUS_MAX1227_SPI_FREQ);
|
||||||
susHandlers[11] =
|
susHandlers[11] =
|
||||||
new SusHandler(objects::SUS_11_R_LOC_XBYMZB_PT_ZB, 11, objects::SPI_COM_IF, spiCookie);
|
new SusHandler(objects::SUS_11_R_LOC_XBYMZB_PT_ZB, 11, objects::SPI_MAIN_COM_IF, spiCookie);
|
||||||
fdir = new SusFdir(objects::SUS_11_R_LOC_XBYMZB_PT_ZB);
|
fdir = new SusFdir(objects::SUS_11_R_LOC_XBYMZB_PT_ZB);
|
||||||
susHandlers[11]->setParent(objects::SUS_BOARD_ASS);
|
susHandlers[11]->setParent(objects::SUS_BOARD_ASS);
|
||||||
susHandlers[11]->setCustomFdir(fdir);
|
susHandlers[11]->setCustomFdir(fdir);
|
||||||
@ -243,7 +242,7 @@ void ObjectFactory::createRtdComponents(std::string spiDev, GpioIF* gpioComIF,
|
|||||||
&gpioCallbacks::spiCsDecoderCallback, gpioComIF);
|
&gpioCallbacks::spiCsDecoderCallback, gpioComIF);
|
||||||
rtdGpioCookie->addGpio(gpioIds::RTD_IC_18, gpioRtdIc15);
|
rtdGpioCookie->addGpio(gpioIds::RTD_IC_18, gpioRtdIc15);
|
||||||
|
|
||||||
gpioComIF->addGpios(rtdGpioCookie);
|
gpioChecker(gpioComIF->addGpios(rtdGpioCookie), "RTDs");
|
||||||
|
|
||||||
#if OBSW_ADD_RTD_DEVICES == 1
|
#if OBSW_ADD_RTD_DEVICES == 1
|
||||||
static constexpr uint8_t NUMBER_RTDS = 16;
|
static constexpr uint8_t NUMBER_RTDS = 16;
|
||||||
@ -286,9 +285,9 @@ void ObjectFactory::createRtdComponents(std::string spiDev, GpioIF* gpioComIF,
|
|||||||
RtdFdir* rtdFdir = nullptr;
|
RtdFdir* rtdFdir = nullptr;
|
||||||
for (uint8_t idx = 0; idx < NUMBER_RTDS; idx++) {
|
for (uint8_t idx = 0; idx < NUMBER_RTDS; idx++) {
|
||||||
rtdCookies[idx] =
|
rtdCookies[idx] =
|
||||||
new SpiCookie(cookieArgs[idx].first, cookieArgs[idx].second, spiDev,
|
new SpiCookie(cookieArgs[idx].first, cookieArgs[idx].second,
|
||||||
Max31865Definitions::MAX_REPLY_SIZE, spi::RTD_MODE, spi::RTD_SPEED);
|
Max31865Definitions::MAX_REPLY_SIZE, spi::RTD_MODE, spi::RTD_SPEED);
|
||||||
rtds[idx] = new Max31865PT1000Handler(rtdIds[idx], objects::SPI_COM_IF, rtdCookies[idx]);
|
rtds[idx] = new Max31865PT1000Handler(rtdIds[idx], objects::SPI_MAIN_COM_IF, rtdCookies[idx]);
|
||||||
rtds[idx]->setParent(objects::TCS_BOARD_ASS);
|
rtds[idx]->setParent(objects::TCS_BOARD_ASS);
|
||||||
rtdFdir = new RtdFdir(rtdIds[idx]);
|
rtdFdir = new RtdFdir(rtdIds[idx]);
|
||||||
rtds[idx]->setCustomFdir(rtdFdir);
|
rtds[idx]->setCustomFdir(rtdFdir);
|
||||||
@ -313,3 +312,9 @@ void ObjectFactory::createRtdComponents(std::string spiDev, GpioIF* gpioComIF,
|
|||||||
static_cast<void>(tcsBoardAss);
|
static_cast<void>(tcsBoardAss);
|
||||||
#endif // OBSW_ADD_RTD_DEVICES == 1
|
#endif // OBSW_ADD_RTD_DEVICES == 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ObjectFactory::gpioChecker(ReturnValue_t result, std::string output) {
|
||||||
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
|
sif::error << "ObjectFactory: Adding GPIOs failed for " << output << std::endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include <fsfw/returnvalues/HasReturnvaluesIF.h>
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
class GpioIF;
|
class GpioIF;
|
||||||
@ -12,4 +14,6 @@ void createSunSensorComponents(GpioIF* gpioComIF, SpiComIF* spiComIF, PowerSwitc
|
|||||||
std::string spiDev);
|
std::string spiDev);
|
||||||
void createRtdComponents(std::string spiDev, GpioIF* gpioComIF, PowerSwitchIF* pwrSwitcher);
|
void createRtdComponents(std::string spiDev, GpioIF* gpioComIF, PowerSwitchIF* pwrSwitcher);
|
||||||
|
|
||||||
|
void gpioChecker(ReturnValue_t result, std::string output);
|
||||||
|
|
||||||
} // namespace ObjectFactory
|
} // namespace ObjectFactory
|
||||||
|
@ -29,6 +29,8 @@ static const DeviceCommandId_t TC_MODE_REPLAY = 16;
|
|||||||
static const DeviceCommandId_t TC_CAM_CMD_SEND = 17;
|
static const DeviceCommandId_t TC_CAM_CMD_SEND = 17;
|
||||||
static const DeviceCommandId_t TC_MODE_IDLE = 18;
|
static const DeviceCommandId_t TC_MODE_IDLE = 18;
|
||||||
static const DeviceCommandId_t TM_CAM_CMD_RPT = 19;
|
static const DeviceCommandId_t TM_CAM_CMD_RPT = 19;
|
||||||
|
static const DeviceCommandId_t SET_UART_TX_TRISTATE = 20;
|
||||||
|
static const DeviceCommandId_t RELEASE_UART_TX = 21;
|
||||||
|
|
||||||
// Will reset the sequence count of the OBSW
|
// Will reset the sequence count of the OBSW
|
||||||
static const DeviceCommandId_t OBSW_RESET_SEQ_COUNT = 50;
|
static const DeviceCommandId_t OBSW_RESET_SEQ_COUNT = 50;
|
||||||
@ -576,6 +578,9 @@ class TcReplayWriteSeq : public TcBase {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Helps to extract the fields of the flash write command from the PUS packet.
|
||||||
|
*/
|
||||||
class FlashWritePusCmd : public MPSoCReturnValuesIF {
|
class FlashWritePusCmd : public MPSoCReturnValuesIF {
|
||||||
public:
|
public:
|
||||||
FlashWritePusCmd(){};
|
FlashWritePusCmd(){};
|
||||||
|
File diff suppressed because it is too large
Load Diff
61
linux/devices/devicedefinitions/SupvReturnValuesIF.h
Normal file
61
linux/devices/devicedefinitions/SupvReturnValuesIF.h
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
#ifndef SUPV_RETURN_VALUES_IF_H_
|
||||||
|
#define SUPV_RETURN_VALUES_IF_H_
|
||||||
|
|
||||||
|
#include "fsfw/returnvalues/HasReturnvaluesIF.h"
|
||||||
|
|
||||||
|
class SupvReturnValuesIF {
|
||||||
|
public:
|
||||||
|
static const uint8_t INTERFACE_ID = CLASS_ID::SUPV_RETURN_VALUES_IF;
|
||||||
|
|
||||||
|
//! [EXPORT] : [COMMENT] Space Packet received from PLOC supervisor has invalid CRC
|
||||||
|
static const ReturnValue_t CRC_FAILURE = MAKE_RETURN_CODE(0xA0);
|
||||||
|
//! [EXPORT] : [COMMENT] Received ACK failure reply from PLOC supervisor
|
||||||
|
static const ReturnValue_t RECEIVED_ACK_FAILURE = MAKE_RETURN_CODE(0xA1);
|
||||||
|
//! [EXPORT] : [COMMENT] Received execution failure reply from PLOC supervisor
|
||||||
|
static const ReturnValue_t RECEIVED_EXE_FAILURE = MAKE_RETURN_CODE(0xA2);
|
||||||
|
//! [EXPORT] : [COMMENT] Received space packet with invalid APID from PLOC supervisor
|
||||||
|
static const ReturnValue_t INVALID_APID = MAKE_RETURN_CODE(0xA3);
|
||||||
|
//! [EXPORT] : [COMMENT] Failed to read current system time
|
||||||
|
static const ReturnValue_t GET_TIME_FAILURE = MAKE_RETURN_CODE(0xA4);
|
||||||
|
//! [EXPORT] : [COMMENT] Received command with invalid watchdog parameter. Valid watchdogs are 0
|
||||||
|
//! for PS, 1 for PL and 2 for INT
|
||||||
|
static const ReturnValue_t INVALID_WATCHDOG = MAKE_RETURN_CODE(0xA5);
|
||||||
|
//! [EXPORT] : [COMMENT] Received watchdog timeout config command with invalid timeout. Valid
|
||||||
|
//! timeouts must be in the range between 1000 and 360000 ms.
|
||||||
|
static const ReturnValue_t INVALID_WATCHDOG_TIMEOUT = MAKE_RETURN_CODE(0xA6);
|
||||||
|
//! [EXPORT] : [COMMENT] Received latchup config command with invalid latchup ID
|
||||||
|
static const ReturnValue_t INVALID_LATCHUP_ID = MAKE_RETURN_CODE(0xA7);
|
||||||
|
//! [EXPORT] : [COMMENT] Received set adc sweep period command with invalid sweep period. Must be
|
||||||
|
//! larger than 21.
|
||||||
|
static const ReturnValue_t SWEEP_PERIOD_TOO_SMALL = MAKE_RETURN_CODE(0xA8);
|
||||||
|
//! [EXPORT] : [COMMENT] Receive auto EM test command with invalid test param. Valid params are 1
|
||||||
|
//! and 2.
|
||||||
|
static const ReturnValue_t INVALID_TEST_PARAM = MAKE_RETURN_CODE(0xA9);
|
||||||
|
//! [EXPORT] : [COMMENT] Returned when scanning for MRAM dump packets failed.
|
||||||
|
static const ReturnValue_t MRAM_PACKET_PARSING_FAILURE = MAKE_RETURN_CODE(0xAA);
|
||||||
|
//! [EXPORT] : [COMMENT] Returned when the start and stop addresses of the MRAM dump or MRAM wipe
|
||||||
|
//! commands are invalid (e.g. start address bigger than stop address)
|
||||||
|
static const ReturnValue_t INVALID_MRAM_ADDRESSES = MAKE_RETURN_CODE(0xAB);
|
||||||
|
//! [EXPORT] : [COMMENT] Expect reception of an MRAM dump packet but received space packet with
|
||||||
|
//! other apid.
|
||||||
|
static const ReturnValue_t NO_MRAM_PACKET = MAKE_RETURN_CODE(0xAC);
|
||||||
|
//! [EXPORT] : [COMMENT] Path to PLOC directory on SD card does not exist
|
||||||
|
static const ReturnValue_t PATH_DOES_NOT_EXIST = MAKE_RETURN_CODE(0xAD);
|
||||||
|
//! [EXPORT] : [COMMENT] MRAM dump file does not exists. The file should actually already have
|
||||||
|
//! been created with the reception of the first dump packet.
|
||||||
|
static const ReturnValue_t MRAM_FILE_NOT_EXISTS = MAKE_RETURN_CODE(0xAE);
|
||||||
|
//! [EXPORT] : [COMMENT] Received action command has invalid length
|
||||||
|
static const ReturnValue_t INVALID_LENGTH = MAKE_RETURN_CODE(0xAF);
|
||||||
|
//! [EXPORT] : [COMMENT] Filename too long
|
||||||
|
static const ReturnValue_t FILENAME_TOO_LONG = MAKE_RETURN_CODE(0xB0);
|
||||||
|
//! [EXPORT] : [COMMENT] Received update status report with invalid packet length field
|
||||||
|
static const ReturnValue_t UPDATE_STATUS_REPORT_INVALID_LENGTH = MAKE_RETURN_CODE(0xB1);
|
||||||
|
//! [EXPORT] : [COMMENT] Update status report does not contain expected CRC. There might be a bit
|
||||||
|
//! flip in the update memory region.
|
||||||
|
static const ReturnValue_t UPDATE_CRC_FAILURE = MAKE_RETURN_CODE(0xB2);
|
||||||
|
//! [EXPORT] : [COMMENT] Supervisor helper task ist currently executing a command (wait until
|
||||||
|
//! helper tas has finished or interrupt by sending the terminate command)
|
||||||
|
static const ReturnValue_t SUPV_HELPER_EXECUTING = MAKE_RETURN_CODE(0xB3);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* SUPV_RETURN_VALUES_IF_H_ */
|
@ -1,7 +1,7 @@
|
|||||||
target_sources(${OBSW_NAME} PRIVATE
|
target_sources(${OBSW_NAME} PRIVATE
|
||||||
PlocSupervisorHandler.cpp
|
PlocSupervisorHandler.cpp
|
||||||
PlocUpdater.cpp
|
|
||||||
PlocMemoryDumper.cpp
|
PlocMemoryDumper.cpp
|
||||||
PlocMPSoCHandler.cpp
|
PlocMPSoCHandler.cpp
|
||||||
PlocMPSoCHelper.cpp
|
PlocMPSoCHelper.cpp
|
||||||
|
PlocSupvHelper.cpp
|
||||||
)
|
)
|
||||||
|
@ -99,6 +99,20 @@ void PlocMPSoCHandler::performOperationHook() {
|
|||||||
ReturnValue_t PlocMPSoCHandler::executeAction(ActionId_t actionId, MessageQueueId_t commandedBy,
|
ReturnValue_t PlocMPSoCHandler::executeAction(ActionId_t actionId, MessageQueueId_t commandedBy,
|
||||||
const uint8_t* data, size_t size) {
|
const uint8_t* data, size_t size) {
|
||||||
ReturnValue_t result = RETURN_OK;
|
ReturnValue_t result = RETURN_OK;
|
||||||
|
switch (actionId) {
|
||||||
|
case mpsoc::SET_UART_TX_TRISTATE: {
|
||||||
|
uartIsolatorSwitch.pullLow();
|
||||||
|
return EXECUTION_FINISHED;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case mpsoc::RELEASE_UART_TX: {
|
||||||
|
uartIsolatorSwitch.pullHigh();
|
||||||
|
return EXECUTION_FINISHED;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (plocMPSoCHelperExecuting) {
|
if (plocMPSoCHelperExecuting) {
|
||||||
return MPSoCReturnValuesIF::MPSOC_HELPER_EXECUTING;
|
return MPSoCReturnValuesIF::MPSOC_HELPER_EXECUTING;
|
||||||
@ -134,6 +148,7 @@ ReturnValue_t PlocMPSoCHandler::executeAction(ActionId_t actionId, MessageQueueI
|
|||||||
|
|
||||||
void PlocMPSoCHandler::doStartUp() {
|
void PlocMPSoCHandler::doStartUp() {
|
||||||
#ifdef XIPHOS_Q7S
|
#ifdef XIPHOS_Q7S
|
||||||
|
#if not OBSW_MPSOC_JTAG_BOOT == 1
|
||||||
switch (powerState) {
|
switch (powerState) {
|
||||||
case PowerState::OFF:
|
case PowerState::OFF:
|
||||||
commandActionHelper.commandAction(supervisorHandler, supv::START_MPSOC);
|
commandActionHelper.commandAction(supervisorHandler, supv::START_MPSOC);
|
||||||
@ -147,11 +162,19 @@ void PlocMPSoCHandler::doStartUp() {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
|
powerState = PowerState::ON;
|
||||||
|
setMode(_MODE_TO_ON);
|
||||||
|
uartIsolatorSwitch.pullHigh();
|
||||||
|
#endif /* not MSPOC_JTAG_BOOT == 1 */
|
||||||
|
#else
|
||||||
|
powerState = PowerState::ON;
|
||||||
setMode(_MODE_TO_ON);
|
setMode(_MODE_TO_ON);
|
||||||
#endif /* XIPHOS_Q7S */
|
#endif /* XIPHOS_Q7S */
|
||||||
}
|
}
|
||||||
|
|
||||||
void PlocMPSoCHandler::doShutDown() {
|
void PlocMPSoCHandler::doShutDown() {
|
||||||
|
#ifdef XIPHOS_Q7S
|
||||||
|
#if not OBSW_MPSOC_JTAG_BOOT == 1
|
||||||
switch (powerState) {
|
switch (powerState) {
|
||||||
case PowerState::ON:
|
case PowerState::ON:
|
||||||
uartIsolatorSwitch.pullLow();
|
uartIsolatorSwitch.pullLow();
|
||||||
@ -164,6 +187,12 @@ void PlocMPSoCHandler::doShutDown() {
|
|||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
uartIsolatorSwitch.pullLow();
|
||||||
|
setMode(_MODE_POWER_DOWN);
|
||||||
|
powerState = PowerState::OFF;
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
ReturnValue_t PlocMPSoCHandler::buildNormalDeviceCommand(DeviceCommandId_t* id) {
|
ReturnValue_t PlocMPSoCHandler::buildNormalDeviceCommand(DeviceCommandId_t* id) {
|
||||||
@ -252,6 +281,8 @@ void PlocMPSoCHandler::fillCommandAndReplyMap() {
|
|||||||
this->insertInCommandMap(mpsoc::TC_MODE_REPLAY);
|
this->insertInCommandMap(mpsoc::TC_MODE_REPLAY);
|
||||||
this->insertInCommandMap(mpsoc::TC_MODE_IDLE);
|
this->insertInCommandMap(mpsoc::TC_MODE_IDLE);
|
||||||
this->insertInCommandMap(mpsoc::TC_CAM_CMD_SEND);
|
this->insertInCommandMap(mpsoc::TC_CAM_CMD_SEND);
|
||||||
|
this->insertInCommandMap(mpsoc::RELEASE_UART_TX);
|
||||||
|
this->insertInCommandMap(mpsoc::SET_UART_TX_TRISTATE);
|
||||||
this->insertInReplyMap(mpsoc::ACK_REPORT, 3, nullptr, mpsoc::SIZE_ACK_REPORT);
|
this->insertInReplyMap(mpsoc::ACK_REPORT, 3, nullptr, mpsoc::SIZE_ACK_REPORT);
|
||||||
this->insertInReplyMap(mpsoc::EXE_REPORT, 3, nullptr, mpsoc::SIZE_EXE_REPORT);
|
this->insertInReplyMap(mpsoc::EXE_REPORT, 3, nullptr, mpsoc::SIZE_EXE_REPORT);
|
||||||
this->insertInReplyMap(mpsoc::TM_MEMORY_READ_REPORT, 2, nullptr, mpsoc::SIZE_TM_MEM_READ_REPORT);
|
this->insertInReplyMap(mpsoc::TM_MEMORY_READ_REPORT, 2, nullptr, mpsoc::SIZE_TM_MEM_READ_REPORT);
|
||||||
@ -302,7 +333,7 @@ ReturnValue_t PlocMPSoCHandler::scanForReply(const uint8_t* start, size_t remain
|
|||||||
sequenceCount++;
|
sequenceCount++;
|
||||||
uint16_t recvSeqCnt = (*(start + 2) << 8 | *(start + 3)) & PACKET_SEQUENCE_COUNT_MASK;
|
uint16_t recvSeqCnt = (*(start + 2) << 8 | *(start + 3)) & PACKET_SEQUENCE_COUNT_MASK;
|
||||||
if (recvSeqCnt != sequenceCount) {
|
if (recvSeqCnt != sequenceCount) {
|
||||||
triggerEvent(MPSOC_HANDLER_SEQ_CNT_MISMATCH, sequenceCount, recvSeqCnt);
|
triggerEvent(MPSOC_HANDLER_SEQUENCE_COUNT_MISMATCH, sequenceCount, recvSeqCnt);
|
||||||
sequenceCount = recvSeqCnt;
|
sequenceCount = recvSeqCnt;
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
@ -656,10 +687,12 @@ ReturnValue_t PlocMPSoCHandler::handleCamCmdRpt(const uint8_t* data) {
|
|||||||
std::string camCmdRptMsg(
|
std::string camCmdRptMsg(
|
||||||
reinterpret_cast<const char*>(dataFieldPtr),
|
reinterpret_cast<const char*>(dataFieldPtr),
|
||||||
tmCamCmdRpt.rememberSpacePacketSize - mpsoc::SPACE_PACKET_HEADER_SIZE - 3);
|
tmCamCmdRpt.rememberSpacePacketSize - mpsoc::SPACE_PACKET_HEADER_SIZE - 3);
|
||||||
|
#if OBSW_DEBUG_PLOC_MPSOC == 1
|
||||||
uint8_t ackValue = *(packet.getPacketData() + packet.getPacketDataLength() - 2);
|
uint8_t ackValue = *(packet.getPacketData() + packet.getPacketDataLength() - 2);
|
||||||
sif::info << "CamCmdRpt message: " << camCmdRptMsg << std::endl;
|
sif::info << "PlocMPSoCHandler: CamCmdRpt message: " << camCmdRptMsg << std::endl;
|
||||||
sif::info << "CamCmdRpt Ack value: 0x" << std::hex << static_cast<unsigned int>(ackValue)
|
sif::info << "PlocMPSoCHandler: CamCmdRpt Ack value: 0x" << std::hex
|
||||||
<< std::endl;
|
<< static_cast<unsigned int>(ackValue) << std::endl;
|
||||||
|
#endif /* OBSW_DEBUG_PLOC_MPSOC == 1 */
|
||||||
handleDeviceTM(packet.getPacketData(), packet.getPacketDataLength() - 1, mpsoc::TM_CAM_CMD_RPT);
|
handleDeviceTM(packet.getPacketData(), packet.getPacketDataLength() - 1, mpsoc::TM_CAM_CMD_RPT);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@ -799,6 +832,14 @@ size_t PlocMPSoCHandler::getNextReplyLength(DeviceCommandId_t commandId) {
|
|||||||
return replyLen;
|
return replyLen;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ReturnValue_t PlocMPSoCHandler::doSendReadHook() {
|
||||||
|
// Prevent DHB from polling UART during commands executed by the mpsoc helper task
|
||||||
|
if (plocMPSoCHelperExecuting) {
|
||||||
|
return RETURN_FAILED;
|
||||||
|
}
|
||||||
|
return RETURN_OK;
|
||||||
|
}
|
||||||
|
|
||||||
MessageQueueIF* PlocMPSoCHandler::getCommandQueuePtr() { return commandActionHelperQueue; }
|
MessageQueueIF* PlocMPSoCHandler::getCommandQueuePtr() { return commandActionHelperQueue; }
|
||||||
|
|
||||||
void PlocMPSoCHandler::stepSuccessfulReceived(ActionId_t actionId, uint8_t step) { return; }
|
void PlocMPSoCHandler::stepSuccessfulReceived(ActionId_t actionId, uint8_t step) { return; }
|
||||||
@ -806,16 +847,19 @@ void PlocMPSoCHandler::stepSuccessfulReceived(ActionId_t actionId, uint8_t step)
|
|||||||
void PlocMPSoCHandler::stepFailedReceived(ActionId_t actionId, uint8_t step,
|
void PlocMPSoCHandler::stepFailedReceived(ActionId_t actionId, uint8_t step,
|
||||||
ReturnValue_t returnCode) {
|
ReturnValue_t returnCode) {
|
||||||
switch (actionId) {
|
switch (actionId) {
|
||||||
case supv::START_MPSOC:
|
case supv::START_MPSOC: {
|
||||||
sif::warning << "PlocMPSoCHandler::stepFailedReceived: Failed to start MPSoC" << std::endl;
|
sif::warning << "PlocMPSoCHandler::stepFailedReceived: Failed to start MPSoC" << std::endl;
|
||||||
|
// This usually happens when the supervisor handler is in off mode
|
||||||
powerState = PowerState::OFF;
|
powerState = PowerState::OFF;
|
||||||
|
setMode(MODE_OFF);
|
||||||
break;
|
break;
|
||||||
case supv::SHUTDOWN_MPSOC:
|
}
|
||||||
|
case supv::SHUTDOWN_MPSOC: {
|
||||||
triggerEvent(MPSOC_SHUTDOWN_FAILED);
|
triggerEvent(MPSOC_SHUTDOWN_FAILED);
|
||||||
sif::warning << "PlocMPSoCHandler::stepFailedReceived: Failed to shutdown MPSoC" << std::endl;
|
sif::warning << "PlocMPSoCHandler::stepFailedReceived: Failed to shutdown MPSoC" << std::endl;
|
||||||
// TODO: Setting state to on or off here?
|
powerState = PowerState::OFF;
|
||||||
powerState = PowerState::ON;
|
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
sif::debug << "PlocMPSoCHandler::stepFailedReceived: Received unexpected action reply"
|
sif::debug << "PlocMPSoCHandler::stepFailedReceived: Received unexpected action reply"
|
||||||
<< std::endl;
|
<< std::endl;
|
||||||
@ -879,10 +923,11 @@ void PlocMPSoCHandler::handleDeviceTM(const uint8_t* data, size_t dataSize,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void PlocMPSoCHandler::disableAllReplies() {
|
void PlocMPSoCHandler::disableAllReplies() {
|
||||||
|
using namespace mpsoc;
|
||||||
DeviceReplyMap::iterator iter;
|
DeviceReplyMap::iterator iter;
|
||||||
|
|
||||||
/* Disable ack reply */
|
/* Disable ack reply */
|
||||||
iter = deviceReplyMap.find(mpsoc::ACK_REPORT);
|
iter = deviceReplyMap.find(ACK_REPORT);
|
||||||
DeviceReplyInfo* info = &(iter->second);
|
DeviceReplyInfo* info = &(iter->second);
|
||||||
info->delayCycles = 0;
|
info->delayCycles = 0;
|
||||||
info->command = deviceCommandMap.end();
|
info->command = deviceCommandMap.end();
|
||||||
@ -891,17 +936,26 @@ void PlocMPSoCHandler::disableAllReplies() {
|
|||||||
|
|
||||||
/* If the command expects a telemetry packet the appropriate tm reply will be disabled here */
|
/* If the command expects a telemetry packet the appropriate tm reply will be disabled here */
|
||||||
switch (commandId) {
|
switch (commandId) {
|
||||||
case mpsoc::TC_MEM_WRITE:
|
case TC_MEM_WRITE:
|
||||||
break;
|
break;
|
||||||
case mpsoc::TC_MEM_READ: {
|
case TC_MEM_READ: {
|
||||||
iter = deviceReplyMap.find(mpsoc::TM_MEMORY_READ_REPORT);
|
iter = deviceReplyMap.find(TM_MEMORY_READ_REPORT);
|
||||||
info = &(iter->second);
|
info = &(iter->second);
|
||||||
info->delayCycles = 0;
|
info->delayCycles = 0;
|
||||||
|
info->active = false;
|
||||||
|
info->command = deviceCommandMap.end();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case TC_CAM_CMD_SEND: {
|
||||||
|
iter = deviceReplyMap.find(TM_CAM_CMD_RPT);
|
||||||
|
info = &(iter->second);
|
||||||
|
info->delayCycles = 0;
|
||||||
|
info->active = false;
|
||||||
info->command = deviceCommandMap.end();
|
info->command = deviceCommandMap.end();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default: {
|
default: {
|
||||||
sif::debug << "PlocMPSoCHandler::disableAllReplies: Unknown command id" << commandId
|
sif::debug << "PlocMPSoCHandler::disableAllReplies: Unknown command id: " << commandId
|
||||||
<< std::endl;
|
<< std::endl;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -959,15 +1013,19 @@ void PlocMPSoCHandler::handleActionCommandFailure(ActionId_t actionId) {
|
|||||||
}
|
}
|
||||||
switch (powerState) {
|
switch (powerState) {
|
||||||
case PowerState::BOOTING: {
|
case PowerState::BOOTING: {
|
||||||
sif::warning << "PlocMPSoCHandler::handleActionCommandFailure: Failed to boot MPSoC"
|
sif::info << "PlocMPSoCHandler::handleActionCommandFailure: MPSoC boot command failed"
|
||||||
<< std::endl;
|
<< std::endl;
|
||||||
powerState = PowerState::OFF;
|
// This is commonly the case when the MPSoC is already operational. Thus the power state is
|
||||||
|
// set to on here
|
||||||
|
powerState = PowerState::ON;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case PowerState::SHUTDOWN: {
|
case PowerState::SHUTDOWN: {
|
||||||
|
// FDIR will intercept event and switch PLOC power off
|
||||||
|
triggerEvent(MPSOC_SHUTDOWN_FAILED);
|
||||||
sif::warning << "PlocMPSoCHandler::handleActionCommandFailure: Failed to shutdown MPSoC"
|
sif::warning << "PlocMPSoCHandler::handleActionCommandFailure: Failed to shutdown MPSoC"
|
||||||
<< std::endl;
|
<< std::endl;
|
||||||
powerState = PowerState::ON;
|
powerState = PowerState::OFF;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
|
@ -14,6 +14,7 @@
|
|||||||
#include "fsfw_hal/linux/uart/UartComIF.h"
|
#include "fsfw_hal/linux/uart/UartComIF.h"
|
||||||
#include "linux/devices/devicedefinitions/MPSoCReturnValuesIF.h"
|
#include "linux/devices/devicedefinitions/MPSoCReturnValuesIF.h"
|
||||||
#include "linux/devices/devicedefinitions/PlocMPSoCDefinitions.h"
|
#include "linux/devices/devicedefinitions/PlocMPSoCDefinitions.h"
|
||||||
|
#include "linux/devices/devicedefinitions/PlocSupervisorDefinitions.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief This is the device handler for the MPSoC of the payload computer.
|
* @brief This is the device handler for the MPSoC of the payload computer.
|
||||||
@ -76,6 +77,7 @@ class PlocMPSoCHandler : public DeviceHandlerBase, public CommandsActionsIF {
|
|||||||
uint8_t expectedReplies = 1, bool useAlternateId = false,
|
uint8_t expectedReplies = 1, bool useAlternateId = false,
|
||||||
DeviceCommandId_t alternateReplyID = 0) override;
|
DeviceCommandId_t alternateReplyID = 0) override;
|
||||||
size_t getNextReplyLength(DeviceCommandId_t deviceCommand) override;
|
size_t getNextReplyLength(DeviceCommandId_t deviceCommand) override;
|
||||||
|
virtual ReturnValue_t doSendReadHook() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static const uint8_t SUBSYSTEM_ID = SUBSYSTEM_ID::PLOC_MPSOC_HANDLER;
|
static const uint8_t SUBSYSTEM_ID = SUBSYSTEM_ID::PLOC_MPSOC_HANDLER;
|
||||||
@ -94,7 +96,7 @@ class PlocMPSoCHandler : public DeviceHandlerBase, public CommandsActionsIF {
|
|||||||
static const Event MPSOC_HANDLER_CRC_FAILURE = MAKE_EVENT(4, severity::LOW);
|
static const Event MPSOC_HANDLER_CRC_FAILURE = MAKE_EVENT(4, severity::LOW);
|
||||||
//! [EXPORT] : [COMMENT] Packet sequence count in received space packet does not match expected
|
//! [EXPORT] : [COMMENT] Packet sequence count in received space packet does not match expected
|
||||||
//! count P1: Expected sequence count P2: Received sequence count
|
//! count P1: Expected sequence count P2: Received sequence count
|
||||||
static const Event MPSOC_HANDLER_SEQ_CNT_MISMATCH = MAKE_EVENT(5, severity::LOW);
|
static const Event MPSOC_HANDLER_SEQUENCE_COUNT_MISMATCH = MAKE_EVENT(5, severity::LOW);
|
||||||
//! [EXPORT] : [COMMENT] Supervisor fails to shutdown MPSoC. Requires to power off the PLOC and
|
//! [EXPORT] : [COMMENT] Supervisor fails to shutdown MPSoC. Requires to power off the PLOC and
|
||||||
//! thus also to shutdown the supervisor.
|
//! thus also to shutdown the supervisor.
|
||||||
static const Event MPSOC_SHUTDOWN_FAILED = MAKE_EVENT(6, severity::HIGH);
|
static const Event MPSOC_SHUTDOWN_FAILED = MAKE_EVENT(6, severity::HIGH);
|
||||||
|
@ -204,7 +204,7 @@ ReturnValue_t PlocMPSoCHelper::sendCommand(mpsoc::TcBase& tc) {
|
|||||||
result = uartComIF->sendMessage(comCookie, tc.getWholeData(), tc.getFullSize());
|
result = uartComIF->sendMessage(comCookie, tc.getWholeData(), tc.getFullSize());
|
||||||
if (result != RETURN_OK) {
|
if (result != RETURN_OK) {
|
||||||
sif::warning << "PlocMPSoCHelper::sendCommand: Failed to send command" << std::endl;
|
sif::warning << "PlocMPSoCHelper::sendCommand: Failed to send command" << std::endl;
|
||||||
triggerEvent(SENDING_COMMAND_FAILED, result, static_cast<uint32_t>(internalState));
|
triggerEvent(MPSOC_SENDING_COMMAND_FAILED, result, static_cast<uint32_t>(internalState));
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
@ -227,11 +227,11 @@ ReturnValue_t PlocMPSoCHelper::handleAck() {
|
|||||||
|
|
||||||
void PlocMPSoCHelper::handleAckApidFailure(uint16_t apid) {
|
void PlocMPSoCHelper::handleAckApidFailure(uint16_t apid) {
|
||||||
if (apid == mpsoc::apid::ACK_FAILURE) {
|
if (apid == mpsoc::apid::ACK_FAILURE) {
|
||||||
triggerEvent(ACK_FAILURE_REPORT, static_cast<uint32_t>(internalState));
|
triggerEvent(MPSOC_ACK_FAILURE_REPORT, static_cast<uint32_t>(internalState));
|
||||||
sif::warning << "PlocMPSoCHelper::handleAckApidFailure: Received acknowledgement failure "
|
sif::warning << "PlocMPSoCHelper::handleAckApidFailure: Received acknowledgement failure "
|
||||||
<< "report" << std::endl;
|
<< "report" << std::endl;
|
||||||
} else {
|
} else {
|
||||||
triggerEvent(ACK_INVALID_APID, apid, static_cast<uint32_t>(internalState));
|
triggerEvent(MPSOC_ACK_INVALID_APID, apid, static_cast<uint32_t>(internalState));
|
||||||
sif::warning << "PlocMPSoCHelper::handleAckApidFailure: Expected acknowledgement report "
|
sif::warning << "PlocMPSoCHelper::handleAckApidFailure: Expected acknowledgement report "
|
||||||
<< "but received space packet with apid " << std::hex << apid << std::endl;
|
<< "but received space packet with apid " << std::hex << apid << std::endl;
|
||||||
}
|
}
|
||||||
@ -254,11 +254,11 @@ ReturnValue_t PlocMPSoCHelper::handleExe() {
|
|||||||
|
|
||||||
void PlocMPSoCHelper::handleExeApidFailure(uint16_t apid) {
|
void PlocMPSoCHelper::handleExeApidFailure(uint16_t apid) {
|
||||||
if (apid == mpsoc::apid::EXE_FAILURE) {
|
if (apid == mpsoc::apid::EXE_FAILURE) {
|
||||||
triggerEvent(EXE_FAILURE_REPORT, static_cast<uint32_t>(internalState));
|
triggerEvent(MPSOC_EXE_FAILURE_REPORT, static_cast<uint32_t>(internalState));
|
||||||
sif::warning << "PlocMPSoCHelper::handleExeApidFailure: Received execution failure "
|
sif::warning << "PlocMPSoCHelper::handleExeApidFailure: Received execution failure "
|
||||||
<< "report" << std::endl;
|
<< "report" << std::endl;
|
||||||
} else {
|
} else {
|
||||||
triggerEvent(EXE_INVALID_APID, apid, static_cast<uint32_t>(internalState));
|
triggerEvent(MPSOC_EXE_INVALID_APID, apid, static_cast<uint32_t>(internalState));
|
||||||
sif::warning << "PlocMPSoCHelper::handleExeApidFailure: Expected execution report "
|
sif::warning << "PlocMPSoCHelper::handleExeApidFailure: Expected execution report "
|
||||||
<< "but received space packet with apid " << std::hex << apid << std::endl;
|
<< "but received space packet with apid " << std::hex << apid << std::endl;
|
||||||
}
|
}
|
||||||
@ -281,7 +281,7 @@ ReturnValue_t PlocMPSoCHelper::handleTmReception(mpsoc::TmPacket* tmPacket, size
|
|||||||
}
|
}
|
||||||
if (remainingBytes != 0) {
|
if (remainingBytes != 0) {
|
||||||
sif::warning << "PlocMPSoCHelper::handleTmReception: Failed to receive reply" << std::endl;
|
sif::warning << "PlocMPSoCHelper::handleTmReception: Failed to receive reply" << std::endl;
|
||||||
triggerEvent(MISSING_EXE, remainingBytes, static_cast<uint32_t>(internalState));
|
triggerEvent(MPSOC_MISSING_EXE, remainingBytes, static_cast<uint32_t>(internalState));
|
||||||
return RETURN_FAILED;
|
return RETURN_FAILED;
|
||||||
}
|
}
|
||||||
result = tmPacket->checkCrc();
|
result = tmPacket->checkCrc();
|
||||||
|
@ -29,10 +29,10 @@ class PlocMPSoCHelper : public SystemObject, public ExecutableObjectIF, public H
|
|||||||
//! [EXPORT] : [COMMENT] Flash write successful
|
//! [EXPORT] : [COMMENT] Flash write successful
|
||||||
static const Event MPSOC_FLASH_WRITE_SUCCESSFUL = MAKE_EVENT(1, severity::LOW);
|
static const Event MPSOC_FLASH_WRITE_SUCCESSFUL = MAKE_EVENT(1, severity::LOW);
|
||||||
//! [EXPORT] : [COMMENT] Communication interface returned failure when trying to send the command
|
//! [EXPORT] : [COMMENT] Communication interface returned failure when trying to send the command
|
||||||
//! ot the PLOC
|
//! to the MPSoC
|
||||||
//! P1: Return value returned by the communication interface sendMessage function
|
//! P1: Return value returned by the communication interface sendMessage function
|
||||||
//! P2: Internal state of MPSoC helper
|
//! P2: Internal state of MPSoC helper
|
||||||
static const Event SENDING_COMMAND_FAILED = MAKE_EVENT(2, severity::LOW);
|
static const Event MPSOC_SENDING_COMMAND_FAILED = MAKE_EVENT(2, severity::LOW);
|
||||||
//! [EXPORT] : [COMMENT] Request receive message of communication interface failed
|
//! [EXPORT] : [COMMENT] Request receive message of communication interface failed
|
||||||
//! P1: Return value returned by the communication interface requestReceiveMessage function
|
//! P1: Return value returned by the communication interface requestReceiveMessage function
|
||||||
//! P2: Internal state of MPSoC helper
|
//! P2: Internal state of MPSoC helper
|
||||||
@ -41,28 +41,28 @@ class PlocMPSoCHelper : public SystemObject, public ExecutableObjectIF, public H
|
|||||||
//! P1: Return value returned by the communication interface readingReceivedMessage function
|
//! P1: Return value returned by the communication interface readingReceivedMessage function
|
||||||
//! P2: Internal state of MPSoC helper
|
//! P2: Internal state of MPSoC helper
|
||||||
static const Event MPSOC_HELPER_READING_REPLY_FAILED = MAKE_EVENT(4, severity::LOW);
|
static const Event MPSOC_HELPER_READING_REPLY_FAILED = MAKE_EVENT(4, severity::LOW);
|
||||||
//! [EXPORT] : [COMMENT] Did not receive acknowledgement report
|
//! [EXPORT] : [COMMENT] Did not receive acknowledgment report
|
||||||
//! P1: Number of bytes missing
|
//! P1: Number of bytes missing
|
||||||
//! P2: Internal state of MPSoC helper
|
//! P2: Internal state of MPSoC helper
|
||||||
static const Event MISSING_ACK = MAKE_EVENT(5, severity::LOW);
|
static const Event MPSOC_MISSING_ACK = MAKE_EVENT(5, severity::LOW);
|
||||||
//! [EXPORT] : [COMMENT] Did not receive execution report
|
//! [EXPORT] : [COMMENT] Did not receive execution report
|
||||||
//! P1: Number of bytes missing
|
//! P1: Number of bytes missing
|
||||||
//! P2: Internal state of MPSoC helper
|
//! P2: Internal state of MPSoC helper
|
||||||
static const Event MISSING_EXE = MAKE_EVENT(6, severity::LOW);
|
static const Event MPSOC_MISSING_EXE = MAKE_EVENT(6, severity::LOW);
|
||||||
//! [EXPORT] : [COMMENT] Received acknowledgement failure report
|
//! [EXPORT] : [COMMENT] Received acknowledgment failure report
|
||||||
//! P1: Internal state of MPSoC
|
//! P1: Internal state of MPSoC
|
||||||
static const Event ACK_FAILURE_REPORT = MAKE_EVENT(7, severity::LOW);
|
static const Event MPSOC_ACK_FAILURE_REPORT = MAKE_EVENT(7, severity::LOW);
|
||||||
//! [EXPORT] : [COMMENT] Received execution failure report
|
//! [EXPORT] : [COMMENT] Received execution failure report
|
||||||
//! P1: Internal state of MPSoC
|
//! P1: Internal state of MPSoC
|
||||||
static const Event EXE_FAILURE_REPORT = MAKE_EVENT(8, severity::LOW);
|
static const Event MPSOC_EXE_FAILURE_REPORT = MAKE_EVENT(8, severity::LOW);
|
||||||
//! [EXPORT] : [COMMENT] Expected acknowledgement report but received space packet with other apid
|
//! [EXPORT] : [COMMENT] Expected acknowledgment report but received space packet with other apid
|
||||||
//! P1: Apid of received space packet
|
//! P1: Apid of received space packet
|
||||||
//! P2: Internal state of MPSoC
|
//! P2: Internal state of MPSoC
|
||||||
static const Event ACK_INVALID_APID = MAKE_EVENT(9, severity::LOW);
|
static const Event MPSOC_ACK_INVALID_APID = MAKE_EVENT(9, severity::LOW);
|
||||||
//! [EXPORT] : [COMMENT] Expected execution report but received space packet with other apid
|
//! [EXPORT] : [COMMENT] Expected execution report but received space packet with other apid
|
||||||
//! P1: Apid of received space packet
|
//! P1: Apid of received space packet
|
||||||
//! P2: Internal state of MPSoC
|
//! P2: Internal state of MPSoC
|
||||||
static const Event EXE_INVALID_APID = MAKE_EVENT(10, severity::LOW);
|
static const Event MPSOC_EXE_INVALID_APID = MAKE_EVENT(10, severity::LOW);
|
||||||
//! [EXPORT] : [COMMENT] Received sequence count does not match expected sequence count
|
//! [EXPORT] : [COMMENT] Received sequence count does not match expected sequence count
|
||||||
//! P1: Expected sequence count
|
//! P1: Expected sequence count
|
||||||
//! P2: Received sequence count
|
//! P2: Received sequence count
|
||||||
|
@ -121,7 +121,10 @@ void PlocMemoryDumper::doStateMachine() {
|
|||||||
void PlocMemoryDumper::stepSuccessfulReceived(ActionId_t actionId, uint8_t step) {}
|
void PlocMemoryDumper::stepSuccessfulReceived(ActionId_t actionId, uint8_t step) {}
|
||||||
|
|
||||||
void PlocMemoryDumper::stepFailedReceived(ActionId_t actionId, uint8_t step,
|
void PlocMemoryDumper::stepFailedReceived(ActionId_t actionId, uint8_t step,
|
||||||
ReturnValue_t returnCode) {}
|
ReturnValue_t returnCode) {
|
||||||
|
triggerEvent(MRAM_DUMP_FAILED);
|
||||||
|
state = State::IDLE;
|
||||||
|
}
|
||||||
|
|
||||||
void PlocMemoryDumper::dataReceived(ActionId_t actionId, const uint8_t* data, uint32_t size) {}
|
void PlocMemoryDumper::dataReceived(ActionId_t actionId, const uint8_t* data, uint32_t size) {}
|
||||||
|
|
||||||
@ -149,10 +152,9 @@ void PlocMemoryDumper::completionFailedReceived(ActionId_t actionId, ReturnValue
|
|||||||
case (supv::FIRST_MRAM_DUMP):
|
case (supv::FIRST_MRAM_DUMP):
|
||||||
case (supv::CONSECUTIVE_MRAM_DUMP):
|
case (supv::CONSECUTIVE_MRAM_DUMP):
|
||||||
triggerEvent(MRAM_DUMP_FAILED, mram.lastStartAddress);
|
triggerEvent(MRAM_DUMP_FAILED, mram.lastStartAddress);
|
||||||
|
pendingCommand = NONE;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
sif::debug << "PlocMemoryDumper::completionFailedReceived: Invalid pending command "
|
|
||||||
<< std::endl;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
state = State::IDLE;
|
state = State::IDLE;
|
||||||
@ -168,12 +170,12 @@ void PlocMemoryDumper::commandNextMramDump(ActionId_t dumpCommand) {
|
|||||||
tempStartAddress = mram.startAddress;
|
tempStartAddress = mram.startAddress;
|
||||||
tempEndAddress = mram.startAddress + MAX_MRAM_DUMP_SIZE;
|
tempEndAddress = mram.startAddress + MAX_MRAM_DUMP_SIZE;
|
||||||
mram.startAddress += MAX_MRAM_DUMP_SIZE;
|
mram.startAddress += MAX_MRAM_DUMP_SIZE;
|
||||||
mram.lastStartAddress = tempStartAddress;
|
|
||||||
} else {
|
} else {
|
||||||
tempStartAddress = mram.startAddress;
|
tempStartAddress = mram.startAddress;
|
||||||
tempEndAddress = mram.endAddress;
|
tempEndAddress = mram.endAddress;
|
||||||
mram.startAddress = mram.endAddress;
|
mram.startAddress = mram.endAddress;
|
||||||
}
|
}
|
||||||
|
mram.lastStartAddress = tempStartAddress;
|
||||||
|
|
||||||
MemoryParams params(tempStartAddress, tempEndAddress);
|
MemoryParams params(tempStartAddress, tempEndAddress);
|
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -2,19 +2,22 @@
|
|||||||
#define MISSION_DEVICES_PLOCSUPERVISORHANDLER_H_
|
#define MISSION_DEVICES_PLOCSUPERVISORHANDLER_H_
|
||||||
|
|
||||||
#include "OBSWConfig.h"
|
#include "OBSWConfig.h"
|
||||||
|
#include "PlocSupvHelper.h"
|
||||||
#include "bsp_q7s/memory/SdCardManager.h"
|
#include "bsp_q7s/memory/SdCardManager.h"
|
||||||
#include "devices/powerSwitcherList.h"
|
#include "devices/powerSwitcherList.h"
|
||||||
#include "fsfw/devicehandlers/DeviceHandlerBase.h"
|
#include "fsfw/devicehandlers/DeviceHandlerBase.h"
|
||||||
|
#include "fsfw/timemanager/Countdown.h"
|
||||||
#include "fsfw_hal/linux/gpio/Gpio.h"
|
#include "fsfw_hal/linux/gpio/Gpio.h"
|
||||||
#include "fsfw_hal/linux/gpio/LinuxLibgpioIF.h"
|
#include "fsfw_hal/linux/gpio/LinuxLibgpioIF.h"
|
||||||
#include "fsfw_hal/linux/uart/UartComIF.h"
|
#include "fsfw_hal/linux/uart/UartComIF.h"
|
||||||
#include "linux/devices/devicedefinitions/PlocSupervisorDefinitions.h"
|
#include "linux/devices/devicedefinitions/PlocSupervisorDefinitions.h"
|
||||||
|
#include "linux/devices/devicedefinitions/SupvReturnValuesIF.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief This is the device handler for the supervisor of the PLOC which is programmed by
|
* @brief This is the device handler for the supervisor of the PLOC which is programmed by
|
||||||
* Thales.
|
* Thales.
|
||||||
*
|
*
|
||||||
* @details The PLOC uses the space packet protocol for communication. To each command the PLOC
|
* @details The PLOC uses the space packet protocol for communication. On each command the PLOC
|
||||||
* answers with at least one acknowledgment and one execution report.
|
* answers with at least one acknowledgment and one execution report.
|
||||||
* Flight manual:
|
* Flight manual:
|
||||||
* https://egit.irs.uni-stuttgart.de/redmine/projects/eive-flight-manual/wiki/PLOC_Commands
|
* https://egit.irs.uni-stuttgart.de/redmine/projects/eive-flight-manual/wiki/PLOC_Commands
|
||||||
@ -25,10 +28,14 @@
|
|||||||
class PlocSupervisorHandler : public DeviceHandlerBase {
|
class PlocSupervisorHandler : public DeviceHandlerBase {
|
||||||
public:
|
public:
|
||||||
PlocSupervisorHandler(object_id_t objectId, object_id_t uartComIFid, CookieIF* comCookie,
|
PlocSupervisorHandler(object_id_t objectId, object_id_t uartComIFid, CookieIF* comCookie,
|
||||||
Gpio uartIsolatorSwitch, power::Switch_t powerSwitch);
|
Gpio uartIsolatorSwitch, power::Switch_t powerSwitch,
|
||||||
|
PlocSupvHelper* supvHelper);
|
||||||
virtual ~PlocSupervisorHandler();
|
virtual ~PlocSupervisorHandler();
|
||||||
|
|
||||||
virtual ReturnValue_t initialize() override;
|
virtual ReturnValue_t initialize() override;
|
||||||
|
void performOperationHook() override;
|
||||||
|
ReturnValue_t executeAction(ActionId_t actionId, MessageQueueId_t commandedBy,
|
||||||
|
const uint8_t* data, size_t size) override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void doStartUp() override;
|
void doStartUp() override;
|
||||||
@ -49,48 +56,10 @@ class PlocSupervisorHandler : public DeviceHandlerBase {
|
|||||||
uint8_t expectedReplies = 1, bool useAlternateId = false,
|
uint8_t expectedReplies = 1, bool useAlternateId = false,
|
||||||
DeviceCommandId_t alternateReplyID = 0) override;
|
DeviceCommandId_t alternateReplyID = 0) override;
|
||||||
size_t getNextReplyLength(DeviceCommandId_t deviceCommand) override;
|
size_t getNextReplyLength(DeviceCommandId_t deviceCommand) override;
|
||||||
|
ReturnValue_t doSendReadHook() override;
|
||||||
|
void doOffActivity() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static const uint8_t INTERFACE_ID = CLASS_ID::PLOC_SUPERVISOR_HANDLER;
|
|
||||||
|
|
||||||
//! [EXPORT] : [COMMENT] Space Packet received from PLOC supervisor has invalid CRC
|
|
||||||
static const ReturnValue_t CRC_FAILURE = MAKE_RETURN_CODE(0xA0);
|
|
||||||
//! [EXPORT] : [COMMENT] Received ACK failure reply from PLOC supervisor
|
|
||||||
static const ReturnValue_t RECEIVED_ACK_FAILURE = MAKE_RETURN_CODE(0xA1);
|
|
||||||
//! [EXPORT] : [COMMENT] Received execution failure reply from PLOC supervisor
|
|
||||||
static const ReturnValue_t RECEIVED_EXE_FAILURE = MAKE_RETURN_CODE(0xA2);
|
|
||||||
//! [EXPORT] : [COMMENT] Received space packet with invalid APID from PLOC supervisor
|
|
||||||
static const ReturnValue_t INVALID_APID = MAKE_RETURN_CODE(0xA3);
|
|
||||||
//! [EXPORT] : [COMMENT] Failed to read current system time
|
|
||||||
static const ReturnValue_t GET_TIME_FAILURE = MAKE_RETURN_CODE(0xA4);
|
|
||||||
//! [EXPORT] : [COMMENT] Received command with invalid watchdog parameter. Valid watchdogs are 0
|
|
||||||
//! for PS, 1 for PL and 2 for INT
|
|
||||||
static const ReturnValue_t INVALID_WATCHDOG = MAKE_RETURN_CODE(0xA5);
|
|
||||||
//! [EXPORT] : [COMMENT] Received watchdog timeout config command with invalid timeout. Valid
|
|
||||||
//! timeouts must be in the range between 1000 and 360000 ms.
|
|
||||||
static const ReturnValue_t INVALID_WATCHDOG_TIMEOUT = MAKE_RETURN_CODE(0xA6);
|
|
||||||
//! [EXPORT] : [COMMENT] Received latchup config command with invalid latchup ID
|
|
||||||
static const ReturnValue_t INVALID_LATCHUP_ID = MAKE_RETURN_CODE(0xA7);
|
|
||||||
//! [EXPORT] : [COMMENT] Received set adc sweep period command with invalid sweep period. Must be
|
|
||||||
//! larger than 21.
|
|
||||||
static const ReturnValue_t SWEEP_PERIOD_TOO_SMALL = MAKE_RETURN_CODE(0xA8);
|
|
||||||
//! [EXPORT] : [COMMENT] Receive auto EM test command with invalid test param. Valid params are 1
|
|
||||||
//! and 2.
|
|
||||||
static const ReturnValue_t INVALID_TEST_PARAM = MAKE_RETURN_CODE(0xA9);
|
|
||||||
//! [EXPORT] : [COMMENT] Returned when scanning for MRAM dump packets failed.
|
|
||||||
static const ReturnValue_t MRAM_PACKET_PARSING_FAILURE = MAKE_RETURN_CODE(0xAA);
|
|
||||||
//! [EXPORT] : [COMMENT] Returned when the start and stop addresses of the MRAM dump or MRAM wipe
|
|
||||||
//! commands are invalid (e.g. start address bigger than stop address)
|
|
||||||
static const ReturnValue_t INVALID_MRAM_ADDRESSES = MAKE_RETURN_CODE(0xAB);
|
|
||||||
//! [EXPORT] : [COMMENT] Expect reception of an MRAM dump packet but received space packet with
|
|
||||||
//! other apid.
|
|
||||||
static const ReturnValue_t NO_MRAM_PACKET = MAKE_RETURN_CODE(0xAC);
|
|
||||||
//! [EXPORT] : [COMMENT] Path to PLOC directory on SD card does not exist
|
|
||||||
static const ReturnValue_t PATH_DOES_NOT_EXIST = MAKE_RETURN_CODE(0xAD);
|
|
||||||
//! [EXPORT] : [COMMENT] MRAM dump file does not exists. The file should actually already have
|
|
||||||
//! been created with the reception of the first dump packet.
|
|
||||||
static const ReturnValue_t MRAM_FILE_NOT_EXISTS = MAKE_RETURN_CODE(0xAE);
|
|
||||||
|
|
||||||
static const uint8_t SUBSYSTEM_ID = SUBSYSTEM_ID::PLOC_SUPERVISOR_HANDLER;
|
static const uint8_t SUBSYSTEM_ID = SUBSYSTEM_ID::PLOC_SUPERVISOR_HANDLER;
|
||||||
|
|
||||||
//! [EXPORT] : [COMMENT] PLOC supervisor crc failure in telemetry packet
|
//! [EXPORT] : [COMMENT] PLOC supervisor crc failure in telemetry packet
|
||||||
@ -98,12 +67,33 @@ class PlocSupervisorHandler : public DeviceHandlerBase {
|
|||||||
//! [EXPORT] : [COMMENT] PLOC supervisor received acknowledgment failure report
|
//! [EXPORT] : [COMMENT] PLOC supervisor received acknowledgment failure report
|
||||||
static const Event SUPV_ACK_FAILURE = MAKE_EVENT(2, severity::LOW);
|
static const Event SUPV_ACK_FAILURE = MAKE_EVENT(2, severity::LOW);
|
||||||
//! [EXPORT] : [COMMENT] PLOC received execution failure report
|
//! [EXPORT] : [COMMENT] PLOC received execution failure report
|
||||||
|
//! P1: ID of command for which the execution failed
|
||||||
|
//! P2: Status code sent by the supervisor handler
|
||||||
static const Event SUPV_EXE_FAILURE = MAKE_EVENT(3, severity::LOW);
|
static const Event SUPV_EXE_FAILURE = MAKE_EVENT(3, severity::LOW);
|
||||||
//! [EXPORT] : [COMMENT] PLOC supervisor reply has invalid crc
|
//! [EXPORT] : [COMMENT] PLOC supervisor reply has invalid crc
|
||||||
static const Event SUPV_CRC_FAILURE_EVENT = MAKE_EVENT(4, severity::LOW);
|
static const Event SUPV_CRC_FAILURE_EVENT = MAKE_EVENT(4, severity::LOW);
|
||||||
|
//! [EXPORT] : [COMMENT] Supervisor helper currently executing a command
|
||||||
|
static const Event SUPV_HELPER_EXECUTING = MAKE_EVENT(5, severity::LOW);
|
||||||
|
//! [EXPORT] : [COMMENT] Failed to build the command to shutdown the MPSoC
|
||||||
|
static const Event SUPV_MPSOC_SHUWDOWN_BUILD_FAILED = MAKE_EVENT(5, severity::LOW);
|
||||||
|
|
||||||
static const uint16_t APID_MASK = 0x7FF;
|
static const uint16_t APID_MASK = 0x7FF;
|
||||||
static const uint16_t PACKET_SEQUENCE_COUNT_MASK = 0x3FFF;
|
static const uint16_t PACKET_SEQUENCE_COUNT_MASK = 0x3FFF;
|
||||||
|
static const uint8_t EXE_STATUS_OFFSET = 10;
|
||||||
|
static const uint8_t SIZE_NULL_TERMINATOR = 1;
|
||||||
|
// 5 s
|
||||||
|
static const uint32_t EXECUTION_DEFAULT_TIMEOUT = 5000;
|
||||||
|
// 60 s
|
||||||
|
static const uint32_t MRAM_DUMP_EXECUTION_TIMEOUT = 60000;
|
||||||
|
// 70 s
|
||||||
|
static const uint32_t COPY_ADC_TO_MRAM_TIMEOUT = 70000;
|
||||||
|
// 60 s
|
||||||
|
static const uint32_t MRAM_DUMP_TIMEOUT = 60000;
|
||||||
|
// 2 s
|
||||||
|
static const uint32_t BOOT_TIMEOUT = 2000;
|
||||||
|
enum class StartupState : uint8_t { OFF, BOOTING, SET_TIME, SET_TIME_EXECUTING, ON };
|
||||||
|
|
||||||
|
StartupState startupState = StartupState::OFF;
|
||||||
|
|
||||||
uint8_t commandBuffer[supv::MAX_COMMAND_SIZE];
|
uint8_t commandBuffer[supv::MAX_COMMAND_SIZE];
|
||||||
|
|
||||||
@ -121,9 +111,14 @@ class PlocSupervisorHandler : public DeviceHandlerBase {
|
|||||||
supv::HkSet hkset;
|
supv::HkSet hkset;
|
||||||
supv::BootStatusReport bootStatusReport;
|
supv::BootStatusReport bootStatusReport;
|
||||||
supv::LatchupStatusReport latchupStatusReport;
|
supv::LatchupStatusReport latchupStatusReport;
|
||||||
|
supv::LoggingReport loggingReport;
|
||||||
|
supv::AdcReport adcReport;
|
||||||
|
|
||||||
const power::Switch_t powerSwitch = power::NO_SWITCH;
|
const power::Switch_t powerSwitch = power::NO_SWITCH;
|
||||||
|
|
||||||
|
PlocSupvHelper* supvHelper = nullptr;
|
||||||
|
MessageQueueIF* eventQueue = nullptr;
|
||||||
|
|
||||||
/** Number of expected replies following the MRAM dump command */
|
/** Number of expected replies following the MRAM dump command */
|
||||||
uint32_t expectedMramDumpPackets = 0;
|
uint32_t expectedMramDumpPackets = 0;
|
||||||
uint32_t receivedMramDumpPackets = 0;
|
uint32_t receivedMramDumpPackets = 0;
|
||||||
@ -135,16 +130,31 @@ class PlocSupervisorHandler : public DeviceHandlerBase {
|
|||||||
/** This buffer is used to concatenate space packets received in two different read steps */
|
/** This buffer is used to concatenate space packets received in two different read steps */
|
||||||
uint8_t spacePacketBuffer[supv::MAX_PACKET_SIZE];
|
uint8_t spacePacketBuffer[supv::MAX_PACKET_SIZE];
|
||||||
|
|
||||||
#ifdef TE0720_1CFA
|
#ifndef TE0720_1CFA
|
||||||
SdCardManager* sdcMan = nullptr;
|
SdCardManager* sdcMan = nullptr;
|
||||||
#endif /* BOARD_TE0720 == 0 */
|
#endif /* BOARD_TE0720 == 0 */
|
||||||
|
|
||||||
/** Path to PLOC specific files on SD card */
|
// Path to supervisor specific files on SD card
|
||||||
std::string plocFilePath = "ploc";
|
std::string supervisorFilePath = "ploc/supervisor";
|
||||||
std::string activeMramFile;
|
std::string activeMramFile;
|
||||||
|
|
||||||
/** Setting this variable to true will enable direct downlink of MRAM packets */
|
// Supervisor helper class currently executing a command
|
||||||
bool downlinkMramDump = false;
|
bool plocSupvHelperExecuting = false;
|
||||||
|
|
||||||
|
Countdown executionTimeout = Countdown(EXECUTION_DEFAULT_TIMEOUT, false);
|
||||||
|
// Vorago nees some time to boot properly
|
||||||
|
Countdown bootTimeout = Countdown(BOOT_TIMEOUT);
|
||||||
|
Countdown mramDumpTimeout = Countdown(MRAM_DUMP_TIMEOUT);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Adjusts the timeout of the execution report dependent on command
|
||||||
|
*/
|
||||||
|
void setExecutionTimeout(DeviceCommandId_t command);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Handles event messages received from the supervisor helper
|
||||||
|
*/
|
||||||
|
void handleEvent(EventMessage* eventMessage);
|
||||||
|
|
||||||
ReturnValue_t getSwitches(const uint8_t** switches, uint8_t* numberOfSwitches);
|
ReturnValue_t getSwitches(const uint8_t** switches, uint8_t* numberOfSwitches);
|
||||||
|
|
||||||
@ -193,6 +203,8 @@ class PlocSupervisorHandler : public DeviceHandlerBase {
|
|||||||
ReturnValue_t handleBootStatusReport(const uint8_t* data);
|
ReturnValue_t handleBootStatusReport(const uint8_t* data);
|
||||||
|
|
||||||
ReturnValue_t handleLatchupStatusReport(const uint8_t* data);
|
ReturnValue_t handleLatchupStatusReport(const uint8_t* data);
|
||||||
|
ReturnValue_t handleLoggingReport(const uint8_t* data);
|
||||||
|
ReturnValue_t handleAdcReport(const uint8_t* data);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Depending on the current active command, this function sets the reply id of the
|
* @brief Depending on the current active command, this function sets the reply id of the
|
||||||
@ -253,22 +265,17 @@ class PlocSupervisorHandler : public DeviceHandlerBase {
|
|||||||
|
|
||||||
ReturnValue_t prepareLatchupConfigCmd(const uint8_t* commandData,
|
ReturnValue_t prepareLatchupConfigCmd(const uint8_t* commandData,
|
||||||
DeviceCommandId_t deviceCommand);
|
DeviceCommandId_t deviceCommand);
|
||||||
ReturnValue_t prepareAutoCalibrateAlertCmd(const uint8_t* commandData);
|
|
||||||
ReturnValue_t prepareSetAlertLimitCmd(const uint8_t* commandData);
|
ReturnValue_t prepareSetAlertLimitCmd(const uint8_t* commandData);
|
||||||
ReturnValue_t prepareSetAlertIrqFilterCmd(const uint8_t* commandData);
|
|
||||||
ReturnValue_t prepareSetAdcSweetPeriodCmd(const uint8_t* commandData);
|
|
||||||
void prepareSetAdcEnabledChannelsCmd(const uint8_t* commandData);
|
void prepareSetAdcEnabledChannelsCmd(const uint8_t* commandData);
|
||||||
void prepareSetAdcWindowAndStrideCmd(const uint8_t* commandData);
|
void prepareSetAdcWindowAndStrideCmd(const uint8_t* commandData);
|
||||||
void prepareSetAdcThresholdCmd(const uint8_t* commandData);
|
void prepareSetAdcThresholdCmd(const uint8_t* commandData);
|
||||||
void prepareEnableNvmsCmd(const uint8_t* commandData);
|
|
||||||
void prepareSelectNvmCmd(const uint8_t* commandData);
|
|
||||||
ReturnValue_t prepareRunAutoEmTest(const uint8_t* commandData);
|
ReturnValue_t prepareRunAutoEmTest(const uint8_t* commandData);
|
||||||
ReturnValue_t prepareWipeMramCmd(const uint8_t* commandData);
|
ReturnValue_t prepareWipeMramCmd(const uint8_t* commandData);
|
||||||
ReturnValue_t prepareDumpMramCmd(const uint8_t* commandData);
|
ReturnValue_t prepareDumpMramCmd(const uint8_t* commandData);
|
||||||
void preparePrintCpuStatsCmd(const uint8_t* commandData);
|
|
||||||
void prepareSetDbgVerbosityCmd(const uint8_t* commandData);
|
|
||||||
void prepareSetGpioCmd(const uint8_t* commandData);
|
void prepareSetGpioCmd(const uint8_t* commandData);
|
||||||
void prepareReadGpioCmd(const uint8_t* commandData);
|
void prepareReadGpioCmd(const uint8_t* commandData);
|
||||||
|
ReturnValue_t prepareLoggingRequest(const uint8_t* commandData, size_t commandDataLen);
|
||||||
|
ReturnValue_t prepareEnableNvmsCommand(const uint8_t* commandData);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Copies the content of a space packet to the command buffer.
|
* @brief Copies the content of a space packet to the command buffer.
|
||||||
@ -282,6 +289,8 @@ class PlocSupervisorHandler : public DeviceHandlerBase {
|
|||||||
*/
|
*/
|
||||||
void disableAllReplies();
|
void disableAllReplies();
|
||||||
|
|
||||||
|
void disableReply(DeviceCommandId_t replyId);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief This function sends a failure report if the active action was commanded by an other
|
* @brief This function sends a failure report if the active action was commanded by an other
|
||||||
* object.
|
* object.
|
||||||
@ -348,6 +357,15 @@ class PlocSupervisorHandler : public DeviceHandlerBase {
|
|||||||
|
|
||||||
ReturnValue_t createMramDumpFile();
|
ReturnValue_t createMramDumpFile();
|
||||||
ReturnValue_t getTimeStampString(std::string& timeStamp);
|
ReturnValue_t getTimeStampString(std::string& timeStamp);
|
||||||
|
|
||||||
|
void prepareSetShutdownTimeoutCmd(const uint8_t* commandData);
|
||||||
|
|
||||||
|
ReturnValue_t extractUpdateCommand(const uint8_t* commandData, size_t size, std::string* file,
|
||||||
|
uint8_t* memoryId, uint32_t* startAddress);
|
||||||
|
ReturnValue_t eventSubscription();
|
||||||
|
|
||||||
|
void handleExecutionSuccessReport(const uint8_t* data);
|
||||||
|
void handleExecutionFailureReport(uint16_t statusCode);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* MISSION_DEVICES_PLOCSUPERVISORHANDLER_H_ */
|
#endif /* MISSION_DEVICES_PLOCSUPERVISORHANDLER_H_ */
|
||||||
|
498
linux/devices/ploc/PlocSupvHelper.cpp
Normal file
498
linux/devices/ploc/PlocSupvHelper.cpp
Normal file
@ -0,0 +1,498 @@
|
|||||||
|
#include "PlocSupvHelper.h"
|
||||||
|
|
||||||
|
#include <filesystem>
|
||||||
|
#include <fstream>
|
||||||
|
|
||||||
|
#include "OBSWConfig.h"
|
||||||
|
#ifdef XIPHOS_Q7S
|
||||||
|
#include "bsp_q7s/memory/FilesystemHelper.h"
|
||||||
|
#include "bsp_q7s/memory/SdCardManager.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "fsfw/globalfunctions/CRC.h"
|
||||||
|
#include "fsfw/timemanager/Countdown.h"
|
||||||
|
#include "mission/utility/Filenaming.h"
|
||||||
|
#include "mission/utility/ProgressPrinter.h"
|
||||||
|
#include "mission/utility/Timestamp.h"
|
||||||
|
|
||||||
|
PlocSupvHelper::PlocSupvHelper(object_id_t objectId) : SystemObject(objectId) {}
|
||||||
|
|
||||||
|
PlocSupvHelper::~PlocSupvHelper() {}
|
||||||
|
|
||||||
|
ReturnValue_t PlocSupvHelper::initialize() {
|
||||||
|
#ifdef XIPHOS_Q7S
|
||||||
|
sdcMan = SdCardManager::instance();
|
||||||
|
if (sdcMan == nullptr) {
|
||||||
|
sif::warning << "PlocSupvHelper::initialize: Invalid SD Card Manager" << std::endl;
|
||||||
|
return RETURN_FAILED;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
return RETURN_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
ReturnValue_t PlocSupvHelper::performOperation(uint8_t operationCode) {
|
||||||
|
ReturnValue_t result = RETURN_OK;
|
||||||
|
semaphore.acquire();
|
||||||
|
while (true) {
|
||||||
|
switch (internalState) {
|
||||||
|
case InternalState::IDLE: {
|
||||||
|
semaphore.acquire();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case InternalState::UPDATE: {
|
||||||
|
result = performUpdate();
|
||||||
|
if (result == RETURN_OK) {
|
||||||
|
triggerEvent(SUPV_UPDATE_SUCCESSFUL, result);
|
||||||
|
} else if (result == PROCESS_TERMINATED) {
|
||||||
|
// Event already triggered
|
||||||
|
} else {
|
||||||
|
triggerEvent(SUPV_UPDATE_FAILED, result);
|
||||||
|
}
|
||||||
|
internalState = InternalState::IDLE;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case InternalState::REQUEST_EVENT_BUFFER: {
|
||||||
|
result = performEventBufferRequest();
|
||||||
|
if (result == RETURN_OK) {
|
||||||
|
triggerEvent(SUPV_EVENT_BUFFER_REQUEST_SUCCESSFUL, result);
|
||||||
|
} else if (result == PROCESS_TERMINATED) {
|
||||||
|
// Event already triggered
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
triggerEvent(SUPV_EVENT_BUFFER_REQUEST_FAILED, result);
|
||||||
|
}
|
||||||
|
internalState = InternalState::IDLE;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
sif::debug << "PlocSupvHelper::performOperation: Invalid state" << std::endl;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ReturnValue_t PlocSupvHelper::setComIF(UartComIF* uartComIF_) {
|
||||||
|
if (uartComIF_ == nullptr) {
|
||||||
|
sif::warning << "PlocSupvHelper::initialize: Provided invalid uart com if" << std::endl;
|
||||||
|
return RETURN_FAILED;
|
||||||
|
}
|
||||||
|
uartComIF = uartComIF_;
|
||||||
|
return RETURN_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
void PlocSupvHelper::setComCookie(CookieIF* comCookie_) { comCookie = comCookie_; }
|
||||||
|
|
||||||
|
ReturnValue_t PlocSupvHelper::startUpdate(std::string file, uint8_t memoryId,
|
||||||
|
uint32_t startAddress) {
|
||||||
|
ReturnValue_t result = RETURN_OK;
|
||||||
|
#ifdef XIPHOS_Q7S
|
||||||
|
result = FilesystemHelper::checkPath(file);
|
||||||
|
if (result != RETURN_OK) {
|
||||||
|
sif::warning << "PlocSupvHelper::startUpdate: File " << file << " does not exist" << std::endl;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
result = FilesystemHelper::fileExists(file);
|
||||||
|
if (result != RETURN_OK) {
|
||||||
|
sif::warning << "PlocSupvHelper::startUpdate: The file " << file << " does not exist"
|
||||||
|
<< std::endl;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#ifdef TE0720_1CFA
|
||||||
|
if (not std::filesystem::exists(file)) {
|
||||||
|
sif::warning << "PlocSupvHelper::startUpdate: The file " << file << " does not exist"
|
||||||
|
<< std::endl;
|
||||||
|
return RETURN_FAILED;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
update.file = file;
|
||||||
|
update.length = getFileSize(update.file);
|
||||||
|
update.memoryId = memoryId;
|
||||||
|
update.startAddress = startAddress;
|
||||||
|
internalState = InternalState::UPDATE;
|
||||||
|
uartComIF->flushUartTxAndRxBuf(comCookie);
|
||||||
|
semaphore.release();
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
ReturnValue_t PlocSupvHelper::startEventbBufferRequest(std::string path) {
|
||||||
|
#ifdef XIPHOS_Q7S
|
||||||
|
ReturnValue_t result = FilesystemHelper::checkPath(path);
|
||||||
|
if (result != RETURN_OK) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
if (not std::filesystem::exists(path)) {
|
||||||
|
return PATH_NOT_EXISTS;
|
||||||
|
}
|
||||||
|
eventBufferReq.path = path;
|
||||||
|
internalState = InternalState::REQUEST_EVENT_BUFFER;
|
||||||
|
uartComIF->flushUartTxAndRxBuf(comCookie);
|
||||||
|
semaphore.release();
|
||||||
|
return RETURN_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
void PlocSupvHelper::stopProcess() { terminate = true; }
|
||||||
|
|
||||||
|
ReturnValue_t PlocSupvHelper::performUpdate() {
|
||||||
|
ReturnValue_t result = RETURN_OK;
|
||||||
|
result = calcImageCrc();
|
||||||
|
if (result != RETURN_OK) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
result = prepareUpdate();
|
||||||
|
if (result != RETURN_OK) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
result = eraseMemory();
|
||||||
|
if (result != RETURN_OK) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
#if OBSW_DEBUG_PLOC_SUPERVISOR == 1
|
||||||
|
ProgressPrinter progressPrinter("Supervisor update", update.length,
|
||||||
|
ProgressPrinter::HALF_PERCENT);
|
||||||
|
#endif /* OBSW_DEBUG_PLOC_SUPERVISOR == 1 */
|
||||||
|
uint8_t tempData[supv::WriteMemory::CHUNK_MAX];
|
||||||
|
std::ifstream file(update.file, std::ifstream::binary);
|
||||||
|
size_t remainingSize = update.length;
|
||||||
|
uint16_t dataLength = 0;
|
||||||
|
size_t bytesWritten = 0;
|
||||||
|
uint16_t sequenceCount = 1;
|
||||||
|
supv::SequenceFlags seqFlags = supv::SequenceFlags::FIRST_PKT;
|
||||||
|
while (remainingSize > 0) {
|
||||||
|
if (terminate) {
|
||||||
|
terminate = false;
|
||||||
|
return PROCESS_TERMINATED;
|
||||||
|
}
|
||||||
|
if (remainingSize > supv::WriteMemory::CHUNK_MAX) {
|
||||||
|
dataLength = supv::WriteMemory::CHUNK_MAX;
|
||||||
|
} else {
|
||||||
|
dataLength = static_cast<uint16_t>(remainingSize);
|
||||||
|
}
|
||||||
|
if (file.is_open()) {
|
||||||
|
file.seekg(bytesWritten, file.beg);
|
||||||
|
file.read(reinterpret_cast<char*>(tempData), dataLength);
|
||||||
|
if (!file) {
|
||||||
|
sif::warning << "PlocSupvHelper::performUpdate: Read only " << file.gcount() << " of "
|
||||||
|
<< dataLength << " bytes" << std::endl;
|
||||||
|
sif::info << "PlocSupvHelper::performUpdate: Failed when trying to read byte "
|
||||||
|
<< bytesWritten << std::endl;
|
||||||
|
}
|
||||||
|
remainingSize -= dataLength;
|
||||||
|
} else {
|
||||||
|
return FILE_CLOSED_ACCIDENTALLY;
|
||||||
|
}
|
||||||
|
if (bytesWritten == 0) {
|
||||||
|
seqFlags = supv::SequenceFlags::FIRST_PKT;
|
||||||
|
} else if (remainingSize == 0) {
|
||||||
|
seqFlags = supv::SequenceFlags::LAST_PKT;
|
||||||
|
} else {
|
||||||
|
seqFlags = supv::SequenceFlags::CONTINUED_PKT;
|
||||||
|
}
|
||||||
|
supv::WriteMemory packet(seqFlags, sequenceCount++, update.memoryId,
|
||||||
|
update.startAddress + bytesWritten, dataLength, tempData);
|
||||||
|
result = handlePacketTransmission(packet);
|
||||||
|
if (result != RETURN_OK) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
bytesWritten += dataLength;
|
||||||
|
#if OBSW_DEBUG_PLOC_SUPERVISOR == 1
|
||||||
|
progressPrinter.print(bytesWritten);
|
||||||
|
#endif /* OBSW_DEBUG_PLOC_SUPERVISOR == 1 */
|
||||||
|
}
|
||||||
|
result = handleCheckMemoryCommand();
|
||||||
|
if (result != RETURN_OK) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
ReturnValue_t PlocSupvHelper::performEventBufferRequest() {
|
||||||
|
using namespace supv;
|
||||||
|
ReturnValue_t result = RETURN_OK;
|
||||||
|
RequestLoggingData packet(RequestLoggingData::Sa::REQUEST_EVENT_BUFFERS);
|
||||||
|
result = sendCommand(packet);
|
||||||
|
if (result != RETURN_OK) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
result = handleAck();
|
||||||
|
if (result != RETURN_OK) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
result = handleEventBufferReception();
|
||||||
|
if (result != RETURN_OK) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
result = handleExe();
|
||||||
|
if (result != RETURN_OK) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
ReturnValue_t PlocSupvHelper::prepareUpdate() {
|
||||||
|
ReturnValue_t result = RETURN_OK;
|
||||||
|
supv::ApidOnlyPacket packet(supv::APID_PREPARE_UPDATE);
|
||||||
|
result = handlePacketTransmission(packet);
|
||||||
|
if (result != RETURN_OK) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
return RETURN_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
ReturnValue_t PlocSupvHelper::eraseMemory() {
|
||||||
|
ReturnValue_t result = RETURN_OK;
|
||||||
|
supv::EraseMemory eraseMemory(update.memoryId, update.startAddress, update.length);
|
||||||
|
result = handlePacketTransmission(eraseMemory, supv::recv_timeout::ERASE_MEMORY);
|
||||||
|
if (result != RETURN_OK) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
return RETURN_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
ReturnValue_t PlocSupvHelper::handlePacketTransmission(SpacePacket& packet,
|
||||||
|
uint32_t timeoutExecutionReport) {
|
||||||
|
ReturnValue_t result = RETURN_OK;
|
||||||
|
result = sendCommand(packet);
|
||||||
|
if (result != RETURN_OK) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
result = handleAck();
|
||||||
|
if (result != RETURN_OK) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
result = handleExe(timeoutExecutionReport);
|
||||||
|
if (result != RETURN_OK) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
return RETURN_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
ReturnValue_t PlocSupvHelper::sendCommand(SpacePacket& packet) {
|
||||||
|
ReturnValue_t result = RETURN_OK;
|
||||||
|
rememberApid = packet.getAPID();
|
||||||
|
result = uartComIF->sendMessage(comCookie, packet.getWholeData(), packet.getFullSize());
|
||||||
|
if (result != RETURN_OK) {
|
||||||
|
sif::warning << "PlocSupvHelper::sendCommand: Failed to send command" << std::endl;
|
||||||
|
triggerEvent(SUPV_SENDING_COMMAND_FAILED, result, static_cast<uint32_t>(internalState));
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
ReturnValue_t PlocSupvHelper::handleAck() {
|
||||||
|
ReturnValue_t result = RETURN_OK;
|
||||||
|
supv::AcknowledgmentReport ackReport;
|
||||||
|
result = handleTmReception(&ackReport, supv::SIZE_ACK_REPORT);
|
||||||
|
if (result != RETURN_OK) {
|
||||||
|
triggerEvent(ACK_RECEPTION_FAILURE, result, static_cast<uint32_t>(rememberApid));
|
||||||
|
sif::warning << "PlocSupvHelper::handleAck: Error in reception of acknowledgment report"
|
||||||
|
<< std::endl;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
result = ackReport.checkApid();
|
||||||
|
if (result != RETURN_OK) {
|
||||||
|
if (result == SupvReturnValuesIF::RECEIVED_ACK_FAILURE) {
|
||||||
|
triggerEvent(SUPV_ACK_FAILURE_REPORT, static_cast<uint32_t>(ackReport.getRefApid()));
|
||||||
|
} else if (result == SupvReturnValuesIF::INVALID_APID) {
|
||||||
|
triggerEvent(SUPV_ACK_INVALID_APID, static_cast<uint32_t>(rememberApid));
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
return RETURN_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
ReturnValue_t PlocSupvHelper::handleExe(uint32_t timeout) {
|
||||||
|
ReturnValue_t result = RETURN_OK;
|
||||||
|
supv::ExecutionReport exeReport;
|
||||||
|
result = handleTmReception(&exeReport, supv::SIZE_EXE_REPORT, timeout);
|
||||||
|
if (result != RETURN_OK) {
|
||||||
|
triggerEvent(EXE_RECEPTION_FAILURE, result, static_cast<uint32_t>(rememberApid));
|
||||||
|
sif::warning << "PlocSupvHelper::handleExe: Error in reception of execution report"
|
||||||
|
<< std::endl;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
result = exeReport.checkApid();
|
||||||
|
if (result != RETURN_OK) {
|
||||||
|
if (result == SupvReturnValuesIF::RECEIVED_EXE_FAILURE) {
|
||||||
|
triggerEvent(SUPV_EXE_FAILURE_REPORT, static_cast<uint32_t>(exeReport.getRefApid()));
|
||||||
|
} else if (result == SupvReturnValuesIF::INVALID_APID) {
|
||||||
|
triggerEvent(SUPV_EXE_INVALID_APID, static_cast<uint32_t>(rememberApid));
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
return RETURN_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
ReturnValue_t PlocSupvHelper::handleTmReception(supv::TmPacket* tmPacket, size_t remainingBytes,
|
||||||
|
uint32_t timeout) {
|
||||||
|
ReturnValue_t result = RETURN_OK;
|
||||||
|
size_t readBytes = 0;
|
||||||
|
size_t currentBytes = 0;
|
||||||
|
Countdown countdown(timeout);
|
||||||
|
while (!countdown.hasTimedOut()) {
|
||||||
|
result = receive(tmPacket->getWholeData() + readBytes, ¤tBytes, remainingBytes);
|
||||||
|
if (result != RETURN_OK) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
readBytes += currentBytes;
|
||||||
|
remainingBytes = remainingBytes - currentBytes;
|
||||||
|
if (remainingBytes == 0) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (remainingBytes != 0) {
|
||||||
|
sif::warning << "PlocSupvHelper::handleTmReception: Failed to read " << remainingBytes
|
||||||
|
<< " bytes" << std::endl;
|
||||||
|
return RETURN_FAILED;
|
||||||
|
}
|
||||||
|
result = tmPacket->checkCrc();
|
||||||
|
if (result != RETURN_OK) {
|
||||||
|
sif::warning << "PlocSupvHelper::handleTmReception: CRC check failed" << std::endl;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
ReturnValue_t PlocSupvHelper::receive(uint8_t* data, size_t* readBytes, size_t requestBytes) {
|
||||||
|
ReturnValue_t result = RETURN_OK;
|
||||||
|
uint8_t* buffer = nullptr;
|
||||||
|
result = uartComIF->requestReceiveMessage(comCookie, requestBytes);
|
||||||
|
if (result != RETURN_OK) {
|
||||||
|
sif::warning << "PlocSupvHelper::receive: Failed to request reply" << std::endl;
|
||||||
|
triggerEvent(SUPV_HELPER_REQUESTING_REPLY_FAILED, result,
|
||||||
|
static_cast<uint32_t>(static_cast<uint32_t>(internalState)));
|
||||||
|
return RETURN_FAILED;
|
||||||
|
}
|
||||||
|
result = uartComIF->readReceivedMessage(comCookie, &buffer, readBytes);
|
||||||
|
if (result != RETURN_OK) {
|
||||||
|
sif::warning << "PlocSupvHelper::receive: Failed to read received message" << std::endl;
|
||||||
|
triggerEvent(SUPV_HELPER_READING_REPLY_FAILED, result, static_cast<uint32_t>(internalState));
|
||||||
|
return RETURN_FAILED;
|
||||||
|
}
|
||||||
|
if (*readBytes > 0) {
|
||||||
|
std::memcpy(data, buffer, *readBytes);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
ReturnValue_t PlocSupvHelper::calcImageCrc() {
|
||||||
|
ReturnValue_t result = RETURN_OK;
|
||||||
|
#ifdef XIPHOS_Q7S
|
||||||
|
result = FilesystemHelper::checkPath(update.file);
|
||||||
|
#endif
|
||||||
|
if (result != RETURN_OK) {
|
||||||
|
sif::warning << "PlocSupvHelper::calcImageCrc: File " << update.file << " does not exist"
|
||||||
|
<< std::endl;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
std::ifstream file(update.file, std::ifstream::binary);
|
||||||
|
uint16_t remainder = CRC16_INIT;
|
||||||
|
uint8_t input;
|
||||||
|
#if OBSW_DEBUG_PLOC_SUPERVISOR == 1
|
||||||
|
ProgressPrinter progress("Supervisor update crc calculation", update.length,
|
||||||
|
ProgressPrinter::ONE_PERCENT);
|
||||||
|
#endif /* OBSW_DEBUG_PLOC_SUPERVISOR == 1 */
|
||||||
|
uint32_t byteCount = 0;
|
||||||
|
for (byteCount = 0; byteCount < update.length; byteCount++) {
|
||||||
|
file.seekg(byteCount, file.beg);
|
||||||
|
file.read(reinterpret_cast<char*>(&input), 1);
|
||||||
|
remainder = CRC::crc16ccitt(&input, sizeof(input), remainder);
|
||||||
|
#if OBSW_DEBUG_PLOC_SUPERVISOR == 1
|
||||||
|
progress.print(byteCount);
|
||||||
|
#endif /* OBSW_DEBUG_PLOC_SUPERVISOR == 1 */
|
||||||
|
}
|
||||||
|
#if OBSW_DEBUG_PLOC_SUPERVISOR == 1
|
||||||
|
progress.print(byteCount);
|
||||||
|
#endif /* OBSW_DEBUG_PLOC_SUPERVISOR == 1 */
|
||||||
|
file.close();
|
||||||
|
update.crc = remainder;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
ReturnValue_t PlocSupvHelper::handleCheckMemoryCommand() {
|
||||||
|
ReturnValue_t result = RETURN_OK;
|
||||||
|
// Verification of update write procedure
|
||||||
|
supv::CheckMemory packet(update.memoryId, update.startAddress, update.length);
|
||||||
|
result = sendCommand(packet);
|
||||||
|
if (result != RETURN_OK) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
result = handleAck();
|
||||||
|
if (result != RETURN_OK) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
supv::UpdateStatusReport updateStatusReport;
|
||||||
|
result = handleTmReception(&updateStatusReport,
|
||||||
|
static_cast<size_t>(updateStatusReport.getNominalSize()),
|
||||||
|
supv::recv_timeout::UPDATE_STATUS_REPORT);
|
||||||
|
if (result != RETURN_OK) {
|
||||||
|
sif::warning
|
||||||
|
<< "PlocSupvHelper::handleCheckMemoryCommand: Failed to receive update status report"
|
||||||
|
<< std::endl;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
result = handleExe(CRC_EXECUTION_TIMEOUT);
|
||||||
|
if (result != RETURN_OK) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
result = updateStatusReport.parseDataField();
|
||||||
|
if (result != RETURN_OK) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
result = updateStatusReport.verifycrc(update.crc);
|
||||||
|
if (result != RETURN_OK) {
|
||||||
|
sif::warning << "PlocSupvHelper::handleCheckMemoryCommand: CRC failure. Expected CRC 0x"
|
||||||
|
<< std::hex << update.crc << " but received CRC 0x" << updateStatusReport.getCrc()
|
||||||
|
<< std::endl;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t PlocSupvHelper::getFileSize(std::string filename) {
|
||||||
|
std::ifstream file(filename, std::ifstream::binary);
|
||||||
|
file.seekg(0, file.end);
|
||||||
|
uint32_t size = file.tellg();
|
||||||
|
file.close();
|
||||||
|
return size;
|
||||||
|
}
|
||||||
|
|
||||||
|
ReturnValue_t PlocSupvHelper::handleEventBufferReception() {
|
||||||
|
ReturnValue_t result = RETURN_OK;
|
||||||
|
std::string filename = Filenaming::generateAbsoluteFilename(
|
||||||
|
eventBufferReq.path, eventBufferReq.filename, timestamping);
|
||||||
|
std::ofstream file(filename, std::ios_base::app | std::ios_base::out);
|
||||||
|
uint32_t packetsRead = 0;
|
||||||
|
size_t requestLen = 0;
|
||||||
|
supv::TmPacket tmPacket;
|
||||||
|
for (packetsRead = 0; packetsRead < NUM_EVENT_BUFFER_PACKETS; packetsRead++) {
|
||||||
|
if (terminate) {
|
||||||
|
triggerEvent(SUPV_EVENT_BUFFER_REQUEST_TERMINATED, packetsRead - 1);
|
||||||
|
file.close();
|
||||||
|
return PROCESS_TERMINATED;
|
||||||
|
}
|
||||||
|
if (packetsRead == NUM_EVENT_BUFFER_PACKETS - 1) {
|
||||||
|
requestLen = SIZE_EVENT_BUFFER_LAST_PACKET;
|
||||||
|
} else {
|
||||||
|
requestLen = SIZE_EVENT_BUFFER_FULL_PACKET;
|
||||||
|
}
|
||||||
|
result = handleTmReception(&tmPacket, requestLen);
|
||||||
|
if (result != RETURN_OK) {
|
||||||
|
sif::debug << "PlocSupvHelper::handleEventBufferReception: Failed while trying to read packet"
|
||||||
|
<< " " << packetsRead + 1 << std::endl;
|
||||||
|
file.close();
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
uint16_t apid = tmPacket.getAPID();
|
||||||
|
if (apid != supv::APID_MRAM_DUMP_TM) {
|
||||||
|
sif::warning << "PlocSupvHelper::handleEventBufferReception: Did not expect space packet "
|
||||||
|
<< "with APID 0x" << std::hex << apid << std::endl;
|
||||||
|
file.close();
|
||||||
|
return EVENT_BUFFER_REPLY_INVALID_APID;
|
||||||
|
}
|
||||||
|
file.write(reinterpret_cast<const char*>(tmPacket.getPacketData()),
|
||||||
|
tmPacket.getPayloadDataLength());
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
218
linux/devices/ploc/PlocSupvHelper.h
Normal file
218
linux/devices/ploc/PlocSupvHelper.h
Normal file
@ -0,0 +1,218 @@
|
|||||||
|
#ifndef BSP_Q7S_DEVICES_PLOCSUPVHELPER_H_
|
||||||
|
#define BSP_Q7S_DEVICES_PLOCSUPVHELPER_H_
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
#include "OBSWConfig.h"
|
||||||
|
#include "fsfw/devicehandlers/CookieIF.h"
|
||||||
|
#include "fsfw/objectmanager/SystemObject.h"
|
||||||
|
#include "fsfw/osal/linux/BinarySemaphore.h"
|
||||||
|
#include "fsfw/returnvalues/HasReturnvaluesIF.h"
|
||||||
|
#include "fsfw/tasks/ExecutableObjectIF.h"
|
||||||
|
#include "fsfw_hal/linux/uart/UartComIF.h"
|
||||||
|
#include "linux/devices/devicedefinitions/PlocSupervisorDefinitions.h"
|
||||||
|
#ifdef XIPHOS_Q7S
|
||||||
|
#include "bsp_q7s/memory/SdCardManager.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Helper class for supervisor of PLOC intended to accelerate large data transfers between
|
||||||
|
* the supervisor and the OBC.
|
||||||
|
* @author J. Meier
|
||||||
|
*/
|
||||||
|
class PlocSupvHelper : public SystemObject, public ExecutableObjectIF, public HasReturnvaluesIF {
|
||||||
|
public:
|
||||||
|
static const uint8_t SUBSYSTEM_ID = SUBSYSTEM_ID::PLOC_SUPV_HELPER;
|
||||||
|
|
||||||
|
//! [EXPORT] : [COMMENT] update failed
|
||||||
|
static const Event SUPV_UPDATE_FAILED = MAKE_EVENT(0, severity::LOW);
|
||||||
|
//! [EXPORT] : [COMMENT] update successful
|
||||||
|
static const Event SUPV_UPDATE_SUCCESSFUL = MAKE_EVENT(1, severity::LOW);
|
||||||
|
//! [EXPORT] : [COMMENT] Terminated update procedure by command
|
||||||
|
static const Event TERMINATED_UPDATE_PROCEDURE = MAKE_EVENT(2, severity::LOW);
|
||||||
|
//! [EXPORT] : [COMMENT] Requesting event buffer was successful
|
||||||
|
static const Event SUPV_EVENT_BUFFER_REQUEST_SUCCESSFUL = MAKE_EVENT(3, severity::LOW);
|
||||||
|
//! [EXPORT] : [COMMENT] Requesting event buffer failed
|
||||||
|
static const Event SUPV_EVENT_BUFFER_REQUEST_FAILED = MAKE_EVENT(4, severity::LOW);
|
||||||
|
//! [EXPORT] : [COMMENT] Terminated event buffer request by command
|
||||||
|
//! P1: Number of packets read before process was terminated
|
||||||
|
static const Event SUPV_EVENT_BUFFER_REQUEST_TERMINATED = MAKE_EVENT(5, severity::LOW);
|
||||||
|
//! [EXPORT] : [COMMENT] Communication interface returned failure when trying to send the command
|
||||||
|
//! to the supervisor
|
||||||
|
//! P1: Return value returned by the communication interface sendMessage function
|
||||||
|
//! P2: Internal state of supervisor helper
|
||||||
|
static const Event SUPV_SENDING_COMMAND_FAILED = MAKE_EVENT(6, severity::LOW);
|
||||||
|
//! [EXPORT] : [COMMENT] Request receive message of communication interface failed
|
||||||
|
//! P1: Return value returned by the communication interface requestReceiveMessage function
|
||||||
|
//! P2: Internal state of supervisor helper
|
||||||
|
static const Event SUPV_HELPER_REQUESTING_REPLY_FAILED = MAKE_EVENT(7, severity::LOW);
|
||||||
|
//! [EXPORT] : [COMMENT] Reading receive message of communication interface failed
|
||||||
|
//! P1: Return value returned by the communication interface readingReceivedMessage function
|
||||||
|
//! P2: Internal state of supervisor helper
|
||||||
|
static const Event SUPV_HELPER_READING_REPLY_FAILED = MAKE_EVENT(8, severity::LOW);
|
||||||
|
//! [EXPORT] : [COMMENT] Did not receive acknowledgement report
|
||||||
|
//! P1: Number of bytes missing
|
||||||
|
//! P2: Internal state of MPSoC helper
|
||||||
|
static const Event SUPV_MISSING_ACK = MAKE_EVENT(9, severity::LOW);
|
||||||
|
//! [EXPORT] : [COMMENT] Supervisor did not receive execution report
|
||||||
|
//! P1: Number of bytes missing
|
||||||
|
//! P2: Internal state of supervisor helper
|
||||||
|
static const Event SUPV_MISSING_EXE = MAKE_EVENT(10, severity::LOW);
|
||||||
|
//! [EXPORT] : [COMMENT] Supervisor received acknowledgment failure report
|
||||||
|
//! P1: Internal state of supervisor helper
|
||||||
|
static const Event SUPV_ACK_FAILURE_REPORT = MAKE_EVENT(11, severity::LOW);
|
||||||
|
//! [EXPORT] : [COMMENT] Execution report failure
|
||||||
|
//! P1:
|
||||||
|
static const Event SUPV_EXE_FAILURE_REPORT = MAKE_EVENT(12, severity::LOW);
|
||||||
|
//! [EXPORT] : [COMMENT] Supervisor expected acknowledgment report but received space packet with
|
||||||
|
//! other apid P1: Apid of received space packet P2: Internal state of supervisor helper
|
||||||
|
static const Event SUPV_ACK_INVALID_APID = MAKE_EVENT(13, severity::LOW);
|
||||||
|
//! [EXPORT] : [COMMENT] Supervisor helper expected execution report but received space packet
|
||||||
|
//! with other apid P1: Apid of received space packet P2: Internal state of supervisor helper
|
||||||
|
static const Event SUPV_EXE_INVALID_APID = MAKE_EVENT(14, severity::LOW);
|
||||||
|
//! [EXPORT] : [COMMENT] Failed to receive acknowledgment report
|
||||||
|
//! P1: Return value
|
||||||
|
//! P2: Apid of command for which the reception of the acknowledgment report failed
|
||||||
|
static const Event ACK_RECEPTION_FAILURE = MAKE_EVENT(15, severity::LOW);
|
||||||
|
//! [EXPORT] : [COMMENT] Failed to receive execution report
|
||||||
|
//! P1: Return value
|
||||||
|
//! P2: Apid of command for which the reception of the execution report failed
|
||||||
|
static const Event EXE_RECEPTION_FAILURE = MAKE_EVENT(16, severity::LOW);
|
||||||
|
|
||||||
|
PlocSupvHelper(object_id_t objectId);
|
||||||
|
virtual ~PlocSupvHelper();
|
||||||
|
|
||||||
|
ReturnValue_t initialize() override;
|
||||||
|
ReturnValue_t performOperation(uint8_t operationCode = 0) override;
|
||||||
|
|
||||||
|
ReturnValue_t setComIF(UartComIF* uartComfIF_);
|
||||||
|
void setComCookie(CookieIF* comCookie_);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Starts update procedure
|
||||||
|
*
|
||||||
|
* @param file File containing the update data
|
||||||
|
* @param memoryId ID of the memory where to write to
|
||||||
|
* @param startAddress Address where to write data
|
||||||
|
*
|
||||||
|
* @return RETURN_OK if successful, otherwise error return value
|
||||||
|
*/
|
||||||
|
ReturnValue_t startUpdate(std::string file, uint8_t memoryId, uint32_t startAddress);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Calling this function will initiate the procedure to request the event buffer
|
||||||
|
*/
|
||||||
|
ReturnValue_t startEventbBufferRequest(std::string path);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Can be used to interrupt a running data transfer.
|
||||||
|
*/
|
||||||
|
void stopProcess();
|
||||||
|
|
||||||
|
private:
|
||||||
|
static const uint8_t INTERFACE_ID = CLASS_ID::PLOC_SUPV_HELPER;
|
||||||
|
|
||||||
|
//! [EXPORT] : [COMMENT] File accidentally close
|
||||||
|
static const ReturnValue_t FILE_CLOSED_ACCIDENTALLY = MAKE_RETURN_CODE(0xA0);
|
||||||
|
//! [EXPORT] : [COMMENT] Process has been terminated by command
|
||||||
|
static const ReturnValue_t PROCESS_TERMINATED = MAKE_RETURN_CODE(0xA1);
|
||||||
|
//! [EXPORT] : [COMMENT] Received command with invalid pathname
|
||||||
|
static const ReturnValue_t PATH_NOT_EXISTS = MAKE_RETURN_CODE(0xA2);
|
||||||
|
//! [EXPORT] : [COMMENT] Expected event buffer TM but received space packet with other APID
|
||||||
|
static const ReturnValue_t EVENT_BUFFER_REPLY_INVALID_APID = MAKE_RETURN_CODE(0xA3);
|
||||||
|
|
||||||
|
static const uint16_t CRC16_INIT = 0xFFFF;
|
||||||
|
// Event buffer reply will carry 24 space packets with 1016 bytes and one space packet with
|
||||||
|
// 192 bytes
|
||||||
|
static const uint8_t NUM_EVENT_BUFFER_PACKETS = 25;
|
||||||
|
static const size_t SIZE_EVENT_BUFFER_FULL_PACKET = 1024;
|
||||||
|
static const size_t SIZE_EVENT_BUFFER_LAST_PACKET = 200;
|
||||||
|
static const uint32_t CRC_EXECUTION_TIMEOUT = 60000;
|
||||||
|
|
||||||
|
struct Update {
|
||||||
|
uint8_t memoryId;
|
||||||
|
uint32_t startAddress;
|
||||||
|
// Absolute name of file containing update data
|
||||||
|
std::string file;
|
||||||
|
// Size of update
|
||||||
|
uint32_t length;
|
||||||
|
uint32_t crc;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct Update update;
|
||||||
|
|
||||||
|
struct EventBufferRequest {
|
||||||
|
std::string path = "";
|
||||||
|
// Default name of file where event buffer data will be written to. Timestamp will be added to
|
||||||
|
// name when new file is created
|
||||||
|
std::string filename = "event-buffer.bin";
|
||||||
|
};
|
||||||
|
|
||||||
|
EventBufferRequest eventBufferReq;
|
||||||
|
|
||||||
|
enum class InternalState { IDLE, UPDATE, REQUEST_EVENT_BUFFER };
|
||||||
|
|
||||||
|
InternalState internalState = InternalState::IDLE;
|
||||||
|
|
||||||
|
BinarySemaphore semaphore;
|
||||||
|
#ifdef XIPHOS_Q7S
|
||||||
|
SdCardManager* sdcMan = nullptr;
|
||||||
|
#endif
|
||||||
|
uint8_t commandBuffer[supv::MAX_COMMAND_SIZE];
|
||||||
|
|
||||||
|
bool terminate = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Communication interface responsible for data transactions between OBC and Supervisor.
|
||||||
|
*/
|
||||||
|
UartComIF* uartComIF = nullptr;
|
||||||
|
// Communication cookie. Must be set by the supervisor Handler
|
||||||
|
CookieIF* comCookie = nullptr;
|
||||||
|
|
||||||
|
bool timestamping = true;
|
||||||
|
|
||||||
|
// Remembers APID to know at which command a procedure failed
|
||||||
|
uint16_t rememberApid = 0;
|
||||||
|
|
||||||
|
ReturnValue_t performUpdate();
|
||||||
|
ReturnValue_t performEventBufferRequest();
|
||||||
|
ReturnValue_t handlePacketTransmission(SpacePacket& packet,
|
||||||
|
uint32_t timeoutExecutionReport = 1000);
|
||||||
|
ReturnValue_t sendCommand(SpacePacket& packet);
|
||||||
|
/**
|
||||||
|
* @brief Function which reads form the communication interface
|
||||||
|
*
|
||||||
|
* @param data Pointer to buffer where read data will be written to
|
||||||
|
* @param raedBytes Actual number of bytes read
|
||||||
|
* @param requestBytes Number of bytes to read
|
||||||
|
*/
|
||||||
|
ReturnValue_t receive(uint8_t* data, size_t* readBytes, size_t requestBytes);
|
||||||
|
ReturnValue_t handleAck();
|
||||||
|
ReturnValue_t handleExe(uint32_t timeout = 1000);
|
||||||
|
/**
|
||||||
|
* @brief Handles reading of TM packets from the communication interface
|
||||||
|
*
|
||||||
|
* @param tmPacket Pointer to space packet where received data will be written to
|
||||||
|
* @param reaminingBytes Number of bytes to read in the space packet
|
||||||
|
* @param timeout Receive timeout in milliseconds
|
||||||
|
*/
|
||||||
|
ReturnValue_t handleTmReception(supv::TmPacket* tmPacket, size_t remainingBytes,
|
||||||
|
uint32_t timeout = 1000);
|
||||||
|
ReturnValue_t prepareUpdate();
|
||||||
|
ReturnValue_t eraseMemory();
|
||||||
|
// Calculates CRC over image. Will be used for verification after update writing has
|
||||||
|
// finished.
|
||||||
|
ReturnValue_t calcImageCrc();
|
||||||
|
ReturnValue_t handleCheckMemoryCommand();
|
||||||
|
/**
|
||||||
|
* @brief Return size of file with name filename
|
||||||
|
*
|
||||||
|
* @param filename
|
||||||
|
*
|
||||||
|
* @return The size of the file
|
||||||
|
*/
|
||||||
|
uint32_t getFileSize(std::string filename);
|
||||||
|
ReturnValue_t handleEventBufferReception();
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* BSP_Q7S_DEVICES_PLOCSUPVHELPER_H_ */
|
@ -1,385 +0,0 @@
|
|||||||
#include "PlocUpdater.h"
|
|
||||||
|
|
||||||
#include <filesystem>
|
|
||||||
#include <fstream>
|
|
||||||
#include <string>
|
|
||||||
|
|
||||||
#include "fsfw/ipc/QueueFactory.h"
|
|
||||||
|
|
||||||
PlocUpdater::PlocUpdater(object_id_t objectId)
|
|
||||||
: SystemObject(objectId), commandActionHelper(this), actionHelper(this, nullptr) {
|
|
||||||
auto mqArgs = MqArgs(this->getObjectId());
|
|
||||||
commandQueue = QueueFactory::instance()->createMessageQueue(
|
|
||||||
QUEUE_SIZE, MessageQueueMessage::MAX_MESSAGE_SIZE, &mqArgs);
|
|
||||||
}
|
|
||||||
|
|
||||||
PlocUpdater::~PlocUpdater() {}
|
|
||||||
|
|
||||||
ReturnValue_t PlocUpdater::initialize() {
|
|
||||||
#ifdef XIPHOS_Q7S
|
|
||||||
sdcMan = SdCardManager::instance();
|
|
||||||
#endif
|
|
||||||
ReturnValue_t result = SystemObject::initialize();
|
|
||||||
if (result != HasReturnvaluesIF::RETURN_OK) {
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
result = commandActionHelper.initialize();
|
|
||||||
if (result != HasReturnvaluesIF::RETURN_OK) {
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
result = actionHelper.initialize(commandQueue);
|
|
||||||
if (result != HasReturnvaluesIF::RETURN_OK) {
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
return HasReturnvaluesIF::RETURN_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
ReturnValue_t PlocUpdater::performOperation(uint8_t operationCode) {
|
|
||||||
readCommandQueue();
|
|
||||||
doStateMachine();
|
|
||||||
return HasReturnvaluesIF::RETURN_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
ReturnValue_t PlocUpdater::executeAction(ActionId_t actionId, MessageQueueId_t commandedBy,
|
|
||||||
const uint8_t* data, size_t size) {
|
|
||||||
ReturnValue_t result = RETURN_FAILED;
|
|
||||||
|
|
||||||
if (state != State::IDLE) {
|
|
||||||
return IS_BUSY;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (size > MAX_PLOC_UPDATE_PATH) {
|
|
||||||
return NAME_TOO_LONG;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (actionId) {
|
|
||||||
case UPDATE_A_UBOOT:
|
|
||||||
image = Image::A;
|
|
||||||
partition = Partition::UBOOT;
|
|
||||||
break;
|
|
||||||
case UPDATE_A_BITSTREAM:
|
|
||||||
image = Image::A;
|
|
||||||
partition = Partition::BITSTREAM;
|
|
||||||
break;
|
|
||||||
case UPDATE_A_LINUX:
|
|
||||||
image = Image::A;
|
|
||||||
partition = Partition::LINUX_OS;
|
|
||||||
break;
|
|
||||||
case UPDATE_A_APP_SW:
|
|
||||||
image = Image::A;
|
|
||||||
partition = Partition::APP_SW;
|
|
||||||
break;
|
|
||||||
case UPDATE_B_UBOOT:
|
|
||||||
image = Image::B;
|
|
||||||
partition = Partition::UBOOT;
|
|
||||||
break;
|
|
||||||
case UPDATE_B_BITSTREAM:
|
|
||||||
image = Image::B;
|
|
||||||
partition = Partition::BITSTREAM;
|
|
||||||
break;
|
|
||||||
case UPDATE_B_LINUX:
|
|
||||||
image = Image::B;
|
|
||||||
partition = Partition::LINUX_OS;
|
|
||||||
break;
|
|
||||||
case UPDATE_B_APP_SW:
|
|
||||||
image = Image::B;
|
|
||||||
partition = Partition::APP_SW;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
return INVALID_ACTION_ID;
|
|
||||||
}
|
|
||||||
|
|
||||||
result = getImageLocation(data, size);
|
|
||||||
|
|
||||||
if (result != RETURN_OK) {
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
state = State::UPDATE_AVAILABLE;
|
|
||||||
|
|
||||||
return EXECUTION_FINISHED;
|
|
||||||
}
|
|
||||||
|
|
||||||
MessageQueueId_t PlocUpdater::getCommandQueue() const { return commandQueue->getId(); }
|
|
||||||
|
|
||||||
MessageQueueIF* PlocUpdater::getCommandQueuePtr() { return commandQueue; }
|
|
||||||
|
|
||||||
void PlocUpdater::readCommandQueue() {
|
|
||||||
CommandMessage message;
|
|
||||||
ReturnValue_t result;
|
|
||||||
|
|
||||||
for (result = commandQueue->receiveMessage(&message); result == HasReturnvaluesIF::RETURN_OK;
|
|
||||||
result = commandQueue->receiveMessage(&message)) {
|
|
||||||
if (result != RETURN_OK) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
result = actionHelper.handleActionMessage(&message);
|
|
||||||
if (result == HasReturnvaluesIF::RETURN_OK) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
result = commandActionHelper.handleReply(&message);
|
|
||||||
if (result == HasReturnvaluesIF::RETURN_OK) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void PlocUpdater::doStateMachine() {
|
|
||||||
switch (state) {
|
|
||||||
case State::IDLE:
|
|
||||||
break;
|
|
||||||
case State::UPDATE_AVAILABLE:
|
|
||||||
commandUpdateAvailable();
|
|
||||||
break;
|
|
||||||
case State::UPDATE_TRANSFER:
|
|
||||||
commandUpdatePacket();
|
|
||||||
break;
|
|
||||||
case State::UPDATE_VERIFY:
|
|
||||||
commandUpdateVerify();
|
|
||||||
break;
|
|
||||||
case State::COMMAND_EXECUTING:
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ReturnValue_t PlocUpdater::checkNameLength(size_t size) {
|
|
||||||
if (size > MAX_PLOC_UPDATE_PATH) {
|
|
||||||
return NAME_TOO_LONG;
|
|
||||||
}
|
|
||||||
return RETURN_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
ReturnValue_t PlocUpdater::getImageLocation(const uint8_t* data, size_t size) {
|
|
||||||
ReturnValue_t result = checkNameLength(size);
|
|
||||||
if (result != RETURN_OK) {
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef XIPHOS_Q7S
|
|
||||||
// Check if file is stored on SD card and if associated SD card is mounted
|
|
||||||
if (std::string(reinterpret_cast<const char*>(data), SD_PREFIX_LENGTH) ==
|
|
||||||
std::string(SdCardManager::SD_0_MOUNT_POINT)) {
|
|
||||||
if (!sdcMan->isSdCardMounted(sd::SLOT_0)) {
|
|
||||||
sif::warning << "PlocUpdater::getImageLocation: SD card 0 not mounted" << std::endl;
|
|
||||||
return SD_NOT_MOUNTED;
|
|
||||||
}
|
|
||||||
} else if (std::string(reinterpret_cast<const char*>(data), SD_PREFIX_LENGTH) ==
|
|
||||||
std::string(SdCardManager::SD_1_MOUNT_POINT)) {
|
|
||||||
if (!sdcMan->isSdCardMounted(sd::SLOT_0)) {
|
|
||||||
sif::warning << "PlocUpdater::getImageLocation: SD card 1 not mounted" << std::endl;
|
|
||||||
return SD_NOT_MOUNTED;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// update image not stored on SD card
|
|
||||||
}
|
|
||||||
#endif /* BOARD_TE0720 == 0 */
|
|
||||||
|
|
||||||
updateFile = std::string(reinterpret_cast<const char*>(data), size);
|
|
||||||
|
|
||||||
// Check if file exists
|
|
||||||
if (not std::filesystem::exists(updateFile)) {
|
|
||||||
return FILE_NOT_EXISTS;
|
|
||||||
}
|
|
||||||
return RETURN_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
void PlocUpdater::stepSuccessfulReceived(ActionId_t actionId, uint8_t step) {}
|
|
||||||
|
|
||||||
void PlocUpdater::stepFailedReceived(ActionId_t actionId, uint8_t step, ReturnValue_t returnCode) {}
|
|
||||||
|
|
||||||
void PlocUpdater::dataReceived(ActionId_t actionId, const uint8_t* data, uint32_t size) {}
|
|
||||||
|
|
||||||
void PlocUpdater::completionSuccessfulReceived(ActionId_t actionId) {
|
|
||||||
switch (pendingCommand) {
|
|
||||||
case (supv::UPDATE_AVAILABLE):
|
|
||||||
state = State::UPDATE_TRANSFER;
|
|
||||||
break;
|
|
||||||
case (supv::UPDATE_IMAGE_DATA):
|
|
||||||
if (remainingPackets == 0) {
|
|
||||||
packetsSent = 0; // Reset packets sent variable for next update sequence
|
|
||||||
state = State::UPDATE_VERIFY;
|
|
||||||
} else {
|
|
||||||
state = State::UPDATE_TRANSFER;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case (supv::UPDATE_VERIFY):
|
|
||||||
triggerEvent(UPDATE_FINISHED);
|
|
||||||
state = State::IDLE;
|
|
||||||
pendingCommand = supv::NONE;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
state = State::IDLE;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void PlocUpdater::completionFailedReceived(ActionId_t actionId, ReturnValue_t returnCode) {
|
|
||||||
switch (pendingCommand) {
|
|
||||||
case (supv::UPDATE_AVAILABLE): {
|
|
||||||
triggerEvent(UPDATE_AVAILABLE_FAILED);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case (supv::UPDATE_IMAGE_DATA): {
|
|
||||||
triggerEvent(UPDATE_TRANSFER_FAILED, packetsSent);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case (supv::UPDATE_VERIFY): {
|
|
||||||
triggerEvent(UPDATE_VERIFY_FAILED);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
state = State::IDLE;
|
|
||||||
}
|
|
||||||
|
|
||||||
void PlocUpdater::commandUpdateAvailable() {
|
|
||||||
ReturnValue_t result = RETURN_OK;
|
|
||||||
|
|
||||||
if (not std::filesystem::exists(updateFile)) {
|
|
||||||
triggerEvent(UPDATE_FILE_NOT_EXISTS, static_cast<uint8_t>(state));
|
|
||||||
state = State::IDLE;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
std::ifstream file(updateFile, std::ifstream::binary);
|
|
||||||
file.seekg(0, file.end);
|
|
||||||
imageSize = static_cast<size_t>(file.tellg());
|
|
||||||
file.close();
|
|
||||||
|
|
||||||
numOfUpdatePackets = imageSize / MAX_SP_DATA;
|
|
||||||
if (imageSize % MAX_SP_DATA) {
|
|
||||||
numOfUpdatePackets++;
|
|
||||||
}
|
|
||||||
|
|
||||||
remainingPackets = numOfUpdatePackets;
|
|
||||||
packetsSent = 0;
|
|
||||||
|
|
||||||
calcImageCrc();
|
|
||||||
|
|
||||||
supv::UpdateInfo packet(supv::APID_UPDATE_AVAILABLE, static_cast<uint8_t>(image),
|
|
||||||
static_cast<uint8_t>(partition), imageSize, imageCrc, numOfUpdatePackets);
|
|
||||||
|
|
||||||
result =
|
|
||||||
commandActionHelper.commandAction(objects::PLOC_SUPERVISOR_HANDLER, supv::UPDATE_AVAILABLE,
|
|
||||||
packet.getWholeData(), packet.getFullSize());
|
|
||||||
if (result != RETURN_OK) {
|
|
||||||
sif::warning << "PlocUpdater::commandUpdateAvailable: Failed to send update available"
|
|
||||||
<< " packet to supervisor handler" << std::endl;
|
|
||||||
triggerEvent(ACTION_COMMANDING_FAILED, result, supv::UPDATE_AVAILABLE);
|
|
||||||
state = State::IDLE;
|
|
||||||
pendingCommand = supv::NONE;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
pendingCommand = supv::UPDATE_AVAILABLE;
|
|
||||||
state = State::COMMAND_EXECUTING;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
void PlocUpdater::commandUpdatePacket() {
|
|
||||||
ReturnValue_t result = RETURN_OK;
|
|
||||||
uint16_t payloadLength = 0;
|
|
||||||
|
|
||||||
if (not std::filesystem::exists(updateFile)) {
|
|
||||||
triggerEvent(UPDATE_FILE_NOT_EXISTS, static_cast<uint8_t>(state), packetsSent);
|
|
||||||
state = State::IDLE;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
std::ifstream file(updateFile, std::ifstream::binary);
|
|
||||||
file.seekg(packetsSent * MAX_SP_DATA, file.beg);
|
|
||||||
|
|
||||||
if (remainingPackets == 1) {
|
|
||||||
payloadLength = imageSize - static_cast<uint16_t>(file.tellg());
|
|
||||||
} else {
|
|
||||||
payloadLength = MAX_SP_DATA;
|
|
||||||
}
|
|
||||||
|
|
||||||
supv::UpdatePacket packet(payloadLength);
|
|
||||||
file.read(reinterpret_cast<char*>(packet.getDataFieldPointer()), payloadLength);
|
|
||||||
file.close();
|
|
||||||
// sequence count of first packet is 1
|
|
||||||
packet.setPacketSequenceCount((packetsSent + 1) & supv::SEQUENCE_COUNT_MASK);
|
|
||||||
if (numOfUpdatePackets > 1) {
|
|
||||||
adjustSequenceFlags(packet);
|
|
||||||
}
|
|
||||||
packet.makeCrc();
|
|
||||||
|
|
||||||
result =
|
|
||||||
commandActionHelper.commandAction(objects::PLOC_SUPERVISOR_HANDLER, supv::UPDATE_IMAGE_DATA,
|
|
||||||
packet.getWholeData(), packet.getFullSize());
|
|
||||||
|
|
||||||
if (result != RETURN_OK) {
|
|
||||||
sif::warning << "PlocUpdater::commandUpdateAvailable: Failed to send update"
|
|
||||||
<< " packet to supervisor handler" << std::endl;
|
|
||||||
triggerEvent(ACTION_COMMANDING_FAILED, result, supv::UPDATE_IMAGE_DATA);
|
|
||||||
state = State::IDLE;
|
|
||||||
pendingCommand = supv::NONE;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
remainingPackets--;
|
|
||||||
packetsSent++;
|
|
||||||
|
|
||||||
pendingCommand = supv::UPDATE_IMAGE_DATA;
|
|
||||||
state = State::COMMAND_EXECUTING;
|
|
||||||
}
|
|
||||||
|
|
||||||
void PlocUpdater::commandUpdateVerify() {
|
|
||||||
ReturnValue_t result = RETURN_OK;
|
|
||||||
|
|
||||||
supv::UpdateInfo packet(supv::APID_UPDATE_VERIFY, static_cast<uint8_t>(image),
|
|
||||||
static_cast<uint8_t>(partition), imageSize, imageCrc, numOfUpdatePackets);
|
|
||||||
|
|
||||||
result = commandActionHelper.commandAction(objects::PLOC_SUPERVISOR_HANDLER, supv::UPDATE_VERIFY,
|
|
||||||
packet.getWholeData(), packet.getFullSize());
|
|
||||||
if (result != RETURN_OK) {
|
|
||||||
sif::warning << "PlocUpdater::commandUpdateAvailable: Failed to send update available"
|
|
||||||
<< " packet to supervisor handler" << std::endl;
|
|
||||||
triggerEvent(ACTION_COMMANDING_FAILED, result, supv::UPDATE_VERIFY);
|
|
||||||
state = State::IDLE;
|
|
||||||
pendingCommand = supv::NONE;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
state = State::COMMAND_EXECUTING;
|
|
||||||
pendingCommand = supv::UPDATE_VERIFY;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
void PlocUpdater::calcImageCrc() {
|
|
||||||
std::ifstream file(updateFile, std::ifstream::binary);
|
|
||||||
file.seekg(0, file.end);
|
|
||||||
uint32_t count;
|
|
||||||
uint32_t bit;
|
|
||||||
uint32_t remainder = INITIAL_REMAINDER_32;
|
|
||||||
char input;
|
|
||||||
for (count = 0; count < imageSize; count++) {
|
|
||||||
file.seekg(count, file.beg);
|
|
||||||
file.read(&input, 1);
|
|
||||||
remainder ^= (input << 16);
|
|
||||||
for (bit = 8; bit > 0; --bit) {
|
|
||||||
if (remainder & TOPBIT_32) {
|
|
||||||
remainder = (remainder << 1) ^ POLYNOMIAL_32;
|
|
||||||
} else {
|
|
||||||
remainder = (remainder << 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
file.close();
|
|
||||||
imageCrc = (remainder ^ FINAL_XOR_VALUE_32);
|
|
||||||
}
|
|
||||||
|
|
||||||
void PlocUpdater::adjustSequenceFlags(supv::UpdatePacket& packet) {
|
|
||||||
if (packetsSent == 0) {
|
|
||||||
packet.setSequenceFlags(static_cast<uint8_t>(supv::SequenceFlags::FIRST_PKT));
|
|
||||||
} else if (remainingPackets == 1) {
|
|
||||||
packet.setSequenceFlags(static_cast<uint8_t>(supv::SequenceFlags::LAST_PKT));
|
|
||||||
} else {
|
|
||||||
packet.setSequenceFlags(static_cast<uint8_t>(supv::SequenceFlags::CONTINUED_PKT));
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,174 +0,0 @@
|
|||||||
#ifndef MISSION_DEVICES_PLOCUPDATER_H_
|
|
||||||
#define MISSION_DEVICES_PLOCUPDATER_H_
|
|
||||||
|
|
||||||
#include <linux/devices/devicedefinitions/PlocSupervisorDefinitions.h>
|
|
||||||
|
|
||||||
#include "OBSWConfig.h"
|
|
||||||
#include "bsp_q7s/memory/SdCardManager.h"
|
|
||||||
#include "eive/definitions.h"
|
|
||||||
#include "fsfw/action/ActionHelper.h"
|
|
||||||
#include "fsfw/action/CommandActionHelper.h"
|
|
||||||
#include "fsfw/action/CommandsActionsIF.h"
|
|
||||||
#include "fsfw/action/HasActionsIF.h"
|
|
||||||
#include "fsfw/objectmanager/SystemObject.h"
|
|
||||||
#include "fsfw/returnvalues/HasReturnvaluesIF.h"
|
|
||||||
#include "fsfw/tasks/ExecutableObjectIF.h"
|
|
||||||
#include "fsfw/tmtcpacket/SpacePacket.h"
|
|
||||||
#include "linux/devices/devicedefinitions/PlocSupervisorDefinitions.h"
|
|
||||||
#include "linux/fsfwconfig/objects/systemObjectList.h"
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief An object of this class can be used to perform the software updates of the PLOC. The
|
|
||||||
* software update will be read from one of the SD cards, split into multiple space
|
|
||||||
* packets and sent to the PlocSupervisorHandler.
|
|
||||||
*
|
|
||||||
* @details The MPSoC has two boot memories (NVM0 and NVM1) where each stores two images (Partition
|
|
||||||
* A and Partition B)
|
|
||||||
*
|
|
||||||
* @author J. Meier
|
|
||||||
*/
|
|
||||||
class PlocUpdater : public SystemObject,
|
|
||||||
public HasActionsIF,
|
|
||||||
public ExecutableObjectIF,
|
|
||||||
public HasReturnvaluesIF,
|
|
||||||
public CommandsActionsIF {
|
|
||||||
public:
|
|
||||||
static const ActionId_t UPDATE_A_UBOOT = 0;
|
|
||||||
static const ActionId_t UPDATE_A_BITSTREAM = 1;
|
|
||||||
static const ActionId_t UPDATE_A_LINUX = 2;
|
|
||||||
static const ActionId_t UPDATE_A_APP_SW = 3;
|
|
||||||
static const ActionId_t UPDATE_B_UBOOT = 4;
|
|
||||||
static const ActionId_t UPDATE_B_BITSTREAM = 5;
|
|
||||||
static const ActionId_t UPDATE_B_LINUX = 6;
|
|
||||||
static const ActionId_t UPDATE_B_APP_SW = 7;
|
|
||||||
|
|
||||||
PlocUpdater(object_id_t objectId);
|
|
||||||
virtual ~PlocUpdater();
|
|
||||||
|
|
||||||
ReturnValue_t performOperation(uint8_t operationCode = 0) override;
|
|
||||||
ReturnValue_t executeAction(ActionId_t actionId, MessageQueueId_t commandedBy,
|
|
||||||
const uint8_t* data, size_t size);
|
|
||||||
MessageQueueId_t getCommandQueue() const;
|
|
||||||
ReturnValue_t initialize() override;
|
|
||||||
MessageQueueIF* getCommandQueuePtr() override;
|
|
||||||
void stepSuccessfulReceived(ActionId_t actionId, uint8_t step) override;
|
|
||||||
void stepFailedReceived(ActionId_t actionId, uint8_t step, ReturnValue_t returnCode) override;
|
|
||||||
void dataReceived(ActionId_t actionId, const uint8_t* data, uint32_t size) override;
|
|
||||||
void completionSuccessfulReceived(ActionId_t actionId) override;
|
|
||||||
void completionFailedReceived(ActionId_t actionId, ReturnValue_t returnCode) override;
|
|
||||||
|
|
||||||
private:
|
|
||||||
static const uint8_t INTERFACE_ID = CLASS_ID::PLOC_UPDATER;
|
|
||||||
|
|
||||||
//! [EXPORT] : [COMMENT] Updater is already performing an update
|
|
||||||
static const ReturnValue_t UPDATER_BUSY = MAKE_RETURN_CODE(0xA0);
|
|
||||||
//! [EXPORT] : [COMMENT] Received update command with invalid path string (too long).
|
|
||||||
static const ReturnValue_t NAME_TOO_LONG = MAKE_RETURN_CODE(0xA1);
|
|
||||||
//! [EXPORT] : [COMMENT] Received command to initiate update but SD card with update image not
|
|
||||||
//! mounted.
|
|
||||||
static const ReturnValue_t SD_NOT_MOUNTED = MAKE_RETURN_CODE(0xA2);
|
|
||||||
//! [EXPORT] : [COMMENT] Update file received with update command does not exist.
|
|
||||||
static const ReturnValue_t FILE_NOT_EXISTS = MAKE_RETURN_CODE(0xA3);
|
|
||||||
|
|
||||||
static const uint8_t SUBSYSTEM_ID = SUBSYSTEM_ID::PLOC_UPDATER;
|
|
||||||
|
|
||||||
//! [EXPORT] : [COMMENT] Try to read update file but the file does not exist.
|
|
||||||
//! P1: Indicates in which state the file read fails
|
|
||||||
//! P2: During the update transfer the second parameter gives information about the number of
|
|
||||||
//! already sent packets
|
|
||||||
static const Event UPDATE_FILE_NOT_EXISTS = MAKE_EVENT(0, severity::LOW);
|
|
||||||
//! [EXPORT] : [COMMENT] Failed to send command to supervisor handler
|
|
||||||
//! P1: Return value of CommandActionHelper::commandAction
|
|
||||||
//! P2: Action ID of command to send
|
|
||||||
static const Event ACTION_COMMANDING_FAILED = MAKE_EVENT(1, severity::LOW);
|
|
||||||
//! [EXPORT] : [COMMENT] Supervisor handler replied action message indicating a command execution
|
|
||||||
//! failure of the update available command
|
|
||||||
static const Event UPDATE_AVAILABLE_FAILED = MAKE_EVENT(2, severity::LOW);
|
|
||||||
//! [EXPORT] : [COMMENT] Supervisor handler failed to transfer an update space packet.
|
|
||||||
//! P1: Parameter holds the number of update packets already sent (inclusive the failed packet)
|
|
||||||
static const Event UPDATE_TRANSFER_FAILED = MAKE_EVENT(3, severity::LOW);
|
|
||||||
//! [EXPORT] : [COMMENT] Supervisor failed to execute the update verify command.
|
|
||||||
static const Event UPDATE_VERIFY_FAILED = MAKE_EVENT(4, severity::LOW);
|
|
||||||
//! [EXPORT] : [COMMENT] MPSoC update successful completed
|
|
||||||
static const Event UPDATE_FINISHED = MAKE_EVENT(5, severity::INFO);
|
|
||||||
|
|
||||||
static const uint32_t QUEUE_SIZE = config::PLOC_UPDATER_QUEUE_SIZE;
|
|
||||||
static const size_t MAX_PLOC_UPDATE_PATH = 50;
|
|
||||||
static const size_t SD_PREFIX_LENGTH = 8;
|
|
||||||
// Maximum size of update payload data per space packet (max size of space packet is 1024 bytes)
|
|
||||||
static const size_t MAX_SP_DATA = 1016;
|
|
||||||
|
|
||||||
static const uint32_t TOPBIT_32 = (1 << 31);
|
|
||||||
static const uint32_t POLYNOMIAL_32 = 0x04C11DB7;
|
|
||||||
static const uint32_t INITIAL_REMAINDER_32 = 0xFFFFFFFF;
|
|
||||||
static const uint32_t FINAL_XOR_VALUE_32 = 0xFFFFFFFF;
|
|
||||||
|
|
||||||
MessageQueueIF* commandQueue = nullptr;
|
|
||||||
|
|
||||||
#ifdef XIPHOS_Q7S
|
|
||||||
SdCardManager* sdcMan = nullptr;
|
|
||||||
#endif
|
|
||||||
CommandActionHelper commandActionHelper;
|
|
||||||
|
|
||||||
ActionHelper actionHelper;
|
|
||||||
|
|
||||||
enum class State : uint8_t {
|
|
||||||
IDLE,
|
|
||||||
UPDATE_AVAILABLE,
|
|
||||||
UPDATE_TRANSFER,
|
|
||||||
UPDATE_VERIFY,
|
|
||||||
COMMAND_EXECUTING
|
|
||||||
};
|
|
||||||
|
|
||||||
State state = State::IDLE;
|
|
||||||
|
|
||||||
ActionId_t pendingCommand = supv::NONE;
|
|
||||||
|
|
||||||
enum class Image : uint8_t { NONE, A, B };
|
|
||||||
|
|
||||||
Image image = Image::NONE;
|
|
||||||
|
|
||||||
enum class Partition : uint8_t { NONE, UBOOT, BITSTREAM, LINUX_OS, APP_SW };
|
|
||||||
|
|
||||||
Partition partition = Partition::NONE;
|
|
||||||
|
|
||||||
uint32_t packetsSent = 0;
|
|
||||||
uint32_t remainingPackets = 0;
|
|
||||||
// Number of packets required to transfer the update image
|
|
||||||
uint32_t numOfUpdatePackets = 0;
|
|
||||||
|
|
||||||
std::string updateFile;
|
|
||||||
uint32_t imageSize = 0;
|
|
||||||
uint32_t imageCrc = 0;
|
|
||||||
|
|
||||||
void readCommandQueue();
|
|
||||||
void doStateMachine();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Extracts the path and name of the update image from the service 8 command data.
|
|
||||||
*/
|
|
||||||
ReturnValue_t getImageLocation(const uint8_t* data, size_t size);
|
|
||||||
|
|
||||||
ReturnValue_t checkNameLength(size_t size);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Prepares and sends update available command to PLOC supervisor handler.
|
|
||||||
*/
|
|
||||||
void commandUpdateAvailable();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Prepares and sends and update packet to the PLOC supervisor handler.
|
|
||||||
*/
|
|
||||||
void commandUpdatePacket();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Prepares and sends the update verification packet to the PLOC supervisor handler.
|
|
||||||
*/
|
|
||||||
void commandUpdateVerify();
|
|
||||||
|
|
||||||
void calcImageCrc();
|
|
||||||
|
|
||||||
void adjustSequenceFlags(supv::UpdatePacket& packet);
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif /* MISSION_DEVICES_PLOCUPDATER_H_ */
|
|
@ -6,6 +6,7 @@
|
|||||||
#include "OBSWConfig.h"
|
#include "OBSWConfig.h"
|
||||||
#include "fsfw/timemanager/Countdown.h"
|
#include "fsfw/timemanager/Countdown.h"
|
||||||
#include "linux/devices/devicedefinitions/StarTrackerDefinitions.h"
|
#include "linux/devices/devicedefinitions/StarTrackerDefinitions.h"
|
||||||
|
#include "mission/utility/Filenaming.h"
|
||||||
#include "mission/utility/ProgressPrinter.h"
|
#include "mission/utility/ProgressPrinter.h"
|
||||||
#include "mission/utility/Timestamp.h"
|
#include "mission/utility/Timestamp.h"
|
||||||
|
|
||||||
@ -181,7 +182,8 @@ ReturnValue_t StrHelper::performImageDownload() {
|
|||||||
struct DownloadActionRequest downloadReq;
|
struct DownloadActionRequest downloadReq;
|
||||||
uint32_t size = 0;
|
uint32_t size = 0;
|
||||||
uint32_t retries = 0;
|
uint32_t retries = 0;
|
||||||
std::string image = makeFullFilename(downloadImage.path, downloadImage.filename);
|
std::string image = Filenaming::generateAbsoluteFilename(downloadImage.path,
|
||||||
|
downloadImage.filename, timestamping);
|
||||||
std::ofstream file(image, std::ios_base::out);
|
std::ofstream file(image, std::ios_base::out);
|
||||||
if (not std::filesystem::exists(image)) {
|
if (not std::filesystem::exists(image)) {
|
||||||
return FILE_CREATION_FAILED;
|
return FILE_CREATION_FAILED;
|
||||||
@ -400,7 +402,8 @@ ReturnValue_t StrHelper::performFlashRead() {
|
|||||||
uint32_t size = 0;
|
uint32_t size = 0;
|
||||||
uint32_t retries = 0;
|
uint32_t retries = 0;
|
||||||
Timestamp timestamp;
|
Timestamp timestamp;
|
||||||
std::string fullname = makeFullFilename(flashRead.path, flashRead.filename);
|
std::string fullname =
|
||||||
|
Filenaming::generateAbsoluteFilename(flashRead.path, flashRead.filename, timestamping);
|
||||||
std::ofstream file(fullname, std::ios_base::app | std::ios_base::out);
|
std::ofstream file(fullname, std::ios_base::app | std::ios_base::out);
|
||||||
if (not std::filesystem::exists(fullname)) {
|
if (not std::filesystem::exists(fullname)) {
|
||||||
return FILE_CREATION_FAILED;
|
return FILE_CREATION_FAILED;
|
||||||
@ -588,14 +591,3 @@ ReturnValue_t StrHelper::unlockAndEraseRegions(uint32_t from, uint32_t to) {
|
|||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string StrHelper::makeFullFilename(std::string path, std::string filename) {
|
|
||||||
std::string image;
|
|
||||||
Timestamp timestamp;
|
|
||||||
if (timestamping) {
|
|
||||||
image = path + "/" + timestamp.str() + filename;
|
|
||||||
} else {
|
|
||||||
image = path + "/" + filename;
|
|
||||||
}
|
|
||||||
return image;
|
|
||||||
}
|
|
||||||
|
@ -173,8 +173,7 @@ class StrHelper : public SystemObject, public ExecutableObjectIF, public HasRetu
|
|||||||
static const size_t SIZE_IMAGE_PART = 1024;
|
static const size_t SIZE_IMAGE_PART = 1024;
|
||||||
static const uint32_t FLASH_REGION_SIZE = 0x20000;
|
static const uint32_t FLASH_REGION_SIZE = 0x20000;
|
||||||
|
|
||||||
class ImageDownload {
|
struct ImageDownload {
|
||||||
public:
|
|
||||||
static const uint32_t LAST_POSITION = 4095;
|
static const uint32_t LAST_POSITION = 4095;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -199,15 +198,13 @@ class StrHelper : public SystemObject, public ExecutableObjectIF, public HasRetu
|
|||||||
|
|
||||||
BinarySemaphore semaphore;
|
BinarySemaphore semaphore;
|
||||||
|
|
||||||
class UploadImage {
|
struct UploadImage {
|
||||||
public:
|
|
||||||
// Name including absolute path of image to upload
|
// Name including absolute path of image to upload
|
||||||
std::string uploadFile;
|
std::string uploadFile;
|
||||||
};
|
};
|
||||||
UploadImage uploadImage;
|
UploadImage uploadImage;
|
||||||
|
|
||||||
class DownloadImage {
|
struct DownloadImage {
|
||||||
public:
|
|
||||||
// Path where the downloaded image will be stored
|
// Path where the downloaded image will be stored
|
||||||
std::string path;
|
std::string path;
|
||||||
// Default name of downloaded image, can be changed via command
|
// Default name of downloaded image, can be changed via command
|
||||||
@ -215,8 +212,7 @@ class StrHelper : public SystemObject, public ExecutableObjectIF, public HasRetu
|
|||||||
};
|
};
|
||||||
DownloadImage downloadImage;
|
DownloadImage downloadImage;
|
||||||
|
|
||||||
class FlashWrite {
|
struct FlashWrite {
|
||||||
public:
|
|
||||||
// File which contains data to write when executing the flash write command
|
// File which contains data to write when executing the flash write command
|
||||||
std::string fullname;
|
std::string fullname;
|
||||||
// The first region to write to
|
// The first region to write to
|
||||||
@ -229,8 +225,7 @@ class StrHelper : public SystemObject, public ExecutableObjectIF, public HasRetu
|
|||||||
};
|
};
|
||||||
FlashWrite flashWrite;
|
FlashWrite flashWrite;
|
||||||
|
|
||||||
class FlashRead {
|
struct FlashRead {
|
||||||
public:
|
|
||||||
// Path where the file containing the read data will be stored
|
// Path where the file containing the read data will be stored
|
||||||
std::string path = "";
|
std::string path = "";
|
||||||
// Default name of file containing the data read from flash, can be changed via command
|
// Default name of file containing the data read from flash, can be changed via command
|
||||||
@ -349,16 +344,6 @@ class StrHelper : public SystemObject, public ExecutableObjectIF, public HasRetu
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
ReturnValue_t unlockAndEraseRegions(uint32_t from, uint32_t to);
|
ReturnValue_t unlockAndEraseRegions(uint32_t from, uint32_t to);
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Creates full filename either with timestamp or without
|
|
||||||
*
|
|
||||||
* @param path Path where to create the file
|
|
||||||
* @param filename Name fo the file
|
|
||||||
*
|
|
||||||
* @return Full filename
|
|
||||||
*/
|
|
||||||
std::string makeFullFilename(std::string path, std::string filename);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* BSP_Q7S_DEVICES_STRHELPER_H_ */
|
#endif /* BSP_Q7S_DEVICES_STRHELPER_H_ */
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
namespace SUBSYSTEM_ID {
|
namespace SUBSYSTEM_ID {
|
||||||
enum : uint8_t {
|
enum : uint8_t {
|
||||||
SUBSYSTEM_ID_START = COMMON_SUBSYSTEM_ID_END,
|
SUBSYSTEM_ID_START = COMMON_SUBSYSTEM_ID_END,
|
||||||
CORE = 136,
|
CORE = 137,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* @brief Auto-generated event translation file. Contains 187 translations.
|
* @brief Auto-generated event translation file. Contains 200 translations.
|
||||||
* @details
|
* @details
|
||||||
* Generated on: 2022-05-03 16:32:00
|
* Generated on: 2022-05-08 13:11:24
|
||||||
*/
|
*/
|
||||||
#include "translateEvents.h"
|
#include "translateEvents.h"
|
||||||
|
|
||||||
@ -102,7 +102,7 @@ const char *MEMORY_READ_RPT_CRC_FAILURE_STRING = "MEMORY_READ_RPT_CRC_FAILURE";
|
|||||||
const char *ACK_FAILURE_STRING = "ACK_FAILURE";
|
const char *ACK_FAILURE_STRING = "ACK_FAILURE";
|
||||||
const char *EXE_FAILURE_STRING = "EXE_FAILURE";
|
const char *EXE_FAILURE_STRING = "EXE_FAILURE";
|
||||||
const char *MPSOC_HANDLER_CRC_FAILURE_STRING = "MPSOC_HANDLER_CRC_FAILURE";
|
const char *MPSOC_HANDLER_CRC_FAILURE_STRING = "MPSOC_HANDLER_CRC_FAILURE";
|
||||||
const char *MPSOC_HANDLER_SEQ_CNT_MISMATCH_STRING = "MPSOC_HANDLER_SEQ_CNT_MISMATCH";
|
const char *MPSOC_HANDLER_SEQUENCE_COUNT_MISMATCH_STRING = "MPSOC_HANDLER_SEQUENCE_COUNT_MISMATCH";
|
||||||
const char *MPSOC_SHUTDOWN_FAILED_STRING = "MPSOC_SHUTDOWN_FAILED";
|
const char *MPSOC_SHUTDOWN_FAILED_STRING = "MPSOC_SHUTDOWN_FAILED";
|
||||||
const char *SELF_TEST_I2C_FAILURE_STRING = "SELF_TEST_I2C_FAILURE";
|
const char *SELF_TEST_I2C_FAILURE_STRING = "SELF_TEST_I2C_FAILURE";
|
||||||
const char *SELF_TEST_SPI_FAILURE_STRING = "SELF_TEST_SPI_FAILURE";
|
const char *SELF_TEST_SPI_FAILURE_STRING = "SELF_TEST_SPI_FAILURE";
|
||||||
@ -113,20 +113,16 @@ const char *SELF_TEST_MTM_RANGE_FAILURE_STRING = "SELF_TEST_MTM_RANGE_FAILURE";
|
|||||||
const char *SELF_TEST_COIL_CURRENT_FAILURE_STRING = "SELF_TEST_COIL_CURRENT_FAILURE";
|
const char *SELF_TEST_COIL_CURRENT_FAILURE_STRING = "SELF_TEST_COIL_CURRENT_FAILURE";
|
||||||
const char *INVALID_ERROR_BYTE_STRING = "INVALID_ERROR_BYTE";
|
const char *INVALID_ERROR_BYTE_STRING = "INVALID_ERROR_BYTE";
|
||||||
const char *ERROR_STATE_STRING = "ERROR_STATE";
|
const char *ERROR_STATE_STRING = "ERROR_STATE";
|
||||||
|
const char *RESET_OCCURED_STRING = "RESET_OCCURED";
|
||||||
const char *BOOTING_FIRMWARE_FAILED_STRING = "BOOTING_FIRMWARE_FAILED";
|
const char *BOOTING_FIRMWARE_FAILED_STRING = "BOOTING_FIRMWARE_FAILED";
|
||||||
const char *BOOTING_BOOTLOADER_FAILED_STRING = "BOOTING_BOOTLOADER_FAILED";
|
const char *BOOTING_BOOTLOADER_FAILED_STRING = "BOOTING_BOOTLOADER_FAILED";
|
||||||
const char *SUPV_MEMORY_READ_RPT_CRC_FAILURE_STRING = "SUPV_MEMORY_READ_RPT_CRC_FAILURE";
|
const char *SUPV_MEMORY_READ_RPT_CRC_FAILURE_STRING = "SUPV_MEMORY_READ_RPT_CRC_FAILURE";
|
||||||
const char *SUPV_ACK_FAILURE_STRING = "SUPV_ACK_FAILURE";
|
const char *SUPV_ACK_FAILURE_STRING = "SUPV_ACK_FAILURE";
|
||||||
const char *SUPV_EXE_FAILURE_STRING = "SUPV_EXE_FAILURE";
|
const char *SUPV_EXE_FAILURE_STRING = "SUPV_EXE_FAILURE";
|
||||||
const char *SUPV_CRC_FAILURE_EVENT_STRING = "SUPV_CRC_FAILURE_EVENT";
|
const char *SUPV_CRC_FAILURE_EVENT_STRING = "SUPV_CRC_FAILURE_EVENT";
|
||||||
|
const char *SUPV_MPSOC_SHUWDOWN_BUILD_FAILED_STRING = "SUPV_MPSOC_SHUWDOWN_BUILD_FAILED";
|
||||||
const char *SANITIZATION_FAILED_STRING = "SANITIZATION_FAILED";
|
const char *SANITIZATION_FAILED_STRING = "SANITIZATION_FAILED";
|
||||||
const char *MOUNTED_SD_CARD_STRING = "MOUNTED_SD_CARD";
|
const char *MOUNTED_SD_CARD_STRING = "MOUNTED_SD_CARD";
|
||||||
const char *UPDATE_FILE_NOT_EXISTS_STRING = "UPDATE_FILE_NOT_EXISTS";
|
|
||||||
const char *ACTION_COMMANDING_FAILED_STRING = "ACTION_COMMANDING_FAILED";
|
|
||||||
const char *UPDATE_AVAILABLE_FAILED_STRING = "UPDATE_AVAILABLE_FAILED";
|
|
||||||
const char *UPDATE_TRANSFER_FAILED_STRING = "UPDATE_TRANSFER_FAILED";
|
|
||||||
const char *UPDATE_VERIFY_FAILED_STRING = "UPDATE_VERIFY_FAILED";
|
|
||||||
const char *UPDATE_FINISHED_STRING = "UPDATE_FINISHED";
|
|
||||||
const char *SEND_MRAM_DUMP_FAILED_STRING = "SEND_MRAM_DUMP_FAILED";
|
const char *SEND_MRAM_DUMP_FAILED_STRING = "SEND_MRAM_DUMP_FAILED";
|
||||||
const char *MRAM_DUMP_FAILED_STRING = "MRAM_DUMP_FAILED";
|
const char *MRAM_DUMP_FAILED_STRING = "MRAM_DUMP_FAILED";
|
||||||
const char *MRAM_DUMP_FINISHED_STRING = "MRAM_DUMP_FINISHED";
|
const char *MRAM_DUMP_FINISHED_STRING = "MRAM_DUMP_FINISHED";
|
||||||
@ -153,15 +149,15 @@ const char *STR_HELPER_SENDING_PACKET_FAILED_STRING = "STR_HELPER_SENDING_PACKET
|
|||||||
const char *STR_HELPER_REQUESTING_MSG_FAILED_STRING = "STR_HELPER_REQUESTING_MSG_FAILED";
|
const char *STR_HELPER_REQUESTING_MSG_FAILED_STRING = "STR_HELPER_REQUESTING_MSG_FAILED";
|
||||||
const char *MPSOC_FLASH_WRITE_FAILED_STRING = "MPSOC_FLASH_WRITE_FAILED";
|
const char *MPSOC_FLASH_WRITE_FAILED_STRING = "MPSOC_FLASH_WRITE_FAILED";
|
||||||
const char *MPSOC_FLASH_WRITE_SUCCESSFUL_STRING = "MPSOC_FLASH_WRITE_SUCCESSFUL";
|
const char *MPSOC_FLASH_WRITE_SUCCESSFUL_STRING = "MPSOC_FLASH_WRITE_SUCCESSFUL";
|
||||||
const char *SENDING_COMMAND_FAILED_STRING = "SENDING_COMMAND_FAILED";
|
const char *MPSOC_SENDING_COMMAND_FAILED_STRING = "MPSOC_SENDING_COMMAND_FAILED";
|
||||||
const char *MPSOC_HELPER_REQUESTING_REPLY_FAILED_STRING = "MPSOC_HELPER_REQUESTING_REPLY_FAILED";
|
const char *MPSOC_HELPER_REQUESTING_REPLY_FAILED_STRING = "MPSOC_HELPER_REQUESTING_REPLY_FAILED";
|
||||||
const char *MPSOC_HELPER_READING_REPLY_FAILED_STRING = "MPSOC_HELPER_READING_REPLY_FAILED";
|
const char *MPSOC_HELPER_READING_REPLY_FAILED_STRING = "MPSOC_HELPER_READING_REPLY_FAILED";
|
||||||
const char *MISSING_ACK_STRING = "MISSING_ACK";
|
const char *MPSOC_MISSING_ACK_STRING = "MPSOC_MISSING_ACK";
|
||||||
const char *MISSING_EXE_STRING = "MISSING_EXE";
|
const char *MPSOC_MISSING_EXE_STRING = "MPSOC_MISSING_EXE";
|
||||||
const char *ACK_FAILURE_REPORT_STRING = "ACK_FAILURE_REPORT";
|
const char *MPSOC_ACK_FAILURE_REPORT_STRING = "MPSOC_ACK_FAILURE_REPORT";
|
||||||
const char *EXE_FAILURE_REPORT_STRING = "EXE_FAILURE_REPORT";
|
const char *MPSOC_EXE_FAILURE_REPORT_STRING = "MPSOC_EXE_FAILURE_REPORT";
|
||||||
const char *ACK_INVALID_APID_STRING = "ACK_INVALID_APID";
|
const char *MPSOC_ACK_INVALID_APID_STRING = "MPSOC_ACK_INVALID_APID";
|
||||||
const char *EXE_INVALID_APID_STRING = "EXE_INVALID_APID";
|
const char *MPSOC_EXE_INVALID_APID_STRING = "MPSOC_EXE_INVALID_APID";
|
||||||
const char *MPSOC_HELPER_SEQ_CNT_MISMATCH_STRING = "MPSOC_HELPER_SEQ_CNT_MISMATCH";
|
const char *MPSOC_HELPER_SEQ_CNT_MISMATCH_STRING = "MPSOC_HELPER_SEQ_CNT_MISMATCH";
|
||||||
const char *TRANSITION_BACK_TO_OFF_STRING = "TRANSITION_BACK_TO_OFF";
|
const char *TRANSITION_BACK_TO_OFF_STRING = "TRANSITION_BACK_TO_OFF";
|
||||||
const char *NEG_V_OUT_OF_BOUNDS_STRING = "NEG_V_OUT_OF_BOUNDS";
|
const char *NEG_V_OUT_OF_BOUNDS_STRING = "NEG_V_OUT_OF_BOUNDS";
|
||||||
@ -184,6 +180,23 @@ const char *GPS_FIX_CHANGE_STRING = "GPS_FIX_CHANGE";
|
|||||||
const char *P60_BOOT_COUNT_STRING = "P60_BOOT_COUNT";
|
const char *P60_BOOT_COUNT_STRING = "P60_BOOT_COUNT";
|
||||||
const char *BATT_MODE_STRING = "BATT_MODE";
|
const char *BATT_MODE_STRING = "BATT_MODE";
|
||||||
const char *BATT_MODE_CHANGED_STRING = "BATT_MODE_CHANGED";
|
const char *BATT_MODE_CHANGED_STRING = "BATT_MODE_CHANGED";
|
||||||
|
const char *SUPV_UPDATE_FAILED_STRING = "SUPV_UPDATE_FAILED";
|
||||||
|
const char *SUPV_UPDATE_SUCCESSFUL_STRING = "SUPV_UPDATE_SUCCESSFUL";
|
||||||
|
const char *TERMINATED_UPDATE_PROCEDURE_STRING = "TERMINATED_UPDATE_PROCEDURE";
|
||||||
|
const char *SUPV_EVENT_BUFFER_REQUEST_SUCCESSFUL_STRING = "SUPV_EVENT_BUFFER_REQUEST_SUCCESSFUL";
|
||||||
|
const char *SUPV_EVENT_BUFFER_REQUEST_FAILED_STRING = "SUPV_EVENT_BUFFER_REQUEST_FAILED";
|
||||||
|
const char *SUPV_EVENT_BUFFER_REQUEST_TERMINATED_STRING = "SUPV_EVENT_BUFFER_REQUEST_TERMINATED";
|
||||||
|
const char *SUPV_SENDING_COMMAND_FAILED_STRING = "SUPV_SENDING_COMMAND_FAILED";
|
||||||
|
const char *SUPV_HELPER_REQUESTING_REPLY_FAILED_STRING = "SUPV_HELPER_REQUESTING_REPLY_FAILED";
|
||||||
|
const char *SUPV_HELPER_READING_REPLY_FAILED_STRING = "SUPV_HELPER_READING_REPLY_FAILED";
|
||||||
|
const char *SUPV_MISSING_ACK_STRING = "SUPV_MISSING_ACK";
|
||||||
|
const char *SUPV_MISSING_EXE_STRING = "SUPV_MISSING_EXE";
|
||||||
|
const char *SUPV_ACK_FAILURE_REPORT_STRING = "SUPV_ACK_FAILURE_REPORT";
|
||||||
|
const char *SUPV_EXE_FAILURE_REPORT_STRING = "SUPV_EXE_FAILURE_REPORT";
|
||||||
|
const char *SUPV_ACK_INVALID_APID_STRING = "SUPV_ACK_INVALID_APID";
|
||||||
|
const char *SUPV_EXE_INVALID_APID_STRING = "SUPV_EXE_INVALID_APID";
|
||||||
|
const char *ACK_RECEPTION_FAILURE_STRING = "ACK_RECEPTION_FAILURE";
|
||||||
|
const char *EXE_RECEPTION_FAILURE_STRING = "EXE_RECEPTION_FAILURE";
|
||||||
const char *ALLOC_FAILURE_STRING = "ALLOC_FAILURE";
|
const char *ALLOC_FAILURE_STRING = "ALLOC_FAILURE";
|
||||||
const char *REBOOT_SW_STRING = "REBOOT_SW";
|
const char *REBOOT_SW_STRING = "REBOOT_SW";
|
||||||
const char *REBOOT_MECHANISM_TRIGGERED_STRING = "REBOOT_MECHANISM_TRIGGERED";
|
const char *REBOOT_MECHANISM_TRIGGERED_STRING = "REBOOT_MECHANISM_TRIGGERED";
|
||||||
@ -386,7 +399,7 @@ const char *translateEvents(Event event) {
|
|||||||
case (11604):
|
case (11604):
|
||||||
return MPSOC_HANDLER_CRC_FAILURE_STRING;
|
return MPSOC_HANDLER_CRC_FAILURE_STRING;
|
||||||
case (11605):
|
case (11605):
|
||||||
return MPSOC_HANDLER_SEQ_CNT_MISMATCH_STRING;
|
return MPSOC_HANDLER_SEQUENCE_COUNT_MISMATCH_STRING;
|
||||||
case (11606):
|
case (11606):
|
||||||
return MPSOC_SHUTDOWN_FAILED_STRING;
|
return MPSOC_SHUTDOWN_FAILED_STRING;
|
||||||
case (11701):
|
case (11701):
|
||||||
@ -407,6 +420,8 @@ const char *translateEvents(Event event) {
|
|||||||
return INVALID_ERROR_BYTE_STRING;
|
return INVALID_ERROR_BYTE_STRING;
|
||||||
case (11801):
|
case (11801):
|
||||||
return ERROR_STATE_STRING;
|
return ERROR_STATE_STRING;
|
||||||
|
case (11802):
|
||||||
|
return RESET_OCCURED_STRING;
|
||||||
case (11901):
|
case (11901):
|
||||||
return BOOTING_FIRMWARE_FAILED_STRING;
|
return BOOTING_FIRMWARE_FAILED_STRING;
|
||||||
case (11902):
|
case (11902):
|
||||||
@ -419,22 +434,12 @@ const char *translateEvents(Event event) {
|
|||||||
return SUPV_EXE_FAILURE_STRING;
|
return SUPV_EXE_FAILURE_STRING;
|
||||||
case (12004):
|
case (12004):
|
||||||
return SUPV_CRC_FAILURE_EVENT_STRING;
|
return SUPV_CRC_FAILURE_EVENT_STRING;
|
||||||
|
case (12005):
|
||||||
|
return SUPV_MPSOC_SHUWDOWN_BUILD_FAILED_STRING;
|
||||||
case (12100):
|
case (12100):
|
||||||
return SANITIZATION_FAILED_STRING;
|
return SANITIZATION_FAILED_STRING;
|
||||||
case (12101):
|
case (12101):
|
||||||
return MOUNTED_SD_CARD_STRING;
|
return MOUNTED_SD_CARD_STRING;
|
||||||
case (12200):
|
|
||||||
return UPDATE_FILE_NOT_EXISTS_STRING;
|
|
||||||
case (12201):
|
|
||||||
return ACTION_COMMANDING_FAILED_STRING;
|
|
||||||
case (12202):
|
|
||||||
return UPDATE_AVAILABLE_FAILED_STRING;
|
|
||||||
case (12203):
|
|
||||||
return UPDATE_TRANSFER_FAILED_STRING;
|
|
||||||
case (12204):
|
|
||||||
return UPDATE_VERIFY_FAILED_STRING;
|
|
||||||
case (12205):
|
|
||||||
return UPDATE_FINISHED_STRING;
|
|
||||||
case (12300):
|
case (12300):
|
||||||
return SEND_MRAM_DUMP_FAILED_STRING;
|
return SEND_MRAM_DUMP_FAILED_STRING;
|
||||||
case (12301):
|
case (12301):
|
||||||
@ -488,23 +493,23 @@ const char *translateEvents(Event event) {
|
|||||||
case (12601):
|
case (12601):
|
||||||
return MPSOC_FLASH_WRITE_SUCCESSFUL_STRING;
|
return MPSOC_FLASH_WRITE_SUCCESSFUL_STRING;
|
||||||
case (12602):
|
case (12602):
|
||||||
return SENDING_COMMAND_FAILED_STRING;
|
return MPSOC_SENDING_COMMAND_FAILED_STRING;
|
||||||
case (12603):
|
case (12603):
|
||||||
return MPSOC_HELPER_REQUESTING_REPLY_FAILED_STRING;
|
return MPSOC_HELPER_REQUESTING_REPLY_FAILED_STRING;
|
||||||
case (12604):
|
case (12604):
|
||||||
return MPSOC_HELPER_READING_REPLY_FAILED_STRING;
|
return MPSOC_HELPER_READING_REPLY_FAILED_STRING;
|
||||||
case (12605):
|
case (12605):
|
||||||
return MISSING_ACK_STRING;
|
return MPSOC_MISSING_ACK_STRING;
|
||||||
case (12606):
|
case (12606):
|
||||||
return MISSING_EXE_STRING;
|
return MPSOC_MISSING_EXE_STRING;
|
||||||
case (12607):
|
case (12607):
|
||||||
return ACK_FAILURE_REPORT_STRING;
|
return MPSOC_ACK_FAILURE_REPORT_STRING;
|
||||||
case (12608):
|
case (12608):
|
||||||
return EXE_FAILURE_REPORT_STRING;
|
return MPSOC_EXE_FAILURE_REPORT_STRING;
|
||||||
case (12609):
|
case (12609):
|
||||||
return ACK_INVALID_APID_STRING;
|
return MPSOC_ACK_INVALID_APID_STRING;
|
||||||
case (12610):
|
case (12610):
|
||||||
return EXE_INVALID_APID_STRING;
|
return MPSOC_EXE_INVALID_APID_STRING;
|
||||||
case (12611):
|
case (12611):
|
||||||
return MPSOC_HELPER_SEQ_CNT_MISMATCH_STRING;
|
return MPSOC_HELPER_SEQ_CNT_MISMATCH_STRING;
|
||||||
case (12700):
|
case (12700):
|
||||||
@ -550,12 +555,46 @@ const char *translateEvents(Event event) {
|
|||||||
case (13202):
|
case (13202):
|
||||||
return BATT_MODE_CHANGED_STRING;
|
return BATT_MODE_CHANGED_STRING;
|
||||||
case (13600):
|
case (13600):
|
||||||
return ALLOC_FAILURE_STRING;
|
return SUPV_UPDATE_FAILED_STRING;
|
||||||
case (13601):
|
case (13601):
|
||||||
return REBOOT_SW_STRING;
|
return SUPV_UPDATE_SUCCESSFUL_STRING;
|
||||||
case (13602):
|
case (13602):
|
||||||
return REBOOT_MECHANISM_TRIGGERED_STRING;
|
return TERMINATED_UPDATE_PROCEDURE_STRING;
|
||||||
case (13603):
|
case (13603):
|
||||||
|
return SUPV_EVENT_BUFFER_REQUEST_SUCCESSFUL_STRING;
|
||||||
|
case (13604):
|
||||||
|
return SUPV_EVENT_BUFFER_REQUEST_FAILED_STRING;
|
||||||
|
case (13605):
|
||||||
|
return SUPV_EVENT_BUFFER_REQUEST_TERMINATED_STRING;
|
||||||
|
case (13606):
|
||||||
|
return SUPV_SENDING_COMMAND_FAILED_STRING;
|
||||||
|
case (13607):
|
||||||
|
return SUPV_HELPER_REQUESTING_REPLY_FAILED_STRING;
|
||||||
|
case (13608):
|
||||||
|
return SUPV_HELPER_READING_REPLY_FAILED_STRING;
|
||||||
|
case (13609):
|
||||||
|
return SUPV_MISSING_ACK_STRING;
|
||||||
|
case (13610):
|
||||||
|
return SUPV_MISSING_EXE_STRING;
|
||||||
|
case (13611):
|
||||||
|
return SUPV_ACK_FAILURE_REPORT_STRING;
|
||||||
|
case (13612):
|
||||||
|
return SUPV_EXE_FAILURE_REPORT_STRING;
|
||||||
|
case (13613):
|
||||||
|
return SUPV_ACK_INVALID_APID_STRING;
|
||||||
|
case (13614):
|
||||||
|
return SUPV_EXE_INVALID_APID_STRING;
|
||||||
|
case (13615):
|
||||||
|
return ACK_RECEPTION_FAILURE_STRING;
|
||||||
|
case (13616):
|
||||||
|
return EXE_RECEPTION_FAILURE_STRING;
|
||||||
|
case (13700):
|
||||||
|
return ALLOC_FAILURE_STRING;
|
||||||
|
case (13701):
|
||||||
|
return REBOOT_SW_STRING;
|
||||||
|
case (13702):
|
||||||
|
return REBOOT_MECHANISM_TRIGGERED_STRING;
|
||||||
|
case (13703):
|
||||||
return REBOOT_HW_STRING;
|
return REBOOT_HW_STRING;
|
||||||
default:
|
default:
|
||||||
return "UNKNOWN_EVENT";
|
return "UNKNOWN_EVENT";
|
||||||
|
@ -47,8 +47,9 @@ enum sourceObjects : uint32_t {
|
|||||||
CSP_COM_IF = 0x49050001,
|
CSP_COM_IF = 0x49050001,
|
||||||
I2C_COM_IF = 0x49040002,
|
I2C_COM_IF = 0x49040002,
|
||||||
UART_COM_IF = 0x49030003,
|
UART_COM_IF = 0x49030003,
|
||||||
SPI_COM_IF = 0x49020004,
|
SPI_MAIN_COM_IF = 0x49020004,
|
||||||
GPIO_IF = 0x49010005,
|
GPIO_IF = 0x49010005,
|
||||||
|
SPI_RW_COM_IF = 0x49020005,
|
||||||
|
|
||||||
/* Custom device handler */
|
/* Custom device handler */
|
||||||
PCDU_HANDLER = 0x442000A1,
|
PCDU_HANDLER = 0x442000A1,
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
* @brief Auto-generated object translation file.
|
* @brief Auto-generated object translation file.
|
||||||
* @details
|
* @details
|
||||||
* Contains 117 translations.
|
* Contains 117 translations.
|
||||||
* Generated on: 2022-05-03 16:32:00
|
* Generated on: 2022-05-08 13:11:24
|
||||||
*/
|
*/
|
||||||
#include "translateObjects.h"
|
#include "translateObjects.h"
|
||||||
|
|
||||||
@ -12,18 +12,18 @@ const char *ACS_CONTROLLER_STRING = "ACS_CONTROLLER";
|
|||||||
const char *THERMAL_CONTROLLER_STRING = "THERMAL_CONTROLLER";
|
const char *THERMAL_CONTROLLER_STRING = "THERMAL_CONTROLLER";
|
||||||
const char *MGM_0_LIS3_HANDLER_STRING = "MGM_0_LIS3_HANDLER";
|
const char *MGM_0_LIS3_HANDLER_STRING = "MGM_0_LIS3_HANDLER";
|
||||||
const char *GYRO_0_ADIS_HANDLER_STRING = "GYRO_0_ADIS_HANDLER";
|
const char *GYRO_0_ADIS_HANDLER_STRING = "GYRO_0_ADIS_HANDLER";
|
||||||
const char *SUS_0_STRING = "SUS_0";
|
const char *SUS_0_N_LOC_XFYFZM_PT_XF_STRING = "SUS_0_N_LOC_XFYFZM_PT_XF";
|
||||||
const char *SUS_1_STRING = "SUS_1";
|
const char *SUS_1_N_LOC_XBYFZM_PT_XB_STRING = "SUS_1_N_LOC_XBYFZM_PT_XB";
|
||||||
const char *SUS_2_STRING = "SUS_2";
|
const char *SUS_2_N_LOC_XFYBZB_PT_YB_STRING = "SUS_2_N_LOC_XFYBZB_PT_YB";
|
||||||
const char *SUS_3_STRING = "SUS_3";
|
const char *SUS_3_N_LOC_XFYBZF_PT_YF_STRING = "SUS_3_N_LOC_XFYBZF_PT_YF";
|
||||||
const char *SUS_4_STRING = "SUS_4";
|
const char *SUS_4_N_LOC_XMYFZF_PT_ZF_STRING = "SUS_4_N_LOC_XMYFZF_PT_ZF";
|
||||||
const char *SUS_5_STRING = "SUS_5";
|
const char *SUS_5_N_LOC_XFYMZB_PT_ZB_STRING = "SUS_5_N_LOC_XFYMZB_PT_ZB";
|
||||||
const char *SUS_6_STRING = "SUS_6";
|
const char *SUS_6_R_LOC_XFYBZM_PT_XF_STRING = "SUS_6_R_LOC_XFYBZM_PT_XF";
|
||||||
const char *SUS_7_STRING = "SUS_7";
|
const char *SUS_7_R_LOC_XBYBZM_PT_XB_STRING = "SUS_7_R_LOC_XBYBZM_PT_XB";
|
||||||
const char *SUS_8_STRING = "SUS_8";
|
const char *SUS_8_R_LOC_XBYBZB_PT_YB_STRING = "SUS_8_R_LOC_XBYBZB_PT_YB";
|
||||||
const char *SUS_9_STRING = "SUS_9";
|
const char *SUS_9_R_LOC_XBYBZB_PT_YF_STRING = "SUS_9_R_LOC_XBYBZB_PT_YF";
|
||||||
const char *SUS_10_STRING = "SUS_10";
|
const char *SUS_10_N_LOC_XMYBZF_PT_ZF_STRING = "SUS_10_N_LOC_XMYBZF_PT_ZF";
|
||||||
const char *SUS_11_STRING = "SUS_11";
|
const char *SUS_11_R_LOC_XBYMZB_PT_ZB_STRING = "SUS_11_R_LOC_XBYMZB_PT_ZB";
|
||||||
const char *RW1_STRING = "RW1";
|
const char *RW1_STRING = "RW1";
|
||||||
const char *MGM_1_RM3100_HANDLER_STRING = "MGM_1_RM3100_HANDLER";
|
const char *MGM_1_RM3100_HANDLER_STRING = "MGM_1_RM3100_HANDLER";
|
||||||
const char *GYRO_1_L3G_HANDLER_STRING = "GYRO_1_L3G_HANDLER";
|
const char *GYRO_1_L3G_HANDLER_STRING = "GYRO_1_L3G_HANDLER";
|
||||||
@ -45,7 +45,6 @@ const char *ACU_HANDLER_STRING = "ACU_HANDLER";
|
|||||||
const char *BPX_BATT_HANDLER_STRING = "BPX_BATT_HANDLER";
|
const char *BPX_BATT_HANDLER_STRING = "BPX_BATT_HANDLER";
|
||||||
const char *PLPCDU_HANDLER_STRING = "PLPCDU_HANDLER";
|
const char *PLPCDU_HANDLER_STRING = "PLPCDU_HANDLER";
|
||||||
const char *RAD_SENSOR_STRING = "RAD_SENSOR";
|
const char *RAD_SENSOR_STRING = "RAD_SENSOR";
|
||||||
const char *PLOC_UPDATER_STRING = "PLOC_UPDATER";
|
|
||||||
const char *PLOC_MEMORY_DUMPER_STRING = "PLOC_MEMORY_DUMPER";
|
const char *PLOC_MEMORY_DUMPER_STRING = "PLOC_MEMORY_DUMPER";
|
||||||
const char *STR_HELPER_STRING = "STR_HELPER";
|
const char *STR_HELPER_STRING = "STR_HELPER";
|
||||||
const char *PLOC_MPSOC_HELPER_STRING = "PLOC_MPSOC_HELPER";
|
const char *PLOC_MPSOC_HELPER_STRING = "PLOC_MPSOC_HELPER";
|
||||||
@ -56,22 +55,22 @@ const char *SOLAR_ARRAY_DEPL_HANDLER_STRING = "SOLAR_ARRAY_DEPL_HANDLER";
|
|||||||
const char *HEATER_HANDLER_STRING = "HEATER_HANDLER";
|
const char *HEATER_HANDLER_STRING = "HEATER_HANDLER";
|
||||||
const char *TMP1075_HANDLER_1_STRING = "TMP1075_HANDLER_1";
|
const char *TMP1075_HANDLER_1_STRING = "TMP1075_HANDLER_1";
|
||||||
const char *TMP1075_HANDLER_2_STRING = "TMP1075_HANDLER_2";
|
const char *TMP1075_HANDLER_2_STRING = "TMP1075_HANDLER_2";
|
||||||
const char *RTD_IC_3_STRING = "RTD_IC_3";
|
const char *RTD_0_IC3_PLOC_HEATSPREADER_STRING = "RTD_0_IC3_PLOC_HEATSPREADER";
|
||||||
const char *RTD_IC_4_STRING = "RTD_IC_4";
|
const char *RTD_1_IC4_PLOC_MISSIONBOARD_STRING = "RTD_1_IC4_PLOC_MISSIONBOARD";
|
||||||
const char *RTD_IC_5_STRING = "RTD_IC_5";
|
const char *RTD_2_IC5_4K_CAMERA_STRING = "RTD_2_IC5_4K_CAMERA";
|
||||||
const char *RTD_IC_6_STRING = "RTD_IC_6";
|
const char *RTD_3_IC6_DAC_HEATSPREADER_STRING = "RTD_3_IC6_DAC_HEATSPREADER";
|
||||||
const char *RTD_IC_7_STRING = "RTD_IC_7";
|
const char *RTD_4_IC7_STARTRACKER_STRING = "RTD_4_IC7_STARTRACKER";
|
||||||
const char *RTD_IC_8_STRING = "RTD_IC_8";
|
const char *RTD_5_IC8_RW1_MX_MY_STRING = "RTD_5_IC8_RW1_MX_MY";
|
||||||
const char *RTD_IC_9_STRING = "RTD_IC_9";
|
const char *RTD_6_IC9_DRO_STRING = "RTD_6_IC9_DRO";
|
||||||
const char *RTD_IC_10_STRING = "RTD_IC_10";
|
const char *RTD_7_IC10_SCEX_STRING = "RTD_7_IC10_SCEX";
|
||||||
const char *RTD_IC_11_STRING = "RTD_IC_11";
|
const char *RTD_8_IC11_X8_STRING = "RTD_8_IC11_X8";
|
||||||
const char *RTD_IC_12_STRING = "RTD_IC_12";
|
const char *RTD_9_IC12_HPA_STRING = "RTD_9_IC12_HPA";
|
||||||
const char *RTD_IC_13_STRING = "RTD_IC_13";
|
const char *RTD_10_IC13_PL_TX_STRING = "RTD_10_IC13_PL_TX";
|
||||||
const char *RTD_IC_14_STRING = "RTD_IC_14";
|
const char *RTD_11_IC14_MPA_STRING = "RTD_11_IC14_MPA";
|
||||||
const char *RTD_IC_15_STRING = "RTD_IC_15";
|
const char *RTD_12_IC15_ACU_STRING = "RTD_12_IC15_ACU";
|
||||||
const char *RTD_IC_16_STRING = "RTD_IC_16";
|
const char *RTD_13_IC16_PLPCDU_HEATSPREADER_STRING = "RTD_13_IC16_PLPCDU_HEATSPREADER";
|
||||||
const char *RTD_IC_17_STRING = "RTD_IC_17";
|
const char *RTD_14_IC17_TCS_BOARD_STRING = "RTD_14_IC17_TCS_BOARD";
|
||||||
const char *RTD_IC_18_STRING = "RTD_IC_18";
|
const char *RTD_15_IC18_IMTQ_STRING = "RTD_15_IC18_IMTQ";
|
||||||
const char *SYRLINKS_HK_HANDLER_STRING = "SYRLINKS_HK_HANDLER";
|
const char *SYRLINKS_HK_HANDLER_STRING = "SYRLINKS_HK_HANDLER";
|
||||||
const char *ARDUINO_COM_IF_STRING = "ARDUINO_COM_IF";
|
const char *ARDUINO_COM_IF_STRING = "ARDUINO_COM_IF";
|
||||||
const char *GPIO_IF_STRING = "GPIO_IF";
|
const char *GPIO_IF_STRING = "GPIO_IF";
|
||||||
@ -120,6 +119,7 @@ const char *TEST_TASK_STRING = "TEST_TASK";
|
|||||||
const char *ACS_BOARD_ASS_STRING = "ACS_BOARD_ASS";
|
const char *ACS_BOARD_ASS_STRING = "ACS_BOARD_ASS";
|
||||||
const char *SUS_BOARD_ASS_STRING = "SUS_BOARD_ASS";
|
const char *SUS_BOARD_ASS_STRING = "SUS_BOARD_ASS";
|
||||||
const char *TCS_BOARD_ASS_STRING = "TCS_BOARD_ASS";
|
const char *TCS_BOARD_ASS_STRING = "TCS_BOARD_ASS";
|
||||||
|
const char *RW_ASS_STRING = "RW_ASS";
|
||||||
const char *TM_FUNNEL_STRING = "TM_FUNNEL";
|
const char *TM_FUNNEL_STRING = "TM_FUNNEL";
|
||||||
const char *CCSDS_IP_CORE_BRIDGE_STRING = "CCSDS_IP_CORE_BRIDGE";
|
const char *CCSDS_IP_CORE_BRIDGE_STRING = "CCSDS_IP_CORE_BRIDGE";
|
||||||
const char *NO_OBJECT_STRING = "NO_OBJECT";
|
const char *NO_OBJECT_STRING = "NO_OBJECT";
|
||||||
@ -139,29 +139,29 @@ const char *translateObject(object_id_t object) {
|
|||||||
case 0x44120010:
|
case 0x44120010:
|
||||||
return GYRO_0_ADIS_HANDLER_STRING;
|
return GYRO_0_ADIS_HANDLER_STRING;
|
||||||
case 0x44120032:
|
case 0x44120032:
|
||||||
return SUS_0_STRING;
|
return SUS_0_N_LOC_XFYFZM_PT_XF_STRING;
|
||||||
case 0x44120033:
|
case 0x44120033:
|
||||||
return SUS_1_STRING;
|
return SUS_1_N_LOC_XBYFZM_PT_XB_STRING;
|
||||||
case 0x44120034:
|
case 0x44120034:
|
||||||
return SUS_2_STRING;
|
return SUS_2_N_LOC_XFYBZB_PT_YB_STRING;
|
||||||
case 0x44120035:
|
case 0x44120035:
|
||||||
return SUS_3_STRING;
|
return SUS_3_N_LOC_XFYBZF_PT_YF_STRING;
|
||||||
case 0x44120036:
|
case 0x44120036:
|
||||||
return SUS_4_STRING;
|
return SUS_4_N_LOC_XMYFZF_PT_ZF_STRING;
|
||||||
case 0x44120037:
|
case 0x44120037:
|
||||||
return SUS_5_STRING;
|
return SUS_5_N_LOC_XFYMZB_PT_ZB_STRING;
|
||||||
case 0x44120038:
|
case 0x44120038:
|
||||||
return SUS_6_STRING;
|
return SUS_6_R_LOC_XFYBZM_PT_XF_STRING;
|
||||||
case 0x44120039:
|
case 0x44120039:
|
||||||
return SUS_7_STRING;
|
return SUS_7_R_LOC_XBYBZM_PT_XB_STRING;
|
||||||
case 0x44120040:
|
case 0x44120040:
|
||||||
return SUS_8_STRING;
|
return SUS_8_R_LOC_XBYBZB_PT_YB_STRING;
|
||||||
case 0x44120041:
|
case 0x44120041:
|
||||||
return SUS_9_STRING;
|
return SUS_9_R_LOC_XBYBZB_PT_YF_STRING;
|
||||||
case 0x44120042:
|
case 0x44120042:
|
||||||
return SUS_10_STRING;
|
return SUS_10_N_LOC_XMYBZF_PT_ZF_STRING;
|
||||||
case 0x44120043:
|
case 0x44120043:
|
||||||
return SUS_11_STRING;
|
return SUS_11_R_LOC_XBYMZB_PT_ZB_STRING;
|
||||||
case 0x44120047:
|
case 0x44120047:
|
||||||
return RW1_STRING;
|
return RW1_STRING;
|
||||||
case 0x44120107:
|
case 0x44120107:
|
||||||
@ -204,8 +204,6 @@ const char *translateObject(object_id_t object) {
|
|||||||
return PLPCDU_HANDLER_STRING;
|
return PLPCDU_HANDLER_STRING;
|
||||||
case 0x443200A5:
|
case 0x443200A5:
|
||||||
return RAD_SENSOR_STRING;
|
return RAD_SENSOR_STRING;
|
||||||
case 0x44330000:
|
|
||||||
return PLOC_UPDATER_STRING;
|
|
||||||
case 0x44330001:
|
case 0x44330001:
|
||||||
return PLOC_MEMORY_DUMPER_STRING;
|
return PLOC_MEMORY_DUMPER_STRING;
|
||||||
case 0x44330002:
|
case 0x44330002:
|
||||||
@ -227,37 +225,37 @@ const char *translateObject(object_id_t object) {
|
|||||||
case 0x44420005:
|
case 0x44420005:
|
||||||
return TMP1075_HANDLER_2_STRING;
|
return TMP1075_HANDLER_2_STRING;
|
||||||
case 0x44420016:
|
case 0x44420016:
|
||||||
return RTD_IC_3_STRING;
|
return RTD_0_IC3_PLOC_HEATSPREADER_STRING;
|
||||||
case 0x44420017:
|
case 0x44420017:
|
||||||
return RTD_IC_4_STRING;
|
return RTD_1_IC4_PLOC_MISSIONBOARD_STRING;
|
||||||
case 0x44420018:
|
case 0x44420018:
|
||||||
return RTD_IC_5_STRING;
|
return RTD_2_IC5_4K_CAMERA_STRING;
|
||||||
case 0x44420019:
|
case 0x44420019:
|
||||||
return RTD_IC_6_STRING;
|
return RTD_3_IC6_DAC_HEATSPREADER_STRING;
|
||||||
case 0x44420020:
|
case 0x44420020:
|
||||||
return RTD_IC_7_STRING;
|
return RTD_4_IC7_STARTRACKER_STRING;
|
||||||
case 0x44420021:
|
case 0x44420021:
|
||||||
return RTD_IC_8_STRING;
|
return RTD_5_IC8_RW1_MX_MY_STRING;
|
||||||
case 0x44420022:
|
case 0x44420022:
|
||||||
return RTD_IC_9_STRING;
|
return RTD_6_IC9_DRO_STRING;
|
||||||
case 0x44420023:
|
case 0x44420023:
|
||||||
return RTD_IC_10_STRING;
|
return RTD_7_IC10_SCEX_STRING;
|
||||||
case 0x44420024:
|
case 0x44420024:
|
||||||
return RTD_IC_11_STRING;
|
return RTD_8_IC11_X8_STRING;
|
||||||
case 0x44420025:
|
case 0x44420025:
|
||||||
return RTD_IC_12_STRING;
|
return RTD_9_IC12_HPA_STRING;
|
||||||
case 0x44420026:
|
case 0x44420026:
|
||||||
return RTD_IC_13_STRING;
|
return RTD_10_IC13_PL_TX_STRING;
|
||||||
case 0x44420027:
|
case 0x44420027:
|
||||||
return RTD_IC_14_STRING;
|
return RTD_11_IC14_MPA_STRING;
|
||||||
case 0x44420028:
|
case 0x44420028:
|
||||||
return RTD_IC_15_STRING;
|
return RTD_12_IC15_ACU_STRING;
|
||||||
case 0x44420029:
|
case 0x44420029:
|
||||||
return RTD_IC_16_STRING;
|
return RTD_13_IC16_PLPCDU_HEATSPREADER_STRING;
|
||||||
case 0x44420030:
|
case 0x44420030:
|
||||||
return RTD_IC_17_STRING;
|
return RTD_14_IC17_TCS_BOARD_STRING;
|
||||||
case 0x44420031:
|
case 0x44420031:
|
||||||
return RTD_IC_18_STRING;
|
return RTD_15_IC18_IMTQ_STRING;
|
||||||
case 0x445300A3:
|
case 0x445300A3:
|
||||||
return SYRLINKS_HK_HANDLER_STRING;
|
return SYRLINKS_HK_HANDLER_STRING;
|
||||||
case 0x49000000:
|
case 0x49000000:
|
||||||
@ -354,6 +352,8 @@ const char *translateObject(object_id_t object) {
|
|||||||
return SUS_BOARD_ASS_STRING;
|
return SUS_BOARD_ASS_STRING;
|
||||||
case 0x73000003:
|
case 0x73000003:
|
||||||
return TCS_BOARD_ASS_STRING;
|
return TCS_BOARD_ASS_STRING;
|
||||||
|
case 0x73000004:
|
||||||
|
return RW_ASS_STRING;
|
||||||
case 0x73000100:
|
case 0x73000100:
|
||||||
return TM_FUNNEL_STRING;
|
return TM_FUNNEL_STRING;
|
||||||
case 0x73500000:
|
case 0x73500000:
|
||||||
|
@ -29,6 +29,36 @@ ReturnValue_t pst::pstGpio(FixedTimeslotTaskIF *thisSequence) {
|
|||||||
return HasReturnvaluesIF::RETURN_FAILED;
|
return HasReturnvaluesIF::RETURN_FAILED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ReturnValue_t pst::pstSpiRw(FixedTimeslotTaskIF *thisSequence) {
|
||||||
|
uint32_t length = thisSequence->getPeriodMs();
|
||||||
|
static_cast<void>(length);
|
||||||
|
thisSequence->addSlot(objects::RW1, length * 0, DeviceHandlerIF::PERFORM_OPERATION);
|
||||||
|
thisSequence->addSlot(objects::RW2, length * 0, DeviceHandlerIF::PERFORM_OPERATION);
|
||||||
|
thisSequence->addSlot(objects::RW3, length * 0, DeviceHandlerIF::PERFORM_OPERATION);
|
||||||
|
thisSequence->addSlot(objects::RW4, length * 0, DeviceHandlerIF::PERFORM_OPERATION);
|
||||||
|
|
||||||
|
thisSequence->addSlot(objects::RW1, length * 0.2, DeviceHandlerIF::SEND_WRITE);
|
||||||
|
thisSequence->addSlot(objects::RW2, length * 0.2, DeviceHandlerIF::SEND_WRITE);
|
||||||
|
thisSequence->addSlot(objects::RW3, length * 0.2, DeviceHandlerIF::SEND_WRITE);
|
||||||
|
thisSequence->addSlot(objects::RW4, length * 0.2, DeviceHandlerIF::SEND_WRITE);
|
||||||
|
|
||||||
|
thisSequence->addSlot(objects::RW1, length * 0.8, DeviceHandlerIF::GET_WRITE);
|
||||||
|
thisSequence->addSlot(objects::RW2, length * 0.8, DeviceHandlerIF::GET_WRITE);
|
||||||
|
thisSequence->addSlot(objects::RW3, length * 0.8, DeviceHandlerIF::GET_WRITE);
|
||||||
|
thisSequence->addSlot(objects::RW4, length * 0.8, DeviceHandlerIF::GET_WRITE);
|
||||||
|
|
||||||
|
thisSequence->addSlot(objects::RW1, length * 0.8, DeviceHandlerIF::SEND_READ);
|
||||||
|
thisSequence->addSlot(objects::RW2, length * 0.8, DeviceHandlerIF::SEND_READ);
|
||||||
|
thisSequence->addSlot(objects::RW3, length * 0.8, DeviceHandlerIF::SEND_READ);
|
||||||
|
thisSequence->addSlot(objects::RW4, length * 0.8, DeviceHandlerIF::SEND_READ);
|
||||||
|
|
||||||
|
thisSequence->addSlot(objects::RW1, length * 0.8, DeviceHandlerIF::GET_READ);
|
||||||
|
thisSequence->addSlot(objects::RW2, length * 0.8, DeviceHandlerIF::GET_READ);
|
||||||
|
thisSequence->addSlot(objects::RW3, length * 0.8, DeviceHandlerIF::GET_READ);
|
||||||
|
thisSequence->addSlot(objects::RW4, length * 0.8, DeviceHandlerIF::GET_READ);
|
||||||
|
return thisSequence->checkSequence();
|
||||||
|
}
|
||||||
|
|
||||||
ReturnValue_t pst::pstSpi(FixedTimeslotTaskIF *thisSequence) {
|
ReturnValue_t pst::pstSpi(FixedTimeslotTaskIF *thisSequence) {
|
||||||
uint32_t length = thisSequence->getPeriodMs();
|
uint32_t length = thisSequence->getPeriodMs();
|
||||||
static_cast<void>(length);
|
static_cast<void>(length);
|
||||||
@ -452,32 +482,6 @@ ReturnValue_t pst::pstSpi(FixedTimeslotTaskIF *thisSequence) {
|
|||||||
}
|
}
|
||||||
#endif /* OBSW_ADD_SUN_SENSORS == 1 */
|
#endif /* OBSW_ADD_SUN_SENSORS == 1 */
|
||||||
|
|
||||||
#if OBSW_ADD_RW == 1
|
|
||||||
thisSequence->addSlot(objects::RW1, length * 0, DeviceHandlerIF::PERFORM_OPERATION);
|
|
||||||
thisSequence->addSlot(objects::RW1, length * 0.2, DeviceHandlerIF::SEND_WRITE);
|
|
||||||
thisSequence->addSlot(objects::RW1, length * 0.5, DeviceHandlerIF::GET_WRITE);
|
|
||||||
thisSequence->addSlot(objects::RW1, length * 0.65, DeviceHandlerIF::SEND_READ);
|
|
||||||
thisSequence->addSlot(objects::RW1, length * 0.8, DeviceHandlerIF::GET_READ);
|
|
||||||
|
|
||||||
thisSequence->addSlot(objects::RW2, length * 0, DeviceHandlerIF::PERFORM_OPERATION);
|
|
||||||
thisSequence->addSlot(objects::RW2, length * 0.2, DeviceHandlerIF::SEND_WRITE);
|
|
||||||
thisSequence->addSlot(objects::RW2, length * 0.5, DeviceHandlerIF::GET_WRITE);
|
|
||||||
thisSequence->addSlot(objects::RW2, length * 0.65, DeviceHandlerIF::SEND_READ);
|
|
||||||
thisSequence->addSlot(objects::RW2, length * 0.8, DeviceHandlerIF::GET_READ);
|
|
||||||
|
|
||||||
thisSequence->addSlot(objects::RW3, length * 0, DeviceHandlerIF::PERFORM_OPERATION);
|
|
||||||
thisSequence->addSlot(objects::RW3, length * 0.2, DeviceHandlerIF::SEND_WRITE);
|
|
||||||
thisSequence->addSlot(objects::RW3, length * 0.5, DeviceHandlerIF::GET_WRITE);
|
|
||||||
thisSequence->addSlot(objects::RW3, length * 0.65, DeviceHandlerIF::SEND_READ);
|
|
||||||
thisSequence->addSlot(objects::RW3, length * 0.8, DeviceHandlerIF::GET_READ);
|
|
||||||
|
|
||||||
thisSequence->addSlot(objects::RW4, length * 0, DeviceHandlerIF::PERFORM_OPERATION);
|
|
||||||
thisSequence->addSlot(objects::RW4, length * 0.2, DeviceHandlerIF::SEND_WRITE);
|
|
||||||
thisSequence->addSlot(objects::RW4, length * 0.5, DeviceHandlerIF::GET_WRITE);
|
|
||||||
thisSequence->addSlot(objects::RW4, length * 0.65, DeviceHandlerIF::SEND_READ);
|
|
||||||
thisSequence->addSlot(objects::RW4, length * 0.8, DeviceHandlerIF::GET_READ);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if OBSW_ADD_ACS_BOARD == 1 && OBSW_ADD_ACS_HANDLERS == 1
|
#if OBSW_ADD_ACS_BOARD == 1 && OBSW_ADD_ACS_HANDLERS == 1
|
||||||
bool enableAside = true;
|
bool enableAside = true;
|
||||||
bool enableBside = true;
|
bool enableBside = true;
|
||||||
@ -586,11 +590,8 @@ ReturnValue_t pst::pstUart(FixedTimeslotTaskIF *thisSequence) {
|
|||||||
thisSequence->addSlot(objects::PLOC_MPSOC_HANDLER, length * 0.8, DeviceHandlerIF::GET_READ);
|
thisSequence->addSlot(objects::PLOC_MPSOC_HANDLER, length * 0.8, DeviceHandlerIF::GET_READ);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef XIPHOS_Q7S
|
|
||||||
thisSequence->addSlot(objects::PLOC_UPDATER, length * 0, DeviceHandlerIF::PERFORM_OPERATION);
|
|
||||||
thisSequence->addSlot(objects::PLOC_MEMORY_DUMPER, length * 0,
|
thisSequence->addSlot(objects::PLOC_MEMORY_DUMPER, length * 0,
|
||||||
DeviceHandlerIF::PERFORM_OPERATION);
|
DeviceHandlerIF::PERFORM_OPERATION);
|
||||||
#endif
|
|
||||||
#if OBSW_ADD_PLOC_SUPERVISOR == 1
|
#if OBSW_ADD_PLOC_SUPERVISOR == 1
|
||||||
thisSequence->addSlot(objects::PLOC_SUPERVISOR_HANDLER, length * 0,
|
thisSequence->addSlot(objects::PLOC_SUPERVISOR_HANDLER, length * 0,
|
||||||
DeviceHandlerIF::PERFORM_OPERATION);
|
DeviceHandlerIF::PERFORM_OPERATION);
|
||||||
|
@ -46,6 +46,8 @@ ReturnValue_t pstUart(FixedTimeslotTaskIF* thisSequence);
|
|||||||
|
|
||||||
ReturnValue_t pstSpi(FixedTimeslotTaskIF* thisSequence);
|
ReturnValue_t pstSpi(FixedTimeslotTaskIF* thisSequence);
|
||||||
|
|
||||||
|
ReturnValue_t pstSpiRw(FixedTimeslotTaskIF* thisSequence);
|
||||||
|
|
||||||
ReturnValue_t pstI2c(FixedTimeslotTaskIF* thisSequence);
|
ReturnValue_t pstI2c(FixedTimeslotTaskIF* thisSequence);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -6,7 +6,6 @@
|
|||||||
#include <cstring>
|
#include <cstring>
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
|
|
||||||
#include "OBSWConfig.h"
|
|
||||||
#include "fsfw/ipc/QueueFactory.h"
|
#include "fsfw/ipc/QueueFactory.h"
|
||||||
#include "fsfw/objectmanager/ObjectManager.h"
|
#include "fsfw/objectmanager/ObjectManager.h"
|
||||||
#include "fsfw/serviceinterface/ServiceInterface.h"
|
#include "fsfw/serviceinterface/ServiceInterface.h"
|
||||||
|
@ -57,7 +57,7 @@
|
|||||||
</toolChain>
|
</toolChain>
|
||||||
</folderInfo>
|
</folderInfo>
|
||||||
<sourceEntries>
|
<sourceEntries>
|
||||||
<entry excluding="fsfwconfig" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
|
<entry excluding="bsp_linux_board|cmake-build-debug-q7s/_deps/etl-src/uml|cmake-build-debug-q7s/_deps/etl-src/temp|cmake-build-debug-q7s/_deps/etl-src/support|cmake-build-debug-q7s/_deps/etl-src/subprojects|cmake-build-debug-q7s/_deps/etl-src/scripts|cmake-build-debug-q7s/_deps/etl-src/images|cmake-build-debug-q7s/_deps/etl-src/examples|cmake-build-debug-q7s/_deps/etl-src/cmake|cmake-build-debug-q7s/_deps/etl-src/arduino|tmtc|scripts|bsp_te0720_1cfa|thirdparty/rapidcsv/tests|thirdparty/rapidcsv/examples|thirdparty/rapidcsv/doc|thirdparty/json/third_party|thirdparty/json/test|thirdparty/json/single_include|thirdparty/json/doc|thirdparty/json/cmake|thirdparty/json/benchmarks|archive|cmake-build-release-q7s|bsp_egse|cmake-build-debug-q7s/_deps/etl-src/test|fsfwconfig" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
|
||||||
</sourceEntries>
|
</sourceEntries>
|
||||||
</configuration>
|
</configuration>
|
||||||
</storageModule>
|
</storageModule>
|
||||||
@ -119,7 +119,7 @@
|
|||||||
</toolChain>
|
</toolChain>
|
||||||
</folderInfo>
|
</folderInfo>
|
||||||
<sourceEntries>
|
<sourceEntries>
|
||||||
<entry excluding="fsfwconfig" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
|
<entry excluding="bsp_linux_board|cmake-build-debug-q7s/_deps/etl-src/uml|cmake-build-debug-q7s/_deps/etl-src/temp|cmake-build-debug-q7s/_deps/etl-src/support|cmake-build-debug-q7s/_deps/etl-src/subprojects|cmake-build-debug-q7s/_deps/etl-src/scripts|cmake-build-debug-q7s/_deps/etl-src/images|cmake-build-debug-q7s/_deps/etl-src/examples|cmake-build-debug-q7s/_deps/etl-src/cmake|cmake-build-debug-q7s/_deps/etl-src/arduino|tmtc|scripts|bsp_te0720_1cfa|thirdparty/rapidcsv/tests|thirdparty/rapidcsv/examples|thirdparty/rapidcsv/doc|thirdparty/json/third_party|thirdparty/json/test|thirdparty/json/single_include|thirdparty/json/doc|thirdparty/json/cmake|thirdparty/json/benchmarks|archive|cmake-build-release-q7s|bsp_egse|cmake-build-debug-q7s/_deps/etl-src/test|fsfwconfig" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
|
||||||
</sourceEntries>
|
</sourceEntries>
|
||||||
</configuration>
|
</configuration>
|
||||||
</storageModule>
|
</storageModule>
|
||||||
@ -187,7 +187,7 @@
|
|||||||
</toolChain>
|
</toolChain>
|
||||||
</folderInfo>
|
</folderInfo>
|
||||||
<sourceEntries>
|
<sourceEntries>
|
||||||
<entry excluding="fsfwconfig" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
|
<entry excluding="bsp_linux_board|cmake-build-debug-q7s/_deps/etl-src/uml|cmake-build-debug-q7s/_deps/etl-src/temp|cmake-build-debug-q7s/_deps/etl-src/support|cmake-build-debug-q7s/_deps/etl-src/subprojects|cmake-build-debug-q7s/_deps/etl-src/scripts|cmake-build-debug-q7s/_deps/etl-src/images|cmake-build-debug-q7s/_deps/etl-src/examples|cmake-build-debug-q7s/_deps/etl-src/cmake|cmake-build-debug-q7s/_deps/etl-src/arduino|tmtc|scripts|bsp_te0720_1cfa|thirdparty/rapidcsv/tests|thirdparty/rapidcsv/examples|thirdparty/rapidcsv/doc|thirdparty/json/third_party|thirdparty/json/test|thirdparty/json/single_include|thirdparty/json/doc|thirdparty/json/cmake|thirdparty/json/benchmarks|archive|cmake-build-release-q7s|bsp_egse|cmake-build-debug-q7s/_deps/etl-src/test|fsfwconfig" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
|
||||||
</sourceEntries>
|
</sourceEntries>
|
||||||
</configuration>
|
</configuration>
|
||||||
</storageModule>
|
</storageModule>
|
||||||
@ -215,10 +215,10 @@
|
|||||||
<tool id="cdt.managedbuild.tool.gnu.archiver.base.977464664" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.base"/>
|
<tool id="cdt.managedbuild.tool.gnu.archiver.base.977464664" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.base"/>
|
||||||
<tool id="cdt.managedbuild.tool.gnu.cpp.compiler.base.1522927967" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.base">
|
<tool id="cdt.managedbuild.tool.gnu.cpp.compiler.base.1522927967" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.base">
|
||||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="gnu.cpp.compiler.option.include.paths.1753272978" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
|
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="gnu.cpp.compiler.option.include.paths.1753272978" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/eive_obsw}""/>
|
|
||||||
<listOptionValue builtIn="false" value=""${Q7S_SYSROOT_UNIX}/usr/include""/>
|
<listOptionValue builtIn="false" value=""${Q7S_SYSROOT_UNIX}/usr/include""/>
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/fsfw/src}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/fsfw/src}""/>
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/fsfw/hal/src}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/fsfw/hal/src}""/>
|
||||||
|
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw}""/>
|
||||||
</option>
|
</option>
|
||||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="gnu.cpp.compiler.option.preprocessor.def.209901553" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" useByScannerDiscovery="false" valueType="definedSymbols">
|
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="gnu.cpp.compiler.option.preprocessor.def.209901553" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" useByScannerDiscovery="false" valueType="definedSymbols">
|
||||||
<listOptionValue builtIn="false" value="LINUX=1"/>
|
<listOptionValue builtIn="false" value="LINUX=1"/>
|
||||||
@ -227,10 +227,10 @@
|
|||||||
</tool>
|
</tool>
|
||||||
<tool id="cdt.managedbuild.tool.gnu.c.compiler.base.623389075" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.base">
|
<tool id="cdt.managedbuild.tool.gnu.c.compiler.base.623389075" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.base">
|
||||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="gnu.c.compiler.option.include.paths.407728215" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
|
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="gnu.c.compiler.option.include.paths.407728215" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/eive_obsw}""/>
|
|
||||||
<listOptionValue builtIn="false" value=""${Q7S_SYSROOT_UNIX}/usr/include""/>
|
<listOptionValue builtIn="false" value=""${Q7S_SYSROOT_UNIX}/usr/include""/>
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/fsfw/src}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/fsfw/src}""/>
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/fsfw/hal/src}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/fsfw/hal/src}""/>
|
||||||
|
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw}""/>
|
||||||
</option>
|
</option>
|
||||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="gnu.c.compiler.option.preprocessor.def.symbols.841213070" name="Defined symbols (-D)" superClass="gnu.c.compiler.option.preprocessor.def.symbols" useByScannerDiscovery="false" valueType="definedSymbols">
|
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="gnu.c.compiler.option.preprocessor.def.symbols.841213070" name="Defined symbols (-D)" superClass="gnu.c.compiler.option.preprocessor.def.symbols" useByScannerDiscovery="false" valueType="definedSymbols">
|
||||||
<listOptionValue builtIn="false" value="LINUX=1"/>
|
<listOptionValue builtIn="false" value="LINUX=1"/>
|
||||||
@ -255,7 +255,7 @@
|
|||||||
</toolChain>
|
</toolChain>
|
||||||
</folderInfo>
|
</folderInfo>
|
||||||
<sourceEntries>
|
<sourceEntries>
|
||||||
<entry excluding="fsfwconfig" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
|
<entry excluding="bsp_linux_board|cmake-build-debug-q7s/_deps/etl-src/uml|cmake-build-debug-q7s/_deps/etl-src/temp|cmake-build-debug-q7s/_deps/etl-src/support|cmake-build-debug-q7s/_deps/etl-src/subprojects|cmake-build-debug-q7s/_deps/etl-src/scripts|cmake-build-debug-q7s/_deps/etl-src/images|cmake-build-debug-q7s/_deps/etl-src/examples|cmake-build-debug-q7s/_deps/etl-src/cmake|cmake-build-debug-q7s/_deps/etl-src/arduino|tmtc|scripts|bsp_te0720_1cfa|thirdparty/rapidcsv/tests|thirdparty/rapidcsv/examples|thirdparty/rapidcsv/doc|thirdparty/json/third_party|thirdparty/json/test|thirdparty/json/single_include|thirdparty/json/doc|thirdparty/json/cmake|thirdparty/json/benchmarks|archive|cmake-build-release-q7s|bsp_egse|cmake-build-debug-q7s/_deps/etl-src/test|fsfwconfig" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
|
||||||
</sourceEntries>
|
</sourceEntries>
|
||||||
</configuration>
|
</configuration>
|
||||||
</storageModule>
|
</storageModule>
|
||||||
@ -418,7 +418,7 @@
|
|||||||
</toolChain>
|
</toolChain>
|
||||||
</folderInfo>
|
</folderInfo>
|
||||||
<sourceEntries>
|
<sourceEntries>
|
||||||
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
|
<entry excluding="bsp_hosted|cmake-build-debug-q7s/_deps/etl-src/uml|cmake-build-debug-q7s/_deps/etl-src/temp|cmake-build-debug-q7s/_deps/etl-src/support|cmake-build-debug-q7s/_deps/etl-src/subprojects|cmake-build-debug-q7s/_deps/etl-src/scripts|cmake-build-debug-q7s/_deps/etl-src/images|cmake-build-debug-q7s/_deps/etl-src/examples|cmake-build-debug-q7s/_deps/etl-src/cmake|cmake-build-debug-q7s/_deps/etl-src/arduino|tmtc|scripts|bsp_te0720_1cfa|thirdparty/rapidcsv/tests|thirdparty/rapidcsv/examples|thirdparty/rapidcsv/doc|thirdparty/json/third_party|thirdparty/json/test|thirdparty/json/single_include|thirdparty/json/doc|thirdparty/json/cmake|thirdparty/json/benchmarks|archive|cmake-build-release-q7s|bsp_egse|cmake-build-debug-q7s/_deps/etl-src/test" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
|
||||||
</sourceEntries>
|
</sourceEntries>
|
||||||
</configuration>
|
</configuration>
|
||||||
</storageModule>
|
</storageModule>
|
||||||
@ -580,7 +580,7 @@
|
|||||||
</toolChain>
|
</toolChain>
|
||||||
</folderInfo>
|
</folderInfo>
|
||||||
<sourceEntries>
|
<sourceEntries>
|
||||||
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
|
<entry excluding="bsp_hosted|cmake-build-debug-q7s/_deps/etl-src/uml|cmake-build-debug-q7s/_deps/etl-src/temp|cmake-build-debug-q7s/_deps/etl-src/support|cmake-build-debug-q7s/_deps/etl-src/subprojects|cmake-build-debug-q7s/_deps/etl-src/scripts|cmake-build-debug-q7s/_deps/etl-src/images|cmake-build-debug-q7s/_deps/etl-src/examples|cmake-build-debug-q7s/_deps/etl-src/cmake|cmake-build-debug-q7s/_deps/etl-src/arduino|tmtc|scripts|bsp_te0720_1cfa|thirdparty/rapidcsv/tests|thirdparty/rapidcsv/examples|thirdparty/rapidcsv/doc|thirdparty/json/third_party|thirdparty/json/test|thirdparty/json/single_include|thirdparty/json/doc|thirdparty/json/cmake|thirdparty/json/benchmarks|archive|cmake-build-release-q7s|bsp_egse|cmake-build-debug-q7s/_deps/etl-src/test" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
|
||||||
</sourceEntries>
|
</sourceEntries>
|
||||||
</configuration>
|
</configuration>
|
||||||
</storageModule>
|
</storageModule>
|
||||||
@ -603,7 +603,7 @@
|
|||||||
</extensions>
|
</extensions>
|
||||||
</storageModule>
|
</storageModule>
|
||||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||||
<configuration artifactName="${ProjName}" buildProperties="" description="" errorParsers="org.eclipse.cdt.core.GASErrorParser;org.eclipse.cdt.core.GmakeErrorParser;org.eclipse.cdt.core.GLDErrorParser;org.eclipse.cdt.core.CWDLocator;org.eclipse.cdt.core.GCCErrorParser" id="cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.688890851.1707795689" name="eive-q7s-debug" optionalBuildProperties="org.eclipse.cdt.docker.launcher.containerbuild.property.enablement=null,org.eclipse.cdt.docker.launcher.containerbuild.property.volumes=,org.eclipse.cdt.docker.launcher.containerbuild.property.connection=null,org.eclipse.cdt.docker.launcher.containerbuild.property.selectedvolumes=,org.eclipse.cdt.docker.launcher.containerbuild.property.image=null" parent="org.eclipse.cdt.build.core.emptycfg">
|
<configuration artifactName="${ProjName}" buildProperties="" description="" errorParsers="org.eclipse.cdt.core.GASErrorParser;org.eclipse.cdt.core.GmakeErrorParser;org.eclipse.cdt.core.GLDErrorParser;org.eclipse.cdt.core.CWDLocator;org.eclipse.cdt.core.GCCErrorParser" id="cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.688890851.1707795689" name="eive-q7s-debug" optionalBuildProperties="org.eclipse.cdt.docker.launcher.containerbuild.property.enablement=null,org.eclipse.cdt.docker.launcher.containerbuild.property.selectedvolumes=,org.eclipse.cdt.docker.launcher.containerbuild.property.volumes=,org.eclipse.cdt.docker.launcher.containerbuild.property.image=null,org.eclipse.cdt.docker.launcher.containerbuild.property.connection=null" parent="org.eclipse.cdt.build.core.emptycfg">
|
||||||
<folderInfo id="cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.688890851.1707795689." name="/" resourcePath="">
|
<folderInfo id="cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.688890851.1707795689." name="/" resourcePath="">
|
||||||
<toolChain id="ilg.gnuarmeclipse.managedbuild.cross.toolchain.base.1439714522" name="Arm Cross GCC" superClass="ilg.gnuarmeclipse.managedbuild.cross.toolchain.base">
|
<toolChain id="ilg.gnuarmeclipse.managedbuild.cross.toolchain.base.1439714522" name="Arm Cross GCC" superClass="ilg.gnuarmeclipse.managedbuild.cross.toolchain.base">
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.architecture.1064018737" name="Architecture" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.architecture" value="ilg.gnuarmeclipse.managedbuild.cross.option.architecture.arm" valueType="enumerated"/>
|
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.architecture.1064018737" name="Architecture" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.architecture" value="ilg.gnuarmeclipse.managedbuild.cross.option.architecture.arm" valueType="enumerated"/>
|
||||||
@ -687,7 +687,8 @@
|
|||||||
<listOptionValue builtIn="false" value=""${Q7S_SYSROOT_UNIX}/usr/include""/>
|
<listOptionValue builtIn="false" value=""${Q7S_SYSROOT_UNIX}/usr/include""/>
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/fsfw/src}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/fsfw/src}""/>
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/fsfw/hal/src}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/fsfw/hal/src}""/>
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/build-Debug-Q7S/fsfw}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/cmake-build-debug-q7s}""/>
|
||||||
|
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/cmake-build-debug-q7s/fsfw}""/>
|
||||||
</option>
|
</option>
|
||||||
<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.input.1331264991" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.input"/>
|
<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.input.1331264991" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.input"/>
|
||||||
</tool>
|
</tool>
|
||||||
@ -699,7 +700,8 @@
|
|||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/linux/fsfwconfig}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/linux/fsfwconfig}""/>
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/fsfw/src}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/fsfw/src}""/>
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/fsfw/hal/src}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/fsfw/hal/src}""/>
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/build-Debug-Q7S/fsfw}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/cmake-build-debug-q7s}""/>
|
||||||
|
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/cmake-build-debug-q7s/fsfw}""/>
|
||||||
</option>
|
</option>
|
||||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.defs.1143219558" name="Defined symbols (-D)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.defs" useByScannerDiscovery="true" valueType="definedSymbols">
|
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.defs.1143219558" name="Defined symbols (-D)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.defs" useByScannerDiscovery="true" valueType="definedSymbols">
|
||||||
<listOptionValue builtIn="false" value="LINUX=1"/>
|
<listOptionValue builtIn="false" value="LINUX=1"/>
|
||||||
@ -713,10 +715,10 @@
|
|||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/linux/fsfwconfig}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/linux/fsfwconfig}""/>
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/common/config}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/common/config}""/>
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw}""/>
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/build-Debug-Q7S}""/>
|
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/fsfw/src}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/fsfw/src}""/>
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/fsfw/hal/src}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/fsfw/hal/src}""/>
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/build-Debug-Q7S/fsfw}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/cmake-build-debug-q7s}""/>
|
||||||
|
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/cmake-build-debug-q7s/fsfw}""/>
|
||||||
</option>
|
</option>
|
||||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.defs.1199844227" name="Defined symbols (-D)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.defs" useByScannerDiscovery="true" valueType="definedSymbols">
|
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.defs.1199844227" name="Defined symbols (-D)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.defs" useByScannerDiscovery="true" valueType="definedSymbols">
|
||||||
<listOptionValue builtIn="false" value="LINUX=1"/>
|
<listOptionValue builtIn="false" value="LINUX=1"/>
|
||||||
@ -748,7 +750,7 @@
|
|||||||
</toolChain>
|
</toolChain>
|
||||||
</folderInfo>
|
</folderInfo>
|
||||||
<sourceEntries>
|
<sourceEntries>
|
||||||
<entry excluding="build-Debug-Host|build-Watchdog-Debug" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
|
<entry excluding="bsp_hosted|bsp_linux_board|cmake-build-debug-q7s/_deps/etl-src/uml|cmake-build-debug-q7s/_deps/etl-src/temp|cmake-build-debug-q7s/_deps/etl-src/support|cmake-build-debug-q7s/_deps/etl-src/subprojects|cmake-build-debug-q7s/_deps/etl-src/scripts|cmake-build-debug-q7s/_deps/etl-src/images|cmake-build-debug-q7s/_deps/etl-src/examples|cmake-build-debug-q7s/_deps/etl-src/cmake|cmake-build-debug-q7s/_deps/etl-src/arduino|tmtc|scripts|bsp_te0720_1cfa|thirdparty/rapidcsv/tests|thirdparty/rapidcsv/examples|thirdparty/rapidcsv/doc|thirdparty/json/third_party|thirdparty/json/test|thirdparty/json/single_include|thirdparty/json/doc|thirdparty/json/cmake|thirdparty/json/benchmarks|archive|cmake-build-release-q7s|bsp_egse|cmake-build-debug-q7s/_deps/etl-src/test|cmake-build-debug|cmake-build-debug-q7s-em|build-Debug-Host|build-Watchdog-Debug" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
|
||||||
</sourceEntries>
|
</sourceEntries>
|
||||||
</configuration>
|
</configuration>
|
||||||
</storageModule>
|
</storageModule>
|
||||||
@ -858,6 +860,7 @@
|
|||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/linux/fsfwconfig}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/linux/fsfwconfig}""/>
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/fsfw/src}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/fsfw/src}""/>
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/fsfw/hal/src}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/fsfw/hal/src}""/>
|
||||||
|
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/cmake-build-release-q7s}""/>
|
||||||
</option>
|
</option>
|
||||||
<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.input.2127363958" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.input"/>
|
<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.input.2127363958" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.input"/>
|
||||||
</tool>
|
</tool>
|
||||||
@ -868,6 +871,7 @@
|
|||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/fsfw/src}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/fsfw/src}""/>
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/fsfw/hal/src}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/fsfw/hal/src}""/>
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw}""/>
|
||||||
|
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/cmake-build-release-q7s}""/>
|
||||||
</option>
|
</option>
|
||||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.defs.1774225921" name="Defined symbols (-D)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.defs" useByScannerDiscovery="true" valueType="definedSymbols">
|
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.defs.1774225921" name="Defined symbols (-D)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.defs" useByScannerDiscovery="true" valueType="definedSymbols">
|
||||||
<listOptionValue builtIn="false" value="LINUX=1"/>
|
<listOptionValue builtIn="false" value="LINUX=1"/>
|
||||||
@ -881,6 +885,7 @@
|
|||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/fsfw/src}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/fsfw/src}""/>
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/fsfw/hal/src}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/fsfw/hal/src}""/>
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw}""/>
|
||||||
|
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/cmake-build-release-q7s}""/>
|
||||||
</option>
|
</option>
|
||||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.defs.41651526" name="Defined symbols (-D)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.defs" useByScannerDiscovery="true" valueType="definedSymbols">
|
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.defs.41651526" name="Defined symbols (-D)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.defs" useByScannerDiscovery="true" valueType="definedSymbols">
|
||||||
<listOptionValue builtIn="false" value="LINUX=1"/>
|
<listOptionValue builtIn="false" value="LINUX=1"/>
|
||||||
@ -912,7 +917,7 @@
|
|||||||
</toolChain>
|
</toolChain>
|
||||||
</folderInfo>
|
</folderInfo>
|
||||||
<sourceEntries>
|
<sourceEntries>
|
||||||
<entry excluding="build-Debug-Host|build-Watchdog-Debug" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
|
<entry excluding="bsp_hosted|bsp_linux_board|cmake-build-debug-q7s/_deps/etl-src/uml|cmake-build-debug-q7s/_deps/etl-src/temp|cmake-build-debug-q7s/_deps/etl-src/support|cmake-build-debug-q7s/_deps/etl-src/subprojects|cmake-build-debug-q7s/_deps/etl-src/scripts|cmake-build-debug-q7s/_deps/etl-src/images|cmake-build-debug-q7s/_deps/etl-src/examples|cmake-build-debug-q7s/_deps/etl-src/cmake|cmake-build-debug-q7s/_deps/etl-src/arduino|tmtc|scripts|bsp_te0720_1cfa|thirdparty/rapidcsv/tests|thirdparty/rapidcsv/examples|thirdparty/rapidcsv/doc|thirdparty/json/third_party|thirdparty/json/test|thirdparty/json/single_include|thirdparty/json/doc|thirdparty/json/cmake|thirdparty/json/benchmarks|archive|bsp_egse|cmake-build-debug-q7s/_deps/etl-src/test|cmake-build-debug|cmake-build-debug-q7s-em|build-Debug-Host|build-Watchdog-Debug" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
|
||||||
</sourceEntries>
|
</sourceEntries>
|
||||||
</configuration>
|
</configuration>
|
||||||
</storageModule>
|
</storageModule>
|
||||||
@ -1079,344 +1084,12 @@
|
|||||||
</toolChain>
|
</toolChain>
|
||||||
</folderInfo>
|
</folderInfo>
|
||||||
<sourceEntries>
|
<sourceEntries>
|
||||||
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
|
<entry excluding="bsp_hosted|bsp_linux_board|cmake-build-debug-q7s/_deps/etl-src/uml|cmake-build-debug-q7s/_deps/etl-src/temp|cmake-build-debug-q7s/_deps/etl-src/support|cmake-build-debug-q7s/_deps/etl-src/subprojects|cmake-build-debug-q7s/_deps/etl-src/scripts|cmake-build-debug-q7s/_deps/etl-src/images|cmake-build-debug-q7s/_deps/etl-src/examples|cmake-build-debug-q7s/_deps/etl-src/cmake|cmake-build-debug-q7s/_deps/etl-src/arduino|tmtc|scripts|bsp_te0720_1cfa|thirdparty/rapidcsv/tests|thirdparty/rapidcsv/examples|thirdparty/rapidcsv/doc|thirdparty/json/third_party|thirdparty/json/test|thirdparty/json/single_include|thirdparty/json/doc|thirdparty/json/cmake|thirdparty/json/benchmarks|archive|cmake-build-release-q7s|bsp_egse|cmake-build-debug-q7s/_deps/etl-src/test" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
|
||||||
</sourceEntries>
|
</sourceEntries>
|
||||||
</configuration>
|
</configuration>
|
||||||
</storageModule>
|
</storageModule>
|
||||||
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
||||||
</cconfiguration>
|
</cconfiguration>
|
||||||
<cconfiguration id="cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.688890851.1707795689.1631077874">
|
|
||||||
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.688890851.1707795689.1631077874" moduleId="org.eclipse.cdt.core.settings" name="q7s-watchdog-debug">
|
|
||||||
<macros>
|
|
||||||
<stringMacro name="Q7S_SYSROOT_UNIX" type="VALUE_PATH_DIR" value="/home/rmueller/Xilinx/cortexa9hf-neon-xiphos-linux-gnueabi"/>
|
|
||||||
<stringMacro name="Q7S_SYSROOT" type="VALUE_TEXT" value="C:\Xilinx\cortexa9hf-neon-xiphos-linux-gnueabi"/>
|
|
||||||
</macros>
|
|
||||||
<externalSettings/>
|
|
||||||
<extensions>
|
|
||||||
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
|
|
||||||
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
|
||||||
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
|
||||||
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
|
||||||
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
|
||||||
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
|
|
||||||
</extensions>
|
|
||||||
</storageModule>
|
|
||||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
|
||||||
<configuration artifactName="${ProjName}" buildProperties="" description="" errorParsers="org.eclipse.cdt.core.GASErrorParser;org.eclipse.cdt.core.GmakeErrorParser;org.eclipse.cdt.core.GLDErrorParser;org.eclipse.cdt.core.CWDLocator;org.eclipse.cdt.core.GCCErrorParser" id="cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.688890851.1707795689.1631077874" name="q7s-watchdog-debug" optionalBuildProperties="org.eclipse.cdt.docker.launcher.containerbuild.property.enablement=null,org.eclipse.cdt.docker.launcher.containerbuild.property.selectedvolumes=,org.eclipse.cdt.docker.launcher.containerbuild.property.volumes=,org.eclipse.cdt.docker.launcher.containerbuild.property.image=null,org.eclipse.cdt.docker.launcher.containerbuild.property.connection=null" parent="org.eclipse.cdt.build.core.emptycfg">
|
|
||||||
<folderInfo id="cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.688890851.1707795689.1631077874." name="/" resourcePath="">
|
|
||||||
<toolChain id="ilg.gnuarmeclipse.managedbuild.cross.toolchain.base.1853196545" name="Arm Cross GCC" superClass="ilg.gnuarmeclipse.managedbuild.cross.toolchain.base">
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.architecture.1428115688" name="Architecture" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.architecture" value="ilg.gnuarmeclipse.managedbuild.cross.option.architecture.arm" valueType="enumerated"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.prefix.1510944155" name="Prefix" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.prefix" value="arm-linux-gnueabihf-" valueType="string"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.suffix.92769252" name="Suffix" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.suffix"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.c.610019917" name="C compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.c" value="gcc" valueType="string"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.cpp.1201031544" name="C++ compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.cpp" value="g++" valueType="string"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.ar.1760410498" name="Archiver" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.ar" value="ar" valueType="string"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.objcopy.1064763498" name="Hex/Bin converter" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.objcopy" value="objcopy" valueType="string"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.objdump.331631265" name="Listing generator" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.objdump" value="objdump" valueType="string"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.size.970331748" name="Size command" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.size" value="size" valueType="string"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.make.236522981" name="Build command" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.make" value="make" valueType="string"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.rm.1865808922" name="Remove command" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.rm" value="rm" valueType="string"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.toolchain.useglobalpath.699729501" name="Use global path" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.toolchain.useglobalpath"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.toolchain.path.1295538139" name="Path" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.toolchain.path"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createflash.388594967" name="Create flash image" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createflash" value="true" valueType="boolean"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createlisting.793340001" name="Create extended listing" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createlisting"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.printsize.1749727653" name="Print size" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.printsize" value="true" valueType="boolean"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.family.1349977381" name="Arm family (-mcpu)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.family" value="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.mcpu.cortex-m3" valueType="enumerated"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.architecture.82989226" name="Architecture (-march)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.architecture"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.instructionset.1541608075" name="Instruction set" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.instructionset" value="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.instructionset.thumb" valueType="enumerated"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.thumbinterwork.401888334" name="Thumb interwork (-mthumb-interwork)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.thumbinterwork"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.endianness.272627134" name="Endianness" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.endianness"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.abi.239262593" name="Float ABI" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.abi"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.unit.1141165586" name="FPU Type" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.unit"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.unalignedaccess.1695405433" name="Unaligned access" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.unalignedaccess"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.mcmse.116686091" name="TrustZone (-mcmse)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.mcmse"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.aarch64.target.family.1655566978" name="AArch64 family" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.aarch64.target.family"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.aarch64.target.feature.crc.229916669" name="Feature crc" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.aarch64.target.feature.crc"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.aarch64.target.feature.crypto.689188772" name="Feature crypto" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.aarch64.target.feature.crypto"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.aarch64.target.feature.fp.1690300834" name="Feature fp" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.aarch64.target.feature.fp"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.aarch64.target.feature.simd.321734321" name="Feature simd" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.aarch64.target.feature.simd"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.aarch64.target.cmodel.1092901157" name="Code model" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.aarch64.target.cmodel"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.aarch64.target.strictalign.1356288749" name="Strict align (-mstrict-align)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.aarch64.target.strictalign"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.target.other.1535510832" name="Other target flags" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.target.other"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level.899890698" name="Optimization Level" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.messagelength.653591581" name="Message length (-fmessage-length=0)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.messagelength"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.signedchar.749393024" name="'char' is signed (-fsigned-char)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.signedchar"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.functionsections.178082852" name="Function sections (-ffunction-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.functionsections"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.datasections.1869939879" name="Data sections (-fdata-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.datasections"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.nocommon.1203685642" name="No common unitialized (-fno-common)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.nocommon"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.noinlinefunctions.118922060" name="Do not inline functions (-fno-inline-functions)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.noinlinefunctions"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.freestanding.395214006" name="Assume freestanding environment (-ffreestanding)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.freestanding"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.nobuiltin.301987739" name="Disable builtin (-fno-builtin)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.nobuiltin"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.spconstant.2093987817" name="Single precision constants (-fsingle-precision-constant)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.spconstant"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.PIC.289151888" name="Position independent code (-fPIC)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.PIC"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.lto.785873443" name="Link-time optimizer (-flto)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.lto"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.nomoveloopinvariants.1448605850" name="Disable loop invariant move (-fno-move-loop-invariants)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.nomoveloopinvariants"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.other.1532026535" name="Other optimization flags" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.other"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.toolchain.name.607327208" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.toolchain.name" value="Linaro ARMv7 Linux GNU EABI HF" valueType="string"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.toolchain.id.62782791" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.toolchain.id" value="4014586055" valueType="string"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.syntaxonly.642384458" name="Check syntax only (-fsyntax-only)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.syntaxonly"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.pedantic.525513943" name="Pedantic (-pedantic)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.pedantic"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.pedanticerrors.1578782971" name="Pedantic warnings as errors (-pedantic-errors)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.pedanticerrors"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.nowarn.1037034083" name="Inhibit all warnings (-w)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.nowarn"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.unused.1247065471" name="Warn on various unused elements (-Wunused)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.unused"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.uninitialized.1260951251" name="Warn on uninitialized variables (-Wuninitialised)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.uninitialized"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.allwarn.981936260" name="Enable all common warnings (-Wall)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.allwarn"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.extrawarn.503012799" name="Enable extra warnings (-Wextra)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.extrawarn"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.missingdeclaration.253033895" name="Warn on undeclared global function (-Wmissing-declaration)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.missingdeclaration"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.conversion.1373654311" name="Warn on implicit conversions (-Wconversion)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.conversion"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.pointerarith.1799537282" name="Warn if pointer arithmetic (-Wpointer-arith)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.pointerarith"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.padded.1035296638" name="Warn if padding is included (-Wpadded)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.padded"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.shadow.464394102" name="Warn if shadowed variable (-Wshadow)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.shadow"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.logicalop.1460483292" name="Warn if suspicious logical ops (-Wlogical-op)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.logicalop"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.agreggatereturn.127377897" name="Warn if struct is returned (-Wagreggate-return)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.agreggatereturn"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.floatequal.1847784730" name="Warn if floats are compared as equal (-Wfloat-equal)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.floatequal"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.toerrors.1755613157" name="Generate errors instead of warnings (-Werror)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.toerrors"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.other.692577952" name="Other warning flags" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.other"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.level.1908336701" name="Debug level" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.level"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.format.1804194339" name="Debug format" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.format"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.prof.526555351" name="Generate prof information (-p)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.prof"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.gprof.873587454" name="Generate gprof information (-pg)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.gprof"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.other.138952870" name="Other debugging flags" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.other"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.showDevicesTab.69065720" name="showDevicesTab" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.showDevicesTab"/>
|
|
||||||
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform.1773865512" isAbstract="false" osList="all" superClass="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform"/>
|
|
||||||
<builder arguments="--build . --target eive-watchdog -j" buildPath="${workspace_loc:/eive-obsw/build-Debug-Watchdog}" command="cmake" enableCleanBuild="false" enabledIncrementalBuild="true" id="ilg.gnuarmeclipse.managedbuild.cross.builder.890124449" incrementalBuildTarget="" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="ilg.gnuarmeclipse.managedbuild.cross.builder"/>
|
|
||||||
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.964799144" name="GNU Arm Cross Assembler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler">
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor.295289472" name="Use preprocessor" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor" value="true" valueType="boolean"/>
|
|
||||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths.111941431" name="Include paths (-I)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths" valueType="includePath">
|
|
||||||
<listOptionValue builtIn="false" value=""${Q7S_SYSROOT_UNIX}/usr/include""/>
|
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/fsfw/src}""/>
|
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/fsfw/hal/src}""/>
|
|
||||||
</option>
|
|
||||||
<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.input.459112711" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.input"/>
|
|
||||||
</tool>
|
|
||||||
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.715561087" name="GNU Arm Cross C Compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler">
|
|
||||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.include.paths.1490897717" name="Include paths (-I)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.include.paths" useByScannerDiscovery="true" valueType="includePath">
|
|
||||||
<listOptionValue builtIn="false" value=""${Q7S_SYSROOT_UNIX}/usr/include""/>
|
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/common/config}""/>
|
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw}""/>
|
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/linux/fsfwconfig}""/>
|
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/fsfw/src}""/>
|
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/fsfw/hal/src}""/>
|
|
||||||
</option>
|
|
||||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.defs.103503120" name="Defined symbols (-D)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.defs" useByScannerDiscovery="true" valueType="definedSymbols">
|
|
||||||
<listOptionValue builtIn="false" value="LINUX=1"/>
|
|
||||||
</option>
|
|
||||||
<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input.1004720080" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input"/>
|
|
||||||
</tool>
|
|
||||||
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.1992099127" name="GNU Arm Cross C++ Compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler">
|
|
||||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.include.paths.415780010" name="Include paths (-I)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.include.paths" useByScannerDiscovery="true" valueType="includePath">
|
|
||||||
<listOptionValue builtIn="false" value=""../${Q7S_SYSROOT}/usr/include""/>
|
|
||||||
<listOptionValue builtIn="false" value=""${Q7S_SYSROOT_UNIX}/usr/include""/>
|
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/linux/fsfwconfig}""/>
|
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/common/config}""/>
|
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw}""/>
|
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/build-Debug-Q7S}""/>
|
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/fsfw/src}""/>
|
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/fsfw/hal/src}""/>
|
|
||||||
</option>
|
|
||||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.defs.257960269" name="Defined symbols (-D)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.defs" useByScannerDiscovery="true" valueType="definedSymbols">
|
|
||||||
<listOptionValue builtIn="false" value="LINUX=1"/>
|
|
||||||
</option>
|
|
||||||
<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.input.234631061" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.input"/>
|
|
||||||
</tool>
|
|
||||||
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.linker.1055147494" name="GNU Arm Cross C Linker" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.linker">
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.gcsections.764318262" name="Remove unused sections (-Xlinker --gc-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.gcsections" value="true" valueType="boolean"/>
|
|
||||||
</tool>
|
|
||||||
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker.1702402068" name="GNU Arm Cross C++ Linker" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker">
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.gcsections.741677865" name="Remove unused sections (-Xlinker --gc-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.gcsections" value="true" valueType="boolean"/>
|
|
||||||
<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker.input.731249103" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker.input">
|
|
||||||
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
|
|
||||||
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
|
|
||||||
</inputType>
|
|
||||||
</tool>
|
|
||||||
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.archiver.667910659" name="GNU Arm Cross Archiver" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.archiver"/>
|
|
||||||
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.createflash.1162425410" name="GNU Arm Cross Create Flash Image" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.createflash"/>
|
|
||||||
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.createlisting.753735540" name="GNU Arm Cross Create Listing" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.createlisting">
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.source.967599747" name="Display source (--source|-S)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.source" value="true" valueType="boolean"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.allheaders.782719246" name="Display all headers (--all-headers|-x)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.allheaders" value="true" valueType="boolean"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.demangle.887746034" name="Demangle names (--demangle|-C)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.demangle" value="true" valueType="boolean"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.linenumbers.2083687557" name="Display line numbers (--line-numbers|-l)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.linenumbers" value="true" valueType="boolean"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.wide.278410379" name="Wide lines (--wide|-w)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.wide" value="true" valueType="boolean"/>
|
|
||||||
</tool>
|
|
||||||
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.printsize.1321295676" name="GNU Arm Cross Print Size" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.printsize">
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.printsize.format.2004631716" name="Size format" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.printsize.format"/>
|
|
||||||
</tool>
|
|
||||||
</toolChain>
|
|
||||||
</folderInfo>
|
|
||||||
<sourceEntries>
|
|
||||||
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
|
|
||||||
</sourceEntries>
|
|
||||||
</configuration>
|
|
||||||
</storageModule>
|
|
||||||
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
|
||||||
<storageModule moduleId="ilg.gnumcueclipse.managedbuild.packs"/>
|
|
||||||
</cconfiguration>
|
|
||||||
<cconfiguration id="cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.688890851.1707795689.1631077874.1323243318">
|
|
||||||
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.688890851.1707795689.1631077874.1323243318" moduleId="org.eclipse.cdt.core.settings" name="q7s-watchdog-release">
|
|
||||||
<macros>
|
|
||||||
<stringMacro name="Q7S_SYSROOT_UNIX" type="VALUE_PATH_DIR" value="/home/rmueller/Xilinx/cortexa9hf-neon-xiphos-linux-gnueabi"/>
|
|
||||||
<stringMacro name="Q7S_SYSROOT" type="VALUE_TEXT" value="C:\Xilinx\cortexa9hf-neon-xiphos-linux-gnueabi"/>
|
|
||||||
</macros>
|
|
||||||
<externalSettings/>
|
|
||||||
<extensions>
|
|
||||||
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
|
|
||||||
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
|
||||||
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
|
||||||
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
|
||||||
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
|
||||||
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
|
|
||||||
</extensions>
|
|
||||||
</storageModule>
|
|
||||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
|
||||||
<configuration artifactName="${ProjName}" buildProperties="" description="" errorParsers="org.eclipse.cdt.core.GASErrorParser;org.eclipse.cdt.core.GmakeErrorParser;org.eclipse.cdt.core.GLDErrorParser;org.eclipse.cdt.core.CWDLocator;org.eclipse.cdt.core.GCCErrorParser" id="cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.688890851.1707795689.1631077874.1323243318" name="q7s-watchdog-release" optionalBuildProperties="org.eclipse.cdt.docker.launcher.containerbuild.property.enablement=null,org.eclipse.cdt.docker.launcher.containerbuild.property.selectedvolumes=,org.eclipse.cdt.docker.launcher.containerbuild.property.volumes=,org.eclipse.cdt.docker.launcher.containerbuild.property.image=null,org.eclipse.cdt.docker.launcher.containerbuild.property.connection=null" parent="org.eclipse.cdt.build.core.emptycfg">
|
|
||||||
<folderInfo id="cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.688890851.1707795689.1631077874.1323243318." name="/" resourcePath="">
|
|
||||||
<toolChain id="ilg.gnuarmeclipse.managedbuild.cross.toolchain.base.945823170" name="Arm Cross GCC" superClass="ilg.gnuarmeclipse.managedbuild.cross.toolchain.base">
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.architecture.1822710270" name="Architecture" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.architecture" value="ilg.gnuarmeclipse.managedbuild.cross.option.architecture.arm" valueType="enumerated"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.prefix.605508402" name="Prefix" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.prefix" value="arm-linux-gnueabihf-" valueType="string"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.suffix.1685371232" name="Suffix" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.suffix"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.c.1230707505" name="C compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.c" value="gcc" valueType="string"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.cpp.1964629067" name="C++ compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.cpp" value="g++" valueType="string"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.ar.385685672" name="Archiver" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.ar" value="ar" valueType="string"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.objcopy.19798029" name="Hex/Bin converter" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.objcopy" value="objcopy" valueType="string"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.objdump.660151116" name="Listing generator" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.objdump" value="objdump" valueType="string"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.size.1389883617" name="Size command" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.size" value="size" valueType="string"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.make.1048438852" name="Build command" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.make" value="make" valueType="string"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.rm.868955624" name="Remove command" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.rm" value="rm" valueType="string"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.toolchain.useglobalpath.118295726" name="Use global path" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.toolchain.useglobalpath"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.toolchain.path.1093543991" name="Path" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.toolchain.path"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createflash.921980090" name="Create flash image" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createflash" value="true" valueType="boolean"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createlisting.1363567442" name="Create extended listing" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createlisting"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.printsize.2082737223" name="Print size" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.printsize" value="true" valueType="boolean"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.family.1423005809" name="Arm family (-mcpu)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.family" value="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.mcpu.cortex-m3" valueType="enumerated"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.architecture.618203550" name="Architecture (-march)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.architecture"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.instructionset.1847875724" name="Instruction set" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.instructionset" value="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.instructionset.thumb" valueType="enumerated"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.thumbinterwork.2079846402" name="Thumb interwork (-mthumb-interwork)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.thumbinterwork"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.endianness.199745021" name="Endianness" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.endianness"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.abi.859908593" name="Float ABI" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.abi"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.unit.575938010" name="FPU Type" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.unit"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.unalignedaccess.1351320485" name="Unaligned access" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.unalignedaccess"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.mcmse.727223476" name="TrustZone (-mcmse)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.mcmse"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.aarch64.target.family.1731779212" name="AArch64 family" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.aarch64.target.family"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.aarch64.target.feature.crc.777808183" name="Feature crc" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.aarch64.target.feature.crc"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.aarch64.target.feature.crypto.421152926" name="Feature crypto" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.aarch64.target.feature.crypto"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.aarch64.target.feature.fp.1971579602" name="Feature fp" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.aarch64.target.feature.fp"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.aarch64.target.feature.simd.1672918300" name="Feature simd" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.aarch64.target.feature.simd"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.aarch64.target.cmodel.1151412221" name="Code model" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.aarch64.target.cmodel"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.aarch64.target.strictalign.325813321" name="Strict align (-mstrict-align)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.aarch64.target.strictalign"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.target.other.1987396366" name="Other target flags" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.target.other"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level.937657323" name="Optimization Level" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.messagelength.449353406" name="Message length (-fmessage-length=0)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.messagelength"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.signedchar.1585813196" name="'char' is signed (-fsigned-char)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.signedchar"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.functionsections.1824290503" name="Function sections (-ffunction-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.functionsections"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.datasections.914739306" name="Data sections (-fdata-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.datasections"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.nocommon.535397306" name="No common unitialized (-fno-common)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.nocommon"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.noinlinefunctions.1186797822" name="Do not inline functions (-fno-inline-functions)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.noinlinefunctions"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.freestanding.1945013655" name="Assume freestanding environment (-ffreestanding)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.freestanding"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.nobuiltin.243922601" name="Disable builtin (-fno-builtin)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.nobuiltin"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.spconstant.666712948" name="Single precision constants (-fsingle-precision-constant)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.spconstant"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.PIC.1105072873" name="Position independent code (-fPIC)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.PIC"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.lto.2055098195" name="Link-time optimizer (-flto)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.lto"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.nomoveloopinvariants.1126925637" name="Disable loop invariant move (-fno-move-loop-invariants)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.nomoveloopinvariants"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.other.474962212" name="Other optimization flags" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.other"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.toolchain.name.310881289" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.toolchain.name" value="Linaro ARMv7 Linux GNU EABI HF" valueType="string"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.toolchain.id.1368410061" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.toolchain.id" value="4014586055" valueType="string"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.syntaxonly.1445202717" name="Check syntax only (-fsyntax-only)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.syntaxonly"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.pedantic.737997342" name="Pedantic (-pedantic)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.pedantic"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.pedanticerrors.1571094982" name="Pedantic warnings as errors (-pedantic-errors)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.pedanticerrors"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.nowarn.465411429" name="Inhibit all warnings (-w)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.nowarn"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.unused.905397234" name="Warn on various unused elements (-Wunused)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.unused"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.uninitialized.17965819" name="Warn on uninitialized variables (-Wuninitialised)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.uninitialized"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.allwarn.1834746748" name="Enable all common warnings (-Wall)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.allwarn"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.extrawarn.1938682393" name="Enable extra warnings (-Wextra)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.extrawarn"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.missingdeclaration.2145593538" name="Warn on undeclared global function (-Wmissing-declaration)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.missingdeclaration"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.conversion.109579169" name="Warn on implicit conversions (-Wconversion)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.conversion"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.pointerarith.1735516051" name="Warn if pointer arithmetic (-Wpointer-arith)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.pointerarith"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.padded.1660774802" name="Warn if padding is included (-Wpadded)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.padded"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.shadow.1385036335" name="Warn if shadowed variable (-Wshadow)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.shadow"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.logicalop.253199518" name="Warn if suspicious logical ops (-Wlogical-op)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.logicalop"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.agreggatereturn.771630072" name="Warn if struct is returned (-Wagreggate-return)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.agreggatereturn"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.floatequal.1688337175" name="Warn if floats are compared as equal (-Wfloat-equal)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.floatequal"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.toerrors.2068827270" name="Generate errors instead of warnings (-Werror)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.toerrors"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.other.1300850125" name="Other warning flags" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.other"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.level.1392289946" name="Debug level" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.level"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.format.1274169924" name="Debug format" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.format"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.prof.1855458448" name="Generate prof information (-p)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.prof"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.gprof.161141850" name="Generate gprof information (-pg)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.gprof"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.other.1135900144" name="Other debugging flags" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.other"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.showDevicesTab.2092395820" name="showDevicesTab" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.showDevicesTab"/>
|
|
||||||
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform.381962613" isAbstract="false" osList="all" superClass="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform"/>
|
|
||||||
<builder arguments="--build . --target eive-watchdog -j" buildPath="${workspace_loc:/eive-obsw/build-Release-Watchdog}" command="cmake" enableCleanBuild="false" enabledIncrementalBuild="true" id="ilg.gnuarmeclipse.managedbuild.cross.builder.1784164529" incrementalBuildTarget="" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="ilg.gnuarmeclipse.managedbuild.cross.builder"/>
|
|
||||||
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.926630835" name="GNU Arm Cross Assembler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler">
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor.243911424" name="Use preprocessor" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor" value="true" valueType="boolean"/>
|
|
||||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths.473023042" name="Include paths (-I)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths" valueType="includePath">
|
|
||||||
<listOptionValue builtIn="false" value=""${Q7S_SYSROOT_UNIX}/usr/include""/>
|
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/fsfw/src}""/>
|
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/fsfw/hal/src}""/>
|
|
||||||
</option>
|
|
||||||
<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.input.1421275058" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.input"/>
|
|
||||||
</tool>
|
|
||||||
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.449221513" name="GNU Arm Cross C Compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler">
|
|
||||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.include.paths.518907687" name="Include paths (-I)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.include.paths" useByScannerDiscovery="true" valueType="includePath">
|
|
||||||
<listOptionValue builtIn="false" value=""${Q7S_SYSROOT_UNIX}/usr/include""/>
|
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/common/config}""/>
|
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw}""/>
|
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/linux/fsfwconfig}""/>
|
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/fsfw/src}""/>
|
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/fsfw/hal/src}""/>
|
|
||||||
</option>
|
|
||||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.defs.1215245446" name="Defined symbols (-D)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.defs" useByScannerDiscovery="true" valueType="definedSymbols">
|
|
||||||
<listOptionValue builtIn="false" value="LINUX=1"/>
|
|
||||||
</option>
|
|
||||||
<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input.1048106331" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input"/>
|
|
||||||
</tool>
|
|
||||||
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.1358447993" name="GNU Arm Cross C++ Compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler">
|
|
||||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.include.paths.1479238966" name="Include paths (-I)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.include.paths" useByScannerDiscovery="true" valueType="includePath">
|
|
||||||
<listOptionValue builtIn="false" value=""../${Q7S_SYSROOT}/usr/include""/>
|
|
||||||
<listOptionValue builtIn="false" value=""${Q7S_SYSROOT_UNIX}/usr/include""/>
|
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/linux/fsfwconfig}""/>
|
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/common/config}""/>
|
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw}""/>
|
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/build-Debug-Q7S}""/>
|
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/fsfw/src}""/>
|
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/fsfw/hal/src}""/>
|
|
||||||
</option>
|
|
||||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.defs.1072937788" name="Defined symbols (-D)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.defs" useByScannerDiscovery="true" valueType="definedSymbols">
|
|
||||||
<listOptionValue builtIn="false" value="LINUX=1"/>
|
|
||||||
</option>
|
|
||||||
<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.input.1822075528" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.input"/>
|
|
||||||
</tool>
|
|
||||||
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.linker.24089673" name="GNU Arm Cross C Linker" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.linker">
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.gcsections.520318104" name="Remove unused sections (-Xlinker --gc-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.gcsections" value="true" valueType="boolean"/>
|
|
||||||
</tool>
|
|
||||||
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker.497099701" name="GNU Arm Cross C++ Linker" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker">
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.gcsections.230575607" name="Remove unused sections (-Xlinker --gc-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.gcsections" value="true" valueType="boolean"/>
|
|
||||||
<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker.input.1250155843" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker.input">
|
|
||||||
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
|
|
||||||
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
|
|
||||||
</inputType>
|
|
||||||
</tool>
|
|
||||||
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.archiver.1661455988" name="GNU Arm Cross Archiver" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.archiver"/>
|
|
||||||
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.createflash.1439410817" name="GNU Arm Cross Create Flash Image" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.createflash"/>
|
|
||||||
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.createlisting.660901959" name="GNU Arm Cross Create Listing" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.createlisting">
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.source.1807964015" name="Display source (--source|-S)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.source" value="true" valueType="boolean"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.allheaders.1831292329" name="Display all headers (--all-headers|-x)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.allheaders" value="true" valueType="boolean"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.demangle.1766387449" name="Demangle names (--demangle|-C)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.demangle" value="true" valueType="boolean"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.linenumbers.2058436534" name="Display line numbers (--line-numbers|-l)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.linenumbers" value="true" valueType="boolean"/>
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.wide.663388579" name="Wide lines (--wide|-w)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.wide" value="true" valueType="boolean"/>
|
|
||||||
</tool>
|
|
||||||
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.printsize.688188043" name="GNU Arm Cross Print Size" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.printsize">
|
|
||||||
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.printsize.format.703088320" name="Size format" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.printsize.format"/>
|
|
||||||
</tool>
|
|
||||||
</toolChain>
|
|
||||||
</folderInfo>
|
|
||||||
<sourceEntries>
|
|
||||||
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
|
|
||||||
</sourceEntries>
|
|
||||||
</configuration>
|
|
||||||
</storageModule>
|
|
||||||
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
|
||||||
<storageModule moduleId="ilg.gnumcueclipse.managedbuild.packs"/>
|
|
||||||
</cconfiguration>
|
|
||||||
<cconfiguration id="cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.775472168">
|
<cconfiguration id="cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.775472168">
|
||||||
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.775472168" moduleId="org.eclipse.cdt.core.settings" name="eive-fsfw-unittest">
|
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.775472168" moduleId="org.eclipse.cdt.core.settings" name="eive-fsfw-unittest">
|
||||||
<externalSettings/>
|
<externalSettings/>
|
||||||
@ -1476,7 +1149,7 @@
|
|||||||
</toolChain>
|
</toolChain>
|
||||||
</folderInfo>
|
</folderInfo>
|
||||||
<sourceEntries>
|
<sourceEntries>
|
||||||
<entry excluding="fsfwconfig" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
|
<entry excluding="bsp_linux_board|cmake-build-debug-q7s/_deps/etl-src/uml|cmake-build-debug-q7s/_deps/etl-src/temp|cmake-build-debug-q7s/_deps/etl-src/support|cmake-build-debug-q7s/_deps/etl-src/subprojects|cmake-build-debug-q7s/_deps/etl-src/scripts|cmake-build-debug-q7s/_deps/etl-src/images|cmake-build-debug-q7s/_deps/etl-src/examples|cmake-build-debug-q7s/_deps/etl-src/cmake|cmake-build-debug-q7s/_deps/etl-src/arduino|tmtc|scripts|bsp_te0720_1cfa|thirdparty/rapidcsv/tests|thirdparty/rapidcsv/examples|thirdparty/rapidcsv/doc|thirdparty/json/third_party|thirdparty/json/test|thirdparty/json/single_include|thirdparty/json/doc|thirdparty/json/cmake|thirdparty/json/benchmarks|archive|cmake-build-release-q7s|bsp_egse|cmake-build-debug-q7s/_deps/etl-src/test|fsfwconfig" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
|
||||||
</sourceEntries>
|
</sourceEntries>
|
||||||
</configuration>
|
</configuration>
|
||||||
</storageModule>
|
</storageModule>
|
||||||
@ -1644,13 +1317,81 @@
|
|||||||
</toolChain>
|
</toolChain>
|
||||||
</folderInfo>
|
</folderInfo>
|
||||||
<sourceEntries>
|
<sourceEntries>
|
||||||
<entry excluding="build-Debug-Host|build-Watchdog-Debug" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
|
<entry excluding="bsp_hosted|bsp_linux_board|cmake-build-debug-q7s/_deps/etl-src/uml|cmake-build-debug-q7s/_deps/etl-src/temp|cmake-build-debug-q7s/_deps/etl-src/support|cmake-build-debug-q7s/_deps/etl-src/subprojects|cmake-build-debug-q7s/_deps/etl-src/scripts|cmake-build-debug-q7s/_deps/etl-src/images|cmake-build-debug-q7s/_deps/etl-src/examples|cmake-build-debug-q7s/_deps/etl-src/cmake|cmake-build-debug-q7s/_deps/etl-src/arduino|tmtc|scripts|bsp_te0720_1cfa|thirdparty/rapidcsv/tests|thirdparty/rapidcsv/examples|thirdparty/rapidcsv/doc|thirdparty/json/third_party|thirdparty/json/test|thirdparty/json/single_include|thirdparty/json/doc|thirdparty/json/cmake|thirdparty/json/benchmarks|archive|cmake-build-release-q7s|bsp_egse|cmake-build-debug-q7s/_deps/etl-src/test|cmake-build-debug|build-Debug-Host|build-Watchdog-Debug" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
|
||||||
</sourceEntries>
|
</sourceEntries>
|
||||||
</configuration>
|
</configuration>
|
||||||
</storageModule>
|
</storageModule>
|
||||||
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
||||||
<storageModule moduleId="ilg.gnumcueclipse.managedbuild.packs"/>
|
<storageModule moduleId="ilg.gnumcueclipse.managedbuild.packs"/>
|
||||||
</cconfiguration>
|
</cconfiguration>
|
||||||
|
<cconfiguration id="cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.758550634">
|
||||||
|
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.758550634" moduleId="org.eclipse.cdt.core.settings" name="eive-host-unittest">
|
||||||
|
<externalSettings/>
|
||||||
|
<extensions>
|
||||||
|
<extension id="org.eclipse.cdt.core.GNU_ELF" point="org.eclipse.cdt.core.BinaryParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.PE64" point="org.eclipse.cdt.core.BinaryParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||||
|
</extensions>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||||
|
<configuration artifactName="${ProjName}" buildProperties="" description="" id="cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.758550634" name="eive-host-unittest" optionalBuildProperties="org.eclipse.cdt.docker.launcher.containerbuild.property.selectedvolumes=,org.eclipse.cdt.docker.launcher.containerbuild.property.volumes=,org.eclipse.cdt.docker.launcher.containerbuild.property.connection=unix:///var/run/docker.sock" parent="org.eclipse.cdt.build.core.emptycfg">
|
||||||
|
<folderInfo id="cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.758550634." name="/" resourcePath="">
|
||||||
|
<toolChain id="cdt.managedbuild.toolchain.gnu.base.2110799560" name="Linux GCC" superClass="cdt.managedbuild.toolchain.gnu.base">
|
||||||
|
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.GNU_ELF;org.eclipse.cdt.core.PE64" id="cdt.managedbuild.target.gnu.platform.base.2051576172" name="Debug Platform" osList="linux,hpux,aix,qnx" superClass="cdt.managedbuild.target.gnu.platform.base"/>
|
||||||
|
<builder arguments="--build . -j" buildPath="${workspace_loc:/eive-obsw/cmake-build-debug}" command="cmake" id="cdt.managedbuild.target.gnu.builder.base.1428720138" incrementalBuildTarget="" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="cdt.managedbuild.target.gnu.builder.base"/>
|
||||||
|
<tool id="cdt.managedbuild.tool.gnu.archiver.base.1228819986" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.base"/>
|
||||||
|
<tool id="cdt.managedbuild.tool.gnu.cpp.compiler.base.1957014384" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.base">
|
||||||
|
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="gnu.cpp.compiler.option.include.paths.1766309607" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
|
||||||
|
<listOptionValue builtIn="false" value=""${Q7S_SYSROOT_UNIX}/usr/include""/>
|
||||||
|
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/fsfw/src}""/>
|
||||||
|
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/fsfw/hal/src}""/>
|
||||||
|
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw}""/>
|
||||||
|
</option>
|
||||||
|
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="gnu.cpp.compiler.option.preprocessor.def.613191904" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" useByScannerDiscovery="false" valueType="definedSymbols">
|
||||||
|
<listOptionValue builtIn="false" value="LINUX=1"/>
|
||||||
|
</option>
|
||||||
|
<inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.957560385" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
|
||||||
|
</tool>
|
||||||
|
<tool id="cdt.managedbuild.tool.gnu.c.compiler.base.1695077973" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.base">
|
||||||
|
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="gnu.c.compiler.option.include.paths.1033866996" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
|
||||||
|
<listOptionValue builtIn="false" value=""${Q7S_SYSROOT_UNIX}/usr/include""/>
|
||||||
|
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/fsfw/src}""/>
|
||||||
|
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/fsfw/hal/src}""/>
|
||||||
|
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw}""/>
|
||||||
|
</option>
|
||||||
|
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="gnu.c.compiler.option.preprocessor.def.symbols.1209501637" name="Defined symbols (-D)" superClass="gnu.c.compiler.option.preprocessor.def.symbols" useByScannerDiscovery="false" valueType="definedSymbols">
|
||||||
|
<listOptionValue builtIn="false" value="LINUX=1"/>
|
||||||
|
</option>
|
||||||
|
<inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.509259725" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
|
||||||
|
</tool>
|
||||||
|
<tool id="cdt.managedbuild.tool.gnu.c.linker.base.713210863" name="GCC C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.base"/>
|
||||||
|
<tool id="cdt.managedbuild.tool.gnu.cpp.linker.base.999028294" name="GCC C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.base">
|
||||||
|
<inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.157645210" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
|
||||||
|
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
|
||||||
|
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
|
||||||
|
</inputType>
|
||||||
|
</tool>
|
||||||
|
<tool id="cdt.managedbuild.tool.gnu.assembler.base.632205906" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.base">
|
||||||
|
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="gnu.both.asm.option.include.paths.2065801836" name="Include paths (-I)" superClass="gnu.both.asm.option.include.paths" valueType="includePath">
|
||||||
|
<listOptionValue builtIn="false" value=""${Q7S_SYSROOT_UNIX}/usr/include""/>
|
||||||
|
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/fsfw/src}""/>
|
||||||
|
<listOptionValue builtIn="false" value=""${workspace_loc:/eive-obsw/fsfw/hal/src}""/>
|
||||||
|
</option>
|
||||||
|
<inputType id="cdt.managedbuild.tool.gnu.assembler.input.1963087248" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
|
||||||
|
</tool>
|
||||||
|
</toolChain>
|
||||||
|
</folderInfo>
|
||||||
|
<sourceEntries>
|
||||||
|
<entry excluding="bsp_linux_board|cmake-build-debug-q7s/_deps/etl-src/uml|cmake-build-debug-q7s/_deps/etl-src/temp|cmake-build-debug-q7s/_deps/etl-src/support|cmake-build-debug-q7s/_deps/etl-src/subprojects|cmake-build-debug-q7s/_deps/etl-src/scripts|cmake-build-debug-q7s/_deps/etl-src/images|cmake-build-debug-q7s/_deps/etl-src/examples|cmake-build-debug-q7s/_deps/etl-src/cmake|cmake-build-debug-q7s/_deps/etl-src/arduino|tmtc|scripts|bsp_te0720_1cfa|thirdparty/rapidcsv/tests|thirdparty/rapidcsv/examples|thirdparty/rapidcsv/doc|thirdparty/json/third_party|thirdparty/json/test|thirdparty/json/single_include|thirdparty/json/doc|thirdparty/json/cmake|thirdparty/json/benchmarks|archive|cmake-build-release-q7s|bsp_egse|cmake-build-debug-q7s/_deps/etl-src/test|fsfwconfig" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
|
||||||
|
</sourceEntries>
|
||||||
|
</configuration>
|
||||||
|
</storageModule>
|
||||||
|
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
||||||
|
</cconfiguration>
|
||||||
</storageModule>
|
</storageModule>
|
||||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||||
<project id="eive_obsw.null.1109622296" name="eive_obsw"/>
|
<project id="eive_obsw.null.1109622296" name="eive_obsw"/>
|
||||||
@ -1675,6 +1416,9 @@
|
|||||||
</configuration>
|
</configuration>
|
||||||
<configuration configurationName="eive-rpi-release-win"/>
|
<configuration configurationName="eive-rpi-release-win"/>
|
||||||
<configuration configurationName="q7s-watchdog-debug"/>
|
<configuration configurationName="q7s-watchdog-debug"/>
|
||||||
|
<configuration configurationName="eive-host-unittest">
|
||||||
|
<resource resourceType="PROJECT" workspacePath="/eive-obsw"/>
|
||||||
|
</configuration>
|
||||||
<configuration configurationName="Default">
|
<configuration configurationName="Default">
|
||||||
<resource resourceType="PROJECT" workspacePath="/eive_obsw"/>
|
<resource resourceType="PROJECT" workspacePath="/eive_obsw"/>
|
||||||
</configuration>
|
</configuration>
|
||||||
@ -1707,18 +1451,9 @@
|
|||||||
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.447898075;cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.447898075.;cdt.managedbuild.tool.gnu.cpp.compiler.base.1522927967;cdt.managedbuild.tool.gnu.cpp.compiler.input.305765911">
|
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.447898075;cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.447898075.;cdt.managedbuild.tool.gnu.cpp.compiler.base.1522927967;cdt.managedbuild.tool.gnu.cpp.compiler.input.305765911">
|
||||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||||
</scannerConfigBuildInfo>
|
</scannerConfigBuildInfo>
|
||||||
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.688890851.1707795689;cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.688890851.1707795689.;ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.628631287;ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input.216437361">
|
|
||||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
|
||||||
</scannerConfigBuildInfo>
|
|
||||||
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473;cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.;cdt.managedbuild.tool.gnu.cpp.compiler.base.1405808772;cdt.managedbuild.tool.gnu.cpp.compiler.input.1960112549">
|
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473;cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.;cdt.managedbuild.tool.gnu.cpp.compiler.base.1405808772;cdt.managedbuild.tool.gnu.cpp.compiler.input.1960112549">
|
||||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||||
</scannerConfigBuildInfo>
|
</scannerConfigBuildInfo>
|
||||||
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473;cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.;cdt.managedbuild.tool.gnu.c.compiler.base.1946711528;cdt.managedbuild.tool.gnu.c.compiler.input.584209663">
|
|
||||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
|
||||||
</scannerConfigBuildInfo>
|
|
||||||
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.688890851.190921171;cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.688890851.190921171.;ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.2044466190;ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.input.1551006500">
|
|
||||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
|
||||||
</scannerConfigBuildInfo>
|
|
||||||
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.688890851;cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.688890851.;ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.2065184927;ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input.920837857">
|
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.688890851;cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.688890851.;ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.2065184927;ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input.920837857">
|
||||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||||
</scannerConfigBuildInfo>
|
</scannerConfigBuildInfo>
|
||||||
@ -1734,6 +1469,45 @@
|
|||||||
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.688890851.1707795689.1775596945;cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.688890851.1707795689.1775596945.;ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.1154394228;ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input.1228307894">
|
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.688890851.1707795689.1775596945;cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.688890851.1707795689.1775596945.;ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.1154394228;ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input.1228307894">
|
||||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||||
</scannerConfigBuildInfo>
|
</scannerConfigBuildInfo>
|
||||||
|
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.1043649249;cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.1043649249.;cdt.managedbuild.tool.gnu.cpp.compiler.mingw.base.539225324;cdt.managedbuild.tool.gnu.cpp.compiler.input.1848997248">
|
||||||
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||||
|
</scannerConfigBuildInfo>
|
||||||
|
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.688890851.190921171;cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.688890851.190921171.;ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.193772074;ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input.2081570054">
|
||||||
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||||
|
</scannerConfigBuildInfo>
|
||||||
|
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443;cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.;cdt.managedbuild.tool.gnu.c.compiler.mingw.base.397223006;cdt.managedbuild.tool.gnu.c.compiler.input.1482659499">
|
||||||
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||||
|
</scannerConfigBuildInfo>
|
||||||
|
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.688890851.1707795689.1171630561;cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.688890851.1707795689.1171630561.;ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.308264050;ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.input.259982159">
|
||||||
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||||
|
</scannerConfigBuildInfo>
|
||||||
|
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.mingw.base.1031020513;cdt.managedbuild.toolchain.gnu.mingw.base.1031020513.519944638;cdt.managedbuild.tool.gnu.c.compiler.mingw.base.438317679;cdt.managedbuild.tool.gnu.c.compiler.input.336445831">
|
||||||
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||||
|
</scannerConfigBuildInfo>
|
||||||
|
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.688890851.1707795689.1939781894;cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.688890851.1707795689.1939781894.;ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.2002501811;ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input.1316209993">
|
||||||
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||||
|
</scannerConfigBuildInfo>
|
||||||
|
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443;cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.;cdt.managedbuild.tool.gnu.cpp.compiler.mingw.base.646655988;cdt.managedbuild.tool.gnu.cpp.compiler.input.1437856797">
|
||||||
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||||
|
</scannerConfigBuildInfo>
|
||||||
|
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.688890851.1707795689.1631077874;cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.688890851.1707795689.1631077874.;ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.1992099127;ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.input.234631061">
|
||||||
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||||
|
</scannerConfigBuildInfo>
|
||||||
|
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.688890851.1707795689;cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.688890851.1707795689.;ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.628631287;ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input.216437361">
|
||||||
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||||
|
</scannerConfigBuildInfo>
|
||||||
|
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.758550634;cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.758550634.;cdt.managedbuild.tool.gnu.cpp.compiler.base.1957014384;cdt.managedbuild.tool.gnu.cpp.compiler.input.957560385">
|
||||||
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||||
|
</scannerConfigBuildInfo>
|
||||||
|
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.688890851.1707795689.1631077874;cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.688890851.1707795689.1631077874.;ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.715561087;ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input.1004720080">
|
||||||
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||||
|
</scannerConfigBuildInfo>
|
||||||
|
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473;cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.;cdt.managedbuild.tool.gnu.c.compiler.base.1946711528;cdt.managedbuild.tool.gnu.c.compiler.input.584209663">
|
||||||
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||||
|
</scannerConfigBuildInfo>
|
||||||
|
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.688890851.190921171;cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.688890851.190921171.;ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.2044466190;ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.input.1551006500">
|
||||||
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||||
|
</scannerConfigBuildInfo>
|
||||||
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.688890851.1707795689;cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.688890851.1707795689.;ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.1535302916;ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.input.96000231">
|
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.688890851.1707795689;cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.688890851.1707795689.;ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.1535302916;ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.input.96000231">
|
||||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||||
</scannerConfigBuildInfo>
|
</scannerConfigBuildInfo>
|
||||||
@ -1746,25 +1520,13 @@
|
|||||||
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.688890851.1707795689.364559455;cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.688890851.1707795689.364559455.;ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.1970346305;ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input.2096585345">
|
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.688890851.1707795689.364559455;cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.688890851.1707795689.364559455.;ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.1970346305;ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input.2096585345">
|
||||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||||
</scannerConfigBuildInfo>
|
</scannerConfigBuildInfo>
|
||||||
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.1043649249;cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.1043649249.;cdt.managedbuild.tool.gnu.cpp.compiler.mingw.base.539225324;cdt.managedbuild.tool.gnu.cpp.compiler.input.1848997248">
|
|
||||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
|
||||||
</scannerConfigBuildInfo>
|
|
||||||
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.447898075;cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.447898075.;cdt.managedbuild.tool.gnu.c.compiler.base.623389075;cdt.managedbuild.tool.gnu.c.compiler.input.1382191457">
|
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.447898075;cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.447898075.;cdt.managedbuild.tool.gnu.c.compiler.base.623389075;cdt.managedbuild.tool.gnu.c.compiler.input.1382191457">
|
||||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||||
</scannerConfigBuildInfo>
|
</scannerConfigBuildInfo>
|
||||||
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.688890851.190921171;cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.688890851.190921171.;ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.193772074;ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input.2081570054">
|
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.758550634;cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.758550634.;cdt.managedbuild.tool.gnu.c.compiler.base.1695077973;cdt.managedbuild.tool.gnu.c.compiler.input.509259725">
|
||||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||||
</scannerConfigBuildInfo>
|
</scannerConfigBuildInfo>
|
||||||
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443;cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.;cdt.managedbuild.tool.gnu.c.compiler.mingw.base.397223006;cdt.managedbuild.tool.gnu.c.compiler.input.1482659499">
|
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.688890851.1707795689.1171630561;cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.688890851.1707795689.1171630561.;ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.1477130926;ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input.779990384">
|
||||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
|
||||||
</scannerConfigBuildInfo>
|
|
||||||
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.mingw.base.1031020513;cdt.managedbuild.toolchain.gnu.mingw.base.1031020513.519944638;cdt.managedbuild.tool.gnu.c.compiler.mingw.base.438317679;cdt.managedbuild.tool.gnu.c.compiler.input.336445831">
|
|
||||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
|
||||||
</scannerConfigBuildInfo>
|
|
||||||
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.688890851.1707795689.1939781894;cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.688890851.1707795689.1939781894.;ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.2002501811;ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input.1316209993">
|
|
||||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
|
||||||
</scannerConfigBuildInfo>
|
|
||||||
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443;cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.;cdt.managedbuild.tool.gnu.cpp.compiler.mingw.base.646655988;cdt.managedbuild.tool.gnu.cpp.compiler.input.1437856797">
|
|
||||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||||
</scannerConfigBuildInfo>
|
</scannerConfigBuildInfo>
|
||||||
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.688890851;cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.688890851.;ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.1595165802;ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.input.1925043110">
|
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.688890851;cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.688890851.;ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.1595165802;ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.input.1925043110">
|
||||||
|
@ -4,7 +4,6 @@
|
|||||||
<listAttribute key="org.eclipse.cdt.dsf.gdb.AUTO_SOLIB_LIST"/>
|
<listAttribute key="org.eclipse.cdt.dsf.gdb.AUTO_SOLIB_LIST"/>
|
||||||
<stringAttribute key="org.eclipse.cdt.dsf.gdb.DEBUG_NAME" value="gdb"/>
|
<stringAttribute key="org.eclipse.cdt.dsf.gdb.DEBUG_NAME" value="gdb"/>
|
||||||
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.DEBUG_ON_FORK" value="false"/>
|
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.DEBUG_ON_FORK" value="false"/>
|
||||||
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.EXTERNAL_CONSOLE" value="false"/>
|
|
||||||
<stringAttribute key="org.eclipse.cdt.dsf.gdb.GDB_INIT" value=".gdbinit"/>
|
<stringAttribute key="org.eclipse.cdt.dsf.gdb.GDB_INIT" value=".gdbinit"/>
|
||||||
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.NON_STOP" value="false"/>
|
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.NON_STOP" value="false"/>
|
||||||
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.REVERSE" value="false"/>
|
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.REVERSE" value="false"/>
|
||||||
@ -18,16 +17,15 @@
|
|||||||
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_START_MODE" value="run"/>
|
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_START_MODE" value="run"/>
|
||||||
<booleanAttribute key="org.eclipse.cdt.launch.DEBUGGER_STOP_AT_MAIN" value="true"/>
|
<booleanAttribute key="org.eclipse.cdt.launch.DEBUGGER_STOP_AT_MAIN" value="true"/>
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_STOP_AT_MAIN_SYMBOL" value="main"/>
|
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_STOP_AT_MAIN_SYMBOL" value="main"/>
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="fsfw/build-Unittest/fsfw-tests"/>
|
<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="cmake-build-debug/eive-unittest"/>
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="eive-obsw"/>
|
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="eive-obsw"/>
|
||||||
<booleanAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_AUTO_ATTR" value="false"/>
|
<booleanAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_AUTO_ATTR" value="false"/>
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_ID_ATTR" value=""/>
|
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_ID_ATTR" value="cdt.managedbuild.toolchain.gnu.mingw.base.1455833186.1840876443.2117915473.758550634"/>
|
||||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
|
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
|
||||||
<listEntry value="/eive-obsw"/>
|
<listEntry value="/eive-obsw"/>
|
||||||
</listAttribute>
|
</listAttribute>
|
||||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
|
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
|
||||||
<listEntry value="4"/>
|
<listEntry value="4"/>
|
||||||
</listAttribute>
|
</listAttribute>
|
||||||
<stringAttribute key="org.eclipse.dsf.launch.MEMORY_BLOCKS" value="<?xml version="1.0" encoding="UTF-8" standalone="no"?><memoryBlockExpressionList context="reserved-for-future-use"/>"/>
|
|
||||||
<stringAttribute key="process_factory_id" value="org.eclipse.cdt.dsf.gdb.GdbProcessFactory"/>
|
<stringAttribute key="process_factory_id" value="org.eclipse.cdt.dsf.gdb.GdbProcessFactory"/>
|
||||||
</launchConfiguration>
|
</launchConfiguration>
|
@ -408,7 +408,7 @@ ReturnValue_t GyroADIS1650XHandler::spiSendCallback(SpiComIF *comIf, SpiCookie *
|
|||||||
int retval = 0;
|
int retval = 0;
|
||||||
// Prepare transfer
|
// Prepare transfer
|
||||||
int fileDescriptor = 0;
|
int fileDescriptor = 0;
|
||||||
std::string device = cookie->getSpiDevice();
|
std::string device = comIf->getSpiDev();
|
||||||
UnixFileGuard fileHelper(device, &fileDescriptor, O_RDWR, "SpiComIF::sendMessage");
|
UnixFileGuard fileHelper(device, &fileDescriptor, O_RDWR, "SpiComIF::sendMessage");
|
||||||
if (fileHelper.getOpenResult() != HasReturnvaluesIF::RETURN_OK) {
|
if (fileHelper.getOpenResult() != HasReturnvaluesIF::RETURN_OK) {
|
||||||
return SpiComIF::OPENING_FILE_FAILED;
|
return SpiComIF::OPENING_FILE_FAILED;
|
||||||
|
@ -99,6 +99,8 @@ class IMTQHandler : public DeviceHandlerBase {
|
|||||||
IMTQ::PosZSelfTestSet posZselfTestDataset;
|
IMTQ::PosZSelfTestSet posZselfTestDataset;
|
||||||
IMTQ::NegZSelfTestSet negZselfTestDataset;
|
IMTQ::NegZSelfTestSet negZselfTestDataset;
|
||||||
|
|
||||||
|
power::Switch_t switcher = power::NO_SWITCH;
|
||||||
|
|
||||||
uint8_t commandBuffer[IMTQ::MAX_COMMAND_SIZE];
|
uint8_t commandBuffer[IMTQ::MAX_COMMAND_SIZE];
|
||||||
bool goToNormalMode = false;
|
bool goToNormalMode = false;
|
||||||
bool debugMode = false;
|
bool debugMode = false;
|
||||||
@ -116,7 +118,6 @@ class IMTQHandler : public DeviceHandlerBase {
|
|||||||
|
|
||||||
StartupStep startupStep = StartupStep::COMMAND_SELF_TEST;
|
StartupStep startupStep = StartupStep::COMMAND_SELF_TEST;
|
||||||
|
|
||||||
power::Switch_t switcher = power::NO_SWITCH;
|
|
||||||
bool selfTestPerformed = false;
|
bool selfTestPerformed = false;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -697,8 +697,7 @@ ReturnValue_t PayloadPcduHandler::transferAsTwo(SpiComIF* comIf, SpiCookie* cook
|
|||||||
int retval = 0;
|
int retval = 0;
|
||||||
// Prepare transfer
|
// Prepare transfer
|
||||||
int fileDescriptor = 0;
|
int fileDescriptor = 0;
|
||||||
std::string device = cookie->getSpiDevice();
|
UnixFileGuard fileHelper(comIf->getSpiDev(), &fileDescriptor, O_RDWR, "SpiComIF::sendMessage");
|
||||||
UnixFileGuard fileHelper(device, &fileDescriptor, O_RDWR, "SpiComIF::sendMessage");
|
|
||||||
if (fileHelper.getOpenResult() != HasReturnvaluesIF::RETURN_OK) {
|
if (fileHelper.getOpenResult() != HasReturnvaluesIF::RETURN_OK) {
|
||||||
return SpiComIF::OPENING_FILE_FAILED;
|
return SpiComIF::OPENING_FILE_FAILED;
|
||||||
}
|
}
|
||||||
|
@ -2,22 +2,22 @@
|
|||||||
|
|
||||||
#include <fsfw/datapool/PoolReadGuard.h>
|
#include <fsfw/datapool/PoolReadGuard.h>
|
||||||
#include <fsfw/globalfunctions/CRC.h>
|
#include <fsfw/globalfunctions/CRC.h>
|
||||||
|
#include <fsfw_hal/common/gpio/GpioIF.h>
|
||||||
|
|
||||||
#include "OBSWConfig.h"
|
#include "OBSWConfig.h"
|
||||||
|
|
||||||
RwHandler::RwHandler(object_id_t objectId, object_id_t comIF, CookieIF* comCookie,
|
RwHandler::RwHandler(object_id_t objectId, object_id_t comIF, CookieIF* comCookie,
|
||||||
LinuxLibgpioIF* gpioComIF, gpioId_t enableGpio)
|
GpioIF* gpioComIF, gpioId_t enableGpio)
|
||||||
: DeviceHandlerBase(objectId, comIF, comCookie),
|
: DeviceHandlerBase(objectId, comIF, comCookie),
|
||||||
gpioComIF(gpioComIF),
|
gpioComIF(gpioComIF),
|
||||||
enableGpio(enableGpio),
|
enableGpio(enableGpio),
|
||||||
temperatureSet(this),
|
|
||||||
statusSet(this),
|
statusSet(this),
|
||||||
lastResetStatusSet(this),
|
lastResetStatusSet(this),
|
||||||
tmDataset(this) {
|
tmDataset(this) {
|
||||||
if (comCookie == NULL) {
|
if (comCookie == nullptr) {
|
||||||
sif::error << "RwHandler: Invalid com cookie" << std::endl;
|
sif::error << "RwHandler: Invalid com cookie" << std::endl;
|
||||||
}
|
}
|
||||||
if (gpioComIF == NULL) {
|
if (gpioComIF == nullptr) {
|
||||||
sif::error << "RwHandler: Invalid gpio communication interface" << std::endl;
|
sif::error << "RwHandler: Invalid gpio communication interface" << std::endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -46,11 +46,6 @@ ReturnValue_t RwHandler::buildNormalDeviceCommand(DeviceCommandId_t* id) {
|
|||||||
*id = RwDefinitions::GET_LAST_RESET_STATUS;
|
*id = RwDefinitions::GET_LAST_RESET_STATUS;
|
||||||
internalState = InternalState::READ_TEMPERATURE;
|
internalState = InternalState::READ_TEMPERATURE;
|
||||||
break;
|
break;
|
||||||
case InternalState::CLEAR_RESET_STATUS:
|
|
||||||
*id = RwDefinitions::CLEAR_LAST_RESET_STATUS;
|
|
||||||
/** After reset status is cleared, reset status will be polled again for verification */
|
|
||||||
internalState = InternalState::GET_RESET_STATUS;
|
|
||||||
break;
|
|
||||||
case InternalState::READ_TEMPERATURE:
|
case InternalState::READ_TEMPERATURE:
|
||||||
*id = RwDefinitions::GET_TEMPERATURE;
|
*id = RwDefinitions::GET_TEMPERATURE;
|
||||||
internalState = InternalState::GET_RW_SATUS;
|
internalState = InternalState::GET_RW_SATUS;
|
||||||
@ -59,6 +54,11 @@ ReturnValue_t RwHandler::buildNormalDeviceCommand(DeviceCommandId_t* id) {
|
|||||||
*id = RwDefinitions::GET_RW_STATUS;
|
*id = RwDefinitions::GET_RW_STATUS;
|
||||||
internalState = InternalState::GET_RESET_STATUS;
|
internalState = InternalState::GET_RESET_STATUS;
|
||||||
break;
|
break;
|
||||||
|
case InternalState::CLEAR_RESET_STATUS:
|
||||||
|
*id = RwDefinitions::CLEAR_LAST_RESET_STATUS;
|
||||||
|
/** After reset status is cleared, reset status will be polled again for verification */
|
||||||
|
internalState = InternalState::GET_RESET_STATUS;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
sif::debug << "RwHandler::buildNormalDeviceCommand: Invalid internal step" << std::endl;
|
sif::debug << "RwHandler::buildNormalDeviceCommand: Invalid internal step" << std::endl;
|
||||||
break;
|
break;
|
||||||
@ -133,7 +133,7 @@ void RwHandler::fillCommandAndReplyMap() {
|
|||||||
RwDefinitions::SIZE_GET_RW_STATUS);
|
RwDefinitions::SIZE_GET_RW_STATUS);
|
||||||
this->insertInCommandAndReplyMap(RwDefinitions::INIT_RW_CONTROLLER, 1, nullptr,
|
this->insertInCommandAndReplyMap(RwDefinitions::INIT_RW_CONTROLLER, 1, nullptr,
|
||||||
RwDefinitions::SIZE_INIT_RW);
|
RwDefinitions::SIZE_INIT_RW);
|
||||||
this->insertInCommandAndReplyMap(RwDefinitions::GET_TEMPERATURE, 1, &temperatureSet,
|
this->insertInCommandAndReplyMap(RwDefinitions::GET_TEMPERATURE, 1, nullptr,
|
||||||
RwDefinitions::SIZE_GET_TEMPERATURE_REPLY);
|
RwDefinitions::SIZE_GET_TEMPERATURE_REPLY);
|
||||||
this->insertInCommandAndReplyMap(RwDefinitions::SET_SPEED, 1, nullptr,
|
this->insertInCommandAndReplyMap(RwDefinitions::SET_SPEED, 1, nullptr,
|
||||||
RwDefinitions::SIZE_SET_SPEED_REPLY);
|
RwDefinitions::SIZE_SET_SPEED_REPLY);
|
||||||
@ -239,8 +239,6 @@ ReturnValue_t RwHandler::interpretDeviceReply(DeviceCommandId_t id, const uint8_
|
|||||||
return RETURN_OK;
|
return RETURN_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RwHandler::setNormalDatapoolEntriesInvalid() {}
|
|
||||||
|
|
||||||
uint32_t RwHandler::getTransitionDelayMs(Mode_t modeFrom, Mode_t modeTo) { return 5000; }
|
uint32_t RwHandler::getTransitionDelayMs(Mode_t modeFrom, Mode_t modeTo) { return 5000; }
|
||||||
|
|
||||||
ReturnValue_t RwHandler::initializeLocalDataPool(localpool::DataPool& localDataPoolMap,
|
ReturnValue_t RwHandler::initializeLocalDataPool(localpool::DataPool& localDataPoolMap,
|
||||||
@ -279,7 +277,6 @@ ReturnValue_t RwHandler::initializeLocalDataPool(localpool::DataPool& localDataP
|
|||||||
localDataPoolMap.emplace(RwDefinitions::SPI_BYTES_READ, new PoolEntry<uint32_t>({0}));
|
localDataPoolMap.emplace(RwDefinitions::SPI_BYTES_READ, new PoolEntry<uint32_t>({0}));
|
||||||
localDataPoolMap.emplace(RwDefinitions::SPI_REG_OVERRUN_ERRORS, new PoolEntry<uint32_t>({0}));
|
localDataPoolMap.emplace(RwDefinitions::SPI_REG_OVERRUN_ERRORS, new PoolEntry<uint32_t>({0}));
|
||||||
localDataPoolMap.emplace(RwDefinitions::SPI_TOTAL_ERRORS, new PoolEntry<uint32_t>({0}));
|
localDataPoolMap.emplace(RwDefinitions::SPI_TOTAL_ERRORS, new PoolEntry<uint32_t>({0}));
|
||||||
poolManager.subscribeForPeriodicPacket(temperatureSet.getSid(), false, 30.0, false);
|
|
||||||
poolManager.subscribeForPeriodicPacket(statusSet.getSid(), false, 5.0, true);
|
poolManager.subscribeForPeriodicPacket(statusSet.getSid(), false, 5.0, true);
|
||||||
poolManager.subscribeForPeriodicPacket(tmDataset.getSid(), false, 30.0, false);
|
poolManager.subscribeForPeriodicPacket(tmDataset.getSid(), false, 30.0, false);
|
||||||
return RETURN_OK;
|
return RETURN_OK;
|
||||||
@ -335,16 +332,18 @@ void RwHandler::prepareSetSpeedCmd(const uint8_t* commandData, size_t commandDat
|
|||||||
void RwHandler::handleResetStatusReply(const uint8_t* packet) {
|
void RwHandler::handleResetStatusReply(const uint8_t* packet) {
|
||||||
PoolReadGuard rg(&lastResetStatusSet);
|
PoolReadGuard rg(&lastResetStatusSet);
|
||||||
uint8_t offset = 2;
|
uint8_t offset = 2;
|
||||||
uint8_t resetStatus = *(packet + offset);
|
uint8_t resetStatus = packet[offset];
|
||||||
if (resetStatus != RwDefinitions::CLEARED) {
|
if (resetStatus != 0) {
|
||||||
internalState = InternalState::CLEAR_RESET_STATUS;
|
internalState = InternalState::CLEAR_RESET_STATUS;
|
||||||
lastResetStatusSet.lastResetStatus = resetStatus;
|
lastResetStatusSet.lastNonClearedResetStatus = resetStatus;
|
||||||
|
triggerEvent(RwDefinitions::RESET_OCCURED, resetStatus, 0);
|
||||||
}
|
}
|
||||||
lastResetStatusSet.currentResetStatus = resetStatus;
|
lastResetStatusSet.currentResetStatus = resetStatus;
|
||||||
if (debugMode) {
|
if (debugMode) {
|
||||||
#if OBSW_VERBOSE_LEVEL >= 1
|
#if OBSW_VERBOSE_LEVEL >= 1
|
||||||
sif::info << "RwHandler::handleResetStatusReply: Last reset status: "
|
sif::info << "RwHandler::handleResetStatusReply: Last reset status: "
|
||||||
<< static_cast<unsigned int>(lastResetStatusSet.lastResetStatus.value) << std::endl;
|
<< static_cast<unsigned int>(lastResetStatusSet.lastNonClearedResetStatus.value)
|
||||||
|
<< std::endl;
|
||||||
sif::info << "RwHandler::handleResetStatusReply: Current reset status: "
|
sif::info << "RwHandler::handleResetStatusReply: Current reset status: "
|
||||||
<< static_cast<unsigned int>(lastResetStatusSet.currentResetStatus.value)
|
<< static_cast<unsigned int>(lastResetStatusSet.currentResetStatus.value)
|
||||||
<< std::endl;
|
<< std::endl;
|
||||||
@ -353,24 +352,33 @@ void RwHandler::handleResetStatusReply(const uint8_t* packet) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void RwHandler::handleGetRwStatusReply(const uint8_t* packet) {
|
void RwHandler::handleGetRwStatusReply(const uint8_t* packet) {
|
||||||
PoolReadGuard rg(&statusSet);
|
PoolReadGuard rg0(&statusSet);
|
||||||
|
PoolReadGuard rg1(&tmDataset);
|
||||||
uint8_t offset = 2;
|
uint8_t offset = 2;
|
||||||
statusSet.currSpeed = *(packet + offset + 3) << 24 | *(packet + offset + 2) << 16 |
|
statusSet.currSpeed = *(packet + offset + 3) << 24 | *(packet + offset + 2) << 16 |
|
||||||
*(packet + offset + 1) << 8 | *(packet + offset);
|
*(packet + offset + 1) << 8 | *(packet + offset);
|
||||||
|
tmDataset.rwCurrSpeed = statusSet.currSpeed;
|
||||||
|
tmDataset.rwCurrSpeed.setValid(true);
|
||||||
offset += 4;
|
offset += 4;
|
||||||
statusSet.referenceSpeed = *(packet + offset + 3) << 24 | *(packet + offset + 2) << 16 |
|
statusSet.referenceSpeed = *(packet + offset + 3) << 24 | *(packet + offset + 2) << 16 |
|
||||||
*(packet + offset + 1) << 8 | *(packet + offset);
|
*(packet + offset + 1) << 8 | *(packet + offset);
|
||||||
|
tmDataset.rwRefSpeed = statusSet.referenceSpeed;
|
||||||
|
tmDataset.rwRefSpeed.setValid(true);
|
||||||
offset += 4;
|
offset += 4;
|
||||||
statusSet.state = *(packet + offset);
|
statusSet.state = *(packet + offset);
|
||||||
|
tmDataset.rwState = statusSet.state;
|
||||||
|
tmDataset.rwState.setValid(true);
|
||||||
offset += 1;
|
offset += 1;
|
||||||
statusSet.clcMode = *(packet + offset);
|
statusSet.clcMode = *(packet + offset);
|
||||||
|
tmDataset.rwClcMode = statusSet.clcMode;
|
||||||
|
tmDataset.rwClcMode.setValid(true);
|
||||||
|
|
||||||
|
statusSet.setValidity(true, true);
|
||||||
|
|
||||||
if (statusSet.state == RwDefinitions::STATE_ERROR) {
|
if (statusSet.state == RwDefinitions::STATE_ERROR) {
|
||||||
/**
|
// This requires the commanding of the init reaction wheel controller command to recover
|
||||||
* This requires the commanding of the init reaction wheel controller command to recover
|
// from error state which must be handled by the FDIR instance.
|
||||||
* form error state which must be handled by the FDIR instance.
|
triggerEvent(RwDefinitions::ERROR_STATE, statusSet.state.value, 0);
|
||||||
*/
|
|
||||||
triggerEvent(ERROR_STATE);
|
|
||||||
sif::error << "RwHandler::handleGetRwStatusReply: Reaction wheel in error state" << std::endl;
|
sif::error << "RwHandler::handleGetRwStatusReply: Reaction wheel in error state" << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -389,14 +397,14 @@ void RwHandler::handleGetRwStatusReply(const uint8_t* packet) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void RwHandler::handleTemperatureReply(const uint8_t* packet) {
|
void RwHandler::handleTemperatureReply(const uint8_t* packet) {
|
||||||
PoolReadGuard rg(&temperatureSet);
|
PoolReadGuard rg(&statusSet);
|
||||||
uint8_t offset = 2;
|
uint8_t offset = 2;
|
||||||
temperatureSet.temperatureCelcius = *(packet + offset + 3) << 24 | *(packet + offset + 2) << 16 |
|
statusSet.temperatureCelcius = *(packet + offset + 3) << 24 | *(packet + offset + 2) << 16 |
|
||||||
*(packet + offset + 1) << 8 | *(packet + offset);
|
*(packet + offset + 1) << 8 | *(packet + offset);
|
||||||
if (debugMode) {
|
if (debugMode) {
|
||||||
#if OBSW_VERBOSE_LEVEL >= 1
|
#if OBSW_VERBOSE_LEVEL >= 1
|
||||||
sif::info << "RwHandler::handleTemperatureReply: Temperature: "
|
sif::info << "RwHandler::handleTemperatureReply: Temperature: " << statusSet.temperatureCelcius
|
||||||
<< temperatureSet.temperatureCelcius << " °C" << std::endl;
|
<< " °C" << std::endl;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,10 +2,12 @@
|
|||||||
#define MISSION_DEVICES_RWHANDLER_H_
|
#define MISSION_DEVICES_RWHANDLER_H_
|
||||||
|
|
||||||
#include <fsfw/devicehandlers/DeviceHandlerBase.h>
|
#include <fsfw/devicehandlers/DeviceHandlerBase.h>
|
||||||
#include <fsfw_hal/linux/gpio/LinuxLibgpioIF.h>
|
#include <fsfw_hal/common/gpio/gpioDefinitions.h>
|
||||||
#include <mission/devices/devicedefinitions/RwDefinitions.h>
|
#include <mission/devices/devicedefinitions/RwDefinitions.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
class GpioIF;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief This is the device handler for the reaction wheel from nano avionics.
|
* @brief This is the device handler for the reaction wheel from nano avionics.
|
||||||
*
|
*
|
||||||
@ -28,7 +30,7 @@ class RwHandler : public DeviceHandlerBase {
|
|||||||
* @param enablePin GPIO connected to the enable pin of the reaction wheels. Must be pulled
|
* @param enablePin GPIO connected to the enable pin of the reaction wheels. Must be pulled
|
||||||
* to high to enable the device.
|
* to high to enable the device.
|
||||||
*/
|
*/
|
||||||
RwHandler(object_id_t objectId, object_id_t comIF, CookieIF* comCookie, LinuxLibgpioIF* gpioComIF,
|
RwHandler(object_id_t objectId, object_id_t comIF, CookieIF* comCookie, GpioIF* gpioComIF,
|
||||||
gpioId_t enableGpio);
|
gpioId_t enableGpio);
|
||||||
|
|
||||||
void setDebugMode(bool enable);
|
void setDebugMode(bool enable);
|
||||||
@ -64,14 +66,11 @@ class RwHandler : public DeviceHandlerBase {
|
|||||||
ReturnValue_t scanForReply(const uint8_t* start, size_t remainingSize, DeviceCommandId_t* foundId,
|
ReturnValue_t scanForReply(const uint8_t* start, size_t remainingSize, DeviceCommandId_t* foundId,
|
||||||
size_t* foundLen) override;
|
size_t* foundLen) override;
|
||||||
ReturnValue_t interpretDeviceReply(DeviceCommandId_t id, const uint8_t* packet) override;
|
ReturnValue_t interpretDeviceReply(DeviceCommandId_t id, const uint8_t* packet) override;
|
||||||
void setNormalDatapoolEntriesInvalid() override;
|
|
||||||
uint32_t getTransitionDelayMs(Mode_t modeFrom, Mode_t modeTo) override;
|
uint32_t getTransitionDelayMs(Mode_t modeFrom, Mode_t modeTo) override;
|
||||||
ReturnValue_t initializeLocalDataPool(localpool::DataPool& localDataPoolMap,
|
ReturnValue_t initializeLocalDataPool(localpool::DataPool& localDataPoolMap,
|
||||||
LocalDataPoolManager& poolManager) override;
|
LocalDataPoolManager& poolManager) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static const uint8_t SUBSYSTEM_ID = SUBSYSTEM_ID::RW_HANDLER;
|
|
||||||
|
|
||||||
//! [EXPORT] : [COMMENT] Action Message with invalid speed was received. Valid speeds must be in
|
//! [EXPORT] : [COMMENT] Action Message with invalid speed was received. Valid speeds must be in
|
||||||
//! the range of [-65000; 1000] or [1000; 65000]
|
//! the range of [-65000; 1000] or [1000; 65000]
|
||||||
static const ReturnValue_t INVALID_SPEED = MAKE_RETURN_CODE(0xA0);
|
static const ReturnValue_t INVALID_SPEED = MAKE_RETURN_CODE(0xA0);
|
||||||
@ -84,14 +83,10 @@ class RwHandler : public DeviceHandlerBase {
|
|||||||
//! [EXPORT] : [COMMENT] Reaction wheel reply has invalid crc
|
//! [EXPORT] : [COMMENT] Reaction wheel reply has invalid crc
|
||||||
static const ReturnValue_t CRC_ERROR = MAKE_RETURN_CODE(0xA4);
|
static const ReturnValue_t CRC_ERROR = MAKE_RETURN_CODE(0xA4);
|
||||||
|
|
||||||
//! [EXPORT] : [COMMENT] Reaction wheel signals an error state
|
GpioIF* gpioComIF = nullptr;
|
||||||
static const Event ERROR_STATE = MAKE_EVENT(1, severity::HIGH);
|
|
||||||
|
|
||||||
LinuxLibgpioIF* gpioComIF = nullptr;
|
|
||||||
gpioId_t enableGpio = gpio::NO_GPIO;
|
gpioId_t enableGpio = gpio::NO_GPIO;
|
||||||
bool debugMode = false;
|
bool debugMode = false;
|
||||||
|
|
||||||
RwDefinitions::TemperatureSet temperatureSet;
|
|
||||||
RwDefinitions::StatusSet statusSet;
|
RwDefinitions::StatusSet statusSet;
|
||||||
RwDefinitions::LastResetSatus lastResetStatusSet;
|
RwDefinitions::LastResetSatus lastResetStatusSet;
|
||||||
RwDefinitions::TmDataset tmDataset;
|
RwDefinitions::TmDataset tmDataset;
|
||||||
|
@ -9,6 +9,13 @@
|
|||||||
|
|
||||||
namespace RwDefinitions {
|
namespace RwDefinitions {
|
||||||
|
|
||||||
|
static constexpr uint8_t SUBSYSTEM_ID = SUBSYSTEM_ID::RW_HANDLER;
|
||||||
|
|
||||||
|
//! [EXPORT] : [COMMENT] Reaction wheel signals an error state
|
||||||
|
static constexpr Event ERROR_STATE = MAKE_EVENT(1, severity::HIGH);
|
||||||
|
|
||||||
|
static constexpr Event RESET_OCCURED = event::makeEvent(SUBSYSTEM_ID, 2, severity::LOW);
|
||||||
|
|
||||||
static const uint32_t SPI_REPLY_DELAY = 70000; // us
|
static const uint32_t SPI_REPLY_DELAY = 70000; // us
|
||||||
|
|
||||||
enum PoolIds : lp_id_t {
|
enum PoolIds : lp_id_t {
|
||||||
@ -48,14 +55,13 @@ enum PoolIds : lp_id_t {
|
|||||||
|
|
||||||
enum States : uint8_t { STATE_ERROR, IDLE, COASTING, RUNNING_SPEED_STABLE, RUNNING_SPEED_CHANGING };
|
enum States : uint8_t { STATE_ERROR, IDLE, COASTING, RUNNING_SPEED_STABLE, RUNNING_SPEED_CHANGING };
|
||||||
|
|
||||||
enum LastResetStatus : uint8_t {
|
enum LastResetStatusBitPos : uint8_t {
|
||||||
CLEARED = 0,
|
PIN_RESET = 0,
|
||||||
PIN_RESET = 1,
|
POR_PDR_BOR_RESET = 1,
|
||||||
POR_PDR_BOR_RESET = 2,
|
SOFTWARE_RESET = 2,
|
||||||
SOFTWARE_RESET = 4,
|
INDEPENDENT_WATCHDOG_RESET = 3,
|
||||||
INDEPENDENT_WATCHDOG_RESET = 8,
|
WINDOW_WATCHDOG_RESET = 4,
|
||||||
WINDOW_WATCHDOG_RESET = 16,
|
LOW_POWER_RESET = 5
|
||||||
LOW_POWER_RESET = 32
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static const DeviceCommandId_t RESET_MCU = 1;
|
static const DeviceCommandId_t RESET_MCU = 1;
|
||||||
@ -91,25 +97,11 @@ static const size_t MAX_CMD_SIZE = 9;
|
|||||||
static const size_t MAX_REPLY_SIZE = 2 * SIZE_GET_TELEMETRY_REPLY;
|
static const size_t MAX_REPLY_SIZE = 2 * SIZE_GET_TELEMETRY_REPLY;
|
||||||
|
|
||||||
static const uint8_t LAST_RESET_ENTRIES = 2;
|
static const uint8_t LAST_RESET_ENTRIES = 2;
|
||||||
static const uint8_t TEMPERATURE_SET_ENTRIES = 1;
|
static const uint8_t STATUS_SET_ENTRIES = 5;
|
||||||
static const uint8_t STATUS_SET_ENTRIES = 4;
|
|
||||||
static const uint8_t TM_SET_ENTRIES = 24;
|
static const uint8_t TM_SET_ENTRIES = 24;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief This dataset can be used to store the temperature of a reaction wheel.
|
* @brief This dataset can be used to store the data periodically polled from the RW
|
||||||
*/
|
|
||||||
class TemperatureSet : public StaticLocalDataSet<TEMPERATURE_SET_ENTRIES> {
|
|
||||||
public:
|
|
||||||
TemperatureSet(HasLocalDataPoolIF* owner) : StaticLocalDataSet(owner, TEMPERATURE_SET_ID) {}
|
|
||||||
|
|
||||||
TemperatureSet(object_id_t objectId) : StaticLocalDataSet(sid_t(objectId, TEMPERATURE_SET_ID)) {}
|
|
||||||
|
|
||||||
lp_var_t<int32_t> temperatureCelcius =
|
|
||||||
lp_var_t<int32_t>(sid.objectId, PoolIds::TEMPERATURE_C, this);
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief This dataset can be used to store the reaction wheel status.
|
|
||||||
*/
|
*/
|
||||||
class StatusSet : public StaticLocalDataSet<STATUS_SET_ENTRIES> {
|
class StatusSet : public StaticLocalDataSet<STATUS_SET_ENTRIES> {
|
||||||
public:
|
public:
|
||||||
@ -117,6 +109,8 @@ class StatusSet : public StaticLocalDataSet<STATUS_SET_ENTRIES> {
|
|||||||
|
|
||||||
StatusSet(object_id_t objectId) : StaticLocalDataSet(sid_t(objectId, STATUS_SET_ID)) {}
|
StatusSet(object_id_t objectId) : StaticLocalDataSet(sid_t(objectId, STATUS_SET_ID)) {}
|
||||||
|
|
||||||
|
lp_var_t<int32_t> temperatureCelcius =
|
||||||
|
lp_var_t<int32_t>(sid.objectId, PoolIds::TEMPERATURE_C, this);
|
||||||
lp_var_t<int32_t> currSpeed = lp_var_t<int32_t>(sid.objectId, PoolIds::CURR_SPEED, this);
|
lp_var_t<int32_t> currSpeed = lp_var_t<int32_t>(sid.objectId, PoolIds::CURR_SPEED, this);
|
||||||
lp_var_t<int32_t> referenceSpeed =
|
lp_var_t<int32_t> referenceSpeed =
|
||||||
lp_var_t<int32_t>(sid.objectId, PoolIds::REFERENCE_SPEED, this);
|
lp_var_t<int32_t>(sid.objectId, PoolIds::REFERENCE_SPEED, this);
|
||||||
@ -133,8 +127,10 @@ class LastResetSatus : public StaticLocalDataSet<LAST_RESET_ENTRIES> {
|
|||||||
|
|
||||||
LastResetSatus(object_id_t objectId) : StaticLocalDataSet(sid_t(objectId, LAST_RESET_ID)) {}
|
LastResetSatus(object_id_t objectId) : StaticLocalDataSet(sid_t(objectId, LAST_RESET_ID)) {}
|
||||||
|
|
||||||
lp_var_t<uint8_t> lastResetStatus =
|
// If a reset occurs, the status code will be cached into this variable
|
||||||
|
lp_var_t<uint8_t> lastNonClearedResetStatus =
|
||||||
lp_var_t<uint8_t>(sid.objectId, PoolIds::LAST_RESET_STATUS, this);
|
lp_var_t<uint8_t>(sid.objectId, PoolIds::LAST_RESET_STATUS, this);
|
||||||
|
// This will always contain the last polled reset status
|
||||||
lp_var_t<uint8_t> currentResetStatus =
|
lp_var_t<uint8_t> currentResetStatus =
|
||||||
lp_var_t<uint8_t>(sid.objectId, PoolIds::CURRRENT_RESET_STATUS, this);
|
lp_var_t<uint8_t>(sid.objectId, PoolIds::CURRRENT_RESET_STATUS, this);
|
||||||
};
|
};
|
||||||
|
@ -10,7 +10,7 @@ static constexpr uint8_t SUBSYSTEM_ID = SUBSYSTEM_ID::PCDU_HANDLER;
|
|||||||
//! [EXPORT] : [COMMENT] Indicates that a FSFW object requested setting a switch
|
//! [EXPORT] : [COMMENT] Indicates that a FSFW object requested setting a switch
|
||||||
//! P1: 1 if on was requested, 0 for off | P2: Switch Index
|
//! P1: 1 if on was requested, 0 for off | P2: Switch Index
|
||||||
static constexpr Event SWITCH_CMD_SENT = event::makeEvent(SUBSYSTEM_ID, 0, severity::INFO);
|
static constexpr Event SWITCH_CMD_SENT = event::makeEvent(SUBSYSTEM_ID, 0, severity::INFO);
|
||||||
//! [EXPORT] : [COMMENT] Indicated that a swithc state has changed
|
//! [EXPORT] : [COMMENT] Indicated that a switch state has changed
|
||||||
//! P1: New switch state, 1 for on, 0 for off | P2: Switch Index
|
//! P1: New switch state, 1 for on, 0 for off | P2: Switch Index
|
||||||
static constexpr Event SWITCH_HAS_CHANGED = event::makeEvent(SUBSYSTEM_ID, 1, severity::INFO);
|
static constexpr Event SWITCH_HAS_CHANGED = event::makeEvent(SUBSYSTEM_ID, 1, severity::INFO);
|
||||||
static constexpr Event SWITCHING_Q7S_DENIED = event::makeEvent(SUBSYSTEM_ID, 2, severity::MEDIUM);
|
static constexpr Event SWITCHING_Q7S_DENIED = event::makeEvent(SUBSYSTEM_ID, 2, severity::MEDIUM);
|
||||||
|
@ -6,6 +6,7 @@ target_sources(${LIB_EIVE_MISSION} PRIVATE
|
|||||||
|
|
||||||
AcsBoardAssembly.cpp
|
AcsBoardAssembly.cpp
|
||||||
SusAssembly.cpp
|
SusAssembly.cpp
|
||||||
|
RwAssembly.cpp
|
||||||
DualLanePowerStateMachine.cpp
|
DualLanePowerStateMachine.cpp
|
||||||
PowerStateMachineBase.cpp
|
PowerStateMachineBase.cpp
|
||||||
DualLaneAssemblyBase.cpp
|
DualLaneAssemblyBase.cpp
|
||||||
|
191
mission/system/objects/RwAssembly.cpp
Normal file
191
mission/system/objects/RwAssembly.cpp
Normal file
@ -0,0 +1,191 @@
|
|||||||
|
#include "RwAssembly.h"
|
||||||
|
|
||||||
|
RwAssembly::RwAssembly(object_id_t objectId, object_id_t parentId, PowerSwitchIF* pwrSwitcher,
|
||||||
|
power::Switch_t switcher, RwHelper helper)
|
||||||
|
: AssemblyBase(objectId, parentId), helper(helper), switcher(pwrSwitcher, switcher) {
|
||||||
|
ModeListEntry entry;
|
||||||
|
for (uint8_t idx = 0; idx < NUMBER_RWS; idx++) {
|
||||||
|
entry.setObject(helper.rwIds[idx]);
|
||||||
|
entry.setMode(MODE_OFF);
|
||||||
|
entry.setSubmode(SUBMODE_NONE);
|
||||||
|
entry.setInheritSubmode(false);
|
||||||
|
modeTable.insert(entry);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void RwAssembly::performChildOperation() {
|
||||||
|
auto state = switcher.getState();
|
||||||
|
if (state != PowerSwitcher::WAIT_OFF and state != PowerSwitcher::WAIT_ON) {
|
||||||
|
AssemblyBase::performChildOperation();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
switcher.doStateMachine();
|
||||||
|
if (state == PowerSwitcher::WAIT_OFF and switcher.getState() == PowerSwitcher::SWITCH_IS_OFF) {
|
||||||
|
// Indicator that a transition to off is finished
|
||||||
|
AssemblyBase::handleModeReached();
|
||||||
|
} else if (state == PowerSwitcher::WAIT_ON and
|
||||||
|
switcher.getState() == PowerSwitcher::SWITCH_IS_ON) {
|
||||||
|
// Indicator that mode commanding can be performed now
|
||||||
|
AssemblyBase::startTransition(targetMode, targetSubmode);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ReturnValue_t RwAssembly::commandChildren(Mode_t mode, Submode_t submode) {
|
||||||
|
ReturnValue_t result = RETURN_OK;
|
||||||
|
modeTransitionFailedSwitch = true;
|
||||||
|
// Initialize the mode table to ensure all devices are in a defined state
|
||||||
|
for (uint8_t idx = 0; idx < NUMBER_RWS; idx++) {
|
||||||
|
modeTable[idx].setMode(MODE_OFF);
|
||||||
|
modeTable[idx].setSubmode(SUBMODE_NONE);
|
||||||
|
}
|
||||||
|
if (recoveryState != RecoveryState::RECOVERY_STARTED) {
|
||||||
|
if (mode == DeviceHandlerIF::MODE_NORMAL or mode == MODE_ON) {
|
||||||
|
result = handleNormalOrOnModeCmd(mode, submode);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
HybridIterator<ModeListEntry> tableIter(modeTable.begin(), modeTable.end());
|
||||||
|
executeTable(tableIter);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
ReturnValue_t RwAssembly::checkChildrenStateOn(Mode_t wantedMode, Submode_t wantedSubmode) {
|
||||||
|
int devsInCorrectMode = 0;
|
||||||
|
try {
|
||||||
|
for (uint8_t idx = 0; idx < NUMBER_RWS; idx++) {
|
||||||
|
if (childrenMap.at(helper.rwIds[idx]).mode == wantedMode) {
|
||||||
|
devsInCorrectMode++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (const std::out_of_range& e) {
|
||||||
|
sif::error << "RwAssembly: Invalid children map: " << e.what() << std::endl;
|
||||||
|
}
|
||||||
|
if (devsInCorrectMode < 3) {
|
||||||
|
if (warningSwitch) {
|
||||||
|
sif::warning << "RwAssembly::checkChildrenStateOn: Only " << devsInCorrectMode
|
||||||
|
<< " devices in correct mode" << std::endl;
|
||||||
|
warningSwitch = false;
|
||||||
|
}
|
||||||
|
return NOT_ENOUGH_CHILDREN_IN_CORRECT_STATE;
|
||||||
|
}
|
||||||
|
return RETURN_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
ReturnValue_t RwAssembly::isModeCombinationValid(Mode_t mode, Submode_t submode) {
|
||||||
|
if (mode == MODE_ON or mode == MODE_OFF or mode == DeviceHandlerIF::MODE_NORMAL) {
|
||||||
|
return RETURN_OK;
|
||||||
|
}
|
||||||
|
return HasModesIF::INVALID_MODE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void RwAssembly::startTransition(Mode_t mode, Submode_t submode) {
|
||||||
|
if (mode != MODE_OFF) {
|
||||||
|
switcher.turnOn(true);
|
||||||
|
switcher.doStateMachine();
|
||||||
|
if (switcher.getState() == PowerSwitcher::SWITCH_IS_ON) {
|
||||||
|
AssemblyBase::startTransition(mode, submode);
|
||||||
|
} else {
|
||||||
|
// Need to wait with mode commanding until power switcher is done
|
||||||
|
targetMode = mode;
|
||||||
|
targetSubmode = submode;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Perform regular mode commanding first
|
||||||
|
AssemblyBase::startTransition(mode, submode);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void RwAssembly::handleModeReached() {
|
||||||
|
if (targetMode == MODE_OFF) {
|
||||||
|
switcher.turnOff(true);
|
||||||
|
switcher.doStateMachine();
|
||||||
|
// Need to wait with call to AssemblyBase::handleModeReached until power switcher is done
|
||||||
|
if (switcher.getState() == PowerSwitcher::SWITCH_IS_OFF) {
|
||||||
|
AssemblyBase::handleModeReached();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
AssemblyBase::handleModeReached();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void RwAssembly::handleChildrenLostMode(ReturnValue_t result) {
|
||||||
|
AssemblyBase::handleChildrenLostMode(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
ReturnValue_t RwAssembly::handleNormalOrOnModeCmd(Mode_t mode, Submode_t submode) {
|
||||||
|
ReturnValue_t result = RETURN_OK;
|
||||||
|
bool needsSecondStep = false;
|
||||||
|
Mode_t devMode = 0;
|
||||||
|
object_id_t objId = 0;
|
||||||
|
try {
|
||||||
|
for (uint8_t idx = 0; idx < NUMBER_RWS; idx++) {
|
||||||
|
devMode = childrenMap.at(helper.rwIds[idx]).mode;
|
||||||
|
objId = helper.rwIds[idx];
|
||||||
|
if (mode == devMode) {
|
||||||
|
modeTable[idx].setMode(mode);
|
||||||
|
} else if (mode == DeviceHandlerIF::MODE_NORMAL) {
|
||||||
|
if (isUseable(objId, devMode)) {
|
||||||
|
if (devMode == MODE_ON) {
|
||||||
|
modeTable[idx].setMode(mode);
|
||||||
|
modeTable[idx].setSubmode(SUBMODE_NONE);
|
||||||
|
} else {
|
||||||
|
modeTable[idx].setMode(MODE_ON);
|
||||||
|
modeTable[idx].setSubmode(SUBMODE_NONE);
|
||||||
|
if (internalState != STATE_SECOND_STEP) {
|
||||||
|
needsSecondStep = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (mode == MODE_ON) {
|
||||||
|
if (isUseable(objId, devMode)) {
|
||||||
|
modeTable[idx].setMode(MODE_ON);
|
||||||
|
modeTable[idx].setSubmode(SUBMODE_NONE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (const std::out_of_range& e) {
|
||||||
|
sif::error << "TcsBoardAssembly: Invalid children map: " << e.what() << std::endl;
|
||||||
|
}
|
||||||
|
if (needsSecondStep) {
|
||||||
|
result = NEED_SECOND_STEP;
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool RwAssembly::isUseable(object_id_t object, Mode_t mode) {
|
||||||
|
if (healthHelper.healthTable->isFaulty(object)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if device is already in target mode
|
||||||
|
if (childrenMap[object].mode == mode) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (healthHelper.healthTable->isCommandable(object)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
ReturnValue_t RwAssembly::initialize() {
|
||||||
|
ReturnValue_t result = RETURN_OK;
|
||||||
|
for (const auto& obj : helper.rwIds) {
|
||||||
|
result = registerChild(obj);
|
||||||
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return SubsystemBase::initialize();
|
||||||
|
}
|
||||||
|
|
||||||
|
void RwAssembly::handleModeTransitionFailed(ReturnValue_t result) {
|
||||||
|
if (targetMode == MODE_OFF) {
|
||||||
|
AssemblyBase::handleModeTransitionFailed(result);
|
||||||
|
} else {
|
||||||
|
if (modeTransitionFailedSwitch) {
|
||||||
|
// To avoid transitioning back to off
|
||||||
|
triggerEvent(MODE_TRANSITION_FAILED, result);
|
||||||
|
modeTransitionFailedSwitch = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
51
mission/system/objects/RwAssembly.h
Normal file
51
mission/system/objects/RwAssembly.h
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
#ifndef MISSION_SYSTEM_RWASS_H_
|
||||||
|
#define MISSION_SYSTEM_RWASS_H_
|
||||||
|
|
||||||
|
#include <fsfw/devicehandlers/AssemblyBase.h>
|
||||||
|
#include <fsfw/power/PowerSwitcher.h>
|
||||||
|
|
||||||
|
struct RwHelper {
|
||||||
|
RwHelper(std::array<object_id_t, 4> rwIds) : rwIds(rwIds) {}
|
||||||
|
|
||||||
|
std::array<object_id_t, 4> rwIds = {};
|
||||||
|
};
|
||||||
|
|
||||||
|
class RwAssembly : public AssemblyBase {
|
||||||
|
public:
|
||||||
|
RwAssembly(object_id_t objectId, object_id_t parentId, PowerSwitchIF* pwrSwitcher,
|
||||||
|
power::Switch_t switcher, RwHelper helper);
|
||||||
|
|
||||||
|
private:
|
||||||
|
static constexpr uint8_t NUMBER_RWS = 4;
|
||||||
|
RwHelper helper;
|
||||||
|
PowerSwitcher switcher;
|
||||||
|
bool warningSwitch = true;
|
||||||
|
bool modeTransitionFailedSwitch = true;
|
||||||
|
FixedArrayList<ModeListEntry, NUMBER_RWS> modeTable;
|
||||||
|
|
||||||
|
ReturnValue_t initialize() override;
|
||||||
|
|
||||||
|
ReturnValue_t handleNormalOrOnModeCmd(Mode_t mode, Submode_t submode);
|
||||||
|
/**
|
||||||
|
* Check whether it makes sense to send mode commands to the device
|
||||||
|
* @param object
|
||||||
|
* @param mode
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
bool isUseable(object_id_t object, Mode_t mode);
|
||||||
|
|
||||||
|
// AssemblyBase implementation
|
||||||
|
void performChildOperation() override;
|
||||||
|
ReturnValue_t commandChildren(Mode_t mode, Submode_t submode) override;
|
||||||
|
ReturnValue_t checkChildrenStateOn(Mode_t wantedMode, Submode_t wantedSubmode) override;
|
||||||
|
ReturnValue_t isModeCombinationValid(Mode_t mode, Submode_t submode) override;
|
||||||
|
void startTransition(Mode_t mode, Submode_t submode) override;
|
||||||
|
void handleModeReached() override;
|
||||||
|
|
||||||
|
// These two overrides prevent a transition of the whole assembly back to off just because
|
||||||
|
// some devices are not working
|
||||||
|
void handleChildrenLostMode(ReturnValue_t result) override;
|
||||||
|
void handleModeTransitionFailed(ReturnValue_t result) override;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* MISSION_SYSTEM_RWASS_H_ */
|
@ -32,7 +32,6 @@ void TcsBoardAssembly::performChildOperation() {
|
|||||||
switcher.getState() == PowerSwitcher::SWITCH_IS_ON) {
|
switcher.getState() == PowerSwitcher::SWITCH_IS_ON) {
|
||||||
// Indicator that mode commanding can be performed now
|
// Indicator that mode commanding can be performed now
|
||||||
AssemblyBase::startTransition(targetMode, targetSubmode);
|
AssemblyBase::startTransition(targetMode, targetSubmode);
|
||||||
// AssemblyBase::performChildOperation();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -21,8 +21,6 @@ class TcsBoardAssembly : public AssemblyBase, public ConfirmsFailuresIF {
|
|||||||
|
|
||||||
ReturnValue_t initialize() override;
|
ReturnValue_t initialize() override;
|
||||||
|
|
||||||
void performChildOperation() override;
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static constexpr uint8_t NUMBER_RTDS = 16;
|
static constexpr uint8_t NUMBER_RTDS = 16;
|
||||||
PowerSwitcher switcher;
|
PowerSwitcher switcher;
|
||||||
@ -44,6 +42,7 @@ class TcsBoardAssembly : public AssemblyBase, public ConfirmsFailuresIF {
|
|||||||
MessageQueueId_t getEventReceptionQueue() override;
|
MessageQueueId_t getEventReceptionQueue() override;
|
||||||
|
|
||||||
// AssemblyBase implementation
|
// AssemblyBase implementation
|
||||||
|
void performChildOperation() override;
|
||||||
ReturnValue_t commandChildren(Mode_t mode, Submode_t submode) override;
|
ReturnValue_t commandChildren(Mode_t mode, Submode_t submode) override;
|
||||||
ReturnValue_t checkChildrenStateOn(Mode_t wantedMode, Submode_t wantedSubmode) override;
|
ReturnValue_t checkChildrenStateOn(Mode_t wantedMode, Submode_t wantedSubmode) override;
|
||||||
ReturnValue_t isModeCombinationValid(Mode_t mode, Submode_t submode) override;
|
ReturnValue_t isModeCombinationValid(Mode_t mode, Submode_t submode) override;
|
||||||
|
@ -22,7 +22,7 @@ CCSDSHandler::CCSDSHandler(object_id_t objectId, object_id_t ptmeId, object_id_t
|
|||||||
gpioIF(gpioIF),
|
gpioIF(gpioIF),
|
||||||
enTxClock(enTxClock),
|
enTxClock(enTxClock),
|
||||||
enTxData(enTxData),
|
enTxData(enTxData),
|
||||||
TRANSMITTER_TIMEOUT(transmitterTimeout) {
|
transmitterTimeout(transmitterTimeout) {
|
||||||
commandQueue = QueueFactory::instance()->createMessageQueue(QUEUE_SIZE);
|
commandQueue = QueueFactory::instance()->createMessageQueue(QUEUE_SIZE);
|
||||||
auto mqArgs = MqArgs(objectId, static_cast<void*>(this));
|
auto mqArgs = MqArgs(objectId, static_cast<void*>(this));
|
||||||
eventQueue =
|
eventQueue =
|
||||||
@ -312,7 +312,7 @@ void CCSDSHandler::enableTransmit() {
|
|||||||
// Transmitter already enabled
|
// Transmitter already enabled
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
transmitterCountdown.setTimeout(TRANSMITTER_TIMEOUT);
|
transmitterCountdown.setTimeout(transmitterTimeout);
|
||||||
#ifndef TE0720_1CFA
|
#ifndef TE0720_1CFA
|
||||||
gpioIF->pullHigh(enTxClock);
|
gpioIF->pullHigh(enTxClock);
|
||||||
gpioIF->pullHigh(enTxData);
|
gpioIF->pullHigh(enTxData);
|
||||||
|
@ -133,9 +133,9 @@ class CCSDSHandler : public SystemObject,
|
|||||||
gpioId_t enTxClock = gpio::NO_GPIO;
|
gpioId_t enTxClock = gpio::NO_GPIO;
|
||||||
gpioId_t enTxData = gpio::NO_GPIO;
|
gpioId_t enTxData = gpio::NO_GPIO;
|
||||||
|
|
||||||
// syrlinks must not be transmitting more than 15 minutes (according to datasheet)
|
// Syrlinks must not be transmitting more than 15 minutes (according to datasheet)
|
||||||
// Value can be configured via CTOR argument to allow test setups
|
// Value initialized by constructor argument
|
||||||
const uint32_t TRANSMITTER_TIMEOUT = 900000; // 900000 ms = 15 min
|
const uint32_t transmitterTimeout = 0;
|
||||||
|
|
||||||
// Countdown to disable transmitter after 15 minutes
|
// Countdown to disable transmitter after 15 minutes
|
||||||
Countdown transmitterCountdown;
|
Countdown transmitterCountdown;
|
||||||
|
@ -46,7 +46,7 @@ class VirtualChannel : public AcceptsTelemetryIF, public HasReturnvaluesIF {
|
|||||||
private:
|
private:
|
||||||
PtmeIF* ptme = nullptr;
|
PtmeIF* ptme = nullptr;
|
||||||
MessageQueueIF* tmQueue = nullptr;
|
MessageQueueIF* tmQueue = nullptr;
|
||||||
uint8_t vcId;
|
uint8_t vcId = 0;
|
||||||
|
|
||||||
bool linkIsUp = false;
|
bool linkIsUp = false;
|
||||||
|
|
||||||
|
@ -2,6 +2,7 @@ target_sources(${LIB_EIVE_MISSION} PRIVATE
|
|||||||
TmFunnel.cpp
|
TmFunnel.cpp
|
||||||
Timestamp.cpp
|
Timestamp.cpp
|
||||||
ProgressPrinter.cpp
|
ProgressPrinter.cpp
|
||||||
|
Filenaming.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
17
mission/utility/Filenaming.cpp
Normal file
17
mission/utility/Filenaming.cpp
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
#include "Filenaming.h"
|
||||||
|
|
||||||
|
#include "Timestamp.h"
|
||||||
|
|
||||||
|
Filenaming::Filenaming() {}
|
||||||
|
|
||||||
|
std::string Filenaming::generateAbsoluteFilename(std::string path, std::string filename,
|
||||||
|
bool addTimestamp) {
|
||||||
|
std::string absoluteName;
|
||||||
|
Timestamp timestamp;
|
||||||
|
if (addTimestamp) {
|
||||||
|
absoluteName = path + "/" + timestamp.str() + filename;
|
||||||
|
} else {
|
||||||
|
absoluteName = path + "/" + filename;
|
||||||
|
}
|
||||||
|
return absoluteName;
|
||||||
|
}
|
28
mission/utility/Filenaming.h
Normal file
28
mission/utility/Filenaming.h
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
#ifndef MISSION_UTILITY_FILENAMING_H_
|
||||||
|
#define MISSION_UTILITY_FILENAMING_H_
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Static functions related to file name creation
|
||||||
|
*/
|
||||||
|
class Filenaming {
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* @brief Creates the absolute name of a file by merging the path name, the filename and adding
|
||||||
|
* an optional timestamp.
|
||||||
|
*
|
||||||
|
* @param path
|
||||||
|
* @param filename
|
||||||
|
* @param addTimestap Set to true if timestamp should be considered in name
|
||||||
|
*
|
||||||
|
* @return The absolute filename
|
||||||
|
*/
|
||||||
|
static std::string generateAbsoluteFilename(std::string path, std::string filename,
|
||||||
|
bool addTimestamp);
|
||||||
|
|
||||||
|
private:
|
||||||
|
Filenaming();
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* MISSION_UTILITY_FILENAMING_H_ */
|
@ -1,16 +1,19 @@
|
|||||||
#include "ProgressPrinter.h"
|
#include "ProgressPrinter.h"
|
||||||
|
|
||||||
|
#include <iomanip>
|
||||||
|
|
||||||
#include "fsfw/serviceinterface/ServiceInterfaceStream.h"
|
#include "fsfw/serviceinterface/ServiceInterfaceStream.h"
|
||||||
|
|
||||||
ProgressPrinter::ProgressPrinter(std::string name, uint32_t numSteps)
|
ProgressPrinter::ProgressPrinter(std::string name, uint32_t numSteps, float percentageResolution)
|
||||||
: name(name), numSteps(numSteps) {}
|
: name(name), numSteps(numSteps), percentageResolution(percentageResolution) {}
|
||||||
|
|
||||||
ProgressPrinter::~ProgressPrinter() {}
|
ProgressPrinter::~ProgressPrinter() {}
|
||||||
|
|
||||||
void ProgressPrinter::print(uint32_t currentStep) {
|
void ProgressPrinter::print(uint32_t currentStep) {
|
||||||
float progressInPercent = static_cast<float>(currentStep) / static_cast<float>(numSteps) * 100;
|
float progressInPercent = static_cast<float>(currentStep) / static_cast<float>(numSteps) * 100;
|
||||||
if (static_cast<uint32_t>(progressInPercent) >= nextProgressPrint) {
|
if (progressInPercent >= nextProgressPrint) {
|
||||||
sif::info << name << " progress: " << progressInPercent << " %" << std::endl;
|
sif::info << name << " progress: " << std::setprecision(4) << progressInPercent << " %"
|
||||||
nextProgressPrint += FIVE_PERCENT;
|
<< std::endl;
|
||||||
|
nextProgressPrint += percentageResolution;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,13 +10,19 @@
|
|||||||
*/
|
*/
|
||||||
class ProgressPrinter {
|
class ProgressPrinter {
|
||||||
public:
|
public:
|
||||||
|
static constexpr float HALF_PERCENT = 0.5;
|
||||||
|
static constexpr float ONE_PERCENT = 1;
|
||||||
|
static constexpr float FIVE_PERCENT = 5;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Constructor
|
* @brief Constructor
|
||||||
*
|
*
|
||||||
* @param name Name of the process to monitor
|
* @param name Name of the process to monitor
|
||||||
* @param numSteps Number of steps to execute
|
* @param numSteps Number of steps to execute
|
||||||
|
* @param percentageResolution Distance between printed percentage steps. E.g. 5 means that
|
||||||
|
* a printout will be generated after 0%, 5%, 10% etc.
|
||||||
*/
|
*/
|
||||||
ProgressPrinter(std::string name, uint32_t numSteps);
|
ProgressPrinter(std::string name, uint32_t numSteps, float percentageResolution = FIVE_PERCENT);
|
||||||
virtual ~ProgressPrinter();
|
virtual ~ProgressPrinter();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -27,11 +33,10 @@ class ProgressPrinter {
|
|||||||
void print(uint32_t step);
|
void print(uint32_t step);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static constexpr uint32_t FIVE_PERCENT = 5;
|
|
||||||
|
|
||||||
std::string name = "";
|
std::string name = "";
|
||||||
uint32_t numSteps = 0;
|
uint32_t numSteps = 0;
|
||||||
uint32_t nextProgressPrint = 0;
|
float nextProgressPrint = 0;
|
||||||
|
float percentageResolution = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* MISSION_UTILITY_PROGRESSPRINTER_H_ */
|
#endif /* MISSION_UTILITY_PROGRESSPRINTER_H_ */
|
||||||
|
87
scripts/install-obsw-yocto.sh
Executable file
87
scripts/install-obsw-yocto.sh
Executable file
@ -0,0 +1,87 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# This is a helper script to install the compiles EIVE OBSW files
|
||||||
|
# into the yocto repository to re-generate the mission root filesystem
|
||||||
|
|
||||||
|
init_dir=$(pwd)
|
||||||
|
build_dir=cmake-build-release-q7s
|
||||||
|
obsw_root=""
|
||||||
|
q7s_yocto_dir="q7s-yocto"
|
||||||
|
q7s_package_path="q7s-package/${q7s_yocto_dir}"
|
||||||
|
|
||||||
|
obsw_version_filename="obsw_version.txt"
|
||||||
|
yocto_obsw_path="yocto/meta-eive/recipes-core/eive-obsw/files"
|
||||||
|
yocto_watchdog_path="yocto/meta-eive/recipes-support/eive-obsw-watchdog/files"
|
||||||
|
obsw_bin_name="eive-obsw"
|
||||||
|
watchdog_bin_name="eive-watchdog"
|
||||||
|
obsw_target_name="eive-obsw"
|
||||||
|
watchdog_target_name="eive-watchdog"
|
||||||
|
|
||||||
|
if [ ! -z ${EIVE_OBSW_ROOT} ]; then
|
||||||
|
cd ${EIVE_OBSW_ROOT}
|
||||||
|
obsw_root=$(pwd)
|
||||||
|
elif [ -d ${build_dir} ]; then
|
||||||
|
obsw_root=${build_dir}
|
||||||
|
:
|
||||||
|
elif [ -d ../${build_dir} ]; then
|
||||||
|
cd ..
|
||||||
|
obsw_root=$(pwd)
|
||||||
|
else
|
||||||
|
echo "-E- No way into the EIVE OBSW Root folder found. Exiting"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
yocto_root=""
|
||||||
|
if [ -d ../${q7s_package_path} ]; then
|
||||||
|
cd ../${q7s_package_path}
|
||||||
|
yocto_root=$(pwd)
|
||||||
|
elif [ -d ../${q7s_yocto_dir} ]; then
|
||||||
|
cd ../${q7s_yocto_dir}
|
||||||
|
yocto_root=$(pwd)
|
||||||
|
fi
|
||||||
|
if [ -z ${yocto_root} ]; then
|
||||||
|
echo "-E- No yocto directory found. Exiting"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
cd ${obsw_root}
|
||||||
|
|
||||||
|
version_cmd="git describe --tags --always --exclude docker_*"
|
||||||
|
echo "-I- Running ${version_cmd} to retrieve OBSW version and store it into ${obsw_version_filename}"
|
||||||
|
version_tag=$(${version_cmd})
|
||||||
|
echo "-I- Detected version tag ${version_tag}"
|
||||||
|
echo ${version_tag} > ${obsw_version_filename}
|
||||||
|
|
||||||
|
if [ ! -d ${build_dir} ]; then
|
||||||
|
echo "No Q7S Release binary folder ${build_dir} found. Exiting"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f ${build_dir}/${obsw_bin_name} ]; then
|
||||||
|
echo "-W- No EIVE OBSW binary found to intall to yocto"
|
||||||
|
else
|
||||||
|
cp_cmd="cp $(pwd)/${build_dir}/${obsw_bin_name} ${yocto_root}/${yocto_obsw_path}/${obsw_target_name}"
|
||||||
|
echo "-I- Executing: ${cp_cmd}"
|
||||||
|
eval ${cp_cmd}
|
||||||
|
cp_ver_cmd="cp $(pwd)/${obsw_version_filename} ${yocto_root}/${yocto_obsw_path}"
|
||||||
|
echo "-I- Executing: ${cp_ver_cmd}"
|
||||||
|
eval ${cp_ver_cmd}
|
||||||
|
echo "-I- Installed EIVE OBSW into yocto repository successfully"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f ${build_dir}/${watchdog_bin_name} ]; then
|
||||||
|
echo "-W- No EIVE Watchdog found to intall to yocto"
|
||||||
|
else
|
||||||
|
cp_cmd="cp $(pwd)/${build_dir}/${watchdog_bin_name} ${yocto_root}/${yocto_watchdog_path}/${watchdog_target_name}"
|
||||||
|
echo "-I- Executing: ${cp_cmd}"
|
||||||
|
eval ${cp_cmd}
|
||||||
|
cp_ver_cmd="cp $(pwd)/${obsw_version_filename} ${yocto_root}/${yocto_watchdog_path}"
|
||||||
|
echo "-I- Executing: ${cp_ver_cmd}"
|
||||||
|
eval ${cp_ver_cmd}
|
||||||
|
echo "-I- Installed EIVE watchdog into yocto repository successfully"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f $(pwd)/${obsw_version_filename} ]; then
|
||||||
|
rm $(pwd)/${obsw_version_filename}
|
||||||
|
fi
|
||||||
|
|
||||||
|
cd ${init_dir}
|
@ -16,6 +16,7 @@ if [[ -d "eive-obsw" ]]; then
|
|||||||
export EIVE_OBSW_ROOT="$(pwd)/eive-obsw"
|
export EIVE_OBSW_ROOT="$(pwd)/eive-obsw"
|
||||||
echo "Adding $(pwd)/eive-obsw/cmake/scripts/q7s helper script path to PATH"
|
echo "Adding $(pwd)/eive-obsw/cmake/scripts/q7s helper script path to PATH"
|
||||||
export PATH=$PATH:"$(pwd)/eive-obsw/cmake/scripts/q7s"
|
export PATH=$PATH:"$(pwd)/eive-obsw/cmake/scripts/q7s"
|
||||||
|
export PATH=$PATH:"$(pwd)/eive-obsw/scripts"
|
||||||
cd "eive-obsw"
|
cd "eive-obsw"
|
||||||
fi
|
fi
|
||||||
export CONSOLE_PREFIX="[Q7S ENV]"
|
export CONSOLE_PREFIX="[Q7S ENV]"
|
||||||
|
@ -16,6 +16,7 @@ if [[ -d "eive-obsw" ]]; then
|
|||||||
export EIVE_OBSW_ROOT="$(pwd)/eive-obsw"
|
export EIVE_OBSW_ROOT="$(pwd)/eive-obsw"
|
||||||
echo "Adding $(pwd)/eive-obsw/cmake/scripts/q7s helper script path to PATH"
|
echo "Adding $(pwd)/eive-obsw/cmake/scripts/q7s helper script path to PATH"
|
||||||
export PATH=$PATH:"$(pwd)/eive-obsw/cmake/scripts/q7s"
|
export PATH=$PATH:"$(pwd)/eive-obsw/cmake/scripts/q7s"
|
||||||
|
export PATH=$PATH:"$(pwd)/eive-obsw/scripts"
|
||||||
cd "eive-obsw"
|
cd "eive-obsw"
|
||||||
fi
|
fi
|
||||||
export CONSOLE_PREFIX="[Q7S ENV]"
|
export CONSOLE_PREFIX="[Q7S ENV]"
|
||||||
|
@ -54,5 +54,6 @@ if [ -d "eive-obsw" ]; then
|
|||||||
export EIVE_OBSW_ROOT="$(pwd)/eive-obsw"
|
export EIVE_OBSW_ROOT="$(pwd)/eive-obsw"
|
||||||
echo "Adding $(pwd)/eive-obsw/cmake/scripts/q7s helper script path to PATH"
|
echo "Adding $(pwd)/eive-obsw/cmake/scripts/q7s helper script path to PATH"
|
||||||
export PATH=$PATH:"$(pwd)/eive-obsw/cmake/scripts/q7s"
|
export PATH=$PATH:"$(pwd)/eive-obsw/cmake/scripts/q7s"
|
||||||
|
export PATH=$PATH:"$(pwd)/eive-obsw/scripts"
|
||||||
cd "eive-obsw"
|
cd "eive-obsw"
|
||||||
fi
|
fi
|
||||||
|
@ -54,5 +54,6 @@ if [ -d "eive-obsw" ]; then
|
|||||||
export EIVE_OBSW_ROOT="$(pwd)/eive-obsw"
|
export EIVE_OBSW_ROOT="$(pwd)/eive-obsw"
|
||||||
echo "Adding $(pwd)/eive-obsw/cmake/scripts/q7s helper script path to PATH"
|
echo "Adding $(pwd)/eive-obsw/cmake/scripts/q7s helper script path to PATH"
|
||||||
export PATH=$PATH:"$(pwd)/eive-obsw/cmake/scripts/q7s"
|
export PATH=$PATH:"$(pwd)/eive-obsw/cmake/scripts/q7s"
|
||||||
|
export PATH=$PATH:"$(pwd)/eive-obsw/scripts"
|
||||||
cd "eive-obsw"
|
cd "eive-obsw"
|
||||||
fi
|
fi
|
||||||
|
@ -10,7 +10,7 @@ ReturnValue_t DummyGpioIF::pullHigh(gpioId_t gpioId) { return RETURN_OK; }
|
|||||||
|
|
||||||
ReturnValue_t DummyGpioIF::pullLow(gpioId_t gpioId) { return RETURN_OK; }
|
ReturnValue_t DummyGpioIF::pullLow(gpioId_t gpioId) { return RETURN_OK; }
|
||||||
|
|
||||||
ReturnValue_t DummyGpioIF::readGpio(gpioId_t gpioId, int* gpioState) {
|
ReturnValue_t DummyGpioIF::readGpio(gpioId_t gpioId, gpio::Levels& gpioState) {
|
||||||
*gpioState = 0;
|
gpioState = gpio::Levels::LOW;
|
||||||
return RETURN_OK;
|
return RETURN_OK;
|
||||||
}
|
}
|
||||||
|
@ -10,7 +10,7 @@ class DummyGpioIF : public GpioIF {
|
|||||||
virtual ReturnValue_t addGpios(GpioCookie* cookie);
|
virtual ReturnValue_t addGpios(GpioCookie* cookie);
|
||||||
virtual ReturnValue_t pullHigh(gpioId_t gpioId);
|
virtual ReturnValue_t pullHigh(gpioId_t gpioId);
|
||||||
virtual ReturnValue_t pullLow(gpioId_t gpioId);
|
virtual ReturnValue_t pullLow(gpioId_t gpioId);
|
||||||
virtual ReturnValue_t readGpio(gpioId_t gpioId, int* gpioState);
|
virtual ReturnValue_t readGpio(gpioId_t gpioId, gpio::Levels& gpioState);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* TEST_GPIO_DUMMYGPIOIF_H_ */
|
#endif /* TEST_GPIO_DUMMYGPIOIF_H_ */
|
||||||
|
1
thirdparty/rapidcsv
vendored
Submodule
1
thirdparty/rapidcsv
vendored
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit d4e0bc1047ca3965653463dc63f6d230a043a060
|
2
tmtc
2
tmtc
@ -1 +1 @@
|
|||||||
Subproject commit c5862579348974882e23d39d0a6d9b2844159b99
|
Subproject commit a681850248fdf33c948b8cbda84acdf268d28669
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user