swmux.c
Go to the documentation of this file.
1 #include "swmux.h"
2 
3 #ifdef CONF_DSENSOR
4 #ifdef CONF_DSENSOR_SWMUX
5 
6 
7 //sampled multiplexor ranges
8 
9 //0xFE00 - sampled raw value for no sensors touched
10 #define SWMUX_0000_S 0xF000
11 #define SWMUX_0000_E 0xFFFF
12 
13 //0x9640 - sampled raw value for only A touched
14 #define SWMUX_A000_S 0x9000
15 #define SWMUX_A000_E 0x9FFF
16 
17 //Ox8180 - sampled raw value for A and B touched
18 #define SWMUX_AB00_S 0x8000
19 #define SWMUX_AB00_E 0x8BFF
20 
21 //0x8D80 - sampled raw value for A and C touched
22 #define SWMUX_A0C0_S 0x8C00
23 #define SWMUX_A0C0_E 0x8FFF
24 
25 //Ox7800 - sampled raw value for A, B, and C touched
26 #define SWMUX_ABC0_S 0x7000
27 #define SWMUX_ABC0_E 0x7FFF
28 
29 //0xC000 - sampled raw value for only B touched
30 #define SWMUX_0B00_S 0xBFF0
31 #define SWMUX_0B00_E 0xC5FF
32 
33 //0xA6C0 - sampled raw value for B and C touched
34 #define SWMUX_0BC0_S 0xA000
35 #define SWMUX_0BC0_E 0xAFFF
36 
37 //OxD6C0 - sampled raw value for only C touched
38 #define SWMUX_00C0_S 0xD000
39 #define SWMUX_00C0_E 0xDFFF
40 
41 //exta sensor D, when pressed A,B,C are masked out
42 //0x0600
43 #define SWMUX_XXXD_S 0x0000
44 #define SWMUX_XXXD_E 0x4FFF
45 
46 
47 
48 unsigned char swmux_bits(unsigned int raw) {
49  if(raw>=SWMUX_0000_S && raw <=SWMUX_0000_E) {
50  return 0;
51  } else if (raw>=SWMUX_A000_S && raw <=SWMUX_A000_E) {
52  return SWMUX_A_MASK;
53  } else if (raw>=SWMUX_AB00_S && raw <=SWMUX_AB00_E) {
54  return SWMUX_A_MASK|SWMUX_B_MASK;
55  } else if (raw>=SWMUX_A0C0_S && raw <=SWMUX_A0C0_E) {
56  return SWMUX_A_MASK|SWMUX_C_MASK;
57  } else if (raw>=SWMUX_ABC0_S && raw <=SWMUX_ABC0_E) {
58  return SWMUX_A_MASK|SWMUX_B_MASK|SWMUX_C_MASK;
59  } else if (raw>=SWMUX_0B00_S && raw <=SWMUX_0B00_E) {
60  return SWMUX_B_MASK;
61  } else if (raw>=SWMUX_0BC0_S && raw <=SWMUX_0BC0_E) {
62  return SWMUX_B_MASK|SWMUX_C_MASK;
63  } else if (raw>=SWMUX_00C0_S && raw <=SWMUX_00C0_E) {
64  return SWMUX_C_MASK;
65  } else if (raw>=SWMUX_XXXD_S && raw <=SWMUX_XXXD_E) {
66  return SWMUX_D_MASK;
67  } else {
68  return SWMUX_ERROR_MASK;
69  }
70 }//endof swmux_val
71 
72 #endif //CONF_DSENSOR_SWMUX
73 #endif //CONF_DSENSOR
74 
Interface: direct control of a touch sensor multiplexor.

brickOS is released under the Mozilla Public License.
Original code copyright 1998-2005 by the authors.

Generated for brickOS Kernel Developer by doxygen 1.8.12