Serial library for Ususama

Dependents:   ususama_serial_demo WRS2021_mecanum_driver

Committer:
sgrsn
Date:
Wed Aug 25 12:11:35 2021 +0000
Revision:
4:fd646595de66
Parent:
3:3625406774ec
Update

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sgrsn 1:33d6c6f43306 1 #ifndef USUSAMA_PROTOCOL_H
sgrsn 1:33d6c6f43306 2 #define USUSAMA_PROTOCOL_H
sgrsn 1:33d6c6f43306 3
sgrsn 1:33d6c6f43306 4 #include "mecanum_controller.hpp"
sgrsn 1:33d6c6f43306 5 //#include <vector>
sgrsn 1:33d6c6f43306 6 //#include <optional>
sgrsn 1:33d6c6f43306 7
sgrsn 1:33d6c6f43306 8 static class UsusamaProtocol
sgrsn 1:33d6c6f43306 9 {
sgrsn 1:33d6c6f43306 10 public:
sgrsn 1:33d6c6f43306 11 struct MoveCommand_t
sgrsn 1:33d6c6f43306 12 {
sgrsn 2:92e2ae1b1886 13 float x;
sgrsn 2:92e2ae1b1886 14 float y;
sgrsn 2:92e2ae1b1886 15 float theta;
sgrsn 1:33d6c6f43306 16 bool enable;
sgrsn 1:33d6c6f43306 17 };
sgrsn 1:33d6c6f43306 18 struct MoveReply_t
sgrsn 1:33d6c6f43306 19 {
sgrsn 3:3625406774ec 20 float x;
sgrsn 3:3625406774ec 21 float y;
sgrsn 3:3625406774ec 22 float theta;
sgrsn 3:3625406774ec 23 bool reached;
sgrsn 1:33d6c6f43306 24 };
sgrsn 1:33d6c6f43306 25 struct StopCommand_t
sgrsn 1:33d6c6f43306 26 {
sgrsn 1:33d6c6f43306 27 bool stop;
sgrsn 1:33d6c6f43306 28 };
sgrsn 1:33d6c6f43306 29 struct StopReply_t
sgrsn 1:33d6c6f43306 30 {
sgrsn 1:33d6c6f43306 31 Pose2D pose;
sgrsn 1:33d6c6f43306 32 bool is_stop;
sgrsn 1:33d6c6f43306 33 };
sgrsn 1:33d6c6f43306 34
sgrsn 1:33d6c6f43306 35 UsusamaProtocol()
sgrsn 1:33d6c6f43306 36 {
sgrsn 1:33d6c6f43306 37 }
sgrsn 1:33d6c6f43306 38
sgrsn 1:33d6c6f43306 39 static int encode_float2int(float val)
sgrsn 1:33d6c6f43306 40 {
sgrsn 1:33d6c6f43306 41 return (int)(val * 1000);
sgrsn 1:33d6c6f43306 42 }
sgrsn 1:33d6c6f43306 43 static float decode_int2float(int val)
sgrsn 1:33d6c6f43306 44 {
sgrsn 1:33d6c6f43306 45 return (float)val / 1000;
sgrsn 1:33d6c6f43306 46 }
sgrsn 1:33d6c6f43306 47
sgrsn 1:33d6c6f43306 48 public:
sgrsn 1:33d6c6f43306 49 static const uint8_t COMMAND_MOVE = 0x04;
sgrsn 1:33d6c6f43306 50 static const uint8_t COMMAND_POSE_X = 0x05;
sgrsn 1:33d6c6f43306 51 static const uint8_t COMMAND_POSE_Y = 0x06;
sgrsn 1:33d6c6f43306 52 static const uint8_t COMMAND_POSE_THETA = 0x07;
sgrsn 1:33d6c6f43306 53
sgrsn 1:33d6c6f43306 54 static const uint8_t COMMAND_STOP = 0x08;
sgrsn 1:33d6c6f43306 55
sgrsn 1:33d6c6f43306 56 static const uint8_t REPLY_MOVE = 0x04;
sgrsn 2:92e2ae1b1886 57 static const uint8_t REPLY_COMMAND_X = 0x05;
sgrsn 2:92e2ae1b1886 58 static const uint8_t REPLY_COMMAND_Y = 0x06;
sgrsn 2:92e2ae1b1886 59 static const uint8_t REPLY_COMMAND_THETA = 0x07;
sgrsn 1:33d6c6f43306 60 static const uint8_t REPLY_STOP = 0x08;
sgrsn 1:33d6c6f43306 61 static const uint8_t REPLY_STATE_X = 0x010;
sgrsn 1:33d6c6f43306 62 static const uint8_t REPLY_STATE_Y = 0x011;
sgrsn 1:33d6c6f43306 63 static const uint8_t REPLY_STATE_THETA = 0x12;
sgrsn 3:3625406774ec 64
sgrsn 3:3625406774ec 65 static const uint8_t DEBUG_CONSOLE = 0x20;
sgrsn 1:33d6c6f43306 66 };
sgrsn 1:33d6c6f43306 67
sgrsn 1:33d6c6f43306 68 #endif