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

#ifndef RTS_INCLUDE_ICHANNELDESC_H_
#define RTS_INCLUDE_ICHANNELDESC_H_

#include <string>
#include <list>



enum VALUEFORMAT {
   UINT32 = 0,
   INT32,
   FLOAT,
   DOUBLE,
};


union rtsSensorValue
{
    uint32_t vUINT32;
    int32_t  vINT32;    
    float    vFLOAT;
    double   vDOUBLE;    
};

static const std::string RTSMONCHANNELNAME("name");
static const std::string RTSMONCHANNELVALUE("value");
static const std::string RTSMONCHANNELVALUETYPE("valuetype");



class IChannelDesc
{
   

public:
   virtual u_int32_t GetId() = 0;

   
   virtual const std::string& GetName() = 0;


   virtual VALUEFORMAT GetValueFormat() = 0;

   /**
    * return the length of the data that is neeeded for one value of the channel in UINT32 
    * 
    */
   virtual u_int32_t GetValueByteSpace() = 0;   
   
};

#endif /* RTS_INCLUDE_ICHANNELDESC_H_ */