Skip to content

Commit

Permalink
Merge pull request #7 from tonybaltovski/update
Browse files Browse the repository at this point in the history
Many changes that include:

- Added ability to change rate.
- Added ability to disable NED to ENU conversion.
- Created parameters for co-variance.
- Updated to Package format 2.
- Applied ROS lint changes.
- Switched to private node handle for parameters.
  • Loading branch information
Daniel Miller authored Jun 22, 2016
2 parents fa22000 + 9cbf481 commit 45c2fb8
Show file tree
Hide file tree
Showing 10 changed files with 569 additions and 508 deletions.
34 changes: 12 additions & 22 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
cmake_minimum_required(VERSION 2.8.3)
project(um7)

find_package(catkin REQUIRED COMPONENTS roscpp serial roslint sensor_msgs
message_generation)
find_package(catkin REQUIRED COMPONENTS roscpp serial sensor_msgs message_generation)

add_service_files(
FILES
Expand Down Expand Up @@ -31,7 +30,6 @@ add_executable(um7_driver src/main.cpp src/registers.cpp src/comms.cpp)
target_link_libraries(um7_driver ${catkin_LIBRARIES} )
add_dependencies(um7_driver um7_generate_messages_cpp)


#############
## Install ##
#############
Expand All @@ -40,28 +38,20 @@ install(TARGETS um7_driver
RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)

##########
## Docs ##
##########

file(GLOB LINT_SRCS
src/*.cpp
include/um6/registers.h
include/um6/comms.h)
roslint_cpp(${LINT_SRCS})
roslint_add_test()

#############
## Testing ##
#############
if(CATKIN_ENABLE_TESTING)
find_package(roslint REQUIRED)

catkin_add_gtest(${PROJECT_NAME}_test_registers test/test_registers.cpp src/registers.cpp)
catkin_add_gtest(${PROJECT_NAME}_test_comms test/test_comms.cpp src/comms.cpp src/registers.cpp)
if(TARGET ${PROJECT_NAME}_test_comms)
catkin_add_gtest(${PROJECT_NAME}_test_registers test/test_registers.cpp src/registers.cpp)
catkin_add_gtest(${PROJECT_NAME}_test_comms test/test_comms.cpp src/comms.cpp src/registers.cpp)
target_link_libraries(${PROJECT_NAME}_test_comms util ${catkin_LIBRARIES})
endif()
if(TARGET ${PROJECT_NAME}_test_registers)
target_link_libraries(${PROJECT_NAME}_test_registers util ${catkin_LIBRARIES})
endif()


file(GLOB LINT_SRCS
src/*.cpp
include/um7/registers.h
include/um7/comms.h)
roslint_cpp(${LINT_SRCS})
roslint_add_test()
endif()
68 changes: 36 additions & 32 deletions include/um7/comms.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
* * Neither the name of Clearpath Robotics, Inc. nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
Expand All @@ -27,22 +27,24 @@
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* Please send comments, questions, or patches to [email protected]
*
* Please send comments, questions, or patches to [email protected]
*
*/

#ifndef INCLUDE_UM7_COMMS_H_
#define INCLUDE_UM7_COMMS_H_
#ifndef UM7_COMMS_H_
#define UM7_COMMS_H_

#include <stdint.h>
#include <string>

namespace serial {
class Serial;
namespace serial
{
class Serial;
}

namespace um7 {
namespace um7
{

class SerialTimeout : public std::exception {};

Expand All @@ -51,37 +53,39 @@ class BadChecksum : public std::exception {};
class Registers;
class Accessor_;

class Comms {
public:
explicit Comms(serial::Serial* s) : serial_(s), first_spin_(true) {
}
class Comms
{
public:
explicit Comms(serial::Serial* s) : serial_(s), first_spin_(true)
{
}

/**
* Returns -1 if the serial port timed out before receiving a packet
* successfully, or if there was a bad checksum or any other error.
* Otherwise, returns the 8-bit register number of the successfully
* returned packet.
*/
int16_t receive(Registers* r);
/**
* Returns -1 if the serial port timed out before receiving a packet
* successfully, or if there was a bad checksum or any other error.
* Otherwise, returns the 8-bit register number of the successfully
* returned packet.
*/
int16_t receive(Registers* r);

void send(const Accessor_& a) const;
void send(const Accessor_& a) const;

bool sendWaitAck(const Accessor_& a);
bool sendWaitAck(const Accessor_& a);

static const uint8_t PACKET_HAS_DATA;
static const uint8_t PACKET_IS_BATCH;
static const uint8_t PACKET_BATCH_LENGTH_MASK;
static const uint8_t PACKET_BATCH_LENGTH_OFFSET;
static const uint8_t PACKET_HAS_DATA;
static const uint8_t PACKET_IS_BATCH;
static const uint8_t PACKET_BATCH_LENGTH_MASK;
static const uint8_t PACKET_BATCH_LENGTH_OFFSET;

static std::string checksum(const std::string& s);
static std::string checksum(const std::string& s);

static std::string message(uint8_t address, std::string data);
static std::string message(uint8_t address, std::string data);

private:
bool first_spin_;
serial::Serial* serial_;
private:
bool first_spin_;
serial::Serial* serial_;
};
}
} // namespace um7

#endif // INCLUDE_UM7_COMMS_H_
#endif // UM7_COMMS_H

Loading

0 comments on commit 45c2fb8

Please sign in to comment.