@@ -36,7 +36,7 @@ enum speed_grade_t {
3636#include < chrono>
3737using namespace std ::chrono;
3838
39- class MotorsWrapper ;
39+ class Servo ;
4040
4141class BraccioClass
4242{
@@ -53,25 +53,16 @@ class BraccioClass
5353 bool connected (int const id);
5454
5555
56- MotorsWrapper move (int const id);
57- MotorsWrapper get (int const id);
56+ Servo move (int const id);
57+ Servo get (int const id);
5858
5959 void moveTo (float const a1, float const a2, float const a3, float const a4, float const a5, float const a6);
6060 void positions (float * buffer);
6161 void positions (float & a1, float & a2, float & a3, float & a4, float & a5, float & a6);
6262
63-
64- void speed (speed_grade_t speed_grade) {
65- runTime = speed_grade;
66- }
67-
68- void disengage (int id = SmartServoClass::BROADCAST) {
69- servos.disengage (id);
70- }
71-
72- void engage (int id = SmartServoClass::BROADCAST) {
73- servos.engage (id);
74- }
63+ inline void speed (speed_grade_t const speed_grade) { runTime = speed_grade; }
64+ inline void disengage (int const id = SmartServoClass::BROADCAST) { servos.disengage (id); }
65+ inline void engage (int const id = SmartServoClass::BROADCAST) { servos.engage (id); }
7566
7667 int getKey ();
7768 void connectJoystickTo (lv_obj_t * obj);
@@ -173,46 +164,33 @@ class BraccioClass
173164
174165#define Braccio BraccioClass::get_default_instance ()
175166
176- class MotorsWrapper {
167+ class Servo
168+ {
177169public:
178- MotorsWrapper (SmartServoClass & servos, int idx) : _servos (servos), _idx (idx) {}
179- MotorsWrapper& to (float angle) {
180- _servos.setPosition (_idx, angle, _speed);
181- return *this ;
182- }
183- MotorsWrapper& in (std::chrono::milliseconds len) {
184- _servos.setTime (_idx, len.count ());
185- return *this ;
186- }
187- MotorsWrapper& move () {
188- return *this ;
189- }
190- float position () {
191- return _servos.getPosition (_idx);
192- }
193170
194- inline bool connected () { return Braccio.connected (_idx); }
171+ Servo (SmartServoClass & servos, int const id) : _servos (servos), _id (id) { }
172+
173+ inline void disengage () { _servos.disengage (_id); }
174+ inline void engage () { _servos.engage (_id); }
175+ inline bool engaged () { return _servos.isEngaged (_id); }
176+
177+ inline Servo & move () { return *this ; }
178+ inline Servo & to (float const angle) { _servos.setPosition (_id, angle, _speed); return *this ; }
179+ inline Servo & in (std::chrono::milliseconds const len) { _servos.setTime (_id, len.count ()); return *this ; }
180+
181+ inline float position () { return _servos.getPosition (_id); }
182+ inline bool connected () { return Braccio.connected (_id); }
183+ inline void info (Stream & stream) { _servos.getInfo (stream, _id); }
184+
185+ operator bool () { return connected (); }
195186
196- operator bool () {
197- return connected ();
198- }
199- void info (Stream& stream) {
200- _servos.getInfo (stream, _idx);
201- }
202- void disengage () {
203- _servos.disengage (_idx);
204- }
205- void engage () {
206- _servos.engage (_idx);
207- }
208- bool engaged () {
209- return _servos.isEngaged (_idx);
210- }
211187
212188private:
189+
213190 SmartServoClass & _servos;
214- int _idx;
215- int _speed = 100 ;
191+ int const _id;
192+ int const _speed = 100 ;
193+
216194};
217195
218196struct __callback__container__ {
0 commit comments