EdgePulseData.h 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. // // ******************************************************************
  2. // // /\ /| @File EdgePulseData.h
  3. // // \ V/ @Brief
  4. // // | "") @Author lijinwen, ghz005@uni-trend.com.cn
  5. // // / | @Creation 2024-3-14
  6. // // / \\ @Modified 2024-5-13
  7. // // *(__\_\
  8. // // ******************************************************************
  9. #pragma once
  10. #include "EdgePulse.h"
  11. //#include "BaseEnums/Channels.h"
  12. namespace Protocol
  13. {
  14. struct EdgePulseData
  15. {
  16. public:
  17. /**
  18. * \brief 波形数据长度
  19. */
  20. uint64_t WaveformDataCount;
  21. /**
  22. * \brief 边沿脉宽个数
  23. */
  24. uint64_t EdgePulsesCount;
  25. /**
  26. * \brief 采样率
  27. */
  28. double SampleRate;
  29. EdgePulseData(uint64_t edgePulsesCount, uint64_t dataCount, double sampleRate,
  30. EdgePulse* edgePulsesPtr)
  31. : WaveformDataCount(dataCount),
  32. EdgePulsesCount(edgePulsesCount),
  33. SampleRate(sampleRate),
  34. EdgePulsesPtr_(edgePulsesPtr)
  35. {
  36. }
  37. EdgePulse* GetDataAddrPtr() const
  38. {
  39. return EdgePulsesPtr_;
  40. //return edgePulsesPtr;
  41. }
  42. protected:
  43. EdgePulse* EdgePulsesPtr_; //边沿脉宽数据指针
  44. };
  45. struct EdgePulseDataTwoLevels : EdgePulseData
  46. {
  47. EdgePulseDataTwoLevels(uint64_t edgePulsesCount, uint64_t dataCount, double sampleRate,
  48. EdgePulse* edgePulsesPtr);
  49. __override TwoLevelEdgePulse* GetDataAddrPtr() const
  50. {
  51. return reinterpret_cast<TwoLevelEdgePulse*>(EdgePulsesPtr_);
  52. }
  53. public:
  54. __readonly int32_t LevelCount = 2;
  55. };
  56. struct EdgePulseDataThreeLevels : EdgePulseData
  57. {
  58. EdgePulseDataThreeLevels(uint64_t edgePulsesCount, uint64_t dataCount, double sampleRate,
  59. EdgePulse* edgePulsesPtr);
  60. __override TwoLevelEdgePulse* GetDataAddrPtr() const
  61. {
  62. return reinterpret_cast<TwoLevelEdgePulse*>(EdgePulsesPtr_);
  63. }
  64. public:
  65. __readonly int32_t LevelCount = 3;
  66. };
  67. }