/*
 * Copyright (c) 2024 Markus Lehr.
 * 
 *
 * SPDX-License-Identifier: Owend property of Markus Lehr
 * 
 */

#ifndef RTS_INCLUDE_RTSMONFRAME_H_
#define RTS_INCLUDE_RTSMONFRAME_H_

#include <string>
#include <list>
#include <ISensorDesc.h>

using json = nlohmann::json;


struct vRCMDeviceData {
	uint32_t  packageNo;  //current package Number
	uint32_t  packageCount; //complete package Number
	uint32_t  dataQuantity;	//number of uint32_t in data
	uint32_t  data[]; //the data
};


class RTSMonFrame
{
private:
    /* data */
    std::string id;
    std::string name;
    int samplerate;
    int sampleperiod;
    int downtime;
    std::list<std::shared_ptr<ISensorDesc>> mSenorDesriptions;
    std::string path;

public:
    
   RTSMonFrame(std::string id, std::string name, int samplerate, int sampleperiod, int downtime, const std::list<std::shared_ptr<ISensorDesc>>& sensDesc, std::string path);
   
   ~RTSMonFrame();

   std::string GetId();

   void SetName(const std::string& name);

   const std::string& GetName();
 
   void SetSampleRate(int samplerate);

   int GetSampleRate();

   void SetSamplePeriod(int sampleperiod);   

   int GetSamplePeriod();
   
   void SetDownTime(int downtime);   
   
   int GetDownTime();
   
   bool generate(u_int32_t* values, u_int32_t length);
};


#endif /* RTS_INCLUDE_RTSMONFRAME_H_ */