#include "ne-inputservice.h"
static inputservice *inputservices[N4_OPS_END] = {0};
+static pthread_mutex_t n40_mutex = PTHREAD_MUTEX_INITIALIZER;
/**
* @brief Return inputservice (N4x) after checks;
* @brief Register the input service implementation for N4C. For more detail, refer to N40 header.
*/
int n40_register_input_service (n4_opmode op, inputservice *srv) {
- pthread_mutex_t *lock;
-
if (op < 0 || op >= N4_OPS_END)
return -EINVAL;
if (inputservices[op] != NULL)
return -EINVAL;
- lock = &inputservices[op]->mutex;
- pthread_mutex_lock(lock);
+ pthread_mutex_lock(&n40_mutex);
inputservices[op] = srv;
- pthread_mutex_unlock(lock);
+ pthread_mutex_unlock(&n40_mutex);
+
if (!srv->initialized)
return -EINVAL;
* @brief Unregister the input service implementation. For more detail, refer to N40 header.
*/
void n40_unregister_input_service (n4_opmode op) {
- pthread_mutex_t *lock;
-
assert (op >= 0 && op < N4_OPS_END);
assert (inputservices[op] != NULL);
/* Wait for others if it is locked */
- lock = &inputservices[op]->mutex;
- pthread_mutex_lock(lock);
+ pthread_mutex_lock(&n40_mutex);
inputservices[op] = NULL;
- pthread_mutex_unlock(lock);
+ pthread_mutex_unlock(&n40_mutex);
/* The caller (N4x) may destroy now... */
}