INFM HIL Interface
Interface between Artery simulation and DuTs
DuTConnector.h
1
26#ifndef SIM_TO_DUT_INTERFACE_DUTCONNECTOR_H
27#define SIM_TO_DUT_INTERFACE_DUTCONNECTOR_H
28
29#include <string>
30#include <iostream>
31#include <set>
32#include <memory>
33#include <boost/asio.hpp>
34#include "../DuT_Connectors/ConnectorInfo.h"
35#include "../Events/SimEvent.h"
36#include "../Utility/SharedQueue.h"
37#include "../Utility/PeriodicTimer.h"
38#include "ConnectorConfig.h"
39
49 public:
55 explicit DuTConnector(std::shared_ptr<SharedQueue<SimEvent>> queueDuTToSim,
57
62
69
74 void handleEvent(const SimEvent &simEvent);
75
81 void sendEventToSim(const SimEvent &simEvent);
82
83 protected:
90 virtual void handleEventSingle(const SimEvent &simEvent) {};
91
92 private:
93
94 // determine if an event needs to be processed
95 bool canHandleSimEvent(const SimEvent &simEvent);
96
97 bool isPeriodicEnabled(const SimEvent &simEvent);
98
99 void setupTimer(const SimEvent &simEvent);
100
101 void enablePeriodicSending(const std::string &operation, int periodMs);
102
103 std::shared_ptr<boost::asio::io_service> io;
104 std::thread timerRunner;;
105
106 std::set<std::string> processableOperations;
107
108 std::shared_ptr<SharedQueue<SimEvent>> queueDuTToSim;
109
110 std::map<std::string, std::unique_ptr<sim_interface::PeriodicTimer>> periodicTimers;
111 std::map<std::string, int> periodicIntervals;
112 std::unique_ptr<PeriodicTimer> aliveTimer;
113 bool periodicTimerEnabled;
114 };
115}
116
117#endif //SIM_TO_DUT_INTERFACE_DUTCONNECTOR_H
A thread save shared queue to communicate between multiple threads. The queue is a FIFO queue.
Definition: SharedQueue.h:40
Event object used to communicate between simulation and DuTs.
Definition: SimEvent.h:47
Configuration for a single DuTConnector
Definition: ConnectorConfig.h:43
Some basic information about the connector device.
Definition: ConnectorInfo.h:37
Connector implementing all kinds of DuT devices.
Definition: DuTConnector.h:48
void sendEventToSim(const SimEvent &simEvent)
Definition: DuTConnector.cpp:82
virtual void handleEventSingle(const SimEvent &simEvent)
Definition: DuTConnector.h:90
~DuTConnector()
Definition: DuTConnector.cpp:52
DuTConnector(std::shared_ptr< SharedQueue< SimEvent > > queueDuTToSim, const sim_interface::dut_connector::ConnectorConfig &config)
Definition: DuTConnector.cpp:33
void handleEvent(const SimEvent &simEvent)
Definition: DuTConnector.cpp:66
virtual ConnectorInfo getConnectorInfo()
Definition: DuTConnector.cpp:58
Definition: CANConnector.cpp:29