#include #include "AcsParameters.h" class SusConverter { public: SusConverter() {} uint64_t checkSunSensorData(const uint16_t susChannel[6]); bool checkValidity(bool* susValid, const uint64_t brightness[12], const float threshold); void calculateSunVector(float* sunVectorSensorFrame, const uint16_t susChannel[6]); private: static const uint8_t GNDREF = 4; // =2^12[Bit]high borderline for the channel values of one sun sensor for validity Check static constexpr uint16_t SUS_CHANNEL_VALUE_HIGH = 4096; // [Bit]low borderline for the channel values of one sun sensor for validity Check static constexpr uint8_t SUS_CHANNEL_VALUE_LOW = 0; // 4096[Bit]high borderline for check if the sun sensor is illuminated by the sun or by the // reflection of sunlight from the moon/earth static constexpr uint16_t SUS_ALBEDO_CHECK = 1000; // [Bit]low borderline for check if the sun sensor is illuminated by the sun or by the reflection // of sunlight from the moon/earth static constexpr uint8_t SUS_CHANNEL_SUM_LOW = 0; static constexpr float S = 0.03; // S=[mm] gap between diodes static constexpr float D = 5; // D=[mm] edge length of the quadratic aperture static constexpr float H = 2.5; // H=[mm] distance between diodes and aperture AcsParameters acsParameters; };