eive-obsw/CHANGELOG.md
Robin Mueller 7bda0dfb97
Some checks failed
EIVE/eive-obsw/pipeline/pr-develop There was a failure building this commit
Merge remote-tracking branch 'origin/develop' into add_heater_info_set
2023-02-21 11:06:14 +01:00

27 KiB

Change Log

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog.

The milestone list yields a list of all related PRs for each release.

Starting at v2.0.0, the following changes will consitute of a breaking change warranting a new major release:

  • The TMTC interface changes in any shape of form.
  • The behavour of the OBSW changes in a major shape or form relevant for operations

[unreleased]

[v1.28.1]

Fixed

  • Patch version which compiles for EM
  • CFDP Funnel bugfix: CCSDS wrapping was buggy and works properly now.
  • CMakeLists.txt fix which broke CI/CD builds when server could not retrieve full git SHA.
  • Possible regression in the MAX31865 polling task: Using a ManualCsLockGuard for reconfiguring and then polling the sensor is problematic, invalid sensor values will be read. CS probably needs to be de-asserted or some other HW/SPI specific issue. Letting the SPI ComIF do the locking does the job.

Changed

  • Add -Wshadow=local shadowing warnings and fixed all of them
  • Refactored IMTQ handlers to also perform low level I2C communication tasks in separate thread. This avoids the various delays needed for I2C communication with that device inside the ACS PST. (e.g. 1 ms delay between each transfer, or 10 ms integration delay for MGM measurements).
  • Updated generated CSV files: Support for skip directive and explicit "No description" info string
  • The polling threads for actuator polling now have a slightly higher priority than the ACS PST to ensure timing requirements are met.

Added

  • Added new heater info set for the TCS controller. This set contains the heater switch states and the current draw. PR: #351
  • The HeaterHandler now exposes a mode which reflects whether the heater power is on or off. It also triggers mode events for its heater children objects which show whether the specific heaters are on or off. The heater handler will be part of the TCS tree. PR: #351
  • git post checkout hook which initializes and updates the submodules automatically.

[v1.28.0] 2023-02-17

eive-tmtc: v2.12.7

Added

  • In case the ACS Controller does recognize more than one RW to be invalid and therefore not available, it does not perform pointing control but aborts shortly after sensorProcessing. If the problem persits for 5 ACS cycles, the MULTIPLE_RW_INVALID event is triggered, which invokes the transition of the AcsSubsystem to safe mode.

Changed

  • Igrf13 model vector now outputs as uT instead of nT
  • Changed timings for AcsPst, more time for sun sensors.
  • Added values for MGM sensor fusion
  • Refactored RW Software: Polling runs in separate thread, all RWs are now polled in under 60 ms. PR: #381
  • Bumped FSFW to allow initializing child modes in SubsystemBase derived objects.

Fixed

  • Fixed values for GYR sensor fusion
  • Fixed speed types for rwHandlingParameter
  • Pseudo inverse used for allocating torque to RWs and RW antistiction now actually consider the state of the RWs

[v1.27.2] 2023-02-14

Reaction Wheel handling was determined to be (quasi) broken and needs to be fixed in future release to be usable by ACS controller.

eive-tmtc: v2.12.6

Added

  • Function for the ACS controller to command MTQ and RWs called by all subroutines
  • RwHandler now handles commanding of RW speeds via RwSpeedActuationSet
  • Tracing supports which allows checking whether threads are running as usual.

Changed

  • Remove 2 TCS threads.
  • Move low level polling into ACS PST, move high level device handlers into TCS system task.
  • ActCmds now returns command vectors as integers as required by the actuators and scales them to the appropriate range
  • All RwHandler are now polled five times per ACS cycle
  • Remove 2 TCS threads. Move low level polling into ACS PST, move high level device handlers into TCS system task.
  • Further reduce number of threads:
    1. Remove PUS low priority task, move assigned threads to the generic system task
    2. Group events and verification tasks into PUS high priority task
    3. Group all other components into PUS medium priority task
    4. Add SCEX device handler to PL task, remove dedicated thread

Removed

  • lwgps dependency not compiled anymore, is not used

[v1.27.1] 2023-02-13

Fixed

  • Fix for SPI ComIF: Set transfer size to 0 for failed transfers
  • Fix shadowing issue with locks in MAX31865 low level handler

[v1.27.0] 2023-02-13

eive-tmtc: v2.12.5

Added EIVE system top mode component. Currently, only SAFE and IDLE mode are implemented, and the system does not do more than commanding TCS and ACS into the correct modes. It does not have a lot of mode tracking capabilities yet because the ACS controller might alternate between SAFE and DETUMBLE. It takes around 5-10 seconds for the EIVE system to reach the SAFE mode.

