DeviceController.cpp 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. #include "DeviceController.h"
  2. #include "JobModule.h"
  3. #include "RunnableModule.h"
  4. #include "LibraryLoader.h"
  5. #include <QtCore/QDebug>
  6. #include <typeinfo>
  7. #include <type_traits>
  8. DeviceController::DeviceController()
  9. {
  10. m_pModule = nullptr;
  11. m_pDataConsumer = nullptr;
  12. }
  13. void DeviceController::regConsumer(DataConsumer* pDC)
  14. {
  15. m_pDataConsumer = pDC;
  16. }
  17. void DeviceController::OnData(std::string name,QVariant val)
  18. {
  19. // qDebug() << __FILE__ << __LINE__ << name.c_str() << " val = " << val.toString();
  20. if( m_pDataConsumer != nullptr )
  21. {
  22. m_pDataConsumer->OnData(name,val);
  23. }
  24. }
  25. void DeviceController::OnSubData(std::string name,std::string val)
  26. {
  27. if( m_pModule != nullptr )
  28. {
  29. m_pModule->OnSubData(name,val);
  30. }
  31. }
  32. void DeviceController::CreateDevice(const DeviceInfo& di)
  33. {
  34. std::string assemblyName = di.ModuleInfo.AssemblyName;
  35. std::string className = di.ModuleInfo.ClassName;
  36. BaseModule* pModule = LibraryLoader::load<BaseModule>(assemblyName);
  37. if( pModule == nullptr )
  38. {
  39. qCritical() << __FILE__ << __LINE__ << " load " << assemblyName.c_str() << " failed.";
  40. return;
  41. }
  42. m_pModule = pModule;
  43. m_pModule->Setup(di.ModuleInfo);
  44. m_pModule->regConsumer(this);
  45. if( m_pModule->isInheritedFrom("RunnableModule"))
  46. {
  47. RunnableModule* pRunable = dynamic_cast<RunnableModule*>(m_pModule);
  48. pRunable->Run();
  49. }
  50. if( m_pModule->isInheritedFrom("JobModule"))
  51. {
  52. JobModule* pJob = dynamic_cast<JobModule*>(m_pModule);
  53. pJob->Process(QObject());
  54. }
  55. }