diff --git a/src/recorder.cpp b/src/recorder.cpp index 086fc9e6dce1d071ba6d304a9224214313365d89..e24fad95f68f1d874890373dac573344340fa960 100644 --- a/src/recorder.cpp +++ b/src/recorder.cpp @@ -15,6 +15,8 @@ #include <algorithm> #include <fstream> #include <cstring> +#include <thread> +#include <chrono> JasonRecorder::JasonRecorder(bool verbose) : verbose(verbose) { // create libusb context @@ -139,64 +141,53 @@ void JasonRecorder::start_recording(int qhb_version, std::uint8_t num_channels, send_message(START_ID, payload1); } else if (qhb_version == 3) { - // std::array<unsigned char, 4> accelSamplingRateBytes = {0}; - // std::array<unsigned char, 4> accelRangeScaleBytes = {0}; - // getBytesFromFloat(accelSamplingRateBytes, accelSamplingRate); - // getBytesFromFloat(accelRangeScaleBytes, accelRangeScale); - // std::vector<std::uint8_t> payload2 = { - // (std::uint8_t) (ACCEL), - // (std::uint8_t) (0x00), - // (std::uint8_t) (accelRangeScaleBytes[0]), - // (std::uint8_t) (accelRangeScaleBytes[1]), - // (std::uint8_t) (accelRangeScaleBytes[2]), - // (std::uint8_t) (accelRangeScaleBytes[3]), - // (std::uint8_t) (accelSamplingRateBytes[0]), - // (std::uint8_t) (accelSamplingRateBytes[1]), - // (std::uint8_t) (accelSamplingRateBytes[2]), - // (std::uint8_t) (accelSamplingRateBytes[3]) - // }; - // send_message(SET_SENSOR, payload2); - // std::cout << "Accel set\n"; - // sleep(0.01); + std::vector<std::uint8_t> payload2 = { + (std::uint8_t) (ACCEL), + (std::uint8_t) (0x00), + (std::uint8_t) ((accelRangeScale >> 24) & 0xFF), + (std::uint8_t) ((accelRangeScale >> 16) & 0xFF), + (std::uint8_t) ((accelRangeScale >> 8) & 0xFF), + (std::uint8_t) (accelRangeScale & 0xFF), + (std::uint8_t) ((accelSamplingRate >> 24) & 0xFF), + (std::uint8_t) ((accelSamplingRate >> 16) & 0xFF), + (std::uint8_t) ((accelSamplingRate >> 8) & 0xFF), + (std::uint8_t) (accelSamplingRate & 0xFF) + }; + send_message(SET_SENSOR, payload2); + std::cout << "Accel set\n"; + std::this_thread::sleep_for(std::chrono::milliseconds(10)); - // std::array<unsigned char, 4> gyroSamplingRateBytes = {0}; - // std::array<unsigned char, 4> gyroRangeScaleBytes = {0}; - // getBytesFromFloat(gyroSamplingRateBytes, gyroSamplingRate); - // getBytesFromFloat(gyroRangeScaleBytes, gyroRangeScale); - // std::vector<std::uint8_t> payload3 = { - // (std::uint8_t) (GYRO), - // (std::uint8_t) (0x00), - // (std::uint8_t) (gyroRangeScaleBytes[0]), - // (std::uint8_t) (gyroRangeScaleBytes[1]), - // (std::uint8_t) (gyroRangeScaleBytes[2]), - // (std::uint8_t) (gyroRangeScaleBytes[3]), - // (std::uint8_t) (gyroSamplingRateBytes[0]), - // (std::uint8_t) (gyroSamplingRateBytes[1]), - // (std::uint8_t) (gyroSamplingRateBytes[2]), - // (std::uint8_t) (gyroSamplingRateBytes[3]) - // }; - // send_message(SET_SENSOR, payload3); - // std::cout << "Gyro set\n"; - // sleep(0.1); + std::vector<std::uint8_t> payload3 = { + (std::uint8_t) (GYRO), + (std::uint8_t) (0x00), + (std::uint8_t) ((gyroRangeScale >> 24) & 0xFF), + (std::uint8_t) ((gyroRangeScale >> 16) & 0xFF), + (std::uint8_t) ((gyroRangeScale >> 8) & 0xFF), + (std::uint8_t) (gyroRangeScale & 0xFF), + (std::uint8_t) ((gyroSamplingRate >> 24) & 0xFF), + (std::uint8_t) ((gyroSamplingRate >> 16) & 0xFF), + (std::uint8_t) ((gyroSamplingRate >> 8) & 0xFF), + (std::uint8_t) (gyroSamplingRate & 0xFF) + }; + send_message(SET_SENSOR, payload3); + std::cout << "Gyro set\n"; + std::this_thread::sleep_for(std::chrono::milliseconds(10)); - // std::array<unsigned char, 4> magSamplingRateBytes = {0}; - // std::array<unsigned char, 4> magRangeScaleBytes = {0}; - // getBytesFromFloat(magSamplingRateBytes, magSamplingRate); - // getBytesFromFloat(magRangeScaleBytes, magRangeScale); - // std::vector<uint8_t> payload4 { - // (std::uint8_t) (MAG), - // (std::uint8_t) (0x00), - // (std::uint8_t) (magRangeScaleBytes[0]), - // (std::uint8_t) (magRangeScaleBytes[1]), - // (std::uint8_t) (magRangeScaleBytes[2]), - // (std::uint8_t) (magRangeScaleBytes[3]), - // (std::uint8_t) (magSamplingRateBytes[0]), - // (std::uint8_t) (magSamplingRateBytes[1]), - // (std::uint8_t) (magSamplingRateBytes[2]), - // (std::uint8_t) (magSamplingRateBytes[3]) - // }; - // send_message(SET_SENSOR, payload4); - // std::cout << "Mag set\n"; + std::vector<uint8_t> payload4 { + (std::uint8_t) (MAG), + (std::uint8_t) (0x00), + (std::uint8_t) ((magRangeScale >> 24) & 0xFF), + (std::uint8_t) ((magRangeScale >> 16) & 0xFF), + (std::uint8_t) ((magRangeScale >> 8) & 0xFF), + (std::uint8_t) (magRangeScale & 0xFF), + (std::uint8_t) ((magSamplingRate >> 24) & 0xFF), + (std::uint8_t) ((magSamplingRate >> 16) & 0xFF), + (std::uint8_t) ((magSamplingRate >> 8) & 0xFF), + (std::uint8_t) (magSamplingRate & 0xFF), + }; + send_message(SET_SENSOR, payload4); + std::cout << "Mag set\n"; + std::this_thread::sleep_for(std::chrono::milliseconds(10)); std::vector<std::uint8_t> payload1 = { START,