// STL includes #include #include #include // hyperion local includes #include "LedDeviceTpm2.h" LedDeviceTpm2::LedDeviceTpm2(const std::string& outputDevice, const unsigned baudrate) : LedRs232Device(outputDevice, baudrate) { // empty } int LedDeviceTpm2::write(const std::vector &ledValues) { if (_ledBuffer.size() == 0) { _ledBuffer.resize(5 + 3*ledValues.size()); _ledBuffer[0] = 0xC9; // block-start byte _ledBuffer[1] = 0xDA; // DATA frame _ledBuffer[2] = ((3 * ledValues.size()) >> 8) & 0xFF; // frame size high byte _ledBuffer[3] = (3 * ledValues.size()) & 0xFF; // frame size low byte _ledBuffer.back() = 0x36; // block-end byte } // write data memcpy(4 + _ledBuffer.data(), ledValues.data(), ledValues.size() * 3); return writeBytes(_ledBuffer.size(), _ledBuffer.data()); } int LedDeviceTpm2::switchOff() { memset(4 + _ledBuffer.data(), 0, _ledBuffer.size() - 5); return writeBytes(_ledBuffer.size(), _ledBuffer.data()); }