// // ****************************************************************** // // /\ /| @File edge_pulse_data.h // // \ V/ @Brief // // | "") @Author lijinwen, ghz005@uni-trend.com.cn // // / | @Creation 2024-05-16 // // / \\ @Modified 2024-06-24 // // *(__\_\ // // ****************************************************************** #pragma once #include "edge_pulse.h" //#include "BaseEnums/Channels.h" namespace Protocol { class EdgePulseData { public: /** * \brief 波形数据长度 */ uint64_t waveform_data_count; /** * \brief 边沿脉宽个数 */ uint64_t edge_pulses_count; /** * \brief 采样率 */ double sample_rate; EdgePulseData(const uint64_t edge_pulses_count, const uint64_t data_count, const double sample_rate, EdgePulse* edge_pulses_ptr) : waveform_data_count(data_count), edge_pulses_count(edge_pulses_count), sample_rate(sample_rate), edgePulsesPtr_(edge_pulses_ptr) { } EdgePulse* GetDataAddrPtr() const { return edgePulsesPtr_; //return edgePulsesPtr; } protected: EdgePulse* edgePulsesPtr_; //边沿脉宽数据指针 }; struct EdgePulseDataTwoLevels : EdgePulseData { EdgePulseDataTwoLevels(uint64_t edge_pulses_count, uint64_t data_count, double sample_rate, EdgePulse* edge_pulses_ptr); __override TwoLevelEdgePulse* GetDataAddrPtr() const { return reinterpret_cast(edgePulsesPtr_); } __readonly int32_t levelCount = 2; const uint64_t edge_pulses_count_; const double sample_rate_; }; struct EdgePulseDataThreeLevels : EdgePulseData { EdgePulseDataThreeLevels(uint64_t edge_pulses_count, uint64_t data_count, double sample_rate, EdgePulse* edge_pulses_ptr); __override TwoLevelEdgePulse* GetDataAddrPtr() const { return reinterpret_cast(edgePulsesPtr_); } __readonly int32_t levelCount = 3; const uint64_t edge_pulses_count_; const double sample_rate_; }; }