4#define BOOST_TEST_MODULE testDoubleBufferAccessor
9#include <boost/test/unit_test.hpp>
21 device.
open(
"(dummy?map=simpleJsonFile.jmap)");
41 device.
open(
"(dummy?map=simpleJsonFile.jmap)");
49 auto future = std::async(std::launch::async, [&] { accessor1.read(); });
52 auto status = future.wait_for(std::chrono::milliseconds(200));
53 BOOST_CHECK(status == std::future_status::ready);
62 device.
open(
"(dummy?map=simpleJsonFile.jmap)");
69 auto future = std::async(std::launch::async, [&] { mpnAccessor1.read(); });
72 auto status = future.wait_for(std::chrono::milliseconds(200));
73 BOOST_CHECK(status == std::future_status::ready);
81 device.
open(
"(dummy?map=simpleJsonFile.jmap)");
105 accessor(
device.getOneDRegisterAccessor<uint32_t>(
"/DAQ/ASYNC_DBLBUF", 1, 0, {AccessMode::wait_for_new_data})),
115 if(newInactiveBuffer == 1) {
122 dummy->triggerInterrupt(1);
126 boost::shared_ptr<DummyBackend>
dummy;
134 static boost::shared_ptr<DummyBackend> openDeviceAndGetDummy(
Device& dev) {
135 dev.
open(
"(dummy?map=simpleJsonFile.jmap)");
136 auto backend = boost::dynamic_pointer_cast<DummyBackend>(dev.
getBackend());
138 BOOST_FAIL(
"Device did not produce a DummyBackend");
162 BOOST_CHECK_EQUAL(f.
accessor[0], 100);
169 BOOST_CHECK_EQUAL(f.
accessor[0], 200);
176 BOOST_CHECK_EQUAL(f.
accessor[0], 300);
183 BOOST_CHECK_EQUAL(f.
accessor[0], 400);
204 BOOST_CHECK_EQUAL(f.
accessor[0], 500);
208 BOOST_CHECK(f.
enable[2] == 1);
DummyRegisterAccessor< uint32_t > buffer0
DummyRegisterAccessor< uint32_t > enable
DummyRegisterAccessor< uint32_t > inactive
DummyRegisterAccessor< uint32_t > buffer1
boost::shared_ptr< DummyBackend > dummy
AsyncDoubleBufferFixture()
void firmwareFinishesBuffer(uint32_t value, uint32_t newInactiveBuffer)
OneDRegisterAccessor< uint32_t > accessor
Class allows to read/write registers from device.
void close()
Close the device.
boost::shared_ptr< DeviceBackend > getBackend()
Obtain the backend.
OneDRegisterAccessor< UserType > getOneDRegisterAccessor(const RegisterPath ®isterPathName, size_t numberOfWords=0, size_t wordOffsetInRegister=0, const AccessModeFlags &flags=AccessModeFlags({})) const
Get a OneDRegisterAccessor object for the given register.
void activateAsyncRead() noexcept
Activate asyncronous read for all transfer elements where AccessMode::wait_for_new_data is set.
void open(std::string const &aliasName)
Open a device by the given alias name from the DMAP file.
Register accessor for accessing single word or 1D array registers internally of a DummyBackend implem...
Accessor class to read and write registers transparently by using the accessor object like a vector o...
DataValidity dataValidity() const
Return current validity of the data.
bool readNonBlocking()
Read the next value, if available in the input buffer.
This header collects some conversion routines which should be useful both for ApplicationCore Python ...
@ faulty
The data is considered valid.
BOOST_AUTO_TEST_CASE(test_full_read_cycle)