tcMenu
Toggle main menu visibility
Loading...
Searching...
No Matches
src
MenuItems.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2018 https://www.thecoderscorner.com (Dave Cherry).
3
* This product is licensed under an Apache license, see the LICENSE file in the top-level directory.
4
*/
5
13
14
#ifndef _MENUITEMS_h
15
#define _MENUITEMS_h
16
17
#define INFO_LOCATION_PGM true
18
#define INFO_LOCATION_RAM false
19
20
#include <PlatformDetermination.h>
21
#include <IoAbstraction.h>
22
24
#define MAXIMUM_ID_ALLOWED 32000
25
26
typedef
uint16_t menuid_t;
27
29
#define INVALID_MENU_ID 0xffff
30
32
#ifndef NAME_SIZE_T
33
#define NAME_SIZE_T 20
34
#endif
// NAME_SIZE_T
35
37
#ifndef UNIT_SIZE_T
38
#define UNIT_SIZE_T 5
39
#endif
// NAME_SIZE_T
40
42
#define NO_CALLBACK NULL
43
45
typedef
void (*
MenuCallbackFn
)(
int
id);
46
51
struct
AnyMenuInfo
{
53
char
name
[NAME_SIZE_T];
55
menuid_t
id
;
57
uint16_t
eepromAddr
;
59
uint16_t
maxValue
;
61
MenuCallbackFn
callback
;
62
};
63
71
struct
AnalogMenuInfo
{
73
char
name
[NAME_SIZE_T];
75
menuid_t
id
;
77
uint16_t
eepromAddr
;
79
uint16_t
maxValue
;
81
MenuCallbackFn
callback
;
82
87
int16_t
offset
;
94
uint16_t
divisor
;
98
char
unitName
[UNIT_SIZE_T];
99
};
100
108
struct
EnumMenuInfo
{
110
char
name
[NAME_SIZE_T];
112
menuid_t
id
;
114
uint16_t
eepromAddr
;
116
uint16_t
maxValue
;
118
MenuCallbackFn
callback
;
119
128
const
char
*
const
*
menuItems
;
129
};
130
134
enum
BooleanNaming
: uint8_t {
136
NAMING_TRUE_FALSE
= 0,
138
NAMING_ON_OFF
,
140
NAMING_YES_NO
,
142
NAMING_CHECKBOX
143
};
144
151
struct
BooleanMenuInfo
{
153
char
name
[NAME_SIZE_T];
155
menuid_t
id
;
157
uint16_t
eepromAddr
;
159
uint16_t
maxValue
;
161
MenuCallbackFn
callback
;
162
167
BooleanNaming
naming
;
168
};
169
176
typedef
AnyMenuInfo
SubMenuInfo
;
177
182
struct
FloatMenuInfo
{
184
char
name
[NAME_SIZE_T];
186
menuid_t
id
;
188
uint16_t
eepromAddr
;
190
uint16_t
numDecimalPlaces
;
192
MenuCallbackFn
callback
;
193
};
194
195
union
AllMenuInfoTypes
{
196
AnyMenuInfo
anyInfo;
197
AnalogMenuInfo
analogInfo;
198
EnumMenuInfo
enumInfo;
199
BooleanMenuInfo
booleanInfo;
200
SubMenuInfo
subInfo;
201
FloatMenuInfo
floatInfo;
202
};
203
207
enum
Flags
: uint8_t {
209
MENUITEM_CHANGED
= 0,
211
MENUITEM_CHANGED_1
= 1,
213
MENUITEM_READONLY
= 3,
215
MENUITEM_LOCAL_ONLY
= 4,
217
MENUITEM_PIN_SECURED
= 5,
219
MENUITEM_PIN_VISIBLE
= 6,
221
MENUITEM_INFO_STRUCT_PGM
= 7,
222
224
MENUITEM_REMOTE_SEND0
= 10,
226
MENUITEM_REMOTE_SEND1
= 11,
228
MENUITEM_REMOTE_SEND2
= 12,
230
MENUITEM_REMOTE_SEND3
= 13,
232
MENUITEM_REMOTE_SEND4
= 14,
234
MENUITEM_REMOTE_SEND5
= 15
235
};
236
237
#define MENUITEM_ALL_REMOTES 0xFC00
238
#define MENUITEM_ALL_CHANGE 0x0003
239
247
enum
MenuType
: uint8_t {
249
MENUTYPE_INT_VALUE
= 1,
251
MENUTYPE_ENUM_VALUE
= 2,
253
MENUTYPE_BOOLEAN_VALUE
= 3,
255
MENUTYPE_FLOAT_VALUE
= 101,
257
MENUTYPE_ACTION_VALUE
= 102,
259
MENUTYPE_RUNTIME_VALUE
= 150,
261
MENUTYPE_RUNTIME_LIST
= 151,
263
MENUTYPE_BACK_VALUE
= 152,
265
MENUTYPE_ACTIVATE_SUBMENU
= 153,
267
MENUTYPE_SCROLLER_VALUE
= 154,
269
MENUTYPE_SUB_VALUE
= 155,
271
MENUTYPE_TITLE_ITEM
= 156,
273
MENUTYPE_DIALOG_BUTTON
= 157,
274
276
MENUTYPE_TEXT_VALUE
= 200,
278
MENUTYPE_IPADDRESS
= 201,
280
MENUTYPE_TIME
= 202,
282
MENUTYPE_DATE
= 203,
284
MENUTYPE_LARGENUM_VALUE
= 210,
286
MENUTYPE_COLOR_VALUE
= 211
287
};
288
292
enum
RenderFnMode
: uint8_t {
294
RENDERFN_VALUE
,
296
RENDERFN_NAME
,
298
RENDERFN_EEPROM_POS
,
300
RENDERFN_INVOKE
,
302
RENDERFN_ACTIVATE
,
304
RENDERFN_SET_VALUE
,
306
RENDERFN_GETRANGE
,
308
RENDERFN_GETPART
,
310
RENDERFN_SET_TEXT_VALUE
311
};
312
313
// forward reference
314
class
RuntimeMenuItem
;
315
327
typedef
int(*
RuntimeRenderingFn
)(
RuntimeMenuItem
* item, uint8_t row,
RenderFnMode
mode,
char
* buffer,
int
bufferSize);
328
338
class
MenuItem
{
339
protected
:
340
uint16_t flags;
341
MenuItem
* next;
343
const
AnyMenuInfo
*
info
=
nullptr
;
344
RuntimeRenderingFn
renderFn =
nullptr
;
345
MenuType
menuType;
346
public
:
347
353
uint8_t
copyNameToBuffer
(
char
* sz,
int
size)
const
{
return
copyNameToBuffer
(sz, 0, size);}
354
362
uint8_t
copyNameToBuffer
(
char
* sz,
int
offset,
int
size)
const
;
364
menuid_t
getId
()
const
;
366
uint16_t
getMaximumValue
()
const
;
368
uint16_t
getEepromPosition
()
const
;
370
MenuType
getMenuType
()
const
{
return
menuType; }
372
void
triggerCallback
()
const
;
373
374
bool
isInfoProgMem()
const
{
return
bitRead(flags,
MENUITEM_INFO_STRUCT_PGM
); }
375
378
void
setChanged
(
bool
changed);
380
void
setChanged
(
int
num,
bool
changed) { bitWrite(flags, (num & 3), changed); }
382
bool
isChanged
(
int
num = 0)
const
{
return
bitRead(flags, (num & 3)); }
384
bool
isSendRemoteNeeded
(uint8_t remoteNo)
const
;
386
void
setSendRemoteNeededAll
();
388
void
clearSendRemoteNeededAll
();
390
void
setSendRemoteNeeded
(uint8_t remoteNo,
bool
needed);
391
393
void
setReadOnly
(
bool
active) { bitWrite(flags,
MENUITEM_READONLY
, active); }
395
bool
isReadOnly
()
const
{
return
bitRead(flags,
MENUITEM_READONLY
); }
396
398
void
setLocalOnly
(
bool
localOnly) { bitWrite(flags,
MENUITEM_LOCAL_ONLY
, localOnly); }
400
bool
isLocalOnly
()
const
{
return
bitRead(flags,
MENUITEM_LOCAL_ONLY
); }
401
403
void
setSecured
(
bool
secured) { bitWrite(flags,
MENUITEM_PIN_SECURED
, secured); }
405
bool
isSecured
()
const
{
return
bitRead(flags,
MENUITEM_PIN_SECURED
); }
406
408
void
setVisible
(
bool
visible) { bitWrite(flags,
MENUITEM_PIN_VISIBLE
, visible); }
410
bool
isVisible
()
const
{
return
bitRead(flags,
MENUITEM_PIN_VISIBLE
); }
411
413
MenuItem
*
getNext
()
const
{
return
next; }
415
void
setNext
(
MenuItem
* pNext) { this->next = pNext; }
416
420
void
changeOccurred
(
bool
silent);
421
protected
:
425
MenuItem
(
MenuType
menuType,
const
AnyMenuInfo
* menuInfo,
MenuItem
* next,
bool
infoProgMem);
426
427
};
428
433
class
ValueMenuItem
:
public
MenuItem
{
434
protected
:
435
uint16_t currentValue;
436
438
ValueMenuItem
(
MenuType
menuType,
const
AnyMenuInfo
*
info
, uint16_t defaultVal,
MenuItem
* next,
bool
infoPgm)
439
:
MenuItem
(menuType,
info
, next, infoPgm) {
440
this->currentValue = defaultVal;
441
}
442
public
:
444
void
setCurrentValue
(uint16_t val,
bool
silent =
false
);
445
447
uint16_t
getCurrentValue
()
const
{
return
currentValue; }
448
};
449
454
struct
WholeAndFraction {
455
public
:
456
WholeAndFraction() {
457
this->whole = this->fraction = this->negative = 0;
458
}
459
460
WholeAndFraction(
const
WholeAndFraction& that) {
461
this->whole = that.whole;
462
this->fraction = that.fraction;
463
this->negative = that.negative;
464
}
465
466
WholeAndFraction(uint16_t whole, uint16_t fract,
bool
negative) {
467
this->whole = whole;
468
this->fraction = fract;
469
this->negative = negative;
470
}
471
uint32_t whole: 15;
472
uint32_t fraction: 16;
473
uint32_t negative: 1;
474
};
475
485
class
AnalogMenuItem
:
public
ValueMenuItem
{
486
private
:
487
int8_t step = 1;
488
public
:
496
AnalogMenuItem
(
const
AnalogMenuInfo
*
info
, uint16_t defaultVal,
MenuItem
* next =
nullptr
,
bool
infoInPgm = INFO_LOCATION_PGM)
497
:
ValueMenuItem
(
MENUTYPE_INT_VALUE
, (const
AnyMenuInfo
*)
info
, defaultVal, next, infoInPgm) {;}
498
500
int
getOffset
()
const
;
501
503
int
getStep
()
const
{
return
step; }
504
506
void
setStep
(
int
newStep) { step = newStep; }
507
509
uint16_t
getDivisor
()
const
;
510
512
int
unitNameLength
()
const
;
513
515
void
copyUnitToBuffer
(
char
* unitBuff, uint8_t size = 5)
const
;
516
522
void
copyValue
(
char
* buffer, uint8_t bufferSize)
const
;
523
524
530
float
getAsFloatingPointValue
()
const
;
531
536
void
setFromFloatingPointValue
(
float
value);
537
538
int
getIntValueIncludingOffset() {
return
(
int
)currentValue + (int)
getOffset
(); }
539
545
WholeAndFraction
getWholeAndFraction
()
const
;
546
552
void
setFromWholeAndFraction
(WholeAndFraction wf);
553
557
uint8_t
getDecimalPlacesForDivisor
()
const
;
558
562
uint16_t
getActualDecimalDivisor
()
const
;
563
};
564
575
class
EnumMenuItem
:
public
ValueMenuItem
{
576
public
:
584
EnumMenuItem
(
const
EnumMenuInfo
*
info
, uint8_t defaultVal,
MenuItem
* next =
nullptr
,
bool
infoInPgm = INFO_LOCATION_PGM)
585
:
ValueMenuItem
(
MENUTYPE_ENUM_VALUE
, (const
AnyMenuInfo
*)
info
, defaultVal, next, infoInPgm) {;}
586
592
void
copyEnumStrToBuffer
(
char
* buffer,
int
size,
int
idx)
const
;
593
598
int
getLengthOfEnumStr
(
int
idx)
const
;
599
};
600
606
class
BooleanMenuItem
:
public
ValueMenuItem
{
607
public
:
615
BooleanMenuItem
(
const
BooleanMenuInfo
*
info
,
bool
defaultVal,
MenuItem
* next =
nullptr
,
bool
infoInPgm = INFO_LOCATION_PGM)
616
:
ValueMenuItem
(
MENUTYPE_BOOLEAN_VALUE
, (const
AnyMenuInfo
*)
info
, defaultVal, next, infoInPgm) {;}
617
621
BooleanNaming
getBooleanNaming
()
const
;
622
624
bool
getBoolean
()
const
{
return
currentValue != 0;}
626
void
setBoolean
(
bool
b,
bool
silent =
false
) {
setCurrentValue
(b, silent);}
627
};
628
634
class
FloatMenuItem
:
public
MenuItem
{
635
private
:
636
float
currValue;
637
public
:
645
FloatMenuItem
(
const
FloatMenuInfo
*
info
,
MenuItem
* next,
bool
infoInPgm = INFO_LOCATION_PGM)
646
:
MenuItem
(
MENUTYPE_FLOAT_VALUE
, (const
AnyMenuInfo
*)
info
, next, infoInPgm) { currValue = 0; }
647
656
FloatMenuItem
(
const
FloatMenuInfo
*
info
,
float
current,
MenuItem
* next,
bool
infoInPgm = INFO_LOCATION_PGM)
657
:
MenuItem
(
MENUTYPE_FLOAT_VALUE
, (const
AnyMenuInfo
*)
info
, next, infoInPgm) { currValue = current; }
658
662
int
getDecimalPlaces
()
const
;
663
667
void
setFloatValue
(
float
newVal,
bool
silent =
false
);
668
672
float
getFloatValue
()
const
{
return
currValue; }
673
};
674
675
681
class
ActionMenuItem
:
public
MenuItem
{
682
public
:
689
ActionMenuItem
(
const
AnyMenuInfo
*
info
,
MenuItem
* next,
bool
infoInProgmem = INFO_LOCATION_PGM)
690
:
MenuItem
(
MENUTYPE_ACTION_VALUE
,
info
, next, infoInProgmem) {;}
691
};
692
693
// forward reference
694
class
RuntimeMenuItem
;
695
702
void
copyMenuItemValue
(
const
MenuItem
* item,
char
* buffer,
size_t
bufferSize,
bool
active =
false
);
703
711
void
copyMenuItemNameAndValue
(
const
MenuItem
* item,
char
* buffer,
size_t
bufferSize,
char
additionalSep =
':'
,
bool
active =
false
);
712
717
void
copyMenuItemValueDefault
(
const
MenuItem
* item,
char
* buffer,
size_t
bufferSize,
const
char
* defValue,
bool
active =
false
);
718
722
inline
bool
isMenuBasedOnValueItem
(
const
MenuItem
* item) {
723
if
(item ==
nullptr
)
return
false
;
724
auto
ty = uint8_t(item->
getMenuType
());
725
return
ty ==
MENUTYPE_INT_VALUE
|| ty ==
MENUTYPE_ENUM_VALUE
|| ty ==
MENUTYPE_BOOLEAN_VALUE
;
726
}
727
731
inline
bool
isMenuRuntime
(
const
MenuItem
* t) {
732
return
t && (uint8_t(t->
getMenuType
()) >= uint8_t(
MENUTYPE_RUNTIME_VALUE
));
733
}
734
738
inline
bool
isMenuRuntimeMultiEdit
(
const
MenuItem
* t) {
739
return
t && (uint8_t(t->
getMenuType
()) >= uint8_t(
MENUTYPE_TEXT_VALUE
));
740
}
741
747
inline
const
RuntimeMenuItem
*
asRuntimeItem
(
const
MenuItem
* i) {
748
return
reinterpret_cast<
const
RuntimeMenuItem
*
>
(i);
749
}
750
751
#endif
EnumMenuInfo::menuItems
const char *const * menuItems
Definition
MenuItems.h:128
EnumMenuInfo::callback
MenuCallbackFn callback
Definition
MenuItems.h:118
AnalogMenuInfo::eepromAddr
uint16_t eepromAddr
Definition
MenuItems.h:77
isMenuRuntime
bool isMenuRuntime(const MenuItem *t)
Definition
MenuItems.h:731
AnalogMenuInfo::maxValue
uint16_t maxValue
Definition
MenuItems.h:79
copyMenuItemNameAndValue
void copyMenuItemNameAndValue(const MenuItem *item, char *buffer, size_t bufferSize, char additionalSep=':', bool active=false)
Definition
MenuItems.cpp:320
AnyMenuInfo::eepromAddr
uint16_t eepromAddr
Definition
MenuItems.h:57
EnumMenuInfo::name
char name[NAME_SIZE_T]
Definition
MenuItems.h:110
EnumMenuInfo::eepromAddr
uint16_t eepromAddr
Definition
MenuItems.h:114
BooleanMenuInfo::eepromAddr
uint16_t eepromAddr
Definition
MenuItems.h:157
FloatMenuInfo::numDecimalPlaces
uint16_t numDecimalPlaces
Definition
MenuItems.h:190
FloatMenuInfo::id
menuid_t id
Definition
MenuItems.h:186
AnalogMenuInfo::unitName
char unitName[UNIT_SIZE_T]
Definition
MenuItems.h:98
FloatMenuInfo::eepromAddr
uint16_t eepromAddr
Definition
MenuItems.h:188
AnyMenuInfo::maxValue
uint16_t maxValue
Definition
MenuItems.h:59
EnumMenuInfo::id
menuid_t id
Definition
MenuItems.h:112
SubMenuInfo
AnyMenuInfo SubMenuInfo
Definition
MenuItems.h:176
BooleanMenuInfo::callback
MenuCallbackFn callback
Definition
MenuItems.h:161
AnalogMenuInfo::callback
MenuCallbackFn callback
Definition
MenuItems.h:81
RenderFnMode
RenderFnMode
Definition
MenuItems.h:292
RENDERFN_EEPROM_POS
@ RENDERFN_EEPROM_POS
Definition
MenuItems.h:298
RENDERFN_INVOKE
@ RENDERFN_INVOKE
Definition
MenuItems.h:300
RENDERFN_NAME
@ RENDERFN_NAME
Definition
MenuItems.h:296
RENDERFN_ACTIVATE
@ RENDERFN_ACTIVATE
Definition
MenuItems.h:302
RENDERFN_GETRANGE
@ RENDERFN_GETRANGE
Definition
MenuItems.h:306
RENDERFN_GETPART
@ RENDERFN_GETPART
Definition
MenuItems.h:308
RENDERFN_VALUE
@ RENDERFN_VALUE
Definition
MenuItems.h:294
RENDERFN_SET_VALUE
@ RENDERFN_SET_VALUE
Definition
MenuItems.h:304
RENDERFN_SET_TEXT_VALUE
@ RENDERFN_SET_TEXT_VALUE
Definition
MenuItems.h:310
FloatMenuInfo::callback
MenuCallbackFn callback
Definition
MenuItems.h:192
BooleanMenuInfo::maxValue
uint16_t maxValue
Definition
MenuItems.h:159
asRuntimeItem
const RuntimeMenuItem * asRuntimeItem(const MenuItem *i)
Definition
MenuItems.h:747
AnyMenuInfo::id
menuid_t id
Definition
MenuItems.h:55
AnyMenuInfo::name
char name[NAME_SIZE_T]
Definition
MenuItems.h:53
copyMenuItemValue
void copyMenuItemValue(const MenuItem *item, char *buffer, size_t bufferSize, bool active=false)
Definition
MenuItems.cpp:332
AnalogMenuInfo::id
menuid_t id
Definition
MenuItems.h:75
AnyMenuInfo::callback
MenuCallbackFn callback
Definition
MenuItems.h:61
copyMenuItemValueDefault
void copyMenuItemValueDefault(const MenuItem *item, char *buffer, size_t bufferSize, const char *defValue, bool active=false)
Definition
MenuItems.cpp:387
BooleanMenuInfo::name
char name[NAME_SIZE_T]
Definition
MenuItems.h:153
BooleanMenuInfo::id
menuid_t id
Definition
MenuItems.h:155
AnalogMenuInfo::name
char name[NAME_SIZE_T]
Definition
MenuItems.h:73
isMenuRuntimeMultiEdit
bool isMenuRuntimeMultiEdit(const MenuItem *t)
Definition
MenuItems.h:738
RuntimeRenderingFn
int(* RuntimeRenderingFn)(RuntimeMenuItem *item, uint8_t row, RenderFnMode mode, char *buffer, int bufferSize)
Definition
MenuItems.h:327
FloatMenuInfo::name
char name[NAME_SIZE_T]
Definition
MenuItems.h:184
Flags
Flags
Definition
MenuItems.h:207
MENUITEM_REMOTE_SEND5
@ MENUITEM_REMOTE_SEND5
Definition
MenuItems.h:234
MENUITEM_REMOTE_SEND4
@ MENUITEM_REMOTE_SEND4
Definition
MenuItems.h:232
MENUITEM_INFO_STRUCT_PGM
@ MENUITEM_INFO_STRUCT_PGM
Definition
MenuItems.h:221
MENUITEM_REMOTE_SEND2
@ MENUITEM_REMOTE_SEND2
Definition
MenuItems.h:228
MENUITEM_READONLY
@ MENUITEM_READONLY
Definition
MenuItems.h:213
MENUITEM_PIN_VISIBLE
@ MENUITEM_PIN_VISIBLE
Definition
MenuItems.h:219
MENUITEM_CHANGED_1
@ MENUITEM_CHANGED_1
Definition
MenuItems.h:211
MENUITEM_LOCAL_ONLY
@ MENUITEM_LOCAL_ONLY
Definition
MenuItems.h:215
MENUITEM_REMOTE_SEND1
@ MENUITEM_REMOTE_SEND1
Definition
MenuItems.h:226
MENUITEM_PIN_SECURED
@ MENUITEM_PIN_SECURED
Definition
MenuItems.h:217
MENUITEM_CHANGED
@ MENUITEM_CHANGED
Definition
MenuItems.h:209
MENUITEM_REMOTE_SEND3
@ MENUITEM_REMOTE_SEND3
Definition
MenuItems.h:230
MENUITEM_REMOTE_SEND0
@ MENUITEM_REMOTE_SEND0
Definition
MenuItems.h:224
AnalogMenuInfo::divisor
uint16_t divisor
Definition
MenuItems.h:94
MenuCallbackFn
void(* MenuCallbackFn)(int id)
Definition
MenuItems.h:45
AnalogMenuInfo::offset
int16_t offset
Definition
MenuItems.h:87
isMenuBasedOnValueItem
bool isMenuBasedOnValueItem(const MenuItem *item)
Definition
MenuItems.h:722
BooleanMenuInfo::naming
BooleanNaming naming
Definition
MenuItems.h:167
BooleanNaming
BooleanNaming
Definition
MenuItems.h:134
NAMING_ON_OFF
@ NAMING_ON_OFF
Definition
MenuItems.h:138
NAMING_TRUE_FALSE
@ NAMING_TRUE_FALSE
Definition
MenuItems.h:136
NAMING_CHECKBOX
@ NAMING_CHECKBOX
Definition
MenuItems.h:142
NAMING_YES_NO
@ NAMING_YES_NO
Definition
MenuItems.h:140
MenuType
MenuType
Definition
MenuItems.h:247
MENUTYPE_DIALOG_BUTTON
@ MENUTYPE_DIALOG_BUTTON
Definition
MenuItems.h:273
MENUTYPE_COLOR_VALUE
@ MENUTYPE_COLOR_VALUE
Definition
MenuItems.h:286
MENUTYPE_IPADDRESS
@ MENUTYPE_IPADDRESS
Definition
MenuItems.h:278
MENUTYPE_DATE
@ MENUTYPE_DATE
Definition
MenuItems.h:282
MENUTYPE_INT_VALUE
@ MENUTYPE_INT_VALUE
Definition
MenuItems.h:249
MENUTYPE_ENUM_VALUE
@ MENUTYPE_ENUM_VALUE
Definition
MenuItems.h:251
MENUTYPE_SUB_VALUE
@ MENUTYPE_SUB_VALUE
Definition
MenuItems.h:269
MENUTYPE_TIME
@ MENUTYPE_TIME
Definition
MenuItems.h:280
MENUTYPE_SCROLLER_VALUE
@ MENUTYPE_SCROLLER_VALUE
Definition
MenuItems.h:267
MENUTYPE_FLOAT_VALUE
@ MENUTYPE_FLOAT_VALUE
Definition
MenuItems.h:255
MENUTYPE_BOOLEAN_VALUE
@ MENUTYPE_BOOLEAN_VALUE
Definition
MenuItems.h:253
MENUTYPE_TEXT_VALUE
@ MENUTYPE_TEXT_VALUE
Definition
MenuItems.h:276
MENUTYPE_TITLE_ITEM
@ MENUTYPE_TITLE_ITEM
Definition
MenuItems.h:271
MENUTYPE_ACTION_VALUE
@ MENUTYPE_ACTION_VALUE
Definition
MenuItems.h:257
MENUTYPE_RUNTIME_LIST
@ MENUTYPE_RUNTIME_LIST
Definition
MenuItems.h:261
MENUTYPE_BACK_VALUE
@ MENUTYPE_BACK_VALUE
Definition
MenuItems.h:263
MENUTYPE_RUNTIME_VALUE
@ MENUTYPE_RUNTIME_VALUE
Definition
MenuItems.h:259
MENUTYPE_ACTIVATE_SUBMENU
@ MENUTYPE_ACTIVATE_SUBMENU
Definition
MenuItems.h:265
MENUTYPE_LARGENUM_VALUE
@ MENUTYPE_LARGENUM_VALUE
Definition
MenuItems.h:284
EnumMenuInfo::maxValue
uint16_t maxValue
Definition
MenuItems.h:116
AnalogMenuInfo
Definition
MenuItems.h:71
AnyMenuInfo
Definition
MenuItems.h:51
BooleanMenuInfo
Definition
MenuItems.h:151
EnumMenuInfo
Definition
MenuItems.h:108
FloatMenuInfo
Definition
MenuItems.h:182
AllMenuInfoTypes
Definition
MenuItems.h:195
ActionMenuItem::ActionMenuItem
ActionMenuItem(const AnyMenuInfo *info, MenuItem *next, bool infoInProgmem=INFO_LOCATION_PGM)
Definition
MenuItems.h:689
AnalogMenuItem::getWholeAndFraction
WholeAndFraction getWholeAndFraction() const
Definition
MenuItems.cpp:207
AnalogMenuItem::setFromFloatingPointValue
void setFromFloatingPointValue(float value)
Definition
MenuItems.cpp:243
AnalogMenuItem::AnalogMenuItem
AnalogMenuItem(const AnalogMenuInfo *info, uint16_t defaultVal, MenuItem *next=nullptr, bool infoInPgm=INFO_LOCATION_PGM)
Definition
MenuItems.h:496
AnalogMenuItem::copyValue
void copyValue(char *buffer, uint8_t bufferSize) const
Definition
MenuItems.cpp:175
AnalogMenuItem::setFromWholeAndFraction
void setFromWholeAndFraction(WholeAndFraction wf)
Definition
MenuItems.cpp:226
AnalogMenuItem::getAsFloatingPointValue
float getAsFloatingPointValue() const
Definition
MenuItems.cpp:191
AnalogMenuItem::getOffset
int getOffset() const
Definition
MenuItems.cpp:262
AnalogMenuItem::unitNameLength
int unitNameLength() const
Definition
MenuItems.cpp:272
AnalogMenuItem::setStep
void setStep(int newStep)
Definition
MenuItems.h:506
AnalogMenuItem::getActualDecimalDivisor
uint16_t getActualDecimalDivisor() const
Definition
MenuItems.cpp:201
AnalogMenuItem::getDecimalPlacesForDivisor
uint8_t getDecimalPlacesForDivisor() const
Definition
MenuItems.cpp:255
AnalogMenuItem::copyUnitToBuffer
void copyUnitToBuffer(char *unitBuff, uint8_t size=5) const
Definition
MenuItems.cpp:277
AnalogMenuItem::getStep
int getStep() const
Definition
MenuItems.h:503
AnalogMenuItem::getDivisor
uint16_t getDivisor() const
Definition
MenuItems.cpp:267
BooleanMenuItem::getBoolean
bool getBoolean() const
Definition
MenuItems.h:624
BooleanMenuItem::BooleanMenuItem
BooleanMenuItem(const BooleanMenuInfo *info, bool defaultVal, MenuItem *next=nullptr, bool infoInPgm=INFO_LOCATION_PGM)
Definition
MenuItems.h:615
BooleanMenuItem::getBooleanNaming
BooleanNaming getBooleanNaming() const
Definition
MenuItems.cpp:288
BooleanMenuItem::setBoolean
void setBoolean(bool b, bool silent=false)
Definition
MenuItems.h:626
EnumMenuItem::getLengthOfEnumStr
int getLengthOfEnumStr(int idx) const
Definition
MenuItems.cpp:141
EnumMenuItem::copyEnumStrToBuffer
void copyEnumStrToBuffer(char *buffer, int size, int idx) const
Definition
MenuItems.cpp:129
EnumMenuItem::EnumMenuItem
EnumMenuItem(const EnumMenuInfo *info, uint8_t defaultVal, MenuItem *next=nullptr, bool infoInPgm=INFO_LOCATION_PGM)
Definition
MenuItems.h:584
FloatMenuItem::setFloatValue
void setFloatValue(float newVal, bool silent=false)
Definition
MenuItems.cpp:293
FloatMenuItem::getDecimalPlaces
int getDecimalPlaces() const
Definition
MenuItems.cpp:300
FloatMenuItem::FloatMenuItem
FloatMenuItem(const FloatMenuInfo *info, MenuItem *next, bool infoInPgm=INFO_LOCATION_PGM)
Definition
MenuItems.h:645
FloatMenuItem::getFloatValue
float getFloatValue() const
Definition
MenuItems.h:672
FloatMenuItem::FloatMenuItem
FloatMenuItem(const FloatMenuInfo *info, float current, MenuItem *next, bool infoInPgm=INFO_LOCATION_PGM)
Definition
MenuItems.h:656
MenuItem
Definition
MenuItems.h:338
MenuItem::isReadOnly
bool isReadOnly() const
Definition
MenuItems.h:395
MenuItem::setChanged
void setChanged(bool changed)
Definition
MenuItems.cpp:112
MenuItem::isLocalOnly
bool isLocalOnly() const
Definition
MenuItems.h:400
MenuItem::setLocalOnly
void setLocalOnly(bool localOnly)
Definition
MenuItems.h:398
MenuItem::changeOccurred
void changeOccurred(bool silent)
Definition
MenuItems.cpp:99
MenuItem::getId
menuid_t getId() const
Definition
MenuItems.cpp:81
MenuItem::MenuItem
MenuItem(MenuType menuType, const AnyMenuInfo *menuInfo, MenuItem *next, bool infoProgMem)
Definition
MenuItems.cpp:12
MenuItem::setReadOnly
void setReadOnly(bool active)
Definition
MenuItems.h:393
MenuItem::setChanged
void setChanged(int num, bool changed)
Definition
MenuItems.h:380
MenuItem::info
const AnyMenuInfo * info
Definition
MenuItems.h:343
MenuItem::getNext
MenuItem * getNext() const
Definition
MenuItems.h:413
MenuItem::isSendRemoteNeeded
bool isSendRemoteNeeded(uint8_t remoteNo) const
Definition
MenuItems.cpp:22
MenuItem::copyNameToBuffer
uint8_t copyNameToBuffer(char *sz, int size) const
Definition
MenuItems.h:353
MenuItem::getMenuType
MenuType getMenuType() const
Definition
MenuItems.h:370
MenuItem::setNext
void setNext(MenuItem *pNext)
Definition
MenuItems.h:415
MenuItem::isVisible
bool isVisible() const
Definition
MenuItems.h:410
MenuItem::setSendRemoteNeeded
void setSendRemoteNeeded(uint8_t remoteNo, bool needed)
Definition
MenuItems.cpp:26
MenuItem::isChanged
bool isChanged(int num=0) const
Definition
MenuItems.h:382
MenuItem::getEepromPosition
uint16_t getEepromPosition() const
Definition
MenuItems.cpp:105
MenuItem::setVisible
void setVisible(bool visible)
Definition
MenuItems.h:408
MenuItem::getMaximumValue
uint16_t getMaximumValue() const
Definition
MenuItems.cpp:90
MenuItem::triggerCallback
void triggerCallback() const
Definition
MenuItems.cpp:41
MenuItem::setSendRemoteNeededAll
void setSendRemoteNeededAll()
Definition
MenuItems.cpp:30
MenuItem::setSecured
void setSecured(bool secured)
Definition
MenuItems.h:403
MenuItem::isSecured
bool isSecured() const
Definition
MenuItems.h:405
MenuItem::clearSendRemoteNeededAll
void clearSendRemoteNeededAll()
Definition
MenuItems.cpp:37
RuntimeMenuItem
Definition
RuntimeMenuItem.h:75
ValueMenuItem::ValueMenuItem
ValueMenuItem(MenuType menuType, const AnyMenuInfo *info, uint16_t defaultVal, MenuItem *next, bool infoPgm)
Definition
MenuItems.h:438
ValueMenuItem::setCurrentValue
void setCurrentValue(uint16_t val, bool silent=false)
Definition
MenuItems.cpp:305
ValueMenuItem::getCurrentValue
uint16_t getCurrentValue() const
Definition
MenuItems.h:447