Hover!( Microchip MGC3130 ) library. Now, it is development version. http://www.hoverlabs.co/#hover https://www.switch-science.com/catalog/2124/
MjHover.h@7:a3b72910732d, 2015-04-04 (annotated)
- Committer:
- matsujirushi
- Date:
- Sat Apr 04 14:51:27 2015 +0000
- Revision:
- 7:a3b72910732d
- Parent:
- 6:8d68ac1bab97
Added MjHover2 class.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
matsujirushi | 0:051e1e753af5 | 1 | #ifndef MJ_HOVER_H |
matsujirushi | 0:051e1e753af5 | 2 | #define MJ_HOVER_H |
matsujirushi | 0:051e1e753af5 | 3 | |
matsujirushi | 0:051e1e753af5 | 4 | #include "mbed.h" |
matsujirushi | 0:051e1e753af5 | 5 | |
matsujirushi | 2:46cf70365584 | 6 | using namespace std; |
matsujirushi | 2:46cf70365584 | 7 | |
matsujirushi | 0:051e1e753af5 | 8 | namespace matsujirushi { |
matsujirushi | 0:051e1e753af5 | 9 | |
matsujirushi | 3:b03009537d66 | 10 | class MjHoverBase |
matsujirushi | 3:b03009537d66 | 11 | { |
matsujirushi | 3:b03009537d66 | 12 | public: |
matsujirushi | 3:b03009537d66 | 13 | MjHoverBase(I2C* i2c, uint8_t address, DigitalInOut* ts_n, DigitalInOut* reset_n); |
matsujirushi | 3:b03009537d66 | 14 | |
matsujirushi | 3:b03009537d66 | 15 | void Reset(); |
matsujirushi | 3:b03009537d66 | 16 | |
matsujirushi | 3:b03009537d66 | 17 | bool DataAvailable() const |
matsujirushi | 3:b03009537d66 | 18 | { |
matsujirushi | 3:b03009537d66 | 19 | return this->ts_n->read() ? false : true; |
matsujirushi | 3:b03009537d66 | 20 | } |
matsujirushi | 3:b03009537d66 | 21 | |
matsujirushi | 3:b03009537d66 | 22 | bool WriteMessage(uint8_t id, const uint8_t* payload, uint8_t payloadSize); |
matsujirushi | 3:b03009537d66 | 23 | bool ReadMessage(uint8_t* id, uint8_t* payload, uint8_t payloadSize, uint8_t* readPayloadSize); |
matsujirushi | 3:b03009537d66 | 24 | |
matsujirushi | 3:b03009537d66 | 25 | private: |
matsujirushi | 3:b03009537d66 | 26 | I2C *i2c; |
matsujirushi | 3:b03009537d66 | 27 | uint8_t address; |
matsujirushi | 3:b03009537d66 | 28 | DigitalInOut* ts_n; // I/O Transfer Status |
matsujirushi | 3:b03009537d66 | 29 | DigitalInOut* reset_n; // O Master Clear# |
matsujirushi | 3:b03009537d66 | 30 | |
matsujirushi | 3:b03009537d66 | 31 | void BeginRead() |
matsujirushi | 3:b03009537d66 | 32 | { |
matsujirushi | 3:b03009537d66 | 33 | this->ts_n->output(); |
matsujirushi | 3:b03009537d66 | 34 | this->ts_n->write(0); |
matsujirushi | 3:b03009537d66 | 35 | } |
matsujirushi | 3:b03009537d66 | 36 | void EndRead() |
matsujirushi | 3:b03009537d66 | 37 | { |
matsujirushi | 3:b03009537d66 | 38 | this->ts_n->input(); |
matsujirushi | 5:bd26aba87b9b | 39 | wait_us(100); |
matsujirushi | 3:b03009537d66 | 40 | } |
matsujirushi | 3:b03009537d66 | 41 | |
matsujirushi | 3:b03009537d66 | 42 | }; |
matsujirushi | 3:b03009537d66 | 43 | |
matsujirushi | 6:8d68ac1bab97 | 44 | class MjHover : private MjHoverBase |
matsujirushi | 0:051e1e753af5 | 45 | { |
matsujirushi | 0:051e1e753af5 | 46 | public: |
matsujirushi | 5:bd26aba87b9b | 47 | MjHover(I2C* i2c, uint8_t address, DigitalInOut* ts_n, DigitalInOut* reset_n); |
matsujirushi | 1:8e9c00c59101 | 48 | void begin(); |
matsujirushi | 1:8e9c00c59101 | 49 | void setRelease(); |
matsujirushi | 1:8e9c00c59101 | 50 | bool getStatus(); |
matsujirushi | 1:8e9c00c59101 | 51 | uint8_t getEvent(); |
matsujirushi | 1:8e9c00c59101 | 52 | static const char* getEventString(uint8_t eventByte); |
matsujirushi | 0:051e1e753af5 | 53 | |
matsujirushi | 0:051e1e753af5 | 54 | }; |
matsujirushi | 0:051e1e753af5 | 55 | |
matsujirushi | 7:a3b72910732d | 56 | class MjHover2 : private MjHoverBase |
matsujirushi | 7:a3b72910732d | 57 | { |
matsujirushi | 7:a3b72910732d | 58 | public: |
matsujirushi | 7:a3b72910732d | 59 | enum GestureInfoType |
matsujirushi | 7:a3b72910732d | 60 | { |
matsujirushi | 7:a3b72910732d | 61 | FLICK_WEST_TO_EAST , |
matsujirushi | 7:a3b72910732d | 62 | FLICK_EAST_TO_WEST , |
matsujirushi | 7:a3b72910732d | 63 | FLICK_SOUTH_TO_NORTH , |
matsujirushi | 7:a3b72910732d | 64 | FLICK_NORTH_TO_SOUTH , |
matsujirushi | 7:a3b72910732d | 65 | EDGE_FLICK_WEST_TO_EAST , |
matsujirushi | 7:a3b72910732d | 66 | EDGE_FLICK_EAST_TO_WEST , |
matsujirushi | 7:a3b72910732d | 67 | EDGE_FLICK_SOUTH_TO_NORTH, |
matsujirushi | 7:a3b72910732d | 68 | EDGE_FLICK_NORTH_TO_SOUTH, |
matsujirushi | 7:a3b72910732d | 69 | }; |
matsujirushi | 7:a3b72910732d | 70 | enum TouchInfoType |
matsujirushi | 7:a3b72910732d | 71 | { |
matsujirushi | 7:a3b72910732d | 72 | TOUCH_SOUTH = 0x00000001, |
matsujirushi | 7:a3b72910732d | 73 | TOUCH_WEST = 0x00000002, |
matsujirushi | 7:a3b72910732d | 74 | TOUCH_NORTH = 0x00000004, |
matsujirushi | 7:a3b72910732d | 75 | TOUCH_EAST = 0x00000008, |
matsujirushi | 7:a3b72910732d | 76 | TOUCH_CENTER = 0x00000010, |
matsujirushi | 7:a3b72910732d | 77 | TAP_SOUTH = 0x00000020, |
matsujirushi | 7:a3b72910732d | 78 | TAP_WEST = 0x00000040, |
matsujirushi | 7:a3b72910732d | 79 | TAP_NORTH = 0x00000080, |
matsujirushi | 7:a3b72910732d | 80 | TAP_EAST = 0x00000100, |
matsujirushi | 7:a3b72910732d | 81 | TAP_CENTER = 0x00000200, |
matsujirushi | 7:a3b72910732d | 82 | DOUBLE_TAP_SOUTH = 0x00000400, |
matsujirushi | 7:a3b72910732d | 83 | DOUBLE_TAP_WEST = 0x00000800, |
matsujirushi | 7:a3b72910732d | 84 | DOUBLE_TAP_NORTH = 0x00001000, |
matsujirushi | 7:a3b72910732d | 85 | DOUBLE_TAP_EAST = 0x00002000, |
matsujirushi | 7:a3b72910732d | 86 | DOUBLE_TAP_CENTER = 0x00004000, |
matsujirushi | 7:a3b72910732d | 87 | }; |
matsujirushi | 7:a3b72910732d | 88 | struct XyzPositionType |
matsujirushi | 7:a3b72910732d | 89 | { |
matsujirushi | 7:a3b72910732d | 90 | uint16_t X; |
matsujirushi | 7:a3b72910732d | 91 | uint16_t Y; |
matsujirushi | 7:a3b72910732d | 92 | uint16_t Z; |
matsujirushi | 7:a3b72910732d | 93 | }; |
matsujirushi | 7:a3b72910732d | 94 | struct |
matsujirushi | 7:a3b72910732d | 95 | { |
matsujirushi | 7:a3b72910732d | 96 | bool GestureInfoValid; |
matsujirushi | 7:a3b72910732d | 97 | GestureInfoType GestureInfo; |
matsujirushi | 7:a3b72910732d | 98 | |
matsujirushi | 7:a3b72910732d | 99 | bool TouchInfoValid; |
matsujirushi | 7:a3b72910732d | 100 | TouchInfoType TouchInfo; |
matsujirushi | 7:a3b72910732d | 101 | |
matsujirushi | 7:a3b72910732d | 102 | bool XyzPositionValid; |
matsujirushi | 7:a3b72910732d | 103 | XyzPositionType XyzPosition; |
matsujirushi | 7:a3b72910732d | 104 | } |
matsujirushi | 7:a3b72910732d | 105 | SensorData; |
matsujirushi | 7:a3b72910732d | 106 | |
matsujirushi | 7:a3b72910732d | 107 | |
matsujirushi | 7:a3b72910732d | 108 | MjHover2(I2C* i2c, uint8_t address, DigitalInOut* ts_n, DigitalInOut* reset_n); |
matsujirushi | 7:a3b72910732d | 109 | void Reset(); |
matsujirushi | 7:a3b72910732d | 110 | void Task(); |
matsujirushi | 7:a3b72910732d | 111 | }; |
matsujirushi | 7:a3b72910732d | 112 | |
matsujirushi | 0:051e1e753af5 | 113 | } // namespace matsujirushi |
matsujirushi | 0:051e1e753af5 | 114 | |
matsujirushi | 0:051e1e753af5 | 115 | #endif |
matsujirushi | 2:46cf70365584 | 116 | |
matsujirushi | 3:b03009537d66 | 117 | |
matsujirushi | 3:b03009537d66 | 118 | |
matsujirushi | 5:bd26aba87b9b | 119 | |
matsujirushi | 7:a3b72910732d | 120 |