111 lines
2.1 KiB
C++
111 lines
2.1 KiB
C++
#pragma once
|
|
#include "debugtrace.hpp"
|
|
#include "lasp_uldaq_common.h"
|
|
#include <algorithm>
|
|
#include <cassert>
|
|
#include <chrono>
|
|
#include <iostream>
|
|
#include <stdexcept>
|
|
#include <thread>
|
|
#include <vector>
|
|
#include "lasp_daq.h"
|
|
|
|
using std::atomic;
|
|
using std::cerr;
|
|
using std::endl;
|
|
using rte = std::runtime_error;
|
|
|
|
class InBufHandler;
|
|
class OutBufHandler;
|
|
|
|
/** \addtogroup device
|
|
* @{
|
|
* \addtogroup uldaq
|
|
*/
|
|
|
|
/**
|
|
* @brief Data translation DT9837A Daq device.
|
|
*/
|
|
class DT9837A : public Daq {
|
|
|
|
DaqDeviceHandle _handle = 0;
|
|
std::mutex _daqmutex;
|
|
|
|
/**
|
|
* @brief The thread that is doing I/O with UlDaq
|
|
*/
|
|
std::thread _thread;
|
|
|
|
|
|
/**
|
|
* @brief Flag indicating the thread to stop processing.
|
|
*/
|
|
atomic<bool> _stopThread{false};
|
|
/**
|
|
* @brief Storage for exchanging information on the stream
|
|
*/
|
|
atomic<StreamStatus> _streamStatus;
|
|
|
|
const us _nFramesPerBlock;
|
|
|
|
/**
|
|
* @brief The function that is running in a thread
|
|
*
|
|
* @param inCallback
|
|
* @param outcallback
|
|
*/
|
|
void threadFcn(InDaqCallback inCallback, OutDaqCallback outcallback);
|
|
|
|
/**
|
|
* @brief Obtain a handle to the underlying device
|
|
*
|
|
* @return Handle
|
|
*/
|
|
DaqDeviceHandle getHandle() const { return _handle; }
|
|
/**
|
|
* @brief Perform several sanity checks
|
|
*/
|
|
void sanityChecks() const;
|
|
public:
|
|
|
|
/**
|
|
* @brief Create a DT9837A instance.
|
|
*
|
|
* @param devinfo DeviceInfo to connect to
|
|
* @param config DaqConfiguration settings
|
|
*/
|
|
DT9837A(const UlDaqDeviceInfo &devinfo, const DaqConfiguration &config);
|
|
|
|
virtual ~DT9837A();
|
|
|
|
/**
|
|
* @brief Returns true when the stream is running
|
|
*
|
|
* @return as above stated
|
|
*/
|
|
bool isRunning() const;
|
|
|
|
/**
|
|
* @brief Stop the data-acquisition
|
|
*/
|
|
void stop() override final;
|
|
|
|
friend class InBufHandler;
|
|
friend class OutBufHandler;
|
|
|
|
virtual void start(InDaqCallback inCallback,
|
|
OutDaqCallback outCallback) override final;
|
|
|
|
/**
|
|
* @brief Obtain copy of stream status (thread-safe function)
|
|
*
|
|
* @return StreamStatus object
|
|
*/
|
|
virtual StreamStatus getStreamStatus() const override {
|
|
return _streamStatus;
|
|
}
|
|
};
|
|
|
|
/** @} */
|
|
/** @} */
|