#include #include "raymath.h" #include #ifdef _WIN32 #include #endif #include // struct Quaternion{ // float w, x, y, z; // }; #pragma pack(push, 1) typedef struct { uint8_t StartByte; uint8_t SensorAddress; float qw; float qx; float qy; float qz; uint8_t EndByte; } QuaternionData; #pragma pack(pop) // serial communication functions #ifdef _WIN32 HANDLE initSerialPort (const char* portName, DWORD baudRate); bool readSerialData (HANDLE hSerial, uint8_t* buffer, DWORD bufferSize, DWORD& bytesRead); #elif defined(__APPLE__) #elif defined(__linux__) int linux_initSerialPort(); bool linux_close_serial_port(int serial_port); bool linux_readSerialData(int serialPort, std::vector &buffer, size_t& bytes_read); void print_vector_content(std::vector &vec, std::string vector_name); #endif // extract packet data from serial datastream std::vector extractPacket(std::vector &buffer); bool parseBinaryPacket(std::vector &packetData, Quaternion &quat); bool parseQuaternion(const std::string& data, Quaternion& quat);