PS/2

Dependents:   Synth Lab3Translator PS2_Keyboard CLI ... more

Committer:
shintamainjp
Date:
Wed Sep 29 22:15:03 2010 +0000
Revision:
2:a57bbbec16b1
Parent:
1:823c2798e398

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
shintamainjp 1:823c2798e398 1 /**
shintamainjp 1:823c2798e398 2 * PS/2 keyboard 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
shintamainjp 1:823c2798e398 8 #ifndef _PS2KB_H_
shintamainjp 1:823c2798e398 9 #define _PS2KB_H_
shintamainjp 1:823c2798e398 10
shintamainjp 1:823c2798e398 11 #include "mbed.h"
shintamainjp 1:823c2798e398 12
shintamainjp 1:823c2798e398 13 /**
shintamainjp 1:823c2798e398 14 * PS/2 keyboard interface control class.
shintamainjp 1:823c2798e398 15 */
shintamainjp 1:823c2798e398 16 class PS2KB {
shintamainjp 1:823c2798e398 17 public:
shintamainjp 1:823c2798e398 18 /**
shintamainjp 1:823c2798e398 19 * Create.
shintamainjp 1:823c2798e398 20 *
shintamainjp 1:823c2798e398 21 * @param clk_pin Clock pin.
shintamainjp 1:823c2798e398 22 * @param dat_pin Data pin.
shintamainjp 1:823c2798e398 23 */
shintamainjp 1:823c2798e398 24 PS2KB(PinName clk_pin, PinName dat_pin);
shintamainjp 1:823c2798e398 25
shintamainjp 1:823c2798e398 26 /**
shintamainjp 1:823c2798e398 27 * Destory.
shintamainjp 1:823c2798e398 28 */
shintamainjp 1:823c2798e398 29 virtual ~PS2KB();
shintamainjp 1:823c2798e398 30
shintamainjp 1:823c2798e398 31 /**
shintamainjp 1:823c2798e398 32 * Get a data from a PS/2 device.
shintamainjp 1:823c2798e398 33 *
shintamainjp 1:823c2798e398 34 * @return A data from a PS/2 device.
shintamainjp 1:823c2798e398 35 */
shintamainjp 1:823c2798e398 36 virtual int getc(void);
shintamainjp 1:823c2798e398 37
shintamainjp 1:823c2798e398 38 /**
shintamainjp 1:823c2798e398 39 * Set timeout.
shintamainjp 1:823c2798e398 40 *
shintamainjp 1:823c2798e398 41 * @param ms Timeout ms.
shintamainjp 1:823c2798e398 42 */
shintamainjp 1:823c2798e398 43 virtual void setTimeout(int ms);
shintamainjp 1:823c2798e398 44
shintamainjp 1:823c2798e398 45 private:
shintamainjp 1:823c2798e398 46 static const int RINGBUFSIZ = 256;
shintamainjp 1:823c2798e398 47 InterruptIn clk; /**< Interrupt input for CLK. */
shintamainjp 1:823c2798e398 48 DigitalIn dat; /**< Digital input for DAT. */
shintamainjp 1:823c2798e398 49 Timeout wdt; /**< Watch dog timer. */
shintamainjp 1:823c2798e398 50 Timer tot; /**< Timeout timer. */
shintamainjp 1:823c2798e398 51 int timeout; /**< Timeout[ms] for getc(). */
shintamainjp 1:823c2798e398 52
shintamainjp 1:823c2798e398 53 typedef struct {
shintamainjp 1:823c2798e398 54 int bitcnt;
shintamainjp 1:823c2798e398 55 int cStart;
shintamainjp 1:823c2798e398 56 int cEnd;
shintamainjp 1:823c2798e398 57 uint8_t buffer[RINGBUFSIZ];
shintamainjp 1:823c2798e398 58 } work_t;
shintamainjp 1:823c2798e398 59 work_t work;
shintamainjp 1:823c2798e398 60
shintamainjp 1:823c2798e398 61 void func_timeout(void);
shintamainjp 1:823c2798e398 62 void func_fall(void);
shintamainjp 1:823c2798e398 63
shintamainjp 1:823c2798e398 64 void init_work(void);
shintamainjp 1:823c2798e398 65 };
shintamainjp 1:823c2798e398 66
shintamainjp 1:823c2798e398 67 #endif