The new system is used at software boot to command the satellite into safe mode on each reboot. This behaviour can be disabled with the OBSW_SWITCH_TO_NORMAL_MODE_AFTER_STARTUP flag.

Added

  • New EIVE system component like explained above.

Changed

  • The satellite now commands itself into SAFE mode on each reboot, which triggers a lot of events on each SW reboot. The TCS subsystem will commanded to NORMAL mode immediately while the ACS subsystem will be commanded to SAFE mode. The payload subsystem will be commanded OFF.
  • RELEASE_BUILD flag moved to commonConfig.h
  • The ACS subsystem transitions are now staggered: The SUS board assembly is commanded as a separate transition. This reduces the risk of long bus lockups.
  • No INFO mode event translations for release builds to reduce number of printouts.
  • More granular locking inside the MAX31865 low level read handler.

Fixed

  • More DHB thermal module fixes.
  • ACS PST frequency extended to 0.8 seconds in debug builds to avoid SPI bus lockups.
  • Local datapool fixes for the PlocSupervisorHandler

[v1.26.4] 2023-02-10

eive-tmtc: v2.12.3

Fixed

  • SdCardManager.cpp isSdCardUsable: Use ext4 instead of vfat to check read-only state.

[v1.26.3] 2023-02-09

eive-tmtc: v2.12.2

Added

  • First version of a TCS controller heater control loop, but the loop is disabled for now.

Changed

  • Reworked dummy handling for the TCS controller. PR: #325
  • Generator scripts now generate files for hosted and for Q7S build.

Fixed

  • GPS Controller: Set fix value to 0 when switching off to allow GPS_FIX_CHANGE to work when switching the GPS back on.

[v1.26.2] 2023-02-08

Changed

  • ACS Controller scheduling is now configurable via the eive/definitions.h file. Also ensured that scheduling is done in big blocks to reduce risk of missed deadlines.
  • Replaced chained locks for polling new sensor data to the AcsController.
  • Made TM store even larger.

Fixed

  • Bugfix for PDEC handler which causes the PIR register of the PDEC to never be cleared on release builds. The dummy variable used to read the register needs to be declared volatile to avoid compiler optimizations. PR: #374
  • Bumped FSFW for fix of possible memory leaks in TCP/IP TMTC bridge inside the FSFW.

Added

  • Create TCS controller for EM build.

[v1.26.1] 2023-02-08

  • Initialize parameter helper in ACS controller.

[v1.26.0] 2023-02-08

eive-tmtc v2.12.1

Changed

ACS

  • Readded calibration matrices for MGM calibration.
  • Added calculation of satellite velocity vector from GPS position data
  • Added detumble mode using GYR values
  • Added inertial pointing mode
  • Added nadir pointing mode
  • Added ground station target mode
  • Added antistiction for RWs
  • Added sunTargetSafe differentiation for LEOP
  • Added check for existance of SD_0_SKEWED_PTG_FILE and SD_1_SKEWED_PTG_FILE to determine which sunTargetSafe to use
  • Added gpsVelocity and gpsPosition to gpsProcessed
  • Removed deprecated OutputValues
  • Added HasParametersIF to AcsParameters
  • Added ReceivesParameterMessagesIF and ParameterHelper to AcsController
  • Updated AcsParameters with actual values and changed structure
  • Sun vector model and magnetic field vector model calculations are always executed now
  • domainId is now used as identifier for parameter structs
  • Changed onboard GYR value handling from deg/s to rad/s

Fixed

  • Single sourcing the version information into CMakeLists.txt. The git describe functionality is only used to retrieve the git SHA hash now. Also removed OBSWVersion.h accordingly.
  • Build system: Fixed small bug, where the version itself was stored as the git SHA hash in commonConfig.h. This will be an empty string now for regular versions.
  • Bump FSFW for important fix in PUS mode service.

ACS

  • Bugfixes in 'SensorProcessing' where previously MGM values would be calibrated before being transformed in body RF. However, the calibration values are in the body RF. Also fixed the validity flag of 'mgmVecTotDerivative'.
  • Fixed calculation of model sun vector
  • Fixed calculation of model magnetic field vector
  • Fixed MEKF algorithm
  • Fixed several variable initializations
  • Fixed several variable types
  • Fixed use of sunMagAngleMin for safe mode
  • Fixed MEKF not using correct sampleTime
  • Fixed assignment of SUS0 and SUS6 calibration matrices due to wiring being mixed up
  • Various smaller bugfixes

