sys/saul_reg: made registry a global variable

This commit is contained in:
Hauke Petersen 2016-02-26 16:37:02 +01:00
parent 94c287c4c2
commit 3d63db5aed
3 changed files with 19 additions and 27 deletions

View File

@ -48,6 +48,11 @@ typedef struct {
const char *name; /**< string identifier for a device */ const char *name; /**< string identifier for a device */
} saul_reg_info_t; } saul_reg_info_t;
/**
* @brief Export the SAUL registry as global variable
*/
extern saul_reg_t *saul_reg;
/** /**
* @brief Register a device with the SAUL registry * @brief Register a device with the SAUL registry
* *
@ -72,14 +77,6 @@ int saul_reg_add(saul_reg_t *dev);
*/ */
int saul_reg_rm(saul_reg_t *dev); int saul_reg_rm(saul_reg_t *dev);
/**
* @brief Get the first device from the list of registered devices
*
* @return pointer to the first device in the list
* @return NULL if list is empty
*/
saul_reg_t *saul_reg_get(void);
/** /**
* @brief Find a device by it's position in the registry * @brief Find a device by it's position in the registry
* *

View File

@ -25,14 +25,14 @@
#include "saul_reg.h" #include "saul_reg.h"
/** /**
* @brief Keep the head of the device list * @brief Keep the head of the device list as global variable
*/ */
static saul_reg_t *reg = NULL; saul_reg_t *saul_reg = NULL;
int saul_reg_add(saul_reg_t *dev) int saul_reg_add(saul_reg_t *dev)
{ {
saul_reg_t *tmp = reg; saul_reg_t *tmp = saul_reg;
if (dev == NULL) { if (dev == NULL) {
return -ENODEV; return -ENODEV;
@ -41,8 +41,8 @@ int saul_reg_add(saul_reg_t *dev)
/* prepare new entry */ /* prepare new entry */
dev->next = NULL; dev->next = NULL;
/* add to registry */ /* add to registry */
if (reg == NULL) { if (saul_reg == NULL) {
reg = dev; saul_reg = dev;
} }
else { else {
while (tmp->next != NULL) { while (tmp->next != NULL) {
@ -55,13 +55,13 @@ int saul_reg_add(saul_reg_t *dev)
int saul_reg_rm(saul_reg_t *dev) int saul_reg_rm(saul_reg_t *dev)
{ {
saul_reg_t *tmp = reg; saul_reg_t *tmp = saul_reg;
if (reg == NULL || dev == NULL) { if (saul_reg == NULL || dev == NULL) {
return -EINVAL; return -EINVAL;
} }
if (reg == dev) { if (saul_reg == dev) {
reg = dev->next; saul_reg = dev->next;
} }
while (tmp->next && (tmp->next != dev)) { while (tmp->next && (tmp->next != dev)) {
tmp = tmp->next; tmp = tmp->next;
@ -75,14 +75,9 @@ int saul_reg_rm(saul_reg_t *dev)
return 0; return 0;
} }
saul_reg_t *saul_reg_get(void)
{
return reg;
}
saul_reg_t *saul_reg_find_nth(int pos) saul_reg_t *saul_reg_find_nth(int pos)
{ {
saul_reg_t *tmp = reg; saul_reg_t *tmp = saul_reg;
for (int i = 0; (i < pos) && tmp; i++) { for (int i = 0; (i < pos) && tmp; i++) {
tmp = tmp->next; tmp = tmp->next;
@ -92,7 +87,7 @@ saul_reg_t *saul_reg_find_nth(int pos)
saul_reg_t *saul_reg_find_type(uint8_t type) saul_reg_t *saul_reg_find_type(uint8_t type)
{ {
saul_reg_t *tmp = reg; saul_reg_t *tmp = saul_reg;
while (tmp) { while (tmp) {
if (tmp->driver->type == type) { if (tmp->driver->type == type) {
@ -105,7 +100,7 @@ saul_reg_t *saul_reg_find_type(uint8_t type)
saul_reg_t *saul_reg_find_name(const char *name) saul_reg_t *saul_reg_find_name(const char *name)
{ {
saul_reg_t *tmp = reg; saul_reg_t *tmp = saul_reg;
while (tmp) { while (tmp) {
if (strcmp(tmp->name, name) == 0) { if (strcmp(tmp->name, name) == 0) {

View File

@ -44,7 +44,7 @@ static void probe(int num, saul_reg_t *dev)
static void probe_all(void) static void probe_all(void)
{ {
saul_reg_t *dev = saul_reg_get(); saul_reg_t *dev = saul_reg;
int i = 0; int i = 0;
while (dev) { while (dev) {
@ -56,7 +56,7 @@ static void probe_all(void)
static void list(void) static void list(void)
{ {
saul_reg_t *dev = saul_reg_get(); saul_reg_t *dev = saul_reg;
int i = 0; int i = 0;
if (dev) { if (dev) {