11 #ifndef SICK_ACFR_SERIALHANDLER_H
12 #define SICK_ACFR_SERIALHANDLER_H
14 #include <gbxsickacfr/messages.h>
15 #include <gbxserialacfr/serial.h>
16 #include <gbxsickacfr/gbxiceutilacfr/thread.h>
17 #include <gbxsickacfr/gbxiceutilacfr/buffer.h>
18 #include <gbxsickacfr/gbxserialdeviceacfr/serialdevicehandler.h>
19 #include <gbxsickacfr/gbxserialdeviceacfr/stickinbuffercallback.h>
21 namespace gbxsickacfr {
26 gbxserialdeviceacfr::RxMsgPtr parseBuffer(
const std::vector<char> &buffer,
29 LmsRxMsgPtr lmsRxMsg = parseBufferForRxMsgs( (
const uChar*)&(buffer[0]),
41 TimedLmsRxMsg(
int s,
int us,
const LmsRxMsgPtr &r )
42 : timeStampSec(s), timeStampUsec(us), msg(r) {}
64 SerialHandler(
const std::string &dev,
69 void send(
const std::vector<uChar> &telegram )
70 { serialDeviceHandler_->send( (
const char*)&(telegram[0]), telegram.size() ); }
72 void setBaudRate(
int baudRate )
73 { serialDeviceHandler_->setBaudRate( baudRate ); }
77 int getNextRxMsg( TimedLmsRxMsg &timedRxMsg,
int maxWaitMs )
80 int ret = bufferCallback_.rxMsgBuffer().getAndPopWithTimeout( genericTimedRxMsg, maxWaitMs );
83 timedRxMsg.timeStampSec = genericTimedRxMsg.timeStampSec;
84 timedRxMsg.timeStampUsec = genericTimedRxMsg.timeStampUsec;
87 timedRxMsg.msg = LmsRxMsgPtr::dynamicCast( genericTimedRxMsg.msg );
94 RxMsgParser rxMsgParser_;
95 gbxserialdeviceacfr::StickInBufferCallback bufferCallback_;