#include <stdio.h>
#include <stdint.h>
void decode_status(uint8_t reg) {
const char *labels[] = {
"Power On", // Bit 0
"Error", // Bit 1
"Tx Ready", // Bit 2
"Rx Ready", // Bit 3
"Overheat", // Bit 4
"Undervoltage", // Bit 5
"Timeout", // Bit 6
"Reserved"
};
//printf("Status Register (0x%02X) Flags:\n", reg);
// int active_flags = 0;
for(int i = 0; i < 8; i++){
if(reg & (1 << i)){
printf("%s\n", labels[i]);
// active_flags++;
}
}
// if (active_flags == 0){
// printf("- No flags active\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