A version of the PS/2 library customized for MbedConsole. Also includes a few things that make it's behavior easier to control and a few bug fixes.
Fork of PS2 by
Diff: PS2Mouse.cpp
- Revision:
- 1:823c2798e398
- Child:
- 2:a57bbbec16b1
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/PS2Mouse.cpp Wed Sep 29 14:11:44 2010 +0000 @@ -0,0 +1,55 @@ +/** + * PS/2 mouse interface control class (Version 0.0.1) + * + * Copyright (C) 2010 Shinichiro Nakamura (CuBeatSystems) + * http://shinta.main.jp/ + */ +#include "PS2Mouse.h" + +PS2Mouse::PS2Mouse(PinName clk_pin, PinName dat_pin) + : ps2ms_init(clk_pin, dat_pin), ps2ms(clk_pin, dat_pin) { + cnt = 0; +} + +PS2Mouse::~PS2Mouse() { +} + +bool PS2Mouse::processing(mouse_event_t *p) { + bool emit = false; + const int c = ps2ms.getc(); + if (0 <= c) { + switch (cnt % 4) { + case 0: + mi.byte1.byte = c; + break; + case 1: + mi.byte2.byte = c; + break; + case 2: + mi.byte3.byte = c; + break; + case 3: + mi.byte4.byte = c; +#if 0 + printf("[%c:%c:%c] - (%4d,%4d) - <%d:%3d>\n", + mi.byte1.bit.btnLeft ? 'o' : ' ', + mi.byte1.bit.btnMiddle ? 'o' : ' ', + mi.byte1.bit.btnRight ? 'o' : ' ', + mi.byte1.bit.signX ? (-256 + mi.byte2.byte) : mi.byte2.byte, + mi.byte1.bit.signY ? (-256 + mi.byte3.byte) : mi.byte3.byte, + mi.byte4.bit.signZ, + mi.byte4.bit.signZ ? (-128 + mi.byte4.bit.value) : mi.byte4.bit.value); +#endif + p->left = mi.byte1.bit.btnLeft ? true : false; + p->center = mi.byte1.bit.btnCenter ? true : false; + p->right = mi.byte1.bit.btnRight ? true : false; + p->x = mi.byte1.bit.signX ? (-256 + mi.byte2.byte) : mi.byte2.byte; + p->y = mi.byte1.bit.signY ? (-256 + mi.byte3.byte) : mi.byte3.byte; + p->z = mi.byte4.bit.signZ ? (-128 + mi.byte4.bit.value) : mi.byte4.bit.value; + emit = true; + break; + } + cnt++; + } + return emit; +}