First Release

Dependencies:   USBDevice

Committer:
sankichi
Date:
Sat Jul 27 14:19:33 2013 +0000
Revision:
1:6c392ebcd4d4
Parent:
0:e1265f6b3565
First release

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sankichi 0:e1265f6b3565 1 #pragma once
sankichi 0:e1265f6b3565 2
sankichi 0:e1265f6b3565 3 /** Class: In_MD6B
sankichi 0:e1265f6b3565 4 *
sankichi 0:e1265f6b3565 5 * For reading input from Sega Fighting pad 6B
sankichi 0:e1265f6b3565 6 *
sankichi 0:e1265f6b3565 7 * Example:
sankichi 0:e1265f6b3565 8 *
sankichi 0:e1265f6b3565 9 * > #include "mbed.h"
sankichi 0:e1265f6b3565 10 *
sankichi 0:e1265f6b3565 11 * > In_MD6B myFightingPad6B(p20, p19,... inputStates);
sankichi 0:e1265f6b3565 12 */
sankichi 0:e1265f6b3565 13
sankichi 0:e1265f6b3565 14 #include "mbed.h"
sankichi 0:e1265f6b3565 15 #include "InputStatus.h"
sankichi 0:e1265f6b3565 16
sankichi 0:e1265f6b3565 17 class In_MD6B
sankichi 0:e1265f6b3565 18 {
sankichi 0:e1265f6b3565 19 public:
sankichi 0:e1265f6b3565 20 /** Constructor: In_MD6B
sankichi 0:e1265f6b3565 21 *
sankichi 0:e1265f6b3565 22 * Parameters:
sankichi 0:e1265f6b3565 23 * pn_D0 - DigitalIn for 6B's D0 (D-Sub9 connector's pin1)
sankichi 0:e1265f6b3565 24 * pn_D1 - DigitalIn for D1 (D-Sub9 pin2)
sankichi 0:e1265f6b3565 25 * pn_D2 - DigitalIn for D2 (D-Sub9 pin3)
sankichi 0:e1265f6b3565 26 * pn_D3 - DigitalIn for D3 (D-Sub9 pin4)
sankichi 0:e1265f6b3565 27 * pn_D4 - DigitalIn for D4 (D-Sub9 pin6)
sankichi 0:e1265f6b3565 28 * pn_D5 - DigitalIn for D5 (D-Sub9 pin9)
sankichi 0:e1265f6b3565 29 * pn_SEL - DigitalOut for Select (D-Sub9 pin7)
sankichi 0:e1265f6b3565 30 * inputStatus - The variable to store input status
sankichi 0:e1265f6b3565 31 */
sankichi 0:e1265f6b3565 32 In_MD6B(
sankichi 0:e1265f6b3565 33 PinName pn_D0, PinName pn_D1, PinName pn_D2, PinName pn_D3,
sankichi 0:e1265f6b3565 34 PinName pn_D4, PinName pn_D5, PinName pn_SEL,
sankichi 0:e1265f6b3565 35 InputStatus *inputStatus
sankichi 0:e1265f6b3565 36 );
sankichi 0:e1265f6b3565 37
sankichi 0:e1265f6b3565 38 void StartReading(void);
sankichi 0:e1265f6b3565 39 void StopReading(void);
sankichi 0:e1265f6b3565 40
sankichi 0:e1265f6b3565 41 private:
sankichi 0:e1265f6b3565 42 // Private constants
sankichi 0:e1265f6b3565 43 static const int READINGINTERVAL__MICROSEC = 5000; // reading period microsec
sankichi 0:e1265f6b3565 44 static const int SELSTATETIME__MICROSEC = 2; // Select信号の立ち上げ_立ち下げを行う長さ
sankichi 0:e1265f6b3565 45 // 短すぎると6Bが反応しない?
sankichi 0:e1265f6b3565 46
sankichi 0:e1265f6b3565 47 // mbed pins
sankichi 0:e1265f6b3565 48 DigitalIn _IN_D0;
sankichi 0:e1265f6b3565 49 DigitalIn _IN_D1;
sankichi 0:e1265f6b3565 50 DigitalIn _IN_D2;
sankichi 0:e1265f6b3565 51 DigitalIn _IN_D3;
sankichi 0:e1265f6b3565 52 DigitalIn _IN_D4;
sankichi 0:e1265f6b3565 53 DigitalIn _IN_D5;
sankichi 0:e1265f6b3565 54 DigitalOut _OUT_SEL;
sankichi 0:e1265f6b3565 55
sankichi 0:e1265f6b3565 56 // Variables
sankichi 0:e1265f6b3565 57 InputStatus *_InputStatus;
sankichi 0:e1265f6b3565 58 volatile char _ReadEnable;
sankichi 0:e1265f6b3565 59 Ticker _PollingTicker;
sankichi 0:e1265f6b3565 60 volatile char _PhaseData[8];
sankichi 0:e1265f6b3565 61
sankichi 0:e1265f6b3565 62
sankichi 0:e1265f6b3565 63 // Private Method
sankichi 0:e1265f6b3565 64 void Initialize(void);
sankichi 0:e1265f6b3565 65 void EnablePolling(void);
sankichi 0:e1265f6b3565 66 void DisablePolling(void);
sankichi 0:e1265f6b3565 67 void PollingMethod(void);
sankichi 0:e1265f6b3565 68
sankichi 0:e1265f6b3565 69 int ReadPinValue(void);
sankichi 0:e1265f6b3565 70 };