Robin Mueller
beb79d2fb4
All checks were successful
EIVE/eive-obsw/pipeline/pr-main This commit looks good
54 lines
1.7 KiB
C++
54 lines
1.7 KiB
C++
#ifndef MISSION_PAYLOAD_SCEXHELPERS_H_
|
|
#define MISSION_PAYLOAD_SCEXHELPERS_H_
|
|
|
|
#include <fsfw/devicehandlers/DeviceHandlerIF.h>
|
|
#include <fsfw/events/Event.h>
|
|
|
|
#include <cstdint>
|
|
#include <vector>
|
|
|
|
#include "eive/eventSubsystemIds.h"
|
|
#include "eive/objects.h"
|
|
|
|
// Definitions for the Solar Cell Experiment
|
|
namespace scex {
|
|
|
|
static constexpr uint8_t SUBSYSTEM_ID = SUBSYSTEM_ID::SCEX_HANDLER;
|
|
|
|
static constexpr Event MISSING_PACKET = event::makeEvent(SUBSYSTEM_ID, 0, severity::LOW);
|
|
static constexpr Event EXPERIMENT_TIMEDOUT = event::makeEvent(SUBSYSTEM_ID, 1, severity::LOW);
|
|
//! FRAM, One Cell or All cells command finished. P1: Command ID
|
|
static constexpr Event MULTI_PACKET_COMMAND_DONE =
|
|
event::makeEvent(SUBSYSTEM_ID, 2, severity::INFO);
|
|
static constexpr Event FS_UNUSABLE = event::makeEvent(SUBSYSTEM_ID, 3, severity::LOW);
|
|
|
|
enum Cmds : DeviceCommandId_t {
|
|
PING = 0b00111,
|
|
ALL_CELLS_CMD = 0b00101,
|
|
ONE_CELL = 0b00110,
|
|
FRAM = 0b00001,
|
|
EXP_STATUS_CMD = 0b00010,
|
|
TEMP_CMD = 0b00011,
|
|
ION_CMD = 0b00100,
|
|
ERROR_REPLY = 0b01000,
|
|
INVALID = 255
|
|
};
|
|
|
|
static const std::vector<DeviceCommandId_t> VALID_CMDS = {
|
|
PING, ALL_CELLS_CMD, ONE_CELL, FRAM, EXP_STATUS_CMD, TEMP_CMD, ION_CMD};
|
|
|
|
static constexpr uint8_t HEADER_LEN = 5;
|
|
static constexpr uint8_t CRC_LEN = 2;
|
|
|
|
static constexpr uint8_t IDLE_BIT_0_DEF_STATE = 0;
|
|
static constexpr uint8_t IDLE_BIT_1_DEF_STATE = 1;
|
|
|
|
uint8_t createCmdByte(Cmds cmd, bool tempCheck = false);
|
|
|
|
ReturnValue_t prepareScexCmd(Cmds cmd, std::pair<uint8_t*, size_t> cmdBufPair, size_t& cmdLen,
|
|
std::pair<const uint8_t*, size_t> usrDataPair, bool tempCheck = false);
|
|
|
|
} // namespace scex
|
|
|
|
#endif /* MISSION_PAYLOAD_SCEXHELPERS_H_ */
|