Conscience Core
CscRsInterface.h
Go to the documentation of this file.
1 //
2 // CscEncoderRs.h
3 // ConscienceRobotManager
4 //
5 // Created by Conscience_Victor on 31/03/2020.
6 // Copyright © 2020 IliesZaoui. All rights reserved.
7 //
8 
9 #ifndef CscEncoderRs_h
10 #define CscEncoderRs_h
11 
12 
13 #include <CscCommon.h>
14 #include "CoreObjects/CscState.h"
15 #include <chrono>
16 #include <thread>
17 
18 #define FileDesc int
19 
20 using std::vector, std::string, std::thread;
21 namespace this_thread = std::this_thread;
22 
24 private:
25  inline static ConscienceRsInterface* instance = nullptr;
26 
27  bool activated;
28 
29  float currentMotorsAngles[2] = {0,0};
30  float requestedMotorsAngles[2] = {0,0};
31  thread *updateStatusAndProcessActionThread = nullptr;
32  void refreshMotorsAngles();
33  int nbMotors = 2;
34 
35 
36  bool moto0Moving = false;
37  bool moto1Moving = false;
38 public:
39 
40  explicit ConscienceRsInterface();
41  bool setupSerialStream422(FileDesc &fd,const char * portName);
42  bool setupSerialStream485(FileDesc &fd,const char * portName);
43 
44  void writePelcoPMessage(int movement, float deltaAngleMotor0, float deltaAngleMotor1);
45  void processUnitSample();
46 
47  float getMotorAngle(int motorId);
48 
49  int processResultToRs485(CscState * state);
50 
51  int readFromRs485(const char * buffer, unsigned int buf_size);
52  bool writeToRs485(const char * buffer, unsigned int buf_size);
53 
54  bool isActivated();
55 
56  void closeSerial();
57  void queryMotorPosition(int motorId);
58 
59  virtual ~ConscienceRsInterface();
60 
63  void activate(const char* rs485PortName,const char* rs422PortName);
64  void disactivate();
65 
66  void reachMotorsAngles(float directionValues[2]);
67  int updateRequestedMotorsAngles(float motor0Speed, float motor1Speed);
68 
69  void stopAllMovments();
70 
71  const char * rs485PortName;
72  const char * rs422PortName;
73  int rs485Fd;
74  int rs422Fd;
75 
77  if (instance != NULL ) {
78  return instance;
79  }
80  return (instance = new ConscienceRsInterface());
81  }
82 
83  float getMotoValInPercent(int motorId);
84 
85  void emergencyStop();
86 };
87 
88 #endif /* CscEncoderRs_h */
ConscienceRsInterface::rs485PortName
const char * rs485PortName
Definition: CscRsInterface.h:71
ConscienceRsInterface::rs485Fd
int rs485Fd
Definition: CscRsInterface.h:73
ConscienceRsInterface::emergencyStop
void emergencyStop()
Definition: CscRsInterface.cpp:271
ConscienceRsInterface::ConscienceRsInterface
ConscienceRsInterface()
Definition: CscRsInterface.cpp:50
ConscienceRsInterface::activate
void activate(const char *rs485PortName, const char *rs422PortName)
Definition: CscRsInterface.cpp:275
ConscienceRsInterface::updateRequestedMotorsAngles
int updateRequestedMotorsAngles(float motor0Speed, float motor1Speed)
Definition: CscRsInterface.cpp:451
ConscienceRsInterface::rs422PortName
const char * rs422PortName
Definition: CscRsInterface.h:72
ConscienceRsInterface::setupSerialStream422
bool setupSerialStream422(FileDesc &fd, const char *portName)
Definition: CscRsInterface.cpp:306
ConscienceRsInterface::getInstance
static ConscienceRsInterface * getInstance()
Definition: CscRsInterface.h:76
ConscienceRsInterface::writeToRs485
bool writeToRs485(const char *buffer, unsigned int buf_size)
Definition: CscRsInterface.cpp:560
ConscienceRsInterface::~ConscienceRsInterface
virtual ~ConscienceRsInterface()
Definition: CscRsInterface.cpp:574
ConscienceRsInterface::closeSerial
void closeSerial()
Definition: CscRsInterface.cpp:569
ConscienceRsInterface::initUpdateStatusAndProcessActionThread
void initUpdateStatusAndProcessActionThread()
Definition: CscRsInterface.cpp:244
ConscienceRsInterface::processResultToRs485
int processResultToRs485(CscState *state)
Definition: CscRsInterface.cpp:413
ConscienceRsInterface::disactivate
void disactivate()
Definition: CscRsInterface.cpp:292
ConscienceRsInterface::getMotoValInPercent
float getMotoValInPercent(int motorId)
Definition: CscRsInterface.cpp:406
CscState
Definition: CscState.h:24
ConscienceRsInterface::queryMotorPosition
void queryMotorPosition(int motorId)
Definition: CscRsInterface.cpp:463
ConscienceRsInterface::getMotorAngle
float getMotorAngle(int motorId)
ConscienceRsInterface::readFromRs485
int readFromRs485(const char *buffer, unsigned int buf_size)
Definition: CscRsInterface.cpp:556
CscCommon.h
ConscienceRsInterface::isActivated
bool isActivated()
Definition: CscRsInterface.cpp:565
ConscienceRsInterface::writePelcoPMessage
void writePelcoPMessage(int movement, float deltaAngleMotor0, float deltaAngleMotor1)
Definition: CscRsInterface.cpp:158
ConscienceRsInterface::rs422Fd
int rs422Fd
Definition: CscRsInterface.h:74
CscState.h
FileDesc
#define FileDesc
Definition: CscRsInterface.h:18
ConscienceRsInterface::reachMotorsAngles
void reachMotorsAngles(float directionValues[2])
Definition: CscRsInterface.cpp:83
ConscienceRsInterface::updateStatusAndProcessAction
void updateStatusAndProcessAction()
Definition: CscRsInterface.cpp:63
ConscienceRsInterface::stopAllMovments
void stopAllMovments()
Definition: CscRsInterface.cpp:264
ConscienceRsInterface
Definition: CscRsInterface.h:23
ConscienceRsInterface::processUnitSample
void processUnitSample()
Definition: CscRsInterface.cpp:495
ConscienceRsInterface::setupSerialStream485
bool setupSerialStream485(FileDesc &fd, const char *portName)
Definition: CscRsInterface.cpp:355