Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: DISCO_L475VG_IOT01-Sensors-BSP
MX12.h
00001 #ifndef MBED_MX12_H 00002 #define MBED_MX12_H 00003 00004 #include "mbed.h" 00005 00006 #define MX12_DATA_MAX_SIZE 256 00007 #define MX12_MAX_MOTOR_COUNT 16 00008 00009 class MX12 { 00010 public: 00011 enum Status { 00012 InstructionError, 00013 OverloadError, 00014 ChecksumError, 00015 RangeError, 00016 OverheatingError, 00017 AngleLimitError, 00018 InputVoltageError, 00019 Unknown, 00020 Ok 00021 }; 00022 00023 enum ParsingState { 00024 Header, 00025 Id, 00026 Length, 00027 Data, 00028 Checksum, 00029 }; 00030 00031 enum SerialState { 00032 Writing, 00033 Reading, 00034 Idling, 00035 }; 00036 00037 struct Frame { 00038 unsigned char motorId; 00039 unsigned char length; 00040 unsigned char data[MX12_DATA_MAX_SIZE]; 00041 unsigned char valid; 00042 }; 00043 00044 struct StateContext { 00045 unsigned char headingCount; 00046 unsigned char dataCount; 00047 unsigned char checksum; 00048 }; 00049 00050 MX12(PinName tx, PinName rx, int baud=115200); 00051 00052 void SetSpeed(unsigned char mot_id, float speed); 00053 char IsAvailable(void); 00054 void rw(unsigned char mot_id, char adress, char len, char *data); 00055 void PrintSerial(); 00056 MX12::Status GetStatus(void); 00057 00058 private: 00059 UnbufferedSerial _mx12; 00060 MX12::ParsingState _pstate; 00061 MX12::SerialState _sstate; 00062 MX12::StateContext _scontext; 00063 MX12::Frame _current_frame; 00064 00065 unsigned char _answer; 00066 unsigned char _stored_frame[MX12_DATA_MAX_SIZE]; 00067 unsigned char _frame_pointer; 00068 00069 void _ReadCallback(); 00070 }; 00071 00072 #endif /* MBED_MX12_H */
Generated on Fri Aug 19 2022 12:19:20 by
1.7.2