Serial library for Ususama
Dependents: ususama_serial_demo WRS2021_mecanum_driver
ususama_protocol.hpp@4:fd646595de66, 2021-08-25 (annotated)
- Committer:
- sgrsn
- Date:
- Wed Aug 25 12:11:35 2021 +0000
- Revision:
- 4:fd646595de66
- Parent:
- 3:3625406774ec
Update
Who changed what in which revision?
User | Revision | Line number | New 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 |