*/
#include "rpp/rpp.h"
+#include "rpp/mutex.h"
+
+RPP_MUTEX_DEFINE(mutex_irc);
#ifndef FREERTOS_POSIX
#include "sys/sys.h"
#endif
static boolean_t initialized = FALSE;
-
static boolean_t rpp_irc_enabled[2] = {FALSE, FALSE};
int8_t rpp_irc_init()
if (initialized)
return FAILURE;
+ if (!RPP_MUTEX_INIT(mutex_irc))
+ return FAILURE;
#ifndef FREERTOS_POSIX
het2Init();
if (irc < 1 || irc > 2)
return -RPP_EINVAL;
+ RPP_MUTEX_LOCK(mutex_irc);
rpp_irc_enabled[irc-1] = TRUE;
setMuxForIRC(irc, TRUE);
ircEnable(irc);
+ RPP_MUTEX_UNLOCK(mutex_irc);
return SUCCESS;
}
if (irc < 1 || irc > 2)
return -RPP_EINVAL;
- return rpp_irc_enabled[irc-1];
+ RPP_MUTEX_LOCK(mutex_irc);
+ boolean_t ret_val = rpp_irc_enabled[irc-1];
+ RPP_MUTEX_UNLOCK(mutex_irc);
+
+ return ret_val;
}
int32_t rpp_irc_get(uint8_t irc)
return FAILURE;
#ifndef FREERTOS_POSIX
- return ircGet(irc);
+ RPP_MUTEX_LOCK(mutex_irc);
+ int32_t ret_val = ircGet(irc);
+ RPP_MUTEX_UNLOCK(mutex_irc);
+ return ret_val;
#else
return 1;
#endif
if (rpp_irc_status(irc) != 1)
return FAILURE;
+ RPP_MUTEX_LOCK(mutex_irc);
ircDisable(irc);
setMuxForIRC(irc, FALSE);
rpp_irc_enabled[irc-1] = FALSE;
+ RPP_MUTEX_UNLOCK(mutex_irc);
return SUCCESS;
}