Files
gobot/i2c-hub/firmware/i2c-hub-firmware/src/gobotrpc/include/util/protocol.hpp
2025-01-08 21:19:03 +01:00

45 lines
930 B
C++

#pragma once
#include <stdint.h>
#include <strings.h>
enum GobotRPCNumber {
HOME_XY = 0x1,
SET_PADDING = 0x2,
GOTO = 0x3,
RELEASE_MOTORS = 0x4,
DROP_STONE = 0x5,
MOVE_Z_AXIS = 0x7,
VACUM = 0x8,
RESET = 0xc,
GET_INFO = 0xd
};
enum GobotRPCTypes {
REQUEST = 0b00,
RESPONSE = 0b01,
ERROR = 0b10
};
struct GobotRPCPackage_Req_Vacum {
uint8_t enable : 8;
};
#define GobotRPC_Package_DATA_OFFSET 2
#define CALC_SIZE_GobotRPC_PACKAGE(data_len) (data_len + GobotRPC_Package_DATA_OFFSET + 2)
struct GobotRPCHeaderInfo {
public:
GobotRPCNumber number;
GobotRPCTypes type;
size_t len;
};
void assembleGobotRPCHeader(char * buffer, GobotRPCNumber number, GobotRPCTypes data_size, size_t);
void assembleCRC(char * buffer, size_t data_len);
bool checkCRC(char * buffer, size_t data_len);
GobotRPCHeaderInfo extractGobotRPCHeader(char * buffer);
void softwareReset();