11#include <promeki/config.h>
12#if PROMEKI_ENABLE_PROAV
21PROMEKI_NAMESPACE_BEGIN
98 PROMEKI_DATATYPE(AncAfd, DataTypeAncAfd, 1)
108 enum BarFlag : uint8_t {
119 AncAfd(uint8_t afdCode,
bool ar)
120 : _afdCode(static_cast<uint8_t>(afdCode & 0x0F)), _arFlag(ar) {}
125 uint8_t afdCode()
const {
return _afdCode; }
128 void setAfdCode(uint8_t code) { _afdCode =
static_cast<uint8_t
>(code & 0x0F); }
131 bool arFlag()
const {
return _arFlag; }
134 void setArFlag(
bool on) { _arFlag = on; }
139 uint8_t barFlags()
const {
return _barFlags; }
148 void setBarFlags(uint8_t flags) {
149 _barFlags =
static_cast<uint8_t
>(flags & 0xF0);
153 bool hasBarFlag(BarFlag f)
const {
154 return (_barFlags &
static_cast<uint8_t
>(f)) != 0;
158 void setBarFlag(BarFlag f,
bool on) {
159 if (on) _barFlags =
static_cast<uint8_t
>(_barFlags |
static_cast<uint8_t
>(f));
160 else _barFlags =
static_cast<uint8_t
>(_barFlags & ~static_cast<uint8_t>(f));
165 bool topBar()
const {
return hasBarFlag(TopBar); }
166 void setTopBar(
bool on) { setBarFlag(TopBar, on); }
167 bool bottomBar()
const {
return hasBarFlag(BottomBar); }
168 void setBottomBar(
bool on) { setBarFlag(BottomBar, on); }
169 bool leftBar()
const {
return hasBarFlag(LeftBar); }
170 void setLeftBar(
bool on) { setBarFlag(LeftBar, on); }
171 bool rightBar()
const {
return hasBarFlag(RightBar); }
172 void setRightBar(
bool on) { setBarFlag(RightBar, on); }
182 bool hasBarData()
const {
return _barFlags != 0; }
187 uint16_t barValue1()
const {
return _barValue1; }
190 void setBarValue1(uint16_t v) { _barValue1 = v; }
193 uint16_t barValue2()
const {
return _barValue2; }
196 void setBarValue2(uint16_t v) { _barValue2 = v; }
201 bool operator==(
const AncAfd &o)
const {
202 return _afdCode == o._afdCode && _arFlag == o._arFlag &&
203 _barFlags == o._barFlags && _barValue1 == o._barValue1 &&
204 _barValue2 == o._barValue2;
208 bool operator!=(
const AncAfd &o)
const {
return !(*
this == o); }
213 String toString()
const;
216 JsonObject toJson()
const;
221 Error writeToStream(DataStream &s)
const;
224 template <u
int32_t V>
static Result<AncAfd> readFromStream(DataStream &s);
227 uint8_t _afdCode = 0;
228 bool _arFlag =
false;
229 uint8_t _barFlags = 0;
230 uint16_t _barValue1 = 0;
231 uint16_t _barValue2 = 0;