File: swmux.c

package info (click to toggle)
brickos 0.9.0.dfsg-8
  • links: PTS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 1,756 kB
  • ctags: 1,826
  • sloc: ansic: 9,144; cpp: 860; asm: 693; makefile: 648; sh: 124; perl: 61
file content (74 lines) | stat: -rw-r--r-- 2,059 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#include "swmux.h"

#ifdef CONF_DSENSOR
#ifdef CONF_DSENSOR_SWMUX


//sampled multiplexor ranges

//0xFE00 - sampled raw value for no sensors touched
#define SWMUX_0000_S    0xF000
#define SWMUX_0000_E    0xFFFF

//0x9640 - sampled raw value for only A touched
#define SWMUX_A000_S    0x9000
#define SWMUX_A000_E    0x9FFF

//Ox8180 - sampled raw value for A and B touched
#define SWMUX_AB00_S    0x8000
#define SWMUX_AB00_E    0x8BFF

//0x8D80 - sampled raw value for A and C touched
#define SWMUX_A0C0_S    0x8C00
#define SWMUX_A0C0_E    0x8FFF

//Ox7800 - sampled raw value for A, B, and C touched
#define SWMUX_ABC0_S    0x7000
#define SWMUX_ABC0_E    0x7FFF

//0xC000 - sampled raw value for only B touched
#define SWMUX_0B00_S    0xBFF0
#define SWMUX_0B00_E    0xC5FF

//0xA6C0 - sampled raw value for B and C touched
#define SWMUX_0BC0_S    0xA000
#define SWMUX_0BC0_E    0xAFFF

//OxD6C0 - sampled raw value for only C touched
#define SWMUX_00C0_S    0xD000
#define SWMUX_00C0_E    0xDFFF

//exta sensor D, when pressed A,B,C are masked out
//0x0600
#define SWMUX_XXXD_S    0x0000
#define SWMUX_XXXD_E    0x4FFF



unsigned char swmux_bits(unsigned int raw) {
    if(raw>=SWMUX_0000_S && raw <=SWMUX_0000_E) {	
	return 0;
    } else if (raw>=SWMUX_A000_S  && raw <=SWMUX_A000_E) {
	return SWMUX_A_MASK;
    } else if (raw>=SWMUX_AB00_S  && raw <=SWMUX_AB00_E) {
	return SWMUX_A_MASK|SWMUX_B_MASK;
    } else if (raw>=SWMUX_A0C0_S  && raw <=SWMUX_A0C0_E) {
	return SWMUX_A_MASK|SWMUX_C_MASK;
    } else if (raw>=SWMUX_ABC0_S  && raw <=SWMUX_ABC0_E) {
	return SWMUX_A_MASK|SWMUX_B_MASK|SWMUX_C_MASK;
    } else if (raw>=SWMUX_0B00_S  && raw <=SWMUX_0B00_E) {
	return SWMUX_B_MASK;
    } else if (raw>=SWMUX_0BC0_S  && raw <=SWMUX_0BC0_E) {
	return SWMUX_B_MASK|SWMUX_C_MASK;
    } else if (raw>=SWMUX_00C0_S  && raw <=SWMUX_00C0_E) {
	return SWMUX_C_MASK;
    } else if (raw>=SWMUX_XXXD_S  && raw <=SWMUX_XXXD_E) {
	return SWMUX_D_MASK;
    } else {
	return SWMUX_ERROR_MASK;
    }
}//endof swmux_val

#endif //CONF_DSENSOR_SWMUX
#endif //CONF_DSENSOR