edge_pulse_data.h 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  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. const uint64_t edge_pulses_count_;
  55. const double sample_rate_;
  56. };
  57. struct EdgePulseDataThreeLevels : EdgePulseData
  58. {
  59. EdgePulseDataThreeLevels(uint64_t edge_pulses_count, uint64_t data_count, double sample_rate,
  60. EdgePulse* edge_pulses_ptr);
  61. __override TwoLevelEdgePulse* GetDataAddrPtr() const
  62. {
  63. return reinterpret_cast<TwoLevelEdgePulse*>(edgePulsesPtr_);
  64. }
  65. __readonly int32_t levelCount = 3;
  66. const uint64_t edge_pulses_count_;
  67. const double sample_rate_;
  68. };
  69. }