summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDenis Kenzior <denkenz@gmail.com>2010-01-06 15:50:25 -0600
committerDenis Kenzior <denkenz@gmail.com>2010-01-06 15:50:25 -0600
commit1b5c314f9afc487cb77dd12289853d4038a7ebda (patch)
tree96ad00ad24e89961629e03937538b23336e6c0df
parent45f2f9315fd48aa71d0a90dd82826125649382ee (diff)
downloadofono-1b5c314f9afc487cb77dd12289853d4038a7ebda.tar.bz2
Refactor: Allow persisent modem names
-rw-r--r--include/modem.h2
-rw-r--r--src/modem.c15
2 files changed, 12 insertions, 5 deletions
diff --git a/include/modem.h b/include/modem.h
index 7fe00152..b2aa6078 100644
--- a/include/modem.h
+++ b/include/modem.h
@@ -43,7 +43,7 @@ const char *ofono_modem_get_path(struct ofono_modem *modem);
void ofono_modem_set_data(struct ofono_modem *modem, void *data);
void *ofono_modem_get_data(struct ofono_modem *modem);
-struct ofono_modem *ofono_modem_create(const char *type);
+struct ofono_modem *ofono_modem_create(const char *name, const char *type);
int ofono_modem_register(struct ofono_modem *modem);
void ofono_modem_remove(struct ofono_modem *modem);
diff --git a/src/modem.c b/src/modem.c
index 85a851db..bbc99051 100644
--- a/src/modem.c
+++ b/src/modem.c
@@ -1035,17 +1035,23 @@ bool ofono_modem_get_boolean(struct ofono_modem *modem, const char *key)
return value;
}
-struct ofono_modem *ofono_modem_create(const char *type)
+struct ofono_modem *ofono_modem_create(const char *name, const char *type)
{
struct ofono_modem *modem;
char path[128];
- DBG("%s", type);
+ DBG("name: %s, type: %s", name, type);
if (strlen(type) > 16)
return NULL;
- snprintf(path, sizeof(path), "/%s%d", type, next_modem_id);
+ if (name && strlen(name) > 64)
+ return NULL;
+
+ if (name == NULL)
+ snprintf(path, sizeof(path), "/%s%d", type, next_modem_id);
+ else
+ snprintf(path, sizeof(path), "/%s", name);
if (__ofono_dbus_valid_object_path(path) == FALSE)
return NULL;
@@ -1062,7 +1068,8 @@ struct ofono_modem *ofono_modem_create(const char *type)
g_modem_list = g_slist_prepend(g_modem_list, modem);
- next_modem_id += 1;
+ if (name == NULL)
+ next_modem_id += 1;
return modem;
}