Decode Status Register into Human-Readable Flags

Code

#include <stdio.h>
#include <stdint.h>
typedef struct
{
    uint8_t id;
    char flag[13];
}st_flag;
const st_flag flag_list[8] = {
    {0,"Power On"},
    {1,"Error"},
    {2,"Tx Ready"},
    {3,"Rx Ready"},
    {4,"Overheat"},
    {5,"Undervoltage"},
    {6,"Timeout"},
    {7,"Reserved"}
};
void decode_status(uint8_t status_reg) {
    for( int i = 0; i < 8; i++ ){
        if( (status_reg & (1 << i)) != 0 ){
            printf("%s\n", &(flag_list[i].flag));
        }
    }
}

int main() {
    uint8_t reg;
    scanf("%hhu", &reg);
    decode_status(reg);
    return 0;
}

Solving Approach

 

 

 

Upvote
Downvote
Loading...

Input

13

Expected Output

Power On Tx Ready Rx Ready