LogicDriverDPCProxy.cpp 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. #include "stdafx.h"
  2. #include "LogicDriverDPCProxy.h"
  3. #include "PacketAnalizer.h"
  4. using namespace DIOS::Dev::Detail::MachineryECOM;
  5. #define MACHINERY_TID "DetectorToTableDistance"
  6. #define MACHINERY_SID "DistanceSourcetoDetector"
  7. #define MACHINERY_ENTRANCE "DistanceSourcetoEntrance"
  8. #define MACHINERY_PROJECTIONNUM "ProjectionNum"
  9. #define MACHINERY_MAXANGLE "ProjectionMaxAngle"
  10. #define MACHINERY_DIRECTION "ProjectionDirection"
  11. #define MACHINERY_GEOMETRY "GeometryKeyword"
  12. LogicDriverDPCProxy *LogicDriverDPCProxy::m_instance = nullptr;
  13. LogicDriverDPCProxy::LogicDriverDPCProxy()
  14. :m_logicDriver(nullptr)
  15. {
  16. m_resources.add(MACHINERY_TID, (FLOAT)0.0);
  17. m_resources.add(MACHINERY_SID, (FLOAT)1.0);
  18. m_resources.add(MACHINERY_ENTRANCE, (FLOAT)15.0);
  19. m_resources.add(MACHINERY_PROJECTIONNUM, (INT)15);
  20. m_resources.add(MACHINERY_MAXANGLE, (FLOAT)15.0);
  21. m_resources.add(MACHINERY_DIRECTION, (INT)-1);
  22. m_resources.add(MACHINERY_GEOMETRY, "linear");
  23. }
  24. LogicDriverDPCProxy::~LogicDriverDPCProxy()
  25. {
  26. }
  27. LogicDriverDPCProxy *LogicDriverDPCProxy::Instance()
  28. {
  29. if (m_instance == nullptr)
  30. {
  31. m_instance = new LogicDriverDPCProxy();
  32. }
  33. return m_instance;
  34. }
  35. void LogicDriverDPCProxy::Initialize(LogicDriver *logicDriver)
  36. {
  37. m_logicDriver = logicDriver;
  38. }
  39. LogicDriver *LogicDriverDPCProxy::Get()
  40. {
  41. return m_logicDriver;
  42. }
  43. RET_STATUS LogicDriverDPCProxy::GetDeviceResource(ResDataObject *pDeviceResource)
  44. {
  45. bool ret = true;
  46. ResDataObject val = (*pDeviceResource)["Attribute"];
  47. val.add(MACHINERY_TID, m_resources[MACHINERY_TID]);
  48. val.add(MACHINERY_SID, m_resources[MACHINERY_SID]);
  49. val.add(MACHINERY_ENTRANCE, m_resources[MACHINERY_ENTRANCE]);
  50. val.add(MACHINERY_PROJECTIONNUM, m_resources[MACHINERY_PROJECTIONNUM]);
  51. val.add(MACHINERY_MAXANGLE, m_resources[MACHINERY_MAXANGLE]);
  52. val.add(MACHINERY_DIRECTION, m_resources[MACHINERY_DIRECTION]);
  53. val.add(MACHINERY_GEOMETRY, m_resources[MACHINERY_GEOMETRY]);
  54. ret &= pDeviceResource->update("Attribute", val);
  55. if(gbusinessLog) gbusinessLog->Info("[LogicDriverDPCProxy][GetDeviceResource]->[{$}]", val.encode());
  56. if (ret)
  57. {
  58. return RET_STATUS::RET_SUCCEED;
  59. }
  60. return RET_STATUS::RET_FAILED;
  61. }
  62. bool LogicDriverDPCProxy::UpdateDriverResource(const std::string &resourceType, float tid, float sid, int project, float angle, int direction, std::string geometry)
  63. {
  64. if (!m_logicDriver)
  65. {
  66. return false;
  67. }
  68. if(gbusinessLog) gbusinessLog->Info("[LogicDriverDPCProxy][UpdateDriverResource]->[{$:d}]", project);
  69. if (resourceType == DRIVER_RESOURCE_TOMO)
  70. {
  71. m_resources[MACHINERY_TID] = tid * 100;
  72. m_resources[MACHINERY_SID] = sid * 100;
  73. m_resources[MACHINERY_MAXANGLE] = angle;
  74. m_resources[MACHINERY_PROJECTIONNUM] = project;
  75. m_resources[MACHINERY_DIRECTION] = direction;
  76. m_resources[MACHINERY_GEOMETRY] = geometry.c_str();
  77. //ResDataObject NotifyData;
  78. //PacketAnalizer::MakeNotify(NotifyData, PACKET_CMD_UPDATE, MACHINERY_TID, (const char *)m_resources[MACHINERY_TID]);
  79. //m_logicDriver->CmdFromLogicDev(&NotifyData);
  80. //PacketAnalizer::MakeNotify(NotifyData, PACKET_CMD_UPDATE, MACHINERY_SID, (const char *)m_resources[MACHINERY_SID]);
  81. //m_logicDriver->CmdFromLogicDev(&NotifyData);
  82. //PacketAnalizer::MakeNotify(NotifyData, PACKET_CMD_UPDATE, MACHINERY_MAXANGLE, (const char *)m_resources[MACHINERY_MAXANGLE]);
  83. //m_logicDriver->CmdFromLogicDev(&NotifyData);
  84. //PacketAnalizer::MakeNotify(NotifyData, PACKET_CMD_UPDATE, MACHINERY_PROJECTIONNUM, (const char *)m_resources[MACHINERY_PROJECTIONNUM]);
  85. //m_logicDriver->CmdFromLogicDev(&NotifyData);
  86. //PacketAnalizer::MakeNotify(NotifyData, PACKET_CMD_UPDATE, MACHINERY_DIRECTION, (const char *)m_resources[MACHINERY_DIRECTION]);
  87. //m_logicDriver->CmdFromLogicDev(&NotifyData);
  88. //PacketAnalizer::MakeNotify(NotifyData, PACKET_CMD_UPDATE, MACHINERY_GEOMETRY, (const char *)m_resources[MACHINERY_GEOMETRY]);
  89. //m_logicDriver->CmdFromLogicDev(&NotifyData);
  90. }
  91. return true;
  92. }