#include <stdio.h>
#include <stdint.h>
#define MCP4901_SPI_MASK_DATA 0x0FF0
static inline void mcpSetData(uint16_t* mcp, uint8_t value) {
*mcp &= ~MCP4901_SPI_MASK_DATA; // Clear out the middle bits
*mcp |= ((uint16_t)value) << 4; // Put in the value in the middle
}
int main(void) {
uint16_t m = 0xd12d;
mcpSetData(&m, 0xea);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRpbnQuaD4KCiNkZWZpbmUgTUNQNDkwMV9TUElfTUFTS19EQVRBICAgICAgICAgICAgICAgMHgwRkYwCgpzdGF0aWMgaW5saW5lIHZvaWQgbWNwU2V0RGF0YSh1aW50MTZfdCogbWNwLCB1aW50OF90IHZhbHVlKSB7CiAgICAqbWNwICY9IH5NQ1A0OTAxX1NQSV9NQVNLX0RBVEE7IC8vIENsZWFyIG91dCB0aGUgbWlkZGxlIGJpdHMKICAgICptY3AgfD0gKCh1aW50MTZfdCl2YWx1ZSkgPDwgNDsgLy8gUHV0IGluIHRoZSB2YWx1ZSBpbiB0aGUgbWlkZGxlCn0KCmludCBtYWluKHZvaWQpIHsKCXVpbnQxNl90IG0gPSAweGQxMmQ7CgltY3BTZXREYXRhKCZtLCAweGVhKTsKCXByaW50ZigiJTB4XG4iLCBtKTsKCXJldHVybiAwOwp9Cg==