NodeRegisterManager.h
Go to the documentation of this file.
00001 
00006 #ifndef NODEREGISTERMANAGER_H
00007 #define NODEREGISTERMANAGER_H
00008 
00009 #include "robot_instance/RegisterWizardMapLoader.h"
00010 #include "robot_instance/StringUtilities.h"
00011 
00012 class NodeRegisterManager
00013 {
00014 public:
00015     NodeRegisterManager();
00016     virtual ~NodeRegisterManager();
00017 
00018     class RegisterInfo
00019     {
00020     public:
00021         RegisterInfo(RegisterWizardPtr wizard, uint16_t registerValue)
00022             : wizard(wizard), registerValue(registerValue) {};
00023         RegisterInfo()
00024         {
00025             wizard        = boost::make_shared<RegisterWizard>(boost::make_shared<RegisterProperties>());
00026             registerValue = 0;
00027         };
00028         virtual ~RegisterInfo() {};
00029 
00030         RegisterWizardPtr wizard;
00031         uint16_t          registerValue;
00032     };
00033     typedef boost::unordered_map<std::string, RegisterInfo> RegisterInfoMap;
00034     typedef boost::shared_ptr<RegisterInfoMap>              RegisterInfoMapPtr;
00035 
00036     struct NodeRegisters
00037     {
00038         RegisterInfoMap control;
00039         RegisterInfoMap status;
00040         std::string     nodeType;
00041     };
00042     typedef boost::unordered_map<std::string, NodeRegisters> NodeRegisterMap;
00043     typedef NodeRegisterMap::iterator                        NodeRegisterMapIterator;
00044 
00045     void         addNode(const std::string& nodeName, const std::string& xmlFile);
00046     unsigned int getNodeCount();
00047     bool         hasNode(const std::string& nodeName);
00048     std::string  getNodeType(const std::string& nodeName);
00049 
00050     RegisterInfo getControlInfo(const std::string& nodeName, const std::string& registerName);
00051     RegisterInfo getStatusInfo(const std::string& nodeName,  const std::string& registerName);
00052 
00053     bool hasControlProperty(const std::string& nodeName, const std::string& prop);
00054     bool hasStatusProperty(const std::string& nodeName,  const std::string& prop);
00055 
00056     uint16_t getStatusValue(const std::string& nodeName,  const std::string& prop);
00057     uint16_t getControlValue(const std::string& nodeName, const std::string& prop);
00058     void     setControlValue(const std::string& nodeName, const std::string& prop, uint16_t value);
00059 
00060     void resetControlValues(const std::string& nodeName);
00061 
00062     void show(const std::string& nodeName);
00063     void showStatus(const std::string& nodeName);
00064     void showControl(const std::string& nodeName);
00065 
00066     NodeRegisterMap nodeRegisterMap;
00067 };
00068 
00069 typedef boost::shared_ptr<NodeRegisterManager> NodeRegisterManagerPtr;
00070 
00071 #endif // NODEREGISTERMANAGER_H


robot_instance
Author(s):
autogenerated on Sat Jun 8 2019 20:43:12