[v1.25.0] 2023-02-06

eive-tmtc version: v2.12.0

Changed

  • Updated Subsystem mode IDs to avoid clashes with regular device handler modes.

Fixed

  • GpsHyperionLinuxController: Fix gpsd polling by continuously calling gps_read in one cycle until it does not have any data left anymore. Also, the data is now polled in a permanent loop, where controller handling is done on 0.2 second timeouts. PR: #368

[v1.24.0] 2023-02-03

  • eive-tmtc v2.10.0
  • AcsSubsystem: OFF, SAFE and DETUMBLE mode were tested. Auto-transitions SAFE <-> DETUMBLE tested as well. Other modes still need to be tested.

Fixed

  • AcsController: Parameter fix in DetumbleParameter.
  • Set GPS set entries to invalid on MODE_OFF command.
  • Bump FSFW for bugfix in setNormalDatapoolEntriesInvalid where the validity was not set to false properly
  • Fixed usage of uint instead of int for commanding MTQ. Also fixed the range in which the ACS Ctrl commands the MTQ to match the actual commanding range. PR: #363
  • Regression: Revert swap of SUS0 and SUS6. Those devices are on separate power lines. In a future fix, the calibration matrices of SUS0 and SUS6 will be swapped.

Changed

  • Update ACS scheduling to represent the actual ACS design. There is one ACS PST now for all timing sensitive ACS operations. In the debug builds, the new ACS polling sequence table will have a period of 0.6 seconds, but will remain 0.4 seconds for the release build. PR: #365
  • ACS::SensorValues is now an ACS controller member to reduce the risk of stack overflow.
  • ACS Subsystem Sequence Mode IDs updated. PR: #365 TMTC PR: eive/eive-tmtc#130
  • Update and tweak ACS subsystem to represent the actual ACS design
  • Event handling in the ACS subsystem for events triggered by the ACS controller. PR: #365

[v1.23.1] 2023-02-02

TMTC rev: 15adb9bf2ec68304a4f87b8dd418c1a8353283a3

Fixed

  • Bugfix in FSFW where the sequence flags of the PUS packets were set to continuation segment (0b00) instead of unsegmented (0b11).
  • Bugfix in FSFW where the MGM RM3100 value Z axis data was parse incorrectly. PR: eive/fsfw#123

[v1.23.0] 2023-02-01

TMTC version: v2.9.0

Changed

  • Bumped FSFW to include improvements and bugfix for Health Service. The health service now supports the announce all health info command. PR: fsfw/fsfw#725

Fixed

  • Bumped FSFW to include fixes in the time service. PR: fsfw/fsfw#726
  • The CCSDS handler starts the transmitter timer each time it is commanded to MODE_ON and times out the timer when the handler is commanded to MODE_OFF
  • If the timer is timed out the CCSDS handler will disable the TX clock which will cause the syrlinks to got to standby mode
  • PDEC handler now parses the FAR register also in interrupt mode

[v1.22.1] 2023-01-30

Changed

  • Updated FSFW to include addition where the SO_REUSEADDR option is set on the TCP server, which should improve its ergonomics.

[v1.22.0] 2023-01-28

TMTC version: v2.6.1

Added

  • First COM subsystem implementation. It mirrors the Syrlinks mode/submodes but also takes care of commanding the CCSDS handler. It expects the Syrlinks submodes as mode commands. PR: #358
  • The CCSDS handler has has a new submode (3) to configure the default datarate.
  • Default datarate parameter commanding moved to COM subsystem. PR: #358

[v1.21.0] 2023-01-26

TMTC version: v2.5.0 Syrlinks PR: PR: #353

Fixed

  • The OBSW_SYRLINKS_SIMULATED flag is set to 0 for for both EM and FM.
  • MGM4 handling in ACS sensor processing: Bugfix in mulScalar operation PR: #354
  • Subsystem ID clash: CORE subsystem ID was the same as Syrlinks subsystem ID.

Changed

  • Startracker temperature set and PCDU switcher set are diagnostic now
  • SyrlinksHkHandler renamed to SyrlinksHandler to better reflect that it does more than just HK and is also responsible for setting the TX mode of the device.
  • SyrlinksHandler: Go to startup immediately because the Syrlinks device should always be on by default.
  • SyrlinksHandler: Go to normal mode at startup.

