First Release
In_CyberStick/In_CyberStick.h@0:e1265f6b3565, 2013-07-27 (annotated)
- Committer:
- sankichi
- Date:
- Sat Jul 27 14:05:47 2013 +0000
- Revision:
- 0:e1265f6b3565
First Release
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
sankichi | 0:e1265f6b3565 | 1 | #pragma once |
sankichi | 0:e1265f6b3565 | 2 | |
sankichi | 0:e1265f6b3565 | 3 | /** Class: In_CyberStick |
sankichi | 0:e1265f6b3565 | 4 | * |
sankichi | 0:e1265f6b3565 | 5 | * Used for reading from CyberStick(CZ-8NJ2) |
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_CyberStick myCS(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_CyberStick |
sankichi | 0:e1265f6b3565 | 18 | { |
sankichi | 0:e1265f6b3565 | 19 | public: |
sankichi | 0:e1265f6b3565 | 20 | /** Constructor: In_CyberStick |
sankichi | 0:e1265f6b3565 | 21 | * |
sankichi | 0:e1265f6b3565 | 22 | * Parameters: |
sankichi | 0:e1265f6b3565 | 23 | * pn_D0 - DigitalIn for CyberStick's D0 (D-Sub 9pin 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_LH - DigitalIn for L/H (D-Sub9 pin6) |
sankichi | 0:e1265f6b3565 | 28 | * pn_ACK - DigitalIn for Ack (D-Sub9 pin7) |
sankichi | 0:e1265f6b3565 | 29 | * pn_REQ - DigitalOut for Req (D-Sub9 pin8) |
sankichi | 0:e1265f6b3565 | 30 | * inputStatus - The variable to store input status |
sankichi | 0:e1265f6b3565 | 31 | */ |
sankichi | 0:e1265f6b3565 | 32 | In_CyberStick( |
sankichi | 0:e1265f6b3565 | 33 | PinName pn_D0, PinName pn_D1, PinName pn_D2, PinName pn_D3, |
sankichi | 0:e1265f6b3565 | 34 | PinName pn_LH, PinName pn_ACK, PinName pn_REQ, |
sankichi | 0:e1265f6b3565 | 35 | InputStatus *inputStatus |
sankichi | 0:e1265f6b3565 | 36 | ); |
sankichi | 0:e1265f6b3565 | 37 | |
sankichi | 0:e1265f6b3565 | 38 | void TestShow(void); |
sankichi | 0:e1265f6b3565 | 39 | |
sankichi | 0:e1265f6b3565 | 40 | void StartReading(void); |
sankichi | 0:e1265f6b3565 | 41 | void StopReading(void); |
sankichi | 0:e1265f6b3565 | 42 | |
sankichi | 0:e1265f6b3565 | 43 | private: |
sankichi | 0:e1265f6b3565 | 44 | // Private constants |
sankichi | 0:e1265f6b3565 | 45 | static const int REQUESTINTERVAL__MICROSEC = 2500; // reading period microsec |
sankichi | 0:e1265f6b3565 | 46 | static const int TRANSFERSPEED_MAX__MICROSEC = 50; // from AJOY_SUB.DOC |
sankichi | 0:e1265f6b3565 | 47 | static const int TRANSFERSPEED_1_2__MICROSEC = 96; |
sankichi | 0:e1265f6b3565 | 48 | static const int TRANSFERSPEED_1_3__MICROSEC = 144; |
sankichi | 0:e1265f6b3565 | 49 | static const int TRANSFERSPEED_1_4__MICROSEC = 192; |
sankichi | 0:e1265f6b3565 | 50 | |
sankichi | 0:e1265f6b3565 | 51 | // mbed pins |
sankichi | 0:e1265f6b3565 | 52 | DigitalIn _IN_D0; |
sankichi | 0:e1265f6b3565 | 53 | DigitalIn _IN_D1; |
sankichi | 0:e1265f6b3565 | 54 | DigitalIn _IN_D2; |
sankichi | 0:e1265f6b3565 | 55 | DigitalIn _IN_D3; |
sankichi | 0:e1265f6b3565 | 56 | DigitalIn _IN_LH; |
sankichi | 0:e1265f6b3565 | 57 | DigitalIn _IN_ACK; |
sankichi | 0:e1265f6b3565 | 58 | DigitalOut _OUT_REQ; |
sankichi | 0:e1265f6b3565 | 59 | |
sankichi | 0:e1265f6b3565 | 60 | // Variables |
sankichi | 0:e1265f6b3565 | 61 | InputStatus *_InputStatus; |
sankichi | 0:e1265f6b3565 | 62 | volatile char _ReadEnable; |
sankichi | 0:e1265f6b3565 | 63 | Ticker _PollingTicker; |
sankichi | 0:e1265f6b3565 | 64 | Timer _AckTimer; |
sankichi | 0:e1265f6b3565 | 65 | volatile int _Buttons; |
sankichi | 0:e1265f6b3565 | 66 | volatile char _Ch0; |
sankichi | 0:e1265f6b3565 | 67 | volatile char _Ch1; |
sankichi | 0:e1265f6b3565 | 68 | volatile char _Ch2; |
sankichi | 0:e1265f6b3565 | 69 | volatile char _Ch3; |
sankichi | 0:e1265f6b3565 | 70 | volatile int _AnalogReadFailCounter; |
sankichi | 0:e1265f6b3565 | 71 | |
sankichi | 0:e1265f6b3565 | 72 | // Private Method |
sankichi | 0:e1265f6b3565 | 73 | void Initialize(void); |
sankichi | 0:e1265f6b3565 | 74 | void EnablePolling(void); |
sankichi | 0:e1265f6b3565 | 75 | void DisablePolling(void); |
sankichi | 0:e1265f6b3565 | 76 | void PollingMethod(void); |
sankichi | 0:e1265f6b3565 | 77 | void ReadPhase(char phase); |
sankichi | 0:e1265f6b3565 | 78 | |
sankichi | 0:e1265f6b3565 | 79 | void DigitalModeReader(void); |
sankichi | 0:e1265f6b3565 | 80 | |
sankichi | 0:e1265f6b3565 | 81 | int ReadPinValue(void); |
sankichi | 0:e1265f6b3565 | 82 | void CommitAnalogData(void); |
sankichi | 0:e1265f6b3565 | 83 | |
sankichi | 0:e1265f6b3565 | 84 | }; |