#include <stdio.h>
#include <stdint.h>
#define SIZE 8
void decode_status(uint8_t status_reg)
{
const char* mapping[SIZE] = {
"Power On",
"Error",
"Tx Ready",
"Rx Ready",
"Overheat",
"Undervoltage",
"Timeout",
"Reserved"
};
for(uint8_t i = 0; i < 8; i++)
{
if(status_reg & (1<<i))
printf("%s\n", mapping[i]);
}
}
// void decode_status(uint8_t status_reg)
// {
// for(uint8_t i = 0; i < 8; i++)
// {
// if(status_reg & (1<<i))
// {
// switch(i){
// case 0:
// printf("Power On\n");
// break;
// case 1:
// printf("Error\n");
// break;
// case 2:
// printf("Tx Ready\n");
// break;
// case 3:
// printf("Rx Ready\n");
// break;
// case 4:
// printf("Overheat\n");
// break;
// case 5:
// printf("Undervoltage\n");
// break;
// case 6:
// printf("Timeout\n");
// break;
// case 7:
// printf("Reserved\n");
// break;
// default:
// printf("Nothing");
// break;
// }
// }
// }
// }
int main() {
uint8_t reg;
scanf("%hhu", ®);
decode_status(reg);
return 0;
}
Solving Approach
Input
13
Expected Output
Power On Tx Ready Rx Ready