First Release

Dependencies:   USBDevice

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers In_MD6B.h Source File

In_MD6B.h

00001 #pragma once
00002 
00003 /** Class: In_MD6B
00004  *
00005  * For reading input from Sega Fighting pad 6B
00006  *
00007  * Example:
00008  *
00009  * > #include "mbed.h"
00010  *
00011  * > In_MD6B myFightingPad6B(p20, p19,... inputStates);
00012  */
00013 
00014 #include "mbed.h"
00015 #include "InputStatus.h"
00016 
00017 class In_MD6B
00018 {
00019 public:
00020     /** Constructor: In_MD6B
00021      *
00022      * Parameters:
00023      * pn_D0  - DigitalIn for 6B's D0 (D-Sub9 connector's pin1)
00024      * pn_D1  - DigitalIn for D1 (D-Sub9 pin2)
00025      * pn_D2  - DigitalIn for D2 (D-Sub9 pin3)
00026      * pn_D3  - DigitalIn for D3 (D-Sub9 pin4)
00027      * pn_D4  - DigitalIn for D4 (D-Sub9 pin6)
00028      * pn_D5  - DigitalIn for D5 (D-Sub9 pin9)
00029      * pn_SEL - DigitalOut for Select (D-Sub9 pin7)
00030      * inputStatus - The variable to store input status
00031      */
00032     In_MD6B(
00033         PinName pn_D0, PinName pn_D1, PinName pn_D2, PinName pn_D3, 
00034         PinName pn_D4, PinName pn_D5, PinName pn_SEL,
00035         InputStatus *inputStatus
00036     );
00037 
00038     void StartReading(void);
00039     void StopReading(void);
00040         
00041 private:
00042     // Private constants
00043     static const int READINGINTERVAL__MICROSEC = 5000;  // reading period microsec
00044     static const int SELSTATETIME__MICROSEC    = 2;     // Select信号の立ち上げ_立ち下げを行う長さ
00045                                                         // 短すぎると6Bが反応しない?
00046 
00047     // mbed pins
00048     DigitalIn   _IN_D0;
00049     DigitalIn   _IN_D1;
00050     DigitalIn   _IN_D2;
00051     DigitalIn   _IN_D3;
00052     DigitalIn   _IN_D4;
00053     DigitalIn   _IN_D5;
00054     DigitalOut  _OUT_SEL;
00055 
00056     // Variables
00057     InputStatus     *_InputStatus;
00058     volatile char   _ReadEnable;
00059     Ticker          _PollingTicker;
00060     volatile char   _PhaseData[8];
00061     
00062     
00063     // Private Method
00064     void Initialize(void);
00065     void EnablePolling(void);
00066     void DisablePolling(void);
00067     void PollingMethod(void);
00068 
00069     int  ReadPinValue(void);
00070 };