Files
J2S1-Kobuki/src/C++/Driver/src/KobukiDriver/KobukiParser.h

56 lines
2.2 KiB
C++

#ifndef KOBUKIPARSER_H //so that class cant be loaded twice
#define KOBUKIPARSER_H
#include <vector>
struct TRawGyroData {
int x, y, z;
};
struct TExtraInfo {
int HardwareVersionPatch, HardwareVersionMinor, HardwareVersionMajor;
int FirmwareVersionPatch, FirmwareVersionMinor, FirmwareVersionMajor;
int UDID0, UDID1, UDID2;
};
struct TKobukiData {
int timestamp, BumperCenter, BumperLeft, BumperRight;
int WheelDropLeft, WheelDropRight;
int CliffCenter, CliffLeft, CliffRight;
int EncoderLeft, EncoderRight;
int PWMleft, PWMright;
int ButtonPress1, ButtonPress2, ButtonPress3;
int Charger, Battery, overCurrent;
int IRSensorRight, IRSensorCenter, IRSensorLeft;
int GyroAngle, GyroAngleRate;
int CliffSensorRight, CliffSensorCenter, CliffSensorLeft;
int wheelCurrentLeft, wheelCurrentRight;
int digitalInput, analogInputCh0, analogInputCh1, analogInputCh2, analogInputCh3;
int frameId;
TExtraInfo extraInfo; // Add extraInfo member
std::vector<TRawGyroData> gyroData; // Add gyroData member
};
class KobukiParser {
public:
int parseKobukiMessage(TKobukiData &output, unsigned char *data);
TKobukiData data;
private:
int checkChecksum(unsigned char *data);
void parseBasicData(TKobukiData &output, unsigned char *data, int &checkedValue);
void parseIRSensorData(TKobukiData &output, unsigned char *data, int &checkedValue);
void parseGyroData(TKobukiData &output, unsigned char *data, int &checkedValue);
void parseCliffSensorData(TKobukiData &output, unsigned char *data, int &checkedValue);
void parseWheelCurrentData(TKobukiData &output, unsigned char *data, int &checkedValue);
void parseHardwareVersionData(TKobukiData &output, unsigned char *data, int &checkedValue);
void parseFirmwareVersionData(TKobukiData &output, unsigned char *data, int &checkedValue);
void parseXYZData(TKobukiData &output, unsigned char *data, int &checkedValue);
void parseDigitalAnalogInputData(TKobukiData &output, unsigned char *data, int &checkedValue);
void parseUDIDData(TKobukiData &output, unsigned char *data, int &checkedValue);
void parseExtraData(TKobukiData &output, unsigned char *data, int &checkedValue);
};
#endif