10 #ifndef CARMA_CANBUS_JANZCANIO_H
11 #define CARMA_CANBUS_JANZCANIO_H
117 JanzCanIo (
const char * deviceName,
bool terminate);
137 JanzCanIo (
const char* dev0,
bool term0,
const char* dev1,
bool term1);
140 ::std::vector< ::std::pair< ::std::string, bool > > NameTermPairVec;
147 JanzCanIo (
const NameTermPairVec & nameTermPairs );
268 timespec lastUpdateTime;
269 timespec lastOneMinUpdate;
283 pthread_mutex_t mutex;
294 typedef struct queueAccessStruct {
295 pthread_mutex_t mutex;
297 std::queue<carma::canbus::Message> messageQueue;
302 pthread_t updateThreadId_;
303 pthread_t writeThreadId_;
304 queueAccessType rxQueueAccessor_;
309 typedef std::map<busIdType, deviceType*> DeviceMap;
370 void initializeIpqs();
375 void createThreads();
387 bool waitForMessage(
double maxWaitInSeconds = -1.0);
392 static void waitCleanupHandler(
void *arg);
401 void processFastMessage(deviceType &dev);
409 void processPlainMessage(deviceType &dev);
434 void updateBusStatus();
446 static void *readThreadEntry(
void *arg);
455 void runReadThread(deviceType &dev);
461 static void *writeThreadEntry(
void *arg);
470 void runWriteThread();
475 static void *updateThreadEntry(
void *arg);
480 void runUpdateThread();
485 #endif // CARMA_CANBUS_JANZCANIO_H
void queueMessage(const Message &msg)
Place a carma::canbus::Message in the shared msg queue.
Declaration of carma::canbus::Message class.
Class to encapsulate a CAN message.
void echoAll(bool enable)
Echo all messages posted to the canbus back through the read interface.
carma::canbus::Message getMessage()
Retrieve a CAN message.
void setTimestampEchoLatency(int tsLatency, busIdType busId)
Set the timestamp echo latency for the specified bus.
Declaration of carma::canbus::CanIo interface.
IPQ (InterProcessQueue) provides a generic way for information to be shared between processes or thre...
std::map< busIdType, busStatusType > BusStatusMap
Map to hold bus status for multiple busses.
BusStatusMap getBusStatus() const
Get bus status for all busses.
IPQ (InterProcessQueue) provides a generic way for information to be shared between processes or thre...
void postMessage(const carma::canbus::Message &msg, carma::canbus::txPriorityType prio=carma::canbus::NORMAL)
Post a CAN message.
void clearReadQueue()
Clear the read message queue.
JanzCanIo()
Default constructor - for emulation only.
txPriorityType
CAN Tx priority type.
unsigned short busIdType
Carma Bus Id type.
This class encapsulate a Janz CAN message.
virtual ~JanzCanIo()
Destructor for JanzCanIo object.