#include <stdio.h>
#include <stdint.h>
#define IS_BIT_SET(REG, POS) ((REG) & (1 << POS))
#define FLAG0 "Power On"
#define FLAG1 "Error"
#define FLAG2 "Tx Ready"
#define FLAG3 "Rx Ready"
#define FLAG4 "Overheat"
#define FLAG5 "Undervoltage"
#define FLAG6 "Timeout"
#define FLAG7 "Reserved"
void decode_status(uint8_t status_reg) {
for(uint8_t i = 0; i < 8; i++){
if(IS_BIT_SET(status_reg, i)){
if(i == 0) printf("%s\n", FLAG0);
else if(i == 1) printf("%s\n", FLAG1);
else if(i == 2) printf("%s\n", FLAG2);
else if(i == 3) printf("%s\n", FLAG3);
else if(i == 4) printf("%s\n", FLAG4);
else if(i == 5) printf("%s\n", FLAG5);
else if(i == 6) printf("%s\n", FLAG6);
else if(i == 7) printf("%s\n", FLAG7);
}
}
}
int main() {
uint8_t reg;
scanf("%hhu", ®);
decode_status(reg);
return 0;
}Solving Approach
Input
13
Expected Output
Power On Tx Ready Rx Ready