Low-level communication class to access a CAN port from company PEAK (http://www.peak-system.com) More...
#include <canserial-peak.h>
Public Member Functions | |
cCANSerial_PEAK (unsigned long _baudrate, double _timeout, int _id_read, int _id_write, const char *device="/dev/pcanusb0") throw (cCANSerial_PEAKException*) | |
cCANSerial_PEAK (tDeviceHandle _peak_handle, double _timeout, int _id_read, int _id_write) throw (cCANSerial_PEAKException*) | |
void | Close (void) throw (cCANSerial_PEAKException*) |
Close the previously opened CAN PEAK interface port. | |
virtual char const * | GetErrorMessage (tErrorCode dw) |
virtual tErrorCode | GetErrorNumber () |
tDeviceHandle | GetHandle () |
bool | IsOpen (void) throw () |
Return true if interface to CAN PEAK is open. | |
void | Open (void) throw (cCANSerial_PEAKException*) |
ssize_t | Read (void *data, ssize_t size, long timeout_us, bool return_on_less_data) throw (cCANSerial_PEAKException*) |
void | SetTimeout (double _timeout) throw (cSerialBaseException*) |
set the timeout for next readline() calls (negative value means: no timeout, wait for ever) | |
int | write (char const *ptr, int len=0) throw (cCANSerial_PEAKException*) |
Write data to a previously opened port. | |
~cCANSerial_PEAK () | |
destructor: clean up | |
Protected Member Functions | |
int | BaudrateToBaudrateCode (unsigned long baudrate) throw (cCANSerial_PEAKException*) |
Translate a baudrate given as unsigned long into a baudrate code for struct termios. | |
Protected Attributes | |
unsigned long | baudrate |
the baudrate to use in bit/s | |
int | id_read |
the CAN ID used for reading | |
int | id_write |
the CAN ID used for writing | |
char | m_device [64] |
Private Member Functions | |
cCANSerial_PEAK (cCANSerial_PEAK const &other) | |
private copy constructor without implementation, since copying of cCANSerial_PEAK objects makes no sense | |
cCANSerial_PEAK & | operator= (cCANSerial_PEAK const &rhs) |
private copy assignment operator without implementation, since copying of cCANSerial_PEAK objects makes no sense | |
Private Attributes | |
cCANSerial_PEAK_Internal * | pimpl |
ptr to private, implementation specific members (using the 'Pimpl' (pointer to implementatino) design pattern) |
Low-level communication class to access a CAN port from company PEAK (http://www.peak-system.com)
Since SDHLibrary-C++ release 0.0.2.0 implementation specific parts of the access to PEAK CAN devices have been removed from the header file here in order to get rid of dependencies from the Pcan_usb.h. Specifically the peak_handle of type PEAK_HANDLE member was removed. You can still provide an existing handle for reuse on construction, but you must cast your HANDLE to a tDeviceHandle. You can get the internally used PEAK_HANDLE cast to a tDeviceHandle with GetHandle().
Definition at line 78 of file canserial-peak.h.
cCANSerial_PEAK::cCANSerial_PEAK | ( | cCANSerial_PEAK const & | other | ) | [private] |
private copy constructor without implementation, since copying of cCANSerial_PEAK objects makes no sense
cCANSerial_PEAK::cCANSerial_PEAK | ( | unsigned long | _baudrate, |
double | _timeout, | ||
int | _id_read, | ||
int | _id_write, | ||
const char * | device = "/dev/pcanusb0" |
||
) | throw (cCANSerial_PEAKException*) |
Constructor: constructs an object to communicate with an SDH via CAN bus using a PEAK CAN card.
_baudrate | - the baudrate in bit/s. Only some bitrates are valid: (1000000,800000,500000,250000,125000,100000,50000,20000,10000) |
_timeout | - the timeout in seconds (0 for no timeout = wait for ever) |
_id_read | - the CAN ID to use for reading (The SDH sends data on this ID) |
_id_write | - the CAN ID to use for writing (The SDH receives data on this ID) |
device | - the name of the char device to communicate with the PEAD driver (Needed on Linux only!) |
cCANSerial_PEAK::cCANSerial_PEAK | ( | tDeviceHandle | _peak_handle, |
double | _timeout, | ||
int | _id_read, | ||
int | _id_write | ||
) | throw (cCANSerial_PEAKException*) |
Constructor: constructs an object to communicate with an SDH via CAN bus using a PEAK CAN card by reusing an already existing handle (will work in Linux only).
destructor: clean up
int cCANSerial_PEAK::BaudrateToBaudrateCode | ( | unsigned long | baudrate | ) | throw (cCANSerial_PEAKException*) [protected] |
Translate a baudrate given as unsigned long into a baudrate code for struct termios.
void cCANSerial_PEAK::Close | ( | void | ) | throw (cCANSerial_PEAKException*) [virtual] |
Close the previously opened CAN PEAK interface port.
Implements cSerialBase.
virtual char const* cCANSerial_PEAK::GetErrorMessage | ( | tErrorCode | dw | ) | [virtual] |
Overloaded helper function that returns a PEAK error message for error code dw.
Reimplemented from cSerialBase.
virtual tErrorCode cCANSerial_PEAK::GetErrorNumber | ( | ) | [virtual] |
Overloaded helper function that returns the last Peak error number.
Reimplemented from cSerialBase.
bool cCANSerial_PEAK::IsOpen | ( | void | ) | throw () [virtual] |
Return true if interface to CAN PEAK is open.
Implements cSerialBase.
void cCANSerial_PEAK::Open | ( | void | ) | throw (cCANSerial_PEAKException*) [virtual] |
Open the device as configured by the parameters given to the constructor
Implements cSerialBase.
cCANSerial_PEAK& cCANSerial_PEAK::operator= | ( | cCANSerial_PEAK const & | rhs | ) | [private] |
private copy assignment operator without implementation, since copying of cCANSerial_PEAK objects makes no sense
ssize_t cCANSerial_PEAK::Read | ( | void * | data, |
ssize_t | size, | ||
long | timeout_us, | ||
bool | return_on_less_data | ||
) | throw (cCANSerial_PEAKException*) [virtual] |
Read data from device. This function waits until max_time_us us passed or the expected number of bytes are received via serial line. if (return_on_less_data is true (default value), the number of bytes that have been received are returned and the data is stored in data If the return_on_less_data is false, data is only read from serial line, if at least size bytes are available.
Implements cSerialBase.
void cCANSerial_PEAK::SetTimeout | ( | double | _timeout | ) | throw (cSerialBaseException*) [virtual] |
set the timeout for next readline() calls (negative value means: no timeout, wait for ever)
Reimplemented from cSerialBase.
int cCANSerial_PEAK::write | ( | char const * | ptr, |
int | len = 0 |
||
) | throw (cCANSerial_PEAKException*) [virtual] |
Write data to a previously opened port.
Write len bytes from *ptr to the CAN device
ptr | - pointer the byte array to send in memory |
len | - number of bytes to send |
Implements cSerialBase.
unsigned long cCANSerial_PEAK::baudrate [protected] |
the baudrate to use in bit/s
Definition at line 84 of file canserial-peak.h.
int cCANSerial_PEAK::id_read [protected] |
the CAN ID used for reading
Definition at line 87 of file canserial-peak.h.
int cCANSerial_PEAK::id_write [protected] |
the CAN ID used for writing
Definition at line 90 of file canserial-peak.h.
char cCANSerial_PEAK::m_device[64] [protected] |
Definition at line 98 of file canserial-peak.h.
cCANSerial_PEAK_Internal* cCANSerial_PEAK::pimpl [private] |
ptr to private, implementation specific members (using the 'Pimpl' (pointer to implementatino) design pattern)
Definition at line 102 of file canserial-peak.h.