set bit and clear bit only verifies that bit (#746)

This commit is contained in:
2023-05-25 10:35:17 +02:00
committed by GitHub
parent 6834294437
commit 0a7fd0a51a
14 changed files with 211 additions and 21 deletions

View File

@ -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); }