#include <stdio.h>
#include <stdint.h>
#define BIT_IS_SET(reg, bit)(((reg) & (1 << (bit))) != 0)
void decode_status(uint8_t status_reg) {
uint8_t reg = status_reg;
if(BIT_IS_SET(reg, 0)){
printf("Power On\n");
}
if(BIT_IS_SET(reg, 1)){
printf("Error\n");
}
if(BIT_IS_SET(reg, 2)){
printf("Tx Ready\n");
}
if(BIT_IS_SET(reg, 3)){
printf("Rx Ready\n");
}
if(BIT_IS_SET(reg, 4)){
printf("Overheat\n");
}
if(BIT_IS_SET(reg, 5)){
printf("Undervoltage\n");
}
if(BIT_IS_SET(reg, 6)){
printf("Timeout\n");
}
if(BIT_IS_SET(reg, 7)){
printf("Reserved\n");
}
}
int main() {
uint8_t reg;
scanf("%hhu", ®);
decode_status(reg);
return 0;
}
Solving Approach
Input
13
Expected Output
Power On Tx Ready Rx Ready