Fork of PS/2 Keyboard lib.
Fork of PS2 by
Diff: PS2KB.h
- Revision:
- 0:62b62530a82f
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/PS2KB.h Thu Oct 11 20:15:09 2012 +0000 @@ -0,0 +1,67 @@ +/** + * PS/2 keyboard interface control class (Version 0.0.1) + * + * Copyright (C) 2010 Shinichiro Nakamura (CuBeatSystems) + * http://shinta.main.jp/ + */ + +#ifndef _PS2KB_H_ +#define _PS2KB_H_ + +#include "mbed.h" + +/** + * PS/2 keyboard interface control class. + */ +class PS2KB { +public: + /** + * Create. + * + * @param clk_pin Clock pin. + * @param dat_pin Data pin. + */ + PS2KB(PinName clk_pin, PinName dat_pin); + + /** + * Destory. + */ + virtual ~PS2KB(); + + /** + * Get a data from a PS/2 device. + * + * @return A data from a PS/2 device. + */ + virtual int getc(void); + + /** + * Set timeout. + * + * @param ms Timeout ms. + */ + virtual void setTimeout(int ms); + +private: + static const int RINGBUFSIZ = 256; + InterruptIn clk; /**< Interrupt input for CLK. */ + DigitalIn dat; /**< Digital input for DAT. */ + Timeout wdt; /**< Watch dog timer. */ + Timer tot; /**< Timeout timer. */ + int timeout; /**< Timeout[ms] for getc(). */ + + typedef struct { + int bitcnt; + int cStart; + int cEnd; + uint8_t buffer[RINGBUFSIZ]; + } work_t; + work_t work; + + void func_timeout(void); + void func_fall(void); + + void init_work(void); +}; + +#endif