send back the result of the SPI write (#1387)
All checks were successful
Build on RHEL9 / build (push) Successful in 3m21s
Build on RHEL8 / build (push) Successful in 4m47s
Run Simulator Tests on local RHEL9 / build (push) Successful in 14m39s
Build on local RHEL9 / build (push) Successful in 1m25s
Run Simulator Tests on local RHEL8 / build (push) Successful in 16m57s
Build on local RHEL8 / build (push) Successful in 3m32s

This commit is contained in:
Erik Fröjdh
2026-02-09 13:50:35 +01:00
committed by GitHub
parent 0992c7ae4c
commit 3f4df445f1
6 changed files with 22 additions and 12 deletions

View File

@@ -2961,9 +2961,9 @@ Result<std::vector<uint8_t>> Detector::readSpi(int chip_id, int register_id,
n_bytes);
}
void Detector::writeSpi(int chip_id, int register_id,
Result<std::vector<uint8_t>> Detector::writeSpi(int chip_id, int register_id,
const std::vector<uint8_t> &data, Positions pos){
pimpl->Parallel(&Module::writeSpi, pos, chip_id, register_id, data);
return pimpl->Parallel(&Module::writeSpi, pos, chip_id, register_id, data);
}

View File

@@ -4097,7 +4097,7 @@ std::vector<uint8_t> Module::readSpi(int chip_id, int register_id,
}
void Module::writeSpi(int chip_id, int register_id,
std::vector<uint8_t> Module::writeSpi(int chip_id, int register_id,
const std::vector<uint8_t> &data){
auto client = DetectorSocket(shm()->hostname, shm()->controlPort);
client.Send(F_SPI_WRITE);
@@ -4113,6 +4113,11 @@ void Module::writeSpi(int chip_id, int register_id,
<< " returned error: " << client.readErrorMessage();
throw DetectorError(os.str());
}
// Read the output from the SPI write. This contains the data before the write.
std::vector<uint8_t> ret(data.size());
client.Receive(ret);
return ret;
}
} // namespace sls

View File

@@ -610,7 +610,7 @@ class Module : public virtual slsDetectorDefs {
std::vector<uint8_t> readSpi(int chip_id, int register_id,
int n_bytes) const;
void writeSpi(int chip_id, int register_id, const std::vector<uint8_t> &data);
std::vector<uint8_t> writeSpi(int chip_id, int register_id, const std::vector<uint8_t> &data);
private:
std::string getReceiverLongVersion() const;