WheelDPC.cpp 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. #include "StdAfx.h"
  2. #include "WheelDPC.h"
  3. #include "DevTree.h"
  4. #include "WheelOemDevice.h"
  5. WHEELDPC_API DriverDPC* GetDriverDPC()
  6. {
  7. return (DriverDPC*)(new WheelDPC());
  8. }
  9. WHEELDPC_API void ReleaseDriverDPC(DriverDPC *p)
  10. {
  11. WheelDPC *org = (WheelDPC*)p;
  12. delete org;
  13. }
  14. WheelDPC::WheelDPC(void)
  15. {
  16. m_pWorkpath = new std::string();
  17. }
  18. WheelDPC::~WheelDPC(void)
  19. {
  20. delete m_pWorkpath;
  21. }
  22. bool WheelDPC::DriverEntry(ResDataObject &Configuration)
  23. {
  24. return LogicDriver::DriverEntry(Configuration);
  25. }
  26. //bool SYSTEM_CALL WheelDPC::Driver_Probe(ResDataObject& PARAM_OUT HardwareInfo)
  27. //{
  28. // ResDataObject Config;
  29. // GetConfiguration(&Config);
  30. //
  31. // HardwareInfo.add("MajorID", (const char*)Config["MajorID"]);
  32. // HardwareInfo.add("MinorID", (const char*)Config["MinorID"]);
  33. // HardwareInfo.add("VendorID", (const char*)Config["VendorID"]);
  34. // HardwareInfo.add("ProductID", (const char*)Config["ProductID"]);
  35. // HardwareInfo.add("SerialID", (const char*)Config["SerialID"]);
  36. //
  37. // return true;
  38. //
  39. //}
  40. bool WheelDPC::Device_Probe(ResDataObject &HardwareInfo)
  41. {
  42. HardwareInfo.add("MajorID", "wheel");
  43. HardwareInfo.add("MinorID", "drv");
  44. HardwareInfo.add("VendorID", "Ecom");
  45. HardwareInfo.add("ProductID", "Wheel");
  46. HardwareInfo.add("SerialID", Thread_GetUniqTick());
  47. return true;
  48. }
  49. bool WheelDPC::SetDeviceWorkPath(const char *pWorkPath)
  50. {
  51. return true;
  52. }
  53. bool WheelDPC::SetDriverWorkPath(const char *pWorkPath)
  54. {
  55. (*m_pWorkpath) = pWorkPath;
  56. //要把读取单一硬件属性的过程放到此处
  57. return true;
  58. }
  59. bool WheelDPC::Connect()
  60. {
  61. LogicDriver::Connect();//make sure it's connected
  62. return true;
  63. }
  64. void WheelDPC::DisConnect()
  65. {
  66. LogicDriver::DisConnect();//make sure it's Disconnected
  67. }
  68. RET_STATUS SYSTEM_CALL WheelDPC::GetDriverDictionary(ResDataObject& PARAM_OUT DriverInfo)
  69. {
  70. DriverInfo.add("DriverType", "Wheel");
  71. DriverInfo.add("DeviceName", "asdf");
  72. DriverInfo.add("DateOfManufacture", "2017.10.20");
  73. DriverInfo.add("SoftwareVersion", "Alpha1.0");
  74. DriverInfo.add("HardwareVersion", "Alpha1.0");
  75. DriverInfo.add("Description", "Root Drver");
  76. DriverInfo.add("Properties", "None");
  77. return RET_SUCCEED;
  78. }
  79. PVOID WheelDPC::LoadLogicDevices()
  80. {
  81. PRINTA_INFO(m_pLog, "Load Logic Devices");
  82. DevTree *pTree = (DevTree *)GetDeviceTree();
  83. Wheel_OemDevice *p = new Wheel_OemDevice();
  84. LogicDevice *pret = (LogicDevice *)p;
  85. pTree->Add((PVOID)pret, TYPE_DEVICE);
  86. return (PVOID)pTree;
  87. }
  88. void WheelDPC::UnloadLogicDevices()
  89. {
  90. PRINTA_INFO(m_pLog, "UnLoad Logic Devices");
  91. DevTree *pTree = (DevTree *)GetDeviceTree();
  92. size_t Size = pTree->size();
  93. for (size_t i = 0; i < Size; i++)
  94. {
  95. DevTreeNode node = (*pTree)[i];
  96. if (node.m_NodeType == TYPE_DEVICE)
  97. {
  98. LogicDevice *pdev = (LogicDevice*)node.m_pObject;
  99. delete pdev;
  100. }
  101. else
  102. {
  103. //tree dev
  104. //do not copy this!!!!
  105. //UnloadLogicDevices(node.m_pObject);
  106. }
  107. }
  108. pTree->clear();
  109. PRINTA_INFO(m_pLog, "UnLoad Over");
  110. }