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 /** Class: Out_FC
sankichi 0:e1265f6b3565 2 *
sankichi 0:e1265f6b3565 3 * Output class for Famicom
sankichi 0:e1265f6b3565 4 *
sankichi 0:e1265f6b3565 5 */
sankichi 0:e1265f6b3565 6 #include "mbed.h"
sankichi 0:e1265f6b3565 7 #include "InputStatus.h"
sankichi 0:e1265f6b3565 8
sankichi 0:e1265f6b3565 9 class Out_FC
sankichi 0:e1265f6b3565 10 {
sankichi 0:e1265f6b3565 11 public:
sankichi 0:e1265f6b3565 12 /** Constructor: Out_FC
sankichi 0:e1265f6b3565 13 *
sankichi 0:e1265f6b3565 14 * Parameters:
sankichi 0:e1265f6b3565 15 * pn_LATCH - InterruptIn for LATCH (pin12)
sankichi 0:e1265f6b3565 16 * pn_DATA - DigitalOut for DATA (pin13)
sankichi 0:e1265f6b3565 17 * pn_CLOCK - InterruptIn for LATCH (pin14)
sankichi 0:e1265f6b3565 18 * pn_POWDETECT - InterruptIn for PowerDetect (pin15)
sankichi 0:e1265f6b3565 19 * inputStatus - Input status
sankichi 0:e1265f6b3565 20 */
sankichi 0:e1265f6b3565 21
sankichi 0:e1265f6b3565 22 Out_FC(
sankichi 0:e1265f6b3565 23 PinName pn_LATCH, PinName pn_DATA, PinName pn_CLOCK, PinName pn_POWDETECT,
sankichi 0:e1265f6b3565 24 InputStatus *inputStatus
sankichi 0:e1265f6b3565 25 );
sankichi 0:e1265f6b3565 26
sankichi 0:e1265f6b3565 27 private:
sankichi 0:e1265f6b3565 28 // Private constants
sankichi 0:e1265f6b3565 29 static const int FC_INPUTSTATE_RENEWINTERVAL__MICROSEC = 2000;
sankichi 0:e1265f6b3565 30
sankichi 0:e1265f6b3565 31 // mbed pins
sankichi 0:e1265f6b3565 32 InterruptIn _INTR_LATCH;
sankichi 0:e1265f6b3565 33 DigitalOut _OUT_DATA;
sankichi 0:e1265f6b3565 34 InterruptIn _INTR_CLOCK;
sankichi 0:e1265f6b3565 35 InterruptIn _INTR_POWDETECT;
sankichi 0:e1265f6b3565 36
sankichi 0:e1265f6b3565 37 // Variable
sankichi 0:e1265f6b3565 38 volatile int _Buttons;
sankichi 0:e1265f6b3565 39 volatile char _Ch0;
sankichi 0:e1265f6b3565 40 volatile char _Ch1;
sankichi 0:e1265f6b3565 41 volatile char _Ch2;
sankichi 0:e1265f6b3565 42 volatile char _InputDeviceType;
sankichi 0:e1265f6b3565 43 InputStatus *_InputStatus;
sankichi 0:e1265f6b3565 44 Ticker _RenewFCInputTicker;
sankichi 0:e1265f6b3565 45 // volatile char _RapidFireValue;
sankichi 0:e1265f6b3565 46 FunctionPointer _pEnableInput;
sankichi 0:e1265f6b3565 47 FunctionPointer _pDisableInput;
sankichi 0:e1265f6b3565 48
sankichi 0:e1265f6b3565 49 // Private Method
sankichi 0:e1265f6b3565 50 void Initialize(void);
sankichi 0:e1265f6b3565 51 void RenewFCInputDataPeriodically(void);
sankichi 0:e1265f6b3565 52 // void InitInterruptPriority(void);
sankichi 0:e1265f6b3565 53
sankichi 0:e1265f6b3565 54
sankichi 0:e1265f6b3565 55
sankichi 0:e1265f6b3565 56
sankichi 0:e1265f6b3565 57
sankichi 0:e1265f6b3565 58
sankichi 0:e1265f6b3565 59 // for InputControll
sankichi 0:e1265f6b3565 60 public:
sankichi 0:e1265f6b3565 61 void SetupInputControll(void (*startInputFunction)(void), void (*stopInputFunction)(void));
sankichi 0:e1265f6b3565 62 class CDummy;
sankichi 0:e1265f6b3565 63 template<class T>
sankichi 0:e1265f6b3565 64 void SetupInputControll(T* inputInstance, void (T::*startInputMethod)(void), void (T::*stopInputMethod)(void))
sankichi 0:e1265f6b3565 65 {
sankichi 0:e1265f6b3565 66 _InputInstance = (CDummy*) inputInstance;
sankichi 0:e1265f6b3565 67 StartInputMethod = (void (CDummy::*)(void)) startInputMethod;
sankichi 0:e1265f6b3565 68 StopInputMethod = (void (CDummy::*)(void)) stopInputMethod;
sankichi 0:e1265f6b3565 69 }
sankichi 0:e1265f6b3565 70
sankichi 0:e1265f6b3565 71 private:
sankichi 0:e1265f6b3565 72 CDummy* _InputInstance;
sankichi 0:e1265f6b3565 73 void (CDummy::*StartInputMethod)(void);
sankichi 0:e1265f6b3565 74 void (CDummy::*StopInputMethod)(void);
sankichi 0:e1265f6b3565 75 void (*StartInputFunction)(void);
sankichi 0:e1265f6b3565 76 void (*StopInputFunction)(void);
sankichi 0:e1265f6b3565 77 void EnableInput(void);
sankichi 0:e1265f6b3565 78 void DisableInput(void);
sankichi 0:e1265f6b3565 79
sankichi 0:e1265f6b3565 80 };
sankichi 0:e1265f6b3565 81
sankichi 0:e1265f6b3565 82