An example of using polling PS/2 using the modified mbed PS/2 library

Dependencies:   Servo mbed

Committer:
d3alek
Date:
Wed Mar 19 18:44:49 2014 +0000
Revision:
14:168aa965b1b4
Parent:
0:94cffad90b69
best achieved;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
d3alek 0:94cffad90b69 1 /**
d3alek 0:94cffad90b69 2 * PS/2 mouse interface control class (Version 0.0.1)
d3alek 0:94cffad90b69 3 *
d3alek 0:94cffad90b69 4 * Copyright (C) 2010 Shinichiro Nakamura (CuBeatSystems)
d3alek 0:94cffad90b69 5 * http://shinta.main.jp/
d3alek 0:94cffad90b69 6 */
d3alek 0:94cffad90b69 7 #ifndef _PS2_MOUSE_H_
d3alek 0:94cffad90b69 8 #define _PS2_MOUSE_H_
d3alek 0:94cffad90b69 9
d3alek 0:94cffad90b69 10 #include "PS2MS_INIT.h"
d3alek 0:94cffad90b69 11 #include "PS2MS.h"
d3alek 0:94cffad90b69 12
d3alek 0:94cffad90b69 13 class PS2Mouse {
d3alek 0:94cffad90b69 14 public:
d3alek 0:94cffad90b69 15 PS2Mouse(PinName clk_pin, PinName dat_pin);
d3alek 0:94cffad90b69 16 ~PS2Mouse();
d3alek 0:94cffad90b69 17 typedef struct {
d3alek 0:94cffad90b69 18 bool left;
d3alek 0:94cffad90b69 19 bool center;
d3alek 0:94cffad90b69 20 bool right;
d3alek 0:94cffad90b69 21 int x;
d3alek 0:94cffad90b69 22 int y;
d3alek 0:94cffad90b69 23 int z;
d3alek 0:94cffad90b69 24 } mouse_event_t;
d3alek 0:94cffad90b69 25 bool processing(mouse_event_t *p);
d3alek 0:94cffad90b69 26 private:
d3alek 0:94cffad90b69 27 PS2MS_INIT ps2ms_init;
d3alek 0:94cffad90b69 28 PS2MS ps2ms;
d3alek 0:94cffad90b69 29 typedef struct {
d3alek 0:94cffad90b69 30 union {
d3alek 0:94cffad90b69 31 uint8_t byte;
d3alek 0:94cffad90b69 32 struct {
d3alek 0:94cffad90b69 33 uint8_t btnLeft:1;
d3alek 0:94cffad90b69 34 uint8_t btnRight:1;
d3alek 0:94cffad90b69 35 uint8_t btnCenter:1;
d3alek 0:94cffad90b69 36 uint8_t always1:1;
d3alek 0:94cffad90b69 37 uint8_t signX:1;
d3alek 0:94cffad90b69 38 uint8_t signY:1;
d3alek 0:94cffad90b69 39 uint8_t overflowX:1;
d3alek 0:94cffad90b69 40 uint8_t overflowY:1;
d3alek 0:94cffad90b69 41 } bit;
d3alek 0:94cffad90b69 42 } byte1;
d3alek 0:94cffad90b69 43 union {
d3alek 0:94cffad90b69 44 uint8_t byte;
d3alek 0:94cffad90b69 45 } byte2;
d3alek 0:94cffad90b69 46 union {
d3alek 0:94cffad90b69 47 uint8_t byte;
d3alek 0:94cffad90b69 48 } byte3;
d3alek 0:94cffad90b69 49 union {
d3alek 0:94cffad90b69 50 uint8_t byte;
d3alek 0:94cffad90b69 51 struct {
d3alek 0:94cffad90b69 52 uint8_t value:7;
d3alek 0:94cffad90b69 53 uint8_t signZ:1;
d3alek 0:94cffad90b69 54 } bit;
d3alek 0:94cffad90b69 55 } byte4;
d3alek 0:94cffad90b69 56 } mouse_info_t;
d3alek 0:94cffad90b69 57 mouse_info_t mi;
d3alek 0:94cffad90b69 58 int cnt;
d3alek 0:94cffad90b69 59 };
d3alek 0:94cffad90b69 60
d3alek 0:94cffad90b69 61 #endif