Skip to content

Commit

Permalink
sys/saul_reg: made registry a global variable
Browse files Browse the repository at this point in the history
  • Loading branch information
haukepetersen committed Feb 26, 2016
1 parent 94c287c commit 3d63db5
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 27 deletions.
13 changes: 5 additions & 8 deletions sys/include/saul_reg.h
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,11 @@ typedef struct {
const char *name; /**< string identifier for a device */
} 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
*
Expand All @@ -72,14 +77,6 @@ int saul_reg_add(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
*
Expand Down
29 changes: 12 additions & 17 deletions sys/saul_reg/saul_reg.c
Original file line number Diff line number Diff line change
Expand Up @@ -25,14 +25,14 @@
#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)
{
saul_reg_t *tmp = reg;
saul_reg_t *tmp = saul_reg;

if (dev == NULL) {
return -ENODEV;
Expand All @@ -41,8 +41,8 @@ int saul_reg_add(saul_reg_t *dev)
/* prepare new entry */
dev->next = NULL;
/* add to registry */
if (reg == NULL) {
reg = dev;
if (saul_reg == NULL) {
saul_reg = dev;
}
else {
while (tmp->next != NULL) {
Expand All @@ -55,13 +55,13 @@ int saul_reg_add(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;
}
if (reg == dev) {
reg = dev->next;
if (saul_reg == dev) {
saul_reg = dev->next;
}
while (tmp->next && (tmp->next != dev)) {
tmp = tmp->next;
Expand All @@ -75,14 +75,9 @@ int saul_reg_rm(saul_reg_t *dev)
return 0;
}

saul_reg_t *saul_reg_get(void)
{
return reg;
}

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++) {
tmp = tmp->next;
Expand All @@ -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 *tmp = reg;
saul_reg_t *tmp = saul_reg;

while (tmp) {
if (tmp->driver->type == type) {
Expand All @@ -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 *tmp = reg;
saul_reg_t *tmp = saul_reg;

while (tmp) {
if (strcmp(tmp->name, name) == 0) {
Expand Down
4 changes: 2 additions & 2 deletions sys/shell/commands/sc_saul_reg.c
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ static void probe(int num, saul_reg_t *dev)

static void probe_all(void)
{
saul_reg_t *dev = saul_reg_get();
saul_reg_t *dev = saul_reg;
int i = 0;

while (dev) {
Expand All @@ -56,7 +56,7 @@ static void probe_all(void)

static void list(void)
{
saul_reg_t *dev = saul_reg_get();
saul_reg_t *dev = saul_reg;
int i = 0;

if (dev) {
Expand Down

0 comments on commit 3d63db5

Please sign in to comment.