Skip to content
Snippets Groups Projects
Commit e2595249 authored by Guy Zana's avatar Guy Zana
Browse files

Now able to register to devices with the same device_id

parent 204b09eb
No related branches found
No related tags found
No related merge requests found
...@@ -22,22 +22,29 @@ namespace hw { ...@@ -22,22 +22,29 @@ namespace hw {
bool device_manager::register_device(hw_device* dev) bool device_manager::register_device(hw_device* dev)
{ {
if (get_device(dev->get_id()) != nullptr) {
return (false);
}
_devices.insert(std::make_pair(dev->get_id(), dev)); _devices.insert(std::make_pair(dev->get_id(), dev));
return (true); return (true);
} }
hw_device* device_manager::get_device(hw_device_id id) hw_device* device_manager::get_device(hw_device_id id, unsigned idx)
{ {
auto it = _devices.find(id); auto ppp = _devices.equal_range(id);
if (it == _devices.end()) {
return (nullptr); unsigned cnt=0;
for (auto it=ppp.first; it!=ppp.second; ++it) {
if (cnt == idx) {
return ((*it).second);
}
cnt++;
} }
return (it->second); return (nullptr);
}
unsigned device_manager::get_num_devices(hw_device_id id)
{
return _devices.count(id);
} }
void device_manager::list_devices(void) void device_manager::list_devices(void)
......
...@@ -60,7 +60,8 @@ namespace hw { ...@@ -60,7 +60,8 @@ namespace hw {
bool register_device(hw_device* dev); bool register_device(hw_device* dev);
// Retrieves from dictionary // Retrieves from dictionary
hw_device* get_device(hw_device_id id); hw_device* get_device(hw_device_id id, unsigned idx=0);
unsigned get_num_devices(hw_device_id id);
// System wide operations // System wide operations
void list_devices(void); void list_devices(void);
...@@ -68,7 +69,7 @@ namespace hw { ...@@ -68,7 +69,7 @@ namespace hw {
private: private:
static device_manager* _instance; static device_manager* _instance;
std::map<hw_device_id, hw_device*> _devices; std::multimap<hw_device_id, hw_device*> _devices;
}; };
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment