INTRODUCTION
Overview
Download and Install
Quick Start
Documentation
Publications

NONFRAMEWORK CODE
Driver Interfaces
Drivers
Libraries
Utilities

FRAMEWORK CODE
Interfaces
Components
Libraries
Utilities

Full Software Listings

DEVELOPER
Tutorials
Examples
Dev Guide
Dashboard

PEOPLE
Contributors
Users

SourceForge.net Logo
Project
Download
Mailing lists

 

         

canpeakrmpio.h

00001 /*
00002  * Orca-Robotics Project: Components for robotics 
00003  *               http://orca-robotics.sf.net/
00004  * Copyright (c) 2004-2009 Alex Brooks, Alexei Makarenko, Tobias Kaupp
00005  * Copyright (c) 2004-2009 Duncan Mercer
00006  *
00007  * This copy of Orca is licensed to you under the terms described in
00008  * the LICENSE file included in this distribution.
00009  *
00010  */
00011  
00012 #ifndef ORCA_CAN_PEAK_RMP_IO_H
00013 #define ORCA_CAN_PEAK_RMP_IO_H
00014 
00015 #include <libpcan.h>
00016 #include "../canpacket.h"
00017 #include "../rmpio.h"
00018 #include <hydroutil/uncopyable.h>
00019 #include <gbxsickacfr/gbxiceutilacfr/timer.h>
00020 
00021 namespace segwayrmpacfr {
00022 
00023 //************************************************************
00024 // A class to handle the Segway control using the peak
00025 // CAN card....
00026 // **NOTE That all function in the list may throw exceptions of 
00027 // the type hydrointerfaces::SegwayRmp::Exception
00028 
00029 // 
00030 // Author Duncan Mercer
00031 //  
00032  
00033 class CanPeakRmpIo : public RmpIo, public hydroutil::Uncopyable
00034 {
00035     
00036 public:
00037     // There should only be one instance of this class
00038     CanPeakRmpIo( const std::string & portName );
00039     ~CanPeakRmpIo();
00040     
00041     // from RmpIo
00042     virtual void enable(int debugLevel);
00043     virtual void disable(void);
00044     virtual RmpIo::RmpIoStatus readPacket( CanPacket &pkt );
00045     virtual void writePacket( const CanPacket &pkt );
00046       
00047 private:
00048     HANDLE portHandle_;
00049     bool isEnabled_;
00050     int debugLevel_;
00051 
00052     // Private methods to swap between the data representation for the PCMCIA card and
00053     // that used by the rest of the segwayrmp driver code....
00054     void convertCanPacketToPeak(TPCANMsg *peakCanOut, const CanPacket *pktIn);
00055     void convertPeakToCanPacket(CanPacket *pktOut, const TPCANMsg *peakCanIn);
00056 
00057     // String representation of the peak can card error
00058     std::string peakStatusToString(DWORD status);
00059     gbxiceutilacfr::Timer writeTimer_;
00060     
00061 }; // end of class declaration
00062 
00063 
00064 }  // end of namespace
00065 
00066 #endif
 

Webmaster: Tobias Kaupp (tobasco at users.sourceforge.net)


Generated for Orca Robotics by  doxygen 1.4.5