42 lines
935 B
C++
42 lines
935 B
C++
|
|
/*
|
|||
|
|
* Bitmap2Signal.hpp
|
|||
|
|
*
|
|||
|
|
* Created on: 13 <EFBFBD><EFBFBD><EFBFBD>. 2020 <EFBFBD>.
|
|||
|
|
* Author: s.maksimenko
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
#ifndef UMLIBRARY_SCHEMATIC_BITMAPU16TOSIGNAL_HPP_
|
|||
|
|
#define UMLIBRARY_SCHEMATIC_BITMAPU16TOSIGNAL_HPP_
|
|||
|
|
|
|||
|
|
#include <cstddef>
|
|||
|
|
#include <stdint.h>
|
|||
|
|
|
|||
|
|
#include "../systemic/ISignal.hh"
|
|||
|
|
|
|||
|
|
namespace schematic {
|
|||
|
|
|
|||
|
|
class BitmapU16ToSignal : public systemic::ISignal
|
|||
|
|
{
|
|||
|
|
public:
|
|||
|
|
struct Setting {
|
|||
|
|
uint16_t iFirstBit;// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
|
uint16_t nBits;// <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
bool bInvCode;// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
|
};
|
|||
|
|
private:
|
|||
|
|
Setting mSett;
|
|||
|
|
volatile uint16_t& mBitmap;
|
|||
|
|
public:
|
|||
|
|
BitmapU16ToSignal( volatile uint16_t& bitmapU16, const Setting& sett) :
|
|||
|
|
mBitmap(bitmapU16), mSett(sett){}
|
|||
|
|
operator float() const {
|
|||
|
|
return ((mBitmap ^ (mSett.bInvCode ? ~0: 0)) >> mSett.iFirstBit) & ((1u << mSett.nBits) - 1);
|
|||
|
|
}
|
|||
|
|
};// !BitmapU16ToSignal
|
|||
|
|
|
|||
|
|
} // namespace schematic
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
#endif /* UMLIBRARY_SCHEMATIC_BITMAPU16TOSIGNAL_HPP_ */
|