Added

  • The Syrlinks handler has submodes for the TX mode now: RX Only (0), RX and TX default datarate (1), RX and TX Low Rate (2), RX and TX High Rate (3) and TX Carrier Wave (4). The submodes apply for both ON and NORMAL mode. The default datarate can be updated using a parameter command (domain ID 0 and unique ID 0) with value 0 for low rate and 1 for high rate.
  • The Syrlinks handler always sets TX to standby when switching off
  • The Syrlinks handler triggers a new TX_ON event when the transmitter was switched on successfully and a TX_OFF event when it was switched off successfully.
  • Startracker temperature set and PCDU switcher set are diagnostic now
  • The CCSDS handler can accept mode commands now. It accepts ON and OFF commands. Furthermore it has a submode for low datarate (1) and high datarate (2) for the ON command. PR: #352

[v1.20.0] 2023-01-24

Added

  • The Q7S SW now checks for a file named boot_delay_secs.txt in the home directory. If it exists and the file is empty, it will delay for 6 seconds before continuing with the regular boot. It can also try to read delay seconds from the file. PR: #340.
  • Basic TCS Subsystem component. PR: #319
  • Expose base set of STR periodic housekeeping packets

Changed

  • Moved some PDEC/PTME configuration to common/config/eive/definitions.h PR: #319
  • The ACS Controller Gyro Sets (raw and processed) and the MEKF dataset are diagnostics now.
  • Bumped FSFW for Service 11 improvement which includes size and CRC check for contained TC
  • Syrlinks module now always included for both EM and FM
  • SA Deployment: Allow specifying the switch interval and the initial channel. This allows testing the new deployment procedure where each channel is burned for half of the whole burn duration. It also allows burning only one channel for the whole burn duration. The autonomous mechanism was adapted to burn each channel for half of the burn time by default. PR: #347 TMTC PR: eive/eive-tmtc#127
  • Max31865RtdLowlevelHandler.cpp: For each RTD device, the config is now re-written before every read. This seems to fix some issue with invalid temperature sensor readings. PR: #345

Fixed

  • GyroADIS1650XHandler: Updated handler to determine correct dynamic range from RANG_MDL register readout. This is because ADIS16505-3BMLZ devices are used on the ACS board and the previous range setting was wrong. Also fixed a small error properly set internal state on shut-down. PR: #342
  • Syrlinks Handler: Read RX frequency shift as 24 bit signed number now. Also include validity handling for datasets. PR: #350
  • GyroADIS1650XHandler: Changed calculation of angular rate to be sensitivity based instead of max. range based, as previous fix still left an margin of error between ADIS16505 sensors and L3GD20 sensors. PR: #346

[v1.19.0] 2023-01-10

Changed

  • 5V stack is now off by default

Fixed

  • PLOC SUPV: Minor adaptions and important bugfix for UART manager
  • Allow cloning and building the hosted OBSW version without proprietary libraries, which also avoids the need to have a Gitea account. PR: #337

Added

  • First version of ACS controller PR: #329
  • Allow commanding the 5V stack internally in software PR: #334
  • Add automatic 5V stack commanding for all connected devices PR: #335

[v1.18.0] 2022-12-01

Changed

  • PLOC Supervisor: Changes baudrate to 921600
  • Renamed /dev/ul-plsv to /dev/ploc_supv, is not a UART lite anymore
  • Renamed /dev/i2c_eive to /dev/i2c_pl and /dev/i2c-2 to /dev/i2c_ps. PR: #328

[v1.17.0] 2022-11-28

Added

  • PLOC Supervisor Update: Update SW to use newest PLOC SUPV version by TAS PR 1: #316 PR 2: #324 PR 3: #326

[v1.16.0] 2022-11-18

  • It is now possible to compile Linux components for the hosted build conditionally PR: #322
  • ACS Subsystem. PR: #231
  • Payload Subsystem. PR: #231
  • Add IRQ mode for PDEC handler. PR: #310
  • Extended TM funnels to allow multiple TM recipients. PR: #312
  • DHB: Transitions to normal mode now possible directly, which simplifies subsystem implementations PR: #313
  • MAX3185 Low Level Handler and Device Handler: Simplifications and bugfixes to allow switching off without triggering unrequested replies PR: #313
  • Add remaining missing TMP1075 device handlers. PR: #318

[v1.15.0] 2022-10-27

  • Consistent device file naming
  • Remove rad sensor from EM build, lead to weird bugs on EM which prevented xsc_boot_copy from working properly
  • CFDP closure handling is now working PR: #307
  • Safety mechanism for SD card handling on graceful reboots PR: #308
  • Solar Array Deployment handler update PR: #305
  • IMTQ updates as preparation for ACS controller expansion PR: #306
  • P60 Module: Reduce number of set IDs, use same set IDs for core, auxiliary and config HK set across the three PCDU modules

