Serial library for Ususama
Dependents: ususama_serial_demo WRS2021_mecanum_driver
ususama_protocol.hpp@1:33d6c6f43306, 2021-08-23 (annotated)
- Committer:
- sgrsn
- Date:
- Mon Aug 23 17:02:24 2021 +0000
- Revision:
- 1:33d6c6f43306
- Child:
- 2:92e2ae1b1886
one
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 | 1:33d6c6f43306 | 13 | int x; |
sgrsn | 1:33d6c6f43306 | 14 | int y; |
sgrsn | 1:33d6c6f43306 | 15 | int theta; |
sgrsn | 1:33d6c6f43306 | 16 | bool enable; |
sgrsn | 1:33d6c6f43306 | 17 | }; |
sgrsn | 1:33d6c6f43306 | 18 | struct MoveReply_t |
sgrsn | 1:33d6c6f43306 | 19 | { |
sgrsn | 1:33d6c6f43306 | 20 | bool valid; |
sgrsn | 1:33d6c6f43306 | 21 | }; |
sgrsn | 1:33d6c6f43306 | 22 | struct StopCommand_t |
sgrsn | 1:33d6c6f43306 | 23 | { |
sgrsn | 1:33d6c6f43306 | 24 | bool stop; |
sgrsn | 1:33d6c6f43306 | 25 | }; |
sgrsn | 1:33d6c6f43306 | 26 | struct StopReply_t |
sgrsn | 1:33d6c6f43306 | 27 | { |
sgrsn | 1:33d6c6f43306 | 28 | Pose2D pose; |
sgrsn | 1:33d6c6f43306 | 29 | bool is_stop; |
sgrsn | 1:33d6c6f43306 | 30 | }; |
sgrsn | 1:33d6c6f43306 | 31 | |
sgrsn | 1:33d6c6f43306 | 32 | UsusamaProtocol() |
sgrsn | 1:33d6c6f43306 | 33 | { |
sgrsn | 1:33d6c6f43306 | 34 | } |
sgrsn | 1:33d6c6f43306 | 35 | |
sgrsn | 1:33d6c6f43306 | 36 | static int encode_float2int(float val) |
sgrsn | 1:33d6c6f43306 | 37 | { |
sgrsn | 1:33d6c6f43306 | 38 | return (int)(val * 1000); |
sgrsn | 1:33d6c6f43306 | 39 | } |
sgrsn | 1:33d6c6f43306 | 40 | static float decode_int2float(int val) |
sgrsn | 1:33d6c6f43306 | 41 | { |
sgrsn | 1:33d6c6f43306 | 42 | return (float)val / 1000; |
sgrsn | 1:33d6c6f43306 | 43 | } |
sgrsn | 1:33d6c6f43306 | 44 | |
sgrsn | 1:33d6c6f43306 | 45 | public: |
sgrsn | 1:33d6c6f43306 | 46 | static const uint8_t COMMAND_MOVE = 0x04; |
sgrsn | 1:33d6c6f43306 | 47 | static const uint8_t COMMAND_POSE_X = 0x05; |
sgrsn | 1:33d6c6f43306 | 48 | static const uint8_t COMMAND_POSE_Y = 0x06; |
sgrsn | 1:33d6c6f43306 | 49 | static const uint8_t COMMAND_POSE_THETA = 0x07; |
sgrsn | 1:33d6c6f43306 | 50 | |
sgrsn | 1:33d6c6f43306 | 51 | static const uint8_t COMMAND_STOP = 0x08; |
sgrsn | 1:33d6c6f43306 | 52 | |
sgrsn | 1:33d6c6f43306 | 53 | static const uint8_t REPLY_MOVE = 0x04; |
sgrsn | 1:33d6c6f43306 | 54 | static const uint8_t REPLY_POSE_X = 0x05; |
sgrsn | 1:33d6c6f43306 | 55 | static const uint8_t REPLY_POSE_Y = 0x06; |
sgrsn | 1:33d6c6f43306 | 56 | static const uint8_t REPLY_POSE_THETA = 0x07; |
sgrsn | 1:33d6c6f43306 | 57 | static const uint8_t REPLY_STOP = 0x08; |
sgrsn | 1:33d6c6f43306 | 58 | static const uint8_t REPLY_STATE_X = 0x010; |
sgrsn | 1:33d6c6f43306 | 59 | static const uint8_t REPLY_STATE_Y = 0x011; |
sgrsn | 1:33d6c6f43306 | 60 | static const uint8_t REPLY_STATE_THETA = 0x12; |
sgrsn | 1:33d6c6f43306 | 61 | }; |
sgrsn | 1:33d6c6f43306 | 62 | |
sgrsn | 1:33d6c6f43306 | 63 | #endif |