MercurySDK
Software development kit for Mercury digital servos
port_handler_linux.h
Go to the documentation of this file.
1 /*******************************************************************************
2 * Copyright (C) 2021 <Robot Articulation/code@robotarticulation.com>
3 *
4 * Source files modified to support the Mercury range of digital servo motors from Robot Articulation
5 *******************************************************************************/
6 
7 /*******************************************************************************
8 * Copyright 2017 ROBOTIS CO., LTD.
9 *
10 * Licensed under the Apache License, Version 2.0 (the "License");
11 * you may not use this file except in compliance with the License.
12 * You may obtain a copy of the License at
13 *
14 * http://www.apache.org/licenses/LICENSE-2.0
15 *
16 * Unless required by applicable law or agreed to in writing, software
17 * distributed under the License is distributed on an "AS IS" BASIS,
18 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19 * See the License for the specific language governing permissions and
20 * limitations under the License.
21 *******************************************************************************/
22 
23 /* Original author: Zerom, Leon (RyuWoon Jung) */
24 
25 #ifndef MERCURY_SDK_INCLUDE_MERCURY_SDK_LINUX_PORTHANDLERLINUX_H_
26 #define MERCURY_SDK_INCLUDE_MERCURY_SDK_LINUX_PORTHANDLERLINUX_H_
27 
28 #include "port_handler.h"
29 
30 namespace mercury
31 {
32 
37 {
38  private:
39  int socket_fd_;
40  int baudrate_;
41  char port_name_[100];
42 
43  double packet_start_time_;
44  double packet_timeout_;
45  double tx_time_per_byte;
46 
47  bool setupPort(const int cflag_baud);
48  bool setCustomBaudrate(int speed);
49  int getCFlagBaud(const int baudrate);
50 
51  double getCurrentTime();
52  double getTimeSinceStart();
53 
54  public:
59  PortHandlerLinux(const char *port_name);
60 
65  virtual ~PortHandlerLinux() { closePort(); }
66 
72  bool openPort();
73 
78  void closePort();
79 
84  void clearPort();
85 
91  void setPortName(const char *port_name);
92 
98  char *getPortName();
99 
108  bool setBaudRate(const int baudrate);
109 
115  int getBaudRate();
116 
124 
135  int readPort(uint8_t *packet, int length);
136 
147  int writePort(uint8_t *packet, int length);
148 
154  void setPacketTimeout(uint16_t packet_length);
155 
161  void setPacketTimeout(double msec);
162 
168 };
169 
170 }
171 
172 
173 #endif /* MERCURY_SDK_INCLUDE_MERCURY_SDK_LINUX_PORTHANDLERLINUX_H_ */
The class for port control that inherits PortHandlerLinux, PortHandlerWindows, PortHandlerMac,...
Definition: port_handler.h:56
The class for control port in Linux.
void clearPort()
The function that clears the port @description The function clears the port.
char * getPortName()
The function that returns port name set into the port handler @description The function returns curre...
bool setBaudRate(const int baudrate)
The function that sets baudrate into the port handler @description The function sets baudrate into th...
bool isPacketTimeout()
The function that checks whether packet timeout is occurred @description The function checks whether ...
void setPacketTimeout(uint16_t packet_length)
The function that sets and starts stopwatch for watching packet timeout @description The function set...
int getBytesAvailable()
The function that checks how much bytes are able to be read from the port buffer @description The fun...
void setPortName(const char *port_name)
The function that sets port name into the port handler @description The function sets port name into ...
bool openPort()
The function that opens the port @description The function calls PortHandlerLinux::setBaudRate() to o...
int getBaudRate()
The function that returns current baudrate set into the port handler @description The function return...
void closePort()
The function that closes the port @description The function closes the port.
int readPort(uint8_t *packet, int length)
The function that reads bytes from the port buffer @description The function gets bytes from the port...
PortHandlerLinux(const char *port_name)
The function that initializes instance of PortHandler and gets port_name @description The function in...
virtual ~PortHandlerLinux()
The function that closes the port @description The function calls PortHandlerLinux::closePort() to cl...
int writePort(uint8_t *packet, int length)
The function that writes bytes on the port buffer @description The function writes bytes on the port ...
void setPacketTimeout(double msec)
The function that sets and starts stopwatch for watching packet timeout @description The function set...