AcquisitionDevice: Set cancel data collection bit before starting new data collection
This commit is contained in:
@@ -80,6 +80,8 @@ void AcquisitionDevice::PrepareAction(const DiffractionExperiment &experiment) {
|
||||
}
|
||||
|
||||
void AcquisitionDevice::StartAction(const DiffractionExperiment &experiment) {
|
||||
HW_SetCancelDataCollectionBit();
|
||||
|
||||
if (!HW_IsIdle())
|
||||
throw(JFJochException(JFJochExceptionCategory::AcquisitionDeviceError,
|
||||
"Hardware action running prior to start of data acquisition"));
|
||||
|
||||
@@ -13,12 +13,16 @@ void MockAcquisitionDevice::HW_WriteActionRegister(const ActionConfig *job) {
|
||||
memcpy(&cfg, job, sizeof(ActionConfig));
|
||||
}
|
||||
|
||||
void MockAcquisitionDevice::HW_StartAction() {}
|
||||
void MockAcquisitionDevice::HW_StartAction() {
|
||||
idle = false;
|
||||
}
|
||||
|
||||
void MockAcquisitionDevice::HW_SetCancelDataCollectionBit() {
|
||||
if (logger)
|
||||
logger->Info("MockAcquisitionDevice cancelling " + std::to_string(data_stream));
|
||||
Terminate();
|
||||
if (!idle) {
|
||||
if (logger)
|
||||
logger->Info("MockAcquisitionDevice cancelling " + std::to_string(data_stream));
|
||||
Terminate();
|
||||
}
|
||||
}
|
||||
|
||||
bool MockAcquisitionDevice::HW_IsIdle() const {
|
||||
@@ -65,7 +69,7 @@ void MockAcquisitionDevice::Terminate() {
|
||||
.type = Completion::Type::End,
|
||||
.frame_number = current_handle * 128
|
||||
});
|
||||
work_completion_queue.Put(Completion{.type = Completion::Type::Start});
|
||||
idle = true;
|
||||
}
|
||||
|
||||
uint64_t MockAcquisitionDevice::HW_GetMACAddress() const {
|
||||
|
||||
@@ -12,6 +12,8 @@ class MockAcquisitionDevice : public AcquisitionDevice {
|
||||
uint32_t max_handle = 0;
|
||||
ActionConfig cfg;
|
||||
|
||||
bool idle = true;
|
||||
|
||||
void SendCompletion(uint32_t handle, uint16_t module_number, uint64_t frame_number);
|
||||
constexpr static const uint32_t frames_int_pkt_gen = 1;
|
||||
void HW_ReadActionRegister(ActionConfig *job) override;
|
||||
|
||||
Reference in New Issue
Block a user