1 /* Copyright (C) 2013-2014 Czech Technical University in Prague
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.
13 * IRC sensor input driver RPP API implementation file.
17 * RPP API documentation.
21 #include "rpp/mutex.h"
23 RPP_MUTEX_DEFINE(mutex_irc);
25 #ifndef FREERTOS_POSIX
28 #define setMuxForIRC(a, b)
33 static boolean_t initialized = FALSE;
34 static boolean_t rpp_irc_enabled[2] = {FALSE, FALSE};
41 if (!RPP_MUTEX_INIT(mutex_irc))
44 #ifndef FREERTOS_POSIX
52 int8_t rpp_irc_enable(uint8_t irc)
58 if (irc < 1 || irc > 2)
61 RPP_MUTEX_LOCK(mutex_irc);
62 rpp_irc_enabled[irc-1] = TRUE;
64 setMuxForIRC(irc, TRUE);
66 RPP_MUTEX_UNLOCK(mutex_irc);
71 int8_t rpp_irc_status(uint8_t irc)
77 if (irc < 1 || irc > 2)
80 RPP_MUTEX_LOCK(mutex_irc);
81 boolean_t ret_val = rpp_irc_enabled[irc-1];
82 RPP_MUTEX_UNLOCK(mutex_irc);
87 int32_t rpp_irc_get(uint8_t irc)
93 if (irc < 1 || irc > 2)
96 if (rpp_irc_status(irc) != 1)
99 #ifndef FREERTOS_POSIX
100 RPP_MUTEX_LOCK(mutex_irc);
101 int32_t ret_val = ircGet(irc);
102 RPP_MUTEX_UNLOCK(mutex_irc);
109 int8_t rpp_irc_disable(uint8_t irc)
115 if (irc < 1 || irc > 2)
118 if (rpp_irc_status(irc) != 1)
121 RPP_MUTEX_LOCK(mutex_irc);
123 setMuxForIRC(irc, FALSE);
124 rpp_irc_enabled[irc-1] = FALSE;
125 RPP_MUTEX_UNLOCK(mutex_irc);