struct __attribute__((packed)) Attributs {
uint16_t typeset : 3; // Bits 0-2
uint16_t dw : 1; // Bit 3
uint16_t conceal : 1; // Bit 4
uint16_t dh : 1; // Bit 5
uint16_t insert : 1; // Bit 6
uint16_t inverse : 1; // Bit 7
uint16_t foreground : 2; // Bits 8-9
uint16_t flash : 1; // Bit 10
uint16_t background : 4; // Bits 12-15
} ;
Attributs attributs[25] ;
void prinlntBits(uint16_t value, uint8_t numBits) {
for (int8_t i = numBits - 1; i >= 0; i--) Serial.write(bitRead(value, i) ? '1' : '0');
Serial.println();
}
void printAttributs(const Attributs &attribut) {
Serial.print("typeset: "); prinlntBits(attribut.typeset, 3);
Serial.print("dw: "); prinlntBits(attribut.dw, 1);
Serial.print("conceal: "); prinlntBits(attribut.conceal, 1);
Serial.print("dh: "); prinlntBits(attribut.dh, 1);
Serial.print("insert: "); prinlntBits(attribut.insert, 1);
Serial.print("inverse: "); prinlntBits(attribut.inverse, 1);
Serial.print("foreground: "); prinlntBits(attribut.foreground, 2);
Serial.print("flash: "); prinlntBits(attribut.flash, 1);
Serial.print("background: "); prinlntBits(attribut.background, 4);
}
void definirAttributs(Attributs &attribut, uint8_t typeset, uint8_t dw, uint8_t conceal, uint8_t dh, uint8_t insert, uint8_t inverse, uint8_t foreground, uint8_t flash, uint8_t background) {
attribut.typeset = typeset; // Bits 0-2
attribut.dw = dw; // Bit 3
attribut.conceal = conceal; // Bit 4
attribut.dh = dh; // Bit 5
attribut.insert = insert; // Bit 6
attribut.inverse = inverse; // Bit 7
attribut.foreground = foreground; // Bits 8-9
attribut.flash = flash; // Bit 10
attribut.background = background; // Bits 12-15
}
void setup() {
Serial.begin(115200);
definirAttributs(attributs[5], 0b101, 0b0, 0b1, 0b1, 0b1, 0b0, 0b11, 0b0, 0b1011);
printAttributs(attributs[5]);
}
void loop() {}