[v1.14.1] 11.10.2022

  • Various bugfixes and regression fixes
  • General file handling at program initialization now works properly again
  • Scratch buffer preferred SD card handling works again
  • Use scoped locks in TCS controller to avoid deadlocks

[v1.14.0] 10.10.2022

  • Provide full SW update capability for the OBSW. This includes very basic CFDP integration, a software update procedure specified in detail in the README and some high level commands to make this easier for operators. PR: #302
  • Update for FSFW: HasReturnvaluesIF class replaced by namespace returnvalue
  • Add some GomSpace clients as a submodule dependency. Use this dependency to deserialize the GomSpace TM tables
  • Add API to retrieve GomSpace device parameter tables PR: #287
  • Add API to save and load GomSpace config tables PR: #293
  • Increase number of allowed consescutive action commands from 3 to 16 PR: #294
  • Fix for EM SW: Always create ACS Task
  • Added Scex device handler and Scex uart reader PR: #303
  • ACS Subsystem. PR: #228

[v1.13.0] 24.08.2022

  • Added first version of ACS Controller with gathers MGM data in a set
  • Some tweaks for IMTQ handler

[v1.12.1] 05.07.2022

  • Disable periodic TCS controller HK generation by default

[v1.12.0] 04.07.2022

Added

  • Dummy components to run OBSW without relying on external hardware PR: #266
  • Basic Thermal Controller PR: #266
  • PUS11 TC scheduler PR: #259
  • Regular reboot command PR: #242
  • Commands for individual RTD devices PR: eive/eive-tmtc#84
  • RwAssembly added to system components. Assembly works in principle, issues making 4 consecutives RWs communicate at once.. PR: #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: #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: #248

Fixed

  • q7s-cp.py bugfix PR: #256
  • Generator scripts output now produce platform-independent artifacts PR: #267

Heater

  • Adds HealthIF to heaters. Heaters are own system object with queues now which allows to set them faulty.
  • SW will attempt to shut down heaters which are on but marked faulty
  • Some simplifications for HeaterHandler, use std::vector instead of std::unordered_map for primary container. Using the heater indexes 0 to 7 allows to use natural array indexing
  • Some additional input sanity checks in executeAction PR: #236

Changed

  • CCSDS handler improvements PR: #268
  • Build unittest as default side product of hosted builds PR: #244
  • 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: #247
  • Sun Sensors have names denoting their location and poiting in the satellite now PR: #245
  • Better RTD names denoting their purpose (and location consequently) PR: #246

[v1.11.0]

Fixed

  • Host build working again

Added

  • Custom Syrlinks FDIR which disabled most of the default FDIR functionality PR: #232
  • Custom Gomspace FDIR which disabled most of the default FDIR functionality
  • Custom Syrlinks FDIR which disabled most of the default FDIR functionality

Changed

  • PCDU handler only called once in PST, but can handle multiple messages now PR: #221 Bugfix: #235
  • Update rootfs base of Linux, all related OBSW changes
  • Add /usr/local/bin to PATH. All shell scripts are there now
  • Add Syrlinks and TMP devices to Software by default
  • Update GPS Linux Hyperion Handler to use socket interface. Still allows switching back to SHM interface, but the SHM interface is a possible cause of SW crashes
  • Updated code for changed FSFW HAL GPIO API: readGpio prototype has changed PR: #240 and eive/fsfw#76

GPS

PRs: #239

  • Rename GPS device to /dev/gps0
  • Use gpsd version 3.17 now. Includes API changes

EM and FM splitup & Build Workflow improvements

PR: #238

  • Split up bsp_q7s in separate EM and FM build with module loading set to different default values. The EM object factory is unique which allows building a parallel setup with dummy components
  • All major BSPs have an own OBSWConfig.h.in file which simplifies the file significantly
  • Renamed Q7S primary build folders:
    • cmake-build-debug-q7s for primary development build
    • cmake-build-release-q7s for primary release build
    • cmake-build-debug-q7s-em for primary development build of the EM software
    • cmake-build-release-q7s-em for primary release build of the EM software
  • Refactored Q7S helper script handling. It is now intended and preferred to copy the environment script to the same folder level as the eive-obsw and source it. This will also add the path containing the shell helper scripts to PATH
  • The actual helper shell scripts were renamed as well to q7s-<buildSystem>-<buildType>.sh

[v1.10.1]

Version bump

[v1.10.0]

For all releases equal or prior to v1.10.0, see milestones