diff --git a/XBOXOLD.cpp b/XBOXOLD.cpp index 7ba979d8..186621dc 100644 --- a/XBOXOLD.cpp +++ b/XBOXOLD.cpp @@ -339,15 +339,14 @@ uint8_t XBOXOLD::Poll() { void XBOXOLD::readReport() { ButtonState = readBuf[2]; - void *p = readBuf; for(uint8_t i = 0; i < sizeof (buttonValues); i++) buttonValues[i] = readBuf[i + 4]; // A, B, X, Y, BLACK, WHITE, L1, and R1 - hatValue[LeftHatX] = *(int16_t *)(p + 12); - hatValue[LeftHatY] = *(int16_t *)(p + 14); - hatValue[RightHatX] = *(int16_t *)(p + 16); - hatValue[RightHatY] = *(int16_t *)(p + 18); + hatValue[LeftHatX] = (int16_t)(((uint16_t)readBuf[13] << 8) | readBuf[12]); + hatValue[LeftHatY] = (int16_t)(((uint16_t)readBuf[15] << 8) | readBuf[14]); + hatValue[RightHatX] = (int16_t)(((uint16_t)readBuf[17] << 8) | readBuf[16]); + hatValue[RightHatY] = (int16_t)(((uint16_t)readBuf[19] << 8) | readBuf[18]); //Notify(PSTR("\r\nButtonState"), 0x80); //PrintHex(ButtonState, 0x80);