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 #include "Out_FC.h"
sankichi 0:e1265f6b3565 2 #include "C_Out_FC.h"
sankichi 0:e1265f6b3565 3
sankichi 0:e1265f6b3565 4 //
sankichi 0:e1265f6b3565 5 // Constructor
sankichi 0:e1265f6b3565 6 //
sankichi 0:e1265f6b3565 7 Out_FC::Out_FC(
sankichi 0:e1265f6b3565 8 PinName pn_LATCH, PinName pn_DATA, PinName pn_CLOCK, PinName pn_POWDETECT,
sankichi 0:e1265f6b3565 9 InputStatus *inputStatus)
sankichi 0:e1265f6b3565 10 : _INTR_LATCH(pn_LATCH), _OUT_DATA(pn_DATA), _INTR_CLOCK(pn_CLOCK), _INTR_POWDETECT(pn_POWDETECT)
sankichi 0:e1265f6b3565 11 {
sankichi 0:e1265f6b3565 12
sankichi 0:e1265f6b3565 13 _InputStatus = inputStatus;
sankichi 0:e1265f6b3565 14
sankichi 0:e1265f6b3565 15 Initialize();
sankichi 0:e1265f6b3565 16
sankichi 0:e1265f6b3565 17 // C function Initializer
sankichi 0:e1265f6b3565 18
sankichi 0:e1265f6b3565 19 _pEnableInput.attach(this, &Out_FC::EnableInput);
sankichi 0:e1265f6b3565 20 _pDisableInput.attach(this, &Out_FC::DisableInput);
sankichi 0:e1265f6b3565 21
sankichi 0:e1265f6b3565 22 C_Out_FC_Initialize(
sankichi 0:e1265f6b3565 23 &_INTR_LATCH,
sankichi 0:e1265f6b3565 24 &_OUT_DATA,
sankichi 0:e1265f6b3565 25 &_INTR_CLOCK,
sankichi 0:e1265f6b3565 26 &_INTR_POWDETECT,
sankichi 0:e1265f6b3565 27 &_Buttons,
sankichi 0:e1265f6b3565 28 &_Ch0,
sankichi 0:e1265f6b3565 29 &_Ch1,
sankichi 0:e1265f6b3565 30 &_Ch2,
sankichi 0:e1265f6b3565 31 // &_RapidFireValue,
sankichi 0:e1265f6b3565 32 &_InputDeviceType,
sankichi 0:e1265f6b3565 33 &_pEnableInput,
sankichi 0:e1265f6b3565 34 &_pDisableInput
sankichi 0:e1265f6b3565 35 );
sankichi 0:e1265f6b3565 36 }
sankichi 0:e1265f6b3565 37
sankichi 0:e1265f6b3565 38 //
sankichi 0:e1265f6b3565 39 // Initialize
sankichi 0:e1265f6b3565 40 //
sankichi 0:e1265f6b3565 41 void Out_FC::Initialize()
sankichi 0:e1265f6b3565 42 {
sankichi 0:e1265f6b3565 43 // InitInterruptPriority();
sankichi 0:e1265f6b3565 44
sankichi 0:e1265f6b3565 45 // Pin Setting
sankichi 0:e1265f6b3565 46 _INTR_LATCH.mode(PullUp);
sankichi 0:e1265f6b3565 47 _INTR_CLOCK.mode(PullUp);
sankichi 0:e1265f6b3565 48
sankichi 0:e1265f6b3565 49 // Ticker Setting
sankichi 0:e1265f6b3565 50 _RenewFCInputTicker.attach_us(
sankichi 0:e1265f6b3565 51 this,
sankichi 0:e1265f6b3565 52 &Out_FC::RenewFCInputDataPeriodically,
sankichi 0:e1265f6b3565 53 FC_INPUTSTATE_RENEWINTERVAL__MICROSEC
sankichi 0:e1265f6b3565 54 );
sankichi 0:e1265f6b3565 55
sankichi 0:e1265f6b3565 56 }
sankichi 0:e1265f6b3565 57
sankichi 0:e1265f6b3565 58
sankichi 0:e1265f6b3565 59 //
sankichi 0:e1265f6b3565 60 // 入力データ更新Ticker処理
sankichi 0:e1265f6b3565 61 //
sankichi 0:e1265f6b3565 62 void Out_FC::RenewFCInputDataPeriodically(void)
sankichi 0:e1265f6b3565 63 {
sankichi 0:e1265f6b3565 64 _Buttons = _InputStatus->Buttons;
sankichi 0:e1265f6b3565 65 _Ch0 = _InputStatus->Ch0;
sankichi 0:e1265f6b3565 66 _Ch1 = _InputStatus->Ch1;
sankichi 0:e1265f6b3565 67 _Ch2 = _InputStatus->Ch2;
sankichi 0:e1265f6b3565 68 _InputDeviceType = _InputStatus->InputDeviceType;
sankichi 0:e1265f6b3565 69 }
sankichi 0:e1265f6b3565 70
sankichi 0:e1265f6b3565 71
sankichi 0:e1265f6b3565 72
sankichi 0:e1265f6b3565 73 void Out_FC::SetupInputControll(void (*startInputFunction)(void), void (*stopInputFunction)(void))
sankichi 0:e1265f6b3565 74 {
sankichi 0:e1265f6b3565 75 StartInputFunction = startInputFunction;
sankichi 0:e1265f6b3565 76 StopInputFunction = stopInputFunction;
sankichi 0:e1265f6b3565 77 }
sankichi 0:e1265f6b3565 78
sankichi 0:e1265f6b3565 79 void Out_FC::EnableInput(void)
sankichi 0:e1265f6b3565 80 {
sankichi 0:e1265f6b3565 81 // Ticker Setting
sankichi 0:e1265f6b3565 82 _RenewFCInputTicker.attach_us(
sankichi 0:e1265f6b3565 83 this,
sankichi 0:e1265f6b3565 84 &Out_FC::RenewFCInputDataPeriodically,
sankichi 0:e1265f6b3565 85 FC_INPUTSTATE_RENEWINTERVAL__MICROSEC
sankichi 0:e1265f6b3565 86 );
sankichi 0:e1265f6b3565 87
sankichi 0:e1265f6b3565 88 if(_InputInstance && StartInputMethod)
sankichi 0:e1265f6b3565 89 {
sankichi 0:e1265f6b3565 90 (_InputInstance->*StartInputMethod)();
sankichi 0:e1265f6b3565 91 }
sankichi 0:e1265f6b3565 92 else if(StartInputFunction)
sankichi 0:e1265f6b3565 93 {
sankichi 0:e1265f6b3565 94 StartInputFunction();
sankichi 0:e1265f6b3565 95 }
sankichi 0:e1265f6b3565 96 }
sankichi 0:e1265f6b3565 97
sankichi 0:e1265f6b3565 98 void Out_FC::DisableInput(void)
sankichi 0:e1265f6b3565 99 {
sankichi 0:e1265f6b3565 100 _RenewFCInputTicker.detach();
sankichi 0:e1265f6b3565 101
sankichi 0:e1265f6b3565 102 if(_InputInstance && StopInputMethod)
sankichi 0:e1265f6b3565 103 {
sankichi 0:e1265f6b3565 104 (_InputInstance->*StopInputMethod)();
sankichi 0:e1265f6b3565 105 }
sankichi 0:e1265f6b3565 106 else if(StopInputFunction)
sankichi 0:e1265f6b3565 107 {
sankichi 0:e1265f6b3565 108 StopInputFunction();
sankichi 0:e1265f6b3565 109 }
sankichi 0:e1265f6b3565 110 }
sankichi 0:e1265f6b3565 111
sankichi 0:e1265f6b3565 112