Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039 #ifndef ARDUINO_INTERFACE_H_
00040 #define ARDUINO_INTERFACE_H_
00041
00042
00043 #include <ros/console.h>
00044
00045 #include <bosch_drivers_hardware_interface.hpp>
00046 #include <bosch_drivers_parameters.hpp>
00047
00048 #include <uniserial.hpp>
00049 #include "arduino_constants.hpp"
00050
00051 using namespace bosch_drivers_common;
00052
00053 class ArduinoInterface: public bosch_hardware_interface
00054 {
00070 public:
00071
00076 ArduinoInterface( std::string dev_port );
00080 ~ArduinoInterface();
00081
00082
00083 bool initialize();
00084
00096 ssize_t read( int device_address, interface_protocol protocol, int frequency, int* flags, uint8_t reg_address, uint8_t* data, size_t num_bytes );
00097
00109 ssize_t write( int device_address, interface_protocol protocol, int frequency, int* flags, uint8_t reg_address, uint8_t* data, size_t num_bytes );
00110
00116 bool supportedProtocol( interface_protocol protocol );
00117
00121 std::string getID();
00122
00123 private:
00124
00125 ssize_t arduinoSpiRead( uint8_t frequency, uint8_t flags, uint8_t reg_address, uint8_t* data, size_t num_bytes );
00126 ssize_t arduinoSpiWrite( uint8_t frequency, uint8_t flags, uint8_t reg_address, uint8_t* data, size_t num_bytes );
00127 ssize_t arduinoI2cRead( uint8_t device_address, uint32_t frequency, uint8_t reg_address, uint8_t* data, size_t num_bytes );
00128 ssize_t arduinoI2cWrite( uint8_t device_address, uint32_t frequency, uint8_t reg_address, uint8_t* data, size_t num_bytes );
00129 ssize_t arduinoPwmWrite( uint32_t frequency, uint8_t reg_address, uint8_t data );
00130 ssize_t arduinoGpioRead( uint8_t flags, uint8_t pin, uint8_t* value );
00131 ssize_t arduinoGpioWrite( uint8_t pin, bool value );
00132 ssize_t arduinoEncoderRead( int* pin, uint8_t* data );
00133 ssize_t arduinoEncoderWrite( int* flags, uint8_t* data );
00134 ssize_t arduinoAdcWrite( uint8_t* voltage );
00135 ssize_t arduinoAdcRead( uint8_t pin, uint8_t* data );
00136
00137 bool waitOnBytes( int num_bytes );
00138
00145 uniserial* serial_port_;
00146 std::string port_name_;
00147
00151 int file_descriptor_;
00152
00153
00160 int baud_rate_;
00161
00162 bool connection_failure_;
00163
00168 double timeout_;
00169
00174 bool is_initialized_;
00175
00185 uint8_t data_packet_;
00186
00190 uint16_t _reference_voltage;
00191
00192 };
00193 #endif //ARDUINO_INTERFACE_H_
00194