// // ****************************************************************** // // /\ /| @File EdgePulseData.h // // \ V/ @Brief // // | "") @Author lijinwen, ghz005@uni-trend.com.cn // // / | @Creation 2024-3-14 // // / \\ @Modified 2024-5-13 // // *(__\_\ // // ****************************************************************** #pragma once #include "EdgePulse.h" //#include "BaseEnums/Channels.h" namespace Protocol { struct EdgePulseData { public: /** * \brief 波形数据长度 */ uint64_t WaveformDataCount; /** * \brief 边沿脉宽个数 */ uint64_t EdgePulsesCount; /** * \brief 采样率 */ double SampleRate; EdgePulseData(uint64_t edgePulsesCount, uint64_t dataCount, double sampleRate, EdgePulse* edgePulsesPtr) : WaveformDataCount(dataCount), EdgePulsesCount(edgePulsesCount), SampleRate(sampleRate), EdgePulsesPtr_(edgePulsesPtr) { } EdgePulse* GetDataAddrPtr() const { return EdgePulsesPtr_; //return edgePulsesPtr; } protected: EdgePulse* EdgePulsesPtr_; //边沿脉宽数据指针 }; struct EdgePulseDataTwoLevels : EdgePulseData { EdgePulseDataTwoLevels(uint64_t edgePulsesCount, uint64_t dataCount, double sampleRate, EdgePulse* edgePulsesPtr); __override TwoLevelEdgePulse* GetDataAddrPtr() const { return reinterpret_cast(EdgePulsesPtr_); } public: __readonly int32_t LevelCount = 2; }; struct EdgePulseDataThreeLevels : EdgePulseData { EdgePulseDataThreeLevels(uint64_t edgePulsesCount, uint64_t dataCount, double sampleRate, EdgePulse* edgePulsesPtr); __override TwoLevelEdgePulse* GetDataAddrPtr() const { return reinterpret_cast(EdgePulsesPtr_); } public: __readonly int32_t LevelCount = 3; }; }