Decode Status Register into Human-Readable Flags

Code

#include <stdio.h>
#include <stdint.h>

void decode_status(uint8_t status_reg) {
    
static const char *FLAG_NAMES[8] = {
    "Power On",     // 0
    "Error",        // 1
    "Tx Ready",     // 2
    "Rx Ready",     // 3
    "Overheat",     // 4
    "Undervoltage", // 5
    "Timeout",      // 6
    "Reserved"      // 7
};

for (uint8_t i = 0; i < 8; i++)
{
    if (status_reg & (1u << i))
        printf("%s\n", FLAG_NAMES[i]);
}

}

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