Linux: fixed registration of a class of device

Previously it created 4 instances instead of the next available slot.

Signed-off-by: Mark Charlebois <charlebm@gmail.com>
This commit is contained in:
Mark Charlebois
2015-04-20 11:35:47 -07:00
parent f0312d2da0
commit 400b9ebc20
+2
View File
@@ -108,6 +108,7 @@ VDev::register_class_devname(const char *class_devname)
char name[32]; char name[32];
snprintf(name, sizeof(name), "%s%d", class_devname, class_instance); snprintf(name, sizeof(name), "%s%d", class_devname, class_instance);
ret = register_driver(name, (void *)this); ret = register_driver(name, (void *)this);
if (ret == OK) break;
class_instance++; class_instance++;
} }
@@ -171,6 +172,7 @@ VDev::unregister_class_devname(const char *class_devname, unsigned class_instanc
for (int i=0;i<PX4_MAX_DEV; ++i) { for (int i=0;i<PX4_MAX_DEV; ++i) {
if (devmap[i] && strcmp(devmap[i]->name,name) == 0) { if (devmap[i] && strcmp(devmap[i]->name,name) == 0) {
delete devmap[i]; delete devmap[i];
debug("Unregistered class DEV %s", name);
devmap[i] = NULL; devmap[i] = NULL;
return PX4_OK; return PX4_OK;
} }