86 lines
1.8 KiB
C++
86 lines
1.8 KiB
C++
|
|
/*
|
|||
|
|
* TableAdcResult.h
|
|||
|
|
*
|
|||
|
|
* Created on: 29 <EFBFBD><EFBFBD><EFBFBD>. 2019 <EFBFBD>.
|
|||
|
|
* Author: titov
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
#ifndef SOURCE_DRIVER_TABLEADCRESULT_H_
|
|||
|
|
#define SOURCE_DRIVER_TABLEADCRESULT_H_
|
|||
|
|
|
|||
|
|
#include "../peripheral/IAdcResult.hpp"
|
|||
|
|
|
|||
|
|
#include <cstddef>
|
|||
|
|
#include <stdint.h>
|
|||
|
|
|
|||
|
|
namespace driver {
|
|||
|
|
|
|||
|
|
class TableAdcResult {
|
|||
|
|
public:
|
|||
|
|
typedef uint16_t Id;
|
|||
|
|
|
|||
|
|
/*!\brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
* \detail
|
|||
|
|
* \param[in] data <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
* \param[in] buff <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
*
|
|||
|
|
*/
|
|||
|
|
TableAdcResult( volatile const uint16_t * * data,
|
|||
|
|
volatile const uint16_t * * buff, Id size );
|
|||
|
|
|
|||
|
|
uint32_t sum() const;
|
|||
|
|
|
|||
|
|
bool is_filled() const;
|
|||
|
|
|
|||
|
|
bool attach( peripheral::IAdcResult<uint16_t> * result, Id position );
|
|||
|
|
|
|||
|
|
virtual ~TableAdcResult() = default;
|
|||
|
|
protected:
|
|||
|
|
volatile const uint16_t * * const buff;
|
|||
|
|
Id quantity;
|
|||
|
|
|
|||
|
|
volatile const uint16_t * * const data;
|
|||
|
|
const Id size;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
class TableAdcAsAdcChannel : public TableAdcResult {
|
|||
|
|
public:
|
|||
|
|
TableAdcAsAdcChannel( volatile const uint16_t * * result,
|
|||
|
|
volatile const uint16_t * * buff, Id size ) : TableAdcResult( result, buff, size ) {}
|
|||
|
|
|
|||
|
|
operator uint32_t() const;
|
|||
|
|
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
class TableAdcAsValue : public TableAdcResult {
|
|||
|
|
public:
|
|||
|
|
TableAdcAsValue( volatile const uint16_t * * result,
|
|||
|
|
volatile const uint16_t * * buff, Id size ) : TableAdcResult( result, buff, size ), result(0),
|
|||
|
|
coeff(0), offset(0) {}
|
|||
|
|
|
|||
|
|
const volatile float & getValue() const;
|
|||
|
|
|
|||
|
|
struct Setting {
|
|||
|
|
float coeff;
|
|||
|
|
float offset;
|
|||
|
|
|
|||
|
|
bool isValid() const;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
bool configure( Setting & config );
|
|||
|
|
|
|||
|
|
void process();
|
|||
|
|
protected:
|
|||
|
|
float result;
|
|||
|
|
|
|||
|
|
float coeff;
|
|||
|
|
float offset;
|
|||
|
|
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
#endif /* SOURCE_DRIVER_TABLEADCRESULT_H_ */
|