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.

Dependents:   MbedConsole

Fork of PS2 by Shinichiro Nakamura

Committer:
shintamainjp
Date:
Wed Sep 29 14:11:44 2010 +0000
Revision:
1:823c2798e398
Child:
2:a57bbbec16b1

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
shintamainjp 1:823c2798e398 1 /**
shintamainjp 1:823c2798e398 2 * PS/2 mouse interface control class (Version 0.0.1)
shintamainjp 1:823c2798e398 3 *
shintamainjp 1:823c2798e398 4 * Copyright (C) 2010 Shinichiro Nakamura (CuBeatSystems)
shintamainjp 1:823c2798e398 5 * http://shinta.main.jp/
shintamainjp 1:823c2798e398 6 */
shintamainjp 1:823c2798e398 7 #include "PS2Mouse.h"
shintamainjp 1:823c2798e398 8
shintamainjp 1:823c2798e398 9 PS2Mouse::PS2Mouse(PinName clk_pin, PinName dat_pin)
shintamainjp 1:823c2798e398 10 : ps2ms_init(clk_pin, dat_pin), ps2ms(clk_pin, dat_pin) {
shintamainjp 1:823c2798e398 11 cnt = 0;
shintamainjp 1:823c2798e398 12 }
shintamainjp 1:823c2798e398 13
shintamainjp 1:823c2798e398 14 PS2Mouse::~PS2Mouse() {
shintamainjp 1:823c2798e398 15 }
shintamainjp 1:823c2798e398 16
shintamainjp 1:823c2798e398 17 bool PS2Mouse::processing(mouse_event_t *p) {
shintamainjp 1:823c2798e398 18 bool emit = false;
shintamainjp 1:823c2798e398 19 const int c = ps2ms.getc();
shintamainjp 1:823c2798e398 20 if (0 <= c) {
shintamainjp 1:823c2798e398 21 switch (cnt % 4) {
shintamainjp 1:823c2798e398 22 case 0:
shintamainjp 1:823c2798e398 23 mi.byte1.byte = c;
shintamainjp 1:823c2798e398 24 break;
shintamainjp 1:823c2798e398 25 case 1:
shintamainjp 1:823c2798e398 26 mi.byte2.byte = c;
shintamainjp 1:823c2798e398 27 break;
shintamainjp 1:823c2798e398 28 case 2:
shintamainjp 1:823c2798e398 29 mi.byte3.byte = c;
shintamainjp 1:823c2798e398 30 break;
shintamainjp 1:823c2798e398 31 case 3:
shintamainjp 1:823c2798e398 32 mi.byte4.byte = c;
shintamainjp 1:823c2798e398 33 #if 0
shintamainjp 1:823c2798e398 34 printf("[%c:%c:%c] - (%4d,%4d) - <%d:%3d>\n",
shintamainjp 1:823c2798e398 35 mi.byte1.bit.btnLeft ? 'o' : ' ',
shintamainjp 1:823c2798e398 36 mi.byte1.bit.btnMiddle ? 'o' : ' ',
shintamainjp 1:823c2798e398 37 mi.byte1.bit.btnRight ? 'o' : ' ',
shintamainjp 1:823c2798e398 38 mi.byte1.bit.signX ? (-256 + mi.byte2.byte) : mi.byte2.byte,
shintamainjp 1:823c2798e398 39 mi.byte1.bit.signY ? (-256 + mi.byte3.byte) : mi.byte3.byte,
shintamainjp 1:823c2798e398 40 mi.byte4.bit.signZ,
shintamainjp 1:823c2798e398 41 mi.byte4.bit.signZ ? (-128 + mi.byte4.bit.value) : mi.byte4.bit.value);
shintamainjp 1:823c2798e398 42 #endif
shintamainjp 1:823c2798e398 43 p->left = mi.byte1.bit.btnLeft ? true : false;
shintamainjp 1:823c2798e398 44 p->center = mi.byte1.bit.btnCenter ? true : false;
shintamainjp 1:823c2798e398 45 p->right = mi.byte1.bit.btnRight ? true : false;
shintamainjp 1:823c2798e398 46 p->x = mi.byte1.bit.signX ? (-256 + mi.byte2.byte) : mi.byte2.byte;
shintamainjp 1:823c2798e398 47 p->y = mi.byte1.bit.signY ? (-256 + mi.byte3.byte) : mi.byte3.byte;
shintamainjp 1:823c2798e398 48 p->z = mi.byte4.bit.signZ ? (-128 + mi.byte4.bit.value) : mi.byte4.bit.value;
shintamainjp 1:823c2798e398 49 emit = true;
shintamainjp 1:823c2798e398 50 break;
shintamainjp 1:823c2798e398 51 }
shintamainjp 1:823c2798e398 52 cnt++;
shintamainjp 1:823c2798e398 53 }
shintamainjp 1:823c2798e398 54 return emit;
shintamainjp 1:823c2798e398 55 }