edge_pulse_data.h 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. // // ******************************************************************
  2. // // /\ /| @File edge_pulse_data.h
  3. // // \ V/ @Brief
  4. // // | "") @Author lijinwen, ghz005@uni-trend.com.cn
  5. // // / | @Creation 2024-05-16
  6. // // / \\ @Modified 2024-06-24
  7. // // *(__\_\
  8. // // ******************************************************************
  9. #pragma once
  10. #include "edge_pulse.h"
  11. //#include "BaseEnums/Channels.h"
  12. namespace Protocol
  13. {
  14. class EdgePulseData
  15. {
  16. public:
  17. /**
  18. * \brief 波形数据长度
  19. */
  20. uint64_t waveform_data_count;
  21. /**
  22. * \brief 边沿脉宽个数
  23. */
  24. uint64_t edge_pulses_count;
  25. /**
  26. * \brief 采样率
  27. */
  28. double sample_rate;
  29. EdgePulseData(const uint64_t edge_pulses_count, const uint64_t data_count, const double sample_rate,
  30. EdgePulse* edge_pulses_ptr)
  31. : waveform_data_count(data_count),
  32. edge_pulses_count(edge_pulses_count),
  33. sample_rate(sample_rate),
  34. edgePulsesPtr_(edge_pulses_ptr)
  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 edge_pulses_count, uint64_t data_count, double sample_rate,
  48. EdgePulse* edge_pulses_ptr);
  49. __override TwoLevelEdgePulse* GetDataAddrPtr() const
  50. {
  51. return reinterpret_cast<TwoLevelEdgePulse*>(edgePulsesPtr_);
  52. }
  53. __readonly int32_t levelCount = 2;
  54. };
  55. struct EdgePulseDataThreeLevels : EdgePulseData
  56. {
  57. EdgePulseDataThreeLevels(uint64_t edge_pulses_count, uint64_t data_count, double sample_rate,
  58. EdgePulse* edge_pulses_ptr);
  59. __override TwoLevelEdgePulse* GetDataAddrPtr() const
  60. {
  61. return reinterpret_cast<TwoLevelEdgePulse*>(edgePulsesPtr_);
  62. }
  63. __readonly int32_t levelCount = 3;
  64. };
  65. }