53 void initialize()
override;
55 void close()
override;
56 void finalize()
override;
70 void writeCommandFIFO(uint16_t *data,
size_t length, uint32_t timeoutInMs)
override;
71 void writeRequestFIFO(uint16_t *data,
size_t length, uint32_t timeoutInMs)
override;
74 void readU16ResponseFIFO(uint16_t *data,
size_t length, uint32_t timeoutInMs)
override;
76 void writeMPUFIFO(cRIO::MPU &mpu,
const std::vector<uint8_t> &data, uint32_t timeout)
override {}
77 std::vector<uint8_t> readMPUFIFO(cRIO::MPU &mpu)
override {
throw std::runtime_error(
"readMPU called"); }
79 void waitOnIrqs(uint32_t irqs, uint32_t timeout,
bool &timedout, uint32_t *triggered = NULL)
override {
82 void ackIrqs(uint32_t irqs)
override {}
83 uint32_t getIrq(uint8_t bus)
override {
return 0; }
91 std::thread _monitorMountElevationThread;
92 std::mutex _elevationReadWriteLock;
93 SAL_MTMount _mgrMTMount;
95 MTM1M3_hardpointActuatorDataC *_hardpointActuatorData;
99 std::queue<uint16_t> _u8Response;
100 std::queue<uint16_t> _u16Response;
101 std::queue<uint16_t> _subnetAResponse;
102 std::queue<uint16_t> _subnetBResponse;
103 std::queue<uint16_t> _subnetCResponse;
104 std::queue<uint16_t> _subnetDResponse;
105 std::queue<uint16_t> _subnetEResponse;
107 std::queue<uint16_t> _crcVector;
108 void _writeModbus(std::queue<uint16_t> *response, uint16_t data);
109 void _writeModbus16(std::queue<uint16_t> *reponse, int16_t data);
110 void _writeModbus32(std::queue<uint16_t> *reponse, int32_t data);
111 void _writeModbusFloat(std::queue<uint16_t> *response,
float data);
112 void _writeModbusCRC(std::queue<uint16_t> *response);
113 void _writeHP_ILCStatus(std::queue<uint16_t> *response,
int index);
115 void _monitorElevation(
void);
117 float _mountElevation = 90.;
118 std::chrono::steady_clock::time_point _mountElevationValidTo;
119 bool _simulatingToHorizon;
120 bool _mountSimulatedMovementFirstPass =
true;
122 bool _exitThread =
false;
127 std::chrono::time_point<std::chrono::steady_clock> _nextClock;
130 std::chrono::time_point<std::chrono::steady_clock> _lastAirOpen;
132 float _getAirPressure();
134 uint64_t _error_counter;
void readHealthAndStatusFIFO(uint64_t *data, size_t length, uint32_t timeoutInMs=10) override
Copy HealthAndStatus data into supplied data buffer.
Definition SimulatedFPGA.cpp:989