Add reg_bit_test function

This commit is contained in:
logicog
2026-03-08 20:55:50 +01:00
parent 87c161dc70
commit 14bc823024
2 changed files with 18 additions and 0 deletions
+1
View File
@@ -122,6 +122,7 @@ void print_reg(uint16_t reg);
uint8_t sfp_read_reg(uint8_t slot, uint8_t reg);
void reg_bit_set(uint16_t reg_addr, char bit);
void reg_bit_clear(uint16_t reg_addr, char bit);
uint8_t reg_bit_test(uint16_t reg_addr, char bit);
void sfr_mask_data(uint8_t n, uint8_t mask, uint8_t set);
void sfr_set_zero(void);
void reset_chip(void);
+17
View File
@@ -457,6 +457,23 @@ void reg_bit_clear(uint16_t reg_addr, char bit)
reg_write_m(reg_addr);
}
/*
* This sets a bit in the 32bit wide switch register reg_addr
*/
uint8_t reg_bit_test(uint16_t reg_addr, char bit)
{
uint8_t bit_mask = 1 << (bit & 0x7);
bit >>= 3;
reg_read_m(reg_addr);
bit_mask = bit_mask;
if (sfr_data[3-bit] & bit_mask)
return 1;
return 0;
}
/*
* This masks the sfr data fields, first &-ing with ~mask, then setting the bits in set
*/