BrickUp API Service for Docker version.

paj7620.h 6.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322
  1. /*
  2. * paj7620.h
  3. * A library for Grove-Guesture 1.0
  4. *
  5. * Copyright (c) 2015 seeed technology inc.
  6. * Website : www.seeed.cc
  7. * Author : Xiangnan
  8. *
  9. * The MIT License (MIT)
  10. *
  11. * Permission is hereby granted, free of charge, to any person obtaining a copy
  12. * of this software and associated documentation files (the "Software"), to deal
  13. * in the Software without restriction, including without limitation the rights
  14. * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  15. * copies of the Software, and to permit persons to whom the Software is
  16. * furnished to do so, subject to the following conditions:
  17. *
  18. * The above copyright notice and this permission notice shall be included in
  19. * all copies or substantial portions of the Software.
  20. *
  21. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  22. * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  23. * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  24. * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  25. * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  26. * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  27. * THE SOFTWARE.
  28. */
  29. #define BIT(x) 1 << x
  30. // REGISTER DESCRIPTION
  31. #define PAJ7620_VAL(val, maskbit) ( val << maskbit )
  32. #define PAJ7620_ADDR_BASE 0x00
  33. // REGISTER BANK SELECT
  34. #define PAJ7620_REGITER_BANK_SEL (PAJ7620_ADDR_BASE + 0xEF) //W
  35. // DEVICE ID
  36. #define PAJ7620_ID 0x73
  37. // REGISTER BANK 0
  38. #define PAJ7620_ADDR_SUSPEND_CMD (PAJ7620_ADDR_BASE + 0x3) //W
  39. #define PAJ7620_ADDR_GES_PS_DET_MASK_0 (PAJ7620_ADDR_BASE + 0x41) //RW
  40. #define PAJ7620_ADDR_GES_PS_DET_MASK_1 (PAJ7620_ADDR_BASE + 0x42) //RW
  41. #define PAJ7620_ADDR_GES_PS_DET_FLAG_0 (PAJ7620_ADDR_BASE + 0x43) //R
  42. #define PAJ7620_ADDR_GES_PS_DET_FLAG_1 (PAJ7620_ADDR_BASE + 0x44) //R
  43. #define PAJ7620_ADDR_STATE_INDICATOR (PAJ7620_ADDR_BASE + 0x45) //R
  44. #define PAJ7620_ADDR_PS_HIGH_THRESHOLD (PAJ7620_ADDR_BASE + 0x69) //RW
  45. #define PAJ7620_ADDR_PS_LOW_THRESHOLD (PAJ7620_ADDR_BASE + 0x6A) //RW
  46. #define PAJ7620_ADDR_PS_APPROACH_STATE (PAJ7620_ADDR_BASE + 0x6B) //R
  47. #define PAJ7620_ADDR_PS_RAW_DATA (PAJ7620_ADDR_BASE + 0x6C) //R
  48. // REGISTER BANK 1
  49. #define PAJ7620_ADDR_PS_GAIN (PAJ7620_ADDR_BASE + 0x44) //RW
  50. #define PAJ7620_ADDR_IDLE_S1_STEP_0 (PAJ7620_ADDR_BASE + 0x67) //RW
  51. #define PAJ7620_ADDR_IDLE_S1_STEP_1 (PAJ7620_ADDR_BASE + 0x68) //RW
  52. #define PAJ7620_ADDR_IDLE_S2_STEP_0 (PAJ7620_ADDR_BASE + 0x69) //RW
  53. #define PAJ7620_ADDR_IDLE_S2_STEP_1 (PAJ7620_ADDR_BASE + 0x6A) //RW
  54. #define PAJ7620_ADDR_OP_TO_S1_STEP_0 (PAJ7620_ADDR_BASE + 0x6B) //RW
  55. #define PAJ7620_ADDR_OP_TO_S1_STEP_1 (PAJ7620_ADDR_BASE + 0x6C) //RW
  56. #define PAJ7620_ADDR_OP_TO_S2_STEP_0 (PAJ7620_ADDR_BASE + 0x6D) //RW
  57. #define PAJ7620_ADDR_OP_TO_S2_STEP_1 (PAJ7620_ADDR_BASE + 0x6E) //RW
  58. #define PAJ7620_ADDR_OPERATION_ENABLE (PAJ7620_ADDR_BASE + 0x72) //RW
  59. // PAJ7620_REGITER_BANK_SEL
  60. #define PAJ7620_BANK0 PAJ7620_VAL(0,0)
  61. #define PAJ7620_BANK1 PAJ7620_VAL(1,0)
  62. // PAJ7620_ADDR_SUSPEND_CMD
  63. #define PAJ7620_I2C_WAKEUP PAJ7620_VAL(1,0)
  64. #define PAJ7620_I2C_SUSPEND PAJ7620_VAL(0,0)
  65. // PAJ7620_ADDR_OPERATION_ENABLE
  66. #define PAJ7620_ENABLE PAJ7620_VAL(1,0)
  67. #define PAJ7620_DISABLE PAJ7620_VAL(0,0)
  68. typedef enum {
  69. BANK0 = 0,
  70. BANK1,
  71. } bank_e;
  72. enum {
  73. // REGISTER 0
  74. GES_RIGHT_FLAG = BIT(0),
  75. GES_LEFT_FLAG = BIT(1),
  76. GES_UP_FLAG = BIT(2),
  77. GES_DOWN_FLAG = BIT(3),
  78. GES_FORWARD_FLAG = BIT(4),
  79. GES_BACKWARD_FLAG = BIT(5),
  80. GES_CLOCKWISE_FLAG = BIT(6),
  81. GES_COUNT_CLOCKWISE_FLAG = BIT(7),
  82. //REGISTER 1
  83. GES_WAVE_FLAG = BIT(0),
  84. };
  85. // PAJ7620U2_20140305.asc
  86. unsigned char init_register_array[][2] = { // Initial Gesture
  87. {0xEF,0x00},
  88. {0x32,0x29},
  89. {0x33,0x01},
  90. {0x34,0x00},
  91. {0x35,0x01},
  92. {0x36,0x00},
  93. {0x37,0x07},
  94. {0x38,0x17},
  95. {0x39,0x06},
  96. {0x3A,0x12},
  97. {0x3F,0x00},
  98. {0x40,0x02},
  99. {0x41,0xFF},
  100. {0x42,0x01},
  101. {0x46,0x2D},
  102. {0x47,0x0F},
  103. {0x48,0x3C},
  104. {0x49,0x00},
  105. {0x4A,0x1E},
  106. {0x4B,0x00},
  107. {0x4C,0x20},
  108. {0x4D,0x00},
  109. {0x4E,0x1A},
  110. {0x4F,0x14},
  111. {0x50,0x00},
  112. {0x51,0x10},
  113. {0x52,0x00},
  114. {0x5C,0x02},
  115. {0x5D,0x00},
  116. {0x5E,0x10},
  117. {0x5F,0x3F},
  118. {0x60,0x27},
  119. {0x61,0x28},
  120. {0x62,0x00},
  121. {0x63,0x03},
  122. {0x64,0xF7},
  123. {0x65,0x03},
  124. {0x66,0xD9},
  125. {0x67,0x03},
  126. {0x68,0x01},
  127. {0x69,0xC8},
  128. {0x6A,0x40},
  129. {0x6D,0x04},
  130. {0x6E,0x00},
  131. {0x6F,0x00},
  132. {0x70,0x80},
  133. {0x71,0x00},
  134. {0x72,0x00},
  135. {0x73,0x00},
  136. {0x74,0xF0},
  137. {0x75,0x00},
  138. {0x80,0x42},
  139. {0x81,0x44},
  140. {0x82,0x04},
  141. {0x83,0x20},
  142. {0x84,0x20},
  143. {0x85,0x00},
  144. {0x86,0x10},
  145. {0x87,0x00},
  146. {0x88,0x05},
  147. {0x89,0x18},
  148. {0x8A,0x10},
  149. {0x8B,0x01},
  150. {0x8C,0x37},
  151. {0x8D,0x00},
  152. {0x8E,0xF0},
  153. {0x8F,0x81},
  154. {0x90,0x06},
  155. {0x91,0x06},
  156. {0x92,0x1E},
  157. {0x93,0x0D},
  158. {0x94,0x0A},
  159. {0x95,0x0A},
  160. {0x96,0x0C},
  161. {0x97,0x05},
  162. {0x98,0x0A},
  163. {0x99,0x41},
  164. {0x9A,0x14},
  165. {0x9B,0x0A},
  166. {0x9C,0x3F},
  167. {0x9D,0x33},
  168. {0x9E,0xAE},
  169. {0x9F,0xF9},
  170. {0xA0,0x48},
  171. {0xA1,0x13},
  172. {0xA2,0x10},
  173. {0xA3,0x08},
  174. {0xA4,0x30},
  175. {0xA5,0x19},
  176. {0xA6,0x10},
  177. {0xA7,0x08},
  178. {0xA8,0x24},
  179. {0xA9,0x04},
  180. {0xAA,0x1E},
  181. {0xAB,0x1E},
  182. {0xCC,0x19},
  183. {0xCD,0x0B},
  184. {0xCE,0x13},
  185. {0xCF,0x64},
  186. {0xD0,0x21},
  187. {0xD1,0x0F},
  188. {0xD2,0x88},
  189. {0xE0,0x01},
  190. {0xE1,0x04},
  191. {0xE2,0x41},
  192. {0xE3,0xD6},
  193. {0xE4,0x00},
  194. {0xE5,0x0C},
  195. {0xE6,0x0A},
  196. {0xE7,0x00},
  197. {0xE8,0x00},
  198. {0xE9,0x00},
  199. {0xEE,0x07},
  200. {0xEF,0x01},
  201. {0x00,0x1E},
  202. {0x01,0x1E},
  203. {0x02,0x0F},
  204. {0x03,0x10},
  205. {0x04,0x02},
  206. {0x05,0x00},
  207. {0x06,0xB0},
  208. {0x07,0x04},
  209. {0x08,0x0D},
  210. {0x09,0x0E},
  211. {0x0A,0x9C},
  212. {0x0B,0x04},
  213. {0x0C,0x05},
  214. {0x0D,0x0F},
  215. {0x0E,0x02},
  216. {0x0F,0x12},
  217. {0x10,0x02},
  218. {0x11,0x02},
  219. {0x12,0x00},
  220. {0x13,0x01},
  221. {0x14,0x05},
  222. {0x15,0x07},
  223. {0x16,0x05},
  224. {0x17,0x07},
  225. {0x18,0x01},
  226. {0x19,0x04},
  227. {0x1A,0x05},
  228. {0x1B,0x0C},
  229. {0x1C,0x2A},
  230. {0x1D,0x01},
  231. {0x1E,0x00},
  232. {0x21,0x00},
  233. {0x22,0x00},
  234. {0x23,0x00},
  235. {0x25,0x01},
  236. {0x26,0x00},
  237. {0x27,0x39},
  238. {0x28,0x7F},
  239. {0x29,0x08},
  240. {0x30,0x03},
  241. {0x31,0x00},
  242. {0x32,0x1A},
  243. {0x33,0x1A},
  244. {0x34,0x07},
  245. {0x35,0x07},
  246. {0x36,0x01},
  247. {0x37,0xFF},
  248. {0x38,0x36},
  249. {0x39,0x07},
  250. {0x3A,0x00},
  251. {0x3E,0xFF},
  252. {0x3F,0x00},
  253. {0x40,0x77},
  254. {0x41,0x40},
  255. {0x42,0x00},
  256. {0x43,0x30},
  257. {0x44,0xA0},
  258. {0x45,0x5C},
  259. {0x46,0x00},
  260. {0x47,0x00},
  261. {0x48,0x58},
  262. {0x4A,0x1E},
  263. {0x4B,0x1E},
  264. {0x4C,0x00},
  265. {0x4D,0x00},
  266. {0x4E,0xA0},
  267. {0x4F,0x80},
  268. {0x50,0x00},
  269. {0x51,0x00},
  270. {0x52,0x00},
  271. {0x53,0x00},
  272. {0x54,0x00},
  273. {0x57,0x80},
  274. {0x59,0x10},
  275. {0x5A,0x08},
  276. {0x5B,0x94},
  277. {0x5C,0xE8},
  278. {0x5D,0x08},
  279. {0x5E,0x3D},
  280. {0x5F,0x99},
  281. {0x60,0x45},
  282. {0x61,0x40},
  283. {0x63,0x2D},
  284. {0x64,0x02},
  285. {0x65,0x96},
  286. {0x66,0x00},
  287. {0x67,0x97},
  288. {0x68,0x01},
  289. {0x69,0xCD},
  290. {0x6A,0x01},
  291. {0x6B,0xB0},
  292. {0x6C,0x04},
  293. {0x6D,0x2C},
  294. {0x6E,0x01},
  295. {0x6F,0x32},
  296. {0x71,0x00},
  297. {0x72,0x01},
  298. {0x73,0x35},
  299. {0x74,0x00},
  300. {0x75,0x33},
  301. {0x76,0x31},
  302. {0x77,0x01},
  303. {0x7C,0x84},
  304. {0x7D,0x03},
  305. {0x7E,0x01},
  306. };
  307. #define INIT_REG_ARRAY_SIZE (sizeof(init_register_array)/sizeof(init_register_array[0]))