Project

General

Profile

Revision 71

fixed packet parsing, remote fully operational

View differences:

mouse.c
49 49
    pp.rb       = pp.bytes[0] & RIGHT_BUTTON;
50 50
    pp.mb       = pp.bytes[0] & MIDDLE_BUTTON;
51 51
    pp.lb       = pp.bytes[0] & LEFT_BUTTON;
52
    pp.delta_x  = pp.bytes[1];
53
    pp.delta_y  = pp.bytes[2];
52
    pp.delta_x  = sign_extend_byte((packet_bytes[0] & MSB_X_DELTA) != 0, pp.bytes[1]);
53
    pp.delta_y  = sign_extend_byte((packet_bytes[0] & MSB_Y_DELTA) != 0, pp.bytes[2]);
54 54
    pp.x_ov     = pp.bytes[0] & X_OVERFLOW;
55 55
    pp.y_ov     = pp.bytes[0] & Y_OVERFLOW;
56 56
    return pp;
......
101 101
    }
102 102
    return TIMEOUT_ERROR;
103 103
}
104

  
105
int16_t (sign_extend_byte)(uint8_t sign_bit, uint8_t byte) {
106
    return (int16_t)(((0xFF * sign_bit)<<8) | byte);
107
}

Also available in: Unified diff