PS2 keyboard

Dependents:   uVGAII_WebBrowser

Committer:
yaolu23
Date:
Wed Mar 12 16:15:14 2014 +0000
Revision:
0:33c8907eb27a
na

Who changed what in which revision?

UserRevisionLine numberNew contents of line
yaolu23 0:33c8907eb27a 1 /**
yaolu23 0:33c8907eb27a 2 * PS/2 keyboard interface control class (Version 0.0.1)
yaolu23 0:33c8907eb27a 3 *
yaolu23 0:33c8907eb27a 4 * Copyright (C) 2010 Shinichiro Nakamura (CuBeatSystems)
yaolu23 0:33c8907eb27a 5 * http://shinta.main.jp/
yaolu23 0:33c8907eb27a 6 */
yaolu23 0:33c8907eb27a 7 #ifndef _PS2KB_INIT_H_
yaolu23 0:33c8907eb27a 8 #define _PS2KB_INIT_H_
yaolu23 0:33c8907eb27a 9
yaolu23 0:33c8907eb27a 10 #include "mbed.h"
yaolu23 0:33c8907eb27a 11
yaolu23 0:33c8907eb27a 12 /**
yaolu23 0:33c8907eb27a 13 * PS2 keyboard initializer.
yaolu23 0:33c8907eb27a 14 */
yaolu23 0:33c8907eb27a 15 class PS2KB_INIT {
yaolu23 0:33c8907eb27a 16 public:
yaolu23 0:33c8907eb27a 17
yaolu23 0:33c8907eb27a 18 /**
yaolu23 0:33c8907eb27a 19 * Create.
yaolu23 0:33c8907eb27a 20 */
yaolu23 0:33c8907eb27a 21 PS2KB_INIT(PinName clk_pin, PinName dat_pin);
yaolu23 0:33c8907eb27a 22
yaolu23 0:33c8907eb27a 23 /**
yaolu23 0:33c8907eb27a 24 * Destroy.
yaolu23 0:33c8907eb27a 25 */
yaolu23 0:33c8907eb27a 26 ~PS2KB_INIT();
yaolu23 0:33c8907eb27a 27 private:
yaolu23 0:33c8907eb27a 28 DigitalInOut clk;
yaolu23 0:33c8907eb27a 29 DigitalInOut dat;
yaolu23 0:33c8907eb27a 30
yaolu23 0:33c8907eb27a 31 static const int MAX_RETRY = 1000000;
yaolu23 0:33c8907eb27a 32
yaolu23 0:33c8907eb27a 33 /**
yaolu23 0:33c8907eb27a 34 * Send a byte data.
yaolu23 0:33c8907eb27a 35 *
yaolu23 0:33c8907eb27a 36 * @param c a character.
yaolu23 0:33c8907eb27a 37 *
yaolu23 0:33c8907eb27a 38 * @return Negative value is a error number.
yaolu23 0:33c8907eb27a 39 */
yaolu23 0:33c8907eb27a 40 int send(uint8_t c);
yaolu23 0:33c8907eb27a 41
yaolu23 0:33c8907eb27a 42 /**
yaolu23 0:33c8907eb27a 43 * Receive a byte data.
yaolu23 0:33c8907eb27a 44 *
yaolu23 0:33c8907eb27a 45 * @return return a data. Negative value is a error number.
yaolu23 0:33c8907eb27a 46 */
yaolu23 0:33c8907eb27a 47 int recv(void);
yaolu23 0:33c8907eb27a 48
yaolu23 0:33c8907eb27a 49 /**
yaolu23 0:33c8907eb27a 50 * Wait a clock down edge.
yaolu23 0:33c8907eb27a 51 *
yaolu23 0:33c8907eb27a 52 * @return true if wait done.
yaolu23 0:33c8907eb27a 53 */
yaolu23 0:33c8907eb27a 54 bool waitClockDownEdge(void);
yaolu23 0:33c8907eb27a 55
yaolu23 0:33c8907eb27a 56 /**
yaolu23 0:33c8907eb27a 57 * Wait a clock up level.
yaolu23 0:33c8907eb27a 58 *
yaolu23 0:33c8907eb27a 59 * @return true if wait done.
yaolu23 0:33c8907eb27a 60 */
yaolu23 0:33c8907eb27a 61 bool waitClockUpLevel(void);
yaolu23 0:33c8907eb27a 62 };
yaolu23 0:33c8907eb27a 63
yaolu23 0:33c8907eb27a 64 #endif