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_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 };