mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-11 04:17:15 +02:00
set bit and clear bit only verifies that bit (#746)
This commit is contained in:
@ -2747,29 +2747,18 @@ uint32_t Module::writeRegister(uint32_t addr, uint32_t val) {
|
||||
}
|
||||
|
||||
void Module::setBit(uint32_t addr, int n) {
|
||||
if (n < 0 || n > 31) {
|
||||
throw RuntimeError("Bit number " + std::to_string(n) + " out of Range");
|
||||
} else {
|
||||
uint32_t val = readRegister(addr);
|
||||
writeRegister(addr, val | 1 << n);
|
||||
}
|
||||
uint32_t args[2] = {addr, static_cast<uint32_t>(n)};
|
||||
sendToDetectorStop(F_SET_BIT, args, nullptr);
|
||||
}
|
||||
|
||||
void Module::clearBit(uint32_t addr, int n) {
|
||||
if (n < 0 || n > 31) {
|
||||
throw RuntimeError("Bit number " + std::to_string(n) + " out of Range");
|
||||
} else {
|
||||
uint32_t val = readRegister(addr);
|
||||
writeRegister(addr, val & ~(1 << n));
|
||||
}
|
||||
uint32_t args[2] = {addr, static_cast<uint32_t>(n)};
|
||||
sendToDetectorStop(F_CLEAR_BIT, args, nullptr);
|
||||
}
|
||||
|
||||
int Module::getBit(uint32_t addr, int n) {
|
||||
if (n < 0 || n > 31) {
|
||||
throw RuntimeError("Bit number " + std::to_string(n) + " out of Range");
|
||||
} else {
|
||||
return ((readRegister(addr) >> n) & 0x1);
|
||||
}
|
||||
uint32_t args[2] = {addr, static_cast<uint32_t>(n)};
|
||||
return sendToDetectorStop<int>(F_GET_BIT, args);
|
||||
}
|
||||
|
||||
void Module::executeFirmwareTest() { sendToDetector(F_SET_FIRMWARE_TEST); }
|
||||
|
Reference in New Issue
Block a user