]> rtime.felk.cvut.cz Git - pes-rpp/rpp-lib.git/blob - rpp/src/rpp/irc.c
Add implementation of IRC module.
[pes-rpp/rpp-lib.git] / rpp / src / rpp / irc.c
1 /* Copyright (C) 2013-2014 Czech Technical University in Prague
2  *
3  * Authors:
4  *     - Karel Kočí
5  *
6  * This document contains proprietary information belonging to Czech
7  * Technical University in Prague. Passing on and copying of this
8  * document, and communication of its contents is not permitted
9  * without prior written authorization.
10  *
11  * File : irc.c
12  * Abstract:
13  *     IRC sensor input driver RPP API implementation file.
14  *
15  * References:
16  *     irc.h
17  *     RPP API documentation.
18  */
19
20 #include "rpp/rpp.h"
21
22 #if rppCONFIG_INCLUDE_IRC == 1
23
24 #if rppCONFIG_DRV == 1
25 #include "sys/ti_drv_het2.h"
26 #include "sys/sys_pinmux.h"
27 #endif
28
29 static boolean_t initialized = FALSE;
30
31 boolean_t rpp_irc1_enabled = FALSE;
32 boolean_t rpp_irc2_enabled = FALSE;
33
34 int8_t rpp_irc_init() {
35
36     if (initialized) {
37         return FAILURE;
38     }
39
40 #if rppCONFIG_DRV == 1
41     het2Init();
42 #endif
43
44     initialized = TRUE;
45     return SUCCESS;
46 }
47
48 int8_t rpp_irc_enable(uint8_t irc) {
49
50     if (!initialized)
51         return FAILURE;
52
53     if (irc < 1 || irc > 2)
54         return -RPP_EINVAL;
55
56     switch (irc) {
57     case 1:
58         rpp_irc1_enabled = TRUE;
59         break;
60     case 2:
61         rpp_irc2_enabled = TRUE;
62         break;
63     }
64
65     setMuxForIRC(irc, TRUE);
66     ircEnable(irc);
67
68     return SUCCESS;
69 }
70
71 int8_t rpp_irc_status(uint8_t irc) {
72
73     if (!initialized)
74         return FAILURE;
75
76     if (irc < 1 || irc > 2)
77         return -RPP_EINVAL;
78
79     switch (irc) {
80     case 1:
81         return rpp_irc1_enabled ? 1 : 0;
82     case 2:
83         return rpp_irc2_enabled ? 1 : 0;
84     }
85     return FAILURE;
86 }
87
88 int32_t rpp_irc_get(uint8_t irc) {
89
90     if (!initialized)
91         return FAILURE;
92
93     if (irc < 1 || irc > 2)
94         return 0;
95
96     if (rpp_irc_status(irc) != 1)
97         return FAILURE;
98
99 #if rppCONFIG_DRV == 1
100     return ircGet(irc);
101 #else
102     return 1;
103 #endif
104 }
105
106 int8_t rpp_irc_disable(uint8_t irc) {
107
108     if (!initialized)
109         return FAILURE;
110
111     if (irc < 1 || irc > 2)
112         return -RPP_EINVAL;
113
114     if (rpp_irc_status(irc) != 1)
115         return FAILURE;
116
117     ircDisable(irc);
118     setMuxForIRC(irc, FALSE);
119     switch (irc) {
120     case 1:
121         rpp_irc1_enabled = FALSE;
122         break;
123     case 2:
124         rpp_irc2_enabled = FALSE;
125         break;
126     }
127     return FAILURE;
128 }
129
130 #endif /* rppCONFIG_INCLUDE_IRC */